Post on 02-Mar-2021
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 1
Capiacutetulo 3
Camada de transporte
copy 2014 Pearson Todos os direitos reservadosslide 1
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 2
A camada de transporte fornece comunicaccedilatildeo loacutegica (e natildeo fiacutesica) diretamente entre processos de aplicaccedilotildees
Comunicaccedilatildeo loacutegica tudo se passa como se os processos dos hospedeiros estivessem conectados diretamente
Introduccedilatildeo e serviccedilos de camada de transporte
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 3
bull Um protocolo de camada de transporte fornece comunicaccedilatildeo loacutegica entre processos que rodam em hospedeiros diferentes Segmentos da camada de transporte
bull Um protocolo de camada de rede fornece comunicaccedilatildeo loacutegica entre hospedeiros Datagrama da camada de rede
bull Uma rede de computadores pode disponibilizar vaacuterios protocolos de transporte
bull Os serviccedilos que um protocolo de transporte pode fornecer satildeo muitas vezes limitados pelo modelo de serviccedilo do protocolo subjacente da camada de rede
Relaccedilatildeo entre as camadas de transporte e de rede
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 4
bull A responsabilidade fundamental do UDP e do TCP eacute ampliar o serviccedilo de entrega IP entre dois sistemas finais para um serviccedilo de entrega entre dois processos que rodam nos sistemas finais
bull A ampliaccedilatildeo da entrega hospedeiro a hospedeiro para entrega processo a processo eacute denominada multiplexaccedilatildeodemultiplexaccedilatildeo de camada de transporte
bull O UDP e o TCP tambeacutem fornecem verificaccedilatildeo de integridade ao incluir campos de detecccedilatildeo de erros nos cabeccedilalhos de seus segmentos
Visatildeo geral da camada de transporte na Internet
Transport Layer 3-6
Multiplexingdemultiplexing
process
socket
use header info to deliverreceived segments tocorrect socket
demultiplexing at receiverhandle data from multiplesockets add transport header (later used for demultiplexing)
multiplexing at sender
transport
application
physical
link
network
P2P1
transport
application
physical
link
network
P4
transport
application
physical
link
network
P3
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 7
bull A tarefa de entregar os dados contidos em um segmento da camada de transporte ao socket correto eacute denominada demultiplexaccedilatildeo
bull O trabalho de reunir no hospedeiro de origem partes de dados provenientes de diferentes sockets encapsular cada parte de dados com informaccedilotildees de cabeccedilalho para criar segmentos e passar esses segmentos para a camada de rede eacute denominada multiplexaccedilatildeo
Multiplexaccedilatildeo e demultiplexaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 8
bull Campos de nuacutemero de porta de origem e de destino em um segmento de camada de transporte
Multiplexaccedilatildeo e demultiplexaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 9
Demultiplexaccedilatildeo natildeo orientada para conexatildeo
cria sockets com nuacutemero de porta automaacutetico
clietSocket = socket(AF_INET SOCK_DGRAM)
Alternativamente podemos fixar a porta acrescentando
clientSocketbind(( 12535))
socket UDP identificado por tupla de dois elementos
(endereccedilo IP destino nuacutemero porta destino)
quando hospedeiro recebe segmento UDPndash verifica nuacutemero de porta
de destino no segmentondash direciona segmento UDP
para socket com esse nuacutemero de porta
datagramas IP com diferentes endereccedilos IP de origem eou nuacutemeros de porta de origem direcionados para o mesmo socket
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 10
Demultiplexaccedilatildeo natildeo orientada para conexatildeo
socket UDP identificado por tupla de dois elementos
(endereccedilo IP destino nuacutemero porta destino)
ClienteIPB
P2
cliente IP A
P1P1P3
servidorIP C
DP 9157
DP 6428
DP 5775
DP 6428
SP 6428
D-IP A
D-IP C
D-IP B
SP 6428
SP 5775
D-IP C
SP oferece ldquoendereccedilo de retornordquo caso necessaacuterio
SP 9157
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 11
Demultiplexaccedilatildeo orientada para conexatildeo
socket TCP identificado por tupla de 4 elementos ndash endereccedilo IP de origemndash nuacutemero de porta de origemndash endereccedilo IP de destinondash nuacutemero de porta de destino
hospedeiro destinataacuterio usa todos os quatro valores para direcionar segmento ao socket apropriado
hospedeiro servidor pode admitir muitos sockets TCP simultacircneosndash cada socket identificado
por sua proacutepria tupla de 4 servidores Web tecircm
diferentes sockets para cada cliente conectandondash HTTP natildeo persistente teraacute
diferentes sockets para cada requisiccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 12
Demultiplexaccedilatildeo orientada para conexatildeo
clienteIPB
P1
cliente IP A
P1P2P4
servidorIP C
SP 9157DP 80
SP 9157DP 80
P5 P6 P3
D-IPCS-IP AD-IPC
S-IP B
SP 5775DP 80
D-IPCS-IP B
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 13
bull O UDP definido no [RFC 768] faz apenas quase tatildeo pouco quanto um protocolo de transporte pode fazer
bull Agrave parte sua funccedilatildeo de multiplexaccedilatildeodemultiplexaccedilatildeo e de alguma verificaccedilatildeo de erros simples ele nada adiciona ao IP
bull Se o desenvolvedor de aplicaccedilatildeo escolher o UDP em vez do TCP a aplicaccedilatildeo estaraacute ldquofalandordquo quase diretamente com o IP
bull O UDP eacute natildeo orientado para conexatildeo Natildeo haacute a apresentaccedilatildeo entre as entidades remetentes e destinataacuterias
Transporte natildeo orientado para conexatildeo UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 14
bull Melhor controle no niacutevel de aplicaccedilatildeo sobre quais dados satildeo enviados e quando menor atraso
bull Natildeo haacute estabelecimento de conexatildeo menor atrasobull Natildeo haacute estados de conexatildeo buffers paracircmetros de
controle de congestionamento nuacutemero de sequecircncia Menor ldquocustordquo
bull Pequeno excesso de cabeccedilalho de pacotes 8 bytes de excesso TCP 20 bytes Menor ldquocustordquo
bull Sem controle de congestionamento do TCP ==gt isso pode implicar em ldquocolapsordquo na rede
bull Eacute possiacutevel uma aplicaccedilatildeo ter transferecircncia confiaacutevel de dados usando UDP
Por que usa-se UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 15
bull Aplicaccedilotildees populares da Internet e seus protocolos de transporte subjacentes
Transporte natildeo orientado para conexatildeo UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 16
bull Estrutura do segmento UDP
Estrutura do segmento UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 17
bull A soma de verificaccedilatildeo UDP serve para detectar erros em todo o segmento
bull Suponha que tenhamos as seguintes trecircs palavras de 16 bits
bull A soma das duas primeiras eacute
bull Adicionando a terceira palavra agrave soma anterior temos
Soma de verificaccedilatildeo UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 18
bull Note que a uacuteltima adiccedilatildeo teve um ldquovai umrdquo no bit mais significativo que foi somado ao bit menos significativo
bull Complemento de 1 0 ==gt 1 1 ==gt 0bull Fazendo o complemento de 1 da soma final
1011010100111101 Esta eacute a soma de verificaccedilatildeobull No destinataacuterio todas as 4 palavras recebidas de 16 bits satildeo
somadas 1111 ==gt Pacote correto algum bit em 0 ==gt algum erro foi introduzido no pacote
bull Por que soma de verificaccedilatildeo no UDPbull Algumas camadas de enlace por exemplo Ethernet fornecem
soma de verificaccedilatildeobull mas nem todas e aleacutem disso um roteador poderia introduzir
algum errobull UDP verifica erros fim a fim
Soma de verificaccedilatildeo UDP
Transport Layer 3-19
Principles of reliable data transfer important in application transport link layers
top-10 list of important networking topics
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
Transport Layer 3-20
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
Principles of reliable data transfer important in application transport link layers
top-10 list of important networking topics
Transport Layer 3-21
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
important in application transport link layers top-10 list of important networking topics
Principles of reliable data transfer
Transport Layer 3-22
sendside
receiveside
rdt_send() called from above (eg by app) Passed data to deliver to receiver upper layer
udt_send() called by rdtto transfer packet over unreliable channel to receiver
rdt_rcv() called when packet arrives on rcv-side of channel
deliver_data() called by rdt to deliver data to upper
Principles of reliable data transfer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 23
vamos desenvolver de forma incremental os lados remetente e destinataacuterio do
protocolo de transferecircncia confiaacutevel de dados (rdt) considerar apenas a transf de dados unidirecional Bidirecional eacute soacute
duplicar a estruturandash mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees
usar maacutequinas de estado finito (FSM) para especificar remetente e destinataacuterio
estado1
estado2
evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado
estado quando neste ldquoestadordquo proacuteximo
estado determinadoexclusivamente pelo
proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel de dados introduccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 24
bull rdt10 ndash Um protocolo para um canal completamente confiaacutevel
Transferecircncia confiaacutevel de dados sobre um canal perfeitamente confiaacutevel rdt10
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 25
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
rdt20 ndash Um protocolo para um canal com erros de bits Base dos protocolos ARQ (Automatic Repeat Request)
Detecccedilatildeo de erros (mecanismo do UDP)
Realimentaccedilatildeo do destinataacuterio (ACK ou NACK)
Retransmissatildeobull Pare e espere
Transport Layer 3-26
rdt20 FSM specification
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) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from belowsender
receiverrdt_send(data)
Transport Layer 3-27
rdt20 operation with no errors
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Transport Layer 3-28
rdt20 error scenario
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 29
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
bull O que acontece se o pacote ACK ou NAK estiver corrompido
bull Vamos considerar trecircs possibilidade para ACKs ou NAKs corrompidos1 Ser humano -- A ldquoditadordquo B ldquoOKrdquo ou ldquoRepita por favorrdquo ==gt
A natildeo entende ldquoO que foi que vocecirc disserdquo infinito Peacutessimo2 Bits de soma de verificaccedilatildeo de tal modo que permita ao remetente a
recuperaccedilatildeo de erros de bits Muito bom mas serve somente para canais com erro de bits e natildeo perda de pacotes
3 O Remetente reenvia o pacote de dados corrente quando receber um pacote ACK ou NAK truncado ==gt pode gerar pacotes duplicados Como o destinataacuterio sabe se o pacote conteacutem novos dados ou eacute uma retransmissatildeo ==gt nuacutemero de sequecircncia
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 30
bull rdt21 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 31
bull rdt21 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 32
bull O protocolo rdt21 usa tanto o reconhecimento positivo como negativo do remetente ao destinataacuterio pacote fora de ordem ==gt ACK pacote corrompido ==gt NAK
bull Podemos conseguir o mesmo efeito se ao inveacutes de enviarmos um NAK enviarmos um ACK do uacuteltimo corretamente recebido Ou seja ACK tambeacutem numerado
bull ACKs duplicados indicam ao remetente que o destinataacuterio natildeo recebeu corretamente o pacote seguinte agravequele do ACK duplo
bull rdt22 deve enviar o nuacutemero de sequecircncia no ACK
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21-2
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 33
bull rdt22 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 34
bull rdt22 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 35
bull Duas preocupaccedilotildees adicionais devem ser tratadas pelo protocolo1 Como detectar perda de pacotes2 O que fazer quando haacute perdas
bull As teacutecnicas jaacute discutidas atendem a segunda questatildeobull E para a primeira questatildeobull Suponha que o remetente transmita um pacote e que esse
pacote ou seu ACK seja perdido Nenhuma resposta chegaraacute ao remetente Se o remetente natildeo quiser esperar ==gt retransmite o pacote
bull Mas quanto o remetente precisa esperar para ter certeza que algo foi perdido Esperar um RTT Eacute muito difiacutecil estimar o RTT quanto mais ter certeza
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 36
bull Aleacutem disso o ideal seria que o protocolo se recuperasse da perda assim que possiacutevel
bull Na praacutetica O remetente faz uma escolha ponderada de um RTT provaacutevel mas natildeo
garantido que a perda tivesse acontecido Se natildeo receber um ACK nesse periacuteodo retransmite o pacote
bull Se o pacote sofrer um atraso longo pode haver retransmissatildeo mesmo que o pacote ou ACK natildeo tenham sido perdidos Possibilidade de pacotes de dados duplicados
bull Para implementar um mecanismo de retransmissatildeo com base no tempo eacute necessaacuterio um temporizador de contagem regressiva Accedilotildees iniciar atender parar
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 37
bull rdt30 remetente
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Transport Layer 3-38
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
pkt1
ack1
ack0
ack0
(a) no loss
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(b) packet loss
pkt1X
loss
pkt1timeout
resend pkt1
rdt30 in action
Transport Layer 3-39
rdt30 in action
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(c) ACK loss
ack1X
loss
pkt1timeout
resend pkt1
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) premature timeout delayed ACK
pkt1timeout
resend pkt1
ack1
send ack1
send pkt0rcv ack1
pkt0
ack1
ack0
send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
rcv pkt0
send ack0(detect duplicate)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 42
bull No coraccedilatildeo do problema do desempenho do rdt30 estaacute o fato de ele ser um protocolo do tipo pare e espere
bull Um protocolo pare e espere em operaccedilatildeo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 43
U remet =
0008
30008 = 000027
microseconds
L R RTT + L R
=
Desempenho do rdt30
rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso pacote 8000 bits
U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando
Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos Soluccedilatildeo
ndosmicrosseguR
Ldtrans 8
bps10
bits80009
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 44
Um protocolo com paralelismo em operaccedilatildeo
bull O ACK recebido eacute de que pacote
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 45
bull Envio com pare e espere
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 46
bull Envio com paralelismo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Aumento de utilizaccedilatildeopor fator de 3
U remet =
0024 30008
= 00008 microseconds
3 L R RTT + L R
=
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 2
A camada de transporte fornece comunicaccedilatildeo loacutegica (e natildeo fiacutesica) diretamente entre processos de aplicaccedilotildees
Comunicaccedilatildeo loacutegica tudo se passa como se os processos dos hospedeiros estivessem conectados diretamente
Introduccedilatildeo e serviccedilos de camada de transporte
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 3
bull Um protocolo de camada de transporte fornece comunicaccedilatildeo loacutegica entre processos que rodam em hospedeiros diferentes Segmentos da camada de transporte
bull Um protocolo de camada de rede fornece comunicaccedilatildeo loacutegica entre hospedeiros Datagrama da camada de rede
bull Uma rede de computadores pode disponibilizar vaacuterios protocolos de transporte
bull Os serviccedilos que um protocolo de transporte pode fornecer satildeo muitas vezes limitados pelo modelo de serviccedilo do protocolo subjacente da camada de rede
Relaccedilatildeo entre as camadas de transporte e de rede
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 4
bull A responsabilidade fundamental do UDP e do TCP eacute ampliar o serviccedilo de entrega IP entre dois sistemas finais para um serviccedilo de entrega entre dois processos que rodam nos sistemas finais
bull A ampliaccedilatildeo da entrega hospedeiro a hospedeiro para entrega processo a processo eacute denominada multiplexaccedilatildeodemultiplexaccedilatildeo de camada de transporte
bull O UDP e o TCP tambeacutem fornecem verificaccedilatildeo de integridade ao incluir campos de detecccedilatildeo de erros nos cabeccedilalhos de seus segmentos
Visatildeo geral da camada de transporte na Internet
Transport Layer 3-6
Multiplexingdemultiplexing
process
socket
use header info to deliverreceived segments tocorrect socket
demultiplexing at receiverhandle data from multiplesockets add transport header (later used for demultiplexing)
multiplexing at sender
transport
application
physical
link
network
P2P1
transport
application
physical
link
network
P4
transport
application
physical
link
network
P3
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 7
bull A tarefa de entregar os dados contidos em um segmento da camada de transporte ao socket correto eacute denominada demultiplexaccedilatildeo
bull O trabalho de reunir no hospedeiro de origem partes de dados provenientes de diferentes sockets encapsular cada parte de dados com informaccedilotildees de cabeccedilalho para criar segmentos e passar esses segmentos para a camada de rede eacute denominada multiplexaccedilatildeo
Multiplexaccedilatildeo e demultiplexaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 8
bull Campos de nuacutemero de porta de origem e de destino em um segmento de camada de transporte
Multiplexaccedilatildeo e demultiplexaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 9
Demultiplexaccedilatildeo natildeo orientada para conexatildeo
cria sockets com nuacutemero de porta automaacutetico
clietSocket = socket(AF_INET SOCK_DGRAM)
Alternativamente podemos fixar a porta acrescentando
clientSocketbind(( 12535))
socket UDP identificado por tupla de dois elementos
(endereccedilo IP destino nuacutemero porta destino)
quando hospedeiro recebe segmento UDPndash verifica nuacutemero de porta
de destino no segmentondash direciona segmento UDP
para socket com esse nuacutemero de porta
datagramas IP com diferentes endereccedilos IP de origem eou nuacutemeros de porta de origem direcionados para o mesmo socket
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 10
Demultiplexaccedilatildeo natildeo orientada para conexatildeo
socket UDP identificado por tupla de dois elementos
(endereccedilo IP destino nuacutemero porta destino)
ClienteIPB
P2
cliente IP A
P1P1P3
servidorIP C
DP 9157
DP 6428
DP 5775
DP 6428
SP 6428
D-IP A
D-IP C
D-IP B
SP 6428
SP 5775
D-IP C
SP oferece ldquoendereccedilo de retornordquo caso necessaacuterio
SP 9157
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 11
Demultiplexaccedilatildeo orientada para conexatildeo
socket TCP identificado por tupla de 4 elementos ndash endereccedilo IP de origemndash nuacutemero de porta de origemndash endereccedilo IP de destinondash nuacutemero de porta de destino
hospedeiro destinataacuterio usa todos os quatro valores para direcionar segmento ao socket apropriado
hospedeiro servidor pode admitir muitos sockets TCP simultacircneosndash cada socket identificado
por sua proacutepria tupla de 4 servidores Web tecircm
diferentes sockets para cada cliente conectandondash HTTP natildeo persistente teraacute
diferentes sockets para cada requisiccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 12
Demultiplexaccedilatildeo orientada para conexatildeo
clienteIPB
P1
cliente IP A
P1P2P4
servidorIP C
SP 9157DP 80
SP 9157DP 80
P5 P6 P3
D-IPCS-IP AD-IPC
S-IP B
SP 5775DP 80
D-IPCS-IP B
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 13
bull O UDP definido no [RFC 768] faz apenas quase tatildeo pouco quanto um protocolo de transporte pode fazer
bull Agrave parte sua funccedilatildeo de multiplexaccedilatildeodemultiplexaccedilatildeo e de alguma verificaccedilatildeo de erros simples ele nada adiciona ao IP
bull Se o desenvolvedor de aplicaccedilatildeo escolher o UDP em vez do TCP a aplicaccedilatildeo estaraacute ldquofalandordquo quase diretamente com o IP
bull O UDP eacute natildeo orientado para conexatildeo Natildeo haacute a apresentaccedilatildeo entre as entidades remetentes e destinataacuterias
Transporte natildeo orientado para conexatildeo UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 14
bull Melhor controle no niacutevel de aplicaccedilatildeo sobre quais dados satildeo enviados e quando menor atraso
bull Natildeo haacute estabelecimento de conexatildeo menor atrasobull Natildeo haacute estados de conexatildeo buffers paracircmetros de
controle de congestionamento nuacutemero de sequecircncia Menor ldquocustordquo
bull Pequeno excesso de cabeccedilalho de pacotes 8 bytes de excesso TCP 20 bytes Menor ldquocustordquo
bull Sem controle de congestionamento do TCP ==gt isso pode implicar em ldquocolapsordquo na rede
bull Eacute possiacutevel uma aplicaccedilatildeo ter transferecircncia confiaacutevel de dados usando UDP
Por que usa-se UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 15
bull Aplicaccedilotildees populares da Internet e seus protocolos de transporte subjacentes
Transporte natildeo orientado para conexatildeo UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 16
bull Estrutura do segmento UDP
Estrutura do segmento UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 17
bull A soma de verificaccedilatildeo UDP serve para detectar erros em todo o segmento
bull Suponha que tenhamos as seguintes trecircs palavras de 16 bits
bull A soma das duas primeiras eacute
bull Adicionando a terceira palavra agrave soma anterior temos
Soma de verificaccedilatildeo UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 18
bull Note que a uacuteltima adiccedilatildeo teve um ldquovai umrdquo no bit mais significativo que foi somado ao bit menos significativo
bull Complemento de 1 0 ==gt 1 1 ==gt 0bull Fazendo o complemento de 1 da soma final
1011010100111101 Esta eacute a soma de verificaccedilatildeobull No destinataacuterio todas as 4 palavras recebidas de 16 bits satildeo
somadas 1111 ==gt Pacote correto algum bit em 0 ==gt algum erro foi introduzido no pacote
bull Por que soma de verificaccedilatildeo no UDPbull Algumas camadas de enlace por exemplo Ethernet fornecem
soma de verificaccedilatildeobull mas nem todas e aleacutem disso um roteador poderia introduzir
algum errobull UDP verifica erros fim a fim
Soma de verificaccedilatildeo UDP
Transport Layer 3-19
Principles of reliable data transfer important in application transport link layers
top-10 list of important networking topics
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
Transport Layer 3-20
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
Principles of reliable data transfer important in application transport link layers
top-10 list of important networking topics
Transport Layer 3-21
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
important in application transport link layers top-10 list of important networking topics
Principles of reliable data transfer
Transport Layer 3-22
sendside
receiveside
rdt_send() called from above (eg by app) Passed data to deliver to receiver upper layer
udt_send() called by rdtto transfer packet over unreliable channel to receiver
rdt_rcv() called when packet arrives on rcv-side of channel
deliver_data() called by rdt to deliver data to upper
Principles of reliable data transfer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 23
vamos desenvolver de forma incremental os lados remetente e destinataacuterio do
protocolo de transferecircncia confiaacutevel de dados (rdt) considerar apenas a transf de dados unidirecional Bidirecional eacute soacute
duplicar a estruturandash mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees
usar maacutequinas de estado finito (FSM) para especificar remetente e destinataacuterio
estado1
estado2
evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado
estado quando neste ldquoestadordquo proacuteximo
estado determinadoexclusivamente pelo
proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel de dados introduccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 24
bull rdt10 ndash Um protocolo para um canal completamente confiaacutevel
Transferecircncia confiaacutevel de dados sobre um canal perfeitamente confiaacutevel rdt10
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 25
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
rdt20 ndash Um protocolo para um canal com erros de bits Base dos protocolos ARQ (Automatic Repeat Request)
Detecccedilatildeo de erros (mecanismo do UDP)
Realimentaccedilatildeo do destinataacuterio (ACK ou NACK)
Retransmissatildeobull Pare e espere
Transport Layer 3-26
rdt20 FSM specification
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) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from belowsender
receiverrdt_send(data)
Transport Layer 3-27
rdt20 operation with no errors
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Transport Layer 3-28
rdt20 error scenario
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 29
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
bull O que acontece se o pacote ACK ou NAK estiver corrompido
bull Vamos considerar trecircs possibilidade para ACKs ou NAKs corrompidos1 Ser humano -- A ldquoditadordquo B ldquoOKrdquo ou ldquoRepita por favorrdquo ==gt
A natildeo entende ldquoO que foi que vocecirc disserdquo infinito Peacutessimo2 Bits de soma de verificaccedilatildeo de tal modo que permita ao remetente a
recuperaccedilatildeo de erros de bits Muito bom mas serve somente para canais com erro de bits e natildeo perda de pacotes
3 O Remetente reenvia o pacote de dados corrente quando receber um pacote ACK ou NAK truncado ==gt pode gerar pacotes duplicados Como o destinataacuterio sabe se o pacote conteacutem novos dados ou eacute uma retransmissatildeo ==gt nuacutemero de sequecircncia
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 30
bull rdt21 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 31
bull rdt21 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 32
bull O protocolo rdt21 usa tanto o reconhecimento positivo como negativo do remetente ao destinataacuterio pacote fora de ordem ==gt ACK pacote corrompido ==gt NAK
bull Podemos conseguir o mesmo efeito se ao inveacutes de enviarmos um NAK enviarmos um ACK do uacuteltimo corretamente recebido Ou seja ACK tambeacutem numerado
bull ACKs duplicados indicam ao remetente que o destinataacuterio natildeo recebeu corretamente o pacote seguinte agravequele do ACK duplo
bull rdt22 deve enviar o nuacutemero de sequecircncia no ACK
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21-2
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 33
bull rdt22 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 34
bull rdt22 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 35
bull Duas preocupaccedilotildees adicionais devem ser tratadas pelo protocolo1 Como detectar perda de pacotes2 O que fazer quando haacute perdas
bull As teacutecnicas jaacute discutidas atendem a segunda questatildeobull E para a primeira questatildeobull Suponha que o remetente transmita um pacote e que esse
pacote ou seu ACK seja perdido Nenhuma resposta chegaraacute ao remetente Se o remetente natildeo quiser esperar ==gt retransmite o pacote
bull Mas quanto o remetente precisa esperar para ter certeza que algo foi perdido Esperar um RTT Eacute muito difiacutecil estimar o RTT quanto mais ter certeza
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 36
bull Aleacutem disso o ideal seria que o protocolo se recuperasse da perda assim que possiacutevel
bull Na praacutetica O remetente faz uma escolha ponderada de um RTT provaacutevel mas natildeo
garantido que a perda tivesse acontecido Se natildeo receber um ACK nesse periacuteodo retransmite o pacote
bull Se o pacote sofrer um atraso longo pode haver retransmissatildeo mesmo que o pacote ou ACK natildeo tenham sido perdidos Possibilidade de pacotes de dados duplicados
bull Para implementar um mecanismo de retransmissatildeo com base no tempo eacute necessaacuterio um temporizador de contagem regressiva Accedilotildees iniciar atender parar
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 37
bull rdt30 remetente
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Transport Layer 3-38
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
pkt1
ack1
ack0
ack0
(a) no loss
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(b) packet loss
pkt1X
loss
pkt1timeout
resend pkt1
rdt30 in action
Transport Layer 3-39
rdt30 in action
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(c) ACK loss
ack1X
loss
pkt1timeout
resend pkt1
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) premature timeout delayed ACK
pkt1timeout
resend pkt1
ack1
send ack1
send pkt0rcv ack1
pkt0
ack1
ack0
send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
rcv pkt0
send ack0(detect duplicate)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 42
bull No coraccedilatildeo do problema do desempenho do rdt30 estaacute o fato de ele ser um protocolo do tipo pare e espere
bull Um protocolo pare e espere em operaccedilatildeo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 43
U remet =
0008
30008 = 000027
microseconds
L R RTT + L R
=
Desempenho do rdt30
rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso pacote 8000 bits
U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando
Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos Soluccedilatildeo
ndosmicrosseguR
Ldtrans 8
bps10
bits80009
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 44
Um protocolo com paralelismo em operaccedilatildeo
bull O ACK recebido eacute de que pacote
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 45
bull Envio com pare e espere
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 46
bull Envio com paralelismo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Aumento de utilizaccedilatildeopor fator de 3
U remet =
0024 30008
= 00008 microseconds
3 L R RTT + L R
=
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 3
bull Um protocolo de camada de transporte fornece comunicaccedilatildeo loacutegica entre processos que rodam em hospedeiros diferentes Segmentos da camada de transporte
bull Um protocolo de camada de rede fornece comunicaccedilatildeo loacutegica entre hospedeiros Datagrama da camada de rede
bull Uma rede de computadores pode disponibilizar vaacuterios protocolos de transporte
bull Os serviccedilos que um protocolo de transporte pode fornecer satildeo muitas vezes limitados pelo modelo de serviccedilo do protocolo subjacente da camada de rede
Relaccedilatildeo entre as camadas de transporte e de rede
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 4
bull A responsabilidade fundamental do UDP e do TCP eacute ampliar o serviccedilo de entrega IP entre dois sistemas finais para um serviccedilo de entrega entre dois processos que rodam nos sistemas finais
bull A ampliaccedilatildeo da entrega hospedeiro a hospedeiro para entrega processo a processo eacute denominada multiplexaccedilatildeodemultiplexaccedilatildeo de camada de transporte
bull O UDP e o TCP tambeacutem fornecem verificaccedilatildeo de integridade ao incluir campos de detecccedilatildeo de erros nos cabeccedilalhos de seus segmentos
Visatildeo geral da camada de transporte na Internet
Transport Layer 3-6
Multiplexingdemultiplexing
process
socket
use header info to deliverreceived segments tocorrect socket
demultiplexing at receiverhandle data from multiplesockets add transport header (later used for demultiplexing)
multiplexing at sender
transport
application
physical
link
network
P2P1
transport
application
physical
link
network
P4
transport
application
physical
link
network
P3
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 7
bull A tarefa de entregar os dados contidos em um segmento da camada de transporte ao socket correto eacute denominada demultiplexaccedilatildeo
bull O trabalho de reunir no hospedeiro de origem partes de dados provenientes de diferentes sockets encapsular cada parte de dados com informaccedilotildees de cabeccedilalho para criar segmentos e passar esses segmentos para a camada de rede eacute denominada multiplexaccedilatildeo
Multiplexaccedilatildeo e demultiplexaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 8
bull Campos de nuacutemero de porta de origem e de destino em um segmento de camada de transporte
Multiplexaccedilatildeo e demultiplexaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 9
Demultiplexaccedilatildeo natildeo orientada para conexatildeo
cria sockets com nuacutemero de porta automaacutetico
clietSocket = socket(AF_INET SOCK_DGRAM)
Alternativamente podemos fixar a porta acrescentando
clientSocketbind(( 12535))
socket UDP identificado por tupla de dois elementos
(endereccedilo IP destino nuacutemero porta destino)
quando hospedeiro recebe segmento UDPndash verifica nuacutemero de porta
de destino no segmentondash direciona segmento UDP
para socket com esse nuacutemero de porta
datagramas IP com diferentes endereccedilos IP de origem eou nuacutemeros de porta de origem direcionados para o mesmo socket
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 10
Demultiplexaccedilatildeo natildeo orientada para conexatildeo
socket UDP identificado por tupla de dois elementos
(endereccedilo IP destino nuacutemero porta destino)
ClienteIPB
P2
cliente IP A
P1P1P3
servidorIP C
DP 9157
DP 6428
DP 5775
DP 6428
SP 6428
D-IP A
D-IP C
D-IP B
SP 6428
SP 5775
D-IP C
SP oferece ldquoendereccedilo de retornordquo caso necessaacuterio
SP 9157
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 11
Demultiplexaccedilatildeo orientada para conexatildeo
socket TCP identificado por tupla de 4 elementos ndash endereccedilo IP de origemndash nuacutemero de porta de origemndash endereccedilo IP de destinondash nuacutemero de porta de destino
hospedeiro destinataacuterio usa todos os quatro valores para direcionar segmento ao socket apropriado
hospedeiro servidor pode admitir muitos sockets TCP simultacircneosndash cada socket identificado
por sua proacutepria tupla de 4 servidores Web tecircm
diferentes sockets para cada cliente conectandondash HTTP natildeo persistente teraacute
diferentes sockets para cada requisiccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 12
Demultiplexaccedilatildeo orientada para conexatildeo
clienteIPB
P1
cliente IP A
P1P2P4
servidorIP C
SP 9157DP 80
SP 9157DP 80
P5 P6 P3
D-IPCS-IP AD-IPC
S-IP B
SP 5775DP 80
D-IPCS-IP B
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 13
bull O UDP definido no [RFC 768] faz apenas quase tatildeo pouco quanto um protocolo de transporte pode fazer
bull Agrave parte sua funccedilatildeo de multiplexaccedilatildeodemultiplexaccedilatildeo e de alguma verificaccedilatildeo de erros simples ele nada adiciona ao IP
bull Se o desenvolvedor de aplicaccedilatildeo escolher o UDP em vez do TCP a aplicaccedilatildeo estaraacute ldquofalandordquo quase diretamente com o IP
bull O UDP eacute natildeo orientado para conexatildeo Natildeo haacute a apresentaccedilatildeo entre as entidades remetentes e destinataacuterias
Transporte natildeo orientado para conexatildeo UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 14
bull Melhor controle no niacutevel de aplicaccedilatildeo sobre quais dados satildeo enviados e quando menor atraso
bull Natildeo haacute estabelecimento de conexatildeo menor atrasobull Natildeo haacute estados de conexatildeo buffers paracircmetros de
controle de congestionamento nuacutemero de sequecircncia Menor ldquocustordquo
bull Pequeno excesso de cabeccedilalho de pacotes 8 bytes de excesso TCP 20 bytes Menor ldquocustordquo
bull Sem controle de congestionamento do TCP ==gt isso pode implicar em ldquocolapsordquo na rede
bull Eacute possiacutevel uma aplicaccedilatildeo ter transferecircncia confiaacutevel de dados usando UDP
Por que usa-se UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 15
bull Aplicaccedilotildees populares da Internet e seus protocolos de transporte subjacentes
Transporte natildeo orientado para conexatildeo UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 16
bull Estrutura do segmento UDP
Estrutura do segmento UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 17
bull A soma de verificaccedilatildeo UDP serve para detectar erros em todo o segmento
bull Suponha que tenhamos as seguintes trecircs palavras de 16 bits
bull A soma das duas primeiras eacute
bull Adicionando a terceira palavra agrave soma anterior temos
Soma de verificaccedilatildeo UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 18
bull Note que a uacuteltima adiccedilatildeo teve um ldquovai umrdquo no bit mais significativo que foi somado ao bit menos significativo
bull Complemento de 1 0 ==gt 1 1 ==gt 0bull Fazendo o complemento de 1 da soma final
1011010100111101 Esta eacute a soma de verificaccedilatildeobull No destinataacuterio todas as 4 palavras recebidas de 16 bits satildeo
somadas 1111 ==gt Pacote correto algum bit em 0 ==gt algum erro foi introduzido no pacote
bull Por que soma de verificaccedilatildeo no UDPbull Algumas camadas de enlace por exemplo Ethernet fornecem
soma de verificaccedilatildeobull mas nem todas e aleacutem disso um roteador poderia introduzir
algum errobull UDP verifica erros fim a fim
Soma de verificaccedilatildeo UDP
Transport Layer 3-19
Principles of reliable data transfer important in application transport link layers
top-10 list of important networking topics
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
Transport Layer 3-20
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
Principles of reliable data transfer important in application transport link layers
top-10 list of important networking topics
Transport Layer 3-21
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
important in application transport link layers top-10 list of important networking topics
Principles of reliable data transfer
Transport Layer 3-22
sendside
receiveside
rdt_send() called from above (eg by app) Passed data to deliver to receiver upper layer
udt_send() called by rdtto transfer packet over unreliable channel to receiver
rdt_rcv() called when packet arrives on rcv-side of channel
deliver_data() called by rdt to deliver data to upper
Principles of reliable data transfer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 23
vamos desenvolver de forma incremental os lados remetente e destinataacuterio do
protocolo de transferecircncia confiaacutevel de dados (rdt) considerar apenas a transf de dados unidirecional Bidirecional eacute soacute
duplicar a estruturandash mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees
usar maacutequinas de estado finito (FSM) para especificar remetente e destinataacuterio
estado1
estado2
evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado
estado quando neste ldquoestadordquo proacuteximo
estado determinadoexclusivamente pelo
proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel de dados introduccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 24
bull rdt10 ndash Um protocolo para um canal completamente confiaacutevel
Transferecircncia confiaacutevel de dados sobre um canal perfeitamente confiaacutevel rdt10
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 25
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
rdt20 ndash Um protocolo para um canal com erros de bits Base dos protocolos ARQ (Automatic Repeat Request)
Detecccedilatildeo de erros (mecanismo do UDP)
Realimentaccedilatildeo do destinataacuterio (ACK ou NACK)
Retransmissatildeobull Pare e espere
Transport Layer 3-26
rdt20 FSM specification
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) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from belowsender
receiverrdt_send(data)
Transport Layer 3-27
rdt20 operation with no errors
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Transport Layer 3-28
rdt20 error scenario
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 29
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
bull O que acontece se o pacote ACK ou NAK estiver corrompido
bull Vamos considerar trecircs possibilidade para ACKs ou NAKs corrompidos1 Ser humano -- A ldquoditadordquo B ldquoOKrdquo ou ldquoRepita por favorrdquo ==gt
A natildeo entende ldquoO que foi que vocecirc disserdquo infinito Peacutessimo2 Bits de soma de verificaccedilatildeo de tal modo que permita ao remetente a
recuperaccedilatildeo de erros de bits Muito bom mas serve somente para canais com erro de bits e natildeo perda de pacotes
3 O Remetente reenvia o pacote de dados corrente quando receber um pacote ACK ou NAK truncado ==gt pode gerar pacotes duplicados Como o destinataacuterio sabe se o pacote conteacutem novos dados ou eacute uma retransmissatildeo ==gt nuacutemero de sequecircncia
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 30
bull rdt21 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 31
bull rdt21 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 32
bull O protocolo rdt21 usa tanto o reconhecimento positivo como negativo do remetente ao destinataacuterio pacote fora de ordem ==gt ACK pacote corrompido ==gt NAK
bull Podemos conseguir o mesmo efeito se ao inveacutes de enviarmos um NAK enviarmos um ACK do uacuteltimo corretamente recebido Ou seja ACK tambeacutem numerado
bull ACKs duplicados indicam ao remetente que o destinataacuterio natildeo recebeu corretamente o pacote seguinte agravequele do ACK duplo
bull rdt22 deve enviar o nuacutemero de sequecircncia no ACK
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21-2
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 33
bull rdt22 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 34
bull rdt22 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 35
bull Duas preocupaccedilotildees adicionais devem ser tratadas pelo protocolo1 Como detectar perda de pacotes2 O que fazer quando haacute perdas
bull As teacutecnicas jaacute discutidas atendem a segunda questatildeobull E para a primeira questatildeobull Suponha que o remetente transmita um pacote e que esse
pacote ou seu ACK seja perdido Nenhuma resposta chegaraacute ao remetente Se o remetente natildeo quiser esperar ==gt retransmite o pacote
bull Mas quanto o remetente precisa esperar para ter certeza que algo foi perdido Esperar um RTT Eacute muito difiacutecil estimar o RTT quanto mais ter certeza
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 36
bull Aleacutem disso o ideal seria que o protocolo se recuperasse da perda assim que possiacutevel
bull Na praacutetica O remetente faz uma escolha ponderada de um RTT provaacutevel mas natildeo
garantido que a perda tivesse acontecido Se natildeo receber um ACK nesse periacuteodo retransmite o pacote
bull Se o pacote sofrer um atraso longo pode haver retransmissatildeo mesmo que o pacote ou ACK natildeo tenham sido perdidos Possibilidade de pacotes de dados duplicados
bull Para implementar um mecanismo de retransmissatildeo com base no tempo eacute necessaacuterio um temporizador de contagem regressiva Accedilotildees iniciar atender parar
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 37
bull rdt30 remetente
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Transport Layer 3-38
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
pkt1
ack1
ack0
ack0
(a) no loss
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(b) packet loss
pkt1X
loss
pkt1timeout
resend pkt1
rdt30 in action
Transport Layer 3-39
rdt30 in action
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(c) ACK loss
ack1X
loss
pkt1timeout
resend pkt1
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) premature timeout delayed ACK
pkt1timeout
resend pkt1
ack1
send ack1
send pkt0rcv ack1
pkt0
ack1
ack0
send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
rcv pkt0
send ack0(detect duplicate)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 42
bull No coraccedilatildeo do problema do desempenho do rdt30 estaacute o fato de ele ser um protocolo do tipo pare e espere
bull Um protocolo pare e espere em operaccedilatildeo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 43
U remet =
0008
30008 = 000027
microseconds
L R RTT + L R
=
Desempenho do rdt30
rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso pacote 8000 bits
U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando
Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos Soluccedilatildeo
ndosmicrosseguR
Ldtrans 8
bps10
bits80009
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 44
Um protocolo com paralelismo em operaccedilatildeo
bull O ACK recebido eacute de que pacote
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 45
bull Envio com pare e espere
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 46
bull Envio com paralelismo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Aumento de utilizaccedilatildeopor fator de 3
U remet =
0024 30008
= 00008 microseconds
3 L R RTT + L R
=
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 4
bull A responsabilidade fundamental do UDP e do TCP eacute ampliar o serviccedilo de entrega IP entre dois sistemas finais para um serviccedilo de entrega entre dois processos que rodam nos sistemas finais
bull A ampliaccedilatildeo da entrega hospedeiro a hospedeiro para entrega processo a processo eacute denominada multiplexaccedilatildeodemultiplexaccedilatildeo de camada de transporte
bull O UDP e o TCP tambeacutem fornecem verificaccedilatildeo de integridade ao incluir campos de detecccedilatildeo de erros nos cabeccedilalhos de seus segmentos
Visatildeo geral da camada de transporte na Internet
Transport Layer 3-6
Multiplexingdemultiplexing
process
socket
use header info to deliverreceived segments tocorrect socket
demultiplexing at receiverhandle data from multiplesockets add transport header (later used for demultiplexing)
multiplexing at sender
transport
application
physical
link
network
P2P1
transport
application
physical
link
network
P4
transport
application
physical
link
network
P3
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 7
bull A tarefa de entregar os dados contidos em um segmento da camada de transporte ao socket correto eacute denominada demultiplexaccedilatildeo
bull O trabalho de reunir no hospedeiro de origem partes de dados provenientes de diferentes sockets encapsular cada parte de dados com informaccedilotildees de cabeccedilalho para criar segmentos e passar esses segmentos para a camada de rede eacute denominada multiplexaccedilatildeo
Multiplexaccedilatildeo e demultiplexaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 8
bull Campos de nuacutemero de porta de origem e de destino em um segmento de camada de transporte
Multiplexaccedilatildeo e demultiplexaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 9
Demultiplexaccedilatildeo natildeo orientada para conexatildeo
cria sockets com nuacutemero de porta automaacutetico
clietSocket = socket(AF_INET SOCK_DGRAM)
Alternativamente podemos fixar a porta acrescentando
clientSocketbind(( 12535))
socket UDP identificado por tupla de dois elementos
(endereccedilo IP destino nuacutemero porta destino)
quando hospedeiro recebe segmento UDPndash verifica nuacutemero de porta
de destino no segmentondash direciona segmento UDP
para socket com esse nuacutemero de porta
datagramas IP com diferentes endereccedilos IP de origem eou nuacutemeros de porta de origem direcionados para o mesmo socket
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 10
Demultiplexaccedilatildeo natildeo orientada para conexatildeo
socket UDP identificado por tupla de dois elementos
(endereccedilo IP destino nuacutemero porta destino)
ClienteIPB
P2
cliente IP A
P1P1P3
servidorIP C
DP 9157
DP 6428
DP 5775
DP 6428
SP 6428
D-IP A
D-IP C
D-IP B
SP 6428
SP 5775
D-IP C
SP oferece ldquoendereccedilo de retornordquo caso necessaacuterio
SP 9157
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 11
Demultiplexaccedilatildeo orientada para conexatildeo
socket TCP identificado por tupla de 4 elementos ndash endereccedilo IP de origemndash nuacutemero de porta de origemndash endereccedilo IP de destinondash nuacutemero de porta de destino
hospedeiro destinataacuterio usa todos os quatro valores para direcionar segmento ao socket apropriado
hospedeiro servidor pode admitir muitos sockets TCP simultacircneosndash cada socket identificado
por sua proacutepria tupla de 4 servidores Web tecircm
diferentes sockets para cada cliente conectandondash HTTP natildeo persistente teraacute
diferentes sockets para cada requisiccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 12
Demultiplexaccedilatildeo orientada para conexatildeo
clienteIPB
P1
cliente IP A
P1P2P4
servidorIP C
SP 9157DP 80
SP 9157DP 80
P5 P6 P3
D-IPCS-IP AD-IPC
S-IP B
SP 5775DP 80
D-IPCS-IP B
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 13
bull O UDP definido no [RFC 768] faz apenas quase tatildeo pouco quanto um protocolo de transporte pode fazer
bull Agrave parte sua funccedilatildeo de multiplexaccedilatildeodemultiplexaccedilatildeo e de alguma verificaccedilatildeo de erros simples ele nada adiciona ao IP
bull Se o desenvolvedor de aplicaccedilatildeo escolher o UDP em vez do TCP a aplicaccedilatildeo estaraacute ldquofalandordquo quase diretamente com o IP
bull O UDP eacute natildeo orientado para conexatildeo Natildeo haacute a apresentaccedilatildeo entre as entidades remetentes e destinataacuterias
Transporte natildeo orientado para conexatildeo UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 14
bull Melhor controle no niacutevel de aplicaccedilatildeo sobre quais dados satildeo enviados e quando menor atraso
bull Natildeo haacute estabelecimento de conexatildeo menor atrasobull Natildeo haacute estados de conexatildeo buffers paracircmetros de
controle de congestionamento nuacutemero de sequecircncia Menor ldquocustordquo
bull Pequeno excesso de cabeccedilalho de pacotes 8 bytes de excesso TCP 20 bytes Menor ldquocustordquo
bull Sem controle de congestionamento do TCP ==gt isso pode implicar em ldquocolapsordquo na rede
bull Eacute possiacutevel uma aplicaccedilatildeo ter transferecircncia confiaacutevel de dados usando UDP
Por que usa-se UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 15
bull Aplicaccedilotildees populares da Internet e seus protocolos de transporte subjacentes
Transporte natildeo orientado para conexatildeo UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 16
bull Estrutura do segmento UDP
Estrutura do segmento UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 17
bull A soma de verificaccedilatildeo UDP serve para detectar erros em todo o segmento
bull Suponha que tenhamos as seguintes trecircs palavras de 16 bits
bull A soma das duas primeiras eacute
bull Adicionando a terceira palavra agrave soma anterior temos
Soma de verificaccedilatildeo UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 18
bull Note que a uacuteltima adiccedilatildeo teve um ldquovai umrdquo no bit mais significativo que foi somado ao bit menos significativo
bull Complemento de 1 0 ==gt 1 1 ==gt 0bull Fazendo o complemento de 1 da soma final
1011010100111101 Esta eacute a soma de verificaccedilatildeobull No destinataacuterio todas as 4 palavras recebidas de 16 bits satildeo
somadas 1111 ==gt Pacote correto algum bit em 0 ==gt algum erro foi introduzido no pacote
bull Por que soma de verificaccedilatildeo no UDPbull Algumas camadas de enlace por exemplo Ethernet fornecem
soma de verificaccedilatildeobull mas nem todas e aleacutem disso um roteador poderia introduzir
algum errobull UDP verifica erros fim a fim
Soma de verificaccedilatildeo UDP
Transport Layer 3-19
Principles of reliable data transfer important in application transport link layers
top-10 list of important networking topics
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
Transport Layer 3-20
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
Principles of reliable data transfer important in application transport link layers
top-10 list of important networking topics
Transport Layer 3-21
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
important in application transport link layers top-10 list of important networking topics
Principles of reliable data transfer
Transport Layer 3-22
sendside
receiveside
rdt_send() called from above (eg by app) Passed data to deliver to receiver upper layer
udt_send() called by rdtto transfer packet over unreliable channel to receiver
rdt_rcv() called when packet arrives on rcv-side of channel
deliver_data() called by rdt to deliver data to upper
Principles of reliable data transfer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 23
vamos desenvolver de forma incremental os lados remetente e destinataacuterio do
protocolo de transferecircncia confiaacutevel de dados (rdt) considerar apenas a transf de dados unidirecional Bidirecional eacute soacute
duplicar a estruturandash mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees
usar maacutequinas de estado finito (FSM) para especificar remetente e destinataacuterio
estado1
estado2
evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado
estado quando neste ldquoestadordquo proacuteximo
estado determinadoexclusivamente pelo
proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel de dados introduccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 24
bull rdt10 ndash Um protocolo para um canal completamente confiaacutevel
Transferecircncia confiaacutevel de dados sobre um canal perfeitamente confiaacutevel rdt10
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 25
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
rdt20 ndash Um protocolo para um canal com erros de bits Base dos protocolos ARQ (Automatic Repeat Request)
Detecccedilatildeo de erros (mecanismo do UDP)
Realimentaccedilatildeo do destinataacuterio (ACK ou NACK)
Retransmissatildeobull Pare e espere
Transport Layer 3-26
rdt20 FSM specification
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) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from belowsender
receiverrdt_send(data)
Transport Layer 3-27
rdt20 operation with no errors
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Transport Layer 3-28
rdt20 error scenario
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 29
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
bull O que acontece se o pacote ACK ou NAK estiver corrompido
bull Vamos considerar trecircs possibilidade para ACKs ou NAKs corrompidos1 Ser humano -- A ldquoditadordquo B ldquoOKrdquo ou ldquoRepita por favorrdquo ==gt
A natildeo entende ldquoO que foi que vocecirc disserdquo infinito Peacutessimo2 Bits de soma de verificaccedilatildeo de tal modo que permita ao remetente a
recuperaccedilatildeo de erros de bits Muito bom mas serve somente para canais com erro de bits e natildeo perda de pacotes
3 O Remetente reenvia o pacote de dados corrente quando receber um pacote ACK ou NAK truncado ==gt pode gerar pacotes duplicados Como o destinataacuterio sabe se o pacote conteacutem novos dados ou eacute uma retransmissatildeo ==gt nuacutemero de sequecircncia
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 30
bull rdt21 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 31
bull rdt21 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 32
bull O protocolo rdt21 usa tanto o reconhecimento positivo como negativo do remetente ao destinataacuterio pacote fora de ordem ==gt ACK pacote corrompido ==gt NAK
bull Podemos conseguir o mesmo efeito se ao inveacutes de enviarmos um NAK enviarmos um ACK do uacuteltimo corretamente recebido Ou seja ACK tambeacutem numerado
bull ACKs duplicados indicam ao remetente que o destinataacuterio natildeo recebeu corretamente o pacote seguinte agravequele do ACK duplo
bull rdt22 deve enviar o nuacutemero de sequecircncia no ACK
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21-2
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 33
bull rdt22 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 34
bull rdt22 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 35
bull Duas preocupaccedilotildees adicionais devem ser tratadas pelo protocolo1 Como detectar perda de pacotes2 O que fazer quando haacute perdas
bull As teacutecnicas jaacute discutidas atendem a segunda questatildeobull E para a primeira questatildeobull Suponha que o remetente transmita um pacote e que esse
pacote ou seu ACK seja perdido Nenhuma resposta chegaraacute ao remetente Se o remetente natildeo quiser esperar ==gt retransmite o pacote
bull Mas quanto o remetente precisa esperar para ter certeza que algo foi perdido Esperar um RTT Eacute muito difiacutecil estimar o RTT quanto mais ter certeza
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 36
bull Aleacutem disso o ideal seria que o protocolo se recuperasse da perda assim que possiacutevel
bull Na praacutetica O remetente faz uma escolha ponderada de um RTT provaacutevel mas natildeo
garantido que a perda tivesse acontecido Se natildeo receber um ACK nesse periacuteodo retransmite o pacote
bull Se o pacote sofrer um atraso longo pode haver retransmissatildeo mesmo que o pacote ou ACK natildeo tenham sido perdidos Possibilidade de pacotes de dados duplicados
bull Para implementar um mecanismo de retransmissatildeo com base no tempo eacute necessaacuterio um temporizador de contagem regressiva Accedilotildees iniciar atender parar
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 37
bull rdt30 remetente
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Transport Layer 3-38
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
pkt1
ack1
ack0
ack0
(a) no loss
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(b) packet loss
pkt1X
loss
pkt1timeout
resend pkt1
rdt30 in action
Transport Layer 3-39
rdt30 in action
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(c) ACK loss
ack1X
loss
pkt1timeout
resend pkt1
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) premature timeout delayed ACK
pkt1timeout
resend pkt1
ack1
send ack1
send pkt0rcv ack1
pkt0
ack1
ack0
send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
rcv pkt0
send ack0(detect duplicate)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 42
bull No coraccedilatildeo do problema do desempenho do rdt30 estaacute o fato de ele ser um protocolo do tipo pare e espere
bull Um protocolo pare e espere em operaccedilatildeo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 43
U remet =
0008
30008 = 000027
microseconds
L R RTT + L R
=
Desempenho do rdt30
rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso pacote 8000 bits
U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando
Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos Soluccedilatildeo
ndosmicrosseguR
Ldtrans 8
bps10
bits80009
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 44
Um protocolo com paralelismo em operaccedilatildeo
bull O ACK recebido eacute de que pacote
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 45
bull Envio com pare e espere
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 46
bull Envio com paralelismo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Aumento de utilizaccedilatildeopor fator de 3
U remet =
0024 30008
= 00008 microseconds
3 L R RTT + L R
=
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Transport Layer 3-6
Multiplexingdemultiplexing
process
socket
use header info to deliverreceived segments tocorrect socket
demultiplexing at receiverhandle data from multiplesockets add transport header (later used for demultiplexing)
multiplexing at sender
transport
application
physical
link
network
P2P1
transport
application
physical
link
network
P4
transport
application
physical
link
network
P3
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 7
bull A tarefa de entregar os dados contidos em um segmento da camada de transporte ao socket correto eacute denominada demultiplexaccedilatildeo
bull O trabalho de reunir no hospedeiro de origem partes de dados provenientes de diferentes sockets encapsular cada parte de dados com informaccedilotildees de cabeccedilalho para criar segmentos e passar esses segmentos para a camada de rede eacute denominada multiplexaccedilatildeo
Multiplexaccedilatildeo e demultiplexaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 8
bull Campos de nuacutemero de porta de origem e de destino em um segmento de camada de transporte
Multiplexaccedilatildeo e demultiplexaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 9
Demultiplexaccedilatildeo natildeo orientada para conexatildeo
cria sockets com nuacutemero de porta automaacutetico
clietSocket = socket(AF_INET SOCK_DGRAM)
Alternativamente podemos fixar a porta acrescentando
clientSocketbind(( 12535))
socket UDP identificado por tupla de dois elementos
(endereccedilo IP destino nuacutemero porta destino)
quando hospedeiro recebe segmento UDPndash verifica nuacutemero de porta
de destino no segmentondash direciona segmento UDP
para socket com esse nuacutemero de porta
datagramas IP com diferentes endereccedilos IP de origem eou nuacutemeros de porta de origem direcionados para o mesmo socket
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 10
Demultiplexaccedilatildeo natildeo orientada para conexatildeo
socket UDP identificado por tupla de dois elementos
(endereccedilo IP destino nuacutemero porta destino)
ClienteIPB
P2
cliente IP A
P1P1P3
servidorIP C
DP 9157
DP 6428
DP 5775
DP 6428
SP 6428
D-IP A
D-IP C
D-IP B
SP 6428
SP 5775
D-IP C
SP oferece ldquoendereccedilo de retornordquo caso necessaacuterio
SP 9157
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 11
Demultiplexaccedilatildeo orientada para conexatildeo
socket TCP identificado por tupla de 4 elementos ndash endereccedilo IP de origemndash nuacutemero de porta de origemndash endereccedilo IP de destinondash nuacutemero de porta de destino
hospedeiro destinataacuterio usa todos os quatro valores para direcionar segmento ao socket apropriado
hospedeiro servidor pode admitir muitos sockets TCP simultacircneosndash cada socket identificado
por sua proacutepria tupla de 4 servidores Web tecircm
diferentes sockets para cada cliente conectandondash HTTP natildeo persistente teraacute
diferentes sockets para cada requisiccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 12
Demultiplexaccedilatildeo orientada para conexatildeo
clienteIPB
P1
cliente IP A
P1P2P4
servidorIP C
SP 9157DP 80
SP 9157DP 80
P5 P6 P3
D-IPCS-IP AD-IPC
S-IP B
SP 5775DP 80
D-IPCS-IP B
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 13
bull O UDP definido no [RFC 768] faz apenas quase tatildeo pouco quanto um protocolo de transporte pode fazer
bull Agrave parte sua funccedilatildeo de multiplexaccedilatildeodemultiplexaccedilatildeo e de alguma verificaccedilatildeo de erros simples ele nada adiciona ao IP
bull Se o desenvolvedor de aplicaccedilatildeo escolher o UDP em vez do TCP a aplicaccedilatildeo estaraacute ldquofalandordquo quase diretamente com o IP
bull O UDP eacute natildeo orientado para conexatildeo Natildeo haacute a apresentaccedilatildeo entre as entidades remetentes e destinataacuterias
Transporte natildeo orientado para conexatildeo UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 14
bull Melhor controle no niacutevel de aplicaccedilatildeo sobre quais dados satildeo enviados e quando menor atraso
bull Natildeo haacute estabelecimento de conexatildeo menor atrasobull Natildeo haacute estados de conexatildeo buffers paracircmetros de
controle de congestionamento nuacutemero de sequecircncia Menor ldquocustordquo
bull Pequeno excesso de cabeccedilalho de pacotes 8 bytes de excesso TCP 20 bytes Menor ldquocustordquo
bull Sem controle de congestionamento do TCP ==gt isso pode implicar em ldquocolapsordquo na rede
bull Eacute possiacutevel uma aplicaccedilatildeo ter transferecircncia confiaacutevel de dados usando UDP
Por que usa-se UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 15
bull Aplicaccedilotildees populares da Internet e seus protocolos de transporte subjacentes
Transporte natildeo orientado para conexatildeo UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 16
bull Estrutura do segmento UDP
Estrutura do segmento UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 17
bull A soma de verificaccedilatildeo UDP serve para detectar erros em todo o segmento
bull Suponha que tenhamos as seguintes trecircs palavras de 16 bits
bull A soma das duas primeiras eacute
bull Adicionando a terceira palavra agrave soma anterior temos
Soma de verificaccedilatildeo UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 18
bull Note que a uacuteltima adiccedilatildeo teve um ldquovai umrdquo no bit mais significativo que foi somado ao bit menos significativo
bull Complemento de 1 0 ==gt 1 1 ==gt 0bull Fazendo o complemento de 1 da soma final
1011010100111101 Esta eacute a soma de verificaccedilatildeobull No destinataacuterio todas as 4 palavras recebidas de 16 bits satildeo
somadas 1111 ==gt Pacote correto algum bit em 0 ==gt algum erro foi introduzido no pacote
bull Por que soma de verificaccedilatildeo no UDPbull Algumas camadas de enlace por exemplo Ethernet fornecem
soma de verificaccedilatildeobull mas nem todas e aleacutem disso um roteador poderia introduzir
algum errobull UDP verifica erros fim a fim
Soma de verificaccedilatildeo UDP
Transport Layer 3-19
Principles of reliable data transfer important in application transport link layers
top-10 list of important networking topics
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
Transport Layer 3-20
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
Principles of reliable data transfer important in application transport link layers
top-10 list of important networking topics
Transport Layer 3-21
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
important in application transport link layers top-10 list of important networking topics
Principles of reliable data transfer
Transport Layer 3-22
sendside
receiveside
rdt_send() called from above (eg by app) Passed data to deliver to receiver upper layer
udt_send() called by rdtto transfer packet over unreliable channel to receiver
rdt_rcv() called when packet arrives on rcv-side of channel
deliver_data() called by rdt to deliver data to upper
Principles of reliable data transfer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 23
vamos desenvolver de forma incremental os lados remetente e destinataacuterio do
protocolo de transferecircncia confiaacutevel de dados (rdt) considerar apenas a transf de dados unidirecional Bidirecional eacute soacute
duplicar a estruturandash mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees
usar maacutequinas de estado finito (FSM) para especificar remetente e destinataacuterio
estado1
estado2
evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado
estado quando neste ldquoestadordquo proacuteximo
estado determinadoexclusivamente pelo
proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel de dados introduccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 24
bull rdt10 ndash Um protocolo para um canal completamente confiaacutevel
Transferecircncia confiaacutevel de dados sobre um canal perfeitamente confiaacutevel rdt10
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 25
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
rdt20 ndash Um protocolo para um canal com erros de bits Base dos protocolos ARQ (Automatic Repeat Request)
Detecccedilatildeo de erros (mecanismo do UDP)
Realimentaccedilatildeo do destinataacuterio (ACK ou NACK)
Retransmissatildeobull Pare e espere
Transport Layer 3-26
rdt20 FSM specification
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) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from belowsender
receiverrdt_send(data)
Transport Layer 3-27
rdt20 operation with no errors
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Transport Layer 3-28
rdt20 error scenario
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 29
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
bull O que acontece se o pacote ACK ou NAK estiver corrompido
bull Vamos considerar trecircs possibilidade para ACKs ou NAKs corrompidos1 Ser humano -- A ldquoditadordquo B ldquoOKrdquo ou ldquoRepita por favorrdquo ==gt
A natildeo entende ldquoO que foi que vocecirc disserdquo infinito Peacutessimo2 Bits de soma de verificaccedilatildeo de tal modo que permita ao remetente a
recuperaccedilatildeo de erros de bits Muito bom mas serve somente para canais com erro de bits e natildeo perda de pacotes
3 O Remetente reenvia o pacote de dados corrente quando receber um pacote ACK ou NAK truncado ==gt pode gerar pacotes duplicados Como o destinataacuterio sabe se o pacote conteacutem novos dados ou eacute uma retransmissatildeo ==gt nuacutemero de sequecircncia
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 30
bull rdt21 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 31
bull rdt21 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 32
bull O protocolo rdt21 usa tanto o reconhecimento positivo como negativo do remetente ao destinataacuterio pacote fora de ordem ==gt ACK pacote corrompido ==gt NAK
bull Podemos conseguir o mesmo efeito se ao inveacutes de enviarmos um NAK enviarmos um ACK do uacuteltimo corretamente recebido Ou seja ACK tambeacutem numerado
bull ACKs duplicados indicam ao remetente que o destinataacuterio natildeo recebeu corretamente o pacote seguinte agravequele do ACK duplo
bull rdt22 deve enviar o nuacutemero de sequecircncia no ACK
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21-2
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 33
bull rdt22 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 34
bull rdt22 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 35
bull Duas preocupaccedilotildees adicionais devem ser tratadas pelo protocolo1 Como detectar perda de pacotes2 O que fazer quando haacute perdas
bull As teacutecnicas jaacute discutidas atendem a segunda questatildeobull E para a primeira questatildeobull Suponha que o remetente transmita um pacote e que esse
pacote ou seu ACK seja perdido Nenhuma resposta chegaraacute ao remetente Se o remetente natildeo quiser esperar ==gt retransmite o pacote
bull Mas quanto o remetente precisa esperar para ter certeza que algo foi perdido Esperar um RTT Eacute muito difiacutecil estimar o RTT quanto mais ter certeza
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 36
bull Aleacutem disso o ideal seria que o protocolo se recuperasse da perda assim que possiacutevel
bull Na praacutetica O remetente faz uma escolha ponderada de um RTT provaacutevel mas natildeo
garantido que a perda tivesse acontecido Se natildeo receber um ACK nesse periacuteodo retransmite o pacote
bull Se o pacote sofrer um atraso longo pode haver retransmissatildeo mesmo que o pacote ou ACK natildeo tenham sido perdidos Possibilidade de pacotes de dados duplicados
bull Para implementar um mecanismo de retransmissatildeo com base no tempo eacute necessaacuterio um temporizador de contagem regressiva Accedilotildees iniciar atender parar
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 37
bull rdt30 remetente
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Transport Layer 3-38
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
pkt1
ack1
ack0
ack0
(a) no loss
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(b) packet loss
pkt1X
loss
pkt1timeout
resend pkt1
rdt30 in action
Transport Layer 3-39
rdt30 in action
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(c) ACK loss
ack1X
loss
pkt1timeout
resend pkt1
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) premature timeout delayed ACK
pkt1timeout
resend pkt1
ack1
send ack1
send pkt0rcv ack1
pkt0
ack1
ack0
send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
rcv pkt0
send ack0(detect duplicate)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 42
bull No coraccedilatildeo do problema do desempenho do rdt30 estaacute o fato de ele ser um protocolo do tipo pare e espere
bull Um protocolo pare e espere em operaccedilatildeo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 43
U remet =
0008
30008 = 000027
microseconds
L R RTT + L R
=
Desempenho do rdt30
rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso pacote 8000 bits
U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando
Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos Soluccedilatildeo
ndosmicrosseguR
Ldtrans 8
bps10
bits80009
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 44
Um protocolo com paralelismo em operaccedilatildeo
bull O ACK recebido eacute de que pacote
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 45
bull Envio com pare e espere
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 46
bull Envio com paralelismo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Aumento de utilizaccedilatildeopor fator de 3
U remet =
0024 30008
= 00008 microseconds
3 L R RTT + L R
=
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 7
bull A tarefa de entregar os dados contidos em um segmento da camada de transporte ao socket correto eacute denominada demultiplexaccedilatildeo
bull O trabalho de reunir no hospedeiro de origem partes de dados provenientes de diferentes sockets encapsular cada parte de dados com informaccedilotildees de cabeccedilalho para criar segmentos e passar esses segmentos para a camada de rede eacute denominada multiplexaccedilatildeo
Multiplexaccedilatildeo e demultiplexaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 8
bull Campos de nuacutemero de porta de origem e de destino em um segmento de camada de transporte
Multiplexaccedilatildeo e demultiplexaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 9
Demultiplexaccedilatildeo natildeo orientada para conexatildeo
cria sockets com nuacutemero de porta automaacutetico
clietSocket = socket(AF_INET SOCK_DGRAM)
Alternativamente podemos fixar a porta acrescentando
clientSocketbind(( 12535))
socket UDP identificado por tupla de dois elementos
(endereccedilo IP destino nuacutemero porta destino)
quando hospedeiro recebe segmento UDPndash verifica nuacutemero de porta
de destino no segmentondash direciona segmento UDP
para socket com esse nuacutemero de porta
datagramas IP com diferentes endereccedilos IP de origem eou nuacutemeros de porta de origem direcionados para o mesmo socket
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 10
Demultiplexaccedilatildeo natildeo orientada para conexatildeo
socket UDP identificado por tupla de dois elementos
(endereccedilo IP destino nuacutemero porta destino)
ClienteIPB
P2
cliente IP A
P1P1P3
servidorIP C
DP 9157
DP 6428
DP 5775
DP 6428
SP 6428
D-IP A
D-IP C
D-IP B
SP 6428
SP 5775
D-IP C
SP oferece ldquoendereccedilo de retornordquo caso necessaacuterio
SP 9157
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 11
Demultiplexaccedilatildeo orientada para conexatildeo
socket TCP identificado por tupla de 4 elementos ndash endereccedilo IP de origemndash nuacutemero de porta de origemndash endereccedilo IP de destinondash nuacutemero de porta de destino
hospedeiro destinataacuterio usa todos os quatro valores para direcionar segmento ao socket apropriado
hospedeiro servidor pode admitir muitos sockets TCP simultacircneosndash cada socket identificado
por sua proacutepria tupla de 4 servidores Web tecircm
diferentes sockets para cada cliente conectandondash HTTP natildeo persistente teraacute
diferentes sockets para cada requisiccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 12
Demultiplexaccedilatildeo orientada para conexatildeo
clienteIPB
P1
cliente IP A
P1P2P4
servidorIP C
SP 9157DP 80
SP 9157DP 80
P5 P6 P3
D-IPCS-IP AD-IPC
S-IP B
SP 5775DP 80
D-IPCS-IP B
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 13
bull O UDP definido no [RFC 768] faz apenas quase tatildeo pouco quanto um protocolo de transporte pode fazer
bull Agrave parte sua funccedilatildeo de multiplexaccedilatildeodemultiplexaccedilatildeo e de alguma verificaccedilatildeo de erros simples ele nada adiciona ao IP
bull Se o desenvolvedor de aplicaccedilatildeo escolher o UDP em vez do TCP a aplicaccedilatildeo estaraacute ldquofalandordquo quase diretamente com o IP
bull O UDP eacute natildeo orientado para conexatildeo Natildeo haacute a apresentaccedilatildeo entre as entidades remetentes e destinataacuterias
Transporte natildeo orientado para conexatildeo UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 14
bull Melhor controle no niacutevel de aplicaccedilatildeo sobre quais dados satildeo enviados e quando menor atraso
bull Natildeo haacute estabelecimento de conexatildeo menor atrasobull Natildeo haacute estados de conexatildeo buffers paracircmetros de
controle de congestionamento nuacutemero de sequecircncia Menor ldquocustordquo
bull Pequeno excesso de cabeccedilalho de pacotes 8 bytes de excesso TCP 20 bytes Menor ldquocustordquo
bull Sem controle de congestionamento do TCP ==gt isso pode implicar em ldquocolapsordquo na rede
bull Eacute possiacutevel uma aplicaccedilatildeo ter transferecircncia confiaacutevel de dados usando UDP
Por que usa-se UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 15
bull Aplicaccedilotildees populares da Internet e seus protocolos de transporte subjacentes
Transporte natildeo orientado para conexatildeo UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 16
bull Estrutura do segmento UDP
Estrutura do segmento UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 17
bull A soma de verificaccedilatildeo UDP serve para detectar erros em todo o segmento
bull Suponha que tenhamos as seguintes trecircs palavras de 16 bits
bull A soma das duas primeiras eacute
bull Adicionando a terceira palavra agrave soma anterior temos
Soma de verificaccedilatildeo UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 18
bull Note que a uacuteltima adiccedilatildeo teve um ldquovai umrdquo no bit mais significativo que foi somado ao bit menos significativo
bull Complemento de 1 0 ==gt 1 1 ==gt 0bull Fazendo o complemento de 1 da soma final
1011010100111101 Esta eacute a soma de verificaccedilatildeobull No destinataacuterio todas as 4 palavras recebidas de 16 bits satildeo
somadas 1111 ==gt Pacote correto algum bit em 0 ==gt algum erro foi introduzido no pacote
bull Por que soma de verificaccedilatildeo no UDPbull Algumas camadas de enlace por exemplo Ethernet fornecem
soma de verificaccedilatildeobull mas nem todas e aleacutem disso um roteador poderia introduzir
algum errobull UDP verifica erros fim a fim
Soma de verificaccedilatildeo UDP
Transport Layer 3-19
Principles of reliable data transfer important in application transport link layers
top-10 list of important networking topics
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
Transport Layer 3-20
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
Principles of reliable data transfer important in application transport link layers
top-10 list of important networking topics
Transport Layer 3-21
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
important in application transport link layers top-10 list of important networking topics
Principles of reliable data transfer
Transport Layer 3-22
sendside
receiveside
rdt_send() called from above (eg by app) Passed data to deliver to receiver upper layer
udt_send() called by rdtto transfer packet over unreliable channel to receiver
rdt_rcv() called when packet arrives on rcv-side of channel
deliver_data() called by rdt to deliver data to upper
Principles of reliable data transfer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 23
vamos desenvolver de forma incremental os lados remetente e destinataacuterio do
protocolo de transferecircncia confiaacutevel de dados (rdt) considerar apenas a transf de dados unidirecional Bidirecional eacute soacute
duplicar a estruturandash mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees
usar maacutequinas de estado finito (FSM) para especificar remetente e destinataacuterio
estado1
estado2
evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado
estado quando neste ldquoestadordquo proacuteximo
estado determinadoexclusivamente pelo
proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel de dados introduccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 24
bull rdt10 ndash Um protocolo para um canal completamente confiaacutevel
Transferecircncia confiaacutevel de dados sobre um canal perfeitamente confiaacutevel rdt10
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 25
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
rdt20 ndash Um protocolo para um canal com erros de bits Base dos protocolos ARQ (Automatic Repeat Request)
Detecccedilatildeo de erros (mecanismo do UDP)
Realimentaccedilatildeo do destinataacuterio (ACK ou NACK)
Retransmissatildeobull Pare e espere
Transport Layer 3-26
rdt20 FSM specification
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) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from belowsender
receiverrdt_send(data)
Transport Layer 3-27
rdt20 operation with no errors
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Transport Layer 3-28
rdt20 error scenario
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 29
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
bull O que acontece se o pacote ACK ou NAK estiver corrompido
bull Vamos considerar trecircs possibilidade para ACKs ou NAKs corrompidos1 Ser humano -- A ldquoditadordquo B ldquoOKrdquo ou ldquoRepita por favorrdquo ==gt
A natildeo entende ldquoO que foi que vocecirc disserdquo infinito Peacutessimo2 Bits de soma de verificaccedilatildeo de tal modo que permita ao remetente a
recuperaccedilatildeo de erros de bits Muito bom mas serve somente para canais com erro de bits e natildeo perda de pacotes
3 O Remetente reenvia o pacote de dados corrente quando receber um pacote ACK ou NAK truncado ==gt pode gerar pacotes duplicados Como o destinataacuterio sabe se o pacote conteacutem novos dados ou eacute uma retransmissatildeo ==gt nuacutemero de sequecircncia
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 30
bull rdt21 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 31
bull rdt21 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 32
bull O protocolo rdt21 usa tanto o reconhecimento positivo como negativo do remetente ao destinataacuterio pacote fora de ordem ==gt ACK pacote corrompido ==gt NAK
bull Podemos conseguir o mesmo efeito se ao inveacutes de enviarmos um NAK enviarmos um ACK do uacuteltimo corretamente recebido Ou seja ACK tambeacutem numerado
bull ACKs duplicados indicam ao remetente que o destinataacuterio natildeo recebeu corretamente o pacote seguinte agravequele do ACK duplo
bull rdt22 deve enviar o nuacutemero de sequecircncia no ACK
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21-2
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 33
bull rdt22 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 34
bull rdt22 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 35
bull Duas preocupaccedilotildees adicionais devem ser tratadas pelo protocolo1 Como detectar perda de pacotes2 O que fazer quando haacute perdas
bull As teacutecnicas jaacute discutidas atendem a segunda questatildeobull E para a primeira questatildeobull Suponha que o remetente transmita um pacote e que esse
pacote ou seu ACK seja perdido Nenhuma resposta chegaraacute ao remetente Se o remetente natildeo quiser esperar ==gt retransmite o pacote
bull Mas quanto o remetente precisa esperar para ter certeza que algo foi perdido Esperar um RTT Eacute muito difiacutecil estimar o RTT quanto mais ter certeza
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 36
bull Aleacutem disso o ideal seria que o protocolo se recuperasse da perda assim que possiacutevel
bull Na praacutetica O remetente faz uma escolha ponderada de um RTT provaacutevel mas natildeo
garantido que a perda tivesse acontecido Se natildeo receber um ACK nesse periacuteodo retransmite o pacote
bull Se o pacote sofrer um atraso longo pode haver retransmissatildeo mesmo que o pacote ou ACK natildeo tenham sido perdidos Possibilidade de pacotes de dados duplicados
bull Para implementar um mecanismo de retransmissatildeo com base no tempo eacute necessaacuterio um temporizador de contagem regressiva Accedilotildees iniciar atender parar
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 37
bull rdt30 remetente
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Transport Layer 3-38
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
pkt1
ack1
ack0
ack0
(a) no loss
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(b) packet loss
pkt1X
loss
pkt1timeout
resend pkt1
rdt30 in action
Transport Layer 3-39
rdt30 in action
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(c) ACK loss
ack1X
loss
pkt1timeout
resend pkt1
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) premature timeout delayed ACK
pkt1timeout
resend pkt1
ack1
send ack1
send pkt0rcv ack1
pkt0
ack1
ack0
send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
rcv pkt0
send ack0(detect duplicate)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 42
bull No coraccedilatildeo do problema do desempenho do rdt30 estaacute o fato de ele ser um protocolo do tipo pare e espere
bull Um protocolo pare e espere em operaccedilatildeo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 43
U remet =
0008
30008 = 000027
microseconds
L R RTT + L R
=
Desempenho do rdt30
rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso pacote 8000 bits
U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando
Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos Soluccedilatildeo
ndosmicrosseguR
Ldtrans 8
bps10
bits80009
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 44
Um protocolo com paralelismo em operaccedilatildeo
bull O ACK recebido eacute de que pacote
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 45
bull Envio com pare e espere
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 46
bull Envio com paralelismo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Aumento de utilizaccedilatildeopor fator de 3
U remet =
0024 30008
= 00008 microseconds
3 L R RTT + L R
=
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 8
bull Campos de nuacutemero de porta de origem e de destino em um segmento de camada de transporte
Multiplexaccedilatildeo e demultiplexaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 9
Demultiplexaccedilatildeo natildeo orientada para conexatildeo
cria sockets com nuacutemero de porta automaacutetico
clietSocket = socket(AF_INET SOCK_DGRAM)
Alternativamente podemos fixar a porta acrescentando
clientSocketbind(( 12535))
socket UDP identificado por tupla de dois elementos
(endereccedilo IP destino nuacutemero porta destino)
quando hospedeiro recebe segmento UDPndash verifica nuacutemero de porta
de destino no segmentondash direciona segmento UDP
para socket com esse nuacutemero de porta
datagramas IP com diferentes endereccedilos IP de origem eou nuacutemeros de porta de origem direcionados para o mesmo socket
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 10
Demultiplexaccedilatildeo natildeo orientada para conexatildeo
socket UDP identificado por tupla de dois elementos
(endereccedilo IP destino nuacutemero porta destino)
ClienteIPB
P2
cliente IP A
P1P1P3
servidorIP C
DP 9157
DP 6428
DP 5775
DP 6428
SP 6428
D-IP A
D-IP C
D-IP B
SP 6428
SP 5775
D-IP C
SP oferece ldquoendereccedilo de retornordquo caso necessaacuterio
SP 9157
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 11
Demultiplexaccedilatildeo orientada para conexatildeo
socket TCP identificado por tupla de 4 elementos ndash endereccedilo IP de origemndash nuacutemero de porta de origemndash endereccedilo IP de destinondash nuacutemero de porta de destino
hospedeiro destinataacuterio usa todos os quatro valores para direcionar segmento ao socket apropriado
hospedeiro servidor pode admitir muitos sockets TCP simultacircneosndash cada socket identificado
por sua proacutepria tupla de 4 servidores Web tecircm
diferentes sockets para cada cliente conectandondash HTTP natildeo persistente teraacute
diferentes sockets para cada requisiccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 12
Demultiplexaccedilatildeo orientada para conexatildeo
clienteIPB
P1
cliente IP A
P1P2P4
servidorIP C
SP 9157DP 80
SP 9157DP 80
P5 P6 P3
D-IPCS-IP AD-IPC
S-IP B
SP 5775DP 80
D-IPCS-IP B
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 13
bull O UDP definido no [RFC 768] faz apenas quase tatildeo pouco quanto um protocolo de transporte pode fazer
bull Agrave parte sua funccedilatildeo de multiplexaccedilatildeodemultiplexaccedilatildeo e de alguma verificaccedilatildeo de erros simples ele nada adiciona ao IP
bull Se o desenvolvedor de aplicaccedilatildeo escolher o UDP em vez do TCP a aplicaccedilatildeo estaraacute ldquofalandordquo quase diretamente com o IP
bull O UDP eacute natildeo orientado para conexatildeo Natildeo haacute a apresentaccedilatildeo entre as entidades remetentes e destinataacuterias
Transporte natildeo orientado para conexatildeo UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 14
bull Melhor controle no niacutevel de aplicaccedilatildeo sobre quais dados satildeo enviados e quando menor atraso
bull Natildeo haacute estabelecimento de conexatildeo menor atrasobull Natildeo haacute estados de conexatildeo buffers paracircmetros de
controle de congestionamento nuacutemero de sequecircncia Menor ldquocustordquo
bull Pequeno excesso de cabeccedilalho de pacotes 8 bytes de excesso TCP 20 bytes Menor ldquocustordquo
bull Sem controle de congestionamento do TCP ==gt isso pode implicar em ldquocolapsordquo na rede
bull Eacute possiacutevel uma aplicaccedilatildeo ter transferecircncia confiaacutevel de dados usando UDP
Por que usa-se UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 15
bull Aplicaccedilotildees populares da Internet e seus protocolos de transporte subjacentes
Transporte natildeo orientado para conexatildeo UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 16
bull Estrutura do segmento UDP
Estrutura do segmento UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 17
bull A soma de verificaccedilatildeo UDP serve para detectar erros em todo o segmento
bull Suponha que tenhamos as seguintes trecircs palavras de 16 bits
bull A soma das duas primeiras eacute
bull Adicionando a terceira palavra agrave soma anterior temos
Soma de verificaccedilatildeo UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 18
bull Note que a uacuteltima adiccedilatildeo teve um ldquovai umrdquo no bit mais significativo que foi somado ao bit menos significativo
bull Complemento de 1 0 ==gt 1 1 ==gt 0bull Fazendo o complemento de 1 da soma final
1011010100111101 Esta eacute a soma de verificaccedilatildeobull No destinataacuterio todas as 4 palavras recebidas de 16 bits satildeo
somadas 1111 ==gt Pacote correto algum bit em 0 ==gt algum erro foi introduzido no pacote
bull Por que soma de verificaccedilatildeo no UDPbull Algumas camadas de enlace por exemplo Ethernet fornecem
soma de verificaccedilatildeobull mas nem todas e aleacutem disso um roteador poderia introduzir
algum errobull UDP verifica erros fim a fim
Soma de verificaccedilatildeo UDP
Transport Layer 3-19
Principles of reliable data transfer important in application transport link layers
top-10 list of important networking topics
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
Transport Layer 3-20
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
Principles of reliable data transfer important in application transport link layers
top-10 list of important networking topics
Transport Layer 3-21
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
important in application transport link layers top-10 list of important networking topics
Principles of reliable data transfer
Transport Layer 3-22
sendside
receiveside
rdt_send() called from above (eg by app) Passed data to deliver to receiver upper layer
udt_send() called by rdtto transfer packet over unreliable channel to receiver
rdt_rcv() called when packet arrives on rcv-side of channel
deliver_data() called by rdt to deliver data to upper
Principles of reliable data transfer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 23
vamos desenvolver de forma incremental os lados remetente e destinataacuterio do
protocolo de transferecircncia confiaacutevel de dados (rdt) considerar apenas a transf de dados unidirecional Bidirecional eacute soacute
duplicar a estruturandash mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees
usar maacutequinas de estado finito (FSM) para especificar remetente e destinataacuterio
estado1
estado2
evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado
estado quando neste ldquoestadordquo proacuteximo
estado determinadoexclusivamente pelo
proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel de dados introduccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 24
bull rdt10 ndash Um protocolo para um canal completamente confiaacutevel
Transferecircncia confiaacutevel de dados sobre um canal perfeitamente confiaacutevel rdt10
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 25
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
rdt20 ndash Um protocolo para um canal com erros de bits Base dos protocolos ARQ (Automatic Repeat Request)
Detecccedilatildeo de erros (mecanismo do UDP)
Realimentaccedilatildeo do destinataacuterio (ACK ou NACK)
Retransmissatildeobull Pare e espere
Transport Layer 3-26
rdt20 FSM specification
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) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from belowsender
receiverrdt_send(data)
Transport Layer 3-27
rdt20 operation with no errors
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Transport Layer 3-28
rdt20 error scenario
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 29
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
bull O que acontece se o pacote ACK ou NAK estiver corrompido
bull Vamos considerar trecircs possibilidade para ACKs ou NAKs corrompidos1 Ser humano -- A ldquoditadordquo B ldquoOKrdquo ou ldquoRepita por favorrdquo ==gt
A natildeo entende ldquoO que foi que vocecirc disserdquo infinito Peacutessimo2 Bits de soma de verificaccedilatildeo de tal modo que permita ao remetente a
recuperaccedilatildeo de erros de bits Muito bom mas serve somente para canais com erro de bits e natildeo perda de pacotes
3 O Remetente reenvia o pacote de dados corrente quando receber um pacote ACK ou NAK truncado ==gt pode gerar pacotes duplicados Como o destinataacuterio sabe se o pacote conteacutem novos dados ou eacute uma retransmissatildeo ==gt nuacutemero de sequecircncia
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 30
bull rdt21 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 31
bull rdt21 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 32
bull O protocolo rdt21 usa tanto o reconhecimento positivo como negativo do remetente ao destinataacuterio pacote fora de ordem ==gt ACK pacote corrompido ==gt NAK
bull Podemos conseguir o mesmo efeito se ao inveacutes de enviarmos um NAK enviarmos um ACK do uacuteltimo corretamente recebido Ou seja ACK tambeacutem numerado
bull ACKs duplicados indicam ao remetente que o destinataacuterio natildeo recebeu corretamente o pacote seguinte agravequele do ACK duplo
bull rdt22 deve enviar o nuacutemero de sequecircncia no ACK
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21-2
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 33
bull rdt22 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 34
bull rdt22 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 35
bull Duas preocupaccedilotildees adicionais devem ser tratadas pelo protocolo1 Como detectar perda de pacotes2 O que fazer quando haacute perdas
bull As teacutecnicas jaacute discutidas atendem a segunda questatildeobull E para a primeira questatildeobull Suponha que o remetente transmita um pacote e que esse
pacote ou seu ACK seja perdido Nenhuma resposta chegaraacute ao remetente Se o remetente natildeo quiser esperar ==gt retransmite o pacote
bull Mas quanto o remetente precisa esperar para ter certeza que algo foi perdido Esperar um RTT Eacute muito difiacutecil estimar o RTT quanto mais ter certeza
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 36
bull Aleacutem disso o ideal seria que o protocolo se recuperasse da perda assim que possiacutevel
bull Na praacutetica O remetente faz uma escolha ponderada de um RTT provaacutevel mas natildeo
garantido que a perda tivesse acontecido Se natildeo receber um ACK nesse periacuteodo retransmite o pacote
bull Se o pacote sofrer um atraso longo pode haver retransmissatildeo mesmo que o pacote ou ACK natildeo tenham sido perdidos Possibilidade de pacotes de dados duplicados
bull Para implementar um mecanismo de retransmissatildeo com base no tempo eacute necessaacuterio um temporizador de contagem regressiva Accedilotildees iniciar atender parar
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 37
bull rdt30 remetente
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Transport Layer 3-38
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
pkt1
ack1
ack0
ack0
(a) no loss
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(b) packet loss
pkt1X
loss
pkt1timeout
resend pkt1
rdt30 in action
Transport Layer 3-39
rdt30 in action
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(c) ACK loss
ack1X
loss
pkt1timeout
resend pkt1
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) premature timeout delayed ACK
pkt1timeout
resend pkt1
ack1
send ack1
send pkt0rcv ack1
pkt0
ack1
ack0
send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
rcv pkt0
send ack0(detect duplicate)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 42
bull No coraccedilatildeo do problema do desempenho do rdt30 estaacute o fato de ele ser um protocolo do tipo pare e espere
bull Um protocolo pare e espere em operaccedilatildeo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 43
U remet =
0008
30008 = 000027
microseconds
L R RTT + L R
=
Desempenho do rdt30
rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso pacote 8000 bits
U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando
Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos Soluccedilatildeo
ndosmicrosseguR
Ldtrans 8
bps10
bits80009
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 44
Um protocolo com paralelismo em operaccedilatildeo
bull O ACK recebido eacute de que pacote
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 45
bull Envio com pare e espere
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 46
bull Envio com paralelismo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Aumento de utilizaccedilatildeopor fator de 3
U remet =
0024 30008
= 00008 microseconds
3 L R RTT + L R
=
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 9
Demultiplexaccedilatildeo natildeo orientada para conexatildeo
cria sockets com nuacutemero de porta automaacutetico
clietSocket = socket(AF_INET SOCK_DGRAM)
Alternativamente podemos fixar a porta acrescentando
clientSocketbind(( 12535))
socket UDP identificado por tupla de dois elementos
(endereccedilo IP destino nuacutemero porta destino)
quando hospedeiro recebe segmento UDPndash verifica nuacutemero de porta
de destino no segmentondash direciona segmento UDP
para socket com esse nuacutemero de porta
datagramas IP com diferentes endereccedilos IP de origem eou nuacutemeros de porta de origem direcionados para o mesmo socket
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 10
Demultiplexaccedilatildeo natildeo orientada para conexatildeo
socket UDP identificado por tupla de dois elementos
(endereccedilo IP destino nuacutemero porta destino)
ClienteIPB
P2
cliente IP A
P1P1P3
servidorIP C
DP 9157
DP 6428
DP 5775
DP 6428
SP 6428
D-IP A
D-IP C
D-IP B
SP 6428
SP 5775
D-IP C
SP oferece ldquoendereccedilo de retornordquo caso necessaacuterio
SP 9157
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 11
Demultiplexaccedilatildeo orientada para conexatildeo
socket TCP identificado por tupla de 4 elementos ndash endereccedilo IP de origemndash nuacutemero de porta de origemndash endereccedilo IP de destinondash nuacutemero de porta de destino
hospedeiro destinataacuterio usa todos os quatro valores para direcionar segmento ao socket apropriado
hospedeiro servidor pode admitir muitos sockets TCP simultacircneosndash cada socket identificado
por sua proacutepria tupla de 4 servidores Web tecircm
diferentes sockets para cada cliente conectandondash HTTP natildeo persistente teraacute
diferentes sockets para cada requisiccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 12
Demultiplexaccedilatildeo orientada para conexatildeo
clienteIPB
P1
cliente IP A
P1P2P4
servidorIP C
SP 9157DP 80
SP 9157DP 80
P5 P6 P3
D-IPCS-IP AD-IPC
S-IP B
SP 5775DP 80
D-IPCS-IP B
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 13
bull O UDP definido no [RFC 768] faz apenas quase tatildeo pouco quanto um protocolo de transporte pode fazer
bull Agrave parte sua funccedilatildeo de multiplexaccedilatildeodemultiplexaccedilatildeo e de alguma verificaccedilatildeo de erros simples ele nada adiciona ao IP
bull Se o desenvolvedor de aplicaccedilatildeo escolher o UDP em vez do TCP a aplicaccedilatildeo estaraacute ldquofalandordquo quase diretamente com o IP
bull O UDP eacute natildeo orientado para conexatildeo Natildeo haacute a apresentaccedilatildeo entre as entidades remetentes e destinataacuterias
Transporte natildeo orientado para conexatildeo UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 14
bull Melhor controle no niacutevel de aplicaccedilatildeo sobre quais dados satildeo enviados e quando menor atraso
bull Natildeo haacute estabelecimento de conexatildeo menor atrasobull Natildeo haacute estados de conexatildeo buffers paracircmetros de
controle de congestionamento nuacutemero de sequecircncia Menor ldquocustordquo
bull Pequeno excesso de cabeccedilalho de pacotes 8 bytes de excesso TCP 20 bytes Menor ldquocustordquo
bull Sem controle de congestionamento do TCP ==gt isso pode implicar em ldquocolapsordquo na rede
bull Eacute possiacutevel uma aplicaccedilatildeo ter transferecircncia confiaacutevel de dados usando UDP
Por que usa-se UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 15
bull Aplicaccedilotildees populares da Internet e seus protocolos de transporte subjacentes
Transporte natildeo orientado para conexatildeo UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 16
bull Estrutura do segmento UDP
Estrutura do segmento UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 17
bull A soma de verificaccedilatildeo UDP serve para detectar erros em todo o segmento
bull Suponha que tenhamos as seguintes trecircs palavras de 16 bits
bull A soma das duas primeiras eacute
bull Adicionando a terceira palavra agrave soma anterior temos
Soma de verificaccedilatildeo UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 18
bull Note que a uacuteltima adiccedilatildeo teve um ldquovai umrdquo no bit mais significativo que foi somado ao bit menos significativo
bull Complemento de 1 0 ==gt 1 1 ==gt 0bull Fazendo o complemento de 1 da soma final
1011010100111101 Esta eacute a soma de verificaccedilatildeobull No destinataacuterio todas as 4 palavras recebidas de 16 bits satildeo
somadas 1111 ==gt Pacote correto algum bit em 0 ==gt algum erro foi introduzido no pacote
bull Por que soma de verificaccedilatildeo no UDPbull Algumas camadas de enlace por exemplo Ethernet fornecem
soma de verificaccedilatildeobull mas nem todas e aleacutem disso um roteador poderia introduzir
algum errobull UDP verifica erros fim a fim
Soma de verificaccedilatildeo UDP
Transport Layer 3-19
Principles of reliable data transfer important in application transport link layers
top-10 list of important networking topics
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
Transport Layer 3-20
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
Principles of reliable data transfer important in application transport link layers
top-10 list of important networking topics
Transport Layer 3-21
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
important in application transport link layers top-10 list of important networking topics
Principles of reliable data transfer
Transport Layer 3-22
sendside
receiveside
rdt_send() called from above (eg by app) Passed data to deliver to receiver upper layer
udt_send() called by rdtto transfer packet over unreliable channel to receiver
rdt_rcv() called when packet arrives on rcv-side of channel
deliver_data() called by rdt to deliver data to upper
Principles of reliable data transfer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 23
vamos desenvolver de forma incremental os lados remetente e destinataacuterio do
protocolo de transferecircncia confiaacutevel de dados (rdt) considerar apenas a transf de dados unidirecional Bidirecional eacute soacute
duplicar a estruturandash mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees
usar maacutequinas de estado finito (FSM) para especificar remetente e destinataacuterio
estado1
estado2
evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado
estado quando neste ldquoestadordquo proacuteximo
estado determinadoexclusivamente pelo
proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel de dados introduccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 24
bull rdt10 ndash Um protocolo para um canal completamente confiaacutevel
Transferecircncia confiaacutevel de dados sobre um canal perfeitamente confiaacutevel rdt10
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 25
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
rdt20 ndash Um protocolo para um canal com erros de bits Base dos protocolos ARQ (Automatic Repeat Request)
Detecccedilatildeo de erros (mecanismo do UDP)
Realimentaccedilatildeo do destinataacuterio (ACK ou NACK)
Retransmissatildeobull Pare e espere
Transport Layer 3-26
rdt20 FSM specification
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) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from belowsender
receiverrdt_send(data)
Transport Layer 3-27
rdt20 operation with no errors
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Transport Layer 3-28
rdt20 error scenario
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 29
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
bull O que acontece se o pacote ACK ou NAK estiver corrompido
bull Vamos considerar trecircs possibilidade para ACKs ou NAKs corrompidos1 Ser humano -- A ldquoditadordquo B ldquoOKrdquo ou ldquoRepita por favorrdquo ==gt
A natildeo entende ldquoO que foi que vocecirc disserdquo infinito Peacutessimo2 Bits de soma de verificaccedilatildeo de tal modo que permita ao remetente a
recuperaccedilatildeo de erros de bits Muito bom mas serve somente para canais com erro de bits e natildeo perda de pacotes
3 O Remetente reenvia o pacote de dados corrente quando receber um pacote ACK ou NAK truncado ==gt pode gerar pacotes duplicados Como o destinataacuterio sabe se o pacote conteacutem novos dados ou eacute uma retransmissatildeo ==gt nuacutemero de sequecircncia
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 30
bull rdt21 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 31
bull rdt21 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 32
bull O protocolo rdt21 usa tanto o reconhecimento positivo como negativo do remetente ao destinataacuterio pacote fora de ordem ==gt ACK pacote corrompido ==gt NAK
bull Podemos conseguir o mesmo efeito se ao inveacutes de enviarmos um NAK enviarmos um ACK do uacuteltimo corretamente recebido Ou seja ACK tambeacutem numerado
bull ACKs duplicados indicam ao remetente que o destinataacuterio natildeo recebeu corretamente o pacote seguinte agravequele do ACK duplo
bull rdt22 deve enviar o nuacutemero de sequecircncia no ACK
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21-2
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 33
bull rdt22 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 34
bull rdt22 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 35
bull Duas preocupaccedilotildees adicionais devem ser tratadas pelo protocolo1 Como detectar perda de pacotes2 O que fazer quando haacute perdas
bull As teacutecnicas jaacute discutidas atendem a segunda questatildeobull E para a primeira questatildeobull Suponha que o remetente transmita um pacote e que esse
pacote ou seu ACK seja perdido Nenhuma resposta chegaraacute ao remetente Se o remetente natildeo quiser esperar ==gt retransmite o pacote
bull Mas quanto o remetente precisa esperar para ter certeza que algo foi perdido Esperar um RTT Eacute muito difiacutecil estimar o RTT quanto mais ter certeza
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 36
bull Aleacutem disso o ideal seria que o protocolo se recuperasse da perda assim que possiacutevel
bull Na praacutetica O remetente faz uma escolha ponderada de um RTT provaacutevel mas natildeo
garantido que a perda tivesse acontecido Se natildeo receber um ACK nesse periacuteodo retransmite o pacote
bull Se o pacote sofrer um atraso longo pode haver retransmissatildeo mesmo que o pacote ou ACK natildeo tenham sido perdidos Possibilidade de pacotes de dados duplicados
bull Para implementar um mecanismo de retransmissatildeo com base no tempo eacute necessaacuterio um temporizador de contagem regressiva Accedilotildees iniciar atender parar
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 37
bull rdt30 remetente
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Transport Layer 3-38
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
pkt1
ack1
ack0
ack0
(a) no loss
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(b) packet loss
pkt1X
loss
pkt1timeout
resend pkt1
rdt30 in action
Transport Layer 3-39
rdt30 in action
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(c) ACK loss
ack1X
loss
pkt1timeout
resend pkt1
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) premature timeout delayed ACK
pkt1timeout
resend pkt1
ack1
send ack1
send pkt0rcv ack1
pkt0
ack1
ack0
send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
rcv pkt0
send ack0(detect duplicate)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 42
bull No coraccedilatildeo do problema do desempenho do rdt30 estaacute o fato de ele ser um protocolo do tipo pare e espere
bull Um protocolo pare e espere em operaccedilatildeo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 43
U remet =
0008
30008 = 000027
microseconds
L R RTT + L R
=
Desempenho do rdt30
rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso pacote 8000 bits
U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando
Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos Soluccedilatildeo
ndosmicrosseguR
Ldtrans 8
bps10
bits80009
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 44
Um protocolo com paralelismo em operaccedilatildeo
bull O ACK recebido eacute de que pacote
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 45
bull Envio com pare e espere
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 46
bull Envio com paralelismo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Aumento de utilizaccedilatildeopor fator de 3
U remet =
0024 30008
= 00008 microseconds
3 L R RTT + L R
=
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 10
Demultiplexaccedilatildeo natildeo orientada para conexatildeo
socket UDP identificado por tupla de dois elementos
(endereccedilo IP destino nuacutemero porta destino)
ClienteIPB
P2
cliente IP A
P1P1P3
servidorIP C
DP 9157
DP 6428
DP 5775
DP 6428
SP 6428
D-IP A
D-IP C
D-IP B
SP 6428
SP 5775
D-IP C
SP oferece ldquoendereccedilo de retornordquo caso necessaacuterio
SP 9157
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 11
Demultiplexaccedilatildeo orientada para conexatildeo
socket TCP identificado por tupla de 4 elementos ndash endereccedilo IP de origemndash nuacutemero de porta de origemndash endereccedilo IP de destinondash nuacutemero de porta de destino
hospedeiro destinataacuterio usa todos os quatro valores para direcionar segmento ao socket apropriado
hospedeiro servidor pode admitir muitos sockets TCP simultacircneosndash cada socket identificado
por sua proacutepria tupla de 4 servidores Web tecircm
diferentes sockets para cada cliente conectandondash HTTP natildeo persistente teraacute
diferentes sockets para cada requisiccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 12
Demultiplexaccedilatildeo orientada para conexatildeo
clienteIPB
P1
cliente IP A
P1P2P4
servidorIP C
SP 9157DP 80
SP 9157DP 80
P5 P6 P3
D-IPCS-IP AD-IPC
S-IP B
SP 5775DP 80
D-IPCS-IP B
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 13
bull O UDP definido no [RFC 768] faz apenas quase tatildeo pouco quanto um protocolo de transporte pode fazer
bull Agrave parte sua funccedilatildeo de multiplexaccedilatildeodemultiplexaccedilatildeo e de alguma verificaccedilatildeo de erros simples ele nada adiciona ao IP
bull Se o desenvolvedor de aplicaccedilatildeo escolher o UDP em vez do TCP a aplicaccedilatildeo estaraacute ldquofalandordquo quase diretamente com o IP
bull O UDP eacute natildeo orientado para conexatildeo Natildeo haacute a apresentaccedilatildeo entre as entidades remetentes e destinataacuterias
Transporte natildeo orientado para conexatildeo UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 14
bull Melhor controle no niacutevel de aplicaccedilatildeo sobre quais dados satildeo enviados e quando menor atraso
bull Natildeo haacute estabelecimento de conexatildeo menor atrasobull Natildeo haacute estados de conexatildeo buffers paracircmetros de
controle de congestionamento nuacutemero de sequecircncia Menor ldquocustordquo
bull Pequeno excesso de cabeccedilalho de pacotes 8 bytes de excesso TCP 20 bytes Menor ldquocustordquo
bull Sem controle de congestionamento do TCP ==gt isso pode implicar em ldquocolapsordquo na rede
bull Eacute possiacutevel uma aplicaccedilatildeo ter transferecircncia confiaacutevel de dados usando UDP
Por que usa-se UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 15
bull Aplicaccedilotildees populares da Internet e seus protocolos de transporte subjacentes
Transporte natildeo orientado para conexatildeo UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 16
bull Estrutura do segmento UDP
Estrutura do segmento UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 17
bull A soma de verificaccedilatildeo UDP serve para detectar erros em todo o segmento
bull Suponha que tenhamos as seguintes trecircs palavras de 16 bits
bull A soma das duas primeiras eacute
bull Adicionando a terceira palavra agrave soma anterior temos
Soma de verificaccedilatildeo UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 18
bull Note que a uacuteltima adiccedilatildeo teve um ldquovai umrdquo no bit mais significativo que foi somado ao bit menos significativo
bull Complemento de 1 0 ==gt 1 1 ==gt 0bull Fazendo o complemento de 1 da soma final
1011010100111101 Esta eacute a soma de verificaccedilatildeobull No destinataacuterio todas as 4 palavras recebidas de 16 bits satildeo
somadas 1111 ==gt Pacote correto algum bit em 0 ==gt algum erro foi introduzido no pacote
bull Por que soma de verificaccedilatildeo no UDPbull Algumas camadas de enlace por exemplo Ethernet fornecem
soma de verificaccedilatildeobull mas nem todas e aleacutem disso um roteador poderia introduzir
algum errobull UDP verifica erros fim a fim
Soma de verificaccedilatildeo UDP
Transport Layer 3-19
Principles of reliable data transfer important in application transport link layers
top-10 list of important networking topics
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
Transport Layer 3-20
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
Principles of reliable data transfer important in application transport link layers
top-10 list of important networking topics
Transport Layer 3-21
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
important in application transport link layers top-10 list of important networking topics
Principles of reliable data transfer
Transport Layer 3-22
sendside
receiveside
rdt_send() called from above (eg by app) Passed data to deliver to receiver upper layer
udt_send() called by rdtto transfer packet over unreliable channel to receiver
rdt_rcv() called when packet arrives on rcv-side of channel
deliver_data() called by rdt to deliver data to upper
Principles of reliable data transfer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 23
vamos desenvolver de forma incremental os lados remetente e destinataacuterio do
protocolo de transferecircncia confiaacutevel de dados (rdt) considerar apenas a transf de dados unidirecional Bidirecional eacute soacute
duplicar a estruturandash mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees
usar maacutequinas de estado finito (FSM) para especificar remetente e destinataacuterio
estado1
estado2
evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado
estado quando neste ldquoestadordquo proacuteximo
estado determinadoexclusivamente pelo
proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel de dados introduccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 24
bull rdt10 ndash Um protocolo para um canal completamente confiaacutevel
Transferecircncia confiaacutevel de dados sobre um canal perfeitamente confiaacutevel rdt10
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 25
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
rdt20 ndash Um protocolo para um canal com erros de bits Base dos protocolos ARQ (Automatic Repeat Request)
Detecccedilatildeo de erros (mecanismo do UDP)
Realimentaccedilatildeo do destinataacuterio (ACK ou NACK)
Retransmissatildeobull Pare e espere
Transport Layer 3-26
rdt20 FSM specification
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) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from belowsender
receiverrdt_send(data)
Transport Layer 3-27
rdt20 operation with no errors
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Transport Layer 3-28
rdt20 error scenario
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 29
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
bull O que acontece se o pacote ACK ou NAK estiver corrompido
bull Vamos considerar trecircs possibilidade para ACKs ou NAKs corrompidos1 Ser humano -- A ldquoditadordquo B ldquoOKrdquo ou ldquoRepita por favorrdquo ==gt
A natildeo entende ldquoO que foi que vocecirc disserdquo infinito Peacutessimo2 Bits de soma de verificaccedilatildeo de tal modo que permita ao remetente a
recuperaccedilatildeo de erros de bits Muito bom mas serve somente para canais com erro de bits e natildeo perda de pacotes
3 O Remetente reenvia o pacote de dados corrente quando receber um pacote ACK ou NAK truncado ==gt pode gerar pacotes duplicados Como o destinataacuterio sabe se o pacote conteacutem novos dados ou eacute uma retransmissatildeo ==gt nuacutemero de sequecircncia
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 30
bull rdt21 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 31
bull rdt21 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 32
bull O protocolo rdt21 usa tanto o reconhecimento positivo como negativo do remetente ao destinataacuterio pacote fora de ordem ==gt ACK pacote corrompido ==gt NAK
bull Podemos conseguir o mesmo efeito se ao inveacutes de enviarmos um NAK enviarmos um ACK do uacuteltimo corretamente recebido Ou seja ACK tambeacutem numerado
bull ACKs duplicados indicam ao remetente que o destinataacuterio natildeo recebeu corretamente o pacote seguinte agravequele do ACK duplo
bull rdt22 deve enviar o nuacutemero de sequecircncia no ACK
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21-2
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 33
bull rdt22 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 34
bull rdt22 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 35
bull Duas preocupaccedilotildees adicionais devem ser tratadas pelo protocolo1 Como detectar perda de pacotes2 O que fazer quando haacute perdas
bull As teacutecnicas jaacute discutidas atendem a segunda questatildeobull E para a primeira questatildeobull Suponha que o remetente transmita um pacote e que esse
pacote ou seu ACK seja perdido Nenhuma resposta chegaraacute ao remetente Se o remetente natildeo quiser esperar ==gt retransmite o pacote
bull Mas quanto o remetente precisa esperar para ter certeza que algo foi perdido Esperar um RTT Eacute muito difiacutecil estimar o RTT quanto mais ter certeza
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 36
bull Aleacutem disso o ideal seria que o protocolo se recuperasse da perda assim que possiacutevel
bull Na praacutetica O remetente faz uma escolha ponderada de um RTT provaacutevel mas natildeo
garantido que a perda tivesse acontecido Se natildeo receber um ACK nesse periacuteodo retransmite o pacote
bull Se o pacote sofrer um atraso longo pode haver retransmissatildeo mesmo que o pacote ou ACK natildeo tenham sido perdidos Possibilidade de pacotes de dados duplicados
bull Para implementar um mecanismo de retransmissatildeo com base no tempo eacute necessaacuterio um temporizador de contagem regressiva Accedilotildees iniciar atender parar
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 37
bull rdt30 remetente
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Transport Layer 3-38
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
pkt1
ack1
ack0
ack0
(a) no loss
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(b) packet loss
pkt1X
loss
pkt1timeout
resend pkt1
rdt30 in action
Transport Layer 3-39
rdt30 in action
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(c) ACK loss
ack1X
loss
pkt1timeout
resend pkt1
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) premature timeout delayed ACK
pkt1timeout
resend pkt1
ack1
send ack1
send pkt0rcv ack1
pkt0
ack1
ack0
send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
rcv pkt0
send ack0(detect duplicate)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 42
bull No coraccedilatildeo do problema do desempenho do rdt30 estaacute o fato de ele ser um protocolo do tipo pare e espere
bull Um protocolo pare e espere em operaccedilatildeo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 43
U remet =
0008
30008 = 000027
microseconds
L R RTT + L R
=
Desempenho do rdt30
rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso pacote 8000 bits
U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando
Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos Soluccedilatildeo
ndosmicrosseguR
Ldtrans 8
bps10
bits80009
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 44
Um protocolo com paralelismo em operaccedilatildeo
bull O ACK recebido eacute de que pacote
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 45
bull Envio com pare e espere
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 46
bull Envio com paralelismo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Aumento de utilizaccedilatildeopor fator de 3
U remet =
0024 30008
= 00008 microseconds
3 L R RTT + L R
=
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 11
Demultiplexaccedilatildeo orientada para conexatildeo
socket TCP identificado por tupla de 4 elementos ndash endereccedilo IP de origemndash nuacutemero de porta de origemndash endereccedilo IP de destinondash nuacutemero de porta de destino
hospedeiro destinataacuterio usa todos os quatro valores para direcionar segmento ao socket apropriado
hospedeiro servidor pode admitir muitos sockets TCP simultacircneosndash cada socket identificado
por sua proacutepria tupla de 4 servidores Web tecircm
diferentes sockets para cada cliente conectandondash HTTP natildeo persistente teraacute
diferentes sockets para cada requisiccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 12
Demultiplexaccedilatildeo orientada para conexatildeo
clienteIPB
P1
cliente IP A
P1P2P4
servidorIP C
SP 9157DP 80
SP 9157DP 80
P5 P6 P3
D-IPCS-IP AD-IPC
S-IP B
SP 5775DP 80
D-IPCS-IP B
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 13
bull O UDP definido no [RFC 768] faz apenas quase tatildeo pouco quanto um protocolo de transporte pode fazer
bull Agrave parte sua funccedilatildeo de multiplexaccedilatildeodemultiplexaccedilatildeo e de alguma verificaccedilatildeo de erros simples ele nada adiciona ao IP
bull Se o desenvolvedor de aplicaccedilatildeo escolher o UDP em vez do TCP a aplicaccedilatildeo estaraacute ldquofalandordquo quase diretamente com o IP
bull O UDP eacute natildeo orientado para conexatildeo Natildeo haacute a apresentaccedilatildeo entre as entidades remetentes e destinataacuterias
Transporte natildeo orientado para conexatildeo UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 14
bull Melhor controle no niacutevel de aplicaccedilatildeo sobre quais dados satildeo enviados e quando menor atraso
bull Natildeo haacute estabelecimento de conexatildeo menor atrasobull Natildeo haacute estados de conexatildeo buffers paracircmetros de
controle de congestionamento nuacutemero de sequecircncia Menor ldquocustordquo
bull Pequeno excesso de cabeccedilalho de pacotes 8 bytes de excesso TCP 20 bytes Menor ldquocustordquo
bull Sem controle de congestionamento do TCP ==gt isso pode implicar em ldquocolapsordquo na rede
bull Eacute possiacutevel uma aplicaccedilatildeo ter transferecircncia confiaacutevel de dados usando UDP
Por que usa-se UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 15
bull Aplicaccedilotildees populares da Internet e seus protocolos de transporte subjacentes
Transporte natildeo orientado para conexatildeo UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 16
bull Estrutura do segmento UDP
Estrutura do segmento UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 17
bull A soma de verificaccedilatildeo UDP serve para detectar erros em todo o segmento
bull Suponha que tenhamos as seguintes trecircs palavras de 16 bits
bull A soma das duas primeiras eacute
bull Adicionando a terceira palavra agrave soma anterior temos
Soma de verificaccedilatildeo UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 18
bull Note que a uacuteltima adiccedilatildeo teve um ldquovai umrdquo no bit mais significativo que foi somado ao bit menos significativo
bull Complemento de 1 0 ==gt 1 1 ==gt 0bull Fazendo o complemento de 1 da soma final
1011010100111101 Esta eacute a soma de verificaccedilatildeobull No destinataacuterio todas as 4 palavras recebidas de 16 bits satildeo
somadas 1111 ==gt Pacote correto algum bit em 0 ==gt algum erro foi introduzido no pacote
bull Por que soma de verificaccedilatildeo no UDPbull Algumas camadas de enlace por exemplo Ethernet fornecem
soma de verificaccedilatildeobull mas nem todas e aleacutem disso um roteador poderia introduzir
algum errobull UDP verifica erros fim a fim
Soma de verificaccedilatildeo UDP
Transport Layer 3-19
Principles of reliable data transfer important in application transport link layers
top-10 list of important networking topics
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
Transport Layer 3-20
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
Principles of reliable data transfer important in application transport link layers
top-10 list of important networking topics
Transport Layer 3-21
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
important in application transport link layers top-10 list of important networking topics
Principles of reliable data transfer
Transport Layer 3-22
sendside
receiveside
rdt_send() called from above (eg by app) Passed data to deliver to receiver upper layer
udt_send() called by rdtto transfer packet over unreliable channel to receiver
rdt_rcv() called when packet arrives on rcv-side of channel
deliver_data() called by rdt to deliver data to upper
Principles of reliable data transfer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 23
vamos desenvolver de forma incremental os lados remetente e destinataacuterio do
protocolo de transferecircncia confiaacutevel de dados (rdt) considerar apenas a transf de dados unidirecional Bidirecional eacute soacute
duplicar a estruturandash mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees
usar maacutequinas de estado finito (FSM) para especificar remetente e destinataacuterio
estado1
estado2
evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado
estado quando neste ldquoestadordquo proacuteximo
estado determinadoexclusivamente pelo
proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel de dados introduccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 24
bull rdt10 ndash Um protocolo para um canal completamente confiaacutevel
Transferecircncia confiaacutevel de dados sobre um canal perfeitamente confiaacutevel rdt10
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 25
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
rdt20 ndash Um protocolo para um canal com erros de bits Base dos protocolos ARQ (Automatic Repeat Request)
Detecccedilatildeo de erros (mecanismo do UDP)
Realimentaccedilatildeo do destinataacuterio (ACK ou NACK)
Retransmissatildeobull Pare e espere
Transport Layer 3-26
rdt20 FSM specification
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) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from belowsender
receiverrdt_send(data)
Transport Layer 3-27
rdt20 operation with no errors
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Transport Layer 3-28
rdt20 error scenario
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 29
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
bull O que acontece se o pacote ACK ou NAK estiver corrompido
bull Vamos considerar trecircs possibilidade para ACKs ou NAKs corrompidos1 Ser humano -- A ldquoditadordquo B ldquoOKrdquo ou ldquoRepita por favorrdquo ==gt
A natildeo entende ldquoO que foi que vocecirc disserdquo infinito Peacutessimo2 Bits de soma de verificaccedilatildeo de tal modo que permita ao remetente a
recuperaccedilatildeo de erros de bits Muito bom mas serve somente para canais com erro de bits e natildeo perda de pacotes
3 O Remetente reenvia o pacote de dados corrente quando receber um pacote ACK ou NAK truncado ==gt pode gerar pacotes duplicados Como o destinataacuterio sabe se o pacote conteacutem novos dados ou eacute uma retransmissatildeo ==gt nuacutemero de sequecircncia
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 30
bull rdt21 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 31
bull rdt21 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 32
bull O protocolo rdt21 usa tanto o reconhecimento positivo como negativo do remetente ao destinataacuterio pacote fora de ordem ==gt ACK pacote corrompido ==gt NAK
bull Podemos conseguir o mesmo efeito se ao inveacutes de enviarmos um NAK enviarmos um ACK do uacuteltimo corretamente recebido Ou seja ACK tambeacutem numerado
bull ACKs duplicados indicam ao remetente que o destinataacuterio natildeo recebeu corretamente o pacote seguinte agravequele do ACK duplo
bull rdt22 deve enviar o nuacutemero de sequecircncia no ACK
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21-2
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 33
bull rdt22 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 34
bull rdt22 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 35
bull Duas preocupaccedilotildees adicionais devem ser tratadas pelo protocolo1 Como detectar perda de pacotes2 O que fazer quando haacute perdas
bull As teacutecnicas jaacute discutidas atendem a segunda questatildeobull E para a primeira questatildeobull Suponha que o remetente transmita um pacote e que esse
pacote ou seu ACK seja perdido Nenhuma resposta chegaraacute ao remetente Se o remetente natildeo quiser esperar ==gt retransmite o pacote
bull Mas quanto o remetente precisa esperar para ter certeza que algo foi perdido Esperar um RTT Eacute muito difiacutecil estimar o RTT quanto mais ter certeza
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 36
bull Aleacutem disso o ideal seria que o protocolo se recuperasse da perda assim que possiacutevel
bull Na praacutetica O remetente faz uma escolha ponderada de um RTT provaacutevel mas natildeo
garantido que a perda tivesse acontecido Se natildeo receber um ACK nesse periacuteodo retransmite o pacote
bull Se o pacote sofrer um atraso longo pode haver retransmissatildeo mesmo que o pacote ou ACK natildeo tenham sido perdidos Possibilidade de pacotes de dados duplicados
bull Para implementar um mecanismo de retransmissatildeo com base no tempo eacute necessaacuterio um temporizador de contagem regressiva Accedilotildees iniciar atender parar
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 37
bull rdt30 remetente
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Transport Layer 3-38
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
pkt1
ack1
ack0
ack0
(a) no loss
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(b) packet loss
pkt1X
loss
pkt1timeout
resend pkt1
rdt30 in action
Transport Layer 3-39
rdt30 in action
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(c) ACK loss
ack1X
loss
pkt1timeout
resend pkt1
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) premature timeout delayed ACK
pkt1timeout
resend pkt1
ack1
send ack1
send pkt0rcv ack1
pkt0
ack1
ack0
send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
rcv pkt0
send ack0(detect duplicate)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 42
bull No coraccedilatildeo do problema do desempenho do rdt30 estaacute o fato de ele ser um protocolo do tipo pare e espere
bull Um protocolo pare e espere em operaccedilatildeo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 43
U remet =
0008
30008 = 000027
microseconds
L R RTT + L R
=
Desempenho do rdt30
rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso pacote 8000 bits
U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando
Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos Soluccedilatildeo
ndosmicrosseguR
Ldtrans 8
bps10
bits80009
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 44
Um protocolo com paralelismo em operaccedilatildeo
bull O ACK recebido eacute de que pacote
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 45
bull Envio com pare e espere
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 46
bull Envio com paralelismo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Aumento de utilizaccedilatildeopor fator de 3
U remet =
0024 30008
= 00008 microseconds
3 L R RTT + L R
=
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 12
Demultiplexaccedilatildeo orientada para conexatildeo
clienteIPB
P1
cliente IP A
P1P2P4
servidorIP C
SP 9157DP 80
SP 9157DP 80
P5 P6 P3
D-IPCS-IP AD-IPC
S-IP B
SP 5775DP 80
D-IPCS-IP B
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 13
bull O UDP definido no [RFC 768] faz apenas quase tatildeo pouco quanto um protocolo de transporte pode fazer
bull Agrave parte sua funccedilatildeo de multiplexaccedilatildeodemultiplexaccedilatildeo e de alguma verificaccedilatildeo de erros simples ele nada adiciona ao IP
bull Se o desenvolvedor de aplicaccedilatildeo escolher o UDP em vez do TCP a aplicaccedilatildeo estaraacute ldquofalandordquo quase diretamente com o IP
bull O UDP eacute natildeo orientado para conexatildeo Natildeo haacute a apresentaccedilatildeo entre as entidades remetentes e destinataacuterias
Transporte natildeo orientado para conexatildeo UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 14
bull Melhor controle no niacutevel de aplicaccedilatildeo sobre quais dados satildeo enviados e quando menor atraso
bull Natildeo haacute estabelecimento de conexatildeo menor atrasobull Natildeo haacute estados de conexatildeo buffers paracircmetros de
controle de congestionamento nuacutemero de sequecircncia Menor ldquocustordquo
bull Pequeno excesso de cabeccedilalho de pacotes 8 bytes de excesso TCP 20 bytes Menor ldquocustordquo
bull Sem controle de congestionamento do TCP ==gt isso pode implicar em ldquocolapsordquo na rede
bull Eacute possiacutevel uma aplicaccedilatildeo ter transferecircncia confiaacutevel de dados usando UDP
Por que usa-se UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 15
bull Aplicaccedilotildees populares da Internet e seus protocolos de transporte subjacentes
Transporte natildeo orientado para conexatildeo UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 16
bull Estrutura do segmento UDP
Estrutura do segmento UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 17
bull A soma de verificaccedilatildeo UDP serve para detectar erros em todo o segmento
bull Suponha que tenhamos as seguintes trecircs palavras de 16 bits
bull A soma das duas primeiras eacute
bull Adicionando a terceira palavra agrave soma anterior temos
Soma de verificaccedilatildeo UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 18
bull Note que a uacuteltima adiccedilatildeo teve um ldquovai umrdquo no bit mais significativo que foi somado ao bit menos significativo
bull Complemento de 1 0 ==gt 1 1 ==gt 0bull Fazendo o complemento de 1 da soma final
1011010100111101 Esta eacute a soma de verificaccedilatildeobull No destinataacuterio todas as 4 palavras recebidas de 16 bits satildeo
somadas 1111 ==gt Pacote correto algum bit em 0 ==gt algum erro foi introduzido no pacote
bull Por que soma de verificaccedilatildeo no UDPbull Algumas camadas de enlace por exemplo Ethernet fornecem
soma de verificaccedilatildeobull mas nem todas e aleacutem disso um roteador poderia introduzir
algum errobull UDP verifica erros fim a fim
Soma de verificaccedilatildeo UDP
Transport Layer 3-19
Principles of reliable data transfer important in application transport link layers
top-10 list of important networking topics
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
Transport Layer 3-20
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
Principles of reliable data transfer important in application transport link layers
top-10 list of important networking topics
Transport Layer 3-21
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
important in application transport link layers top-10 list of important networking topics
Principles of reliable data transfer
Transport Layer 3-22
sendside
receiveside
rdt_send() called from above (eg by app) Passed data to deliver to receiver upper layer
udt_send() called by rdtto transfer packet over unreliable channel to receiver
rdt_rcv() called when packet arrives on rcv-side of channel
deliver_data() called by rdt to deliver data to upper
Principles of reliable data transfer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 23
vamos desenvolver de forma incremental os lados remetente e destinataacuterio do
protocolo de transferecircncia confiaacutevel de dados (rdt) considerar apenas a transf de dados unidirecional Bidirecional eacute soacute
duplicar a estruturandash mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees
usar maacutequinas de estado finito (FSM) para especificar remetente e destinataacuterio
estado1
estado2
evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado
estado quando neste ldquoestadordquo proacuteximo
estado determinadoexclusivamente pelo
proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel de dados introduccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 24
bull rdt10 ndash Um protocolo para um canal completamente confiaacutevel
Transferecircncia confiaacutevel de dados sobre um canal perfeitamente confiaacutevel rdt10
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 25
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
rdt20 ndash Um protocolo para um canal com erros de bits Base dos protocolos ARQ (Automatic Repeat Request)
Detecccedilatildeo de erros (mecanismo do UDP)
Realimentaccedilatildeo do destinataacuterio (ACK ou NACK)
Retransmissatildeobull Pare e espere
Transport Layer 3-26
rdt20 FSM specification
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) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from belowsender
receiverrdt_send(data)
Transport Layer 3-27
rdt20 operation with no errors
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Transport Layer 3-28
rdt20 error scenario
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 29
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
bull O que acontece se o pacote ACK ou NAK estiver corrompido
bull Vamos considerar trecircs possibilidade para ACKs ou NAKs corrompidos1 Ser humano -- A ldquoditadordquo B ldquoOKrdquo ou ldquoRepita por favorrdquo ==gt
A natildeo entende ldquoO que foi que vocecirc disserdquo infinito Peacutessimo2 Bits de soma de verificaccedilatildeo de tal modo que permita ao remetente a
recuperaccedilatildeo de erros de bits Muito bom mas serve somente para canais com erro de bits e natildeo perda de pacotes
3 O Remetente reenvia o pacote de dados corrente quando receber um pacote ACK ou NAK truncado ==gt pode gerar pacotes duplicados Como o destinataacuterio sabe se o pacote conteacutem novos dados ou eacute uma retransmissatildeo ==gt nuacutemero de sequecircncia
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 30
bull rdt21 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 31
bull rdt21 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 32
bull O protocolo rdt21 usa tanto o reconhecimento positivo como negativo do remetente ao destinataacuterio pacote fora de ordem ==gt ACK pacote corrompido ==gt NAK
bull Podemos conseguir o mesmo efeito se ao inveacutes de enviarmos um NAK enviarmos um ACK do uacuteltimo corretamente recebido Ou seja ACK tambeacutem numerado
bull ACKs duplicados indicam ao remetente que o destinataacuterio natildeo recebeu corretamente o pacote seguinte agravequele do ACK duplo
bull rdt22 deve enviar o nuacutemero de sequecircncia no ACK
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21-2
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 33
bull rdt22 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 34
bull rdt22 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 35
bull Duas preocupaccedilotildees adicionais devem ser tratadas pelo protocolo1 Como detectar perda de pacotes2 O que fazer quando haacute perdas
bull As teacutecnicas jaacute discutidas atendem a segunda questatildeobull E para a primeira questatildeobull Suponha que o remetente transmita um pacote e que esse
pacote ou seu ACK seja perdido Nenhuma resposta chegaraacute ao remetente Se o remetente natildeo quiser esperar ==gt retransmite o pacote
bull Mas quanto o remetente precisa esperar para ter certeza que algo foi perdido Esperar um RTT Eacute muito difiacutecil estimar o RTT quanto mais ter certeza
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 36
bull Aleacutem disso o ideal seria que o protocolo se recuperasse da perda assim que possiacutevel
bull Na praacutetica O remetente faz uma escolha ponderada de um RTT provaacutevel mas natildeo
garantido que a perda tivesse acontecido Se natildeo receber um ACK nesse periacuteodo retransmite o pacote
bull Se o pacote sofrer um atraso longo pode haver retransmissatildeo mesmo que o pacote ou ACK natildeo tenham sido perdidos Possibilidade de pacotes de dados duplicados
bull Para implementar um mecanismo de retransmissatildeo com base no tempo eacute necessaacuterio um temporizador de contagem regressiva Accedilotildees iniciar atender parar
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 37
bull rdt30 remetente
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Transport Layer 3-38
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
pkt1
ack1
ack0
ack0
(a) no loss
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(b) packet loss
pkt1X
loss
pkt1timeout
resend pkt1
rdt30 in action
Transport Layer 3-39
rdt30 in action
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(c) ACK loss
ack1X
loss
pkt1timeout
resend pkt1
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) premature timeout delayed ACK
pkt1timeout
resend pkt1
ack1
send ack1
send pkt0rcv ack1
pkt0
ack1
ack0
send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
rcv pkt0
send ack0(detect duplicate)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 42
bull No coraccedilatildeo do problema do desempenho do rdt30 estaacute o fato de ele ser um protocolo do tipo pare e espere
bull Um protocolo pare e espere em operaccedilatildeo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 43
U remet =
0008
30008 = 000027
microseconds
L R RTT + L R
=
Desempenho do rdt30
rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso pacote 8000 bits
U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando
Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos Soluccedilatildeo
ndosmicrosseguR
Ldtrans 8
bps10
bits80009
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 44
Um protocolo com paralelismo em operaccedilatildeo
bull O ACK recebido eacute de que pacote
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 45
bull Envio com pare e espere
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 46
bull Envio com paralelismo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Aumento de utilizaccedilatildeopor fator de 3
U remet =
0024 30008
= 00008 microseconds
3 L R RTT + L R
=
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 13
bull O UDP definido no [RFC 768] faz apenas quase tatildeo pouco quanto um protocolo de transporte pode fazer
bull Agrave parte sua funccedilatildeo de multiplexaccedilatildeodemultiplexaccedilatildeo e de alguma verificaccedilatildeo de erros simples ele nada adiciona ao IP
bull Se o desenvolvedor de aplicaccedilatildeo escolher o UDP em vez do TCP a aplicaccedilatildeo estaraacute ldquofalandordquo quase diretamente com o IP
bull O UDP eacute natildeo orientado para conexatildeo Natildeo haacute a apresentaccedilatildeo entre as entidades remetentes e destinataacuterias
Transporte natildeo orientado para conexatildeo UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 14
bull Melhor controle no niacutevel de aplicaccedilatildeo sobre quais dados satildeo enviados e quando menor atraso
bull Natildeo haacute estabelecimento de conexatildeo menor atrasobull Natildeo haacute estados de conexatildeo buffers paracircmetros de
controle de congestionamento nuacutemero de sequecircncia Menor ldquocustordquo
bull Pequeno excesso de cabeccedilalho de pacotes 8 bytes de excesso TCP 20 bytes Menor ldquocustordquo
bull Sem controle de congestionamento do TCP ==gt isso pode implicar em ldquocolapsordquo na rede
bull Eacute possiacutevel uma aplicaccedilatildeo ter transferecircncia confiaacutevel de dados usando UDP
Por que usa-se UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 15
bull Aplicaccedilotildees populares da Internet e seus protocolos de transporte subjacentes
Transporte natildeo orientado para conexatildeo UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 16
bull Estrutura do segmento UDP
Estrutura do segmento UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 17
bull A soma de verificaccedilatildeo UDP serve para detectar erros em todo o segmento
bull Suponha que tenhamos as seguintes trecircs palavras de 16 bits
bull A soma das duas primeiras eacute
bull Adicionando a terceira palavra agrave soma anterior temos
Soma de verificaccedilatildeo UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 18
bull Note que a uacuteltima adiccedilatildeo teve um ldquovai umrdquo no bit mais significativo que foi somado ao bit menos significativo
bull Complemento de 1 0 ==gt 1 1 ==gt 0bull Fazendo o complemento de 1 da soma final
1011010100111101 Esta eacute a soma de verificaccedilatildeobull No destinataacuterio todas as 4 palavras recebidas de 16 bits satildeo
somadas 1111 ==gt Pacote correto algum bit em 0 ==gt algum erro foi introduzido no pacote
bull Por que soma de verificaccedilatildeo no UDPbull Algumas camadas de enlace por exemplo Ethernet fornecem
soma de verificaccedilatildeobull mas nem todas e aleacutem disso um roteador poderia introduzir
algum errobull UDP verifica erros fim a fim
Soma de verificaccedilatildeo UDP
Transport Layer 3-19
Principles of reliable data transfer important in application transport link layers
top-10 list of important networking topics
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
Transport Layer 3-20
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
Principles of reliable data transfer important in application transport link layers
top-10 list of important networking topics
Transport Layer 3-21
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
important in application transport link layers top-10 list of important networking topics
Principles of reliable data transfer
Transport Layer 3-22
sendside
receiveside
rdt_send() called from above (eg by app) Passed data to deliver to receiver upper layer
udt_send() called by rdtto transfer packet over unreliable channel to receiver
rdt_rcv() called when packet arrives on rcv-side of channel
deliver_data() called by rdt to deliver data to upper
Principles of reliable data transfer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 23
vamos desenvolver de forma incremental os lados remetente e destinataacuterio do
protocolo de transferecircncia confiaacutevel de dados (rdt) considerar apenas a transf de dados unidirecional Bidirecional eacute soacute
duplicar a estruturandash mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees
usar maacutequinas de estado finito (FSM) para especificar remetente e destinataacuterio
estado1
estado2
evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado
estado quando neste ldquoestadordquo proacuteximo
estado determinadoexclusivamente pelo
proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel de dados introduccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 24
bull rdt10 ndash Um protocolo para um canal completamente confiaacutevel
Transferecircncia confiaacutevel de dados sobre um canal perfeitamente confiaacutevel rdt10
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 25
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
rdt20 ndash Um protocolo para um canal com erros de bits Base dos protocolos ARQ (Automatic Repeat Request)
Detecccedilatildeo de erros (mecanismo do UDP)
Realimentaccedilatildeo do destinataacuterio (ACK ou NACK)
Retransmissatildeobull Pare e espere
Transport Layer 3-26
rdt20 FSM specification
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) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from belowsender
receiverrdt_send(data)
Transport Layer 3-27
rdt20 operation with no errors
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Transport Layer 3-28
rdt20 error scenario
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 29
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
bull O que acontece se o pacote ACK ou NAK estiver corrompido
bull Vamos considerar trecircs possibilidade para ACKs ou NAKs corrompidos1 Ser humano -- A ldquoditadordquo B ldquoOKrdquo ou ldquoRepita por favorrdquo ==gt
A natildeo entende ldquoO que foi que vocecirc disserdquo infinito Peacutessimo2 Bits de soma de verificaccedilatildeo de tal modo que permita ao remetente a
recuperaccedilatildeo de erros de bits Muito bom mas serve somente para canais com erro de bits e natildeo perda de pacotes
3 O Remetente reenvia o pacote de dados corrente quando receber um pacote ACK ou NAK truncado ==gt pode gerar pacotes duplicados Como o destinataacuterio sabe se o pacote conteacutem novos dados ou eacute uma retransmissatildeo ==gt nuacutemero de sequecircncia
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 30
bull rdt21 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 31
bull rdt21 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 32
bull O protocolo rdt21 usa tanto o reconhecimento positivo como negativo do remetente ao destinataacuterio pacote fora de ordem ==gt ACK pacote corrompido ==gt NAK
bull Podemos conseguir o mesmo efeito se ao inveacutes de enviarmos um NAK enviarmos um ACK do uacuteltimo corretamente recebido Ou seja ACK tambeacutem numerado
bull ACKs duplicados indicam ao remetente que o destinataacuterio natildeo recebeu corretamente o pacote seguinte agravequele do ACK duplo
bull rdt22 deve enviar o nuacutemero de sequecircncia no ACK
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21-2
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 33
bull rdt22 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 34
bull rdt22 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 35
bull Duas preocupaccedilotildees adicionais devem ser tratadas pelo protocolo1 Como detectar perda de pacotes2 O que fazer quando haacute perdas
bull As teacutecnicas jaacute discutidas atendem a segunda questatildeobull E para a primeira questatildeobull Suponha que o remetente transmita um pacote e que esse
pacote ou seu ACK seja perdido Nenhuma resposta chegaraacute ao remetente Se o remetente natildeo quiser esperar ==gt retransmite o pacote
bull Mas quanto o remetente precisa esperar para ter certeza que algo foi perdido Esperar um RTT Eacute muito difiacutecil estimar o RTT quanto mais ter certeza
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 36
bull Aleacutem disso o ideal seria que o protocolo se recuperasse da perda assim que possiacutevel
bull Na praacutetica O remetente faz uma escolha ponderada de um RTT provaacutevel mas natildeo
garantido que a perda tivesse acontecido Se natildeo receber um ACK nesse periacuteodo retransmite o pacote
bull Se o pacote sofrer um atraso longo pode haver retransmissatildeo mesmo que o pacote ou ACK natildeo tenham sido perdidos Possibilidade de pacotes de dados duplicados
bull Para implementar um mecanismo de retransmissatildeo com base no tempo eacute necessaacuterio um temporizador de contagem regressiva Accedilotildees iniciar atender parar
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 37
bull rdt30 remetente
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Transport Layer 3-38
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
pkt1
ack1
ack0
ack0
(a) no loss
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(b) packet loss
pkt1X
loss
pkt1timeout
resend pkt1
rdt30 in action
Transport Layer 3-39
rdt30 in action
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(c) ACK loss
ack1X
loss
pkt1timeout
resend pkt1
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) premature timeout delayed ACK
pkt1timeout
resend pkt1
ack1
send ack1
send pkt0rcv ack1
pkt0
ack1
ack0
send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
rcv pkt0
send ack0(detect duplicate)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 42
bull No coraccedilatildeo do problema do desempenho do rdt30 estaacute o fato de ele ser um protocolo do tipo pare e espere
bull Um protocolo pare e espere em operaccedilatildeo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 43
U remet =
0008
30008 = 000027
microseconds
L R RTT + L R
=
Desempenho do rdt30
rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso pacote 8000 bits
U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando
Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos Soluccedilatildeo
ndosmicrosseguR
Ldtrans 8
bps10
bits80009
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 44
Um protocolo com paralelismo em operaccedilatildeo
bull O ACK recebido eacute de que pacote
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 45
bull Envio com pare e espere
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 46
bull Envio com paralelismo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Aumento de utilizaccedilatildeopor fator de 3
U remet =
0024 30008
= 00008 microseconds
3 L R RTT + L R
=
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 14
bull Melhor controle no niacutevel de aplicaccedilatildeo sobre quais dados satildeo enviados e quando menor atraso
bull Natildeo haacute estabelecimento de conexatildeo menor atrasobull Natildeo haacute estados de conexatildeo buffers paracircmetros de
controle de congestionamento nuacutemero de sequecircncia Menor ldquocustordquo
bull Pequeno excesso de cabeccedilalho de pacotes 8 bytes de excesso TCP 20 bytes Menor ldquocustordquo
bull Sem controle de congestionamento do TCP ==gt isso pode implicar em ldquocolapsordquo na rede
bull Eacute possiacutevel uma aplicaccedilatildeo ter transferecircncia confiaacutevel de dados usando UDP
Por que usa-se UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 15
bull Aplicaccedilotildees populares da Internet e seus protocolos de transporte subjacentes
Transporte natildeo orientado para conexatildeo UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 16
bull Estrutura do segmento UDP
Estrutura do segmento UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 17
bull A soma de verificaccedilatildeo UDP serve para detectar erros em todo o segmento
bull Suponha que tenhamos as seguintes trecircs palavras de 16 bits
bull A soma das duas primeiras eacute
bull Adicionando a terceira palavra agrave soma anterior temos
Soma de verificaccedilatildeo UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 18
bull Note que a uacuteltima adiccedilatildeo teve um ldquovai umrdquo no bit mais significativo que foi somado ao bit menos significativo
bull Complemento de 1 0 ==gt 1 1 ==gt 0bull Fazendo o complemento de 1 da soma final
1011010100111101 Esta eacute a soma de verificaccedilatildeobull No destinataacuterio todas as 4 palavras recebidas de 16 bits satildeo
somadas 1111 ==gt Pacote correto algum bit em 0 ==gt algum erro foi introduzido no pacote
bull Por que soma de verificaccedilatildeo no UDPbull Algumas camadas de enlace por exemplo Ethernet fornecem
soma de verificaccedilatildeobull mas nem todas e aleacutem disso um roteador poderia introduzir
algum errobull UDP verifica erros fim a fim
Soma de verificaccedilatildeo UDP
Transport Layer 3-19
Principles of reliable data transfer important in application transport link layers
top-10 list of important networking topics
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
Transport Layer 3-20
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
Principles of reliable data transfer important in application transport link layers
top-10 list of important networking topics
Transport Layer 3-21
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
important in application transport link layers top-10 list of important networking topics
Principles of reliable data transfer
Transport Layer 3-22
sendside
receiveside
rdt_send() called from above (eg by app) Passed data to deliver to receiver upper layer
udt_send() called by rdtto transfer packet over unreliable channel to receiver
rdt_rcv() called when packet arrives on rcv-side of channel
deliver_data() called by rdt to deliver data to upper
Principles of reliable data transfer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 23
vamos desenvolver de forma incremental os lados remetente e destinataacuterio do
protocolo de transferecircncia confiaacutevel de dados (rdt) considerar apenas a transf de dados unidirecional Bidirecional eacute soacute
duplicar a estruturandash mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees
usar maacutequinas de estado finito (FSM) para especificar remetente e destinataacuterio
estado1
estado2
evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado
estado quando neste ldquoestadordquo proacuteximo
estado determinadoexclusivamente pelo
proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel de dados introduccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 24
bull rdt10 ndash Um protocolo para um canal completamente confiaacutevel
Transferecircncia confiaacutevel de dados sobre um canal perfeitamente confiaacutevel rdt10
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 25
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
rdt20 ndash Um protocolo para um canal com erros de bits Base dos protocolos ARQ (Automatic Repeat Request)
Detecccedilatildeo de erros (mecanismo do UDP)
Realimentaccedilatildeo do destinataacuterio (ACK ou NACK)
Retransmissatildeobull Pare e espere
Transport Layer 3-26
rdt20 FSM specification
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) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from belowsender
receiverrdt_send(data)
Transport Layer 3-27
rdt20 operation with no errors
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Transport Layer 3-28
rdt20 error scenario
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 29
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
bull O que acontece se o pacote ACK ou NAK estiver corrompido
bull Vamos considerar trecircs possibilidade para ACKs ou NAKs corrompidos1 Ser humano -- A ldquoditadordquo B ldquoOKrdquo ou ldquoRepita por favorrdquo ==gt
A natildeo entende ldquoO que foi que vocecirc disserdquo infinito Peacutessimo2 Bits de soma de verificaccedilatildeo de tal modo que permita ao remetente a
recuperaccedilatildeo de erros de bits Muito bom mas serve somente para canais com erro de bits e natildeo perda de pacotes
3 O Remetente reenvia o pacote de dados corrente quando receber um pacote ACK ou NAK truncado ==gt pode gerar pacotes duplicados Como o destinataacuterio sabe se o pacote conteacutem novos dados ou eacute uma retransmissatildeo ==gt nuacutemero de sequecircncia
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 30
bull rdt21 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 31
bull rdt21 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 32
bull O protocolo rdt21 usa tanto o reconhecimento positivo como negativo do remetente ao destinataacuterio pacote fora de ordem ==gt ACK pacote corrompido ==gt NAK
bull Podemos conseguir o mesmo efeito se ao inveacutes de enviarmos um NAK enviarmos um ACK do uacuteltimo corretamente recebido Ou seja ACK tambeacutem numerado
bull ACKs duplicados indicam ao remetente que o destinataacuterio natildeo recebeu corretamente o pacote seguinte agravequele do ACK duplo
bull rdt22 deve enviar o nuacutemero de sequecircncia no ACK
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21-2
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 33
bull rdt22 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 34
bull rdt22 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 35
bull Duas preocupaccedilotildees adicionais devem ser tratadas pelo protocolo1 Como detectar perda de pacotes2 O que fazer quando haacute perdas
bull As teacutecnicas jaacute discutidas atendem a segunda questatildeobull E para a primeira questatildeobull Suponha que o remetente transmita um pacote e que esse
pacote ou seu ACK seja perdido Nenhuma resposta chegaraacute ao remetente Se o remetente natildeo quiser esperar ==gt retransmite o pacote
bull Mas quanto o remetente precisa esperar para ter certeza que algo foi perdido Esperar um RTT Eacute muito difiacutecil estimar o RTT quanto mais ter certeza
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 36
bull Aleacutem disso o ideal seria que o protocolo se recuperasse da perda assim que possiacutevel
bull Na praacutetica O remetente faz uma escolha ponderada de um RTT provaacutevel mas natildeo
garantido que a perda tivesse acontecido Se natildeo receber um ACK nesse periacuteodo retransmite o pacote
bull Se o pacote sofrer um atraso longo pode haver retransmissatildeo mesmo que o pacote ou ACK natildeo tenham sido perdidos Possibilidade de pacotes de dados duplicados
bull Para implementar um mecanismo de retransmissatildeo com base no tempo eacute necessaacuterio um temporizador de contagem regressiva Accedilotildees iniciar atender parar
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 37
bull rdt30 remetente
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Transport Layer 3-38
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
pkt1
ack1
ack0
ack0
(a) no loss
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(b) packet loss
pkt1X
loss
pkt1timeout
resend pkt1
rdt30 in action
Transport Layer 3-39
rdt30 in action
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(c) ACK loss
ack1X
loss
pkt1timeout
resend pkt1
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) premature timeout delayed ACK
pkt1timeout
resend pkt1
ack1
send ack1
send pkt0rcv ack1
pkt0
ack1
ack0
send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
rcv pkt0
send ack0(detect duplicate)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 42
bull No coraccedilatildeo do problema do desempenho do rdt30 estaacute o fato de ele ser um protocolo do tipo pare e espere
bull Um protocolo pare e espere em operaccedilatildeo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 43
U remet =
0008
30008 = 000027
microseconds
L R RTT + L R
=
Desempenho do rdt30
rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso pacote 8000 bits
U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando
Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos Soluccedilatildeo
ndosmicrosseguR
Ldtrans 8
bps10
bits80009
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 44
Um protocolo com paralelismo em operaccedilatildeo
bull O ACK recebido eacute de que pacote
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 45
bull Envio com pare e espere
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 46
bull Envio com paralelismo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Aumento de utilizaccedilatildeopor fator de 3
U remet =
0024 30008
= 00008 microseconds
3 L R RTT + L R
=
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 15
bull Aplicaccedilotildees populares da Internet e seus protocolos de transporte subjacentes
Transporte natildeo orientado para conexatildeo UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 16
bull Estrutura do segmento UDP
Estrutura do segmento UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 17
bull A soma de verificaccedilatildeo UDP serve para detectar erros em todo o segmento
bull Suponha que tenhamos as seguintes trecircs palavras de 16 bits
bull A soma das duas primeiras eacute
bull Adicionando a terceira palavra agrave soma anterior temos
Soma de verificaccedilatildeo UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 18
bull Note que a uacuteltima adiccedilatildeo teve um ldquovai umrdquo no bit mais significativo que foi somado ao bit menos significativo
bull Complemento de 1 0 ==gt 1 1 ==gt 0bull Fazendo o complemento de 1 da soma final
1011010100111101 Esta eacute a soma de verificaccedilatildeobull No destinataacuterio todas as 4 palavras recebidas de 16 bits satildeo
somadas 1111 ==gt Pacote correto algum bit em 0 ==gt algum erro foi introduzido no pacote
bull Por que soma de verificaccedilatildeo no UDPbull Algumas camadas de enlace por exemplo Ethernet fornecem
soma de verificaccedilatildeobull mas nem todas e aleacutem disso um roteador poderia introduzir
algum errobull UDP verifica erros fim a fim
Soma de verificaccedilatildeo UDP
Transport Layer 3-19
Principles of reliable data transfer important in application transport link layers
top-10 list of important networking topics
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
Transport Layer 3-20
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
Principles of reliable data transfer important in application transport link layers
top-10 list of important networking topics
Transport Layer 3-21
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
important in application transport link layers top-10 list of important networking topics
Principles of reliable data transfer
Transport Layer 3-22
sendside
receiveside
rdt_send() called from above (eg by app) Passed data to deliver to receiver upper layer
udt_send() called by rdtto transfer packet over unreliable channel to receiver
rdt_rcv() called when packet arrives on rcv-side of channel
deliver_data() called by rdt to deliver data to upper
Principles of reliable data transfer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 23
vamos desenvolver de forma incremental os lados remetente e destinataacuterio do
protocolo de transferecircncia confiaacutevel de dados (rdt) considerar apenas a transf de dados unidirecional Bidirecional eacute soacute
duplicar a estruturandash mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees
usar maacutequinas de estado finito (FSM) para especificar remetente e destinataacuterio
estado1
estado2
evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado
estado quando neste ldquoestadordquo proacuteximo
estado determinadoexclusivamente pelo
proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel de dados introduccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 24
bull rdt10 ndash Um protocolo para um canal completamente confiaacutevel
Transferecircncia confiaacutevel de dados sobre um canal perfeitamente confiaacutevel rdt10
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 25
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
rdt20 ndash Um protocolo para um canal com erros de bits Base dos protocolos ARQ (Automatic Repeat Request)
Detecccedilatildeo de erros (mecanismo do UDP)
Realimentaccedilatildeo do destinataacuterio (ACK ou NACK)
Retransmissatildeobull Pare e espere
Transport Layer 3-26
rdt20 FSM specification
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) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from belowsender
receiverrdt_send(data)
Transport Layer 3-27
rdt20 operation with no errors
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Transport Layer 3-28
rdt20 error scenario
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 29
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
bull O que acontece se o pacote ACK ou NAK estiver corrompido
bull Vamos considerar trecircs possibilidade para ACKs ou NAKs corrompidos1 Ser humano -- A ldquoditadordquo B ldquoOKrdquo ou ldquoRepita por favorrdquo ==gt
A natildeo entende ldquoO que foi que vocecirc disserdquo infinito Peacutessimo2 Bits de soma de verificaccedilatildeo de tal modo que permita ao remetente a
recuperaccedilatildeo de erros de bits Muito bom mas serve somente para canais com erro de bits e natildeo perda de pacotes
3 O Remetente reenvia o pacote de dados corrente quando receber um pacote ACK ou NAK truncado ==gt pode gerar pacotes duplicados Como o destinataacuterio sabe se o pacote conteacutem novos dados ou eacute uma retransmissatildeo ==gt nuacutemero de sequecircncia
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 30
bull rdt21 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 31
bull rdt21 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 32
bull O protocolo rdt21 usa tanto o reconhecimento positivo como negativo do remetente ao destinataacuterio pacote fora de ordem ==gt ACK pacote corrompido ==gt NAK
bull Podemos conseguir o mesmo efeito se ao inveacutes de enviarmos um NAK enviarmos um ACK do uacuteltimo corretamente recebido Ou seja ACK tambeacutem numerado
bull ACKs duplicados indicam ao remetente que o destinataacuterio natildeo recebeu corretamente o pacote seguinte agravequele do ACK duplo
bull rdt22 deve enviar o nuacutemero de sequecircncia no ACK
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21-2
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 33
bull rdt22 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 34
bull rdt22 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 35
bull Duas preocupaccedilotildees adicionais devem ser tratadas pelo protocolo1 Como detectar perda de pacotes2 O que fazer quando haacute perdas
bull As teacutecnicas jaacute discutidas atendem a segunda questatildeobull E para a primeira questatildeobull Suponha que o remetente transmita um pacote e que esse
pacote ou seu ACK seja perdido Nenhuma resposta chegaraacute ao remetente Se o remetente natildeo quiser esperar ==gt retransmite o pacote
bull Mas quanto o remetente precisa esperar para ter certeza que algo foi perdido Esperar um RTT Eacute muito difiacutecil estimar o RTT quanto mais ter certeza
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 36
bull Aleacutem disso o ideal seria que o protocolo se recuperasse da perda assim que possiacutevel
bull Na praacutetica O remetente faz uma escolha ponderada de um RTT provaacutevel mas natildeo
garantido que a perda tivesse acontecido Se natildeo receber um ACK nesse periacuteodo retransmite o pacote
bull Se o pacote sofrer um atraso longo pode haver retransmissatildeo mesmo que o pacote ou ACK natildeo tenham sido perdidos Possibilidade de pacotes de dados duplicados
bull Para implementar um mecanismo de retransmissatildeo com base no tempo eacute necessaacuterio um temporizador de contagem regressiva Accedilotildees iniciar atender parar
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 37
bull rdt30 remetente
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Transport Layer 3-38
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
pkt1
ack1
ack0
ack0
(a) no loss
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(b) packet loss
pkt1X
loss
pkt1timeout
resend pkt1
rdt30 in action
Transport Layer 3-39
rdt30 in action
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(c) ACK loss
ack1X
loss
pkt1timeout
resend pkt1
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) premature timeout delayed ACK
pkt1timeout
resend pkt1
ack1
send ack1
send pkt0rcv ack1
pkt0
ack1
ack0
send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
rcv pkt0
send ack0(detect duplicate)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 42
bull No coraccedilatildeo do problema do desempenho do rdt30 estaacute o fato de ele ser um protocolo do tipo pare e espere
bull Um protocolo pare e espere em operaccedilatildeo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 43
U remet =
0008
30008 = 000027
microseconds
L R RTT + L R
=
Desempenho do rdt30
rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso pacote 8000 bits
U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando
Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos Soluccedilatildeo
ndosmicrosseguR
Ldtrans 8
bps10
bits80009
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 44
Um protocolo com paralelismo em operaccedilatildeo
bull O ACK recebido eacute de que pacote
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 45
bull Envio com pare e espere
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 46
bull Envio com paralelismo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Aumento de utilizaccedilatildeopor fator de 3
U remet =
0024 30008
= 00008 microseconds
3 L R RTT + L R
=
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 16
bull Estrutura do segmento UDP
Estrutura do segmento UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 17
bull A soma de verificaccedilatildeo UDP serve para detectar erros em todo o segmento
bull Suponha que tenhamos as seguintes trecircs palavras de 16 bits
bull A soma das duas primeiras eacute
bull Adicionando a terceira palavra agrave soma anterior temos
Soma de verificaccedilatildeo UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 18
bull Note que a uacuteltima adiccedilatildeo teve um ldquovai umrdquo no bit mais significativo que foi somado ao bit menos significativo
bull Complemento de 1 0 ==gt 1 1 ==gt 0bull Fazendo o complemento de 1 da soma final
1011010100111101 Esta eacute a soma de verificaccedilatildeobull No destinataacuterio todas as 4 palavras recebidas de 16 bits satildeo
somadas 1111 ==gt Pacote correto algum bit em 0 ==gt algum erro foi introduzido no pacote
bull Por que soma de verificaccedilatildeo no UDPbull Algumas camadas de enlace por exemplo Ethernet fornecem
soma de verificaccedilatildeobull mas nem todas e aleacutem disso um roteador poderia introduzir
algum errobull UDP verifica erros fim a fim
Soma de verificaccedilatildeo UDP
Transport Layer 3-19
Principles of reliable data transfer important in application transport link layers
top-10 list of important networking topics
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
Transport Layer 3-20
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
Principles of reliable data transfer important in application transport link layers
top-10 list of important networking topics
Transport Layer 3-21
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
important in application transport link layers top-10 list of important networking topics
Principles of reliable data transfer
Transport Layer 3-22
sendside
receiveside
rdt_send() called from above (eg by app) Passed data to deliver to receiver upper layer
udt_send() called by rdtto transfer packet over unreliable channel to receiver
rdt_rcv() called when packet arrives on rcv-side of channel
deliver_data() called by rdt to deliver data to upper
Principles of reliable data transfer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 23
vamos desenvolver de forma incremental os lados remetente e destinataacuterio do
protocolo de transferecircncia confiaacutevel de dados (rdt) considerar apenas a transf de dados unidirecional Bidirecional eacute soacute
duplicar a estruturandash mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees
usar maacutequinas de estado finito (FSM) para especificar remetente e destinataacuterio
estado1
estado2
evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado
estado quando neste ldquoestadordquo proacuteximo
estado determinadoexclusivamente pelo
proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel de dados introduccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 24
bull rdt10 ndash Um protocolo para um canal completamente confiaacutevel
Transferecircncia confiaacutevel de dados sobre um canal perfeitamente confiaacutevel rdt10
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 25
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
rdt20 ndash Um protocolo para um canal com erros de bits Base dos protocolos ARQ (Automatic Repeat Request)
Detecccedilatildeo de erros (mecanismo do UDP)
Realimentaccedilatildeo do destinataacuterio (ACK ou NACK)
Retransmissatildeobull Pare e espere
Transport Layer 3-26
rdt20 FSM specification
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) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from belowsender
receiverrdt_send(data)
Transport Layer 3-27
rdt20 operation with no errors
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Transport Layer 3-28
rdt20 error scenario
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 29
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
bull O que acontece se o pacote ACK ou NAK estiver corrompido
bull Vamos considerar trecircs possibilidade para ACKs ou NAKs corrompidos1 Ser humano -- A ldquoditadordquo B ldquoOKrdquo ou ldquoRepita por favorrdquo ==gt
A natildeo entende ldquoO que foi que vocecirc disserdquo infinito Peacutessimo2 Bits de soma de verificaccedilatildeo de tal modo que permita ao remetente a
recuperaccedilatildeo de erros de bits Muito bom mas serve somente para canais com erro de bits e natildeo perda de pacotes
3 O Remetente reenvia o pacote de dados corrente quando receber um pacote ACK ou NAK truncado ==gt pode gerar pacotes duplicados Como o destinataacuterio sabe se o pacote conteacutem novos dados ou eacute uma retransmissatildeo ==gt nuacutemero de sequecircncia
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 30
bull rdt21 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 31
bull rdt21 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 32
bull O protocolo rdt21 usa tanto o reconhecimento positivo como negativo do remetente ao destinataacuterio pacote fora de ordem ==gt ACK pacote corrompido ==gt NAK
bull Podemos conseguir o mesmo efeito se ao inveacutes de enviarmos um NAK enviarmos um ACK do uacuteltimo corretamente recebido Ou seja ACK tambeacutem numerado
bull ACKs duplicados indicam ao remetente que o destinataacuterio natildeo recebeu corretamente o pacote seguinte agravequele do ACK duplo
bull rdt22 deve enviar o nuacutemero de sequecircncia no ACK
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21-2
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 33
bull rdt22 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 34
bull rdt22 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 35
bull Duas preocupaccedilotildees adicionais devem ser tratadas pelo protocolo1 Como detectar perda de pacotes2 O que fazer quando haacute perdas
bull As teacutecnicas jaacute discutidas atendem a segunda questatildeobull E para a primeira questatildeobull Suponha que o remetente transmita um pacote e que esse
pacote ou seu ACK seja perdido Nenhuma resposta chegaraacute ao remetente Se o remetente natildeo quiser esperar ==gt retransmite o pacote
bull Mas quanto o remetente precisa esperar para ter certeza que algo foi perdido Esperar um RTT Eacute muito difiacutecil estimar o RTT quanto mais ter certeza
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 36
bull Aleacutem disso o ideal seria que o protocolo se recuperasse da perda assim que possiacutevel
bull Na praacutetica O remetente faz uma escolha ponderada de um RTT provaacutevel mas natildeo
garantido que a perda tivesse acontecido Se natildeo receber um ACK nesse periacuteodo retransmite o pacote
bull Se o pacote sofrer um atraso longo pode haver retransmissatildeo mesmo que o pacote ou ACK natildeo tenham sido perdidos Possibilidade de pacotes de dados duplicados
bull Para implementar um mecanismo de retransmissatildeo com base no tempo eacute necessaacuterio um temporizador de contagem regressiva Accedilotildees iniciar atender parar
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 37
bull rdt30 remetente
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Transport Layer 3-38
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
pkt1
ack1
ack0
ack0
(a) no loss
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(b) packet loss
pkt1X
loss
pkt1timeout
resend pkt1
rdt30 in action
Transport Layer 3-39
rdt30 in action
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(c) ACK loss
ack1X
loss
pkt1timeout
resend pkt1
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) premature timeout delayed ACK
pkt1timeout
resend pkt1
ack1
send ack1
send pkt0rcv ack1
pkt0
ack1
ack0
send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
rcv pkt0
send ack0(detect duplicate)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 42
bull No coraccedilatildeo do problema do desempenho do rdt30 estaacute o fato de ele ser um protocolo do tipo pare e espere
bull Um protocolo pare e espere em operaccedilatildeo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 43
U remet =
0008
30008 = 000027
microseconds
L R RTT + L R
=
Desempenho do rdt30
rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso pacote 8000 bits
U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando
Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos Soluccedilatildeo
ndosmicrosseguR
Ldtrans 8
bps10
bits80009
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 44
Um protocolo com paralelismo em operaccedilatildeo
bull O ACK recebido eacute de que pacote
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 45
bull Envio com pare e espere
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 46
bull Envio com paralelismo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Aumento de utilizaccedilatildeopor fator de 3
U remet =
0024 30008
= 00008 microseconds
3 L R RTT + L R
=
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 17
bull A soma de verificaccedilatildeo UDP serve para detectar erros em todo o segmento
bull Suponha que tenhamos as seguintes trecircs palavras de 16 bits
bull A soma das duas primeiras eacute
bull Adicionando a terceira palavra agrave soma anterior temos
Soma de verificaccedilatildeo UDP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 18
bull Note que a uacuteltima adiccedilatildeo teve um ldquovai umrdquo no bit mais significativo que foi somado ao bit menos significativo
bull Complemento de 1 0 ==gt 1 1 ==gt 0bull Fazendo o complemento de 1 da soma final
1011010100111101 Esta eacute a soma de verificaccedilatildeobull No destinataacuterio todas as 4 palavras recebidas de 16 bits satildeo
somadas 1111 ==gt Pacote correto algum bit em 0 ==gt algum erro foi introduzido no pacote
bull Por que soma de verificaccedilatildeo no UDPbull Algumas camadas de enlace por exemplo Ethernet fornecem
soma de verificaccedilatildeobull mas nem todas e aleacutem disso um roteador poderia introduzir
algum errobull UDP verifica erros fim a fim
Soma de verificaccedilatildeo UDP
Transport Layer 3-19
Principles of reliable data transfer important in application transport link layers
top-10 list of important networking topics
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
Transport Layer 3-20
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
Principles of reliable data transfer important in application transport link layers
top-10 list of important networking topics
Transport Layer 3-21
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
important in application transport link layers top-10 list of important networking topics
Principles of reliable data transfer
Transport Layer 3-22
sendside
receiveside
rdt_send() called from above (eg by app) Passed data to deliver to receiver upper layer
udt_send() called by rdtto transfer packet over unreliable channel to receiver
rdt_rcv() called when packet arrives on rcv-side of channel
deliver_data() called by rdt to deliver data to upper
Principles of reliable data transfer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 23
vamos desenvolver de forma incremental os lados remetente e destinataacuterio do
protocolo de transferecircncia confiaacutevel de dados (rdt) considerar apenas a transf de dados unidirecional Bidirecional eacute soacute
duplicar a estruturandash mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees
usar maacutequinas de estado finito (FSM) para especificar remetente e destinataacuterio
estado1
estado2
evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado
estado quando neste ldquoestadordquo proacuteximo
estado determinadoexclusivamente pelo
proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel de dados introduccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 24
bull rdt10 ndash Um protocolo para um canal completamente confiaacutevel
Transferecircncia confiaacutevel de dados sobre um canal perfeitamente confiaacutevel rdt10
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 25
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
rdt20 ndash Um protocolo para um canal com erros de bits Base dos protocolos ARQ (Automatic Repeat Request)
Detecccedilatildeo de erros (mecanismo do UDP)
Realimentaccedilatildeo do destinataacuterio (ACK ou NACK)
Retransmissatildeobull Pare e espere
Transport Layer 3-26
rdt20 FSM specification
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) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from belowsender
receiverrdt_send(data)
Transport Layer 3-27
rdt20 operation with no errors
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Transport Layer 3-28
rdt20 error scenario
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 29
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
bull O que acontece se o pacote ACK ou NAK estiver corrompido
bull Vamos considerar trecircs possibilidade para ACKs ou NAKs corrompidos1 Ser humano -- A ldquoditadordquo B ldquoOKrdquo ou ldquoRepita por favorrdquo ==gt
A natildeo entende ldquoO que foi que vocecirc disserdquo infinito Peacutessimo2 Bits de soma de verificaccedilatildeo de tal modo que permita ao remetente a
recuperaccedilatildeo de erros de bits Muito bom mas serve somente para canais com erro de bits e natildeo perda de pacotes
3 O Remetente reenvia o pacote de dados corrente quando receber um pacote ACK ou NAK truncado ==gt pode gerar pacotes duplicados Como o destinataacuterio sabe se o pacote conteacutem novos dados ou eacute uma retransmissatildeo ==gt nuacutemero de sequecircncia
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 30
bull rdt21 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 31
bull rdt21 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 32
bull O protocolo rdt21 usa tanto o reconhecimento positivo como negativo do remetente ao destinataacuterio pacote fora de ordem ==gt ACK pacote corrompido ==gt NAK
bull Podemos conseguir o mesmo efeito se ao inveacutes de enviarmos um NAK enviarmos um ACK do uacuteltimo corretamente recebido Ou seja ACK tambeacutem numerado
bull ACKs duplicados indicam ao remetente que o destinataacuterio natildeo recebeu corretamente o pacote seguinte agravequele do ACK duplo
bull rdt22 deve enviar o nuacutemero de sequecircncia no ACK
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21-2
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 33
bull rdt22 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 34
bull rdt22 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 35
bull Duas preocupaccedilotildees adicionais devem ser tratadas pelo protocolo1 Como detectar perda de pacotes2 O que fazer quando haacute perdas
bull As teacutecnicas jaacute discutidas atendem a segunda questatildeobull E para a primeira questatildeobull Suponha que o remetente transmita um pacote e que esse
pacote ou seu ACK seja perdido Nenhuma resposta chegaraacute ao remetente Se o remetente natildeo quiser esperar ==gt retransmite o pacote
bull Mas quanto o remetente precisa esperar para ter certeza que algo foi perdido Esperar um RTT Eacute muito difiacutecil estimar o RTT quanto mais ter certeza
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 36
bull Aleacutem disso o ideal seria que o protocolo se recuperasse da perda assim que possiacutevel
bull Na praacutetica O remetente faz uma escolha ponderada de um RTT provaacutevel mas natildeo
garantido que a perda tivesse acontecido Se natildeo receber um ACK nesse periacuteodo retransmite o pacote
bull Se o pacote sofrer um atraso longo pode haver retransmissatildeo mesmo que o pacote ou ACK natildeo tenham sido perdidos Possibilidade de pacotes de dados duplicados
bull Para implementar um mecanismo de retransmissatildeo com base no tempo eacute necessaacuterio um temporizador de contagem regressiva Accedilotildees iniciar atender parar
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 37
bull rdt30 remetente
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Transport Layer 3-38
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
pkt1
ack1
ack0
ack0
(a) no loss
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(b) packet loss
pkt1X
loss
pkt1timeout
resend pkt1
rdt30 in action
Transport Layer 3-39
rdt30 in action
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(c) ACK loss
ack1X
loss
pkt1timeout
resend pkt1
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) premature timeout delayed ACK
pkt1timeout
resend pkt1
ack1
send ack1
send pkt0rcv ack1
pkt0
ack1
ack0
send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
rcv pkt0
send ack0(detect duplicate)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 42
bull No coraccedilatildeo do problema do desempenho do rdt30 estaacute o fato de ele ser um protocolo do tipo pare e espere
bull Um protocolo pare e espere em operaccedilatildeo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 43
U remet =
0008
30008 = 000027
microseconds
L R RTT + L R
=
Desempenho do rdt30
rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso pacote 8000 bits
U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando
Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos Soluccedilatildeo
ndosmicrosseguR
Ldtrans 8
bps10
bits80009
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 44
Um protocolo com paralelismo em operaccedilatildeo
bull O ACK recebido eacute de que pacote
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 45
bull Envio com pare e espere
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 46
bull Envio com paralelismo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Aumento de utilizaccedilatildeopor fator de 3
U remet =
0024 30008
= 00008 microseconds
3 L R RTT + L R
=
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 18
bull Note que a uacuteltima adiccedilatildeo teve um ldquovai umrdquo no bit mais significativo que foi somado ao bit menos significativo
bull Complemento de 1 0 ==gt 1 1 ==gt 0bull Fazendo o complemento de 1 da soma final
1011010100111101 Esta eacute a soma de verificaccedilatildeobull No destinataacuterio todas as 4 palavras recebidas de 16 bits satildeo
somadas 1111 ==gt Pacote correto algum bit em 0 ==gt algum erro foi introduzido no pacote
bull Por que soma de verificaccedilatildeo no UDPbull Algumas camadas de enlace por exemplo Ethernet fornecem
soma de verificaccedilatildeobull mas nem todas e aleacutem disso um roteador poderia introduzir
algum errobull UDP verifica erros fim a fim
Soma de verificaccedilatildeo UDP
Transport Layer 3-19
Principles of reliable data transfer important in application transport link layers
top-10 list of important networking topics
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
Transport Layer 3-20
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
Principles of reliable data transfer important in application transport link layers
top-10 list of important networking topics
Transport Layer 3-21
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
important in application transport link layers top-10 list of important networking topics
Principles of reliable data transfer
Transport Layer 3-22
sendside
receiveside
rdt_send() called from above (eg by app) Passed data to deliver to receiver upper layer
udt_send() called by rdtto transfer packet over unreliable channel to receiver
rdt_rcv() called when packet arrives on rcv-side of channel
deliver_data() called by rdt to deliver data to upper
Principles of reliable data transfer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 23
vamos desenvolver de forma incremental os lados remetente e destinataacuterio do
protocolo de transferecircncia confiaacutevel de dados (rdt) considerar apenas a transf de dados unidirecional Bidirecional eacute soacute
duplicar a estruturandash mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees
usar maacutequinas de estado finito (FSM) para especificar remetente e destinataacuterio
estado1
estado2
evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado
estado quando neste ldquoestadordquo proacuteximo
estado determinadoexclusivamente pelo
proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel de dados introduccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 24
bull rdt10 ndash Um protocolo para um canal completamente confiaacutevel
Transferecircncia confiaacutevel de dados sobre um canal perfeitamente confiaacutevel rdt10
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 25
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
rdt20 ndash Um protocolo para um canal com erros de bits Base dos protocolos ARQ (Automatic Repeat Request)
Detecccedilatildeo de erros (mecanismo do UDP)
Realimentaccedilatildeo do destinataacuterio (ACK ou NACK)
Retransmissatildeobull Pare e espere
Transport Layer 3-26
rdt20 FSM specification
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) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from belowsender
receiverrdt_send(data)
Transport Layer 3-27
rdt20 operation with no errors
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Transport Layer 3-28
rdt20 error scenario
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 29
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
bull O que acontece se o pacote ACK ou NAK estiver corrompido
bull Vamos considerar trecircs possibilidade para ACKs ou NAKs corrompidos1 Ser humano -- A ldquoditadordquo B ldquoOKrdquo ou ldquoRepita por favorrdquo ==gt
A natildeo entende ldquoO que foi que vocecirc disserdquo infinito Peacutessimo2 Bits de soma de verificaccedilatildeo de tal modo que permita ao remetente a
recuperaccedilatildeo de erros de bits Muito bom mas serve somente para canais com erro de bits e natildeo perda de pacotes
3 O Remetente reenvia o pacote de dados corrente quando receber um pacote ACK ou NAK truncado ==gt pode gerar pacotes duplicados Como o destinataacuterio sabe se o pacote conteacutem novos dados ou eacute uma retransmissatildeo ==gt nuacutemero de sequecircncia
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 30
bull rdt21 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 31
bull rdt21 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 32
bull O protocolo rdt21 usa tanto o reconhecimento positivo como negativo do remetente ao destinataacuterio pacote fora de ordem ==gt ACK pacote corrompido ==gt NAK
bull Podemos conseguir o mesmo efeito se ao inveacutes de enviarmos um NAK enviarmos um ACK do uacuteltimo corretamente recebido Ou seja ACK tambeacutem numerado
bull ACKs duplicados indicam ao remetente que o destinataacuterio natildeo recebeu corretamente o pacote seguinte agravequele do ACK duplo
bull rdt22 deve enviar o nuacutemero de sequecircncia no ACK
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21-2
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 33
bull rdt22 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 34
bull rdt22 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 35
bull Duas preocupaccedilotildees adicionais devem ser tratadas pelo protocolo1 Como detectar perda de pacotes2 O que fazer quando haacute perdas
bull As teacutecnicas jaacute discutidas atendem a segunda questatildeobull E para a primeira questatildeobull Suponha que o remetente transmita um pacote e que esse
pacote ou seu ACK seja perdido Nenhuma resposta chegaraacute ao remetente Se o remetente natildeo quiser esperar ==gt retransmite o pacote
bull Mas quanto o remetente precisa esperar para ter certeza que algo foi perdido Esperar um RTT Eacute muito difiacutecil estimar o RTT quanto mais ter certeza
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 36
bull Aleacutem disso o ideal seria que o protocolo se recuperasse da perda assim que possiacutevel
bull Na praacutetica O remetente faz uma escolha ponderada de um RTT provaacutevel mas natildeo
garantido que a perda tivesse acontecido Se natildeo receber um ACK nesse periacuteodo retransmite o pacote
bull Se o pacote sofrer um atraso longo pode haver retransmissatildeo mesmo que o pacote ou ACK natildeo tenham sido perdidos Possibilidade de pacotes de dados duplicados
bull Para implementar um mecanismo de retransmissatildeo com base no tempo eacute necessaacuterio um temporizador de contagem regressiva Accedilotildees iniciar atender parar
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 37
bull rdt30 remetente
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Transport Layer 3-38
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
pkt1
ack1
ack0
ack0
(a) no loss
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(b) packet loss
pkt1X
loss
pkt1timeout
resend pkt1
rdt30 in action
Transport Layer 3-39
rdt30 in action
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(c) ACK loss
ack1X
loss
pkt1timeout
resend pkt1
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) premature timeout delayed ACK
pkt1timeout
resend pkt1
ack1
send ack1
send pkt0rcv ack1
pkt0
ack1
ack0
send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
rcv pkt0
send ack0(detect duplicate)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 42
bull No coraccedilatildeo do problema do desempenho do rdt30 estaacute o fato de ele ser um protocolo do tipo pare e espere
bull Um protocolo pare e espere em operaccedilatildeo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 43
U remet =
0008
30008 = 000027
microseconds
L R RTT + L R
=
Desempenho do rdt30
rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso pacote 8000 bits
U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando
Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos Soluccedilatildeo
ndosmicrosseguR
Ldtrans 8
bps10
bits80009
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 44
Um protocolo com paralelismo em operaccedilatildeo
bull O ACK recebido eacute de que pacote
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 45
bull Envio com pare e espere
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 46
bull Envio com paralelismo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Aumento de utilizaccedilatildeopor fator de 3
U remet =
0024 30008
= 00008 microseconds
3 L R RTT + L R
=
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Transport Layer 3-19
Principles of reliable data transfer important in application transport link layers
top-10 list of important networking topics
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
Transport Layer 3-20
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
Principles of reliable data transfer important in application transport link layers
top-10 list of important networking topics
Transport Layer 3-21
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
important in application transport link layers top-10 list of important networking topics
Principles of reliable data transfer
Transport Layer 3-22
sendside
receiveside
rdt_send() called from above (eg by app) Passed data to deliver to receiver upper layer
udt_send() called by rdtto transfer packet over unreliable channel to receiver
rdt_rcv() called when packet arrives on rcv-side of channel
deliver_data() called by rdt to deliver data to upper
Principles of reliable data transfer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 23
vamos desenvolver de forma incremental os lados remetente e destinataacuterio do
protocolo de transferecircncia confiaacutevel de dados (rdt) considerar apenas a transf de dados unidirecional Bidirecional eacute soacute
duplicar a estruturandash mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees
usar maacutequinas de estado finito (FSM) para especificar remetente e destinataacuterio
estado1
estado2
evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado
estado quando neste ldquoestadordquo proacuteximo
estado determinadoexclusivamente pelo
proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel de dados introduccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 24
bull rdt10 ndash Um protocolo para um canal completamente confiaacutevel
Transferecircncia confiaacutevel de dados sobre um canal perfeitamente confiaacutevel rdt10
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 25
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
rdt20 ndash Um protocolo para um canal com erros de bits Base dos protocolos ARQ (Automatic Repeat Request)
Detecccedilatildeo de erros (mecanismo do UDP)
Realimentaccedilatildeo do destinataacuterio (ACK ou NACK)
Retransmissatildeobull Pare e espere
Transport Layer 3-26
rdt20 FSM specification
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) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from belowsender
receiverrdt_send(data)
Transport Layer 3-27
rdt20 operation with no errors
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Transport Layer 3-28
rdt20 error scenario
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 29
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
bull O que acontece se o pacote ACK ou NAK estiver corrompido
bull Vamos considerar trecircs possibilidade para ACKs ou NAKs corrompidos1 Ser humano -- A ldquoditadordquo B ldquoOKrdquo ou ldquoRepita por favorrdquo ==gt
A natildeo entende ldquoO que foi que vocecirc disserdquo infinito Peacutessimo2 Bits de soma de verificaccedilatildeo de tal modo que permita ao remetente a
recuperaccedilatildeo de erros de bits Muito bom mas serve somente para canais com erro de bits e natildeo perda de pacotes
3 O Remetente reenvia o pacote de dados corrente quando receber um pacote ACK ou NAK truncado ==gt pode gerar pacotes duplicados Como o destinataacuterio sabe se o pacote conteacutem novos dados ou eacute uma retransmissatildeo ==gt nuacutemero de sequecircncia
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 30
bull rdt21 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 31
bull rdt21 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 32
bull O protocolo rdt21 usa tanto o reconhecimento positivo como negativo do remetente ao destinataacuterio pacote fora de ordem ==gt ACK pacote corrompido ==gt NAK
bull Podemos conseguir o mesmo efeito se ao inveacutes de enviarmos um NAK enviarmos um ACK do uacuteltimo corretamente recebido Ou seja ACK tambeacutem numerado
bull ACKs duplicados indicam ao remetente que o destinataacuterio natildeo recebeu corretamente o pacote seguinte agravequele do ACK duplo
bull rdt22 deve enviar o nuacutemero de sequecircncia no ACK
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21-2
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 33
bull rdt22 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 34
bull rdt22 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 35
bull Duas preocupaccedilotildees adicionais devem ser tratadas pelo protocolo1 Como detectar perda de pacotes2 O que fazer quando haacute perdas
bull As teacutecnicas jaacute discutidas atendem a segunda questatildeobull E para a primeira questatildeobull Suponha que o remetente transmita um pacote e que esse
pacote ou seu ACK seja perdido Nenhuma resposta chegaraacute ao remetente Se o remetente natildeo quiser esperar ==gt retransmite o pacote
bull Mas quanto o remetente precisa esperar para ter certeza que algo foi perdido Esperar um RTT Eacute muito difiacutecil estimar o RTT quanto mais ter certeza
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 36
bull Aleacutem disso o ideal seria que o protocolo se recuperasse da perda assim que possiacutevel
bull Na praacutetica O remetente faz uma escolha ponderada de um RTT provaacutevel mas natildeo
garantido que a perda tivesse acontecido Se natildeo receber um ACK nesse periacuteodo retransmite o pacote
bull Se o pacote sofrer um atraso longo pode haver retransmissatildeo mesmo que o pacote ou ACK natildeo tenham sido perdidos Possibilidade de pacotes de dados duplicados
bull Para implementar um mecanismo de retransmissatildeo com base no tempo eacute necessaacuterio um temporizador de contagem regressiva Accedilotildees iniciar atender parar
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 37
bull rdt30 remetente
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Transport Layer 3-38
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
pkt1
ack1
ack0
ack0
(a) no loss
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(b) packet loss
pkt1X
loss
pkt1timeout
resend pkt1
rdt30 in action
Transport Layer 3-39
rdt30 in action
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(c) ACK loss
ack1X
loss
pkt1timeout
resend pkt1
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) premature timeout delayed ACK
pkt1timeout
resend pkt1
ack1
send ack1
send pkt0rcv ack1
pkt0
ack1
ack0
send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
rcv pkt0
send ack0(detect duplicate)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 42
bull No coraccedilatildeo do problema do desempenho do rdt30 estaacute o fato de ele ser um protocolo do tipo pare e espere
bull Um protocolo pare e espere em operaccedilatildeo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 43
U remet =
0008
30008 = 000027
microseconds
L R RTT + L R
=
Desempenho do rdt30
rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso pacote 8000 bits
U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando
Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos Soluccedilatildeo
ndosmicrosseguR
Ldtrans 8
bps10
bits80009
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 44
Um protocolo com paralelismo em operaccedilatildeo
bull O ACK recebido eacute de que pacote
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 45
bull Envio com pare e espere
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 46
bull Envio com paralelismo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Aumento de utilizaccedilatildeopor fator de 3
U remet =
0024 30008
= 00008 microseconds
3 L R RTT + L R
=
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Transport Layer 3-20
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
Principles of reliable data transfer important in application transport link layers
top-10 list of important networking topics
Transport Layer 3-21
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
important in application transport link layers top-10 list of important networking topics
Principles of reliable data transfer
Transport Layer 3-22
sendside
receiveside
rdt_send() called from above (eg by app) Passed data to deliver to receiver upper layer
udt_send() called by rdtto transfer packet over unreliable channel to receiver
rdt_rcv() called when packet arrives on rcv-side of channel
deliver_data() called by rdt to deliver data to upper
Principles of reliable data transfer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 23
vamos desenvolver de forma incremental os lados remetente e destinataacuterio do
protocolo de transferecircncia confiaacutevel de dados (rdt) considerar apenas a transf de dados unidirecional Bidirecional eacute soacute
duplicar a estruturandash mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees
usar maacutequinas de estado finito (FSM) para especificar remetente e destinataacuterio
estado1
estado2
evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado
estado quando neste ldquoestadordquo proacuteximo
estado determinadoexclusivamente pelo
proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel de dados introduccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 24
bull rdt10 ndash Um protocolo para um canal completamente confiaacutevel
Transferecircncia confiaacutevel de dados sobre um canal perfeitamente confiaacutevel rdt10
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 25
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
rdt20 ndash Um protocolo para um canal com erros de bits Base dos protocolos ARQ (Automatic Repeat Request)
Detecccedilatildeo de erros (mecanismo do UDP)
Realimentaccedilatildeo do destinataacuterio (ACK ou NACK)
Retransmissatildeobull Pare e espere
Transport Layer 3-26
rdt20 FSM specification
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) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from belowsender
receiverrdt_send(data)
Transport Layer 3-27
rdt20 operation with no errors
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Transport Layer 3-28
rdt20 error scenario
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 29
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
bull O que acontece se o pacote ACK ou NAK estiver corrompido
bull Vamos considerar trecircs possibilidade para ACKs ou NAKs corrompidos1 Ser humano -- A ldquoditadordquo B ldquoOKrdquo ou ldquoRepita por favorrdquo ==gt
A natildeo entende ldquoO que foi que vocecirc disserdquo infinito Peacutessimo2 Bits de soma de verificaccedilatildeo de tal modo que permita ao remetente a
recuperaccedilatildeo de erros de bits Muito bom mas serve somente para canais com erro de bits e natildeo perda de pacotes
3 O Remetente reenvia o pacote de dados corrente quando receber um pacote ACK ou NAK truncado ==gt pode gerar pacotes duplicados Como o destinataacuterio sabe se o pacote conteacutem novos dados ou eacute uma retransmissatildeo ==gt nuacutemero de sequecircncia
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 30
bull rdt21 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 31
bull rdt21 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 32
bull O protocolo rdt21 usa tanto o reconhecimento positivo como negativo do remetente ao destinataacuterio pacote fora de ordem ==gt ACK pacote corrompido ==gt NAK
bull Podemos conseguir o mesmo efeito se ao inveacutes de enviarmos um NAK enviarmos um ACK do uacuteltimo corretamente recebido Ou seja ACK tambeacutem numerado
bull ACKs duplicados indicam ao remetente que o destinataacuterio natildeo recebeu corretamente o pacote seguinte agravequele do ACK duplo
bull rdt22 deve enviar o nuacutemero de sequecircncia no ACK
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21-2
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 33
bull rdt22 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 34
bull rdt22 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 35
bull Duas preocupaccedilotildees adicionais devem ser tratadas pelo protocolo1 Como detectar perda de pacotes2 O que fazer quando haacute perdas
bull As teacutecnicas jaacute discutidas atendem a segunda questatildeobull E para a primeira questatildeobull Suponha que o remetente transmita um pacote e que esse
pacote ou seu ACK seja perdido Nenhuma resposta chegaraacute ao remetente Se o remetente natildeo quiser esperar ==gt retransmite o pacote
bull Mas quanto o remetente precisa esperar para ter certeza que algo foi perdido Esperar um RTT Eacute muito difiacutecil estimar o RTT quanto mais ter certeza
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 36
bull Aleacutem disso o ideal seria que o protocolo se recuperasse da perda assim que possiacutevel
bull Na praacutetica O remetente faz uma escolha ponderada de um RTT provaacutevel mas natildeo
garantido que a perda tivesse acontecido Se natildeo receber um ACK nesse periacuteodo retransmite o pacote
bull Se o pacote sofrer um atraso longo pode haver retransmissatildeo mesmo que o pacote ou ACK natildeo tenham sido perdidos Possibilidade de pacotes de dados duplicados
bull Para implementar um mecanismo de retransmissatildeo com base no tempo eacute necessaacuterio um temporizador de contagem regressiva Accedilotildees iniciar atender parar
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 37
bull rdt30 remetente
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Transport Layer 3-38
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
pkt1
ack1
ack0
ack0
(a) no loss
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(b) packet loss
pkt1X
loss
pkt1timeout
resend pkt1
rdt30 in action
Transport Layer 3-39
rdt30 in action
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(c) ACK loss
ack1X
loss
pkt1timeout
resend pkt1
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) premature timeout delayed ACK
pkt1timeout
resend pkt1
ack1
send ack1
send pkt0rcv ack1
pkt0
ack1
ack0
send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
rcv pkt0
send ack0(detect duplicate)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 42
bull No coraccedilatildeo do problema do desempenho do rdt30 estaacute o fato de ele ser um protocolo do tipo pare e espere
bull Um protocolo pare e espere em operaccedilatildeo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 43
U remet =
0008
30008 = 000027
microseconds
L R RTT + L R
=
Desempenho do rdt30
rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso pacote 8000 bits
U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando
Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos Soluccedilatildeo
ndosmicrosseguR
Ldtrans 8
bps10
bits80009
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 44
Um protocolo com paralelismo em operaccedilatildeo
bull O ACK recebido eacute de que pacote
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 45
bull Envio com pare e espere
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 46
bull Envio com paralelismo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Aumento de utilizaccedilatildeopor fator de 3
U remet =
0024 30008
= 00008 microseconds
3 L R RTT + L R
=
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Transport Layer 3-21
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
important in application transport link layers top-10 list of important networking topics
Principles of reliable data transfer
Transport Layer 3-22
sendside
receiveside
rdt_send() called from above (eg by app) Passed data to deliver to receiver upper layer
udt_send() called by rdtto transfer packet over unreliable channel to receiver
rdt_rcv() called when packet arrives on rcv-side of channel
deliver_data() called by rdt to deliver data to upper
Principles of reliable data transfer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 23
vamos desenvolver de forma incremental os lados remetente e destinataacuterio do
protocolo de transferecircncia confiaacutevel de dados (rdt) considerar apenas a transf de dados unidirecional Bidirecional eacute soacute
duplicar a estruturandash mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees
usar maacutequinas de estado finito (FSM) para especificar remetente e destinataacuterio
estado1
estado2
evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado
estado quando neste ldquoestadordquo proacuteximo
estado determinadoexclusivamente pelo
proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel de dados introduccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 24
bull rdt10 ndash Um protocolo para um canal completamente confiaacutevel
Transferecircncia confiaacutevel de dados sobre um canal perfeitamente confiaacutevel rdt10
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 25
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
rdt20 ndash Um protocolo para um canal com erros de bits Base dos protocolos ARQ (Automatic Repeat Request)
Detecccedilatildeo de erros (mecanismo do UDP)
Realimentaccedilatildeo do destinataacuterio (ACK ou NACK)
Retransmissatildeobull Pare e espere
Transport Layer 3-26
rdt20 FSM specification
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) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from belowsender
receiverrdt_send(data)
Transport Layer 3-27
rdt20 operation with no errors
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Transport Layer 3-28
rdt20 error scenario
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 29
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
bull O que acontece se o pacote ACK ou NAK estiver corrompido
bull Vamos considerar trecircs possibilidade para ACKs ou NAKs corrompidos1 Ser humano -- A ldquoditadordquo B ldquoOKrdquo ou ldquoRepita por favorrdquo ==gt
A natildeo entende ldquoO que foi que vocecirc disserdquo infinito Peacutessimo2 Bits de soma de verificaccedilatildeo de tal modo que permita ao remetente a
recuperaccedilatildeo de erros de bits Muito bom mas serve somente para canais com erro de bits e natildeo perda de pacotes
3 O Remetente reenvia o pacote de dados corrente quando receber um pacote ACK ou NAK truncado ==gt pode gerar pacotes duplicados Como o destinataacuterio sabe se o pacote conteacutem novos dados ou eacute uma retransmissatildeo ==gt nuacutemero de sequecircncia
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 30
bull rdt21 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 31
bull rdt21 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 32
bull O protocolo rdt21 usa tanto o reconhecimento positivo como negativo do remetente ao destinataacuterio pacote fora de ordem ==gt ACK pacote corrompido ==gt NAK
bull Podemos conseguir o mesmo efeito se ao inveacutes de enviarmos um NAK enviarmos um ACK do uacuteltimo corretamente recebido Ou seja ACK tambeacutem numerado
bull ACKs duplicados indicam ao remetente que o destinataacuterio natildeo recebeu corretamente o pacote seguinte agravequele do ACK duplo
bull rdt22 deve enviar o nuacutemero de sequecircncia no ACK
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21-2
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 33
bull rdt22 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 34
bull rdt22 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 35
bull Duas preocupaccedilotildees adicionais devem ser tratadas pelo protocolo1 Como detectar perda de pacotes2 O que fazer quando haacute perdas
bull As teacutecnicas jaacute discutidas atendem a segunda questatildeobull E para a primeira questatildeobull Suponha que o remetente transmita um pacote e que esse
pacote ou seu ACK seja perdido Nenhuma resposta chegaraacute ao remetente Se o remetente natildeo quiser esperar ==gt retransmite o pacote
bull Mas quanto o remetente precisa esperar para ter certeza que algo foi perdido Esperar um RTT Eacute muito difiacutecil estimar o RTT quanto mais ter certeza
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 36
bull Aleacutem disso o ideal seria que o protocolo se recuperasse da perda assim que possiacutevel
bull Na praacutetica O remetente faz uma escolha ponderada de um RTT provaacutevel mas natildeo
garantido que a perda tivesse acontecido Se natildeo receber um ACK nesse periacuteodo retransmite o pacote
bull Se o pacote sofrer um atraso longo pode haver retransmissatildeo mesmo que o pacote ou ACK natildeo tenham sido perdidos Possibilidade de pacotes de dados duplicados
bull Para implementar um mecanismo de retransmissatildeo com base no tempo eacute necessaacuterio um temporizador de contagem regressiva Accedilotildees iniciar atender parar
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 37
bull rdt30 remetente
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Transport Layer 3-38
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
pkt1
ack1
ack0
ack0
(a) no loss
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(b) packet loss
pkt1X
loss
pkt1timeout
resend pkt1
rdt30 in action
Transport Layer 3-39
rdt30 in action
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(c) ACK loss
ack1X
loss
pkt1timeout
resend pkt1
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) premature timeout delayed ACK
pkt1timeout
resend pkt1
ack1
send ack1
send pkt0rcv ack1
pkt0
ack1
ack0
send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
rcv pkt0
send ack0(detect duplicate)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 42
bull No coraccedilatildeo do problema do desempenho do rdt30 estaacute o fato de ele ser um protocolo do tipo pare e espere
bull Um protocolo pare e espere em operaccedilatildeo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 43
U remet =
0008
30008 = 000027
microseconds
L R RTT + L R
=
Desempenho do rdt30
rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso pacote 8000 bits
U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando
Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos Soluccedilatildeo
ndosmicrosseguR
Ldtrans 8
bps10
bits80009
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 44
Um protocolo com paralelismo em operaccedilatildeo
bull O ACK recebido eacute de que pacote
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 45
bull Envio com pare e espere
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 46
bull Envio com paralelismo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Aumento de utilizaccedilatildeopor fator de 3
U remet =
0024 30008
= 00008 microseconds
3 L R RTT + L R
=
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Transport Layer 3-22
sendside
receiveside
rdt_send() called from above (eg by app) Passed data to deliver to receiver upper layer
udt_send() called by rdtto transfer packet over unreliable channel to receiver
rdt_rcv() called when packet arrives on rcv-side of channel
deliver_data() called by rdt to deliver data to upper
Principles of reliable data transfer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 23
vamos desenvolver de forma incremental os lados remetente e destinataacuterio do
protocolo de transferecircncia confiaacutevel de dados (rdt) considerar apenas a transf de dados unidirecional Bidirecional eacute soacute
duplicar a estruturandash mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees
usar maacutequinas de estado finito (FSM) para especificar remetente e destinataacuterio
estado1
estado2
evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado
estado quando neste ldquoestadordquo proacuteximo
estado determinadoexclusivamente pelo
proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel de dados introduccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 24
bull rdt10 ndash Um protocolo para um canal completamente confiaacutevel
Transferecircncia confiaacutevel de dados sobre um canal perfeitamente confiaacutevel rdt10
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 25
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
rdt20 ndash Um protocolo para um canal com erros de bits Base dos protocolos ARQ (Automatic Repeat Request)
Detecccedilatildeo de erros (mecanismo do UDP)
Realimentaccedilatildeo do destinataacuterio (ACK ou NACK)
Retransmissatildeobull Pare e espere
Transport Layer 3-26
rdt20 FSM specification
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) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from belowsender
receiverrdt_send(data)
Transport Layer 3-27
rdt20 operation with no errors
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Transport Layer 3-28
rdt20 error scenario
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 29
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
bull O que acontece se o pacote ACK ou NAK estiver corrompido
bull Vamos considerar trecircs possibilidade para ACKs ou NAKs corrompidos1 Ser humano -- A ldquoditadordquo B ldquoOKrdquo ou ldquoRepita por favorrdquo ==gt
A natildeo entende ldquoO que foi que vocecirc disserdquo infinito Peacutessimo2 Bits de soma de verificaccedilatildeo de tal modo que permita ao remetente a
recuperaccedilatildeo de erros de bits Muito bom mas serve somente para canais com erro de bits e natildeo perda de pacotes
3 O Remetente reenvia o pacote de dados corrente quando receber um pacote ACK ou NAK truncado ==gt pode gerar pacotes duplicados Como o destinataacuterio sabe se o pacote conteacutem novos dados ou eacute uma retransmissatildeo ==gt nuacutemero de sequecircncia
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 30
bull rdt21 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 31
bull rdt21 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 32
bull O protocolo rdt21 usa tanto o reconhecimento positivo como negativo do remetente ao destinataacuterio pacote fora de ordem ==gt ACK pacote corrompido ==gt NAK
bull Podemos conseguir o mesmo efeito se ao inveacutes de enviarmos um NAK enviarmos um ACK do uacuteltimo corretamente recebido Ou seja ACK tambeacutem numerado
bull ACKs duplicados indicam ao remetente que o destinataacuterio natildeo recebeu corretamente o pacote seguinte agravequele do ACK duplo
bull rdt22 deve enviar o nuacutemero de sequecircncia no ACK
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21-2
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 33
bull rdt22 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 34
bull rdt22 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 35
bull Duas preocupaccedilotildees adicionais devem ser tratadas pelo protocolo1 Como detectar perda de pacotes2 O que fazer quando haacute perdas
bull As teacutecnicas jaacute discutidas atendem a segunda questatildeobull E para a primeira questatildeobull Suponha que o remetente transmita um pacote e que esse
pacote ou seu ACK seja perdido Nenhuma resposta chegaraacute ao remetente Se o remetente natildeo quiser esperar ==gt retransmite o pacote
bull Mas quanto o remetente precisa esperar para ter certeza que algo foi perdido Esperar um RTT Eacute muito difiacutecil estimar o RTT quanto mais ter certeza
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 36
bull Aleacutem disso o ideal seria que o protocolo se recuperasse da perda assim que possiacutevel
bull Na praacutetica O remetente faz uma escolha ponderada de um RTT provaacutevel mas natildeo
garantido que a perda tivesse acontecido Se natildeo receber um ACK nesse periacuteodo retransmite o pacote
bull Se o pacote sofrer um atraso longo pode haver retransmissatildeo mesmo que o pacote ou ACK natildeo tenham sido perdidos Possibilidade de pacotes de dados duplicados
bull Para implementar um mecanismo de retransmissatildeo com base no tempo eacute necessaacuterio um temporizador de contagem regressiva Accedilotildees iniciar atender parar
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 37
bull rdt30 remetente
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Transport Layer 3-38
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
pkt1
ack1
ack0
ack0
(a) no loss
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(b) packet loss
pkt1X
loss
pkt1timeout
resend pkt1
rdt30 in action
Transport Layer 3-39
rdt30 in action
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(c) ACK loss
ack1X
loss
pkt1timeout
resend pkt1
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) premature timeout delayed ACK
pkt1timeout
resend pkt1
ack1
send ack1
send pkt0rcv ack1
pkt0
ack1
ack0
send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
rcv pkt0
send ack0(detect duplicate)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 42
bull No coraccedilatildeo do problema do desempenho do rdt30 estaacute o fato de ele ser um protocolo do tipo pare e espere
bull Um protocolo pare e espere em operaccedilatildeo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 43
U remet =
0008
30008 = 000027
microseconds
L R RTT + L R
=
Desempenho do rdt30
rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso pacote 8000 bits
U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando
Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos Soluccedilatildeo
ndosmicrosseguR
Ldtrans 8
bps10
bits80009
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 44
Um protocolo com paralelismo em operaccedilatildeo
bull O ACK recebido eacute de que pacote
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 45
bull Envio com pare e espere
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 46
bull Envio com paralelismo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Aumento de utilizaccedilatildeopor fator de 3
U remet =
0024 30008
= 00008 microseconds
3 L R RTT + L R
=
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 23
vamos desenvolver de forma incremental os lados remetente e destinataacuterio do
protocolo de transferecircncia confiaacutevel de dados (rdt) considerar apenas a transf de dados unidirecional Bidirecional eacute soacute
duplicar a estruturandash mas informaccedilotildees de controle fluiratildeo nas duas direccedilotildees
usar maacutequinas de estado finito (FSM) para especificar remetente e destinataacuterio
estado1
estado2
evento causando transiccedilatildeo de estadoaccedilotildees tomadas sobre transiccedilatildeo de estado
estado quando neste ldquoestadordquo proacuteximo
estado determinadoexclusivamente pelo
proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel de dados introduccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 24
bull rdt10 ndash Um protocolo para um canal completamente confiaacutevel
Transferecircncia confiaacutevel de dados sobre um canal perfeitamente confiaacutevel rdt10
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 25
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
rdt20 ndash Um protocolo para um canal com erros de bits Base dos protocolos ARQ (Automatic Repeat Request)
Detecccedilatildeo de erros (mecanismo do UDP)
Realimentaccedilatildeo do destinataacuterio (ACK ou NACK)
Retransmissatildeobull Pare e espere
Transport Layer 3-26
rdt20 FSM specification
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) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from belowsender
receiverrdt_send(data)
Transport Layer 3-27
rdt20 operation with no errors
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Transport Layer 3-28
rdt20 error scenario
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 29
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
bull O que acontece se o pacote ACK ou NAK estiver corrompido
bull Vamos considerar trecircs possibilidade para ACKs ou NAKs corrompidos1 Ser humano -- A ldquoditadordquo B ldquoOKrdquo ou ldquoRepita por favorrdquo ==gt
A natildeo entende ldquoO que foi que vocecirc disserdquo infinito Peacutessimo2 Bits de soma de verificaccedilatildeo de tal modo que permita ao remetente a
recuperaccedilatildeo de erros de bits Muito bom mas serve somente para canais com erro de bits e natildeo perda de pacotes
3 O Remetente reenvia o pacote de dados corrente quando receber um pacote ACK ou NAK truncado ==gt pode gerar pacotes duplicados Como o destinataacuterio sabe se o pacote conteacutem novos dados ou eacute uma retransmissatildeo ==gt nuacutemero de sequecircncia
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 30
bull rdt21 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 31
bull rdt21 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 32
bull O protocolo rdt21 usa tanto o reconhecimento positivo como negativo do remetente ao destinataacuterio pacote fora de ordem ==gt ACK pacote corrompido ==gt NAK
bull Podemos conseguir o mesmo efeito se ao inveacutes de enviarmos um NAK enviarmos um ACK do uacuteltimo corretamente recebido Ou seja ACK tambeacutem numerado
bull ACKs duplicados indicam ao remetente que o destinataacuterio natildeo recebeu corretamente o pacote seguinte agravequele do ACK duplo
bull rdt22 deve enviar o nuacutemero de sequecircncia no ACK
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21-2
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 33
bull rdt22 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 34
bull rdt22 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 35
bull Duas preocupaccedilotildees adicionais devem ser tratadas pelo protocolo1 Como detectar perda de pacotes2 O que fazer quando haacute perdas
bull As teacutecnicas jaacute discutidas atendem a segunda questatildeobull E para a primeira questatildeobull Suponha que o remetente transmita um pacote e que esse
pacote ou seu ACK seja perdido Nenhuma resposta chegaraacute ao remetente Se o remetente natildeo quiser esperar ==gt retransmite o pacote
bull Mas quanto o remetente precisa esperar para ter certeza que algo foi perdido Esperar um RTT Eacute muito difiacutecil estimar o RTT quanto mais ter certeza
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 36
bull Aleacutem disso o ideal seria que o protocolo se recuperasse da perda assim que possiacutevel
bull Na praacutetica O remetente faz uma escolha ponderada de um RTT provaacutevel mas natildeo
garantido que a perda tivesse acontecido Se natildeo receber um ACK nesse periacuteodo retransmite o pacote
bull Se o pacote sofrer um atraso longo pode haver retransmissatildeo mesmo que o pacote ou ACK natildeo tenham sido perdidos Possibilidade de pacotes de dados duplicados
bull Para implementar um mecanismo de retransmissatildeo com base no tempo eacute necessaacuterio um temporizador de contagem regressiva Accedilotildees iniciar atender parar
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 37
bull rdt30 remetente
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Transport Layer 3-38
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
pkt1
ack1
ack0
ack0
(a) no loss
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(b) packet loss
pkt1X
loss
pkt1timeout
resend pkt1
rdt30 in action
Transport Layer 3-39
rdt30 in action
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(c) ACK loss
ack1X
loss
pkt1timeout
resend pkt1
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) premature timeout delayed ACK
pkt1timeout
resend pkt1
ack1
send ack1
send pkt0rcv ack1
pkt0
ack1
ack0
send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
rcv pkt0
send ack0(detect duplicate)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 42
bull No coraccedilatildeo do problema do desempenho do rdt30 estaacute o fato de ele ser um protocolo do tipo pare e espere
bull Um protocolo pare e espere em operaccedilatildeo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 43
U remet =
0008
30008 = 000027
microseconds
L R RTT + L R
=
Desempenho do rdt30
rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso pacote 8000 bits
U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando
Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos Soluccedilatildeo
ndosmicrosseguR
Ldtrans 8
bps10
bits80009
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 44
Um protocolo com paralelismo em operaccedilatildeo
bull O ACK recebido eacute de que pacote
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 45
bull Envio com pare e espere
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 46
bull Envio com paralelismo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Aumento de utilizaccedilatildeopor fator de 3
U remet =
0024 30008
= 00008 microseconds
3 L R RTT + L R
=
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 24
bull rdt10 ndash Um protocolo para um canal completamente confiaacutevel
Transferecircncia confiaacutevel de dados sobre um canal perfeitamente confiaacutevel rdt10
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 25
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
rdt20 ndash Um protocolo para um canal com erros de bits Base dos protocolos ARQ (Automatic Repeat Request)
Detecccedilatildeo de erros (mecanismo do UDP)
Realimentaccedilatildeo do destinataacuterio (ACK ou NACK)
Retransmissatildeobull Pare e espere
Transport Layer 3-26
rdt20 FSM specification
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) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from belowsender
receiverrdt_send(data)
Transport Layer 3-27
rdt20 operation with no errors
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Transport Layer 3-28
rdt20 error scenario
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 29
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
bull O que acontece se o pacote ACK ou NAK estiver corrompido
bull Vamos considerar trecircs possibilidade para ACKs ou NAKs corrompidos1 Ser humano -- A ldquoditadordquo B ldquoOKrdquo ou ldquoRepita por favorrdquo ==gt
A natildeo entende ldquoO que foi que vocecirc disserdquo infinito Peacutessimo2 Bits de soma de verificaccedilatildeo de tal modo que permita ao remetente a
recuperaccedilatildeo de erros de bits Muito bom mas serve somente para canais com erro de bits e natildeo perda de pacotes
3 O Remetente reenvia o pacote de dados corrente quando receber um pacote ACK ou NAK truncado ==gt pode gerar pacotes duplicados Como o destinataacuterio sabe se o pacote conteacutem novos dados ou eacute uma retransmissatildeo ==gt nuacutemero de sequecircncia
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 30
bull rdt21 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 31
bull rdt21 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 32
bull O protocolo rdt21 usa tanto o reconhecimento positivo como negativo do remetente ao destinataacuterio pacote fora de ordem ==gt ACK pacote corrompido ==gt NAK
bull Podemos conseguir o mesmo efeito se ao inveacutes de enviarmos um NAK enviarmos um ACK do uacuteltimo corretamente recebido Ou seja ACK tambeacutem numerado
bull ACKs duplicados indicam ao remetente que o destinataacuterio natildeo recebeu corretamente o pacote seguinte agravequele do ACK duplo
bull rdt22 deve enviar o nuacutemero de sequecircncia no ACK
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21-2
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 33
bull rdt22 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 34
bull rdt22 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 35
bull Duas preocupaccedilotildees adicionais devem ser tratadas pelo protocolo1 Como detectar perda de pacotes2 O que fazer quando haacute perdas
bull As teacutecnicas jaacute discutidas atendem a segunda questatildeobull E para a primeira questatildeobull Suponha que o remetente transmita um pacote e que esse
pacote ou seu ACK seja perdido Nenhuma resposta chegaraacute ao remetente Se o remetente natildeo quiser esperar ==gt retransmite o pacote
bull Mas quanto o remetente precisa esperar para ter certeza que algo foi perdido Esperar um RTT Eacute muito difiacutecil estimar o RTT quanto mais ter certeza
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 36
bull Aleacutem disso o ideal seria que o protocolo se recuperasse da perda assim que possiacutevel
bull Na praacutetica O remetente faz uma escolha ponderada de um RTT provaacutevel mas natildeo
garantido que a perda tivesse acontecido Se natildeo receber um ACK nesse periacuteodo retransmite o pacote
bull Se o pacote sofrer um atraso longo pode haver retransmissatildeo mesmo que o pacote ou ACK natildeo tenham sido perdidos Possibilidade de pacotes de dados duplicados
bull Para implementar um mecanismo de retransmissatildeo com base no tempo eacute necessaacuterio um temporizador de contagem regressiva Accedilotildees iniciar atender parar
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 37
bull rdt30 remetente
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Transport Layer 3-38
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
pkt1
ack1
ack0
ack0
(a) no loss
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(b) packet loss
pkt1X
loss
pkt1timeout
resend pkt1
rdt30 in action
Transport Layer 3-39
rdt30 in action
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(c) ACK loss
ack1X
loss
pkt1timeout
resend pkt1
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) premature timeout delayed ACK
pkt1timeout
resend pkt1
ack1
send ack1
send pkt0rcv ack1
pkt0
ack1
ack0
send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
rcv pkt0
send ack0(detect duplicate)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 42
bull No coraccedilatildeo do problema do desempenho do rdt30 estaacute o fato de ele ser um protocolo do tipo pare e espere
bull Um protocolo pare e espere em operaccedilatildeo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 43
U remet =
0008
30008 = 000027
microseconds
L R RTT + L R
=
Desempenho do rdt30
rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso pacote 8000 bits
U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando
Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos Soluccedilatildeo
ndosmicrosseguR
Ldtrans 8
bps10
bits80009
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 44
Um protocolo com paralelismo em operaccedilatildeo
bull O ACK recebido eacute de que pacote
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 45
bull Envio com pare e espere
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 46
bull Envio com paralelismo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Aumento de utilizaccedilatildeopor fator de 3
U remet =
0024 30008
= 00008 microseconds
3 L R RTT + L R
=
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 25
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
rdt20 ndash Um protocolo para um canal com erros de bits Base dos protocolos ARQ (Automatic Repeat Request)
Detecccedilatildeo de erros (mecanismo do UDP)
Realimentaccedilatildeo do destinataacuterio (ACK ou NACK)
Retransmissatildeobull Pare e espere
Transport Layer 3-26
rdt20 FSM specification
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) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from belowsender
receiverrdt_send(data)
Transport Layer 3-27
rdt20 operation with no errors
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Transport Layer 3-28
rdt20 error scenario
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 29
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
bull O que acontece se o pacote ACK ou NAK estiver corrompido
bull Vamos considerar trecircs possibilidade para ACKs ou NAKs corrompidos1 Ser humano -- A ldquoditadordquo B ldquoOKrdquo ou ldquoRepita por favorrdquo ==gt
A natildeo entende ldquoO que foi que vocecirc disserdquo infinito Peacutessimo2 Bits de soma de verificaccedilatildeo de tal modo que permita ao remetente a
recuperaccedilatildeo de erros de bits Muito bom mas serve somente para canais com erro de bits e natildeo perda de pacotes
3 O Remetente reenvia o pacote de dados corrente quando receber um pacote ACK ou NAK truncado ==gt pode gerar pacotes duplicados Como o destinataacuterio sabe se o pacote conteacutem novos dados ou eacute uma retransmissatildeo ==gt nuacutemero de sequecircncia
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 30
bull rdt21 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 31
bull rdt21 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 32
bull O protocolo rdt21 usa tanto o reconhecimento positivo como negativo do remetente ao destinataacuterio pacote fora de ordem ==gt ACK pacote corrompido ==gt NAK
bull Podemos conseguir o mesmo efeito se ao inveacutes de enviarmos um NAK enviarmos um ACK do uacuteltimo corretamente recebido Ou seja ACK tambeacutem numerado
bull ACKs duplicados indicam ao remetente que o destinataacuterio natildeo recebeu corretamente o pacote seguinte agravequele do ACK duplo
bull rdt22 deve enviar o nuacutemero de sequecircncia no ACK
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21-2
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 33
bull rdt22 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 34
bull rdt22 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 35
bull Duas preocupaccedilotildees adicionais devem ser tratadas pelo protocolo1 Como detectar perda de pacotes2 O que fazer quando haacute perdas
bull As teacutecnicas jaacute discutidas atendem a segunda questatildeobull E para a primeira questatildeobull Suponha que o remetente transmita um pacote e que esse
pacote ou seu ACK seja perdido Nenhuma resposta chegaraacute ao remetente Se o remetente natildeo quiser esperar ==gt retransmite o pacote
bull Mas quanto o remetente precisa esperar para ter certeza que algo foi perdido Esperar um RTT Eacute muito difiacutecil estimar o RTT quanto mais ter certeza
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 36
bull Aleacutem disso o ideal seria que o protocolo se recuperasse da perda assim que possiacutevel
bull Na praacutetica O remetente faz uma escolha ponderada de um RTT provaacutevel mas natildeo
garantido que a perda tivesse acontecido Se natildeo receber um ACK nesse periacuteodo retransmite o pacote
bull Se o pacote sofrer um atraso longo pode haver retransmissatildeo mesmo que o pacote ou ACK natildeo tenham sido perdidos Possibilidade de pacotes de dados duplicados
bull Para implementar um mecanismo de retransmissatildeo com base no tempo eacute necessaacuterio um temporizador de contagem regressiva Accedilotildees iniciar atender parar
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 37
bull rdt30 remetente
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Transport Layer 3-38
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
pkt1
ack1
ack0
ack0
(a) no loss
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(b) packet loss
pkt1X
loss
pkt1timeout
resend pkt1
rdt30 in action
Transport Layer 3-39
rdt30 in action
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(c) ACK loss
ack1X
loss
pkt1timeout
resend pkt1
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) premature timeout delayed ACK
pkt1timeout
resend pkt1
ack1
send ack1
send pkt0rcv ack1
pkt0
ack1
ack0
send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
rcv pkt0
send ack0(detect duplicate)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 42
bull No coraccedilatildeo do problema do desempenho do rdt30 estaacute o fato de ele ser um protocolo do tipo pare e espere
bull Um protocolo pare e espere em operaccedilatildeo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 43
U remet =
0008
30008 = 000027
microseconds
L R RTT + L R
=
Desempenho do rdt30
rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso pacote 8000 bits
U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando
Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos Soluccedilatildeo
ndosmicrosseguR
Ldtrans 8
bps10
bits80009
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 44
Um protocolo com paralelismo em operaccedilatildeo
bull O ACK recebido eacute de que pacote
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 45
bull Envio com pare e espere
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 46
bull Envio com paralelismo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Aumento de utilizaccedilatildeopor fator de 3
U remet =
0024 30008
= 00008 microseconds
3 L R RTT + L R
=
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Transport Layer 3-26
rdt20 FSM specification
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) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from belowsender
receiverrdt_send(data)
Transport Layer 3-27
rdt20 operation with no errors
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Transport Layer 3-28
rdt20 error scenario
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 29
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
bull O que acontece se o pacote ACK ou NAK estiver corrompido
bull Vamos considerar trecircs possibilidade para ACKs ou NAKs corrompidos1 Ser humano -- A ldquoditadordquo B ldquoOKrdquo ou ldquoRepita por favorrdquo ==gt
A natildeo entende ldquoO que foi que vocecirc disserdquo infinito Peacutessimo2 Bits de soma de verificaccedilatildeo de tal modo que permita ao remetente a
recuperaccedilatildeo de erros de bits Muito bom mas serve somente para canais com erro de bits e natildeo perda de pacotes
3 O Remetente reenvia o pacote de dados corrente quando receber um pacote ACK ou NAK truncado ==gt pode gerar pacotes duplicados Como o destinataacuterio sabe se o pacote conteacutem novos dados ou eacute uma retransmissatildeo ==gt nuacutemero de sequecircncia
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 30
bull rdt21 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 31
bull rdt21 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 32
bull O protocolo rdt21 usa tanto o reconhecimento positivo como negativo do remetente ao destinataacuterio pacote fora de ordem ==gt ACK pacote corrompido ==gt NAK
bull Podemos conseguir o mesmo efeito se ao inveacutes de enviarmos um NAK enviarmos um ACK do uacuteltimo corretamente recebido Ou seja ACK tambeacutem numerado
bull ACKs duplicados indicam ao remetente que o destinataacuterio natildeo recebeu corretamente o pacote seguinte agravequele do ACK duplo
bull rdt22 deve enviar o nuacutemero de sequecircncia no ACK
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21-2
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 33
bull rdt22 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 34
bull rdt22 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 35
bull Duas preocupaccedilotildees adicionais devem ser tratadas pelo protocolo1 Como detectar perda de pacotes2 O que fazer quando haacute perdas
bull As teacutecnicas jaacute discutidas atendem a segunda questatildeobull E para a primeira questatildeobull Suponha que o remetente transmita um pacote e que esse
pacote ou seu ACK seja perdido Nenhuma resposta chegaraacute ao remetente Se o remetente natildeo quiser esperar ==gt retransmite o pacote
bull Mas quanto o remetente precisa esperar para ter certeza que algo foi perdido Esperar um RTT Eacute muito difiacutecil estimar o RTT quanto mais ter certeza
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 36
bull Aleacutem disso o ideal seria que o protocolo se recuperasse da perda assim que possiacutevel
bull Na praacutetica O remetente faz uma escolha ponderada de um RTT provaacutevel mas natildeo
garantido que a perda tivesse acontecido Se natildeo receber um ACK nesse periacuteodo retransmite o pacote
bull Se o pacote sofrer um atraso longo pode haver retransmissatildeo mesmo que o pacote ou ACK natildeo tenham sido perdidos Possibilidade de pacotes de dados duplicados
bull Para implementar um mecanismo de retransmissatildeo com base no tempo eacute necessaacuterio um temporizador de contagem regressiva Accedilotildees iniciar atender parar
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 37
bull rdt30 remetente
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Transport Layer 3-38
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
pkt1
ack1
ack0
ack0
(a) no loss
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(b) packet loss
pkt1X
loss
pkt1timeout
resend pkt1
rdt30 in action
Transport Layer 3-39
rdt30 in action
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(c) ACK loss
ack1X
loss
pkt1timeout
resend pkt1
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) premature timeout delayed ACK
pkt1timeout
resend pkt1
ack1
send ack1
send pkt0rcv ack1
pkt0
ack1
ack0
send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
rcv pkt0
send ack0(detect duplicate)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 42
bull No coraccedilatildeo do problema do desempenho do rdt30 estaacute o fato de ele ser um protocolo do tipo pare e espere
bull Um protocolo pare e espere em operaccedilatildeo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 43
U remet =
0008
30008 = 000027
microseconds
L R RTT + L R
=
Desempenho do rdt30
rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso pacote 8000 bits
U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando
Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos Soluccedilatildeo
ndosmicrosseguR
Ldtrans 8
bps10
bits80009
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 44
Um protocolo com paralelismo em operaccedilatildeo
bull O ACK recebido eacute de que pacote
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 45
bull Envio com pare e espere
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 46
bull Envio com paralelismo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Aumento de utilizaccedilatildeopor fator de 3
U remet =
0024 30008
= 00008 microseconds
3 L R RTT + L R
=
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Transport Layer 3-27
rdt20 operation with no errors
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Transport Layer 3-28
rdt20 error scenario
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 29
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
bull O que acontece se o pacote ACK ou NAK estiver corrompido
bull Vamos considerar trecircs possibilidade para ACKs ou NAKs corrompidos1 Ser humano -- A ldquoditadordquo B ldquoOKrdquo ou ldquoRepita por favorrdquo ==gt
A natildeo entende ldquoO que foi que vocecirc disserdquo infinito Peacutessimo2 Bits de soma de verificaccedilatildeo de tal modo que permita ao remetente a
recuperaccedilatildeo de erros de bits Muito bom mas serve somente para canais com erro de bits e natildeo perda de pacotes
3 O Remetente reenvia o pacote de dados corrente quando receber um pacote ACK ou NAK truncado ==gt pode gerar pacotes duplicados Como o destinataacuterio sabe se o pacote conteacutem novos dados ou eacute uma retransmissatildeo ==gt nuacutemero de sequecircncia
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 30
bull rdt21 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 31
bull rdt21 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 32
bull O protocolo rdt21 usa tanto o reconhecimento positivo como negativo do remetente ao destinataacuterio pacote fora de ordem ==gt ACK pacote corrompido ==gt NAK
bull Podemos conseguir o mesmo efeito se ao inveacutes de enviarmos um NAK enviarmos um ACK do uacuteltimo corretamente recebido Ou seja ACK tambeacutem numerado
bull ACKs duplicados indicam ao remetente que o destinataacuterio natildeo recebeu corretamente o pacote seguinte agravequele do ACK duplo
bull rdt22 deve enviar o nuacutemero de sequecircncia no ACK
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21-2
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 33
bull rdt22 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 34
bull rdt22 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 35
bull Duas preocupaccedilotildees adicionais devem ser tratadas pelo protocolo1 Como detectar perda de pacotes2 O que fazer quando haacute perdas
bull As teacutecnicas jaacute discutidas atendem a segunda questatildeobull E para a primeira questatildeobull Suponha que o remetente transmita um pacote e que esse
pacote ou seu ACK seja perdido Nenhuma resposta chegaraacute ao remetente Se o remetente natildeo quiser esperar ==gt retransmite o pacote
bull Mas quanto o remetente precisa esperar para ter certeza que algo foi perdido Esperar um RTT Eacute muito difiacutecil estimar o RTT quanto mais ter certeza
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 36
bull Aleacutem disso o ideal seria que o protocolo se recuperasse da perda assim que possiacutevel
bull Na praacutetica O remetente faz uma escolha ponderada de um RTT provaacutevel mas natildeo
garantido que a perda tivesse acontecido Se natildeo receber um ACK nesse periacuteodo retransmite o pacote
bull Se o pacote sofrer um atraso longo pode haver retransmissatildeo mesmo que o pacote ou ACK natildeo tenham sido perdidos Possibilidade de pacotes de dados duplicados
bull Para implementar um mecanismo de retransmissatildeo com base no tempo eacute necessaacuterio um temporizador de contagem regressiva Accedilotildees iniciar atender parar
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 37
bull rdt30 remetente
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Transport Layer 3-38
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
pkt1
ack1
ack0
ack0
(a) no loss
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(b) packet loss
pkt1X
loss
pkt1timeout
resend pkt1
rdt30 in action
Transport Layer 3-39
rdt30 in action
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(c) ACK loss
ack1X
loss
pkt1timeout
resend pkt1
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) premature timeout delayed ACK
pkt1timeout
resend pkt1
ack1
send ack1
send pkt0rcv ack1
pkt0
ack1
ack0
send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
rcv pkt0
send ack0(detect duplicate)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 42
bull No coraccedilatildeo do problema do desempenho do rdt30 estaacute o fato de ele ser um protocolo do tipo pare e espere
bull Um protocolo pare e espere em operaccedilatildeo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 43
U remet =
0008
30008 = 000027
microseconds
L R RTT + L R
=
Desempenho do rdt30
rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso pacote 8000 bits
U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando
Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos Soluccedilatildeo
ndosmicrosseguR
Ldtrans 8
bps10
bits80009
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 44
Um protocolo com paralelismo em operaccedilatildeo
bull O ACK recebido eacute de que pacote
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 45
bull Envio com pare e espere
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 46
bull Envio com paralelismo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Aumento de utilizaccedilatildeopor fator de 3
U remet =
0024 30008
= 00008 microseconds
3 L R RTT + L R
=
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Transport Layer 3-28
rdt20 error scenario
Wait for call from above
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Wait for ACK or NAK
Wait for call from below
rdt_send(data)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 29
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
bull O que acontece se o pacote ACK ou NAK estiver corrompido
bull Vamos considerar trecircs possibilidade para ACKs ou NAKs corrompidos1 Ser humano -- A ldquoditadordquo B ldquoOKrdquo ou ldquoRepita por favorrdquo ==gt
A natildeo entende ldquoO que foi que vocecirc disserdquo infinito Peacutessimo2 Bits de soma de verificaccedilatildeo de tal modo que permita ao remetente a
recuperaccedilatildeo de erros de bits Muito bom mas serve somente para canais com erro de bits e natildeo perda de pacotes
3 O Remetente reenvia o pacote de dados corrente quando receber um pacote ACK ou NAK truncado ==gt pode gerar pacotes duplicados Como o destinataacuterio sabe se o pacote conteacutem novos dados ou eacute uma retransmissatildeo ==gt nuacutemero de sequecircncia
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 30
bull rdt21 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 31
bull rdt21 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 32
bull O protocolo rdt21 usa tanto o reconhecimento positivo como negativo do remetente ao destinataacuterio pacote fora de ordem ==gt ACK pacote corrompido ==gt NAK
bull Podemos conseguir o mesmo efeito se ao inveacutes de enviarmos um NAK enviarmos um ACK do uacuteltimo corretamente recebido Ou seja ACK tambeacutem numerado
bull ACKs duplicados indicam ao remetente que o destinataacuterio natildeo recebeu corretamente o pacote seguinte agravequele do ACK duplo
bull rdt22 deve enviar o nuacutemero de sequecircncia no ACK
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21-2
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 33
bull rdt22 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 34
bull rdt22 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 35
bull Duas preocupaccedilotildees adicionais devem ser tratadas pelo protocolo1 Como detectar perda de pacotes2 O que fazer quando haacute perdas
bull As teacutecnicas jaacute discutidas atendem a segunda questatildeobull E para a primeira questatildeobull Suponha que o remetente transmita um pacote e que esse
pacote ou seu ACK seja perdido Nenhuma resposta chegaraacute ao remetente Se o remetente natildeo quiser esperar ==gt retransmite o pacote
bull Mas quanto o remetente precisa esperar para ter certeza que algo foi perdido Esperar um RTT Eacute muito difiacutecil estimar o RTT quanto mais ter certeza
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 36
bull Aleacutem disso o ideal seria que o protocolo se recuperasse da perda assim que possiacutevel
bull Na praacutetica O remetente faz uma escolha ponderada de um RTT provaacutevel mas natildeo
garantido que a perda tivesse acontecido Se natildeo receber um ACK nesse periacuteodo retransmite o pacote
bull Se o pacote sofrer um atraso longo pode haver retransmissatildeo mesmo que o pacote ou ACK natildeo tenham sido perdidos Possibilidade de pacotes de dados duplicados
bull Para implementar um mecanismo de retransmissatildeo com base no tempo eacute necessaacuterio um temporizador de contagem regressiva Accedilotildees iniciar atender parar
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 37
bull rdt30 remetente
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Transport Layer 3-38
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
pkt1
ack1
ack0
ack0
(a) no loss
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(b) packet loss
pkt1X
loss
pkt1timeout
resend pkt1
rdt30 in action
Transport Layer 3-39
rdt30 in action
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(c) ACK loss
ack1X
loss
pkt1timeout
resend pkt1
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) premature timeout delayed ACK
pkt1timeout
resend pkt1
ack1
send ack1
send pkt0rcv ack1
pkt0
ack1
ack0
send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
rcv pkt0
send ack0(detect duplicate)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 42
bull No coraccedilatildeo do problema do desempenho do rdt30 estaacute o fato de ele ser um protocolo do tipo pare e espere
bull Um protocolo pare e espere em operaccedilatildeo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 43
U remet =
0008
30008 = 000027
microseconds
L R RTT + L R
=
Desempenho do rdt30
rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso pacote 8000 bits
U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando
Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos Soluccedilatildeo
ndosmicrosseguR
Ldtrans 8
bps10
bits80009
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 44
Um protocolo com paralelismo em operaccedilatildeo
bull O ACK recebido eacute de que pacote
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 45
bull Envio com pare e espere
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 46
bull Envio com paralelismo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Aumento de utilizaccedilatildeopor fator de 3
U remet =
0024 30008
= 00008 microseconds
3 L R RTT + L R
=
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 29
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt20
bull O que acontece se o pacote ACK ou NAK estiver corrompido
bull Vamos considerar trecircs possibilidade para ACKs ou NAKs corrompidos1 Ser humano -- A ldquoditadordquo B ldquoOKrdquo ou ldquoRepita por favorrdquo ==gt
A natildeo entende ldquoO que foi que vocecirc disserdquo infinito Peacutessimo2 Bits de soma de verificaccedilatildeo de tal modo que permita ao remetente a
recuperaccedilatildeo de erros de bits Muito bom mas serve somente para canais com erro de bits e natildeo perda de pacotes
3 O Remetente reenvia o pacote de dados corrente quando receber um pacote ACK ou NAK truncado ==gt pode gerar pacotes duplicados Como o destinataacuterio sabe se o pacote conteacutem novos dados ou eacute uma retransmissatildeo ==gt nuacutemero de sequecircncia
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 30
bull rdt21 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 31
bull rdt21 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 32
bull O protocolo rdt21 usa tanto o reconhecimento positivo como negativo do remetente ao destinataacuterio pacote fora de ordem ==gt ACK pacote corrompido ==gt NAK
bull Podemos conseguir o mesmo efeito se ao inveacutes de enviarmos um NAK enviarmos um ACK do uacuteltimo corretamente recebido Ou seja ACK tambeacutem numerado
bull ACKs duplicados indicam ao remetente que o destinataacuterio natildeo recebeu corretamente o pacote seguinte agravequele do ACK duplo
bull rdt22 deve enviar o nuacutemero de sequecircncia no ACK
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21-2
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 33
bull rdt22 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 34
bull rdt22 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 35
bull Duas preocupaccedilotildees adicionais devem ser tratadas pelo protocolo1 Como detectar perda de pacotes2 O que fazer quando haacute perdas
bull As teacutecnicas jaacute discutidas atendem a segunda questatildeobull E para a primeira questatildeobull Suponha que o remetente transmita um pacote e que esse
pacote ou seu ACK seja perdido Nenhuma resposta chegaraacute ao remetente Se o remetente natildeo quiser esperar ==gt retransmite o pacote
bull Mas quanto o remetente precisa esperar para ter certeza que algo foi perdido Esperar um RTT Eacute muito difiacutecil estimar o RTT quanto mais ter certeza
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 36
bull Aleacutem disso o ideal seria que o protocolo se recuperasse da perda assim que possiacutevel
bull Na praacutetica O remetente faz uma escolha ponderada de um RTT provaacutevel mas natildeo
garantido que a perda tivesse acontecido Se natildeo receber um ACK nesse periacuteodo retransmite o pacote
bull Se o pacote sofrer um atraso longo pode haver retransmissatildeo mesmo que o pacote ou ACK natildeo tenham sido perdidos Possibilidade de pacotes de dados duplicados
bull Para implementar um mecanismo de retransmissatildeo com base no tempo eacute necessaacuterio um temporizador de contagem regressiva Accedilotildees iniciar atender parar
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 37
bull rdt30 remetente
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Transport Layer 3-38
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
pkt1
ack1
ack0
ack0
(a) no loss
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(b) packet loss
pkt1X
loss
pkt1timeout
resend pkt1
rdt30 in action
Transport Layer 3-39
rdt30 in action
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(c) ACK loss
ack1X
loss
pkt1timeout
resend pkt1
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) premature timeout delayed ACK
pkt1timeout
resend pkt1
ack1
send ack1
send pkt0rcv ack1
pkt0
ack1
ack0
send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
rcv pkt0
send ack0(detect duplicate)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 42
bull No coraccedilatildeo do problema do desempenho do rdt30 estaacute o fato de ele ser um protocolo do tipo pare e espere
bull Um protocolo pare e espere em operaccedilatildeo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 43
U remet =
0008
30008 = 000027
microseconds
L R RTT + L R
=
Desempenho do rdt30
rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso pacote 8000 bits
U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando
Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos Soluccedilatildeo
ndosmicrosseguR
Ldtrans 8
bps10
bits80009
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 44
Um protocolo com paralelismo em operaccedilatildeo
bull O ACK recebido eacute de que pacote
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 45
bull Envio com pare e espere
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 46
bull Envio com paralelismo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Aumento de utilizaccedilatildeopor fator de 3
U remet =
0024 30008
= 00008 microseconds
3 L R RTT + L R
=
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 30
bull rdt21 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 31
bull rdt21 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 32
bull O protocolo rdt21 usa tanto o reconhecimento positivo como negativo do remetente ao destinataacuterio pacote fora de ordem ==gt ACK pacote corrompido ==gt NAK
bull Podemos conseguir o mesmo efeito se ao inveacutes de enviarmos um NAK enviarmos um ACK do uacuteltimo corretamente recebido Ou seja ACK tambeacutem numerado
bull ACKs duplicados indicam ao remetente que o destinataacuterio natildeo recebeu corretamente o pacote seguinte agravequele do ACK duplo
bull rdt22 deve enviar o nuacutemero de sequecircncia no ACK
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21-2
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 33
bull rdt22 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 34
bull rdt22 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 35
bull Duas preocupaccedilotildees adicionais devem ser tratadas pelo protocolo1 Como detectar perda de pacotes2 O que fazer quando haacute perdas
bull As teacutecnicas jaacute discutidas atendem a segunda questatildeobull E para a primeira questatildeobull Suponha que o remetente transmita um pacote e que esse
pacote ou seu ACK seja perdido Nenhuma resposta chegaraacute ao remetente Se o remetente natildeo quiser esperar ==gt retransmite o pacote
bull Mas quanto o remetente precisa esperar para ter certeza que algo foi perdido Esperar um RTT Eacute muito difiacutecil estimar o RTT quanto mais ter certeza
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 36
bull Aleacutem disso o ideal seria que o protocolo se recuperasse da perda assim que possiacutevel
bull Na praacutetica O remetente faz uma escolha ponderada de um RTT provaacutevel mas natildeo
garantido que a perda tivesse acontecido Se natildeo receber um ACK nesse periacuteodo retransmite o pacote
bull Se o pacote sofrer um atraso longo pode haver retransmissatildeo mesmo que o pacote ou ACK natildeo tenham sido perdidos Possibilidade de pacotes de dados duplicados
bull Para implementar um mecanismo de retransmissatildeo com base no tempo eacute necessaacuterio um temporizador de contagem regressiva Accedilotildees iniciar atender parar
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 37
bull rdt30 remetente
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Transport Layer 3-38
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
pkt1
ack1
ack0
ack0
(a) no loss
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(b) packet loss
pkt1X
loss
pkt1timeout
resend pkt1
rdt30 in action
Transport Layer 3-39
rdt30 in action
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(c) ACK loss
ack1X
loss
pkt1timeout
resend pkt1
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) premature timeout delayed ACK
pkt1timeout
resend pkt1
ack1
send ack1
send pkt0rcv ack1
pkt0
ack1
ack0
send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
rcv pkt0
send ack0(detect duplicate)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 42
bull No coraccedilatildeo do problema do desempenho do rdt30 estaacute o fato de ele ser um protocolo do tipo pare e espere
bull Um protocolo pare e espere em operaccedilatildeo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 43
U remet =
0008
30008 = 000027
microseconds
L R RTT + L R
=
Desempenho do rdt30
rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso pacote 8000 bits
U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando
Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos Soluccedilatildeo
ndosmicrosseguR
Ldtrans 8
bps10
bits80009
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 44
Um protocolo com paralelismo em operaccedilatildeo
bull O ACK recebido eacute de que pacote
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 45
bull Envio com pare e espere
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 46
bull Envio com paralelismo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Aumento de utilizaccedilatildeopor fator de 3
U remet =
0024 30008
= 00008 microseconds
3 L R RTT + L R
=
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 31
bull rdt21 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 32
bull O protocolo rdt21 usa tanto o reconhecimento positivo como negativo do remetente ao destinataacuterio pacote fora de ordem ==gt ACK pacote corrompido ==gt NAK
bull Podemos conseguir o mesmo efeito se ao inveacutes de enviarmos um NAK enviarmos um ACK do uacuteltimo corretamente recebido Ou seja ACK tambeacutem numerado
bull ACKs duplicados indicam ao remetente que o destinataacuterio natildeo recebeu corretamente o pacote seguinte agravequele do ACK duplo
bull rdt22 deve enviar o nuacutemero de sequecircncia no ACK
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21-2
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 33
bull rdt22 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 34
bull rdt22 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 35
bull Duas preocupaccedilotildees adicionais devem ser tratadas pelo protocolo1 Como detectar perda de pacotes2 O que fazer quando haacute perdas
bull As teacutecnicas jaacute discutidas atendem a segunda questatildeobull E para a primeira questatildeobull Suponha que o remetente transmita um pacote e que esse
pacote ou seu ACK seja perdido Nenhuma resposta chegaraacute ao remetente Se o remetente natildeo quiser esperar ==gt retransmite o pacote
bull Mas quanto o remetente precisa esperar para ter certeza que algo foi perdido Esperar um RTT Eacute muito difiacutecil estimar o RTT quanto mais ter certeza
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 36
bull Aleacutem disso o ideal seria que o protocolo se recuperasse da perda assim que possiacutevel
bull Na praacutetica O remetente faz uma escolha ponderada de um RTT provaacutevel mas natildeo
garantido que a perda tivesse acontecido Se natildeo receber um ACK nesse periacuteodo retransmite o pacote
bull Se o pacote sofrer um atraso longo pode haver retransmissatildeo mesmo que o pacote ou ACK natildeo tenham sido perdidos Possibilidade de pacotes de dados duplicados
bull Para implementar um mecanismo de retransmissatildeo com base no tempo eacute necessaacuterio um temporizador de contagem regressiva Accedilotildees iniciar atender parar
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 37
bull rdt30 remetente
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Transport Layer 3-38
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
pkt1
ack1
ack0
ack0
(a) no loss
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(b) packet loss
pkt1X
loss
pkt1timeout
resend pkt1
rdt30 in action
Transport Layer 3-39
rdt30 in action
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(c) ACK loss
ack1X
loss
pkt1timeout
resend pkt1
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) premature timeout delayed ACK
pkt1timeout
resend pkt1
ack1
send ack1
send pkt0rcv ack1
pkt0
ack1
ack0
send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
rcv pkt0
send ack0(detect duplicate)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 42
bull No coraccedilatildeo do problema do desempenho do rdt30 estaacute o fato de ele ser um protocolo do tipo pare e espere
bull Um protocolo pare e espere em operaccedilatildeo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 43
U remet =
0008
30008 = 000027
microseconds
L R RTT + L R
=
Desempenho do rdt30
rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso pacote 8000 bits
U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando
Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos Soluccedilatildeo
ndosmicrosseguR
Ldtrans 8
bps10
bits80009
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 44
Um protocolo com paralelismo em operaccedilatildeo
bull O ACK recebido eacute de que pacote
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 45
bull Envio com pare e espere
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 46
bull Envio com paralelismo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Aumento de utilizaccedilatildeopor fator de 3
U remet =
0024 30008
= 00008 microseconds
3 L R RTT + L R
=
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 32
bull O protocolo rdt21 usa tanto o reconhecimento positivo como negativo do remetente ao destinataacuterio pacote fora de ordem ==gt ACK pacote corrompido ==gt NAK
bull Podemos conseguir o mesmo efeito se ao inveacutes de enviarmos um NAK enviarmos um ACK do uacuteltimo corretamente recebido Ou seja ACK tambeacutem numerado
bull ACKs duplicados indicam ao remetente que o destinataacuterio natildeo recebeu corretamente o pacote seguinte agravequele do ACK duplo
bull rdt22 deve enviar o nuacutemero de sequecircncia no ACK
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt21-2
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 33
bull rdt22 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 34
bull rdt22 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 35
bull Duas preocupaccedilotildees adicionais devem ser tratadas pelo protocolo1 Como detectar perda de pacotes2 O que fazer quando haacute perdas
bull As teacutecnicas jaacute discutidas atendem a segunda questatildeobull E para a primeira questatildeobull Suponha que o remetente transmita um pacote e que esse
pacote ou seu ACK seja perdido Nenhuma resposta chegaraacute ao remetente Se o remetente natildeo quiser esperar ==gt retransmite o pacote
bull Mas quanto o remetente precisa esperar para ter certeza que algo foi perdido Esperar um RTT Eacute muito difiacutecil estimar o RTT quanto mais ter certeza
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 36
bull Aleacutem disso o ideal seria que o protocolo se recuperasse da perda assim que possiacutevel
bull Na praacutetica O remetente faz uma escolha ponderada de um RTT provaacutevel mas natildeo
garantido que a perda tivesse acontecido Se natildeo receber um ACK nesse periacuteodo retransmite o pacote
bull Se o pacote sofrer um atraso longo pode haver retransmissatildeo mesmo que o pacote ou ACK natildeo tenham sido perdidos Possibilidade de pacotes de dados duplicados
bull Para implementar um mecanismo de retransmissatildeo com base no tempo eacute necessaacuterio um temporizador de contagem regressiva Accedilotildees iniciar atender parar
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 37
bull rdt30 remetente
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Transport Layer 3-38
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
pkt1
ack1
ack0
ack0
(a) no loss
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(b) packet loss
pkt1X
loss
pkt1timeout
resend pkt1
rdt30 in action
Transport Layer 3-39
rdt30 in action
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(c) ACK loss
ack1X
loss
pkt1timeout
resend pkt1
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) premature timeout delayed ACK
pkt1timeout
resend pkt1
ack1
send ack1
send pkt0rcv ack1
pkt0
ack1
ack0
send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
rcv pkt0
send ack0(detect duplicate)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 42
bull No coraccedilatildeo do problema do desempenho do rdt30 estaacute o fato de ele ser um protocolo do tipo pare e espere
bull Um protocolo pare e espere em operaccedilatildeo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 43
U remet =
0008
30008 = 000027
microseconds
L R RTT + L R
=
Desempenho do rdt30
rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso pacote 8000 bits
U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando
Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos Soluccedilatildeo
ndosmicrosseguR
Ldtrans 8
bps10
bits80009
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 44
Um protocolo com paralelismo em operaccedilatildeo
bull O ACK recebido eacute de que pacote
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 45
bull Envio com pare e espere
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 46
bull Envio com paralelismo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Aumento de utilizaccedilatildeopor fator de 3
U remet =
0024 30008
= 00008 microseconds
3 L R RTT + L R
=
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 33
bull rdt22 remetente
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 34
bull rdt22 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 35
bull Duas preocupaccedilotildees adicionais devem ser tratadas pelo protocolo1 Como detectar perda de pacotes2 O que fazer quando haacute perdas
bull As teacutecnicas jaacute discutidas atendem a segunda questatildeobull E para a primeira questatildeobull Suponha que o remetente transmita um pacote e que esse
pacote ou seu ACK seja perdido Nenhuma resposta chegaraacute ao remetente Se o remetente natildeo quiser esperar ==gt retransmite o pacote
bull Mas quanto o remetente precisa esperar para ter certeza que algo foi perdido Esperar um RTT Eacute muito difiacutecil estimar o RTT quanto mais ter certeza
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 36
bull Aleacutem disso o ideal seria que o protocolo se recuperasse da perda assim que possiacutevel
bull Na praacutetica O remetente faz uma escolha ponderada de um RTT provaacutevel mas natildeo
garantido que a perda tivesse acontecido Se natildeo receber um ACK nesse periacuteodo retransmite o pacote
bull Se o pacote sofrer um atraso longo pode haver retransmissatildeo mesmo que o pacote ou ACK natildeo tenham sido perdidos Possibilidade de pacotes de dados duplicados
bull Para implementar um mecanismo de retransmissatildeo com base no tempo eacute necessaacuterio um temporizador de contagem regressiva Accedilotildees iniciar atender parar
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 37
bull rdt30 remetente
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Transport Layer 3-38
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
pkt1
ack1
ack0
ack0
(a) no loss
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(b) packet loss
pkt1X
loss
pkt1timeout
resend pkt1
rdt30 in action
Transport Layer 3-39
rdt30 in action
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(c) ACK loss
ack1X
loss
pkt1timeout
resend pkt1
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) premature timeout delayed ACK
pkt1timeout
resend pkt1
ack1
send ack1
send pkt0rcv ack1
pkt0
ack1
ack0
send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
rcv pkt0
send ack0(detect duplicate)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 42
bull No coraccedilatildeo do problema do desempenho do rdt30 estaacute o fato de ele ser um protocolo do tipo pare e espere
bull Um protocolo pare e espere em operaccedilatildeo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 43
U remet =
0008
30008 = 000027
microseconds
L R RTT + L R
=
Desempenho do rdt30
rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso pacote 8000 bits
U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando
Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos Soluccedilatildeo
ndosmicrosseguR
Ldtrans 8
bps10
bits80009
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 44
Um protocolo com paralelismo em operaccedilatildeo
bull O ACK recebido eacute de que pacote
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 45
bull Envio com pare e espere
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 46
bull Envio com paralelismo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Aumento de utilizaccedilatildeopor fator de 3
U remet =
0024 30008
= 00008 microseconds
3 L R RTT + L R
=
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 34
bull rdt22 destinataacuterio
Transferecircncia confiaacutevel de dados sobre um canal com erros de bits rdt22
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 35
bull Duas preocupaccedilotildees adicionais devem ser tratadas pelo protocolo1 Como detectar perda de pacotes2 O que fazer quando haacute perdas
bull As teacutecnicas jaacute discutidas atendem a segunda questatildeobull E para a primeira questatildeobull Suponha que o remetente transmita um pacote e que esse
pacote ou seu ACK seja perdido Nenhuma resposta chegaraacute ao remetente Se o remetente natildeo quiser esperar ==gt retransmite o pacote
bull Mas quanto o remetente precisa esperar para ter certeza que algo foi perdido Esperar um RTT Eacute muito difiacutecil estimar o RTT quanto mais ter certeza
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 36
bull Aleacutem disso o ideal seria que o protocolo se recuperasse da perda assim que possiacutevel
bull Na praacutetica O remetente faz uma escolha ponderada de um RTT provaacutevel mas natildeo
garantido que a perda tivesse acontecido Se natildeo receber um ACK nesse periacuteodo retransmite o pacote
bull Se o pacote sofrer um atraso longo pode haver retransmissatildeo mesmo que o pacote ou ACK natildeo tenham sido perdidos Possibilidade de pacotes de dados duplicados
bull Para implementar um mecanismo de retransmissatildeo com base no tempo eacute necessaacuterio um temporizador de contagem regressiva Accedilotildees iniciar atender parar
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 37
bull rdt30 remetente
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Transport Layer 3-38
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
pkt1
ack1
ack0
ack0
(a) no loss
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(b) packet loss
pkt1X
loss
pkt1timeout
resend pkt1
rdt30 in action
Transport Layer 3-39
rdt30 in action
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(c) ACK loss
ack1X
loss
pkt1timeout
resend pkt1
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) premature timeout delayed ACK
pkt1timeout
resend pkt1
ack1
send ack1
send pkt0rcv ack1
pkt0
ack1
ack0
send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
rcv pkt0
send ack0(detect duplicate)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 42
bull No coraccedilatildeo do problema do desempenho do rdt30 estaacute o fato de ele ser um protocolo do tipo pare e espere
bull Um protocolo pare e espere em operaccedilatildeo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 43
U remet =
0008
30008 = 000027
microseconds
L R RTT + L R
=
Desempenho do rdt30
rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso pacote 8000 bits
U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando
Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos Soluccedilatildeo
ndosmicrosseguR
Ldtrans 8
bps10
bits80009
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 44
Um protocolo com paralelismo em operaccedilatildeo
bull O ACK recebido eacute de que pacote
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 45
bull Envio com pare e espere
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 46
bull Envio com paralelismo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Aumento de utilizaccedilatildeopor fator de 3
U remet =
0024 30008
= 00008 microseconds
3 L R RTT + L R
=
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 35
bull Duas preocupaccedilotildees adicionais devem ser tratadas pelo protocolo1 Como detectar perda de pacotes2 O que fazer quando haacute perdas
bull As teacutecnicas jaacute discutidas atendem a segunda questatildeobull E para a primeira questatildeobull Suponha que o remetente transmita um pacote e que esse
pacote ou seu ACK seja perdido Nenhuma resposta chegaraacute ao remetente Se o remetente natildeo quiser esperar ==gt retransmite o pacote
bull Mas quanto o remetente precisa esperar para ter certeza que algo foi perdido Esperar um RTT Eacute muito difiacutecil estimar o RTT quanto mais ter certeza
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 36
bull Aleacutem disso o ideal seria que o protocolo se recuperasse da perda assim que possiacutevel
bull Na praacutetica O remetente faz uma escolha ponderada de um RTT provaacutevel mas natildeo
garantido que a perda tivesse acontecido Se natildeo receber um ACK nesse periacuteodo retransmite o pacote
bull Se o pacote sofrer um atraso longo pode haver retransmissatildeo mesmo que o pacote ou ACK natildeo tenham sido perdidos Possibilidade de pacotes de dados duplicados
bull Para implementar um mecanismo de retransmissatildeo com base no tempo eacute necessaacuterio um temporizador de contagem regressiva Accedilotildees iniciar atender parar
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 37
bull rdt30 remetente
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Transport Layer 3-38
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
pkt1
ack1
ack0
ack0
(a) no loss
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(b) packet loss
pkt1X
loss
pkt1timeout
resend pkt1
rdt30 in action
Transport Layer 3-39
rdt30 in action
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(c) ACK loss
ack1X
loss
pkt1timeout
resend pkt1
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) premature timeout delayed ACK
pkt1timeout
resend pkt1
ack1
send ack1
send pkt0rcv ack1
pkt0
ack1
ack0
send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
rcv pkt0
send ack0(detect duplicate)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 42
bull No coraccedilatildeo do problema do desempenho do rdt30 estaacute o fato de ele ser um protocolo do tipo pare e espere
bull Um protocolo pare e espere em operaccedilatildeo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 43
U remet =
0008
30008 = 000027
microseconds
L R RTT + L R
=
Desempenho do rdt30
rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso pacote 8000 bits
U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando
Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos Soluccedilatildeo
ndosmicrosseguR
Ldtrans 8
bps10
bits80009
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 44
Um protocolo com paralelismo em operaccedilatildeo
bull O ACK recebido eacute de que pacote
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 45
bull Envio com pare e espere
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 46
bull Envio com paralelismo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Aumento de utilizaccedilatildeopor fator de 3
U remet =
0024 30008
= 00008 microseconds
3 L R RTT + L R
=
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 36
bull Aleacutem disso o ideal seria que o protocolo se recuperasse da perda assim que possiacutevel
bull Na praacutetica O remetente faz uma escolha ponderada de um RTT provaacutevel mas natildeo
garantido que a perda tivesse acontecido Se natildeo receber um ACK nesse periacuteodo retransmite o pacote
bull Se o pacote sofrer um atraso longo pode haver retransmissatildeo mesmo que o pacote ou ACK natildeo tenham sido perdidos Possibilidade de pacotes de dados duplicados
bull Para implementar um mecanismo de retransmissatildeo com base no tempo eacute necessaacuterio um temporizador de contagem regressiva Accedilotildees iniciar atender parar
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 37
bull rdt30 remetente
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Transport Layer 3-38
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
pkt1
ack1
ack0
ack0
(a) no loss
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(b) packet loss
pkt1X
loss
pkt1timeout
resend pkt1
rdt30 in action
Transport Layer 3-39
rdt30 in action
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(c) ACK loss
ack1X
loss
pkt1timeout
resend pkt1
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) premature timeout delayed ACK
pkt1timeout
resend pkt1
ack1
send ack1
send pkt0rcv ack1
pkt0
ack1
ack0
send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
rcv pkt0
send ack0(detect duplicate)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 42
bull No coraccedilatildeo do problema do desempenho do rdt30 estaacute o fato de ele ser um protocolo do tipo pare e espere
bull Um protocolo pare e espere em operaccedilatildeo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 43
U remet =
0008
30008 = 000027
microseconds
L R RTT + L R
=
Desempenho do rdt30
rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso pacote 8000 bits
U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando
Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos Soluccedilatildeo
ndosmicrosseguR
Ldtrans 8
bps10
bits80009
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 44
Um protocolo com paralelismo em operaccedilatildeo
bull O ACK recebido eacute de que pacote
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 45
bull Envio com pare e espere
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 46
bull Envio com paralelismo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Aumento de utilizaccedilatildeopor fator de 3
U remet =
0024 30008
= 00008 microseconds
3 L R RTT + L R
=
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 37
bull rdt30 remetente
Transferecircncia confiaacutevel de dados sobre um canal com perda e com erros de bits rdt30
Transport Layer 3-38
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
pkt1
ack1
ack0
ack0
(a) no loss
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(b) packet loss
pkt1X
loss
pkt1timeout
resend pkt1
rdt30 in action
Transport Layer 3-39
rdt30 in action
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(c) ACK loss
ack1X
loss
pkt1timeout
resend pkt1
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) premature timeout delayed ACK
pkt1timeout
resend pkt1
ack1
send ack1
send pkt0rcv ack1
pkt0
ack1
ack0
send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
rcv pkt0
send ack0(detect duplicate)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 42
bull No coraccedilatildeo do problema do desempenho do rdt30 estaacute o fato de ele ser um protocolo do tipo pare e espere
bull Um protocolo pare e espere em operaccedilatildeo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 43
U remet =
0008
30008 = 000027
microseconds
L R RTT + L R
=
Desempenho do rdt30
rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso pacote 8000 bits
U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando
Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos Soluccedilatildeo
ndosmicrosseguR
Ldtrans 8
bps10
bits80009
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 44
Um protocolo com paralelismo em operaccedilatildeo
bull O ACK recebido eacute de que pacote
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 45
bull Envio com pare e espere
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 46
bull Envio com paralelismo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Aumento de utilizaccedilatildeopor fator de 3
U remet =
0024 30008
= 00008 microseconds
3 L R RTT + L R
=
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Transport Layer 3-38
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
pkt1
ack1
ack0
ack0
(a) no loss
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(b) packet loss
pkt1X
loss
pkt1timeout
resend pkt1
rdt30 in action
Transport Layer 3-39
rdt30 in action
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(c) ACK loss
ack1X
loss
pkt1timeout
resend pkt1
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) premature timeout delayed ACK
pkt1timeout
resend pkt1
ack1
send ack1
send pkt0rcv ack1
pkt0
ack1
ack0
send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
rcv pkt0
send ack0(detect duplicate)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 42
bull No coraccedilatildeo do problema do desempenho do rdt30 estaacute o fato de ele ser um protocolo do tipo pare e espere
bull Um protocolo pare e espere em operaccedilatildeo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 43
U remet =
0008
30008 = 000027
microseconds
L R RTT + L R
=
Desempenho do rdt30
rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso pacote 8000 bits
U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando
Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos Soluccedilatildeo
ndosmicrosseguR
Ldtrans 8
bps10
bits80009
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 44
Um protocolo com paralelismo em operaccedilatildeo
bull O ACK recebido eacute de que pacote
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 45
bull Envio com pare e espere
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 46
bull Envio com paralelismo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Aumento de utilizaccedilatildeopor fator de 3
U remet =
0024 30008
= 00008 microseconds
3 L R RTT + L R
=
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Transport Layer 3-39
rdt30 in action
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
rcv pkt0
send ack0
send ack1
send ack0
rcv ack0
send pkt0
send pkt1
rcv ack1
send pkt0rcv pkt0
pkt0
pkt0
ack1
ack0
ack0
(c) ACK loss
ack1X
loss
pkt1timeout
resend pkt1
rcv pkt1send ack1
(detect duplicate)
pkt1
sender receiver
rcv pkt1
send ack0rcv ack0
send pkt1
send pkt0rcv pkt0
pkt0
ack0
(d) premature timeout delayed ACK
pkt1timeout
resend pkt1
ack1
send ack1
send pkt0rcv ack1
pkt0
ack1
ack0
send pkt0rcv ack1 pkt0
rcv pkt0send ack0ack0
rcv pkt0
send ack0(detect duplicate)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 42
bull No coraccedilatildeo do problema do desempenho do rdt30 estaacute o fato de ele ser um protocolo do tipo pare e espere
bull Um protocolo pare e espere em operaccedilatildeo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 43
U remet =
0008
30008 = 000027
microseconds
L R RTT + L R
=
Desempenho do rdt30
rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso pacote 8000 bits
U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando
Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos Soluccedilatildeo
ndosmicrosseguR
Ldtrans 8
bps10
bits80009
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 44
Um protocolo com paralelismo em operaccedilatildeo
bull O ACK recebido eacute de que pacote
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 45
bull Envio com pare e espere
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 46
bull Envio com paralelismo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Aumento de utilizaccedilatildeopor fator de 3
U remet =
0024 30008
= 00008 microseconds
3 L R RTT + L R
=
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 42
bull No coraccedilatildeo do problema do desempenho do rdt30 estaacute o fato de ele ser um protocolo do tipo pare e espere
bull Um protocolo pare e espere em operaccedilatildeo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 43
U remet =
0008
30008 = 000027
microseconds
L R RTT + L R
=
Desempenho do rdt30
rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso pacote 8000 bits
U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando
Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos Soluccedilatildeo
ndosmicrosseguR
Ldtrans 8
bps10
bits80009
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 44
Um protocolo com paralelismo em operaccedilatildeo
bull O ACK recebido eacute de que pacote
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 45
bull Envio com pare e espere
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 46
bull Envio com paralelismo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Aumento de utilizaccedilatildeopor fator de 3
U remet =
0024 30008
= 00008 microseconds
3 L R RTT + L R
=
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 43
U remet =
0008
30008 = 000027
microseconds
L R RTT + L R
=
Desempenho do rdt30
rdt30 funciona mas com desempenho ruim ex enlace 1 Gbps 15 ms atraso pacote 8000 bits
U remet utilizaccedilatildeo ndash fraccedilatildeo do tempo remet ocupado enviando
Pct 1 KB cada 30 ms -gt 33 kBs vazatildeo em enlace de 1 Gbps protocolo de rede limita uso de recursos fiacutesicos Soluccedilatildeo
ndosmicrosseguR
Ldtrans 8
bps10
bits80009
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 44
Um protocolo com paralelismo em operaccedilatildeo
bull O ACK recebido eacute de que pacote
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 45
bull Envio com pare e espere
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 46
bull Envio com paralelismo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Aumento de utilizaccedilatildeopor fator de 3
U remet =
0024 30008
= 00008 microseconds
3 L R RTT + L R
=
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 44
Um protocolo com paralelismo em operaccedilatildeo
bull O ACK recebido eacute de que pacote
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 45
bull Envio com pare e espere
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 46
bull Envio com paralelismo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Aumento de utilizaccedilatildeopor fator de 3
U remet =
0024 30008
= 00008 microseconds
3 L R RTT + L R
=
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 45
bull Envio com pare e espere
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 46
bull Envio com paralelismo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Aumento de utilizaccedilatildeopor fator de 3
U remet =
0024 30008
= 00008 microseconds
3 L R RTT + L R
=
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 46
bull Envio com paralelismo
Protocolos de transferecircncia confiaacutevel de dados com paralelismo
Aumento de utilizaccedilatildeopor fator de 3
U remet =
0024 30008
= 00008 microseconds
3 L R RTT + L R
=
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 47
bull Em um protocolo Go-Back-N (GBN) o remetente eacute autorizado a transmitir muacuteltiplos pacotes sem esperar por um reconhecimento
bull Poreacutem fica limitado a ter natildeo mais do que algum nuacutemero maacuteximo permitido N (tamanho da janela) de pacotes natildeo reconhecidos na ldquotubulaccedilatildeordquo
bull Visatildeo do remetente para os nuacutemeros de sequecircncia no protocolo Go-Back-N
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 48
bull Descriccedilatildeo da FSM estendida do remetente GBNbull Quem consegue descrever o funcionamento
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 49
bull Descriccedilatildeo da FSM estendida do destinataacuterio GBN
Go-Back-N (GBN)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 50
Go-Back-N (GBN) em operaccedilatildeo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 51
bull Protocolos de repeticcedilatildeo seletiva (SR) evitam retransmissotildees desnecessaacuterias
bull Eles fazem o remetente retransmitir apenas os pacotes suspeitos de terem sido recebidos com erro no destinataacuterio
bull Essa retransmissatildeo individual soacute quando necessaacuteria exige que o destinataacuterio reconheccedila individualmente os pacotes recebidos de modo correto
Repeticcedilatildeo seletiva (SR)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 52
Repeticcedilatildeo seletiva (SR)
Transport Layer 3-53
Selective repeatdilemma
example seq rsquos 0 1 2 3 window size=3
receiver window(after receipt)
sender window(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2 pkt0
timeoutretransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2XXX
will accept packetwith seq number 0
(b) oops
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packetwith seq number 0
0 1 2 3 0 1 2 pkt3
(a) no problem
receiver canrsquot see sender sidereceiver behavior identical in both casessomethingrsquos (very) wrong
receiver sees no difference in two scenarios
duplicate data accepted as new in (b)
Q what relationship between seq size and window size to avoid problem in (b)
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 54
Resumo de mecanismos de transferecircncia confiaacutevel de dados e sua utilizaccedilatildeo
bull Soma de verificaccedilatildeo - Usada para detectar erros de bits em um pacote transmitido
bull Temporizador - Usado para controlar a temporizaccedilatildeoretransmissatildeo de um pacote possivelmente porque o pacote (ou seu ACK) foi perdido dentro do canal
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 55
bull Nuacutemero de sequecircncia - Usado para numeraccedilatildeo sequencial de segmentos de dados que transitam do remetente ao destinataacuterio Ou seja pode-se ter vaacuterios segmentos transitando simultaneamente no canal de comunicaccedilatildeo maximizando assim o uso desse canal
bull Reconhecimento - Usado pelo destinataacuterio para avisar o remetente que um pacote ou conjunto de pacotes foi recebido corretamente
bull Janela paralelismo - O remetente pode ficar restrito a enviar somente pacotes com nuacutemeros de sequecircncia que caiam dentro de uma determinada faixa
Transporte orientado para conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 56
bull Uma conexatildeo TCP provecirc um serviccedilo full-duplex
bull A conexatildeo TCP eacute sempre ponto a ponto
bull Uma vez estabelecida uma conexatildeo TCP dois processos de aplicaccedilatildeo podem enviar dados um para o outro 3-way handshake jaacute estabelecendo o MSS
bull O TCP combina cada porccedilatildeo de dados do cliente com um cabeccedilalho TCP formando assim segmentos TCP
A conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 57
Estrutura do segmento TCPURG dados urgentes
(quase natildeo usado)
ACK ACKvaacutelido
PSH empurrar dados agora
RST SYN FINestab conexatildeo
soma de verificaccedilatildeo
da Internet ndash todo o segmento(como em UDP)
bytes destinataacuteriopode aceitar
contagem porbytes de dados(natildeo segmentos)
Opcional e de comprimentovariaacutevel utilizado paranegociar o MSS ou fatorde escala em redes dealta velocidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 58
TCP Estabelecendo e fechando conexotildees
3-way handshakeFinalizando
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 59
s sequecircncia e ACKs do TCP
Cenaacuterio preestabelecido telnet simples
rsquos de sequecircnciandash ldquonuacutemerordquo na cadeia de
bytes do 1o byte nos dados do segmento
ACKsndash seq do proacuteximo byte
esperado do outro ladondash ACK cumulativo
P como o destinataacuterio trata segmentos fora de ordem
ndash R TCP natildeo diz ndash a criteacuterio do implementador
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 60
Tempo de ida e volta e timeout do TCP
P Como definir o valor de timeout do TCP
maior que RTTndash mas RTT varia
muito curto timeout prematurondash retransmissotildees
desnecessaacuterias muito longo baixa
reaccedilatildeo a perda de segmento
P Como estimar o RTT SampleRTT tempo medido
da transmissatildeo do segmento ateacute receber o ACKndash ignora retransmissotildees
SampleRTT variaraacute queremos RTT estimado ldquomais estaacutevelrdquondash meacutedia de vaacuterias mediccedilotildees
recentes natildeo apenas SampleRTT atual
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 61
EstimatedRTT = (1- )EstimatedRTT + SampleRTT
meacutedia moacutevel exponencial ponderada influecircncia da amostra passada diminui exponencialmente
raacutepido valor tiacutepico = 0125
Tempo de ida e volta e timeout do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 62
Amostras de RTTs estimados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 63
definindo o timeout EstimtedRTT mais ldquomargem de seguranccedilardquo
ndash grande variaccedilatildeo em EstimatedRTT -gt maior margem de seg primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-)DevRTT + |SampleRTT-EstimatedRTT|
(geralmente = 025)
depois definir intervalo de timeout
Tempo de ida e volta e timeout do TCP
TimeoutIntervalinicial
= 1 sldquomargem de seguranccedilardquo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 64
TCP cenaacuterios de retransmissatildeo
Hosp A
Seq = 100 20 bytes dados
ACK = 100
tempoTimeout prematuro
Hosp B
Seq = 92 8 bytes dados
ACK = 120
Seq = 92 8 bytes dados
Seq
= 9
2 tim
eout
ACK = 120
Hosp A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio de ACK perdido
Hosp B
X
Seq = 92 8 bytes dados
ACK = 100
tempoS
eq =
92
timeo
ut
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 65
TCP cenaacuterios de retransmissatildeo
Host A
Seq = 92 8 bytes dados
ACK = 100
perda
timeo
ut
Cenaacuterio ACK cumulativo
Host B
X
Seq = 100 20 bytes dados
ACK = 120
tempo
Transport Layer 3-66
TCP fast retransmit time-out period
often relatively long long delay before
resending lost packet detect lost
segments via duplicate ACKs sender often sends
many segments back-to-back
if segment is lost there will likely be many duplicate ACKs
if sender receives 3 ACKs for same data(ldquotriple duplicate ACKsrdquo) resend unacked segment with smallest seq
likely that unacked segment lost so donrsquot wait for timeout
TCP fast retransmit
Transport Layer 3-67
X
fast retransmit after sender receipt of triple duplicate ACK
Host BHost A
Seq=92 8 bytes of data
ACK=100
timeo
ut ACK=100
ACK=100
ACK=100
TCP fast retransmit
Seq=100 20 bytes of data
Seq=100 20 bytes of data
Evento no receptor
Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos
Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente
Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado
Chegada de segmento queparcial ou completamentepreenche o gap
Accedilatildeo do receptor TCP
ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeo chegarenvia ACK
Imediatamente envia um ACKcumulativo
Envia ACK duplicado indicando nuacutemero de sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na borda inferior do gap
Geraccedilatildeo de ACK[RFC 1122 RFC 2581]
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 69
bull O nuacutemero de sequecircncia para um segmento eacute o nuacutemero do primeiro byte do segmento
bull O nuacutemero de reconhecimento que o hospedeiro A atribui a seu segmento eacute o nuacutemero de sequecircncia do proacuteximo byte que ele estiver aguardando do hospedeiro B
bull Como o TCP somente reconhece bytes ateacute o primeiro byte que estiver faltando na cadeia dizemos que o TCP provecirc reconhecimentos cumulativos
Nuacutemeros de sequecircncia e nuacutemeros de reconhecimento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 70
bull O TCP cria um serviccedilo de transferecircncia confiaacutevel de dados sobre o serviccedilo de melhor esforccedilo do IP
bull O serviccedilo de transferecircncia garante que a cadeia de bytes eacute idecircntica agrave cadeia de bytes enviada pelo sistema final que estaacute do outro lado da conexatildeo
bull Os procedimentos recomendados no [RFC 6298] para gerenciamento de temporizadores TCP utilizam apenas um uacutenico temporizador de retransmissatildeo
Transferecircncia confiaacutevel de dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 71
bull O TCP provecirc um serviccedilo de controle de fluxo agraves suas aplicaccedilotildees para eliminar a possibilidade de o remetente estourar o buffer do destinataacuterio
bull Controle de fluxo eacute um serviccedilo de compatibilizaccedilatildeo de velocidades
bull O TCP oferece serviccedilo de controle de fluxo fazendo que o remetente mantenha uma variaacutevel denominada janela de recepccedilatildeo
Controle de fluxo
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 72
Regulaccedilatildeo da taxa de envio
Uma rede de transmissatildeo raacutepida eum receptor de baixa capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 73
Controle de fluxo TCP
lado receptor da conexatildeo TCP tem um buffer de recepccedilatildeo
serviccedilo de compatibilizaccedilatildeo de velocidades compatibiliza a taxa de envio do remetente com a de leitura da aplicaccedilatildeo receptora
processo da aplicaccedilatildeo pode ser lento na leitura do buffer
remetente natildeo estouraraacute buffer do destinataacuterio transmitindo muitos dados muito rapidamente
controle de fluxo
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 74
Controle de fluxo TCP como funciona
(suponha que destinataacuterio TCP descarte segmentos fora de ordem)
espaccedilo de buffer natildeo usado = rwnd (slide 48) = RcvBuffer-[LastByteRcvd -
LastByteRead]
destinataacuterio anuncia espaccedilo de buffer natildeo usado incluindo valor de rwnd no cabeccedilalho do segmento
remetente limita de bytes com ACK a rwndndash garante que buffer do
destinataacuterio natildeo estoura
Dados TCP(no buffer)
Espaccedilo de buffer semuso no momento
Processo daaplicaccedilatildeo
datagramaIP
rwndRcvBuffer
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 75
Gerenciamento da conexatildeo TCP
lembre-se Remetente e destinataacuterio TCP estabelecem ldquoconexatildeordquo antes que troquem segmentos dados
inicializa variaacuteveis TCPndash s seqndash buffers informaccedilatildeo de
controle de fluxo (p e RcvWindow)
cliente inicia a conexatildeo Socket clientSocket = new
Socket(hostnameport ) servidor contactado pelo
cliente Socket connectionSocket =
welcomeSocketaccept()
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 76
Gerenciamento da conexatildeo TCP
apresentaccedilatildeo de 3 vias
etapa 1 hosp cliente envia segmento SYN do TCP ao servidor
ndash especifica seq inicialndash sem dados
etapa 2 hosp servidor recebe SYN responde com segmento SYNACK
ndash servidor aloca buffersndash especifica seq inicial do
servidor
etapa 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 77
fechando uma conexatildeo
cliente fecha socket clientSocketclose()
etapa 1 sistema final do cliente envia segmento de controle TCP FIN ao servidor
etapa 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
espe
ra
tem
poriz
ada
Gerenciamento da conexatildeo TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 79
Controle de congestionamento
Uma rede de transmissatildeo lenta eum receptor de alta capacidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 80
bull As causas e os custos do congestionamento
Cenaacuterio de congestionamento 1 duas conexotildees compartilhando um uacutenico roteador com nuacutemero infinito de buffers
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 81
bull As causas e os custos do congestionamentoCenaacuterio de congestionamento 1 vazatildeo e atraso em funccedilatildeo da taxa de envio do hospedeiro
ldquocustosrdquo do congestionamento Aumento de atrasos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 82
bull As causas e os custos do congestionamento
Cenaacuterio 2 dois hospedeiros (com retransmissotildees) e um roteador com buffers finitos
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 83
a) Caso ideal (vazatildeo)
b) retransmissatildeo ldquoperfeitardquo apenas quando haacute perda
c) retransmissatildeo do pacote adiado (natildeo perdido) torna maior (que
o caso perfeito ) para o mesmo
in
out
=
in
out
gt
in
out
ldquocustosrdquo do congestionamento mais trabalho (retransmissatildeo) para determinada ldquovazatildeordquo retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do
pacote
R2
R2in
ou
t
b
R2
R2in
ou
t
a
R2
R2in
ou
t
c
R4
R3
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 84
bull As causas e os custos do congestionamento
Cenaacuterio 3 quatro remetentesroteadores com buffers finitos e trajetos com muacuteltiplos roteadores
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 85
outro ldquocustordquo do congestionamento quando pacote eacute descartado qualquer capacidade
de transmissatildeo anterior usada para esse pacote foi desperdiccedilada
Host A
Host B
o
u
t
Princiacutepios de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 86
Controle de congestionamento fim a fim
bull A camada de rede natildeo fornece nenhum suporte expliacutecito agrave camada de transporte com a finalidade de controle de congestionamento
Controle de congestionamento assistido pela rede
bull Os componentes da camada de rede (isto eacute roteadores) fornecem retroalimentaccedilatildeo especiacutefica de informaccedilotildees ao remetente a respeito do estado de congestionamento na rede Natildeo usual
Mecanismos de controle de congestionamento
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 87
bull A abordagem adotada pelo TCP eacute obrigar cada remetente a limitar a taxa agrave qual enviam traacutefego para sua conexatildeo como uma funccedilatildeo do congestionamento de rede percebido
Se um remetente TCP perceber que haacute pouco congestionamento no caminho entre ele e o destinataacuterio aumentaraacute sua taxa de envio
Se perceber que haacute congestionamento reduziraacute sua taxa de
envio
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 88
bull Mas essa abordagem levanta trecircs questotildees
1 Como um remetente TCP limita a taxa pela qual envia traacutefego para sua conexatildeo
2 Como um remetente TCP percebe que haacute congestionamento entre ele e o destinataacuterio
3 Que algoritmo o remetente deve utilizar para modificar sua taxa de envio como uma funccedilatildeo do congestionamento fim a fim percebido
Controle de congestionamento no TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 89
bull Partida lenta TCP
Partida lenta
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 90
1) Cwnd = 1 MSS inicialmente
2) Partida lenta a cada rodada redefine cwnd = cwnd 2
3) Perda de pacotes (esgotamento de temporizaccedilatildeo ndash problema grave) ==gt cwnd = 1 (Tahoe ou Reno)
4) Prevenccedilatildeo de congestionamento apoacutes atingir sstresh cwnd = cwnd + 1
5) Trecircs acks duplicados (buraco no ldquofluxordquo ndash problema brando) entra no estado prevenccedilatildeo de congestionamento e redefine cwnd = 1 (Tahoe) ou cwnd = sstresh (Reno)
6) Sstresh = cwnd2 quando satildeo detectados problemas
Quantidade de dados natildeo reconhecidas no TCP = min(CongWin RecWin)
Controle de congestionamento TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 91
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 93
bull Evoluccedilatildeo da janela de congestionamento do TCP (Tahoe e Reno ndash mais usual)
Recuperaccedilatildeo raacutepida
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 94
Controle de congestionamento TCP
Partida lenta seguida por aumento aditivo no TCP Tahoe
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 95
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 96
Controle de congestionamento TCP
Recuperaccedilatildeo raacutepida e modelo dente serra do TCP Reno
3 ACKs duplicados
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 97
bull O controle de congestionamento AIMD (Additive-increase Multiplicative-Decrease) faz surgir o comportamento semelhante a ldquodentes de serrardquo
bull httpsmediapearsoncmgcomawecs_kurose_compnetwork_7cwcontentinteractiveanimationstcp-congestionindexhtml
Controle de congestionamento no TCP retrospectiva
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 98
O que eacute throughput meacutedio do TCP como uma funccedilatildeo do tamanho da janela e do RTTignore a partida lenta
Deixe W ser o tamanho da janela quando ocorre perda
Quando a janela eacute W o throughput eacute WRTT
Logo apoacutes a perda a janela cai para W2 e o throughput para W2RTT
Throughput meacutedio 075 WRTT (75 WRTT)
TCP throughput
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 99
Exemplo segmento de 1500 bytes RTT de 100 ms deseja 10 Gbps de throughput
Requer tamanho de janela W = 83333 para os segmentos em tracircnsito
Throughput em termos da taxa de perda
L (Probabilidade de perda de segmentos) = 210-10 Uau
Satildeo necessaacuterias novas versotildees de TCP para alta velocidade
LRTT
MSS221
Futuro do TCP
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 100
bull Duas conexotildees TCP compartilhando um uacutenico enlace congestionado
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 101
bull Vazatildeo alcanccedilada pelas conexotildees TCP 1 e TCP 2bull Ambas conexotildees em algum momento estatildeo com vazatildeo Abull Ambas vatildeo aumentando a vazatildeo ateacute ocorrer perda ndash Bbull Sstresh cai pela metade e ambas migram para Chellip
Equidade
Red
es d
e C
om
pu
tad
ore
s I
2017 Aacuterea de Telecomunicaccedilotildees 102
Equumlidade e UDP Aplicaccedilotildees multimedia normalmente natildeo usam TCP
Natildeo querem a taxa estrangulada pelo controle de congestionamento
Em vez disso usam UDP Trafega aacuteudioviacutedeo a taxas constantes toleram perda de pacotes
Equumlidade e conexotildees TCP paralelas Nada previne as aplicaccedilotildees de abrirem conexotildees paralelas entre 2 hospedeiros
ndash Consequecircncia
Web browsers fazem isso
Exemplo enlace de taxa R suportando 9 conexotildees Nova aplicaccedilatildeo pede 1 TCP obteacutem taxa de R10 Nova aplicaccedilatildeo pede 11 TCPs obteacutem R2
Equidade