Transport Layer 3-1
Capiacutetulo 3Camada de Transporte
Computer Networking A Top Down Approach 5th edition Jim Kurose Keith RossAddison-Wesley July 2009
A note on the use of these ppt slidesWersquore making these slides freely available to all (faculty students readers) Theyrsquore in PowerPoint form so you can add modify and delete slides (including this one) and slide content to suit your needs They obviously represent a lot of work on our part In return for use we only ask the following If you use these slides (eg in a class) in substantially unaltered form that you mention their source (after all wersquod like people to use our book) If you post any slides in substantially unaltered form on a www site that you note that they are adapted from (or perhaps identical to) our slides and note our copyright of this material
Thanks and enjoy JFKKWR
All material copyright 1996-2009JF Kurose and KW Ross All Rights Reserved
Transport Layer 3-2
Capiacutetulo 3 Camada de Transporte
Objetivos
Entender os princiacutepiosrelacionados aosserviccedilos da camada de transporte
multiplexaccedilatildeodemulti-plexaccedilatildeo
Transferecircncia confiaacutevelde dados
Controle de fluxo
Controle de congestionamento
Aprender sobre osprotocolos da camada de transporte na Internet
UDP transporte semconexatildeo
TCP transporte orientado agraveconexatildeo
Controle de congestionamento no TCP
Transport Layer 3-3
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camada de Transporte
32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
33 Transporte semconexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevel de dados
35 Transporte orientado agraveconexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento da conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento no TCP
Transport Layer 3-4
Protocolos e Serviccedilos de Transporte
Provecirc comunicaccedilatildeo loacutegicaentre processos de aplicaccedilatildeoexecutando em hosts diferentes
Os protocolos de transporteexecutam nos sistemas finais
lado do emissor quebra as mensagens da aplic emsegmentos e passa-os paraa camada de rede
lado do receptor remontaos segmentos namensagem e passa-a paraa camada de aplic
applicationtransportnetworkdata linkphysical
applicationtransportnetworkdata linkphysical
Transporteloacutegico
fim-a-fim
Transport Layer 3-5
Camada de Transporte x Camada de Rede
Camada de rede comunicaccedilatildeo loacutegica entre hosts
Camada de transportecomunicaccedilatildeo loacutegica entre processos depende de (e melhora os) serviccedilos
da camada de rede
Transport Layer 3-6
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camada de Transporte
32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
33 Transporte semconexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevel de dados
35 Transporte orientado agraveconexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento da conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento no TCP
Transport Layer 3-7
Multiplexaccedilatildeodemultiplexaccedilatildeo
aplicaccedilatildeo
transporte
rede
enlace
fiacutesica
P1 aplicaccedilatildeo
transporte
rede
enlace
fiacutesica
aplicaccedilatildeo
transporte
rede
enlace
fiacutesica
P2P3 P4P1
host 1 host 2 host 3
= processo= socket
Entrega os segmentos recebidosno socket correto
Demultiplexaccedilatildeo no host receptor
Coleta os dados dos muacuteltiplossockets e encapsula-os como cabeccedilalho (posteriormenteutilizado na demultiplexaccedilatildeo)
Multiplexaccedilatildeo no host emissor
Transport Layer 3-8
Como trabalha a demultiplexaccedilatildeo host recebe datagramas IP
cada datagrama possui o endereccedilo IP da origem e o endereccedilo IP do destino
cada datagrama carrega 1 segmento da camada de transporte
cada segmento possui osnuacutemeros das portas de origem e de destino
o host utiliza os endereccedilos IP e os nuacutemeros das portas paraencaminhar o segmento aosocket apropriado
da porta de origem
da porta dedestino
32 bits
dado da aplicaccedilatildeo(mensagem)
outros campos docabeccedilalho
Formato do segmento TCPUDP
Transport Layer 3-9
Demultiplexaccedilatildeo sem conexatildeo
Cria sockets com nuacutemerosde porta
DatagramSocket mySocket1 = new DatagramSocket(12534)
DatagramSocket mySocket2 = new DatagramSocket(12535)
O socket UDP eacute identificadopor uma tupla de doiselementos
(endereccedilo IP destino nuacutemero porta de destino)
quando o host recebe um segmento UDP
checa o nuacutemero da porta de destino no segmento
direciona o segmento UDP para o socket que conteacutemaquele numero
datagramas IP com endereccedilosIP origem diferentes eounuacutemeros de porta de origem diferentes satildeo encaminhados ao mesmo socket
Transport Layer 3-10
Demux sem conexatildeo (cont)
DatagramSocket serverSocket = new DatagramSocket(6428)
ClienteIPB
P2
clienteIP A
P1P1P3
servidorIP C
SP 6428
DP 9157
SP 9157
DP 6428
SP 6428
DP 5775
SP 5775
DP 6428
SP provecirc ldquoendereccedilo de retornordquo
Transport Layer 3-11
Demux orientado agrave conexatildeo
O socket TCP eacuteidentificado por umatupla de 4 elementos
Endereccedilo IP de origem Nuacutemero da porta de
origem Endereccedilo IP de destino Nuacutemero da porta de
destino
host receptor utiliza osquatro valores paraencaminhar o segmentoao socket apropriado
O servidor pode suportarvaacuterios sockets TCP simultaneamente
cada socket eacute identificadopela sua tupla-4
Servidores Web possuemdiferentes sockets paracada conexatildeo com o cliente
HTTP natildeo-persistenteteraacute um socket diferentepara cada requisiccedilatildeo
Transport Layer 3-12
Demux orientado agrave conexatildeo(cont)
ClienteIPB
P1
clienteIP A
P1P2P4
servidorIP C
SP 9157
DP 80
SP 9157
DP 80
P5 P6 P3
D-IPC
S-IP A
D-IPC
S-IP B
SP 5775
DP 80
D-IPC
S-IP B
Transport Layer 3-13
Connection-oriented demux Servidor Web com Threads
ClienteIPB
P1
clienteIP A
P1P2
servidorIP C
SP 9157
DP 80
SP 9157
DP 80
P4 P3
D-IPC
S-IP A
D-IPC
S-IP B
SP 5775
DP 80
D-IPC
S-IP B
Transport Layer 3-14
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camada de Transporte
32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
33 Transporte semconexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevel de dados
35 Transporte orientado agraveconexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento da conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento no TCP
Transport Layer 3-15
UDP User Datagram Protocol [RFC 768]
Protocolo de transporteInternet ldquosem gordurasrdquo
Serviccedilo ldquomelhor esforccedilordquo os segmentos UDP podem
Ser perdidos
Ser entregues fora de ordem agrave aplicaccedilatildeo
Sem conexatildeo sem handshaking entre
o emissor UDP e o receptor UDP
cada segmento UDP eacutemanipuladoindependentemente dos outros
Porque existe o UDP Sem estabelecimento de
conexatildeo (a conexatildeo incluiatraso)
simples natildeo manteacutem o estado da conexatildeo no emissor e no receptor
Cabeccedilalho pequeno no segmento
Sem controle de congestionamento UDP pode enviar segmentos tatildeoraacutepido quanto desejado (e possiacutevel)
Transport Layer 3-16
Mais sobre o UDP
Geralmente utilizado emaplicaccedilotildees envolvendostreaming multimiacutedia
Tolerante a perdas Sensiacutevel agrave taxa
Uso de UDP DNS SNMP
Transferecircncia confiaacutevelsobre o UDP adicionarconfiabilidade no niacutevel daaplicaccedilatildeo
Recuperaccedilatildeo de erroespeciacutefica da aplicaccedilatildeo
da portade origem
32 bits
Dado da aplicaccedilatildeo(mensagem)
Formato do segmento UDP
tamanho checksumTamanho emBytes do
segmento UDPincluindo ocabeccedilalho
da portade destino
Transport Layer 3-17
Checksum UDP
Emissor Trata o conteuacutedo do
segmento como umasequecircncia de inteiros de 16 bits
checksum adiccedilatildeo (soma em complemento de 1)
o emissor coloca o valor do checksum no campo de checksum do UDP
Receptor Computa o checksum do
segmento recebido
Checa se o checksum computado eacute igual ao valor encontrado no campo checksum
NO ndash erro detectado
YES ndash nenhum errodectetado (entretantopode exister erro)
Objetivo detetar ldquoerrosrdquo no segmento transmitido
Transport Layer 3-18
Exemplo Internet Checksum Nota
Na adiccedilatildeo dos valores um carryout do bit maissignificativo deve ser adicionado ao resultado
Exemplo adiccedilatildeo de dois inteiros de 16 bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
wraparound
sumchecksum
Transport Layer 3-19
bull 31 Serviccedilos da camada de transporte
bull 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
bull 33 Transporte natildeo orientado agrave conexatildeo UDP
bull 34 Princiacutepios de transferecircncia confiaacutevel de dados
bull 35 Transporte orientado agrave conexatildeo TCPbull Estrutura do segmentobull Transferecircncia confiaacutevel de dadosbull Controle de fluxobull Gerenciamento de conexatildeo
bull 36 Princiacutepios de controle de congestionamento
bull 37 Controle de congestionamento do TCP
Camada de transporte
Transport Layer 3-20
bull Importante nas camadasde aplicaccedilatildeo transportee enlace
bull Top 10 na lista dos toacutepicos mais importantsde redes
bull Caracteriacutesticas dos canaisnatildeo confiaacuteveisdeterminaratildeo a complexidade dos protocolos confiaacuteveis de transferecircncia de dados (rdt)
Princiacutepios de transferecircncia confiaacutevel de dados
Transport Layer 3-21
ladotransmissor
ladoreceptor
rdt_send() chamada da camada superior (ex pela aplicaccedilatildeo) Passa dados paraentregar agrave camada superior receptora
udt_send() chamada pela entidadede transporte para transferir pacotes
para o receptor sobre o canal natildeoconfiaacutevel
rdt_rcv() chamada quando o pacote chegaao lado receptor do canal
deliver_data() chamada pelaentidade de transporte para
entregar dados agrave camada superior
Transferecircncia confiaacutevel o ponto de partida
Transport Layer 3-22
Etapas
bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees
bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor
estado1
estado2
evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado
estado quando neste ldquoestadordquoo proacuteximo estado fica
unicamente determinadopelo proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel o ponto de partida
Transport Layer 3-23
bull Canal de transmissatildeoperfeitamente confiaacutevel
bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes
bull FSMs separadas paratransmissor e receptor
bull Transmissor envia dados parao canal subjacente
bull Receptor lecirc os dados do canal subjacente
rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis
Transport Layer 3-24
rdt20 canal com erros de bit
bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits
bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente
bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros
bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK
bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender
Transport Layer 3-25
rdt20 especificaccedilatildeo FSM
Transport Layer 3-26
aguardachamadade cima
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 operaccedilatildeo com ausecircncia de erros
Transport Layer 3-27
aguardachamadade cima
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) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 cenaacuterio de erro
Transport Layer 3-28
O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata
Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada
pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes
duplicados
Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do
receptor
rdt20 tem um problema fatal
Transport Layer 3-29
rdt21 transmissor trata ACKNAKsperdidos
rdt21 receptor trata ACKNAKsperdidos
Wait for 0 from below
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Wait for 1 from below
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
Transport Layer 3-31
Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados
bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1
Receptorbull Deve verificar se o pacote recebido eacute duplicado
bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor
rdt21 discussatildeo
Transport Layer 3-32
bull Mesma funcionalidade do rdt21 usando somente ACKs
bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido
bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente
rdt22 um protocolo sem NAK
Transport Layer 3-33
aguardachamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguardaACK
0
fragmento FSMdo transmissor
aguarda
0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)
fragmento FSMdo receptor
Λ
rdt22 fragmentos do transmissor e do receptor
Transport Layer 3-34
Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante
Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)
bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso
bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido
bull Exige um temporizador decrescente
rdt30 canais com erros e perdas
Transport Layer 3-35
Transmissor rdt30
Transport Layer 3-36
rdt30 em accedilatildeo
Transport Layer 3-37
rdt30 em accedilatildeo
Transport Layer 3-38
bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado
bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps
bull O protocolo de rede limita o uso dos recursos fiacutesicos
bull rdt30 funciona mas o desempenho eacute sofriacutevel
bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB
Desempenho do rdt30
Ttransmis
satildeo
= 8 kbpkt109 bs
= 8 microsegL (tamanho do pacote em bits)
R (taxa de transmissatildeo bps)=
Usender=008
30008 = 000027 L RRTT + L R
=
Transport Layer 3-39
rdt30 operaccedilatildeo pare e espere
Transmissatildeo do 1ordm Bit dopacote t = 0
emissor receptor
RTT
Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK
Recebe ACK envia proacuteximopacote t = RTT + L R
U sender
= 008
30008 = 000027
microsec
L R
RTT + L R =
Transport Layer 3-40
Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos
bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada
bull Armazenamento no transmissor eou no receptor
bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
Protocolos com paralelismo (pipelining)
Transport Layer 3-41
Pipelining aumento da utilizaccedilatildeo
emissor receptor
RTT
Uacuteltimo bit transmitido t = L R
Chegada do primeiro bitChegada do uacuteltimo bit envia ACK
Chegada do ACK envia o proacuteximo pacote t = RTT + L R
U emissor
= 024
30008 = 00008
microsecon
3 L R
RTT + L R =
Aumenta a utilizaccedilatildeopor um fator de 3
Transport Layer 3-42
Protocolos do tipo Pipelining
Go-back-N visatildeo geral Emissor pode enviar ateacute N
pacotes natildeo reconhecidos(unacked) no pipeline
Receptor envia acksacumulativos
Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo
Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido
Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)
Retransmissatildeo seletiva visatildeogeral
Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)
Receptor reconhece (acks) pacotes individuais
Emissor manteacutemtemporizador para cadapacote natildeo reconhecido
Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido
Transport Layer 3-43
Transmissor
bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote
bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos
bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)
bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela
Go-Back-N
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-2
Capiacutetulo 3 Camada de Transporte
Objetivos
Entender os princiacutepiosrelacionados aosserviccedilos da camada de transporte
multiplexaccedilatildeodemulti-plexaccedilatildeo
Transferecircncia confiaacutevelde dados
Controle de fluxo
Controle de congestionamento
Aprender sobre osprotocolos da camada de transporte na Internet
UDP transporte semconexatildeo
TCP transporte orientado agraveconexatildeo
Controle de congestionamento no TCP
Transport Layer 3-3
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camada de Transporte
32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
33 Transporte semconexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevel de dados
35 Transporte orientado agraveconexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento da conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento no TCP
Transport Layer 3-4
Protocolos e Serviccedilos de Transporte
Provecirc comunicaccedilatildeo loacutegicaentre processos de aplicaccedilatildeoexecutando em hosts diferentes
Os protocolos de transporteexecutam nos sistemas finais
lado do emissor quebra as mensagens da aplic emsegmentos e passa-os paraa camada de rede
lado do receptor remontaos segmentos namensagem e passa-a paraa camada de aplic
applicationtransportnetworkdata linkphysical
applicationtransportnetworkdata linkphysical
Transporteloacutegico
fim-a-fim
Transport Layer 3-5
Camada de Transporte x Camada de Rede
Camada de rede comunicaccedilatildeo loacutegica entre hosts
Camada de transportecomunicaccedilatildeo loacutegica entre processos depende de (e melhora os) serviccedilos
da camada de rede
Transport Layer 3-6
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camada de Transporte
32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
33 Transporte semconexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevel de dados
35 Transporte orientado agraveconexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento da conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento no TCP
Transport Layer 3-7
Multiplexaccedilatildeodemultiplexaccedilatildeo
aplicaccedilatildeo
transporte
rede
enlace
fiacutesica
P1 aplicaccedilatildeo
transporte
rede
enlace
fiacutesica
aplicaccedilatildeo
transporte
rede
enlace
fiacutesica
P2P3 P4P1
host 1 host 2 host 3
= processo= socket
Entrega os segmentos recebidosno socket correto
Demultiplexaccedilatildeo no host receptor
Coleta os dados dos muacuteltiplossockets e encapsula-os como cabeccedilalho (posteriormenteutilizado na demultiplexaccedilatildeo)
Multiplexaccedilatildeo no host emissor
Transport Layer 3-8
Como trabalha a demultiplexaccedilatildeo host recebe datagramas IP
cada datagrama possui o endereccedilo IP da origem e o endereccedilo IP do destino
cada datagrama carrega 1 segmento da camada de transporte
cada segmento possui osnuacutemeros das portas de origem e de destino
o host utiliza os endereccedilos IP e os nuacutemeros das portas paraencaminhar o segmento aosocket apropriado
da porta de origem
da porta dedestino
32 bits
dado da aplicaccedilatildeo(mensagem)
outros campos docabeccedilalho
Formato do segmento TCPUDP
Transport Layer 3-9
Demultiplexaccedilatildeo sem conexatildeo
Cria sockets com nuacutemerosde porta
DatagramSocket mySocket1 = new DatagramSocket(12534)
DatagramSocket mySocket2 = new DatagramSocket(12535)
O socket UDP eacute identificadopor uma tupla de doiselementos
(endereccedilo IP destino nuacutemero porta de destino)
quando o host recebe um segmento UDP
checa o nuacutemero da porta de destino no segmento
direciona o segmento UDP para o socket que conteacutemaquele numero
datagramas IP com endereccedilosIP origem diferentes eounuacutemeros de porta de origem diferentes satildeo encaminhados ao mesmo socket
Transport Layer 3-10
Demux sem conexatildeo (cont)
DatagramSocket serverSocket = new DatagramSocket(6428)
ClienteIPB
P2
clienteIP A
P1P1P3
servidorIP C
SP 6428
DP 9157
SP 9157
DP 6428
SP 6428
DP 5775
SP 5775
DP 6428
SP provecirc ldquoendereccedilo de retornordquo
Transport Layer 3-11
Demux orientado agrave conexatildeo
O socket TCP eacuteidentificado por umatupla de 4 elementos
Endereccedilo IP de origem Nuacutemero da porta de
origem Endereccedilo IP de destino Nuacutemero da porta de
destino
host receptor utiliza osquatro valores paraencaminhar o segmentoao socket apropriado
O servidor pode suportarvaacuterios sockets TCP simultaneamente
cada socket eacute identificadopela sua tupla-4
Servidores Web possuemdiferentes sockets paracada conexatildeo com o cliente
HTTP natildeo-persistenteteraacute um socket diferentepara cada requisiccedilatildeo
Transport Layer 3-12
Demux orientado agrave conexatildeo(cont)
ClienteIPB
P1
clienteIP A
P1P2P4
servidorIP C
SP 9157
DP 80
SP 9157
DP 80
P5 P6 P3
D-IPC
S-IP A
D-IPC
S-IP B
SP 5775
DP 80
D-IPC
S-IP B
Transport Layer 3-13
Connection-oriented demux Servidor Web com Threads
ClienteIPB
P1
clienteIP A
P1P2
servidorIP C
SP 9157
DP 80
SP 9157
DP 80
P4 P3
D-IPC
S-IP A
D-IPC
S-IP B
SP 5775
DP 80
D-IPC
S-IP B
Transport Layer 3-14
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camada de Transporte
32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
33 Transporte semconexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevel de dados
35 Transporte orientado agraveconexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento da conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento no TCP
Transport Layer 3-15
UDP User Datagram Protocol [RFC 768]
Protocolo de transporteInternet ldquosem gordurasrdquo
Serviccedilo ldquomelhor esforccedilordquo os segmentos UDP podem
Ser perdidos
Ser entregues fora de ordem agrave aplicaccedilatildeo
Sem conexatildeo sem handshaking entre
o emissor UDP e o receptor UDP
cada segmento UDP eacutemanipuladoindependentemente dos outros
Porque existe o UDP Sem estabelecimento de
conexatildeo (a conexatildeo incluiatraso)
simples natildeo manteacutem o estado da conexatildeo no emissor e no receptor
Cabeccedilalho pequeno no segmento
Sem controle de congestionamento UDP pode enviar segmentos tatildeoraacutepido quanto desejado (e possiacutevel)
Transport Layer 3-16
Mais sobre o UDP
Geralmente utilizado emaplicaccedilotildees envolvendostreaming multimiacutedia
Tolerante a perdas Sensiacutevel agrave taxa
Uso de UDP DNS SNMP
Transferecircncia confiaacutevelsobre o UDP adicionarconfiabilidade no niacutevel daaplicaccedilatildeo
Recuperaccedilatildeo de erroespeciacutefica da aplicaccedilatildeo
da portade origem
32 bits
Dado da aplicaccedilatildeo(mensagem)
Formato do segmento UDP
tamanho checksumTamanho emBytes do
segmento UDPincluindo ocabeccedilalho
da portade destino
Transport Layer 3-17
Checksum UDP
Emissor Trata o conteuacutedo do
segmento como umasequecircncia de inteiros de 16 bits
checksum adiccedilatildeo (soma em complemento de 1)
o emissor coloca o valor do checksum no campo de checksum do UDP
Receptor Computa o checksum do
segmento recebido
Checa se o checksum computado eacute igual ao valor encontrado no campo checksum
NO ndash erro detectado
YES ndash nenhum errodectetado (entretantopode exister erro)
Objetivo detetar ldquoerrosrdquo no segmento transmitido
Transport Layer 3-18
Exemplo Internet Checksum Nota
Na adiccedilatildeo dos valores um carryout do bit maissignificativo deve ser adicionado ao resultado
Exemplo adiccedilatildeo de dois inteiros de 16 bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
wraparound
sumchecksum
Transport Layer 3-19
bull 31 Serviccedilos da camada de transporte
bull 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
bull 33 Transporte natildeo orientado agrave conexatildeo UDP
bull 34 Princiacutepios de transferecircncia confiaacutevel de dados
bull 35 Transporte orientado agrave conexatildeo TCPbull Estrutura do segmentobull Transferecircncia confiaacutevel de dadosbull Controle de fluxobull Gerenciamento de conexatildeo
bull 36 Princiacutepios de controle de congestionamento
bull 37 Controle de congestionamento do TCP
Camada de transporte
Transport Layer 3-20
bull Importante nas camadasde aplicaccedilatildeo transportee enlace
bull Top 10 na lista dos toacutepicos mais importantsde redes
bull Caracteriacutesticas dos canaisnatildeo confiaacuteveisdeterminaratildeo a complexidade dos protocolos confiaacuteveis de transferecircncia de dados (rdt)
Princiacutepios de transferecircncia confiaacutevel de dados
Transport Layer 3-21
ladotransmissor
ladoreceptor
rdt_send() chamada da camada superior (ex pela aplicaccedilatildeo) Passa dados paraentregar agrave camada superior receptora
udt_send() chamada pela entidadede transporte para transferir pacotes
para o receptor sobre o canal natildeoconfiaacutevel
rdt_rcv() chamada quando o pacote chegaao lado receptor do canal
deliver_data() chamada pelaentidade de transporte para
entregar dados agrave camada superior
Transferecircncia confiaacutevel o ponto de partida
Transport Layer 3-22
Etapas
bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees
bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor
estado1
estado2
evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado
estado quando neste ldquoestadordquoo proacuteximo estado fica
unicamente determinadopelo proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel o ponto de partida
Transport Layer 3-23
bull Canal de transmissatildeoperfeitamente confiaacutevel
bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes
bull FSMs separadas paratransmissor e receptor
bull Transmissor envia dados parao canal subjacente
bull Receptor lecirc os dados do canal subjacente
rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis
Transport Layer 3-24
rdt20 canal com erros de bit
bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits
bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente
bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros
bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK
bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender
Transport Layer 3-25
rdt20 especificaccedilatildeo FSM
Transport Layer 3-26
aguardachamadade cima
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 operaccedilatildeo com ausecircncia de erros
Transport Layer 3-27
aguardachamadade cima
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) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 cenaacuterio de erro
Transport Layer 3-28
O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata
Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada
pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes
duplicados
Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do
receptor
rdt20 tem um problema fatal
Transport Layer 3-29
rdt21 transmissor trata ACKNAKsperdidos
rdt21 receptor trata ACKNAKsperdidos
Wait for 0 from below
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Wait for 1 from below
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
Transport Layer 3-31
Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados
bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1
Receptorbull Deve verificar se o pacote recebido eacute duplicado
bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor
rdt21 discussatildeo
Transport Layer 3-32
bull Mesma funcionalidade do rdt21 usando somente ACKs
bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido
bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente
rdt22 um protocolo sem NAK
Transport Layer 3-33
aguardachamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguardaACK
0
fragmento FSMdo transmissor
aguarda
0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)
fragmento FSMdo receptor
Λ
rdt22 fragmentos do transmissor e do receptor
Transport Layer 3-34
Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante
Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)
bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso
bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido
bull Exige um temporizador decrescente
rdt30 canais com erros e perdas
Transport Layer 3-35
Transmissor rdt30
Transport Layer 3-36
rdt30 em accedilatildeo
Transport Layer 3-37
rdt30 em accedilatildeo
Transport Layer 3-38
bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado
bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps
bull O protocolo de rede limita o uso dos recursos fiacutesicos
bull rdt30 funciona mas o desempenho eacute sofriacutevel
bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB
Desempenho do rdt30
Ttransmis
satildeo
= 8 kbpkt109 bs
= 8 microsegL (tamanho do pacote em bits)
R (taxa de transmissatildeo bps)=
Usender=008
30008 = 000027 L RRTT + L R
=
Transport Layer 3-39
rdt30 operaccedilatildeo pare e espere
Transmissatildeo do 1ordm Bit dopacote t = 0
emissor receptor
RTT
Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK
Recebe ACK envia proacuteximopacote t = RTT + L R
U sender
= 008
30008 = 000027
microsec
L R
RTT + L R =
Transport Layer 3-40
Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos
bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada
bull Armazenamento no transmissor eou no receptor
bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
Protocolos com paralelismo (pipelining)
Transport Layer 3-41
Pipelining aumento da utilizaccedilatildeo
emissor receptor
RTT
Uacuteltimo bit transmitido t = L R
Chegada do primeiro bitChegada do uacuteltimo bit envia ACK
Chegada do ACK envia o proacuteximo pacote t = RTT + L R
U emissor
= 024
30008 = 00008
microsecon
3 L R
RTT + L R =
Aumenta a utilizaccedilatildeopor um fator de 3
Transport Layer 3-42
Protocolos do tipo Pipelining
Go-back-N visatildeo geral Emissor pode enviar ateacute N
pacotes natildeo reconhecidos(unacked) no pipeline
Receptor envia acksacumulativos
Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo
Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido
Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)
Retransmissatildeo seletiva visatildeogeral
Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)
Receptor reconhece (acks) pacotes individuais
Emissor manteacutemtemporizador para cadapacote natildeo reconhecido
Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido
Transport Layer 3-43
Transmissor
bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote
bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos
bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)
bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela
Go-Back-N
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-3
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camada de Transporte
32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
33 Transporte semconexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevel de dados
35 Transporte orientado agraveconexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento da conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento no TCP
Transport Layer 3-4
Protocolos e Serviccedilos de Transporte
Provecirc comunicaccedilatildeo loacutegicaentre processos de aplicaccedilatildeoexecutando em hosts diferentes
Os protocolos de transporteexecutam nos sistemas finais
lado do emissor quebra as mensagens da aplic emsegmentos e passa-os paraa camada de rede
lado do receptor remontaos segmentos namensagem e passa-a paraa camada de aplic
applicationtransportnetworkdata linkphysical
applicationtransportnetworkdata linkphysical
Transporteloacutegico
fim-a-fim
Transport Layer 3-5
Camada de Transporte x Camada de Rede
Camada de rede comunicaccedilatildeo loacutegica entre hosts
Camada de transportecomunicaccedilatildeo loacutegica entre processos depende de (e melhora os) serviccedilos
da camada de rede
Transport Layer 3-6
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camada de Transporte
32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
33 Transporte semconexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevel de dados
35 Transporte orientado agraveconexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento da conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento no TCP
Transport Layer 3-7
Multiplexaccedilatildeodemultiplexaccedilatildeo
aplicaccedilatildeo
transporte
rede
enlace
fiacutesica
P1 aplicaccedilatildeo
transporte
rede
enlace
fiacutesica
aplicaccedilatildeo
transporte
rede
enlace
fiacutesica
P2P3 P4P1
host 1 host 2 host 3
= processo= socket
Entrega os segmentos recebidosno socket correto
Demultiplexaccedilatildeo no host receptor
Coleta os dados dos muacuteltiplossockets e encapsula-os como cabeccedilalho (posteriormenteutilizado na demultiplexaccedilatildeo)
Multiplexaccedilatildeo no host emissor
Transport Layer 3-8
Como trabalha a demultiplexaccedilatildeo host recebe datagramas IP
cada datagrama possui o endereccedilo IP da origem e o endereccedilo IP do destino
cada datagrama carrega 1 segmento da camada de transporte
cada segmento possui osnuacutemeros das portas de origem e de destino
o host utiliza os endereccedilos IP e os nuacutemeros das portas paraencaminhar o segmento aosocket apropriado
da porta de origem
da porta dedestino
32 bits
dado da aplicaccedilatildeo(mensagem)
outros campos docabeccedilalho
Formato do segmento TCPUDP
Transport Layer 3-9
Demultiplexaccedilatildeo sem conexatildeo
Cria sockets com nuacutemerosde porta
DatagramSocket mySocket1 = new DatagramSocket(12534)
DatagramSocket mySocket2 = new DatagramSocket(12535)
O socket UDP eacute identificadopor uma tupla de doiselementos
(endereccedilo IP destino nuacutemero porta de destino)
quando o host recebe um segmento UDP
checa o nuacutemero da porta de destino no segmento
direciona o segmento UDP para o socket que conteacutemaquele numero
datagramas IP com endereccedilosIP origem diferentes eounuacutemeros de porta de origem diferentes satildeo encaminhados ao mesmo socket
Transport Layer 3-10
Demux sem conexatildeo (cont)
DatagramSocket serverSocket = new DatagramSocket(6428)
ClienteIPB
P2
clienteIP A
P1P1P3
servidorIP C
SP 6428
DP 9157
SP 9157
DP 6428
SP 6428
DP 5775
SP 5775
DP 6428
SP provecirc ldquoendereccedilo de retornordquo
Transport Layer 3-11
Demux orientado agrave conexatildeo
O socket TCP eacuteidentificado por umatupla de 4 elementos
Endereccedilo IP de origem Nuacutemero da porta de
origem Endereccedilo IP de destino Nuacutemero da porta de
destino
host receptor utiliza osquatro valores paraencaminhar o segmentoao socket apropriado
O servidor pode suportarvaacuterios sockets TCP simultaneamente
cada socket eacute identificadopela sua tupla-4
Servidores Web possuemdiferentes sockets paracada conexatildeo com o cliente
HTTP natildeo-persistenteteraacute um socket diferentepara cada requisiccedilatildeo
Transport Layer 3-12
Demux orientado agrave conexatildeo(cont)
ClienteIPB
P1
clienteIP A
P1P2P4
servidorIP C
SP 9157
DP 80
SP 9157
DP 80
P5 P6 P3
D-IPC
S-IP A
D-IPC
S-IP B
SP 5775
DP 80
D-IPC
S-IP B
Transport Layer 3-13
Connection-oriented demux Servidor Web com Threads
ClienteIPB
P1
clienteIP A
P1P2
servidorIP C
SP 9157
DP 80
SP 9157
DP 80
P4 P3
D-IPC
S-IP A
D-IPC
S-IP B
SP 5775
DP 80
D-IPC
S-IP B
Transport Layer 3-14
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camada de Transporte
32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
33 Transporte semconexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevel de dados
35 Transporte orientado agraveconexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento da conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento no TCP
Transport Layer 3-15
UDP User Datagram Protocol [RFC 768]
Protocolo de transporteInternet ldquosem gordurasrdquo
Serviccedilo ldquomelhor esforccedilordquo os segmentos UDP podem
Ser perdidos
Ser entregues fora de ordem agrave aplicaccedilatildeo
Sem conexatildeo sem handshaking entre
o emissor UDP e o receptor UDP
cada segmento UDP eacutemanipuladoindependentemente dos outros
Porque existe o UDP Sem estabelecimento de
conexatildeo (a conexatildeo incluiatraso)
simples natildeo manteacutem o estado da conexatildeo no emissor e no receptor
Cabeccedilalho pequeno no segmento
Sem controle de congestionamento UDP pode enviar segmentos tatildeoraacutepido quanto desejado (e possiacutevel)
Transport Layer 3-16
Mais sobre o UDP
Geralmente utilizado emaplicaccedilotildees envolvendostreaming multimiacutedia
Tolerante a perdas Sensiacutevel agrave taxa
Uso de UDP DNS SNMP
Transferecircncia confiaacutevelsobre o UDP adicionarconfiabilidade no niacutevel daaplicaccedilatildeo
Recuperaccedilatildeo de erroespeciacutefica da aplicaccedilatildeo
da portade origem
32 bits
Dado da aplicaccedilatildeo(mensagem)
Formato do segmento UDP
tamanho checksumTamanho emBytes do
segmento UDPincluindo ocabeccedilalho
da portade destino
Transport Layer 3-17
Checksum UDP
Emissor Trata o conteuacutedo do
segmento como umasequecircncia de inteiros de 16 bits
checksum adiccedilatildeo (soma em complemento de 1)
o emissor coloca o valor do checksum no campo de checksum do UDP
Receptor Computa o checksum do
segmento recebido
Checa se o checksum computado eacute igual ao valor encontrado no campo checksum
NO ndash erro detectado
YES ndash nenhum errodectetado (entretantopode exister erro)
Objetivo detetar ldquoerrosrdquo no segmento transmitido
Transport Layer 3-18
Exemplo Internet Checksum Nota
Na adiccedilatildeo dos valores um carryout do bit maissignificativo deve ser adicionado ao resultado
Exemplo adiccedilatildeo de dois inteiros de 16 bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
wraparound
sumchecksum
Transport Layer 3-19
bull 31 Serviccedilos da camada de transporte
bull 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
bull 33 Transporte natildeo orientado agrave conexatildeo UDP
bull 34 Princiacutepios de transferecircncia confiaacutevel de dados
bull 35 Transporte orientado agrave conexatildeo TCPbull Estrutura do segmentobull Transferecircncia confiaacutevel de dadosbull Controle de fluxobull Gerenciamento de conexatildeo
bull 36 Princiacutepios de controle de congestionamento
bull 37 Controle de congestionamento do TCP
Camada de transporte
Transport Layer 3-20
bull Importante nas camadasde aplicaccedilatildeo transportee enlace
bull Top 10 na lista dos toacutepicos mais importantsde redes
bull Caracteriacutesticas dos canaisnatildeo confiaacuteveisdeterminaratildeo a complexidade dos protocolos confiaacuteveis de transferecircncia de dados (rdt)
Princiacutepios de transferecircncia confiaacutevel de dados
Transport Layer 3-21
ladotransmissor
ladoreceptor
rdt_send() chamada da camada superior (ex pela aplicaccedilatildeo) Passa dados paraentregar agrave camada superior receptora
udt_send() chamada pela entidadede transporte para transferir pacotes
para o receptor sobre o canal natildeoconfiaacutevel
rdt_rcv() chamada quando o pacote chegaao lado receptor do canal
deliver_data() chamada pelaentidade de transporte para
entregar dados agrave camada superior
Transferecircncia confiaacutevel o ponto de partida
Transport Layer 3-22
Etapas
bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees
bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor
estado1
estado2
evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado
estado quando neste ldquoestadordquoo proacuteximo estado fica
unicamente determinadopelo proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel o ponto de partida
Transport Layer 3-23
bull Canal de transmissatildeoperfeitamente confiaacutevel
bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes
bull FSMs separadas paratransmissor e receptor
bull Transmissor envia dados parao canal subjacente
bull Receptor lecirc os dados do canal subjacente
rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis
Transport Layer 3-24
rdt20 canal com erros de bit
bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits
bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente
bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros
bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK
bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender
Transport Layer 3-25
rdt20 especificaccedilatildeo FSM
Transport Layer 3-26
aguardachamadade cima
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 operaccedilatildeo com ausecircncia de erros
Transport Layer 3-27
aguardachamadade cima
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) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 cenaacuterio de erro
Transport Layer 3-28
O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata
Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada
pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes
duplicados
Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do
receptor
rdt20 tem um problema fatal
Transport Layer 3-29
rdt21 transmissor trata ACKNAKsperdidos
rdt21 receptor trata ACKNAKsperdidos
Wait for 0 from below
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Wait for 1 from below
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
Transport Layer 3-31
Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados
bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1
Receptorbull Deve verificar se o pacote recebido eacute duplicado
bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor
rdt21 discussatildeo
Transport Layer 3-32
bull Mesma funcionalidade do rdt21 usando somente ACKs
bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido
bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente
rdt22 um protocolo sem NAK
Transport Layer 3-33
aguardachamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguardaACK
0
fragmento FSMdo transmissor
aguarda
0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)
fragmento FSMdo receptor
Λ
rdt22 fragmentos do transmissor e do receptor
Transport Layer 3-34
Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante
Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)
bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso
bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido
bull Exige um temporizador decrescente
rdt30 canais com erros e perdas
Transport Layer 3-35
Transmissor rdt30
Transport Layer 3-36
rdt30 em accedilatildeo
Transport Layer 3-37
rdt30 em accedilatildeo
Transport Layer 3-38
bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado
bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps
bull O protocolo de rede limita o uso dos recursos fiacutesicos
bull rdt30 funciona mas o desempenho eacute sofriacutevel
bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB
Desempenho do rdt30
Ttransmis
satildeo
= 8 kbpkt109 bs
= 8 microsegL (tamanho do pacote em bits)
R (taxa de transmissatildeo bps)=
Usender=008
30008 = 000027 L RRTT + L R
=
Transport Layer 3-39
rdt30 operaccedilatildeo pare e espere
Transmissatildeo do 1ordm Bit dopacote t = 0
emissor receptor
RTT
Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK
Recebe ACK envia proacuteximopacote t = RTT + L R
U sender
= 008
30008 = 000027
microsec
L R
RTT + L R =
Transport Layer 3-40
Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos
bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada
bull Armazenamento no transmissor eou no receptor
bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
Protocolos com paralelismo (pipelining)
Transport Layer 3-41
Pipelining aumento da utilizaccedilatildeo
emissor receptor
RTT
Uacuteltimo bit transmitido t = L R
Chegada do primeiro bitChegada do uacuteltimo bit envia ACK
Chegada do ACK envia o proacuteximo pacote t = RTT + L R
U emissor
= 024
30008 = 00008
microsecon
3 L R
RTT + L R =
Aumenta a utilizaccedilatildeopor um fator de 3
Transport Layer 3-42
Protocolos do tipo Pipelining
Go-back-N visatildeo geral Emissor pode enviar ateacute N
pacotes natildeo reconhecidos(unacked) no pipeline
Receptor envia acksacumulativos
Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo
Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido
Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)
Retransmissatildeo seletiva visatildeogeral
Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)
Receptor reconhece (acks) pacotes individuais
Emissor manteacutemtemporizador para cadapacote natildeo reconhecido
Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido
Transport Layer 3-43
Transmissor
bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote
bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos
bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)
bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela
Go-Back-N
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-4
Protocolos e Serviccedilos de Transporte
Provecirc comunicaccedilatildeo loacutegicaentre processos de aplicaccedilatildeoexecutando em hosts diferentes
Os protocolos de transporteexecutam nos sistemas finais
lado do emissor quebra as mensagens da aplic emsegmentos e passa-os paraa camada de rede
lado do receptor remontaos segmentos namensagem e passa-a paraa camada de aplic
applicationtransportnetworkdata linkphysical
applicationtransportnetworkdata linkphysical
Transporteloacutegico
fim-a-fim
Transport Layer 3-5
Camada de Transporte x Camada de Rede
Camada de rede comunicaccedilatildeo loacutegica entre hosts
Camada de transportecomunicaccedilatildeo loacutegica entre processos depende de (e melhora os) serviccedilos
da camada de rede
Transport Layer 3-6
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camada de Transporte
32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
33 Transporte semconexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevel de dados
35 Transporte orientado agraveconexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento da conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento no TCP
Transport Layer 3-7
Multiplexaccedilatildeodemultiplexaccedilatildeo
aplicaccedilatildeo
transporte
rede
enlace
fiacutesica
P1 aplicaccedilatildeo
transporte
rede
enlace
fiacutesica
aplicaccedilatildeo
transporte
rede
enlace
fiacutesica
P2P3 P4P1
host 1 host 2 host 3
= processo= socket
Entrega os segmentos recebidosno socket correto
Demultiplexaccedilatildeo no host receptor
Coleta os dados dos muacuteltiplossockets e encapsula-os como cabeccedilalho (posteriormenteutilizado na demultiplexaccedilatildeo)
Multiplexaccedilatildeo no host emissor
Transport Layer 3-8
Como trabalha a demultiplexaccedilatildeo host recebe datagramas IP
cada datagrama possui o endereccedilo IP da origem e o endereccedilo IP do destino
cada datagrama carrega 1 segmento da camada de transporte
cada segmento possui osnuacutemeros das portas de origem e de destino
o host utiliza os endereccedilos IP e os nuacutemeros das portas paraencaminhar o segmento aosocket apropriado
da porta de origem
da porta dedestino
32 bits
dado da aplicaccedilatildeo(mensagem)
outros campos docabeccedilalho
Formato do segmento TCPUDP
Transport Layer 3-9
Demultiplexaccedilatildeo sem conexatildeo
Cria sockets com nuacutemerosde porta
DatagramSocket mySocket1 = new DatagramSocket(12534)
DatagramSocket mySocket2 = new DatagramSocket(12535)
O socket UDP eacute identificadopor uma tupla de doiselementos
(endereccedilo IP destino nuacutemero porta de destino)
quando o host recebe um segmento UDP
checa o nuacutemero da porta de destino no segmento
direciona o segmento UDP para o socket que conteacutemaquele numero
datagramas IP com endereccedilosIP origem diferentes eounuacutemeros de porta de origem diferentes satildeo encaminhados ao mesmo socket
Transport Layer 3-10
Demux sem conexatildeo (cont)
DatagramSocket serverSocket = new DatagramSocket(6428)
ClienteIPB
P2
clienteIP A
P1P1P3
servidorIP C
SP 6428
DP 9157
SP 9157
DP 6428
SP 6428
DP 5775
SP 5775
DP 6428
SP provecirc ldquoendereccedilo de retornordquo
Transport Layer 3-11
Demux orientado agrave conexatildeo
O socket TCP eacuteidentificado por umatupla de 4 elementos
Endereccedilo IP de origem Nuacutemero da porta de
origem Endereccedilo IP de destino Nuacutemero da porta de
destino
host receptor utiliza osquatro valores paraencaminhar o segmentoao socket apropriado
O servidor pode suportarvaacuterios sockets TCP simultaneamente
cada socket eacute identificadopela sua tupla-4
Servidores Web possuemdiferentes sockets paracada conexatildeo com o cliente
HTTP natildeo-persistenteteraacute um socket diferentepara cada requisiccedilatildeo
Transport Layer 3-12
Demux orientado agrave conexatildeo(cont)
ClienteIPB
P1
clienteIP A
P1P2P4
servidorIP C
SP 9157
DP 80
SP 9157
DP 80
P5 P6 P3
D-IPC
S-IP A
D-IPC
S-IP B
SP 5775
DP 80
D-IPC
S-IP B
Transport Layer 3-13
Connection-oriented demux Servidor Web com Threads
ClienteIPB
P1
clienteIP A
P1P2
servidorIP C
SP 9157
DP 80
SP 9157
DP 80
P4 P3
D-IPC
S-IP A
D-IPC
S-IP B
SP 5775
DP 80
D-IPC
S-IP B
Transport Layer 3-14
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camada de Transporte
32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
33 Transporte semconexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevel de dados
35 Transporte orientado agraveconexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento da conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento no TCP
Transport Layer 3-15
UDP User Datagram Protocol [RFC 768]
Protocolo de transporteInternet ldquosem gordurasrdquo
Serviccedilo ldquomelhor esforccedilordquo os segmentos UDP podem
Ser perdidos
Ser entregues fora de ordem agrave aplicaccedilatildeo
Sem conexatildeo sem handshaking entre
o emissor UDP e o receptor UDP
cada segmento UDP eacutemanipuladoindependentemente dos outros
Porque existe o UDP Sem estabelecimento de
conexatildeo (a conexatildeo incluiatraso)
simples natildeo manteacutem o estado da conexatildeo no emissor e no receptor
Cabeccedilalho pequeno no segmento
Sem controle de congestionamento UDP pode enviar segmentos tatildeoraacutepido quanto desejado (e possiacutevel)
Transport Layer 3-16
Mais sobre o UDP
Geralmente utilizado emaplicaccedilotildees envolvendostreaming multimiacutedia
Tolerante a perdas Sensiacutevel agrave taxa
Uso de UDP DNS SNMP
Transferecircncia confiaacutevelsobre o UDP adicionarconfiabilidade no niacutevel daaplicaccedilatildeo
Recuperaccedilatildeo de erroespeciacutefica da aplicaccedilatildeo
da portade origem
32 bits
Dado da aplicaccedilatildeo(mensagem)
Formato do segmento UDP
tamanho checksumTamanho emBytes do
segmento UDPincluindo ocabeccedilalho
da portade destino
Transport Layer 3-17
Checksum UDP
Emissor Trata o conteuacutedo do
segmento como umasequecircncia de inteiros de 16 bits
checksum adiccedilatildeo (soma em complemento de 1)
o emissor coloca o valor do checksum no campo de checksum do UDP
Receptor Computa o checksum do
segmento recebido
Checa se o checksum computado eacute igual ao valor encontrado no campo checksum
NO ndash erro detectado
YES ndash nenhum errodectetado (entretantopode exister erro)
Objetivo detetar ldquoerrosrdquo no segmento transmitido
Transport Layer 3-18
Exemplo Internet Checksum Nota
Na adiccedilatildeo dos valores um carryout do bit maissignificativo deve ser adicionado ao resultado
Exemplo adiccedilatildeo de dois inteiros de 16 bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
wraparound
sumchecksum
Transport Layer 3-19
bull 31 Serviccedilos da camada de transporte
bull 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
bull 33 Transporte natildeo orientado agrave conexatildeo UDP
bull 34 Princiacutepios de transferecircncia confiaacutevel de dados
bull 35 Transporte orientado agrave conexatildeo TCPbull Estrutura do segmentobull Transferecircncia confiaacutevel de dadosbull Controle de fluxobull Gerenciamento de conexatildeo
bull 36 Princiacutepios de controle de congestionamento
bull 37 Controle de congestionamento do TCP
Camada de transporte
Transport Layer 3-20
bull Importante nas camadasde aplicaccedilatildeo transportee enlace
bull Top 10 na lista dos toacutepicos mais importantsde redes
bull Caracteriacutesticas dos canaisnatildeo confiaacuteveisdeterminaratildeo a complexidade dos protocolos confiaacuteveis de transferecircncia de dados (rdt)
Princiacutepios de transferecircncia confiaacutevel de dados
Transport Layer 3-21
ladotransmissor
ladoreceptor
rdt_send() chamada da camada superior (ex pela aplicaccedilatildeo) Passa dados paraentregar agrave camada superior receptora
udt_send() chamada pela entidadede transporte para transferir pacotes
para o receptor sobre o canal natildeoconfiaacutevel
rdt_rcv() chamada quando o pacote chegaao lado receptor do canal
deliver_data() chamada pelaentidade de transporte para
entregar dados agrave camada superior
Transferecircncia confiaacutevel o ponto de partida
Transport Layer 3-22
Etapas
bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees
bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor
estado1
estado2
evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado
estado quando neste ldquoestadordquoo proacuteximo estado fica
unicamente determinadopelo proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel o ponto de partida
Transport Layer 3-23
bull Canal de transmissatildeoperfeitamente confiaacutevel
bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes
bull FSMs separadas paratransmissor e receptor
bull Transmissor envia dados parao canal subjacente
bull Receptor lecirc os dados do canal subjacente
rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis
Transport Layer 3-24
rdt20 canal com erros de bit
bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits
bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente
bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros
bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK
bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender
Transport Layer 3-25
rdt20 especificaccedilatildeo FSM
Transport Layer 3-26
aguardachamadade cima
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 operaccedilatildeo com ausecircncia de erros
Transport Layer 3-27
aguardachamadade cima
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) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 cenaacuterio de erro
Transport Layer 3-28
O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata
Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada
pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes
duplicados
Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do
receptor
rdt20 tem um problema fatal
Transport Layer 3-29
rdt21 transmissor trata ACKNAKsperdidos
rdt21 receptor trata ACKNAKsperdidos
Wait for 0 from below
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Wait for 1 from below
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
Transport Layer 3-31
Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados
bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1
Receptorbull Deve verificar se o pacote recebido eacute duplicado
bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor
rdt21 discussatildeo
Transport Layer 3-32
bull Mesma funcionalidade do rdt21 usando somente ACKs
bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido
bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente
rdt22 um protocolo sem NAK
Transport Layer 3-33
aguardachamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguardaACK
0
fragmento FSMdo transmissor
aguarda
0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)
fragmento FSMdo receptor
Λ
rdt22 fragmentos do transmissor e do receptor
Transport Layer 3-34
Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante
Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)
bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso
bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido
bull Exige um temporizador decrescente
rdt30 canais com erros e perdas
Transport Layer 3-35
Transmissor rdt30
Transport Layer 3-36
rdt30 em accedilatildeo
Transport Layer 3-37
rdt30 em accedilatildeo
Transport Layer 3-38
bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado
bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps
bull O protocolo de rede limita o uso dos recursos fiacutesicos
bull rdt30 funciona mas o desempenho eacute sofriacutevel
bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB
Desempenho do rdt30
Ttransmis
satildeo
= 8 kbpkt109 bs
= 8 microsegL (tamanho do pacote em bits)
R (taxa de transmissatildeo bps)=
Usender=008
30008 = 000027 L RRTT + L R
=
Transport Layer 3-39
rdt30 operaccedilatildeo pare e espere
Transmissatildeo do 1ordm Bit dopacote t = 0
emissor receptor
RTT
Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK
Recebe ACK envia proacuteximopacote t = RTT + L R
U sender
= 008
30008 = 000027
microsec
L R
RTT + L R =
Transport Layer 3-40
Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos
bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada
bull Armazenamento no transmissor eou no receptor
bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
Protocolos com paralelismo (pipelining)
Transport Layer 3-41
Pipelining aumento da utilizaccedilatildeo
emissor receptor
RTT
Uacuteltimo bit transmitido t = L R
Chegada do primeiro bitChegada do uacuteltimo bit envia ACK
Chegada do ACK envia o proacuteximo pacote t = RTT + L R
U emissor
= 024
30008 = 00008
microsecon
3 L R
RTT + L R =
Aumenta a utilizaccedilatildeopor um fator de 3
Transport Layer 3-42
Protocolos do tipo Pipelining
Go-back-N visatildeo geral Emissor pode enviar ateacute N
pacotes natildeo reconhecidos(unacked) no pipeline
Receptor envia acksacumulativos
Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo
Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido
Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)
Retransmissatildeo seletiva visatildeogeral
Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)
Receptor reconhece (acks) pacotes individuais
Emissor manteacutemtemporizador para cadapacote natildeo reconhecido
Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido
Transport Layer 3-43
Transmissor
bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote
bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos
bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)
bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela
Go-Back-N
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-5
Camada de Transporte x Camada de Rede
Camada de rede comunicaccedilatildeo loacutegica entre hosts
Camada de transportecomunicaccedilatildeo loacutegica entre processos depende de (e melhora os) serviccedilos
da camada de rede
Transport Layer 3-6
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camada de Transporte
32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
33 Transporte semconexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevel de dados
35 Transporte orientado agraveconexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento da conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento no TCP
Transport Layer 3-7
Multiplexaccedilatildeodemultiplexaccedilatildeo
aplicaccedilatildeo
transporte
rede
enlace
fiacutesica
P1 aplicaccedilatildeo
transporte
rede
enlace
fiacutesica
aplicaccedilatildeo
transporte
rede
enlace
fiacutesica
P2P3 P4P1
host 1 host 2 host 3
= processo= socket
Entrega os segmentos recebidosno socket correto
Demultiplexaccedilatildeo no host receptor
Coleta os dados dos muacuteltiplossockets e encapsula-os como cabeccedilalho (posteriormenteutilizado na demultiplexaccedilatildeo)
Multiplexaccedilatildeo no host emissor
Transport Layer 3-8
Como trabalha a demultiplexaccedilatildeo host recebe datagramas IP
cada datagrama possui o endereccedilo IP da origem e o endereccedilo IP do destino
cada datagrama carrega 1 segmento da camada de transporte
cada segmento possui osnuacutemeros das portas de origem e de destino
o host utiliza os endereccedilos IP e os nuacutemeros das portas paraencaminhar o segmento aosocket apropriado
da porta de origem
da porta dedestino
32 bits
dado da aplicaccedilatildeo(mensagem)
outros campos docabeccedilalho
Formato do segmento TCPUDP
Transport Layer 3-9
Demultiplexaccedilatildeo sem conexatildeo
Cria sockets com nuacutemerosde porta
DatagramSocket mySocket1 = new DatagramSocket(12534)
DatagramSocket mySocket2 = new DatagramSocket(12535)
O socket UDP eacute identificadopor uma tupla de doiselementos
(endereccedilo IP destino nuacutemero porta de destino)
quando o host recebe um segmento UDP
checa o nuacutemero da porta de destino no segmento
direciona o segmento UDP para o socket que conteacutemaquele numero
datagramas IP com endereccedilosIP origem diferentes eounuacutemeros de porta de origem diferentes satildeo encaminhados ao mesmo socket
Transport Layer 3-10
Demux sem conexatildeo (cont)
DatagramSocket serverSocket = new DatagramSocket(6428)
ClienteIPB
P2
clienteIP A
P1P1P3
servidorIP C
SP 6428
DP 9157
SP 9157
DP 6428
SP 6428
DP 5775
SP 5775
DP 6428
SP provecirc ldquoendereccedilo de retornordquo
Transport Layer 3-11
Demux orientado agrave conexatildeo
O socket TCP eacuteidentificado por umatupla de 4 elementos
Endereccedilo IP de origem Nuacutemero da porta de
origem Endereccedilo IP de destino Nuacutemero da porta de
destino
host receptor utiliza osquatro valores paraencaminhar o segmentoao socket apropriado
O servidor pode suportarvaacuterios sockets TCP simultaneamente
cada socket eacute identificadopela sua tupla-4
Servidores Web possuemdiferentes sockets paracada conexatildeo com o cliente
HTTP natildeo-persistenteteraacute um socket diferentepara cada requisiccedilatildeo
Transport Layer 3-12
Demux orientado agrave conexatildeo(cont)
ClienteIPB
P1
clienteIP A
P1P2P4
servidorIP C
SP 9157
DP 80
SP 9157
DP 80
P5 P6 P3
D-IPC
S-IP A
D-IPC
S-IP B
SP 5775
DP 80
D-IPC
S-IP B
Transport Layer 3-13
Connection-oriented demux Servidor Web com Threads
ClienteIPB
P1
clienteIP A
P1P2
servidorIP C
SP 9157
DP 80
SP 9157
DP 80
P4 P3
D-IPC
S-IP A
D-IPC
S-IP B
SP 5775
DP 80
D-IPC
S-IP B
Transport Layer 3-14
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camada de Transporte
32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
33 Transporte semconexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevel de dados
35 Transporte orientado agraveconexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento da conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento no TCP
Transport Layer 3-15
UDP User Datagram Protocol [RFC 768]
Protocolo de transporteInternet ldquosem gordurasrdquo
Serviccedilo ldquomelhor esforccedilordquo os segmentos UDP podem
Ser perdidos
Ser entregues fora de ordem agrave aplicaccedilatildeo
Sem conexatildeo sem handshaking entre
o emissor UDP e o receptor UDP
cada segmento UDP eacutemanipuladoindependentemente dos outros
Porque existe o UDP Sem estabelecimento de
conexatildeo (a conexatildeo incluiatraso)
simples natildeo manteacutem o estado da conexatildeo no emissor e no receptor
Cabeccedilalho pequeno no segmento
Sem controle de congestionamento UDP pode enviar segmentos tatildeoraacutepido quanto desejado (e possiacutevel)
Transport Layer 3-16
Mais sobre o UDP
Geralmente utilizado emaplicaccedilotildees envolvendostreaming multimiacutedia
Tolerante a perdas Sensiacutevel agrave taxa
Uso de UDP DNS SNMP
Transferecircncia confiaacutevelsobre o UDP adicionarconfiabilidade no niacutevel daaplicaccedilatildeo
Recuperaccedilatildeo de erroespeciacutefica da aplicaccedilatildeo
da portade origem
32 bits
Dado da aplicaccedilatildeo(mensagem)
Formato do segmento UDP
tamanho checksumTamanho emBytes do
segmento UDPincluindo ocabeccedilalho
da portade destino
Transport Layer 3-17
Checksum UDP
Emissor Trata o conteuacutedo do
segmento como umasequecircncia de inteiros de 16 bits
checksum adiccedilatildeo (soma em complemento de 1)
o emissor coloca o valor do checksum no campo de checksum do UDP
Receptor Computa o checksum do
segmento recebido
Checa se o checksum computado eacute igual ao valor encontrado no campo checksum
NO ndash erro detectado
YES ndash nenhum errodectetado (entretantopode exister erro)
Objetivo detetar ldquoerrosrdquo no segmento transmitido
Transport Layer 3-18
Exemplo Internet Checksum Nota
Na adiccedilatildeo dos valores um carryout do bit maissignificativo deve ser adicionado ao resultado
Exemplo adiccedilatildeo de dois inteiros de 16 bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
wraparound
sumchecksum
Transport Layer 3-19
bull 31 Serviccedilos da camada de transporte
bull 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
bull 33 Transporte natildeo orientado agrave conexatildeo UDP
bull 34 Princiacutepios de transferecircncia confiaacutevel de dados
bull 35 Transporte orientado agrave conexatildeo TCPbull Estrutura do segmentobull Transferecircncia confiaacutevel de dadosbull Controle de fluxobull Gerenciamento de conexatildeo
bull 36 Princiacutepios de controle de congestionamento
bull 37 Controle de congestionamento do TCP
Camada de transporte
Transport Layer 3-20
bull Importante nas camadasde aplicaccedilatildeo transportee enlace
bull Top 10 na lista dos toacutepicos mais importantsde redes
bull Caracteriacutesticas dos canaisnatildeo confiaacuteveisdeterminaratildeo a complexidade dos protocolos confiaacuteveis de transferecircncia de dados (rdt)
Princiacutepios de transferecircncia confiaacutevel de dados
Transport Layer 3-21
ladotransmissor
ladoreceptor
rdt_send() chamada da camada superior (ex pela aplicaccedilatildeo) Passa dados paraentregar agrave camada superior receptora
udt_send() chamada pela entidadede transporte para transferir pacotes
para o receptor sobre o canal natildeoconfiaacutevel
rdt_rcv() chamada quando o pacote chegaao lado receptor do canal
deliver_data() chamada pelaentidade de transporte para
entregar dados agrave camada superior
Transferecircncia confiaacutevel o ponto de partida
Transport Layer 3-22
Etapas
bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees
bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor
estado1
estado2
evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado
estado quando neste ldquoestadordquoo proacuteximo estado fica
unicamente determinadopelo proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel o ponto de partida
Transport Layer 3-23
bull Canal de transmissatildeoperfeitamente confiaacutevel
bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes
bull FSMs separadas paratransmissor e receptor
bull Transmissor envia dados parao canal subjacente
bull Receptor lecirc os dados do canal subjacente
rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis
Transport Layer 3-24
rdt20 canal com erros de bit
bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits
bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente
bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros
bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK
bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender
Transport Layer 3-25
rdt20 especificaccedilatildeo FSM
Transport Layer 3-26
aguardachamadade cima
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 operaccedilatildeo com ausecircncia de erros
Transport Layer 3-27
aguardachamadade cima
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) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 cenaacuterio de erro
Transport Layer 3-28
O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata
Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada
pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes
duplicados
Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do
receptor
rdt20 tem um problema fatal
Transport Layer 3-29
rdt21 transmissor trata ACKNAKsperdidos
rdt21 receptor trata ACKNAKsperdidos
Wait for 0 from below
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Wait for 1 from below
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
Transport Layer 3-31
Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados
bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1
Receptorbull Deve verificar se o pacote recebido eacute duplicado
bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor
rdt21 discussatildeo
Transport Layer 3-32
bull Mesma funcionalidade do rdt21 usando somente ACKs
bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido
bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente
rdt22 um protocolo sem NAK
Transport Layer 3-33
aguardachamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguardaACK
0
fragmento FSMdo transmissor
aguarda
0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)
fragmento FSMdo receptor
Λ
rdt22 fragmentos do transmissor e do receptor
Transport Layer 3-34
Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante
Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)
bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso
bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido
bull Exige um temporizador decrescente
rdt30 canais com erros e perdas
Transport Layer 3-35
Transmissor rdt30
Transport Layer 3-36
rdt30 em accedilatildeo
Transport Layer 3-37
rdt30 em accedilatildeo
Transport Layer 3-38
bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado
bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps
bull O protocolo de rede limita o uso dos recursos fiacutesicos
bull rdt30 funciona mas o desempenho eacute sofriacutevel
bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB
Desempenho do rdt30
Ttransmis
satildeo
= 8 kbpkt109 bs
= 8 microsegL (tamanho do pacote em bits)
R (taxa de transmissatildeo bps)=
Usender=008
30008 = 000027 L RRTT + L R
=
Transport Layer 3-39
rdt30 operaccedilatildeo pare e espere
Transmissatildeo do 1ordm Bit dopacote t = 0
emissor receptor
RTT
Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK
Recebe ACK envia proacuteximopacote t = RTT + L R
U sender
= 008
30008 = 000027
microsec
L R
RTT + L R =
Transport Layer 3-40
Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos
bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada
bull Armazenamento no transmissor eou no receptor
bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
Protocolos com paralelismo (pipelining)
Transport Layer 3-41
Pipelining aumento da utilizaccedilatildeo
emissor receptor
RTT
Uacuteltimo bit transmitido t = L R
Chegada do primeiro bitChegada do uacuteltimo bit envia ACK
Chegada do ACK envia o proacuteximo pacote t = RTT + L R
U emissor
= 024
30008 = 00008
microsecon
3 L R
RTT + L R =
Aumenta a utilizaccedilatildeopor um fator de 3
Transport Layer 3-42
Protocolos do tipo Pipelining
Go-back-N visatildeo geral Emissor pode enviar ateacute N
pacotes natildeo reconhecidos(unacked) no pipeline
Receptor envia acksacumulativos
Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo
Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido
Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)
Retransmissatildeo seletiva visatildeogeral
Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)
Receptor reconhece (acks) pacotes individuais
Emissor manteacutemtemporizador para cadapacote natildeo reconhecido
Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido
Transport Layer 3-43
Transmissor
bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote
bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos
bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)
bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela
Go-Back-N
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-6
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camada de Transporte
32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
33 Transporte semconexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevel de dados
35 Transporte orientado agraveconexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento da conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento no TCP
Transport Layer 3-7
Multiplexaccedilatildeodemultiplexaccedilatildeo
aplicaccedilatildeo
transporte
rede
enlace
fiacutesica
P1 aplicaccedilatildeo
transporte
rede
enlace
fiacutesica
aplicaccedilatildeo
transporte
rede
enlace
fiacutesica
P2P3 P4P1
host 1 host 2 host 3
= processo= socket
Entrega os segmentos recebidosno socket correto
Demultiplexaccedilatildeo no host receptor
Coleta os dados dos muacuteltiplossockets e encapsula-os como cabeccedilalho (posteriormenteutilizado na demultiplexaccedilatildeo)
Multiplexaccedilatildeo no host emissor
Transport Layer 3-8
Como trabalha a demultiplexaccedilatildeo host recebe datagramas IP
cada datagrama possui o endereccedilo IP da origem e o endereccedilo IP do destino
cada datagrama carrega 1 segmento da camada de transporte
cada segmento possui osnuacutemeros das portas de origem e de destino
o host utiliza os endereccedilos IP e os nuacutemeros das portas paraencaminhar o segmento aosocket apropriado
da porta de origem
da porta dedestino
32 bits
dado da aplicaccedilatildeo(mensagem)
outros campos docabeccedilalho
Formato do segmento TCPUDP
Transport Layer 3-9
Demultiplexaccedilatildeo sem conexatildeo
Cria sockets com nuacutemerosde porta
DatagramSocket mySocket1 = new DatagramSocket(12534)
DatagramSocket mySocket2 = new DatagramSocket(12535)
O socket UDP eacute identificadopor uma tupla de doiselementos
(endereccedilo IP destino nuacutemero porta de destino)
quando o host recebe um segmento UDP
checa o nuacutemero da porta de destino no segmento
direciona o segmento UDP para o socket que conteacutemaquele numero
datagramas IP com endereccedilosIP origem diferentes eounuacutemeros de porta de origem diferentes satildeo encaminhados ao mesmo socket
Transport Layer 3-10
Demux sem conexatildeo (cont)
DatagramSocket serverSocket = new DatagramSocket(6428)
ClienteIPB
P2
clienteIP A
P1P1P3
servidorIP C
SP 6428
DP 9157
SP 9157
DP 6428
SP 6428
DP 5775
SP 5775
DP 6428
SP provecirc ldquoendereccedilo de retornordquo
Transport Layer 3-11
Demux orientado agrave conexatildeo
O socket TCP eacuteidentificado por umatupla de 4 elementos
Endereccedilo IP de origem Nuacutemero da porta de
origem Endereccedilo IP de destino Nuacutemero da porta de
destino
host receptor utiliza osquatro valores paraencaminhar o segmentoao socket apropriado
O servidor pode suportarvaacuterios sockets TCP simultaneamente
cada socket eacute identificadopela sua tupla-4
Servidores Web possuemdiferentes sockets paracada conexatildeo com o cliente
HTTP natildeo-persistenteteraacute um socket diferentepara cada requisiccedilatildeo
Transport Layer 3-12
Demux orientado agrave conexatildeo(cont)
ClienteIPB
P1
clienteIP A
P1P2P4
servidorIP C
SP 9157
DP 80
SP 9157
DP 80
P5 P6 P3
D-IPC
S-IP A
D-IPC
S-IP B
SP 5775
DP 80
D-IPC
S-IP B
Transport Layer 3-13
Connection-oriented demux Servidor Web com Threads
ClienteIPB
P1
clienteIP A
P1P2
servidorIP C
SP 9157
DP 80
SP 9157
DP 80
P4 P3
D-IPC
S-IP A
D-IPC
S-IP B
SP 5775
DP 80
D-IPC
S-IP B
Transport Layer 3-14
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camada de Transporte
32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
33 Transporte semconexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevel de dados
35 Transporte orientado agraveconexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento da conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento no TCP
Transport Layer 3-15
UDP User Datagram Protocol [RFC 768]
Protocolo de transporteInternet ldquosem gordurasrdquo
Serviccedilo ldquomelhor esforccedilordquo os segmentos UDP podem
Ser perdidos
Ser entregues fora de ordem agrave aplicaccedilatildeo
Sem conexatildeo sem handshaking entre
o emissor UDP e o receptor UDP
cada segmento UDP eacutemanipuladoindependentemente dos outros
Porque existe o UDP Sem estabelecimento de
conexatildeo (a conexatildeo incluiatraso)
simples natildeo manteacutem o estado da conexatildeo no emissor e no receptor
Cabeccedilalho pequeno no segmento
Sem controle de congestionamento UDP pode enviar segmentos tatildeoraacutepido quanto desejado (e possiacutevel)
Transport Layer 3-16
Mais sobre o UDP
Geralmente utilizado emaplicaccedilotildees envolvendostreaming multimiacutedia
Tolerante a perdas Sensiacutevel agrave taxa
Uso de UDP DNS SNMP
Transferecircncia confiaacutevelsobre o UDP adicionarconfiabilidade no niacutevel daaplicaccedilatildeo
Recuperaccedilatildeo de erroespeciacutefica da aplicaccedilatildeo
da portade origem
32 bits
Dado da aplicaccedilatildeo(mensagem)
Formato do segmento UDP
tamanho checksumTamanho emBytes do
segmento UDPincluindo ocabeccedilalho
da portade destino
Transport Layer 3-17
Checksum UDP
Emissor Trata o conteuacutedo do
segmento como umasequecircncia de inteiros de 16 bits
checksum adiccedilatildeo (soma em complemento de 1)
o emissor coloca o valor do checksum no campo de checksum do UDP
Receptor Computa o checksum do
segmento recebido
Checa se o checksum computado eacute igual ao valor encontrado no campo checksum
NO ndash erro detectado
YES ndash nenhum errodectetado (entretantopode exister erro)
Objetivo detetar ldquoerrosrdquo no segmento transmitido
Transport Layer 3-18
Exemplo Internet Checksum Nota
Na adiccedilatildeo dos valores um carryout do bit maissignificativo deve ser adicionado ao resultado
Exemplo adiccedilatildeo de dois inteiros de 16 bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
wraparound
sumchecksum
Transport Layer 3-19
bull 31 Serviccedilos da camada de transporte
bull 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
bull 33 Transporte natildeo orientado agrave conexatildeo UDP
bull 34 Princiacutepios de transferecircncia confiaacutevel de dados
bull 35 Transporte orientado agrave conexatildeo TCPbull Estrutura do segmentobull Transferecircncia confiaacutevel de dadosbull Controle de fluxobull Gerenciamento de conexatildeo
bull 36 Princiacutepios de controle de congestionamento
bull 37 Controle de congestionamento do TCP
Camada de transporte
Transport Layer 3-20
bull Importante nas camadasde aplicaccedilatildeo transportee enlace
bull Top 10 na lista dos toacutepicos mais importantsde redes
bull Caracteriacutesticas dos canaisnatildeo confiaacuteveisdeterminaratildeo a complexidade dos protocolos confiaacuteveis de transferecircncia de dados (rdt)
Princiacutepios de transferecircncia confiaacutevel de dados
Transport Layer 3-21
ladotransmissor
ladoreceptor
rdt_send() chamada da camada superior (ex pela aplicaccedilatildeo) Passa dados paraentregar agrave camada superior receptora
udt_send() chamada pela entidadede transporte para transferir pacotes
para o receptor sobre o canal natildeoconfiaacutevel
rdt_rcv() chamada quando o pacote chegaao lado receptor do canal
deliver_data() chamada pelaentidade de transporte para
entregar dados agrave camada superior
Transferecircncia confiaacutevel o ponto de partida
Transport Layer 3-22
Etapas
bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees
bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor
estado1
estado2
evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado
estado quando neste ldquoestadordquoo proacuteximo estado fica
unicamente determinadopelo proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel o ponto de partida
Transport Layer 3-23
bull Canal de transmissatildeoperfeitamente confiaacutevel
bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes
bull FSMs separadas paratransmissor e receptor
bull Transmissor envia dados parao canal subjacente
bull Receptor lecirc os dados do canal subjacente
rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis
Transport Layer 3-24
rdt20 canal com erros de bit
bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits
bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente
bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros
bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK
bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender
Transport Layer 3-25
rdt20 especificaccedilatildeo FSM
Transport Layer 3-26
aguardachamadade cima
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 operaccedilatildeo com ausecircncia de erros
Transport Layer 3-27
aguardachamadade cima
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) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 cenaacuterio de erro
Transport Layer 3-28
O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata
Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada
pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes
duplicados
Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do
receptor
rdt20 tem um problema fatal
Transport Layer 3-29
rdt21 transmissor trata ACKNAKsperdidos
rdt21 receptor trata ACKNAKsperdidos
Wait for 0 from below
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Wait for 1 from below
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
Transport Layer 3-31
Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados
bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1
Receptorbull Deve verificar se o pacote recebido eacute duplicado
bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor
rdt21 discussatildeo
Transport Layer 3-32
bull Mesma funcionalidade do rdt21 usando somente ACKs
bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido
bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente
rdt22 um protocolo sem NAK
Transport Layer 3-33
aguardachamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguardaACK
0
fragmento FSMdo transmissor
aguarda
0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)
fragmento FSMdo receptor
Λ
rdt22 fragmentos do transmissor e do receptor
Transport Layer 3-34
Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante
Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)
bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso
bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido
bull Exige um temporizador decrescente
rdt30 canais com erros e perdas
Transport Layer 3-35
Transmissor rdt30
Transport Layer 3-36
rdt30 em accedilatildeo
Transport Layer 3-37
rdt30 em accedilatildeo
Transport Layer 3-38
bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado
bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps
bull O protocolo de rede limita o uso dos recursos fiacutesicos
bull rdt30 funciona mas o desempenho eacute sofriacutevel
bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB
Desempenho do rdt30
Ttransmis
satildeo
= 8 kbpkt109 bs
= 8 microsegL (tamanho do pacote em bits)
R (taxa de transmissatildeo bps)=
Usender=008
30008 = 000027 L RRTT + L R
=
Transport Layer 3-39
rdt30 operaccedilatildeo pare e espere
Transmissatildeo do 1ordm Bit dopacote t = 0
emissor receptor
RTT
Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK
Recebe ACK envia proacuteximopacote t = RTT + L R
U sender
= 008
30008 = 000027
microsec
L R
RTT + L R =
Transport Layer 3-40
Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos
bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada
bull Armazenamento no transmissor eou no receptor
bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
Protocolos com paralelismo (pipelining)
Transport Layer 3-41
Pipelining aumento da utilizaccedilatildeo
emissor receptor
RTT
Uacuteltimo bit transmitido t = L R
Chegada do primeiro bitChegada do uacuteltimo bit envia ACK
Chegada do ACK envia o proacuteximo pacote t = RTT + L R
U emissor
= 024
30008 = 00008
microsecon
3 L R
RTT + L R =
Aumenta a utilizaccedilatildeopor um fator de 3
Transport Layer 3-42
Protocolos do tipo Pipelining
Go-back-N visatildeo geral Emissor pode enviar ateacute N
pacotes natildeo reconhecidos(unacked) no pipeline
Receptor envia acksacumulativos
Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo
Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido
Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)
Retransmissatildeo seletiva visatildeogeral
Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)
Receptor reconhece (acks) pacotes individuais
Emissor manteacutemtemporizador para cadapacote natildeo reconhecido
Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido
Transport Layer 3-43
Transmissor
bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote
bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos
bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)
bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela
Go-Back-N
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-7
Multiplexaccedilatildeodemultiplexaccedilatildeo
aplicaccedilatildeo
transporte
rede
enlace
fiacutesica
P1 aplicaccedilatildeo
transporte
rede
enlace
fiacutesica
aplicaccedilatildeo
transporte
rede
enlace
fiacutesica
P2P3 P4P1
host 1 host 2 host 3
= processo= socket
Entrega os segmentos recebidosno socket correto
Demultiplexaccedilatildeo no host receptor
Coleta os dados dos muacuteltiplossockets e encapsula-os como cabeccedilalho (posteriormenteutilizado na demultiplexaccedilatildeo)
Multiplexaccedilatildeo no host emissor
Transport Layer 3-8
Como trabalha a demultiplexaccedilatildeo host recebe datagramas IP
cada datagrama possui o endereccedilo IP da origem e o endereccedilo IP do destino
cada datagrama carrega 1 segmento da camada de transporte
cada segmento possui osnuacutemeros das portas de origem e de destino
o host utiliza os endereccedilos IP e os nuacutemeros das portas paraencaminhar o segmento aosocket apropriado
da porta de origem
da porta dedestino
32 bits
dado da aplicaccedilatildeo(mensagem)
outros campos docabeccedilalho
Formato do segmento TCPUDP
Transport Layer 3-9
Demultiplexaccedilatildeo sem conexatildeo
Cria sockets com nuacutemerosde porta
DatagramSocket mySocket1 = new DatagramSocket(12534)
DatagramSocket mySocket2 = new DatagramSocket(12535)
O socket UDP eacute identificadopor uma tupla de doiselementos
(endereccedilo IP destino nuacutemero porta de destino)
quando o host recebe um segmento UDP
checa o nuacutemero da porta de destino no segmento
direciona o segmento UDP para o socket que conteacutemaquele numero
datagramas IP com endereccedilosIP origem diferentes eounuacutemeros de porta de origem diferentes satildeo encaminhados ao mesmo socket
Transport Layer 3-10
Demux sem conexatildeo (cont)
DatagramSocket serverSocket = new DatagramSocket(6428)
ClienteIPB
P2
clienteIP A
P1P1P3
servidorIP C
SP 6428
DP 9157
SP 9157
DP 6428
SP 6428
DP 5775
SP 5775
DP 6428
SP provecirc ldquoendereccedilo de retornordquo
Transport Layer 3-11
Demux orientado agrave conexatildeo
O socket TCP eacuteidentificado por umatupla de 4 elementos
Endereccedilo IP de origem Nuacutemero da porta de
origem Endereccedilo IP de destino Nuacutemero da porta de
destino
host receptor utiliza osquatro valores paraencaminhar o segmentoao socket apropriado
O servidor pode suportarvaacuterios sockets TCP simultaneamente
cada socket eacute identificadopela sua tupla-4
Servidores Web possuemdiferentes sockets paracada conexatildeo com o cliente
HTTP natildeo-persistenteteraacute um socket diferentepara cada requisiccedilatildeo
Transport Layer 3-12
Demux orientado agrave conexatildeo(cont)
ClienteIPB
P1
clienteIP A
P1P2P4
servidorIP C
SP 9157
DP 80
SP 9157
DP 80
P5 P6 P3
D-IPC
S-IP A
D-IPC
S-IP B
SP 5775
DP 80
D-IPC
S-IP B
Transport Layer 3-13
Connection-oriented demux Servidor Web com Threads
ClienteIPB
P1
clienteIP A
P1P2
servidorIP C
SP 9157
DP 80
SP 9157
DP 80
P4 P3
D-IPC
S-IP A
D-IPC
S-IP B
SP 5775
DP 80
D-IPC
S-IP B
Transport Layer 3-14
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camada de Transporte
32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
33 Transporte semconexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevel de dados
35 Transporte orientado agraveconexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento da conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento no TCP
Transport Layer 3-15
UDP User Datagram Protocol [RFC 768]
Protocolo de transporteInternet ldquosem gordurasrdquo
Serviccedilo ldquomelhor esforccedilordquo os segmentos UDP podem
Ser perdidos
Ser entregues fora de ordem agrave aplicaccedilatildeo
Sem conexatildeo sem handshaking entre
o emissor UDP e o receptor UDP
cada segmento UDP eacutemanipuladoindependentemente dos outros
Porque existe o UDP Sem estabelecimento de
conexatildeo (a conexatildeo incluiatraso)
simples natildeo manteacutem o estado da conexatildeo no emissor e no receptor
Cabeccedilalho pequeno no segmento
Sem controle de congestionamento UDP pode enviar segmentos tatildeoraacutepido quanto desejado (e possiacutevel)
Transport Layer 3-16
Mais sobre o UDP
Geralmente utilizado emaplicaccedilotildees envolvendostreaming multimiacutedia
Tolerante a perdas Sensiacutevel agrave taxa
Uso de UDP DNS SNMP
Transferecircncia confiaacutevelsobre o UDP adicionarconfiabilidade no niacutevel daaplicaccedilatildeo
Recuperaccedilatildeo de erroespeciacutefica da aplicaccedilatildeo
da portade origem
32 bits
Dado da aplicaccedilatildeo(mensagem)
Formato do segmento UDP
tamanho checksumTamanho emBytes do
segmento UDPincluindo ocabeccedilalho
da portade destino
Transport Layer 3-17
Checksum UDP
Emissor Trata o conteuacutedo do
segmento como umasequecircncia de inteiros de 16 bits
checksum adiccedilatildeo (soma em complemento de 1)
o emissor coloca o valor do checksum no campo de checksum do UDP
Receptor Computa o checksum do
segmento recebido
Checa se o checksum computado eacute igual ao valor encontrado no campo checksum
NO ndash erro detectado
YES ndash nenhum errodectetado (entretantopode exister erro)
Objetivo detetar ldquoerrosrdquo no segmento transmitido
Transport Layer 3-18
Exemplo Internet Checksum Nota
Na adiccedilatildeo dos valores um carryout do bit maissignificativo deve ser adicionado ao resultado
Exemplo adiccedilatildeo de dois inteiros de 16 bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
wraparound
sumchecksum
Transport Layer 3-19
bull 31 Serviccedilos da camada de transporte
bull 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
bull 33 Transporte natildeo orientado agrave conexatildeo UDP
bull 34 Princiacutepios de transferecircncia confiaacutevel de dados
bull 35 Transporte orientado agrave conexatildeo TCPbull Estrutura do segmentobull Transferecircncia confiaacutevel de dadosbull Controle de fluxobull Gerenciamento de conexatildeo
bull 36 Princiacutepios de controle de congestionamento
bull 37 Controle de congestionamento do TCP
Camada de transporte
Transport Layer 3-20
bull Importante nas camadasde aplicaccedilatildeo transportee enlace
bull Top 10 na lista dos toacutepicos mais importantsde redes
bull Caracteriacutesticas dos canaisnatildeo confiaacuteveisdeterminaratildeo a complexidade dos protocolos confiaacuteveis de transferecircncia de dados (rdt)
Princiacutepios de transferecircncia confiaacutevel de dados
Transport Layer 3-21
ladotransmissor
ladoreceptor
rdt_send() chamada da camada superior (ex pela aplicaccedilatildeo) Passa dados paraentregar agrave camada superior receptora
udt_send() chamada pela entidadede transporte para transferir pacotes
para o receptor sobre o canal natildeoconfiaacutevel
rdt_rcv() chamada quando o pacote chegaao lado receptor do canal
deliver_data() chamada pelaentidade de transporte para
entregar dados agrave camada superior
Transferecircncia confiaacutevel o ponto de partida
Transport Layer 3-22
Etapas
bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees
bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor
estado1
estado2
evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado
estado quando neste ldquoestadordquoo proacuteximo estado fica
unicamente determinadopelo proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel o ponto de partida
Transport Layer 3-23
bull Canal de transmissatildeoperfeitamente confiaacutevel
bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes
bull FSMs separadas paratransmissor e receptor
bull Transmissor envia dados parao canal subjacente
bull Receptor lecirc os dados do canal subjacente
rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis
Transport Layer 3-24
rdt20 canal com erros de bit
bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits
bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente
bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros
bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK
bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender
Transport Layer 3-25
rdt20 especificaccedilatildeo FSM
Transport Layer 3-26
aguardachamadade cima
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 operaccedilatildeo com ausecircncia de erros
Transport Layer 3-27
aguardachamadade cima
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) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 cenaacuterio de erro
Transport Layer 3-28
O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata
Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada
pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes
duplicados
Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do
receptor
rdt20 tem um problema fatal
Transport Layer 3-29
rdt21 transmissor trata ACKNAKsperdidos
rdt21 receptor trata ACKNAKsperdidos
Wait for 0 from below
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Wait for 1 from below
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
Transport Layer 3-31
Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados
bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1
Receptorbull Deve verificar se o pacote recebido eacute duplicado
bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor
rdt21 discussatildeo
Transport Layer 3-32
bull Mesma funcionalidade do rdt21 usando somente ACKs
bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido
bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente
rdt22 um protocolo sem NAK
Transport Layer 3-33
aguardachamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguardaACK
0
fragmento FSMdo transmissor
aguarda
0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)
fragmento FSMdo receptor
Λ
rdt22 fragmentos do transmissor e do receptor
Transport Layer 3-34
Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante
Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)
bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso
bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido
bull Exige um temporizador decrescente
rdt30 canais com erros e perdas
Transport Layer 3-35
Transmissor rdt30
Transport Layer 3-36
rdt30 em accedilatildeo
Transport Layer 3-37
rdt30 em accedilatildeo
Transport Layer 3-38
bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado
bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps
bull O protocolo de rede limita o uso dos recursos fiacutesicos
bull rdt30 funciona mas o desempenho eacute sofriacutevel
bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB
Desempenho do rdt30
Ttransmis
satildeo
= 8 kbpkt109 bs
= 8 microsegL (tamanho do pacote em bits)
R (taxa de transmissatildeo bps)=
Usender=008
30008 = 000027 L RRTT + L R
=
Transport Layer 3-39
rdt30 operaccedilatildeo pare e espere
Transmissatildeo do 1ordm Bit dopacote t = 0
emissor receptor
RTT
Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK
Recebe ACK envia proacuteximopacote t = RTT + L R
U sender
= 008
30008 = 000027
microsec
L R
RTT + L R =
Transport Layer 3-40
Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos
bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada
bull Armazenamento no transmissor eou no receptor
bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
Protocolos com paralelismo (pipelining)
Transport Layer 3-41
Pipelining aumento da utilizaccedilatildeo
emissor receptor
RTT
Uacuteltimo bit transmitido t = L R
Chegada do primeiro bitChegada do uacuteltimo bit envia ACK
Chegada do ACK envia o proacuteximo pacote t = RTT + L R
U emissor
= 024
30008 = 00008
microsecon
3 L R
RTT + L R =
Aumenta a utilizaccedilatildeopor um fator de 3
Transport Layer 3-42
Protocolos do tipo Pipelining
Go-back-N visatildeo geral Emissor pode enviar ateacute N
pacotes natildeo reconhecidos(unacked) no pipeline
Receptor envia acksacumulativos
Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo
Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido
Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)
Retransmissatildeo seletiva visatildeogeral
Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)
Receptor reconhece (acks) pacotes individuais
Emissor manteacutemtemporizador para cadapacote natildeo reconhecido
Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido
Transport Layer 3-43
Transmissor
bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote
bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos
bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)
bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela
Go-Back-N
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-8
Como trabalha a demultiplexaccedilatildeo host recebe datagramas IP
cada datagrama possui o endereccedilo IP da origem e o endereccedilo IP do destino
cada datagrama carrega 1 segmento da camada de transporte
cada segmento possui osnuacutemeros das portas de origem e de destino
o host utiliza os endereccedilos IP e os nuacutemeros das portas paraencaminhar o segmento aosocket apropriado
da porta de origem
da porta dedestino
32 bits
dado da aplicaccedilatildeo(mensagem)
outros campos docabeccedilalho
Formato do segmento TCPUDP
Transport Layer 3-9
Demultiplexaccedilatildeo sem conexatildeo
Cria sockets com nuacutemerosde porta
DatagramSocket mySocket1 = new DatagramSocket(12534)
DatagramSocket mySocket2 = new DatagramSocket(12535)
O socket UDP eacute identificadopor uma tupla de doiselementos
(endereccedilo IP destino nuacutemero porta de destino)
quando o host recebe um segmento UDP
checa o nuacutemero da porta de destino no segmento
direciona o segmento UDP para o socket que conteacutemaquele numero
datagramas IP com endereccedilosIP origem diferentes eounuacutemeros de porta de origem diferentes satildeo encaminhados ao mesmo socket
Transport Layer 3-10
Demux sem conexatildeo (cont)
DatagramSocket serverSocket = new DatagramSocket(6428)
ClienteIPB
P2
clienteIP A
P1P1P3
servidorIP C
SP 6428
DP 9157
SP 9157
DP 6428
SP 6428
DP 5775
SP 5775
DP 6428
SP provecirc ldquoendereccedilo de retornordquo
Transport Layer 3-11
Demux orientado agrave conexatildeo
O socket TCP eacuteidentificado por umatupla de 4 elementos
Endereccedilo IP de origem Nuacutemero da porta de
origem Endereccedilo IP de destino Nuacutemero da porta de
destino
host receptor utiliza osquatro valores paraencaminhar o segmentoao socket apropriado
O servidor pode suportarvaacuterios sockets TCP simultaneamente
cada socket eacute identificadopela sua tupla-4
Servidores Web possuemdiferentes sockets paracada conexatildeo com o cliente
HTTP natildeo-persistenteteraacute um socket diferentepara cada requisiccedilatildeo
Transport Layer 3-12
Demux orientado agrave conexatildeo(cont)
ClienteIPB
P1
clienteIP A
P1P2P4
servidorIP C
SP 9157
DP 80
SP 9157
DP 80
P5 P6 P3
D-IPC
S-IP A
D-IPC
S-IP B
SP 5775
DP 80
D-IPC
S-IP B
Transport Layer 3-13
Connection-oriented demux Servidor Web com Threads
ClienteIPB
P1
clienteIP A
P1P2
servidorIP C
SP 9157
DP 80
SP 9157
DP 80
P4 P3
D-IPC
S-IP A
D-IPC
S-IP B
SP 5775
DP 80
D-IPC
S-IP B
Transport Layer 3-14
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camada de Transporte
32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
33 Transporte semconexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevel de dados
35 Transporte orientado agraveconexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento da conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento no TCP
Transport Layer 3-15
UDP User Datagram Protocol [RFC 768]
Protocolo de transporteInternet ldquosem gordurasrdquo
Serviccedilo ldquomelhor esforccedilordquo os segmentos UDP podem
Ser perdidos
Ser entregues fora de ordem agrave aplicaccedilatildeo
Sem conexatildeo sem handshaking entre
o emissor UDP e o receptor UDP
cada segmento UDP eacutemanipuladoindependentemente dos outros
Porque existe o UDP Sem estabelecimento de
conexatildeo (a conexatildeo incluiatraso)
simples natildeo manteacutem o estado da conexatildeo no emissor e no receptor
Cabeccedilalho pequeno no segmento
Sem controle de congestionamento UDP pode enviar segmentos tatildeoraacutepido quanto desejado (e possiacutevel)
Transport Layer 3-16
Mais sobre o UDP
Geralmente utilizado emaplicaccedilotildees envolvendostreaming multimiacutedia
Tolerante a perdas Sensiacutevel agrave taxa
Uso de UDP DNS SNMP
Transferecircncia confiaacutevelsobre o UDP adicionarconfiabilidade no niacutevel daaplicaccedilatildeo
Recuperaccedilatildeo de erroespeciacutefica da aplicaccedilatildeo
da portade origem
32 bits
Dado da aplicaccedilatildeo(mensagem)
Formato do segmento UDP
tamanho checksumTamanho emBytes do
segmento UDPincluindo ocabeccedilalho
da portade destino
Transport Layer 3-17
Checksum UDP
Emissor Trata o conteuacutedo do
segmento como umasequecircncia de inteiros de 16 bits
checksum adiccedilatildeo (soma em complemento de 1)
o emissor coloca o valor do checksum no campo de checksum do UDP
Receptor Computa o checksum do
segmento recebido
Checa se o checksum computado eacute igual ao valor encontrado no campo checksum
NO ndash erro detectado
YES ndash nenhum errodectetado (entretantopode exister erro)
Objetivo detetar ldquoerrosrdquo no segmento transmitido
Transport Layer 3-18
Exemplo Internet Checksum Nota
Na adiccedilatildeo dos valores um carryout do bit maissignificativo deve ser adicionado ao resultado
Exemplo adiccedilatildeo de dois inteiros de 16 bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
wraparound
sumchecksum
Transport Layer 3-19
bull 31 Serviccedilos da camada de transporte
bull 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
bull 33 Transporte natildeo orientado agrave conexatildeo UDP
bull 34 Princiacutepios de transferecircncia confiaacutevel de dados
bull 35 Transporte orientado agrave conexatildeo TCPbull Estrutura do segmentobull Transferecircncia confiaacutevel de dadosbull Controle de fluxobull Gerenciamento de conexatildeo
bull 36 Princiacutepios de controle de congestionamento
bull 37 Controle de congestionamento do TCP
Camada de transporte
Transport Layer 3-20
bull Importante nas camadasde aplicaccedilatildeo transportee enlace
bull Top 10 na lista dos toacutepicos mais importantsde redes
bull Caracteriacutesticas dos canaisnatildeo confiaacuteveisdeterminaratildeo a complexidade dos protocolos confiaacuteveis de transferecircncia de dados (rdt)
Princiacutepios de transferecircncia confiaacutevel de dados
Transport Layer 3-21
ladotransmissor
ladoreceptor
rdt_send() chamada da camada superior (ex pela aplicaccedilatildeo) Passa dados paraentregar agrave camada superior receptora
udt_send() chamada pela entidadede transporte para transferir pacotes
para o receptor sobre o canal natildeoconfiaacutevel
rdt_rcv() chamada quando o pacote chegaao lado receptor do canal
deliver_data() chamada pelaentidade de transporte para
entregar dados agrave camada superior
Transferecircncia confiaacutevel o ponto de partida
Transport Layer 3-22
Etapas
bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees
bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor
estado1
estado2
evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado
estado quando neste ldquoestadordquoo proacuteximo estado fica
unicamente determinadopelo proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel o ponto de partida
Transport Layer 3-23
bull Canal de transmissatildeoperfeitamente confiaacutevel
bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes
bull FSMs separadas paratransmissor e receptor
bull Transmissor envia dados parao canal subjacente
bull Receptor lecirc os dados do canal subjacente
rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis
Transport Layer 3-24
rdt20 canal com erros de bit
bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits
bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente
bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros
bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK
bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender
Transport Layer 3-25
rdt20 especificaccedilatildeo FSM
Transport Layer 3-26
aguardachamadade cima
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 operaccedilatildeo com ausecircncia de erros
Transport Layer 3-27
aguardachamadade cima
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) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 cenaacuterio de erro
Transport Layer 3-28
O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata
Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada
pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes
duplicados
Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do
receptor
rdt20 tem um problema fatal
Transport Layer 3-29
rdt21 transmissor trata ACKNAKsperdidos
rdt21 receptor trata ACKNAKsperdidos
Wait for 0 from below
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Wait for 1 from below
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
Transport Layer 3-31
Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados
bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1
Receptorbull Deve verificar se o pacote recebido eacute duplicado
bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor
rdt21 discussatildeo
Transport Layer 3-32
bull Mesma funcionalidade do rdt21 usando somente ACKs
bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido
bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente
rdt22 um protocolo sem NAK
Transport Layer 3-33
aguardachamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguardaACK
0
fragmento FSMdo transmissor
aguarda
0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)
fragmento FSMdo receptor
Λ
rdt22 fragmentos do transmissor e do receptor
Transport Layer 3-34
Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante
Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)
bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso
bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido
bull Exige um temporizador decrescente
rdt30 canais com erros e perdas
Transport Layer 3-35
Transmissor rdt30
Transport Layer 3-36
rdt30 em accedilatildeo
Transport Layer 3-37
rdt30 em accedilatildeo
Transport Layer 3-38
bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado
bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps
bull O protocolo de rede limita o uso dos recursos fiacutesicos
bull rdt30 funciona mas o desempenho eacute sofriacutevel
bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB
Desempenho do rdt30
Ttransmis
satildeo
= 8 kbpkt109 bs
= 8 microsegL (tamanho do pacote em bits)
R (taxa de transmissatildeo bps)=
Usender=008
30008 = 000027 L RRTT + L R
=
Transport Layer 3-39
rdt30 operaccedilatildeo pare e espere
Transmissatildeo do 1ordm Bit dopacote t = 0
emissor receptor
RTT
Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK
Recebe ACK envia proacuteximopacote t = RTT + L R
U sender
= 008
30008 = 000027
microsec
L R
RTT + L R =
Transport Layer 3-40
Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos
bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada
bull Armazenamento no transmissor eou no receptor
bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
Protocolos com paralelismo (pipelining)
Transport Layer 3-41
Pipelining aumento da utilizaccedilatildeo
emissor receptor
RTT
Uacuteltimo bit transmitido t = L R
Chegada do primeiro bitChegada do uacuteltimo bit envia ACK
Chegada do ACK envia o proacuteximo pacote t = RTT + L R
U emissor
= 024
30008 = 00008
microsecon
3 L R
RTT + L R =
Aumenta a utilizaccedilatildeopor um fator de 3
Transport Layer 3-42
Protocolos do tipo Pipelining
Go-back-N visatildeo geral Emissor pode enviar ateacute N
pacotes natildeo reconhecidos(unacked) no pipeline
Receptor envia acksacumulativos
Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo
Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido
Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)
Retransmissatildeo seletiva visatildeogeral
Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)
Receptor reconhece (acks) pacotes individuais
Emissor manteacutemtemporizador para cadapacote natildeo reconhecido
Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido
Transport Layer 3-43
Transmissor
bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote
bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos
bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)
bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela
Go-Back-N
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-9
Demultiplexaccedilatildeo sem conexatildeo
Cria sockets com nuacutemerosde porta
DatagramSocket mySocket1 = new DatagramSocket(12534)
DatagramSocket mySocket2 = new DatagramSocket(12535)
O socket UDP eacute identificadopor uma tupla de doiselementos
(endereccedilo IP destino nuacutemero porta de destino)
quando o host recebe um segmento UDP
checa o nuacutemero da porta de destino no segmento
direciona o segmento UDP para o socket que conteacutemaquele numero
datagramas IP com endereccedilosIP origem diferentes eounuacutemeros de porta de origem diferentes satildeo encaminhados ao mesmo socket
Transport Layer 3-10
Demux sem conexatildeo (cont)
DatagramSocket serverSocket = new DatagramSocket(6428)
ClienteIPB
P2
clienteIP A
P1P1P3
servidorIP C
SP 6428
DP 9157
SP 9157
DP 6428
SP 6428
DP 5775
SP 5775
DP 6428
SP provecirc ldquoendereccedilo de retornordquo
Transport Layer 3-11
Demux orientado agrave conexatildeo
O socket TCP eacuteidentificado por umatupla de 4 elementos
Endereccedilo IP de origem Nuacutemero da porta de
origem Endereccedilo IP de destino Nuacutemero da porta de
destino
host receptor utiliza osquatro valores paraencaminhar o segmentoao socket apropriado
O servidor pode suportarvaacuterios sockets TCP simultaneamente
cada socket eacute identificadopela sua tupla-4
Servidores Web possuemdiferentes sockets paracada conexatildeo com o cliente
HTTP natildeo-persistenteteraacute um socket diferentepara cada requisiccedilatildeo
Transport Layer 3-12
Demux orientado agrave conexatildeo(cont)
ClienteIPB
P1
clienteIP A
P1P2P4
servidorIP C
SP 9157
DP 80
SP 9157
DP 80
P5 P6 P3
D-IPC
S-IP A
D-IPC
S-IP B
SP 5775
DP 80
D-IPC
S-IP B
Transport Layer 3-13
Connection-oriented demux Servidor Web com Threads
ClienteIPB
P1
clienteIP A
P1P2
servidorIP C
SP 9157
DP 80
SP 9157
DP 80
P4 P3
D-IPC
S-IP A
D-IPC
S-IP B
SP 5775
DP 80
D-IPC
S-IP B
Transport Layer 3-14
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camada de Transporte
32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
33 Transporte semconexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevel de dados
35 Transporte orientado agraveconexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento da conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento no TCP
Transport Layer 3-15
UDP User Datagram Protocol [RFC 768]
Protocolo de transporteInternet ldquosem gordurasrdquo
Serviccedilo ldquomelhor esforccedilordquo os segmentos UDP podem
Ser perdidos
Ser entregues fora de ordem agrave aplicaccedilatildeo
Sem conexatildeo sem handshaking entre
o emissor UDP e o receptor UDP
cada segmento UDP eacutemanipuladoindependentemente dos outros
Porque existe o UDP Sem estabelecimento de
conexatildeo (a conexatildeo incluiatraso)
simples natildeo manteacutem o estado da conexatildeo no emissor e no receptor
Cabeccedilalho pequeno no segmento
Sem controle de congestionamento UDP pode enviar segmentos tatildeoraacutepido quanto desejado (e possiacutevel)
Transport Layer 3-16
Mais sobre o UDP
Geralmente utilizado emaplicaccedilotildees envolvendostreaming multimiacutedia
Tolerante a perdas Sensiacutevel agrave taxa
Uso de UDP DNS SNMP
Transferecircncia confiaacutevelsobre o UDP adicionarconfiabilidade no niacutevel daaplicaccedilatildeo
Recuperaccedilatildeo de erroespeciacutefica da aplicaccedilatildeo
da portade origem
32 bits
Dado da aplicaccedilatildeo(mensagem)
Formato do segmento UDP
tamanho checksumTamanho emBytes do
segmento UDPincluindo ocabeccedilalho
da portade destino
Transport Layer 3-17
Checksum UDP
Emissor Trata o conteuacutedo do
segmento como umasequecircncia de inteiros de 16 bits
checksum adiccedilatildeo (soma em complemento de 1)
o emissor coloca o valor do checksum no campo de checksum do UDP
Receptor Computa o checksum do
segmento recebido
Checa se o checksum computado eacute igual ao valor encontrado no campo checksum
NO ndash erro detectado
YES ndash nenhum errodectetado (entretantopode exister erro)
Objetivo detetar ldquoerrosrdquo no segmento transmitido
Transport Layer 3-18
Exemplo Internet Checksum Nota
Na adiccedilatildeo dos valores um carryout do bit maissignificativo deve ser adicionado ao resultado
Exemplo adiccedilatildeo de dois inteiros de 16 bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
wraparound
sumchecksum
Transport Layer 3-19
bull 31 Serviccedilos da camada de transporte
bull 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
bull 33 Transporte natildeo orientado agrave conexatildeo UDP
bull 34 Princiacutepios de transferecircncia confiaacutevel de dados
bull 35 Transporte orientado agrave conexatildeo TCPbull Estrutura do segmentobull Transferecircncia confiaacutevel de dadosbull Controle de fluxobull Gerenciamento de conexatildeo
bull 36 Princiacutepios de controle de congestionamento
bull 37 Controle de congestionamento do TCP
Camada de transporte
Transport Layer 3-20
bull Importante nas camadasde aplicaccedilatildeo transportee enlace
bull Top 10 na lista dos toacutepicos mais importantsde redes
bull Caracteriacutesticas dos canaisnatildeo confiaacuteveisdeterminaratildeo a complexidade dos protocolos confiaacuteveis de transferecircncia de dados (rdt)
Princiacutepios de transferecircncia confiaacutevel de dados
Transport Layer 3-21
ladotransmissor
ladoreceptor
rdt_send() chamada da camada superior (ex pela aplicaccedilatildeo) Passa dados paraentregar agrave camada superior receptora
udt_send() chamada pela entidadede transporte para transferir pacotes
para o receptor sobre o canal natildeoconfiaacutevel
rdt_rcv() chamada quando o pacote chegaao lado receptor do canal
deliver_data() chamada pelaentidade de transporte para
entregar dados agrave camada superior
Transferecircncia confiaacutevel o ponto de partida
Transport Layer 3-22
Etapas
bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees
bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor
estado1
estado2
evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado
estado quando neste ldquoestadordquoo proacuteximo estado fica
unicamente determinadopelo proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel o ponto de partida
Transport Layer 3-23
bull Canal de transmissatildeoperfeitamente confiaacutevel
bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes
bull FSMs separadas paratransmissor e receptor
bull Transmissor envia dados parao canal subjacente
bull Receptor lecirc os dados do canal subjacente
rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis
Transport Layer 3-24
rdt20 canal com erros de bit
bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits
bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente
bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros
bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK
bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender
Transport Layer 3-25
rdt20 especificaccedilatildeo FSM
Transport Layer 3-26
aguardachamadade cima
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 operaccedilatildeo com ausecircncia de erros
Transport Layer 3-27
aguardachamadade cima
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) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 cenaacuterio de erro
Transport Layer 3-28
O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata
Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada
pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes
duplicados
Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do
receptor
rdt20 tem um problema fatal
Transport Layer 3-29
rdt21 transmissor trata ACKNAKsperdidos
rdt21 receptor trata ACKNAKsperdidos
Wait for 0 from below
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Wait for 1 from below
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
Transport Layer 3-31
Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados
bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1
Receptorbull Deve verificar se o pacote recebido eacute duplicado
bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor
rdt21 discussatildeo
Transport Layer 3-32
bull Mesma funcionalidade do rdt21 usando somente ACKs
bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido
bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente
rdt22 um protocolo sem NAK
Transport Layer 3-33
aguardachamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguardaACK
0
fragmento FSMdo transmissor
aguarda
0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)
fragmento FSMdo receptor
Λ
rdt22 fragmentos do transmissor e do receptor
Transport Layer 3-34
Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante
Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)
bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso
bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido
bull Exige um temporizador decrescente
rdt30 canais com erros e perdas
Transport Layer 3-35
Transmissor rdt30
Transport Layer 3-36
rdt30 em accedilatildeo
Transport Layer 3-37
rdt30 em accedilatildeo
Transport Layer 3-38
bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado
bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps
bull O protocolo de rede limita o uso dos recursos fiacutesicos
bull rdt30 funciona mas o desempenho eacute sofriacutevel
bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB
Desempenho do rdt30
Ttransmis
satildeo
= 8 kbpkt109 bs
= 8 microsegL (tamanho do pacote em bits)
R (taxa de transmissatildeo bps)=
Usender=008
30008 = 000027 L RRTT + L R
=
Transport Layer 3-39
rdt30 operaccedilatildeo pare e espere
Transmissatildeo do 1ordm Bit dopacote t = 0
emissor receptor
RTT
Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK
Recebe ACK envia proacuteximopacote t = RTT + L R
U sender
= 008
30008 = 000027
microsec
L R
RTT + L R =
Transport Layer 3-40
Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos
bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada
bull Armazenamento no transmissor eou no receptor
bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
Protocolos com paralelismo (pipelining)
Transport Layer 3-41
Pipelining aumento da utilizaccedilatildeo
emissor receptor
RTT
Uacuteltimo bit transmitido t = L R
Chegada do primeiro bitChegada do uacuteltimo bit envia ACK
Chegada do ACK envia o proacuteximo pacote t = RTT + L R
U emissor
= 024
30008 = 00008
microsecon
3 L R
RTT + L R =
Aumenta a utilizaccedilatildeopor um fator de 3
Transport Layer 3-42
Protocolos do tipo Pipelining
Go-back-N visatildeo geral Emissor pode enviar ateacute N
pacotes natildeo reconhecidos(unacked) no pipeline
Receptor envia acksacumulativos
Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo
Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido
Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)
Retransmissatildeo seletiva visatildeogeral
Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)
Receptor reconhece (acks) pacotes individuais
Emissor manteacutemtemporizador para cadapacote natildeo reconhecido
Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido
Transport Layer 3-43
Transmissor
bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote
bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos
bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)
bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela
Go-Back-N
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-10
Demux sem conexatildeo (cont)
DatagramSocket serverSocket = new DatagramSocket(6428)
ClienteIPB
P2
clienteIP A
P1P1P3
servidorIP C
SP 6428
DP 9157
SP 9157
DP 6428
SP 6428
DP 5775
SP 5775
DP 6428
SP provecirc ldquoendereccedilo de retornordquo
Transport Layer 3-11
Demux orientado agrave conexatildeo
O socket TCP eacuteidentificado por umatupla de 4 elementos
Endereccedilo IP de origem Nuacutemero da porta de
origem Endereccedilo IP de destino Nuacutemero da porta de
destino
host receptor utiliza osquatro valores paraencaminhar o segmentoao socket apropriado
O servidor pode suportarvaacuterios sockets TCP simultaneamente
cada socket eacute identificadopela sua tupla-4
Servidores Web possuemdiferentes sockets paracada conexatildeo com o cliente
HTTP natildeo-persistenteteraacute um socket diferentepara cada requisiccedilatildeo
Transport Layer 3-12
Demux orientado agrave conexatildeo(cont)
ClienteIPB
P1
clienteIP A
P1P2P4
servidorIP C
SP 9157
DP 80
SP 9157
DP 80
P5 P6 P3
D-IPC
S-IP A
D-IPC
S-IP B
SP 5775
DP 80
D-IPC
S-IP B
Transport Layer 3-13
Connection-oriented demux Servidor Web com Threads
ClienteIPB
P1
clienteIP A
P1P2
servidorIP C
SP 9157
DP 80
SP 9157
DP 80
P4 P3
D-IPC
S-IP A
D-IPC
S-IP B
SP 5775
DP 80
D-IPC
S-IP B
Transport Layer 3-14
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camada de Transporte
32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
33 Transporte semconexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevel de dados
35 Transporte orientado agraveconexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento da conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento no TCP
Transport Layer 3-15
UDP User Datagram Protocol [RFC 768]
Protocolo de transporteInternet ldquosem gordurasrdquo
Serviccedilo ldquomelhor esforccedilordquo os segmentos UDP podem
Ser perdidos
Ser entregues fora de ordem agrave aplicaccedilatildeo
Sem conexatildeo sem handshaking entre
o emissor UDP e o receptor UDP
cada segmento UDP eacutemanipuladoindependentemente dos outros
Porque existe o UDP Sem estabelecimento de
conexatildeo (a conexatildeo incluiatraso)
simples natildeo manteacutem o estado da conexatildeo no emissor e no receptor
Cabeccedilalho pequeno no segmento
Sem controle de congestionamento UDP pode enviar segmentos tatildeoraacutepido quanto desejado (e possiacutevel)
Transport Layer 3-16
Mais sobre o UDP
Geralmente utilizado emaplicaccedilotildees envolvendostreaming multimiacutedia
Tolerante a perdas Sensiacutevel agrave taxa
Uso de UDP DNS SNMP
Transferecircncia confiaacutevelsobre o UDP adicionarconfiabilidade no niacutevel daaplicaccedilatildeo
Recuperaccedilatildeo de erroespeciacutefica da aplicaccedilatildeo
da portade origem
32 bits
Dado da aplicaccedilatildeo(mensagem)
Formato do segmento UDP
tamanho checksumTamanho emBytes do
segmento UDPincluindo ocabeccedilalho
da portade destino
Transport Layer 3-17
Checksum UDP
Emissor Trata o conteuacutedo do
segmento como umasequecircncia de inteiros de 16 bits
checksum adiccedilatildeo (soma em complemento de 1)
o emissor coloca o valor do checksum no campo de checksum do UDP
Receptor Computa o checksum do
segmento recebido
Checa se o checksum computado eacute igual ao valor encontrado no campo checksum
NO ndash erro detectado
YES ndash nenhum errodectetado (entretantopode exister erro)
Objetivo detetar ldquoerrosrdquo no segmento transmitido
Transport Layer 3-18
Exemplo Internet Checksum Nota
Na adiccedilatildeo dos valores um carryout do bit maissignificativo deve ser adicionado ao resultado
Exemplo adiccedilatildeo de dois inteiros de 16 bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
wraparound
sumchecksum
Transport Layer 3-19
bull 31 Serviccedilos da camada de transporte
bull 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
bull 33 Transporte natildeo orientado agrave conexatildeo UDP
bull 34 Princiacutepios de transferecircncia confiaacutevel de dados
bull 35 Transporte orientado agrave conexatildeo TCPbull Estrutura do segmentobull Transferecircncia confiaacutevel de dadosbull Controle de fluxobull Gerenciamento de conexatildeo
bull 36 Princiacutepios de controle de congestionamento
bull 37 Controle de congestionamento do TCP
Camada de transporte
Transport Layer 3-20
bull Importante nas camadasde aplicaccedilatildeo transportee enlace
bull Top 10 na lista dos toacutepicos mais importantsde redes
bull Caracteriacutesticas dos canaisnatildeo confiaacuteveisdeterminaratildeo a complexidade dos protocolos confiaacuteveis de transferecircncia de dados (rdt)
Princiacutepios de transferecircncia confiaacutevel de dados
Transport Layer 3-21
ladotransmissor
ladoreceptor
rdt_send() chamada da camada superior (ex pela aplicaccedilatildeo) Passa dados paraentregar agrave camada superior receptora
udt_send() chamada pela entidadede transporte para transferir pacotes
para o receptor sobre o canal natildeoconfiaacutevel
rdt_rcv() chamada quando o pacote chegaao lado receptor do canal
deliver_data() chamada pelaentidade de transporte para
entregar dados agrave camada superior
Transferecircncia confiaacutevel o ponto de partida
Transport Layer 3-22
Etapas
bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees
bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor
estado1
estado2
evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado
estado quando neste ldquoestadordquoo proacuteximo estado fica
unicamente determinadopelo proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel o ponto de partida
Transport Layer 3-23
bull Canal de transmissatildeoperfeitamente confiaacutevel
bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes
bull FSMs separadas paratransmissor e receptor
bull Transmissor envia dados parao canal subjacente
bull Receptor lecirc os dados do canal subjacente
rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis
Transport Layer 3-24
rdt20 canal com erros de bit
bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits
bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente
bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros
bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK
bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender
Transport Layer 3-25
rdt20 especificaccedilatildeo FSM
Transport Layer 3-26
aguardachamadade cima
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 operaccedilatildeo com ausecircncia de erros
Transport Layer 3-27
aguardachamadade cima
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) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 cenaacuterio de erro
Transport Layer 3-28
O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata
Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada
pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes
duplicados
Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do
receptor
rdt20 tem um problema fatal
Transport Layer 3-29
rdt21 transmissor trata ACKNAKsperdidos
rdt21 receptor trata ACKNAKsperdidos
Wait for 0 from below
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Wait for 1 from below
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
Transport Layer 3-31
Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados
bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1
Receptorbull Deve verificar se o pacote recebido eacute duplicado
bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor
rdt21 discussatildeo
Transport Layer 3-32
bull Mesma funcionalidade do rdt21 usando somente ACKs
bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido
bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente
rdt22 um protocolo sem NAK
Transport Layer 3-33
aguardachamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguardaACK
0
fragmento FSMdo transmissor
aguarda
0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)
fragmento FSMdo receptor
Λ
rdt22 fragmentos do transmissor e do receptor
Transport Layer 3-34
Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante
Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)
bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso
bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido
bull Exige um temporizador decrescente
rdt30 canais com erros e perdas
Transport Layer 3-35
Transmissor rdt30
Transport Layer 3-36
rdt30 em accedilatildeo
Transport Layer 3-37
rdt30 em accedilatildeo
Transport Layer 3-38
bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado
bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps
bull O protocolo de rede limita o uso dos recursos fiacutesicos
bull rdt30 funciona mas o desempenho eacute sofriacutevel
bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB
Desempenho do rdt30
Ttransmis
satildeo
= 8 kbpkt109 bs
= 8 microsegL (tamanho do pacote em bits)
R (taxa de transmissatildeo bps)=
Usender=008
30008 = 000027 L RRTT + L R
=
Transport Layer 3-39
rdt30 operaccedilatildeo pare e espere
Transmissatildeo do 1ordm Bit dopacote t = 0
emissor receptor
RTT
Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK
Recebe ACK envia proacuteximopacote t = RTT + L R
U sender
= 008
30008 = 000027
microsec
L R
RTT + L R =
Transport Layer 3-40
Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos
bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada
bull Armazenamento no transmissor eou no receptor
bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
Protocolos com paralelismo (pipelining)
Transport Layer 3-41
Pipelining aumento da utilizaccedilatildeo
emissor receptor
RTT
Uacuteltimo bit transmitido t = L R
Chegada do primeiro bitChegada do uacuteltimo bit envia ACK
Chegada do ACK envia o proacuteximo pacote t = RTT + L R
U emissor
= 024
30008 = 00008
microsecon
3 L R
RTT + L R =
Aumenta a utilizaccedilatildeopor um fator de 3
Transport Layer 3-42
Protocolos do tipo Pipelining
Go-back-N visatildeo geral Emissor pode enviar ateacute N
pacotes natildeo reconhecidos(unacked) no pipeline
Receptor envia acksacumulativos
Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo
Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido
Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)
Retransmissatildeo seletiva visatildeogeral
Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)
Receptor reconhece (acks) pacotes individuais
Emissor manteacutemtemporizador para cadapacote natildeo reconhecido
Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido
Transport Layer 3-43
Transmissor
bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote
bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos
bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)
bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela
Go-Back-N
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-11
Demux orientado agrave conexatildeo
O socket TCP eacuteidentificado por umatupla de 4 elementos
Endereccedilo IP de origem Nuacutemero da porta de
origem Endereccedilo IP de destino Nuacutemero da porta de
destino
host receptor utiliza osquatro valores paraencaminhar o segmentoao socket apropriado
O servidor pode suportarvaacuterios sockets TCP simultaneamente
cada socket eacute identificadopela sua tupla-4
Servidores Web possuemdiferentes sockets paracada conexatildeo com o cliente
HTTP natildeo-persistenteteraacute um socket diferentepara cada requisiccedilatildeo
Transport Layer 3-12
Demux orientado agrave conexatildeo(cont)
ClienteIPB
P1
clienteIP A
P1P2P4
servidorIP C
SP 9157
DP 80
SP 9157
DP 80
P5 P6 P3
D-IPC
S-IP A
D-IPC
S-IP B
SP 5775
DP 80
D-IPC
S-IP B
Transport Layer 3-13
Connection-oriented demux Servidor Web com Threads
ClienteIPB
P1
clienteIP A
P1P2
servidorIP C
SP 9157
DP 80
SP 9157
DP 80
P4 P3
D-IPC
S-IP A
D-IPC
S-IP B
SP 5775
DP 80
D-IPC
S-IP B
Transport Layer 3-14
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camada de Transporte
32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
33 Transporte semconexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevel de dados
35 Transporte orientado agraveconexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento da conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento no TCP
Transport Layer 3-15
UDP User Datagram Protocol [RFC 768]
Protocolo de transporteInternet ldquosem gordurasrdquo
Serviccedilo ldquomelhor esforccedilordquo os segmentos UDP podem
Ser perdidos
Ser entregues fora de ordem agrave aplicaccedilatildeo
Sem conexatildeo sem handshaking entre
o emissor UDP e o receptor UDP
cada segmento UDP eacutemanipuladoindependentemente dos outros
Porque existe o UDP Sem estabelecimento de
conexatildeo (a conexatildeo incluiatraso)
simples natildeo manteacutem o estado da conexatildeo no emissor e no receptor
Cabeccedilalho pequeno no segmento
Sem controle de congestionamento UDP pode enviar segmentos tatildeoraacutepido quanto desejado (e possiacutevel)
Transport Layer 3-16
Mais sobre o UDP
Geralmente utilizado emaplicaccedilotildees envolvendostreaming multimiacutedia
Tolerante a perdas Sensiacutevel agrave taxa
Uso de UDP DNS SNMP
Transferecircncia confiaacutevelsobre o UDP adicionarconfiabilidade no niacutevel daaplicaccedilatildeo
Recuperaccedilatildeo de erroespeciacutefica da aplicaccedilatildeo
da portade origem
32 bits
Dado da aplicaccedilatildeo(mensagem)
Formato do segmento UDP
tamanho checksumTamanho emBytes do
segmento UDPincluindo ocabeccedilalho
da portade destino
Transport Layer 3-17
Checksum UDP
Emissor Trata o conteuacutedo do
segmento como umasequecircncia de inteiros de 16 bits
checksum adiccedilatildeo (soma em complemento de 1)
o emissor coloca o valor do checksum no campo de checksum do UDP
Receptor Computa o checksum do
segmento recebido
Checa se o checksum computado eacute igual ao valor encontrado no campo checksum
NO ndash erro detectado
YES ndash nenhum errodectetado (entretantopode exister erro)
Objetivo detetar ldquoerrosrdquo no segmento transmitido
Transport Layer 3-18
Exemplo Internet Checksum Nota
Na adiccedilatildeo dos valores um carryout do bit maissignificativo deve ser adicionado ao resultado
Exemplo adiccedilatildeo de dois inteiros de 16 bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
wraparound
sumchecksum
Transport Layer 3-19
bull 31 Serviccedilos da camada de transporte
bull 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
bull 33 Transporte natildeo orientado agrave conexatildeo UDP
bull 34 Princiacutepios de transferecircncia confiaacutevel de dados
bull 35 Transporte orientado agrave conexatildeo TCPbull Estrutura do segmentobull Transferecircncia confiaacutevel de dadosbull Controle de fluxobull Gerenciamento de conexatildeo
bull 36 Princiacutepios de controle de congestionamento
bull 37 Controle de congestionamento do TCP
Camada de transporte
Transport Layer 3-20
bull Importante nas camadasde aplicaccedilatildeo transportee enlace
bull Top 10 na lista dos toacutepicos mais importantsde redes
bull Caracteriacutesticas dos canaisnatildeo confiaacuteveisdeterminaratildeo a complexidade dos protocolos confiaacuteveis de transferecircncia de dados (rdt)
Princiacutepios de transferecircncia confiaacutevel de dados
Transport Layer 3-21
ladotransmissor
ladoreceptor
rdt_send() chamada da camada superior (ex pela aplicaccedilatildeo) Passa dados paraentregar agrave camada superior receptora
udt_send() chamada pela entidadede transporte para transferir pacotes
para o receptor sobre o canal natildeoconfiaacutevel
rdt_rcv() chamada quando o pacote chegaao lado receptor do canal
deliver_data() chamada pelaentidade de transporte para
entregar dados agrave camada superior
Transferecircncia confiaacutevel o ponto de partida
Transport Layer 3-22
Etapas
bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees
bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor
estado1
estado2
evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado
estado quando neste ldquoestadordquoo proacuteximo estado fica
unicamente determinadopelo proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel o ponto de partida
Transport Layer 3-23
bull Canal de transmissatildeoperfeitamente confiaacutevel
bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes
bull FSMs separadas paratransmissor e receptor
bull Transmissor envia dados parao canal subjacente
bull Receptor lecirc os dados do canal subjacente
rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis
Transport Layer 3-24
rdt20 canal com erros de bit
bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits
bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente
bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros
bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK
bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender
Transport Layer 3-25
rdt20 especificaccedilatildeo FSM
Transport Layer 3-26
aguardachamadade cima
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 operaccedilatildeo com ausecircncia de erros
Transport Layer 3-27
aguardachamadade cima
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) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 cenaacuterio de erro
Transport Layer 3-28
O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata
Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada
pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes
duplicados
Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do
receptor
rdt20 tem um problema fatal
Transport Layer 3-29
rdt21 transmissor trata ACKNAKsperdidos
rdt21 receptor trata ACKNAKsperdidos
Wait for 0 from below
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Wait for 1 from below
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
Transport Layer 3-31
Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados
bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1
Receptorbull Deve verificar se o pacote recebido eacute duplicado
bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor
rdt21 discussatildeo
Transport Layer 3-32
bull Mesma funcionalidade do rdt21 usando somente ACKs
bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido
bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente
rdt22 um protocolo sem NAK
Transport Layer 3-33
aguardachamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguardaACK
0
fragmento FSMdo transmissor
aguarda
0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)
fragmento FSMdo receptor
Λ
rdt22 fragmentos do transmissor e do receptor
Transport Layer 3-34
Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante
Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)
bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso
bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido
bull Exige um temporizador decrescente
rdt30 canais com erros e perdas
Transport Layer 3-35
Transmissor rdt30
Transport Layer 3-36
rdt30 em accedilatildeo
Transport Layer 3-37
rdt30 em accedilatildeo
Transport Layer 3-38
bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado
bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps
bull O protocolo de rede limita o uso dos recursos fiacutesicos
bull rdt30 funciona mas o desempenho eacute sofriacutevel
bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB
Desempenho do rdt30
Ttransmis
satildeo
= 8 kbpkt109 bs
= 8 microsegL (tamanho do pacote em bits)
R (taxa de transmissatildeo bps)=
Usender=008
30008 = 000027 L RRTT + L R
=
Transport Layer 3-39
rdt30 operaccedilatildeo pare e espere
Transmissatildeo do 1ordm Bit dopacote t = 0
emissor receptor
RTT
Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK
Recebe ACK envia proacuteximopacote t = RTT + L R
U sender
= 008
30008 = 000027
microsec
L R
RTT + L R =
Transport Layer 3-40
Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos
bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada
bull Armazenamento no transmissor eou no receptor
bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
Protocolos com paralelismo (pipelining)
Transport Layer 3-41
Pipelining aumento da utilizaccedilatildeo
emissor receptor
RTT
Uacuteltimo bit transmitido t = L R
Chegada do primeiro bitChegada do uacuteltimo bit envia ACK
Chegada do ACK envia o proacuteximo pacote t = RTT + L R
U emissor
= 024
30008 = 00008
microsecon
3 L R
RTT + L R =
Aumenta a utilizaccedilatildeopor um fator de 3
Transport Layer 3-42
Protocolos do tipo Pipelining
Go-back-N visatildeo geral Emissor pode enviar ateacute N
pacotes natildeo reconhecidos(unacked) no pipeline
Receptor envia acksacumulativos
Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo
Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido
Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)
Retransmissatildeo seletiva visatildeogeral
Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)
Receptor reconhece (acks) pacotes individuais
Emissor manteacutemtemporizador para cadapacote natildeo reconhecido
Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido
Transport Layer 3-43
Transmissor
bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote
bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos
bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)
bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela
Go-Back-N
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-12
Demux orientado agrave conexatildeo(cont)
ClienteIPB
P1
clienteIP A
P1P2P4
servidorIP C
SP 9157
DP 80
SP 9157
DP 80
P5 P6 P3
D-IPC
S-IP A
D-IPC
S-IP B
SP 5775
DP 80
D-IPC
S-IP B
Transport Layer 3-13
Connection-oriented demux Servidor Web com Threads
ClienteIPB
P1
clienteIP A
P1P2
servidorIP C
SP 9157
DP 80
SP 9157
DP 80
P4 P3
D-IPC
S-IP A
D-IPC
S-IP B
SP 5775
DP 80
D-IPC
S-IP B
Transport Layer 3-14
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camada de Transporte
32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
33 Transporte semconexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevel de dados
35 Transporte orientado agraveconexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento da conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento no TCP
Transport Layer 3-15
UDP User Datagram Protocol [RFC 768]
Protocolo de transporteInternet ldquosem gordurasrdquo
Serviccedilo ldquomelhor esforccedilordquo os segmentos UDP podem
Ser perdidos
Ser entregues fora de ordem agrave aplicaccedilatildeo
Sem conexatildeo sem handshaking entre
o emissor UDP e o receptor UDP
cada segmento UDP eacutemanipuladoindependentemente dos outros
Porque existe o UDP Sem estabelecimento de
conexatildeo (a conexatildeo incluiatraso)
simples natildeo manteacutem o estado da conexatildeo no emissor e no receptor
Cabeccedilalho pequeno no segmento
Sem controle de congestionamento UDP pode enviar segmentos tatildeoraacutepido quanto desejado (e possiacutevel)
Transport Layer 3-16
Mais sobre o UDP
Geralmente utilizado emaplicaccedilotildees envolvendostreaming multimiacutedia
Tolerante a perdas Sensiacutevel agrave taxa
Uso de UDP DNS SNMP
Transferecircncia confiaacutevelsobre o UDP adicionarconfiabilidade no niacutevel daaplicaccedilatildeo
Recuperaccedilatildeo de erroespeciacutefica da aplicaccedilatildeo
da portade origem
32 bits
Dado da aplicaccedilatildeo(mensagem)
Formato do segmento UDP
tamanho checksumTamanho emBytes do
segmento UDPincluindo ocabeccedilalho
da portade destino
Transport Layer 3-17
Checksum UDP
Emissor Trata o conteuacutedo do
segmento como umasequecircncia de inteiros de 16 bits
checksum adiccedilatildeo (soma em complemento de 1)
o emissor coloca o valor do checksum no campo de checksum do UDP
Receptor Computa o checksum do
segmento recebido
Checa se o checksum computado eacute igual ao valor encontrado no campo checksum
NO ndash erro detectado
YES ndash nenhum errodectetado (entretantopode exister erro)
Objetivo detetar ldquoerrosrdquo no segmento transmitido
Transport Layer 3-18
Exemplo Internet Checksum Nota
Na adiccedilatildeo dos valores um carryout do bit maissignificativo deve ser adicionado ao resultado
Exemplo adiccedilatildeo de dois inteiros de 16 bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
wraparound
sumchecksum
Transport Layer 3-19
bull 31 Serviccedilos da camada de transporte
bull 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
bull 33 Transporte natildeo orientado agrave conexatildeo UDP
bull 34 Princiacutepios de transferecircncia confiaacutevel de dados
bull 35 Transporte orientado agrave conexatildeo TCPbull Estrutura do segmentobull Transferecircncia confiaacutevel de dadosbull Controle de fluxobull Gerenciamento de conexatildeo
bull 36 Princiacutepios de controle de congestionamento
bull 37 Controle de congestionamento do TCP
Camada de transporte
Transport Layer 3-20
bull Importante nas camadasde aplicaccedilatildeo transportee enlace
bull Top 10 na lista dos toacutepicos mais importantsde redes
bull Caracteriacutesticas dos canaisnatildeo confiaacuteveisdeterminaratildeo a complexidade dos protocolos confiaacuteveis de transferecircncia de dados (rdt)
Princiacutepios de transferecircncia confiaacutevel de dados
Transport Layer 3-21
ladotransmissor
ladoreceptor
rdt_send() chamada da camada superior (ex pela aplicaccedilatildeo) Passa dados paraentregar agrave camada superior receptora
udt_send() chamada pela entidadede transporte para transferir pacotes
para o receptor sobre o canal natildeoconfiaacutevel
rdt_rcv() chamada quando o pacote chegaao lado receptor do canal
deliver_data() chamada pelaentidade de transporte para
entregar dados agrave camada superior
Transferecircncia confiaacutevel o ponto de partida
Transport Layer 3-22
Etapas
bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees
bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor
estado1
estado2
evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado
estado quando neste ldquoestadordquoo proacuteximo estado fica
unicamente determinadopelo proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel o ponto de partida
Transport Layer 3-23
bull Canal de transmissatildeoperfeitamente confiaacutevel
bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes
bull FSMs separadas paratransmissor e receptor
bull Transmissor envia dados parao canal subjacente
bull Receptor lecirc os dados do canal subjacente
rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis
Transport Layer 3-24
rdt20 canal com erros de bit
bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits
bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente
bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros
bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK
bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender
Transport Layer 3-25
rdt20 especificaccedilatildeo FSM
Transport Layer 3-26
aguardachamadade cima
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 operaccedilatildeo com ausecircncia de erros
Transport Layer 3-27
aguardachamadade cima
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) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 cenaacuterio de erro
Transport Layer 3-28
O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata
Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada
pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes
duplicados
Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do
receptor
rdt20 tem um problema fatal
Transport Layer 3-29
rdt21 transmissor trata ACKNAKsperdidos
rdt21 receptor trata ACKNAKsperdidos
Wait for 0 from below
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Wait for 1 from below
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
Transport Layer 3-31
Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados
bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1
Receptorbull Deve verificar se o pacote recebido eacute duplicado
bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor
rdt21 discussatildeo
Transport Layer 3-32
bull Mesma funcionalidade do rdt21 usando somente ACKs
bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido
bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente
rdt22 um protocolo sem NAK
Transport Layer 3-33
aguardachamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguardaACK
0
fragmento FSMdo transmissor
aguarda
0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)
fragmento FSMdo receptor
Λ
rdt22 fragmentos do transmissor e do receptor
Transport Layer 3-34
Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante
Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)
bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso
bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido
bull Exige um temporizador decrescente
rdt30 canais com erros e perdas
Transport Layer 3-35
Transmissor rdt30
Transport Layer 3-36
rdt30 em accedilatildeo
Transport Layer 3-37
rdt30 em accedilatildeo
Transport Layer 3-38
bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado
bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps
bull O protocolo de rede limita o uso dos recursos fiacutesicos
bull rdt30 funciona mas o desempenho eacute sofriacutevel
bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB
Desempenho do rdt30
Ttransmis
satildeo
= 8 kbpkt109 bs
= 8 microsegL (tamanho do pacote em bits)
R (taxa de transmissatildeo bps)=
Usender=008
30008 = 000027 L RRTT + L R
=
Transport Layer 3-39
rdt30 operaccedilatildeo pare e espere
Transmissatildeo do 1ordm Bit dopacote t = 0
emissor receptor
RTT
Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK
Recebe ACK envia proacuteximopacote t = RTT + L R
U sender
= 008
30008 = 000027
microsec
L R
RTT + L R =
Transport Layer 3-40
Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos
bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada
bull Armazenamento no transmissor eou no receptor
bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
Protocolos com paralelismo (pipelining)
Transport Layer 3-41
Pipelining aumento da utilizaccedilatildeo
emissor receptor
RTT
Uacuteltimo bit transmitido t = L R
Chegada do primeiro bitChegada do uacuteltimo bit envia ACK
Chegada do ACK envia o proacuteximo pacote t = RTT + L R
U emissor
= 024
30008 = 00008
microsecon
3 L R
RTT + L R =
Aumenta a utilizaccedilatildeopor um fator de 3
Transport Layer 3-42
Protocolos do tipo Pipelining
Go-back-N visatildeo geral Emissor pode enviar ateacute N
pacotes natildeo reconhecidos(unacked) no pipeline
Receptor envia acksacumulativos
Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo
Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido
Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)
Retransmissatildeo seletiva visatildeogeral
Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)
Receptor reconhece (acks) pacotes individuais
Emissor manteacutemtemporizador para cadapacote natildeo reconhecido
Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido
Transport Layer 3-43
Transmissor
bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote
bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos
bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)
bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela
Go-Back-N
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-13
Connection-oriented demux Servidor Web com Threads
ClienteIPB
P1
clienteIP A
P1P2
servidorIP C
SP 9157
DP 80
SP 9157
DP 80
P4 P3
D-IPC
S-IP A
D-IPC
S-IP B
SP 5775
DP 80
D-IPC
S-IP B
Transport Layer 3-14
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camada de Transporte
32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
33 Transporte semconexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevel de dados
35 Transporte orientado agraveconexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento da conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento no TCP
Transport Layer 3-15
UDP User Datagram Protocol [RFC 768]
Protocolo de transporteInternet ldquosem gordurasrdquo
Serviccedilo ldquomelhor esforccedilordquo os segmentos UDP podem
Ser perdidos
Ser entregues fora de ordem agrave aplicaccedilatildeo
Sem conexatildeo sem handshaking entre
o emissor UDP e o receptor UDP
cada segmento UDP eacutemanipuladoindependentemente dos outros
Porque existe o UDP Sem estabelecimento de
conexatildeo (a conexatildeo incluiatraso)
simples natildeo manteacutem o estado da conexatildeo no emissor e no receptor
Cabeccedilalho pequeno no segmento
Sem controle de congestionamento UDP pode enviar segmentos tatildeoraacutepido quanto desejado (e possiacutevel)
Transport Layer 3-16
Mais sobre o UDP
Geralmente utilizado emaplicaccedilotildees envolvendostreaming multimiacutedia
Tolerante a perdas Sensiacutevel agrave taxa
Uso de UDP DNS SNMP
Transferecircncia confiaacutevelsobre o UDP adicionarconfiabilidade no niacutevel daaplicaccedilatildeo
Recuperaccedilatildeo de erroespeciacutefica da aplicaccedilatildeo
da portade origem
32 bits
Dado da aplicaccedilatildeo(mensagem)
Formato do segmento UDP
tamanho checksumTamanho emBytes do
segmento UDPincluindo ocabeccedilalho
da portade destino
Transport Layer 3-17
Checksum UDP
Emissor Trata o conteuacutedo do
segmento como umasequecircncia de inteiros de 16 bits
checksum adiccedilatildeo (soma em complemento de 1)
o emissor coloca o valor do checksum no campo de checksum do UDP
Receptor Computa o checksum do
segmento recebido
Checa se o checksum computado eacute igual ao valor encontrado no campo checksum
NO ndash erro detectado
YES ndash nenhum errodectetado (entretantopode exister erro)
Objetivo detetar ldquoerrosrdquo no segmento transmitido
Transport Layer 3-18
Exemplo Internet Checksum Nota
Na adiccedilatildeo dos valores um carryout do bit maissignificativo deve ser adicionado ao resultado
Exemplo adiccedilatildeo de dois inteiros de 16 bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
wraparound
sumchecksum
Transport Layer 3-19
bull 31 Serviccedilos da camada de transporte
bull 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
bull 33 Transporte natildeo orientado agrave conexatildeo UDP
bull 34 Princiacutepios de transferecircncia confiaacutevel de dados
bull 35 Transporte orientado agrave conexatildeo TCPbull Estrutura do segmentobull Transferecircncia confiaacutevel de dadosbull Controle de fluxobull Gerenciamento de conexatildeo
bull 36 Princiacutepios de controle de congestionamento
bull 37 Controle de congestionamento do TCP
Camada de transporte
Transport Layer 3-20
bull Importante nas camadasde aplicaccedilatildeo transportee enlace
bull Top 10 na lista dos toacutepicos mais importantsde redes
bull Caracteriacutesticas dos canaisnatildeo confiaacuteveisdeterminaratildeo a complexidade dos protocolos confiaacuteveis de transferecircncia de dados (rdt)
Princiacutepios de transferecircncia confiaacutevel de dados
Transport Layer 3-21
ladotransmissor
ladoreceptor
rdt_send() chamada da camada superior (ex pela aplicaccedilatildeo) Passa dados paraentregar agrave camada superior receptora
udt_send() chamada pela entidadede transporte para transferir pacotes
para o receptor sobre o canal natildeoconfiaacutevel
rdt_rcv() chamada quando o pacote chegaao lado receptor do canal
deliver_data() chamada pelaentidade de transporte para
entregar dados agrave camada superior
Transferecircncia confiaacutevel o ponto de partida
Transport Layer 3-22
Etapas
bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees
bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor
estado1
estado2
evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado
estado quando neste ldquoestadordquoo proacuteximo estado fica
unicamente determinadopelo proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel o ponto de partida
Transport Layer 3-23
bull Canal de transmissatildeoperfeitamente confiaacutevel
bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes
bull FSMs separadas paratransmissor e receptor
bull Transmissor envia dados parao canal subjacente
bull Receptor lecirc os dados do canal subjacente
rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis
Transport Layer 3-24
rdt20 canal com erros de bit
bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits
bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente
bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros
bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK
bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender
Transport Layer 3-25
rdt20 especificaccedilatildeo FSM
Transport Layer 3-26
aguardachamadade cima
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 operaccedilatildeo com ausecircncia de erros
Transport Layer 3-27
aguardachamadade cima
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) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 cenaacuterio de erro
Transport Layer 3-28
O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata
Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada
pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes
duplicados
Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do
receptor
rdt20 tem um problema fatal
Transport Layer 3-29
rdt21 transmissor trata ACKNAKsperdidos
rdt21 receptor trata ACKNAKsperdidos
Wait for 0 from below
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Wait for 1 from below
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
Transport Layer 3-31
Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados
bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1
Receptorbull Deve verificar se o pacote recebido eacute duplicado
bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor
rdt21 discussatildeo
Transport Layer 3-32
bull Mesma funcionalidade do rdt21 usando somente ACKs
bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido
bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente
rdt22 um protocolo sem NAK
Transport Layer 3-33
aguardachamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguardaACK
0
fragmento FSMdo transmissor
aguarda
0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)
fragmento FSMdo receptor
Λ
rdt22 fragmentos do transmissor e do receptor
Transport Layer 3-34
Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante
Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)
bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso
bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido
bull Exige um temporizador decrescente
rdt30 canais com erros e perdas
Transport Layer 3-35
Transmissor rdt30
Transport Layer 3-36
rdt30 em accedilatildeo
Transport Layer 3-37
rdt30 em accedilatildeo
Transport Layer 3-38
bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado
bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps
bull O protocolo de rede limita o uso dos recursos fiacutesicos
bull rdt30 funciona mas o desempenho eacute sofriacutevel
bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB
Desempenho do rdt30
Ttransmis
satildeo
= 8 kbpkt109 bs
= 8 microsegL (tamanho do pacote em bits)
R (taxa de transmissatildeo bps)=
Usender=008
30008 = 000027 L RRTT + L R
=
Transport Layer 3-39
rdt30 operaccedilatildeo pare e espere
Transmissatildeo do 1ordm Bit dopacote t = 0
emissor receptor
RTT
Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK
Recebe ACK envia proacuteximopacote t = RTT + L R
U sender
= 008
30008 = 000027
microsec
L R
RTT + L R =
Transport Layer 3-40
Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos
bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada
bull Armazenamento no transmissor eou no receptor
bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
Protocolos com paralelismo (pipelining)
Transport Layer 3-41
Pipelining aumento da utilizaccedilatildeo
emissor receptor
RTT
Uacuteltimo bit transmitido t = L R
Chegada do primeiro bitChegada do uacuteltimo bit envia ACK
Chegada do ACK envia o proacuteximo pacote t = RTT + L R
U emissor
= 024
30008 = 00008
microsecon
3 L R
RTT + L R =
Aumenta a utilizaccedilatildeopor um fator de 3
Transport Layer 3-42
Protocolos do tipo Pipelining
Go-back-N visatildeo geral Emissor pode enviar ateacute N
pacotes natildeo reconhecidos(unacked) no pipeline
Receptor envia acksacumulativos
Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo
Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido
Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)
Retransmissatildeo seletiva visatildeogeral
Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)
Receptor reconhece (acks) pacotes individuais
Emissor manteacutemtemporizador para cadapacote natildeo reconhecido
Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido
Transport Layer 3-43
Transmissor
bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote
bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos
bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)
bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela
Go-Back-N
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-14
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camada de Transporte
32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
33 Transporte semconexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevel de dados
35 Transporte orientado agraveconexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento da conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento no TCP
Transport Layer 3-15
UDP User Datagram Protocol [RFC 768]
Protocolo de transporteInternet ldquosem gordurasrdquo
Serviccedilo ldquomelhor esforccedilordquo os segmentos UDP podem
Ser perdidos
Ser entregues fora de ordem agrave aplicaccedilatildeo
Sem conexatildeo sem handshaking entre
o emissor UDP e o receptor UDP
cada segmento UDP eacutemanipuladoindependentemente dos outros
Porque existe o UDP Sem estabelecimento de
conexatildeo (a conexatildeo incluiatraso)
simples natildeo manteacutem o estado da conexatildeo no emissor e no receptor
Cabeccedilalho pequeno no segmento
Sem controle de congestionamento UDP pode enviar segmentos tatildeoraacutepido quanto desejado (e possiacutevel)
Transport Layer 3-16
Mais sobre o UDP
Geralmente utilizado emaplicaccedilotildees envolvendostreaming multimiacutedia
Tolerante a perdas Sensiacutevel agrave taxa
Uso de UDP DNS SNMP
Transferecircncia confiaacutevelsobre o UDP adicionarconfiabilidade no niacutevel daaplicaccedilatildeo
Recuperaccedilatildeo de erroespeciacutefica da aplicaccedilatildeo
da portade origem
32 bits
Dado da aplicaccedilatildeo(mensagem)
Formato do segmento UDP
tamanho checksumTamanho emBytes do
segmento UDPincluindo ocabeccedilalho
da portade destino
Transport Layer 3-17
Checksum UDP
Emissor Trata o conteuacutedo do
segmento como umasequecircncia de inteiros de 16 bits
checksum adiccedilatildeo (soma em complemento de 1)
o emissor coloca o valor do checksum no campo de checksum do UDP
Receptor Computa o checksum do
segmento recebido
Checa se o checksum computado eacute igual ao valor encontrado no campo checksum
NO ndash erro detectado
YES ndash nenhum errodectetado (entretantopode exister erro)
Objetivo detetar ldquoerrosrdquo no segmento transmitido
Transport Layer 3-18
Exemplo Internet Checksum Nota
Na adiccedilatildeo dos valores um carryout do bit maissignificativo deve ser adicionado ao resultado
Exemplo adiccedilatildeo de dois inteiros de 16 bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
wraparound
sumchecksum
Transport Layer 3-19
bull 31 Serviccedilos da camada de transporte
bull 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
bull 33 Transporte natildeo orientado agrave conexatildeo UDP
bull 34 Princiacutepios de transferecircncia confiaacutevel de dados
bull 35 Transporte orientado agrave conexatildeo TCPbull Estrutura do segmentobull Transferecircncia confiaacutevel de dadosbull Controle de fluxobull Gerenciamento de conexatildeo
bull 36 Princiacutepios de controle de congestionamento
bull 37 Controle de congestionamento do TCP
Camada de transporte
Transport Layer 3-20
bull Importante nas camadasde aplicaccedilatildeo transportee enlace
bull Top 10 na lista dos toacutepicos mais importantsde redes
bull Caracteriacutesticas dos canaisnatildeo confiaacuteveisdeterminaratildeo a complexidade dos protocolos confiaacuteveis de transferecircncia de dados (rdt)
Princiacutepios de transferecircncia confiaacutevel de dados
Transport Layer 3-21
ladotransmissor
ladoreceptor
rdt_send() chamada da camada superior (ex pela aplicaccedilatildeo) Passa dados paraentregar agrave camada superior receptora
udt_send() chamada pela entidadede transporte para transferir pacotes
para o receptor sobre o canal natildeoconfiaacutevel
rdt_rcv() chamada quando o pacote chegaao lado receptor do canal
deliver_data() chamada pelaentidade de transporte para
entregar dados agrave camada superior
Transferecircncia confiaacutevel o ponto de partida
Transport Layer 3-22
Etapas
bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees
bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor
estado1
estado2
evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado
estado quando neste ldquoestadordquoo proacuteximo estado fica
unicamente determinadopelo proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel o ponto de partida
Transport Layer 3-23
bull Canal de transmissatildeoperfeitamente confiaacutevel
bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes
bull FSMs separadas paratransmissor e receptor
bull Transmissor envia dados parao canal subjacente
bull Receptor lecirc os dados do canal subjacente
rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis
Transport Layer 3-24
rdt20 canal com erros de bit
bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits
bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente
bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros
bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK
bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender
Transport Layer 3-25
rdt20 especificaccedilatildeo FSM
Transport Layer 3-26
aguardachamadade cima
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 operaccedilatildeo com ausecircncia de erros
Transport Layer 3-27
aguardachamadade cima
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) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 cenaacuterio de erro
Transport Layer 3-28
O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata
Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada
pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes
duplicados
Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do
receptor
rdt20 tem um problema fatal
Transport Layer 3-29
rdt21 transmissor trata ACKNAKsperdidos
rdt21 receptor trata ACKNAKsperdidos
Wait for 0 from below
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Wait for 1 from below
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
Transport Layer 3-31
Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados
bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1
Receptorbull Deve verificar se o pacote recebido eacute duplicado
bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor
rdt21 discussatildeo
Transport Layer 3-32
bull Mesma funcionalidade do rdt21 usando somente ACKs
bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido
bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente
rdt22 um protocolo sem NAK
Transport Layer 3-33
aguardachamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguardaACK
0
fragmento FSMdo transmissor
aguarda
0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)
fragmento FSMdo receptor
Λ
rdt22 fragmentos do transmissor e do receptor
Transport Layer 3-34
Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante
Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)
bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso
bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido
bull Exige um temporizador decrescente
rdt30 canais com erros e perdas
Transport Layer 3-35
Transmissor rdt30
Transport Layer 3-36
rdt30 em accedilatildeo
Transport Layer 3-37
rdt30 em accedilatildeo
Transport Layer 3-38
bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado
bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps
bull O protocolo de rede limita o uso dos recursos fiacutesicos
bull rdt30 funciona mas o desempenho eacute sofriacutevel
bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB
Desempenho do rdt30
Ttransmis
satildeo
= 8 kbpkt109 bs
= 8 microsegL (tamanho do pacote em bits)
R (taxa de transmissatildeo bps)=
Usender=008
30008 = 000027 L RRTT + L R
=
Transport Layer 3-39
rdt30 operaccedilatildeo pare e espere
Transmissatildeo do 1ordm Bit dopacote t = 0
emissor receptor
RTT
Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK
Recebe ACK envia proacuteximopacote t = RTT + L R
U sender
= 008
30008 = 000027
microsec
L R
RTT + L R =
Transport Layer 3-40
Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos
bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada
bull Armazenamento no transmissor eou no receptor
bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
Protocolos com paralelismo (pipelining)
Transport Layer 3-41
Pipelining aumento da utilizaccedilatildeo
emissor receptor
RTT
Uacuteltimo bit transmitido t = L R
Chegada do primeiro bitChegada do uacuteltimo bit envia ACK
Chegada do ACK envia o proacuteximo pacote t = RTT + L R
U emissor
= 024
30008 = 00008
microsecon
3 L R
RTT + L R =
Aumenta a utilizaccedilatildeopor um fator de 3
Transport Layer 3-42
Protocolos do tipo Pipelining
Go-back-N visatildeo geral Emissor pode enviar ateacute N
pacotes natildeo reconhecidos(unacked) no pipeline
Receptor envia acksacumulativos
Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo
Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido
Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)
Retransmissatildeo seletiva visatildeogeral
Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)
Receptor reconhece (acks) pacotes individuais
Emissor manteacutemtemporizador para cadapacote natildeo reconhecido
Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido
Transport Layer 3-43
Transmissor
bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote
bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos
bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)
bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela
Go-Back-N
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-15
UDP User Datagram Protocol [RFC 768]
Protocolo de transporteInternet ldquosem gordurasrdquo
Serviccedilo ldquomelhor esforccedilordquo os segmentos UDP podem
Ser perdidos
Ser entregues fora de ordem agrave aplicaccedilatildeo
Sem conexatildeo sem handshaking entre
o emissor UDP e o receptor UDP
cada segmento UDP eacutemanipuladoindependentemente dos outros
Porque existe o UDP Sem estabelecimento de
conexatildeo (a conexatildeo incluiatraso)
simples natildeo manteacutem o estado da conexatildeo no emissor e no receptor
Cabeccedilalho pequeno no segmento
Sem controle de congestionamento UDP pode enviar segmentos tatildeoraacutepido quanto desejado (e possiacutevel)
Transport Layer 3-16
Mais sobre o UDP
Geralmente utilizado emaplicaccedilotildees envolvendostreaming multimiacutedia
Tolerante a perdas Sensiacutevel agrave taxa
Uso de UDP DNS SNMP
Transferecircncia confiaacutevelsobre o UDP adicionarconfiabilidade no niacutevel daaplicaccedilatildeo
Recuperaccedilatildeo de erroespeciacutefica da aplicaccedilatildeo
da portade origem
32 bits
Dado da aplicaccedilatildeo(mensagem)
Formato do segmento UDP
tamanho checksumTamanho emBytes do
segmento UDPincluindo ocabeccedilalho
da portade destino
Transport Layer 3-17
Checksum UDP
Emissor Trata o conteuacutedo do
segmento como umasequecircncia de inteiros de 16 bits
checksum adiccedilatildeo (soma em complemento de 1)
o emissor coloca o valor do checksum no campo de checksum do UDP
Receptor Computa o checksum do
segmento recebido
Checa se o checksum computado eacute igual ao valor encontrado no campo checksum
NO ndash erro detectado
YES ndash nenhum errodectetado (entretantopode exister erro)
Objetivo detetar ldquoerrosrdquo no segmento transmitido
Transport Layer 3-18
Exemplo Internet Checksum Nota
Na adiccedilatildeo dos valores um carryout do bit maissignificativo deve ser adicionado ao resultado
Exemplo adiccedilatildeo de dois inteiros de 16 bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
wraparound
sumchecksum
Transport Layer 3-19
bull 31 Serviccedilos da camada de transporte
bull 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
bull 33 Transporte natildeo orientado agrave conexatildeo UDP
bull 34 Princiacutepios de transferecircncia confiaacutevel de dados
bull 35 Transporte orientado agrave conexatildeo TCPbull Estrutura do segmentobull Transferecircncia confiaacutevel de dadosbull Controle de fluxobull Gerenciamento de conexatildeo
bull 36 Princiacutepios de controle de congestionamento
bull 37 Controle de congestionamento do TCP
Camada de transporte
Transport Layer 3-20
bull Importante nas camadasde aplicaccedilatildeo transportee enlace
bull Top 10 na lista dos toacutepicos mais importantsde redes
bull Caracteriacutesticas dos canaisnatildeo confiaacuteveisdeterminaratildeo a complexidade dos protocolos confiaacuteveis de transferecircncia de dados (rdt)
Princiacutepios de transferecircncia confiaacutevel de dados
Transport Layer 3-21
ladotransmissor
ladoreceptor
rdt_send() chamada da camada superior (ex pela aplicaccedilatildeo) Passa dados paraentregar agrave camada superior receptora
udt_send() chamada pela entidadede transporte para transferir pacotes
para o receptor sobre o canal natildeoconfiaacutevel
rdt_rcv() chamada quando o pacote chegaao lado receptor do canal
deliver_data() chamada pelaentidade de transporte para
entregar dados agrave camada superior
Transferecircncia confiaacutevel o ponto de partida
Transport Layer 3-22
Etapas
bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees
bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor
estado1
estado2
evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado
estado quando neste ldquoestadordquoo proacuteximo estado fica
unicamente determinadopelo proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel o ponto de partida
Transport Layer 3-23
bull Canal de transmissatildeoperfeitamente confiaacutevel
bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes
bull FSMs separadas paratransmissor e receptor
bull Transmissor envia dados parao canal subjacente
bull Receptor lecirc os dados do canal subjacente
rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis
Transport Layer 3-24
rdt20 canal com erros de bit
bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits
bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente
bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros
bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK
bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender
Transport Layer 3-25
rdt20 especificaccedilatildeo FSM
Transport Layer 3-26
aguardachamadade cima
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 operaccedilatildeo com ausecircncia de erros
Transport Layer 3-27
aguardachamadade cima
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) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 cenaacuterio de erro
Transport Layer 3-28
O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata
Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada
pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes
duplicados
Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do
receptor
rdt20 tem um problema fatal
Transport Layer 3-29
rdt21 transmissor trata ACKNAKsperdidos
rdt21 receptor trata ACKNAKsperdidos
Wait for 0 from below
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Wait for 1 from below
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
Transport Layer 3-31
Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados
bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1
Receptorbull Deve verificar se o pacote recebido eacute duplicado
bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor
rdt21 discussatildeo
Transport Layer 3-32
bull Mesma funcionalidade do rdt21 usando somente ACKs
bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido
bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente
rdt22 um protocolo sem NAK
Transport Layer 3-33
aguardachamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguardaACK
0
fragmento FSMdo transmissor
aguarda
0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)
fragmento FSMdo receptor
Λ
rdt22 fragmentos do transmissor e do receptor
Transport Layer 3-34
Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante
Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)
bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso
bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido
bull Exige um temporizador decrescente
rdt30 canais com erros e perdas
Transport Layer 3-35
Transmissor rdt30
Transport Layer 3-36
rdt30 em accedilatildeo
Transport Layer 3-37
rdt30 em accedilatildeo
Transport Layer 3-38
bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado
bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps
bull O protocolo de rede limita o uso dos recursos fiacutesicos
bull rdt30 funciona mas o desempenho eacute sofriacutevel
bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB
Desempenho do rdt30
Ttransmis
satildeo
= 8 kbpkt109 bs
= 8 microsegL (tamanho do pacote em bits)
R (taxa de transmissatildeo bps)=
Usender=008
30008 = 000027 L RRTT + L R
=
Transport Layer 3-39
rdt30 operaccedilatildeo pare e espere
Transmissatildeo do 1ordm Bit dopacote t = 0
emissor receptor
RTT
Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK
Recebe ACK envia proacuteximopacote t = RTT + L R
U sender
= 008
30008 = 000027
microsec
L R
RTT + L R =
Transport Layer 3-40
Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos
bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada
bull Armazenamento no transmissor eou no receptor
bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
Protocolos com paralelismo (pipelining)
Transport Layer 3-41
Pipelining aumento da utilizaccedilatildeo
emissor receptor
RTT
Uacuteltimo bit transmitido t = L R
Chegada do primeiro bitChegada do uacuteltimo bit envia ACK
Chegada do ACK envia o proacuteximo pacote t = RTT + L R
U emissor
= 024
30008 = 00008
microsecon
3 L R
RTT + L R =
Aumenta a utilizaccedilatildeopor um fator de 3
Transport Layer 3-42
Protocolos do tipo Pipelining
Go-back-N visatildeo geral Emissor pode enviar ateacute N
pacotes natildeo reconhecidos(unacked) no pipeline
Receptor envia acksacumulativos
Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo
Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido
Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)
Retransmissatildeo seletiva visatildeogeral
Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)
Receptor reconhece (acks) pacotes individuais
Emissor manteacutemtemporizador para cadapacote natildeo reconhecido
Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido
Transport Layer 3-43
Transmissor
bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote
bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos
bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)
bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela
Go-Back-N
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-16
Mais sobre o UDP
Geralmente utilizado emaplicaccedilotildees envolvendostreaming multimiacutedia
Tolerante a perdas Sensiacutevel agrave taxa
Uso de UDP DNS SNMP
Transferecircncia confiaacutevelsobre o UDP adicionarconfiabilidade no niacutevel daaplicaccedilatildeo
Recuperaccedilatildeo de erroespeciacutefica da aplicaccedilatildeo
da portade origem
32 bits
Dado da aplicaccedilatildeo(mensagem)
Formato do segmento UDP
tamanho checksumTamanho emBytes do
segmento UDPincluindo ocabeccedilalho
da portade destino
Transport Layer 3-17
Checksum UDP
Emissor Trata o conteuacutedo do
segmento como umasequecircncia de inteiros de 16 bits
checksum adiccedilatildeo (soma em complemento de 1)
o emissor coloca o valor do checksum no campo de checksum do UDP
Receptor Computa o checksum do
segmento recebido
Checa se o checksum computado eacute igual ao valor encontrado no campo checksum
NO ndash erro detectado
YES ndash nenhum errodectetado (entretantopode exister erro)
Objetivo detetar ldquoerrosrdquo no segmento transmitido
Transport Layer 3-18
Exemplo Internet Checksum Nota
Na adiccedilatildeo dos valores um carryout do bit maissignificativo deve ser adicionado ao resultado
Exemplo adiccedilatildeo de dois inteiros de 16 bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
wraparound
sumchecksum
Transport Layer 3-19
bull 31 Serviccedilos da camada de transporte
bull 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
bull 33 Transporte natildeo orientado agrave conexatildeo UDP
bull 34 Princiacutepios de transferecircncia confiaacutevel de dados
bull 35 Transporte orientado agrave conexatildeo TCPbull Estrutura do segmentobull Transferecircncia confiaacutevel de dadosbull Controle de fluxobull Gerenciamento de conexatildeo
bull 36 Princiacutepios de controle de congestionamento
bull 37 Controle de congestionamento do TCP
Camada de transporte
Transport Layer 3-20
bull Importante nas camadasde aplicaccedilatildeo transportee enlace
bull Top 10 na lista dos toacutepicos mais importantsde redes
bull Caracteriacutesticas dos canaisnatildeo confiaacuteveisdeterminaratildeo a complexidade dos protocolos confiaacuteveis de transferecircncia de dados (rdt)
Princiacutepios de transferecircncia confiaacutevel de dados
Transport Layer 3-21
ladotransmissor
ladoreceptor
rdt_send() chamada da camada superior (ex pela aplicaccedilatildeo) Passa dados paraentregar agrave camada superior receptora
udt_send() chamada pela entidadede transporte para transferir pacotes
para o receptor sobre o canal natildeoconfiaacutevel
rdt_rcv() chamada quando o pacote chegaao lado receptor do canal
deliver_data() chamada pelaentidade de transporte para
entregar dados agrave camada superior
Transferecircncia confiaacutevel o ponto de partida
Transport Layer 3-22
Etapas
bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees
bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor
estado1
estado2
evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado
estado quando neste ldquoestadordquoo proacuteximo estado fica
unicamente determinadopelo proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel o ponto de partida
Transport Layer 3-23
bull Canal de transmissatildeoperfeitamente confiaacutevel
bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes
bull FSMs separadas paratransmissor e receptor
bull Transmissor envia dados parao canal subjacente
bull Receptor lecirc os dados do canal subjacente
rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis
Transport Layer 3-24
rdt20 canal com erros de bit
bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits
bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente
bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros
bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK
bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender
Transport Layer 3-25
rdt20 especificaccedilatildeo FSM
Transport Layer 3-26
aguardachamadade cima
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 operaccedilatildeo com ausecircncia de erros
Transport Layer 3-27
aguardachamadade cima
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) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 cenaacuterio de erro
Transport Layer 3-28
O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata
Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada
pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes
duplicados
Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do
receptor
rdt20 tem um problema fatal
Transport Layer 3-29
rdt21 transmissor trata ACKNAKsperdidos
rdt21 receptor trata ACKNAKsperdidos
Wait for 0 from below
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Wait for 1 from below
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
Transport Layer 3-31
Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados
bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1
Receptorbull Deve verificar se o pacote recebido eacute duplicado
bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor
rdt21 discussatildeo
Transport Layer 3-32
bull Mesma funcionalidade do rdt21 usando somente ACKs
bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido
bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente
rdt22 um protocolo sem NAK
Transport Layer 3-33
aguardachamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguardaACK
0
fragmento FSMdo transmissor
aguarda
0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)
fragmento FSMdo receptor
Λ
rdt22 fragmentos do transmissor e do receptor
Transport Layer 3-34
Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante
Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)
bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso
bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido
bull Exige um temporizador decrescente
rdt30 canais com erros e perdas
Transport Layer 3-35
Transmissor rdt30
Transport Layer 3-36
rdt30 em accedilatildeo
Transport Layer 3-37
rdt30 em accedilatildeo
Transport Layer 3-38
bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado
bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps
bull O protocolo de rede limita o uso dos recursos fiacutesicos
bull rdt30 funciona mas o desempenho eacute sofriacutevel
bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB
Desempenho do rdt30
Ttransmis
satildeo
= 8 kbpkt109 bs
= 8 microsegL (tamanho do pacote em bits)
R (taxa de transmissatildeo bps)=
Usender=008
30008 = 000027 L RRTT + L R
=
Transport Layer 3-39
rdt30 operaccedilatildeo pare e espere
Transmissatildeo do 1ordm Bit dopacote t = 0
emissor receptor
RTT
Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK
Recebe ACK envia proacuteximopacote t = RTT + L R
U sender
= 008
30008 = 000027
microsec
L R
RTT + L R =
Transport Layer 3-40
Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos
bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada
bull Armazenamento no transmissor eou no receptor
bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
Protocolos com paralelismo (pipelining)
Transport Layer 3-41
Pipelining aumento da utilizaccedilatildeo
emissor receptor
RTT
Uacuteltimo bit transmitido t = L R
Chegada do primeiro bitChegada do uacuteltimo bit envia ACK
Chegada do ACK envia o proacuteximo pacote t = RTT + L R
U emissor
= 024
30008 = 00008
microsecon
3 L R
RTT + L R =
Aumenta a utilizaccedilatildeopor um fator de 3
Transport Layer 3-42
Protocolos do tipo Pipelining
Go-back-N visatildeo geral Emissor pode enviar ateacute N
pacotes natildeo reconhecidos(unacked) no pipeline
Receptor envia acksacumulativos
Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo
Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido
Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)
Retransmissatildeo seletiva visatildeogeral
Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)
Receptor reconhece (acks) pacotes individuais
Emissor manteacutemtemporizador para cadapacote natildeo reconhecido
Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido
Transport Layer 3-43
Transmissor
bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote
bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos
bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)
bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela
Go-Back-N
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-17
Checksum UDP
Emissor Trata o conteuacutedo do
segmento como umasequecircncia de inteiros de 16 bits
checksum adiccedilatildeo (soma em complemento de 1)
o emissor coloca o valor do checksum no campo de checksum do UDP
Receptor Computa o checksum do
segmento recebido
Checa se o checksum computado eacute igual ao valor encontrado no campo checksum
NO ndash erro detectado
YES ndash nenhum errodectetado (entretantopode exister erro)
Objetivo detetar ldquoerrosrdquo no segmento transmitido
Transport Layer 3-18
Exemplo Internet Checksum Nota
Na adiccedilatildeo dos valores um carryout do bit maissignificativo deve ser adicionado ao resultado
Exemplo adiccedilatildeo de dois inteiros de 16 bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
wraparound
sumchecksum
Transport Layer 3-19
bull 31 Serviccedilos da camada de transporte
bull 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
bull 33 Transporte natildeo orientado agrave conexatildeo UDP
bull 34 Princiacutepios de transferecircncia confiaacutevel de dados
bull 35 Transporte orientado agrave conexatildeo TCPbull Estrutura do segmentobull Transferecircncia confiaacutevel de dadosbull Controle de fluxobull Gerenciamento de conexatildeo
bull 36 Princiacutepios de controle de congestionamento
bull 37 Controle de congestionamento do TCP
Camada de transporte
Transport Layer 3-20
bull Importante nas camadasde aplicaccedilatildeo transportee enlace
bull Top 10 na lista dos toacutepicos mais importantsde redes
bull Caracteriacutesticas dos canaisnatildeo confiaacuteveisdeterminaratildeo a complexidade dos protocolos confiaacuteveis de transferecircncia de dados (rdt)
Princiacutepios de transferecircncia confiaacutevel de dados
Transport Layer 3-21
ladotransmissor
ladoreceptor
rdt_send() chamada da camada superior (ex pela aplicaccedilatildeo) Passa dados paraentregar agrave camada superior receptora
udt_send() chamada pela entidadede transporte para transferir pacotes
para o receptor sobre o canal natildeoconfiaacutevel
rdt_rcv() chamada quando o pacote chegaao lado receptor do canal
deliver_data() chamada pelaentidade de transporte para
entregar dados agrave camada superior
Transferecircncia confiaacutevel o ponto de partida
Transport Layer 3-22
Etapas
bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees
bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor
estado1
estado2
evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado
estado quando neste ldquoestadordquoo proacuteximo estado fica
unicamente determinadopelo proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel o ponto de partida
Transport Layer 3-23
bull Canal de transmissatildeoperfeitamente confiaacutevel
bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes
bull FSMs separadas paratransmissor e receptor
bull Transmissor envia dados parao canal subjacente
bull Receptor lecirc os dados do canal subjacente
rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis
Transport Layer 3-24
rdt20 canal com erros de bit
bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits
bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente
bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros
bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK
bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender
Transport Layer 3-25
rdt20 especificaccedilatildeo FSM
Transport Layer 3-26
aguardachamadade cima
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 operaccedilatildeo com ausecircncia de erros
Transport Layer 3-27
aguardachamadade cima
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) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 cenaacuterio de erro
Transport Layer 3-28
O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata
Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada
pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes
duplicados
Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do
receptor
rdt20 tem um problema fatal
Transport Layer 3-29
rdt21 transmissor trata ACKNAKsperdidos
rdt21 receptor trata ACKNAKsperdidos
Wait for 0 from below
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Wait for 1 from below
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
Transport Layer 3-31
Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados
bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1
Receptorbull Deve verificar se o pacote recebido eacute duplicado
bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor
rdt21 discussatildeo
Transport Layer 3-32
bull Mesma funcionalidade do rdt21 usando somente ACKs
bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido
bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente
rdt22 um protocolo sem NAK
Transport Layer 3-33
aguardachamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguardaACK
0
fragmento FSMdo transmissor
aguarda
0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)
fragmento FSMdo receptor
Λ
rdt22 fragmentos do transmissor e do receptor
Transport Layer 3-34
Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante
Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)
bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso
bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido
bull Exige um temporizador decrescente
rdt30 canais com erros e perdas
Transport Layer 3-35
Transmissor rdt30
Transport Layer 3-36
rdt30 em accedilatildeo
Transport Layer 3-37
rdt30 em accedilatildeo
Transport Layer 3-38
bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado
bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps
bull O protocolo de rede limita o uso dos recursos fiacutesicos
bull rdt30 funciona mas o desempenho eacute sofriacutevel
bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB
Desempenho do rdt30
Ttransmis
satildeo
= 8 kbpkt109 bs
= 8 microsegL (tamanho do pacote em bits)
R (taxa de transmissatildeo bps)=
Usender=008
30008 = 000027 L RRTT + L R
=
Transport Layer 3-39
rdt30 operaccedilatildeo pare e espere
Transmissatildeo do 1ordm Bit dopacote t = 0
emissor receptor
RTT
Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK
Recebe ACK envia proacuteximopacote t = RTT + L R
U sender
= 008
30008 = 000027
microsec
L R
RTT + L R =
Transport Layer 3-40
Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos
bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada
bull Armazenamento no transmissor eou no receptor
bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
Protocolos com paralelismo (pipelining)
Transport Layer 3-41
Pipelining aumento da utilizaccedilatildeo
emissor receptor
RTT
Uacuteltimo bit transmitido t = L R
Chegada do primeiro bitChegada do uacuteltimo bit envia ACK
Chegada do ACK envia o proacuteximo pacote t = RTT + L R
U emissor
= 024
30008 = 00008
microsecon
3 L R
RTT + L R =
Aumenta a utilizaccedilatildeopor um fator de 3
Transport Layer 3-42
Protocolos do tipo Pipelining
Go-back-N visatildeo geral Emissor pode enviar ateacute N
pacotes natildeo reconhecidos(unacked) no pipeline
Receptor envia acksacumulativos
Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo
Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido
Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)
Retransmissatildeo seletiva visatildeogeral
Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)
Receptor reconhece (acks) pacotes individuais
Emissor manteacutemtemporizador para cadapacote natildeo reconhecido
Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido
Transport Layer 3-43
Transmissor
bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote
bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos
bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)
bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela
Go-Back-N
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-18
Exemplo Internet Checksum Nota
Na adiccedilatildeo dos valores um carryout do bit maissignificativo deve ser adicionado ao resultado
Exemplo adiccedilatildeo de dois inteiros de 16 bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
wraparound
sumchecksum
Transport Layer 3-19
bull 31 Serviccedilos da camada de transporte
bull 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
bull 33 Transporte natildeo orientado agrave conexatildeo UDP
bull 34 Princiacutepios de transferecircncia confiaacutevel de dados
bull 35 Transporte orientado agrave conexatildeo TCPbull Estrutura do segmentobull Transferecircncia confiaacutevel de dadosbull Controle de fluxobull Gerenciamento de conexatildeo
bull 36 Princiacutepios de controle de congestionamento
bull 37 Controle de congestionamento do TCP
Camada de transporte
Transport Layer 3-20
bull Importante nas camadasde aplicaccedilatildeo transportee enlace
bull Top 10 na lista dos toacutepicos mais importantsde redes
bull Caracteriacutesticas dos canaisnatildeo confiaacuteveisdeterminaratildeo a complexidade dos protocolos confiaacuteveis de transferecircncia de dados (rdt)
Princiacutepios de transferecircncia confiaacutevel de dados
Transport Layer 3-21
ladotransmissor
ladoreceptor
rdt_send() chamada da camada superior (ex pela aplicaccedilatildeo) Passa dados paraentregar agrave camada superior receptora
udt_send() chamada pela entidadede transporte para transferir pacotes
para o receptor sobre o canal natildeoconfiaacutevel
rdt_rcv() chamada quando o pacote chegaao lado receptor do canal
deliver_data() chamada pelaentidade de transporte para
entregar dados agrave camada superior
Transferecircncia confiaacutevel o ponto de partida
Transport Layer 3-22
Etapas
bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees
bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor
estado1
estado2
evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado
estado quando neste ldquoestadordquoo proacuteximo estado fica
unicamente determinadopelo proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel o ponto de partida
Transport Layer 3-23
bull Canal de transmissatildeoperfeitamente confiaacutevel
bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes
bull FSMs separadas paratransmissor e receptor
bull Transmissor envia dados parao canal subjacente
bull Receptor lecirc os dados do canal subjacente
rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis
Transport Layer 3-24
rdt20 canal com erros de bit
bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits
bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente
bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros
bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK
bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender
Transport Layer 3-25
rdt20 especificaccedilatildeo FSM
Transport Layer 3-26
aguardachamadade cima
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 operaccedilatildeo com ausecircncia de erros
Transport Layer 3-27
aguardachamadade cima
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) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 cenaacuterio de erro
Transport Layer 3-28
O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata
Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada
pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes
duplicados
Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do
receptor
rdt20 tem um problema fatal
Transport Layer 3-29
rdt21 transmissor trata ACKNAKsperdidos
rdt21 receptor trata ACKNAKsperdidos
Wait for 0 from below
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Wait for 1 from below
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
Transport Layer 3-31
Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados
bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1
Receptorbull Deve verificar se o pacote recebido eacute duplicado
bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor
rdt21 discussatildeo
Transport Layer 3-32
bull Mesma funcionalidade do rdt21 usando somente ACKs
bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido
bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente
rdt22 um protocolo sem NAK
Transport Layer 3-33
aguardachamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguardaACK
0
fragmento FSMdo transmissor
aguarda
0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)
fragmento FSMdo receptor
Λ
rdt22 fragmentos do transmissor e do receptor
Transport Layer 3-34
Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante
Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)
bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso
bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido
bull Exige um temporizador decrescente
rdt30 canais com erros e perdas
Transport Layer 3-35
Transmissor rdt30
Transport Layer 3-36
rdt30 em accedilatildeo
Transport Layer 3-37
rdt30 em accedilatildeo
Transport Layer 3-38
bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado
bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps
bull O protocolo de rede limita o uso dos recursos fiacutesicos
bull rdt30 funciona mas o desempenho eacute sofriacutevel
bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB
Desempenho do rdt30
Ttransmis
satildeo
= 8 kbpkt109 bs
= 8 microsegL (tamanho do pacote em bits)
R (taxa de transmissatildeo bps)=
Usender=008
30008 = 000027 L RRTT + L R
=
Transport Layer 3-39
rdt30 operaccedilatildeo pare e espere
Transmissatildeo do 1ordm Bit dopacote t = 0
emissor receptor
RTT
Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK
Recebe ACK envia proacuteximopacote t = RTT + L R
U sender
= 008
30008 = 000027
microsec
L R
RTT + L R =
Transport Layer 3-40
Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos
bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada
bull Armazenamento no transmissor eou no receptor
bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
Protocolos com paralelismo (pipelining)
Transport Layer 3-41
Pipelining aumento da utilizaccedilatildeo
emissor receptor
RTT
Uacuteltimo bit transmitido t = L R
Chegada do primeiro bitChegada do uacuteltimo bit envia ACK
Chegada do ACK envia o proacuteximo pacote t = RTT + L R
U emissor
= 024
30008 = 00008
microsecon
3 L R
RTT + L R =
Aumenta a utilizaccedilatildeopor um fator de 3
Transport Layer 3-42
Protocolos do tipo Pipelining
Go-back-N visatildeo geral Emissor pode enviar ateacute N
pacotes natildeo reconhecidos(unacked) no pipeline
Receptor envia acksacumulativos
Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo
Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido
Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)
Retransmissatildeo seletiva visatildeogeral
Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)
Receptor reconhece (acks) pacotes individuais
Emissor manteacutemtemporizador para cadapacote natildeo reconhecido
Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido
Transport Layer 3-43
Transmissor
bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote
bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos
bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)
bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela
Go-Back-N
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-19
bull 31 Serviccedilos da camada de transporte
bull 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo
bull 33 Transporte natildeo orientado agrave conexatildeo UDP
bull 34 Princiacutepios de transferecircncia confiaacutevel de dados
bull 35 Transporte orientado agrave conexatildeo TCPbull Estrutura do segmentobull Transferecircncia confiaacutevel de dadosbull Controle de fluxobull Gerenciamento de conexatildeo
bull 36 Princiacutepios de controle de congestionamento
bull 37 Controle de congestionamento do TCP
Camada de transporte
Transport Layer 3-20
bull Importante nas camadasde aplicaccedilatildeo transportee enlace
bull Top 10 na lista dos toacutepicos mais importantsde redes
bull Caracteriacutesticas dos canaisnatildeo confiaacuteveisdeterminaratildeo a complexidade dos protocolos confiaacuteveis de transferecircncia de dados (rdt)
Princiacutepios de transferecircncia confiaacutevel de dados
Transport Layer 3-21
ladotransmissor
ladoreceptor
rdt_send() chamada da camada superior (ex pela aplicaccedilatildeo) Passa dados paraentregar agrave camada superior receptora
udt_send() chamada pela entidadede transporte para transferir pacotes
para o receptor sobre o canal natildeoconfiaacutevel
rdt_rcv() chamada quando o pacote chegaao lado receptor do canal
deliver_data() chamada pelaentidade de transporte para
entregar dados agrave camada superior
Transferecircncia confiaacutevel o ponto de partida
Transport Layer 3-22
Etapas
bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees
bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor
estado1
estado2
evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado
estado quando neste ldquoestadordquoo proacuteximo estado fica
unicamente determinadopelo proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel o ponto de partida
Transport Layer 3-23
bull Canal de transmissatildeoperfeitamente confiaacutevel
bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes
bull FSMs separadas paratransmissor e receptor
bull Transmissor envia dados parao canal subjacente
bull Receptor lecirc os dados do canal subjacente
rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis
Transport Layer 3-24
rdt20 canal com erros de bit
bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits
bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente
bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros
bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK
bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender
Transport Layer 3-25
rdt20 especificaccedilatildeo FSM
Transport Layer 3-26
aguardachamadade cima
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 operaccedilatildeo com ausecircncia de erros
Transport Layer 3-27
aguardachamadade cima
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) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 cenaacuterio de erro
Transport Layer 3-28
O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata
Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada
pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes
duplicados
Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do
receptor
rdt20 tem um problema fatal
Transport Layer 3-29
rdt21 transmissor trata ACKNAKsperdidos
rdt21 receptor trata ACKNAKsperdidos
Wait for 0 from below
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Wait for 1 from below
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
Transport Layer 3-31
Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados
bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1
Receptorbull Deve verificar se o pacote recebido eacute duplicado
bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor
rdt21 discussatildeo
Transport Layer 3-32
bull Mesma funcionalidade do rdt21 usando somente ACKs
bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido
bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente
rdt22 um protocolo sem NAK
Transport Layer 3-33
aguardachamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguardaACK
0
fragmento FSMdo transmissor
aguarda
0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)
fragmento FSMdo receptor
Λ
rdt22 fragmentos do transmissor e do receptor
Transport Layer 3-34
Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante
Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)
bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso
bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido
bull Exige um temporizador decrescente
rdt30 canais com erros e perdas
Transport Layer 3-35
Transmissor rdt30
Transport Layer 3-36
rdt30 em accedilatildeo
Transport Layer 3-37
rdt30 em accedilatildeo
Transport Layer 3-38
bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado
bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps
bull O protocolo de rede limita o uso dos recursos fiacutesicos
bull rdt30 funciona mas o desempenho eacute sofriacutevel
bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB
Desempenho do rdt30
Ttransmis
satildeo
= 8 kbpkt109 bs
= 8 microsegL (tamanho do pacote em bits)
R (taxa de transmissatildeo bps)=
Usender=008
30008 = 000027 L RRTT + L R
=
Transport Layer 3-39
rdt30 operaccedilatildeo pare e espere
Transmissatildeo do 1ordm Bit dopacote t = 0
emissor receptor
RTT
Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK
Recebe ACK envia proacuteximopacote t = RTT + L R
U sender
= 008
30008 = 000027
microsec
L R
RTT + L R =
Transport Layer 3-40
Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos
bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada
bull Armazenamento no transmissor eou no receptor
bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
Protocolos com paralelismo (pipelining)
Transport Layer 3-41
Pipelining aumento da utilizaccedilatildeo
emissor receptor
RTT
Uacuteltimo bit transmitido t = L R
Chegada do primeiro bitChegada do uacuteltimo bit envia ACK
Chegada do ACK envia o proacuteximo pacote t = RTT + L R
U emissor
= 024
30008 = 00008
microsecon
3 L R
RTT + L R =
Aumenta a utilizaccedilatildeopor um fator de 3
Transport Layer 3-42
Protocolos do tipo Pipelining
Go-back-N visatildeo geral Emissor pode enviar ateacute N
pacotes natildeo reconhecidos(unacked) no pipeline
Receptor envia acksacumulativos
Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo
Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido
Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)
Retransmissatildeo seletiva visatildeogeral
Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)
Receptor reconhece (acks) pacotes individuais
Emissor manteacutemtemporizador para cadapacote natildeo reconhecido
Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido
Transport Layer 3-43
Transmissor
bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote
bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos
bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)
bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela
Go-Back-N
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-20
bull Importante nas camadasde aplicaccedilatildeo transportee enlace
bull Top 10 na lista dos toacutepicos mais importantsde redes
bull Caracteriacutesticas dos canaisnatildeo confiaacuteveisdeterminaratildeo a complexidade dos protocolos confiaacuteveis de transferecircncia de dados (rdt)
Princiacutepios de transferecircncia confiaacutevel de dados
Transport Layer 3-21
ladotransmissor
ladoreceptor
rdt_send() chamada da camada superior (ex pela aplicaccedilatildeo) Passa dados paraentregar agrave camada superior receptora
udt_send() chamada pela entidadede transporte para transferir pacotes
para o receptor sobre o canal natildeoconfiaacutevel
rdt_rcv() chamada quando o pacote chegaao lado receptor do canal
deliver_data() chamada pelaentidade de transporte para
entregar dados agrave camada superior
Transferecircncia confiaacutevel o ponto de partida
Transport Layer 3-22
Etapas
bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees
bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor
estado1
estado2
evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado
estado quando neste ldquoestadordquoo proacuteximo estado fica
unicamente determinadopelo proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel o ponto de partida
Transport Layer 3-23
bull Canal de transmissatildeoperfeitamente confiaacutevel
bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes
bull FSMs separadas paratransmissor e receptor
bull Transmissor envia dados parao canal subjacente
bull Receptor lecirc os dados do canal subjacente
rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis
Transport Layer 3-24
rdt20 canal com erros de bit
bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits
bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente
bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros
bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK
bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender
Transport Layer 3-25
rdt20 especificaccedilatildeo FSM
Transport Layer 3-26
aguardachamadade cima
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 operaccedilatildeo com ausecircncia de erros
Transport Layer 3-27
aguardachamadade cima
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) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 cenaacuterio de erro
Transport Layer 3-28
O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata
Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada
pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes
duplicados
Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do
receptor
rdt20 tem um problema fatal
Transport Layer 3-29
rdt21 transmissor trata ACKNAKsperdidos
rdt21 receptor trata ACKNAKsperdidos
Wait for 0 from below
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Wait for 1 from below
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
Transport Layer 3-31
Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados
bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1
Receptorbull Deve verificar se o pacote recebido eacute duplicado
bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor
rdt21 discussatildeo
Transport Layer 3-32
bull Mesma funcionalidade do rdt21 usando somente ACKs
bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido
bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente
rdt22 um protocolo sem NAK
Transport Layer 3-33
aguardachamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguardaACK
0
fragmento FSMdo transmissor
aguarda
0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)
fragmento FSMdo receptor
Λ
rdt22 fragmentos do transmissor e do receptor
Transport Layer 3-34
Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante
Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)
bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso
bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido
bull Exige um temporizador decrescente
rdt30 canais com erros e perdas
Transport Layer 3-35
Transmissor rdt30
Transport Layer 3-36
rdt30 em accedilatildeo
Transport Layer 3-37
rdt30 em accedilatildeo
Transport Layer 3-38
bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado
bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps
bull O protocolo de rede limita o uso dos recursos fiacutesicos
bull rdt30 funciona mas o desempenho eacute sofriacutevel
bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB
Desempenho do rdt30
Ttransmis
satildeo
= 8 kbpkt109 bs
= 8 microsegL (tamanho do pacote em bits)
R (taxa de transmissatildeo bps)=
Usender=008
30008 = 000027 L RRTT + L R
=
Transport Layer 3-39
rdt30 operaccedilatildeo pare e espere
Transmissatildeo do 1ordm Bit dopacote t = 0
emissor receptor
RTT
Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK
Recebe ACK envia proacuteximopacote t = RTT + L R
U sender
= 008
30008 = 000027
microsec
L R
RTT + L R =
Transport Layer 3-40
Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos
bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada
bull Armazenamento no transmissor eou no receptor
bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
Protocolos com paralelismo (pipelining)
Transport Layer 3-41
Pipelining aumento da utilizaccedilatildeo
emissor receptor
RTT
Uacuteltimo bit transmitido t = L R
Chegada do primeiro bitChegada do uacuteltimo bit envia ACK
Chegada do ACK envia o proacuteximo pacote t = RTT + L R
U emissor
= 024
30008 = 00008
microsecon
3 L R
RTT + L R =
Aumenta a utilizaccedilatildeopor um fator de 3
Transport Layer 3-42
Protocolos do tipo Pipelining
Go-back-N visatildeo geral Emissor pode enviar ateacute N
pacotes natildeo reconhecidos(unacked) no pipeline
Receptor envia acksacumulativos
Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo
Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido
Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)
Retransmissatildeo seletiva visatildeogeral
Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)
Receptor reconhece (acks) pacotes individuais
Emissor manteacutemtemporizador para cadapacote natildeo reconhecido
Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido
Transport Layer 3-43
Transmissor
bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote
bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos
bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)
bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela
Go-Back-N
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-21
ladotransmissor
ladoreceptor
rdt_send() chamada da camada superior (ex pela aplicaccedilatildeo) Passa dados paraentregar agrave camada superior receptora
udt_send() chamada pela entidadede transporte para transferir pacotes
para o receptor sobre o canal natildeoconfiaacutevel
rdt_rcv() chamada quando o pacote chegaao lado receptor do canal
deliver_data() chamada pelaentidade de transporte para
entregar dados agrave camada superior
Transferecircncia confiaacutevel o ponto de partida
Transport Layer 3-22
Etapas
bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees
bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor
estado1
estado2
evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado
estado quando neste ldquoestadordquoo proacuteximo estado fica
unicamente determinadopelo proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel o ponto de partida
Transport Layer 3-23
bull Canal de transmissatildeoperfeitamente confiaacutevel
bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes
bull FSMs separadas paratransmissor e receptor
bull Transmissor envia dados parao canal subjacente
bull Receptor lecirc os dados do canal subjacente
rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis
Transport Layer 3-24
rdt20 canal com erros de bit
bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits
bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente
bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros
bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK
bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender
Transport Layer 3-25
rdt20 especificaccedilatildeo FSM
Transport Layer 3-26
aguardachamadade cima
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 operaccedilatildeo com ausecircncia de erros
Transport Layer 3-27
aguardachamadade cima
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) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 cenaacuterio de erro
Transport Layer 3-28
O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata
Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada
pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes
duplicados
Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do
receptor
rdt20 tem um problema fatal
Transport Layer 3-29
rdt21 transmissor trata ACKNAKsperdidos
rdt21 receptor trata ACKNAKsperdidos
Wait for 0 from below
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Wait for 1 from below
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
Transport Layer 3-31
Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados
bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1
Receptorbull Deve verificar se o pacote recebido eacute duplicado
bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor
rdt21 discussatildeo
Transport Layer 3-32
bull Mesma funcionalidade do rdt21 usando somente ACKs
bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido
bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente
rdt22 um protocolo sem NAK
Transport Layer 3-33
aguardachamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguardaACK
0
fragmento FSMdo transmissor
aguarda
0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)
fragmento FSMdo receptor
Λ
rdt22 fragmentos do transmissor e do receptor
Transport Layer 3-34
Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante
Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)
bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso
bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido
bull Exige um temporizador decrescente
rdt30 canais com erros e perdas
Transport Layer 3-35
Transmissor rdt30
Transport Layer 3-36
rdt30 em accedilatildeo
Transport Layer 3-37
rdt30 em accedilatildeo
Transport Layer 3-38
bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado
bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps
bull O protocolo de rede limita o uso dos recursos fiacutesicos
bull rdt30 funciona mas o desempenho eacute sofriacutevel
bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB
Desempenho do rdt30
Ttransmis
satildeo
= 8 kbpkt109 bs
= 8 microsegL (tamanho do pacote em bits)
R (taxa de transmissatildeo bps)=
Usender=008
30008 = 000027 L RRTT + L R
=
Transport Layer 3-39
rdt30 operaccedilatildeo pare e espere
Transmissatildeo do 1ordm Bit dopacote t = 0
emissor receptor
RTT
Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK
Recebe ACK envia proacuteximopacote t = RTT + L R
U sender
= 008
30008 = 000027
microsec
L R
RTT + L R =
Transport Layer 3-40
Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos
bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada
bull Armazenamento no transmissor eou no receptor
bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
Protocolos com paralelismo (pipelining)
Transport Layer 3-41
Pipelining aumento da utilizaccedilatildeo
emissor receptor
RTT
Uacuteltimo bit transmitido t = L R
Chegada do primeiro bitChegada do uacuteltimo bit envia ACK
Chegada do ACK envia o proacuteximo pacote t = RTT + L R
U emissor
= 024
30008 = 00008
microsecon
3 L R
RTT + L R =
Aumenta a utilizaccedilatildeopor um fator de 3
Transport Layer 3-42
Protocolos do tipo Pipelining
Go-back-N visatildeo geral Emissor pode enviar ateacute N
pacotes natildeo reconhecidos(unacked) no pipeline
Receptor envia acksacumulativos
Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo
Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido
Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)
Retransmissatildeo seletiva visatildeogeral
Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)
Receptor reconhece (acks) pacotes individuais
Emissor manteacutemtemporizador para cadapacote natildeo reconhecido
Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido
Transport Layer 3-43
Transmissor
bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote
bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos
bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)
bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela
Go-Back-N
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-22
Etapas
bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)
bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees
bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor
estado1
estado2
evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado
estado quando neste ldquoestadordquoo proacuteximo estado fica
unicamente determinadopelo proacuteximo evento
eventoaccedilotildees
Transferecircncia confiaacutevel o ponto de partida
Transport Layer 3-23
bull Canal de transmissatildeoperfeitamente confiaacutevel
bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes
bull FSMs separadas paratransmissor e receptor
bull Transmissor envia dados parao canal subjacente
bull Receptor lecirc os dados do canal subjacente
rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis
Transport Layer 3-24
rdt20 canal com erros de bit
bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits
bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente
bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros
bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK
bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender
Transport Layer 3-25
rdt20 especificaccedilatildeo FSM
Transport Layer 3-26
aguardachamadade cima
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 operaccedilatildeo com ausecircncia de erros
Transport Layer 3-27
aguardachamadade cima
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) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 cenaacuterio de erro
Transport Layer 3-28
O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata
Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada
pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes
duplicados
Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do
receptor
rdt20 tem um problema fatal
Transport Layer 3-29
rdt21 transmissor trata ACKNAKsperdidos
rdt21 receptor trata ACKNAKsperdidos
Wait for 0 from below
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Wait for 1 from below
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
Transport Layer 3-31
Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados
bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1
Receptorbull Deve verificar se o pacote recebido eacute duplicado
bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor
rdt21 discussatildeo
Transport Layer 3-32
bull Mesma funcionalidade do rdt21 usando somente ACKs
bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido
bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente
rdt22 um protocolo sem NAK
Transport Layer 3-33
aguardachamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguardaACK
0
fragmento FSMdo transmissor
aguarda
0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)
fragmento FSMdo receptor
Λ
rdt22 fragmentos do transmissor e do receptor
Transport Layer 3-34
Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante
Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)
bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso
bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido
bull Exige um temporizador decrescente
rdt30 canais com erros e perdas
Transport Layer 3-35
Transmissor rdt30
Transport Layer 3-36
rdt30 em accedilatildeo
Transport Layer 3-37
rdt30 em accedilatildeo
Transport Layer 3-38
bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado
bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps
bull O protocolo de rede limita o uso dos recursos fiacutesicos
bull rdt30 funciona mas o desempenho eacute sofriacutevel
bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB
Desempenho do rdt30
Ttransmis
satildeo
= 8 kbpkt109 bs
= 8 microsegL (tamanho do pacote em bits)
R (taxa de transmissatildeo bps)=
Usender=008
30008 = 000027 L RRTT + L R
=
Transport Layer 3-39
rdt30 operaccedilatildeo pare e espere
Transmissatildeo do 1ordm Bit dopacote t = 0
emissor receptor
RTT
Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK
Recebe ACK envia proacuteximopacote t = RTT + L R
U sender
= 008
30008 = 000027
microsec
L R
RTT + L R =
Transport Layer 3-40
Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos
bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada
bull Armazenamento no transmissor eou no receptor
bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
Protocolos com paralelismo (pipelining)
Transport Layer 3-41
Pipelining aumento da utilizaccedilatildeo
emissor receptor
RTT
Uacuteltimo bit transmitido t = L R
Chegada do primeiro bitChegada do uacuteltimo bit envia ACK
Chegada do ACK envia o proacuteximo pacote t = RTT + L R
U emissor
= 024
30008 = 00008
microsecon
3 L R
RTT + L R =
Aumenta a utilizaccedilatildeopor um fator de 3
Transport Layer 3-42
Protocolos do tipo Pipelining
Go-back-N visatildeo geral Emissor pode enviar ateacute N
pacotes natildeo reconhecidos(unacked) no pipeline
Receptor envia acksacumulativos
Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo
Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido
Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)
Retransmissatildeo seletiva visatildeogeral
Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)
Receptor reconhece (acks) pacotes individuais
Emissor manteacutemtemporizador para cadapacote natildeo reconhecido
Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido
Transport Layer 3-43
Transmissor
bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote
bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos
bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)
bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela
Go-Back-N
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-23
bull Canal de transmissatildeoperfeitamente confiaacutevel
bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes
bull FSMs separadas paratransmissor e receptor
bull Transmissor envia dados parao canal subjacente
bull Receptor lecirc os dados do canal subjacente
rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis
Transport Layer 3-24
rdt20 canal com erros de bit
bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits
bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente
bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros
bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK
bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender
Transport Layer 3-25
rdt20 especificaccedilatildeo FSM
Transport Layer 3-26
aguardachamadade cima
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 operaccedilatildeo com ausecircncia de erros
Transport Layer 3-27
aguardachamadade cima
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) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 cenaacuterio de erro
Transport Layer 3-28
O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata
Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada
pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes
duplicados
Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do
receptor
rdt20 tem um problema fatal
Transport Layer 3-29
rdt21 transmissor trata ACKNAKsperdidos
rdt21 receptor trata ACKNAKsperdidos
Wait for 0 from below
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Wait for 1 from below
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
Transport Layer 3-31
Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados
bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1
Receptorbull Deve verificar se o pacote recebido eacute duplicado
bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor
rdt21 discussatildeo
Transport Layer 3-32
bull Mesma funcionalidade do rdt21 usando somente ACKs
bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido
bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente
rdt22 um protocolo sem NAK
Transport Layer 3-33
aguardachamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguardaACK
0
fragmento FSMdo transmissor
aguarda
0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)
fragmento FSMdo receptor
Λ
rdt22 fragmentos do transmissor e do receptor
Transport Layer 3-34
Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante
Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)
bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso
bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido
bull Exige um temporizador decrescente
rdt30 canais com erros e perdas
Transport Layer 3-35
Transmissor rdt30
Transport Layer 3-36
rdt30 em accedilatildeo
Transport Layer 3-37
rdt30 em accedilatildeo
Transport Layer 3-38
bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado
bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps
bull O protocolo de rede limita o uso dos recursos fiacutesicos
bull rdt30 funciona mas o desempenho eacute sofriacutevel
bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB
Desempenho do rdt30
Ttransmis
satildeo
= 8 kbpkt109 bs
= 8 microsegL (tamanho do pacote em bits)
R (taxa de transmissatildeo bps)=
Usender=008
30008 = 000027 L RRTT + L R
=
Transport Layer 3-39
rdt30 operaccedilatildeo pare e espere
Transmissatildeo do 1ordm Bit dopacote t = 0
emissor receptor
RTT
Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK
Recebe ACK envia proacuteximopacote t = RTT + L R
U sender
= 008
30008 = 000027
microsec
L R
RTT + L R =
Transport Layer 3-40
Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos
bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada
bull Armazenamento no transmissor eou no receptor
bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
Protocolos com paralelismo (pipelining)
Transport Layer 3-41
Pipelining aumento da utilizaccedilatildeo
emissor receptor
RTT
Uacuteltimo bit transmitido t = L R
Chegada do primeiro bitChegada do uacuteltimo bit envia ACK
Chegada do ACK envia o proacuteximo pacote t = RTT + L R
U emissor
= 024
30008 = 00008
microsecon
3 L R
RTT + L R =
Aumenta a utilizaccedilatildeopor um fator de 3
Transport Layer 3-42
Protocolos do tipo Pipelining
Go-back-N visatildeo geral Emissor pode enviar ateacute N
pacotes natildeo reconhecidos(unacked) no pipeline
Receptor envia acksacumulativos
Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo
Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido
Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)
Retransmissatildeo seletiva visatildeogeral
Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)
Receptor reconhece (acks) pacotes individuais
Emissor manteacutemtemporizador para cadapacote natildeo reconhecido
Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido
Transport Layer 3-43
Transmissor
bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote
bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos
bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)
bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela
Go-Back-N
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-24
rdt20 canal com erros de bit
bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits
bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente
bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros
bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK
bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender
Transport Layer 3-25
rdt20 especificaccedilatildeo FSM
Transport Layer 3-26
aguardachamadade cima
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 operaccedilatildeo com ausecircncia de erros
Transport Layer 3-27
aguardachamadade cima
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) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 cenaacuterio de erro
Transport Layer 3-28
O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata
Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada
pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes
duplicados
Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do
receptor
rdt20 tem um problema fatal
Transport Layer 3-29
rdt21 transmissor trata ACKNAKsperdidos
rdt21 receptor trata ACKNAKsperdidos
Wait for 0 from below
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Wait for 1 from below
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
Transport Layer 3-31
Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados
bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1
Receptorbull Deve verificar se o pacote recebido eacute duplicado
bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor
rdt21 discussatildeo
Transport Layer 3-32
bull Mesma funcionalidade do rdt21 usando somente ACKs
bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido
bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente
rdt22 um protocolo sem NAK
Transport Layer 3-33
aguardachamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguardaACK
0
fragmento FSMdo transmissor
aguarda
0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)
fragmento FSMdo receptor
Λ
rdt22 fragmentos do transmissor e do receptor
Transport Layer 3-34
Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante
Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)
bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso
bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido
bull Exige um temporizador decrescente
rdt30 canais com erros e perdas
Transport Layer 3-35
Transmissor rdt30
Transport Layer 3-36
rdt30 em accedilatildeo
Transport Layer 3-37
rdt30 em accedilatildeo
Transport Layer 3-38
bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado
bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps
bull O protocolo de rede limita o uso dos recursos fiacutesicos
bull rdt30 funciona mas o desempenho eacute sofriacutevel
bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB
Desempenho do rdt30
Ttransmis
satildeo
= 8 kbpkt109 bs
= 8 microsegL (tamanho do pacote em bits)
R (taxa de transmissatildeo bps)=
Usender=008
30008 = 000027 L RRTT + L R
=
Transport Layer 3-39
rdt30 operaccedilatildeo pare e espere
Transmissatildeo do 1ordm Bit dopacote t = 0
emissor receptor
RTT
Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK
Recebe ACK envia proacuteximopacote t = RTT + L R
U sender
= 008
30008 = 000027
microsec
L R
RTT + L R =
Transport Layer 3-40
Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos
bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada
bull Armazenamento no transmissor eou no receptor
bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
Protocolos com paralelismo (pipelining)
Transport Layer 3-41
Pipelining aumento da utilizaccedilatildeo
emissor receptor
RTT
Uacuteltimo bit transmitido t = L R
Chegada do primeiro bitChegada do uacuteltimo bit envia ACK
Chegada do ACK envia o proacuteximo pacote t = RTT + L R
U emissor
= 024
30008 = 00008
microsecon
3 L R
RTT + L R =
Aumenta a utilizaccedilatildeopor um fator de 3
Transport Layer 3-42
Protocolos do tipo Pipelining
Go-back-N visatildeo geral Emissor pode enviar ateacute N
pacotes natildeo reconhecidos(unacked) no pipeline
Receptor envia acksacumulativos
Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo
Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido
Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)
Retransmissatildeo seletiva visatildeogeral
Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)
Receptor reconhece (acks) pacotes individuais
Emissor manteacutemtemporizador para cadapacote natildeo reconhecido
Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido
Transport Layer 3-43
Transmissor
bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote
bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos
bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)
bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela
Go-Back-N
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-25
rdt20 especificaccedilatildeo FSM
Transport Layer 3-26
aguardachamadade cima
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 operaccedilatildeo com ausecircncia de erros
Transport Layer 3-27
aguardachamadade cima
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) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 cenaacuterio de erro
Transport Layer 3-28
O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata
Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada
pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes
duplicados
Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do
receptor
rdt20 tem um problema fatal
Transport Layer 3-29
rdt21 transmissor trata ACKNAKsperdidos
rdt21 receptor trata ACKNAKsperdidos
Wait for 0 from below
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Wait for 1 from below
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
Transport Layer 3-31
Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados
bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1
Receptorbull Deve verificar se o pacote recebido eacute duplicado
bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor
rdt21 discussatildeo
Transport Layer 3-32
bull Mesma funcionalidade do rdt21 usando somente ACKs
bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido
bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente
rdt22 um protocolo sem NAK
Transport Layer 3-33
aguardachamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguardaACK
0
fragmento FSMdo transmissor
aguarda
0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)
fragmento FSMdo receptor
Λ
rdt22 fragmentos do transmissor e do receptor
Transport Layer 3-34
Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante
Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)
bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso
bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido
bull Exige um temporizador decrescente
rdt30 canais com erros e perdas
Transport Layer 3-35
Transmissor rdt30
Transport Layer 3-36
rdt30 em accedilatildeo
Transport Layer 3-37
rdt30 em accedilatildeo
Transport Layer 3-38
bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado
bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps
bull O protocolo de rede limita o uso dos recursos fiacutesicos
bull rdt30 funciona mas o desempenho eacute sofriacutevel
bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB
Desempenho do rdt30
Ttransmis
satildeo
= 8 kbpkt109 bs
= 8 microsegL (tamanho do pacote em bits)
R (taxa de transmissatildeo bps)=
Usender=008
30008 = 000027 L RRTT + L R
=
Transport Layer 3-39
rdt30 operaccedilatildeo pare e espere
Transmissatildeo do 1ordm Bit dopacote t = 0
emissor receptor
RTT
Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK
Recebe ACK envia proacuteximopacote t = RTT + L R
U sender
= 008
30008 = 000027
microsec
L R
RTT + L R =
Transport Layer 3-40
Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos
bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada
bull Armazenamento no transmissor eou no receptor
bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
Protocolos com paralelismo (pipelining)
Transport Layer 3-41
Pipelining aumento da utilizaccedilatildeo
emissor receptor
RTT
Uacuteltimo bit transmitido t = L R
Chegada do primeiro bitChegada do uacuteltimo bit envia ACK
Chegada do ACK envia o proacuteximo pacote t = RTT + L R
U emissor
= 024
30008 = 00008
microsecon
3 L R
RTT + L R =
Aumenta a utilizaccedilatildeopor um fator de 3
Transport Layer 3-42
Protocolos do tipo Pipelining
Go-back-N visatildeo geral Emissor pode enviar ateacute N
pacotes natildeo reconhecidos(unacked) no pipeline
Receptor envia acksacumulativos
Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo
Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido
Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)
Retransmissatildeo seletiva visatildeogeral
Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)
Receptor reconhece (acks) pacotes individuais
Emissor manteacutemtemporizador para cadapacote natildeo reconhecido
Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido
Transport Layer 3-43
Transmissor
bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote
bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos
bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)
bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela
Go-Back-N
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-26
aguardachamadade cima
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 operaccedilatildeo com ausecircncia de erros
Transport Layer 3-27
aguardachamadade cima
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) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 cenaacuterio de erro
Transport Layer 3-28
O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata
Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada
pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes
duplicados
Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do
receptor
rdt20 tem um problema fatal
Transport Layer 3-29
rdt21 transmissor trata ACKNAKsperdidos
rdt21 receptor trata ACKNAKsperdidos
Wait for 0 from below
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Wait for 1 from below
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
Transport Layer 3-31
Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados
bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1
Receptorbull Deve verificar se o pacote recebido eacute duplicado
bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor
rdt21 discussatildeo
Transport Layer 3-32
bull Mesma funcionalidade do rdt21 usando somente ACKs
bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido
bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente
rdt22 um protocolo sem NAK
Transport Layer 3-33
aguardachamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguardaACK
0
fragmento FSMdo transmissor
aguarda
0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)
fragmento FSMdo receptor
Λ
rdt22 fragmentos do transmissor e do receptor
Transport Layer 3-34
Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante
Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)
bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso
bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido
bull Exige um temporizador decrescente
rdt30 canais com erros e perdas
Transport Layer 3-35
Transmissor rdt30
Transport Layer 3-36
rdt30 em accedilatildeo
Transport Layer 3-37
rdt30 em accedilatildeo
Transport Layer 3-38
bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado
bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps
bull O protocolo de rede limita o uso dos recursos fiacutesicos
bull rdt30 funciona mas o desempenho eacute sofriacutevel
bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB
Desempenho do rdt30
Ttransmis
satildeo
= 8 kbpkt109 bs
= 8 microsegL (tamanho do pacote em bits)
R (taxa de transmissatildeo bps)=
Usender=008
30008 = 000027 L RRTT + L R
=
Transport Layer 3-39
rdt30 operaccedilatildeo pare e espere
Transmissatildeo do 1ordm Bit dopacote t = 0
emissor receptor
RTT
Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK
Recebe ACK envia proacuteximopacote t = RTT + L R
U sender
= 008
30008 = 000027
microsec
L R
RTT + L R =
Transport Layer 3-40
Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos
bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada
bull Armazenamento no transmissor eou no receptor
bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
Protocolos com paralelismo (pipelining)
Transport Layer 3-41
Pipelining aumento da utilizaccedilatildeo
emissor receptor
RTT
Uacuteltimo bit transmitido t = L R
Chegada do primeiro bitChegada do uacuteltimo bit envia ACK
Chegada do ACK envia o proacuteximo pacote t = RTT + L R
U emissor
= 024
30008 = 00008
microsecon
3 L R
RTT + L R =
Aumenta a utilizaccedilatildeopor um fator de 3
Transport Layer 3-42
Protocolos do tipo Pipelining
Go-back-N visatildeo geral Emissor pode enviar ateacute N
pacotes natildeo reconhecidos(unacked) no pipeline
Receptor envia acksacumulativos
Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo
Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido
Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)
Retransmissatildeo seletiva visatildeogeral
Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)
Receptor reconhece (acks) pacotes individuais
Emissor manteacutemtemporizador para cadapacote natildeo reconhecido
Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido
Transport Layer 3-43
Transmissor
bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote
bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos
bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)
bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela
Go-Back-N
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-27
aguardachamadade cima
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) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
aguardaACK ou
NAK
aguardachamadade baixo
rdt_send(data)
Λ
rdt20 cenaacuterio de erro
Transport Layer 3-28
O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata
Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada
pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes
duplicados
Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do
receptor
rdt20 tem um problema fatal
Transport Layer 3-29
rdt21 transmissor trata ACKNAKsperdidos
rdt21 receptor trata ACKNAKsperdidos
Wait for 0 from below
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Wait for 1 from below
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
Transport Layer 3-31
Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados
bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1
Receptorbull Deve verificar se o pacote recebido eacute duplicado
bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor
rdt21 discussatildeo
Transport Layer 3-32
bull Mesma funcionalidade do rdt21 usando somente ACKs
bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido
bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente
rdt22 um protocolo sem NAK
Transport Layer 3-33
aguardachamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguardaACK
0
fragmento FSMdo transmissor
aguarda
0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)
fragmento FSMdo receptor
Λ
rdt22 fragmentos do transmissor e do receptor
Transport Layer 3-34
Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante
Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)
bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso
bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido
bull Exige um temporizador decrescente
rdt30 canais com erros e perdas
Transport Layer 3-35
Transmissor rdt30
Transport Layer 3-36
rdt30 em accedilatildeo
Transport Layer 3-37
rdt30 em accedilatildeo
Transport Layer 3-38
bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado
bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps
bull O protocolo de rede limita o uso dos recursos fiacutesicos
bull rdt30 funciona mas o desempenho eacute sofriacutevel
bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB
Desempenho do rdt30
Ttransmis
satildeo
= 8 kbpkt109 bs
= 8 microsegL (tamanho do pacote em bits)
R (taxa de transmissatildeo bps)=
Usender=008
30008 = 000027 L RRTT + L R
=
Transport Layer 3-39
rdt30 operaccedilatildeo pare e espere
Transmissatildeo do 1ordm Bit dopacote t = 0
emissor receptor
RTT
Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK
Recebe ACK envia proacuteximopacote t = RTT + L R
U sender
= 008
30008 = 000027
microsec
L R
RTT + L R =
Transport Layer 3-40
Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos
bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada
bull Armazenamento no transmissor eou no receptor
bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
Protocolos com paralelismo (pipelining)
Transport Layer 3-41
Pipelining aumento da utilizaccedilatildeo
emissor receptor
RTT
Uacuteltimo bit transmitido t = L R
Chegada do primeiro bitChegada do uacuteltimo bit envia ACK
Chegada do ACK envia o proacuteximo pacote t = RTT + L R
U emissor
= 024
30008 = 00008
microsecon
3 L R
RTT + L R =
Aumenta a utilizaccedilatildeopor um fator de 3
Transport Layer 3-42
Protocolos do tipo Pipelining
Go-back-N visatildeo geral Emissor pode enviar ateacute N
pacotes natildeo reconhecidos(unacked) no pipeline
Receptor envia acksacumulativos
Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo
Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido
Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)
Retransmissatildeo seletiva visatildeogeral
Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)
Receptor reconhece (acks) pacotes individuais
Emissor manteacutemtemporizador para cadapacote natildeo reconhecido
Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido
Transport Layer 3-43
Transmissor
bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote
bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos
bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)
bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela
Go-Back-N
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-28
O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata
Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada
pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes
duplicados
Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do
receptor
rdt20 tem um problema fatal
Transport Layer 3-29
rdt21 transmissor trata ACKNAKsperdidos
rdt21 receptor trata ACKNAKsperdidos
Wait for 0 from below
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Wait for 1 from below
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
Transport Layer 3-31
Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados
bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1
Receptorbull Deve verificar se o pacote recebido eacute duplicado
bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor
rdt21 discussatildeo
Transport Layer 3-32
bull Mesma funcionalidade do rdt21 usando somente ACKs
bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido
bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente
rdt22 um protocolo sem NAK
Transport Layer 3-33
aguardachamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguardaACK
0
fragmento FSMdo transmissor
aguarda
0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)
fragmento FSMdo receptor
Λ
rdt22 fragmentos do transmissor e do receptor
Transport Layer 3-34
Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante
Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)
bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso
bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido
bull Exige um temporizador decrescente
rdt30 canais com erros e perdas
Transport Layer 3-35
Transmissor rdt30
Transport Layer 3-36
rdt30 em accedilatildeo
Transport Layer 3-37
rdt30 em accedilatildeo
Transport Layer 3-38
bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado
bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps
bull O protocolo de rede limita o uso dos recursos fiacutesicos
bull rdt30 funciona mas o desempenho eacute sofriacutevel
bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB
Desempenho do rdt30
Ttransmis
satildeo
= 8 kbpkt109 bs
= 8 microsegL (tamanho do pacote em bits)
R (taxa de transmissatildeo bps)=
Usender=008
30008 = 000027 L RRTT + L R
=
Transport Layer 3-39
rdt30 operaccedilatildeo pare e espere
Transmissatildeo do 1ordm Bit dopacote t = 0
emissor receptor
RTT
Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK
Recebe ACK envia proacuteximopacote t = RTT + L R
U sender
= 008
30008 = 000027
microsec
L R
RTT + L R =
Transport Layer 3-40
Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos
bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada
bull Armazenamento no transmissor eou no receptor
bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
Protocolos com paralelismo (pipelining)
Transport Layer 3-41
Pipelining aumento da utilizaccedilatildeo
emissor receptor
RTT
Uacuteltimo bit transmitido t = L R
Chegada do primeiro bitChegada do uacuteltimo bit envia ACK
Chegada do ACK envia o proacuteximo pacote t = RTT + L R
U emissor
= 024
30008 = 00008
microsecon
3 L R
RTT + L R =
Aumenta a utilizaccedilatildeopor um fator de 3
Transport Layer 3-42
Protocolos do tipo Pipelining
Go-back-N visatildeo geral Emissor pode enviar ateacute N
pacotes natildeo reconhecidos(unacked) no pipeline
Receptor envia acksacumulativos
Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo
Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido
Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)
Retransmissatildeo seletiva visatildeogeral
Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)
Receptor reconhece (acks) pacotes individuais
Emissor manteacutemtemporizador para cadapacote natildeo reconhecido
Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido
Transport Layer 3-43
Transmissor
bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote
bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos
bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)
bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela
Go-Back-N
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-29
rdt21 transmissor trata ACKNAKsperdidos
rdt21 receptor trata ACKNAKsperdidos
Wait for 0 from below
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Wait for 1 from below
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
Transport Layer 3-31
Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados
bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1
Receptorbull Deve verificar se o pacote recebido eacute duplicado
bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor
rdt21 discussatildeo
Transport Layer 3-32
bull Mesma funcionalidade do rdt21 usando somente ACKs
bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido
bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente
rdt22 um protocolo sem NAK
Transport Layer 3-33
aguardachamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguardaACK
0
fragmento FSMdo transmissor
aguarda
0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)
fragmento FSMdo receptor
Λ
rdt22 fragmentos do transmissor e do receptor
Transport Layer 3-34
Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante
Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)
bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso
bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido
bull Exige um temporizador decrescente
rdt30 canais com erros e perdas
Transport Layer 3-35
Transmissor rdt30
Transport Layer 3-36
rdt30 em accedilatildeo
Transport Layer 3-37
rdt30 em accedilatildeo
Transport Layer 3-38
bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado
bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps
bull O protocolo de rede limita o uso dos recursos fiacutesicos
bull rdt30 funciona mas o desempenho eacute sofriacutevel
bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB
Desempenho do rdt30
Ttransmis
satildeo
= 8 kbpkt109 bs
= 8 microsegL (tamanho do pacote em bits)
R (taxa de transmissatildeo bps)=
Usender=008
30008 = 000027 L RRTT + L R
=
Transport Layer 3-39
rdt30 operaccedilatildeo pare e espere
Transmissatildeo do 1ordm Bit dopacote t = 0
emissor receptor
RTT
Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK
Recebe ACK envia proacuteximopacote t = RTT + L R
U sender
= 008
30008 = 000027
microsec
L R
RTT + L R =
Transport Layer 3-40
Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos
bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada
bull Armazenamento no transmissor eou no receptor
bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
Protocolos com paralelismo (pipelining)
Transport Layer 3-41
Pipelining aumento da utilizaccedilatildeo
emissor receptor
RTT
Uacuteltimo bit transmitido t = L R
Chegada do primeiro bitChegada do uacuteltimo bit envia ACK
Chegada do ACK envia o proacuteximo pacote t = RTT + L R
U emissor
= 024
30008 = 00008
microsecon
3 L R
RTT + L R =
Aumenta a utilizaccedilatildeopor um fator de 3
Transport Layer 3-42
Protocolos do tipo Pipelining
Go-back-N visatildeo geral Emissor pode enviar ateacute N
pacotes natildeo reconhecidos(unacked) no pipeline
Receptor envia acksacumulativos
Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo
Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido
Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)
Retransmissatildeo seletiva visatildeogeral
Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)
Receptor reconhece (acks) pacotes individuais
Emissor manteacutemtemporizador para cadapacote natildeo reconhecido
Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido
Transport Layer 3-43
Transmissor
bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote
bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos
bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)
bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela
Go-Back-N
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
rdt21 receptor trata ACKNAKsperdidos
Wait for 0 from below
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
Wait for 1 from below
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
Transport Layer 3-31
Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados
bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1
Receptorbull Deve verificar se o pacote recebido eacute duplicado
bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor
rdt21 discussatildeo
Transport Layer 3-32
bull Mesma funcionalidade do rdt21 usando somente ACKs
bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido
bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente
rdt22 um protocolo sem NAK
Transport Layer 3-33
aguardachamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguardaACK
0
fragmento FSMdo transmissor
aguarda
0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)
fragmento FSMdo receptor
Λ
rdt22 fragmentos do transmissor e do receptor
Transport Layer 3-34
Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante
Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)
bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso
bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido
bull Exige um temporizador decrescente
rdt30 canais com erros e perdas
Transport Layer 3-35
Transmissor rdt30
Transport Layer 3-36
rdt30 em accedilatildeo
Transport Layer 3-37
rdt30 em accedilatildeo
Transport Layer 3-38
bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado
bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps
bull O protocolo de rede limita o uso dos recursos fiacutesicos
bull rdt30 funciona mas o desempenho eacute sofriacutevel
bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB
Desempenho do rdt30
Ttransmis
satildeo
= 8 kbpkt109 bs
= 8 microsegL (tamanho do pacote em bits)
R (taxa de transmissatildeo bps)=
Usender=008
30008 = 000027 L RRTT + L R
=
Transport Layer 3-39
rdt30 operaccedilatildeo pare e espere
Transmissatildeo do 1ordm Bit dopacote t = 0
emissor receptor
RTT
Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK
Recebe ACK envia proacuteximopacote t = RTT + L R
U sender
= 008
30008 = 000027
microsec
L R
RTT + L R =
Transport Layer 3-40
Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos
bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada
bull Armazenamento no transmissor eou no receptor
bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
Protocolos com paralelismo (pipelining)
Transport Layer 3-41
Pipelining aumento da utilizaccedilatildeo
emissor receptor
RTT
Uacuteltimo bit transmitido t = L R
Chegada do primeiro bitChegada do uacuteltimo bit envia ACK
Chegada do ACK envia o proacuteximo pacote t = RTT + L R
U emissor
= 024
30008 = 00008
microsecon
3 L R
RTT + L R =
Aumenta a utilizaccedilatildeopor um fator de 3
Transport Layer 3-42
Protocolos do tipo Pipelining
Go-back-N visatildeo geral Emissor pode enviar ateacute N
pacotes natildeo reconhecidos(unacked) no pipeline
Receptor envia acksacumulativos
Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo
Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido
Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)
Retransmissatildeo seletiva visatildeogeral
Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)
Receptor reconhece (acks) pacotes individuais
Emissor manteacutemtemporizador para cadapacote natildeo reconhecido
Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido
Transport Layer 3-43
Transmissor
bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote
bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos
bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)
bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela
Go-Back-N
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-31
Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados
bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1
Receptorbull Deve verificar se o pacote recebido eacute duplicado
bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor
rdt21 discussatildeo
Transport Layer 3-32
bull Mesma funcionalidade do rdt21 usando somente ACKs
bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido
bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente
rdt22 um protocolo sem NAK
Transport Layer 3-33
aguardachamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguardaACK
0
fragmento FSMdo transmissor
aguarda
0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)
fragmento FSMdo receptor
Λ
rdt22 fragmentos do transmissor e do receptor
Transport Layer 3-34
Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante
Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)
bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso
bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido
bull Exige um temporizador decrescente
rdt30 canais com erros e perdas
Transport Layer 3-35
Transmissor rdt30
Transport Layer 3-36
rdt30 em accedilatildeo
Transport Layer 3-37
rdt30 em accedilatildeo
Transport Layer 3-38
bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado
bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps
bull O protocolo de rede limita o uso dos recursos fiacutesicos
bull rdt30 funciona mas o desempenho eacute sofriacutevel
bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB
Desempenho do rdt30
Ttransmis
satildeo
= 8 kbpkt109 bs
= 8 microsegL (tamanho do pacote em bits)
R (taxa de transmissatildeo bps)=
Usender=008
30008 = 000027 L RRTT + L R
=
Transport Layer 3-39
rdt30 operaccedilatildeo pare e espere
Transmissatildeo do 1ordm Bit dopacote t = 0
emissor receptor
RTT
Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK
Recebe ACK envia proacuteximopacote t = RTT + L R
U sender
= 008
30008 = 000027
microsec
L R
RTT + L R =
Transport Layer 3-40
Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos
bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada
bull Armazenamento no transmissor eou no receptor
bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
Protocolos com paralelismo (pipelining)
Transport Layer 3-41
Pipelining aumento da utilizaccedilatildeo
emissor receptor
RTT
Uacuteltimo bit transmitido t = L R
Chegada do primeiro bitChegada do uacuteltimo bit envia ACK
Chegada do ACK envia o proacuteximo pacote t = RTT + L R
U emissor
= 024
30008 = 00008
microsecon
3 L R
RTT + L R =
Aumenta a utilizaccedilatildeopor um fator de 3
Transport Layer 3-42
Protocolos do tipo Pipelining
Go-back-N visatildeo geral Emissor pode enviar ateacute N
pacotes natildeo reconhecidos(unacked) no pipeline
Receptor envia acksacumulativos
Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo
Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido
Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)
Retransmissatildeo seletiva visatildeogeral
Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)
Receptor reconhece (acks) pacotes individuais
Emissor manteacutemtemporizador para cadapacote natildeo reconhecido
Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido
Transport Layer 3-43
Transmissor
bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote
bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos
bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)
bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela
Go-Back-N
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-32
bull Mesma funcionalidade do rdt21 usando somente ACKs
bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido
bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente
rdt22 um protocolo sem NAK
Transport Layer 3-33
aguardachamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguardaACK
0
fragmento FSMdo transmissor
aguarda
0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)
fragmento FSMdo receptor
Λ
rdt22 fragmentos do transmissor e do receptor
Transport Layer 3-34
Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante
Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)
bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso
bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido
bull Exige um temporizador decrescente
rdt30 canais com erros e perdas
Transport Layer 3-35
Transmissor rdt30
Transport Layer 3-36
rdt30 em accedilatildeo
Transport Layer 3-37
rdt30 em accedilatildeo
Transport Layer 3-38
bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado
bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps
bull O protocolo de rede limita o uso dos recursos fiacutesicos
bull rdt30 funciona mas o desempenho eacute sofriacutevel
bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB
Desempenho do rdt30
Ttransmis
satildeo
= 8 kbpkt109 bs
= 8 microsegL (tamanho do pacote em bits)
R (taxa de transmissatildeo bps)=
Usender=008
30008 = 000027 L RRTT + L R
=
Transport Layer 3-39
rdt30 operaccedilatildeo pare e espere
Transmissatildeo do 1ordm Bit dopacote t = 0
emissor receptor
RTT
Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK
Recebe ACK envia proacuteximopacote t = RTT + L R
U sender
= 008
30008 = 000027
microsec
L R
RTT + L R =
Transport Layer 3-40
Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos
bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada
bull Armazenamento no transmissor eou no receptor
bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
Protocolos com paralelismo (pipelining)
Transport Layer 3-41
Pipelining aumento da utilizaccedilatildeo
emissor receptor
RTT
Uacuteltimo bit transmitido t = L R
Chegada do primeiro bitChegada do uacuteltimo bit envia ACK
Chegada do ACK envia o proacuteximo pacote t = RTT + L R
U emissor
= 024
30008 = 00008
microsecon
3 L R
RTT + L R =
Aumenta a utilizaccedilatildeopor um fator de 3
Transport Layer 3-42
Protocolos do tipo Pipelining
Go-back-N visatildeo geral Emissor pode enviar ateacute N
pacotes natildeo reconhecidos(unacked) no pipeline
Receptor envia acksacumulativos
Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo
Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido
Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)
Retransmissatildeo seletiva visatildeogeral
Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)
Receptor reconhece (acks) pacotes individuais
Emissor manteacutemtemporizador para cadapacote natildeo reconhecido
Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido
Transport Layer 3-43
Transmissor
bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote
bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos
bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)
bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela
Go-Back-N
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-33
aguardachamada 0
de cima
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
aguardaACK
0
fragmento FSMdo transmissor
aguarda
0 de baixo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)
fragmento FSMdo receptor
Λ
rdt22 fragmentos do transmissor e do receptor
Transport Layer 3-34
Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante
Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)
bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso
bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido
bull Exige um temporizador decrescente
rdt30 canais com erros e perdas
Transport Layer 3-35
Transmissor rdt30
Transport Layer 3-36
rdt30 em accedilatildeo
Transport Layer 3-37
rdt30 em accedilatildeo
Transport Layer 3-38
bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado
bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps
bull O protocolo de rede limita o uso dos recursos fiacutesicos
bull rdt30 funciona mas o desempenho eacute sofriacutevel
bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB
Desempenho do rdt30
Ttransmis
satildeo
= 8 kbpkt109 bs
= 8 microsegL (tamanho do pacote em bits)
R (taxa de transmissatildeo bps)=
Usender=008
30008 = 000027 L RRTT + L R
=
Transport Layer 3-39
rdt30 operaccedilatildeo pare e espere
Transmissatildeo do 1ordm Bit dopacote t = 0
emissor receptor
RTT
Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK
Recebe ACK envia proacuteximopacote t = RTT + L R
U sender
= 008
30008 = 000027
microsec
L R
RTT + L R =
Transport Layer 3-40
Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos
bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada
bull Armazenamento no transmissor eou no receptor
bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
Protocolos com paralelismo (pipelining)
Transport Layer 3-41
Pipelining aumento da utilizaccedilatildeo
emissor receptor
RTT
Uacuteltimo bit transmitido t = L R
Chegada do primeiro bitChegada do uacuteltimo bit envia ACK
Chegada do ACK envia o proacuteximo pacote t = RTT + L R
U emissor
= 024
30008 = 00008
microsecon
3 L R
RTT + L R =
Aumenta a utilizaccedilatildeopor um fator de 3
Transport Layer 3-42
Protocolos do tipo Pipelining
Go-back-N visatildeo geral Emissor pode enviar ateacute N
pacotes natildeo reconhecidos(unacked) no pipeline
Receptor envia acksacumulativos
Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo
Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido
Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)
Retransmissatildeo seletiva visatildeogeral
Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)
Receptor reconhece (acks) pacotes individuais
Emissor manteacutemtemporizador para cadapacote natildeo reconhecido
Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido
Transport Layer 3-43
Transmissor
bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote
bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos
bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)
bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela
Go-Back-N
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-34
Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante
Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)
bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso
bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido
bull Exige um temporizador decrescente
rdt30 canais com erros e perdas
Transport Layer 3-35
Transmissor rdt30
Transport Layer 3-36
rdt30 em accedilatildeo
Transport Layer 3-37
rdt30 em accedilatildeo
Transport Layer 3-38
bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado
bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps
bull O protocolo de rede limita o uso dos recursos fiacutesicos
bull rdt30 funciona mas o desempenho eacute sofriacutevel
bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB
Desempenho do rdt30
Ttransmis
satildeo
= 8 kbpkt109 bs
= 8 microsegL (tamanho do pacote em bits)
R (taxa de transmissatildeo bps)=
Usender=008
30008 = 000027 L RRTT + L R
=
Transport Layer 3-39
rdt30 operaccedilatildeo pare e espere
Transmissatildeo do 1ordm Bit dopacote t = 0
emissor receptor
RTT
Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK
Recebe ACK envia proacuteximopacote t = RTT + L R
U sender
= 008
30008 = 000027
microsec
L R
RTT + L R =
Transport Layer 3-40
Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos
bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada
bull Armazenamento no transmissor eou no receptor
bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
Protocolos com paralelismo (pipelining)
Transport Layer 3-41
Pipelining aumento da utilizaccedilatildeo
emissor receptor
RTT
Uacuteltimo bit transmitido t = L R
Chegada do primeiro bitChegada do uacuteltimo bit envia ACK
Chegada do ACK envia o proacuteximo pacote t = RTT + L R
U emissor
= 024
30008 = 00008
microsecon
3 L R
RTT + L R =
Aumenta a utilizaccedilatildeopor um fator de 3
Transport Layer 3-42
Protocolos do tipo Pipelining
Go-back-N visatildeo geral Emissor pode enviar ateacute N
pacotes natildeo reconhecidos(unacked) no pipeline
Receptor envia acksacumulativos
Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo
Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido
Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)
Retransmissatildeo seletiva visatildeogeral
Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)
Receptor reconhece (acks) pacotes individuais
Emissor manteacutemtemporizador para cadapacote natildeo reconhecido
Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido
Transport Layer 3-43
Transmissor
bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote
bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos
bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)
bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela
Go-Back-N
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-35
Transmissor rdt30
Transport Layer 3-36
rdt30 em accedilatildeo
Transport Layer 3-37
rdt30 em accedilatildeo
Transport Layer 3-38
bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado
bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps
bull O protocolo de rede limita o uso dos recursos fiacutesicos
bull rdt30 funciona mas o desempenho eacute sofriacutevel
bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB
Desempenho do rdt30
Ttransmis
satildeo
= 8 kbpkt109 bs
= 8 microsegL (tamanho do pacote em bits)
R (taxa de transmissatildeo bps)=
Usender=008
30008 = 000027 L RRTT + L R
=
Transport Layer 3-39
rdt30 operaccedilatildeo pare e espere
Transmissatildeo do 1ordm Bit dopacote t = 0
emissor receptor
RTT
Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK
Recebe ACK envia proacuteximopacote t = RTT + L R
U sender
= 008
30008 = 000027
microsec
L R
RTT + L R =
Transport Layer 3-40
Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos
bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada
bull Armazenamento no transmissor eou no receptor
bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
Protocolos com paralelismo (pipelining)
Transport Layer 3-41
Pipelining aumento da utilizaccedilatildeo
emissor receptor
RTT
Uacuteltimo bit transmitido t = L R
Chegada do primeiro bitChegada do uacuteltimo bit envia ACK
Chegada do ACK envia o proacuteximo pacote t = RTT + L R
U emissor
= 024
30008 = 00008
microsecon
3 L R
RTT + L R =
Aumenta a utilizaccedilatildeopor um fator de 3
Transport Layer 3-42
Protocolos do tipo Pipelining
Go-back-N visatildeo geral Emissor pode enviar ateacute N
pacotes natildeo reconhecidos(unacked) no pipeline
Receptor envia acksacumulativos
Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo
Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido
Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)
Retransmissatildeo seletiva visatildeogeral
Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)
Receptor reconhece (acks) pacotes individuais
Emissor manteacutemtemporizador para cadapacote natildeo reconhecido
Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido
Transport Layer 3-43
Transmissor
bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote
bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos
bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)
bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela
Go-Back-N
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-36
rdt30 em accedilatildeo
Transport Layer 3-37
rdt30 em accedilatildeo
Transport Layer 3-38
bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado
bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps
bull O protocolo de rede limita o uso dos recursos fiacutesicos
bull rdt30 funciona mas o desempenho eacute sofriacutevel
bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB
Desempenho do rdt30
Ttransmis
satildeo
= 8 kbpkt109 bs
= 8 microsegL (tamanho do pacote em bits)
R (taxa de transmissatildeo bps)=
Usender=008
30008 = 000027 L RRTT + L R
=
Transport Layer 3-39
rdt30 operaccedilatildeo pare e espere
Transmissatildeo do 1ordm Bit dopacote t = 0
emissor receptor
RTT
Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK
Recebe ACK envia proacuteximopacote t = RTT + L R
U sender
= 008
30008 = 000027
microsec
L R
RTT + L R =
Transport Layer 3-40
Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos
bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada
bull Armazenamento no transmissor eou no receptor
bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
Protocolos com paralelismo (pipelining)
Transport Layer 3-41
Pipelining aumento da utilizaccedilatildeo
emissor receptor
RTT
Uacuteltimo bit transmitido t = L R
Chegada do primeiro bitChegada do uacuteltimo bit envia ACK
Chegada do ACK envia o proacuteximo pacote t = RTT + L R
U emissor
= 024
30008 = 00008
microsecon
3 L R
RTT + L R =
Aumenta a utilizaccedilatildeopor um fator de 3
Transport Layer 3-42
Protocolos do tipo Pipelining
Go-back-N visatildeo geral Emissor pode enviar ateacute N
pacotes natildeo reconhecidos(unacked) no pipeline
Receptor envia acksacumulativos
Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo
Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido
Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)
Retransmissatildeo seletiva visatildeogeral
Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)
Receptor reconhece (acks) pacotes individuais
Emissor manteacutemtemporizador para cadapacote natildeo reconhecido
Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido
Transport Layer 3-43
Transmissor
bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote
bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos
bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)
bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela
Go-Back-N
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-37
rdt30 em accedilatildeo
Transport Layer 3-38
bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado
bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps
bull O protocolo de rede limita o uso dos recursos fiacutesicos
bull rdt30 funciona mas o desempenho eacute sofriacutevel
bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB
Desempenho do rdt30
Ttransmis
satildeo
= 8 kbpkt109 bs
= 8 microsegL (tamanho do pacote em bits)
R (taxa de transmissatildeo bps)=
Usender=008
30008 = 000027 L RRTT + L R
=
Transport Layer 3-39
rdt30 operaccedilatildeo pare e espere
Transmissatildeo do 1ordm Bit dopacote t = 0
emissor receptor
RTT
Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK
Recebe ACK envia proacuteximopacote t = RTT + L R
U sender
= 008
30008 = 000027
microsec
L R
RTT + L R =
Transport Layer 3-40
Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos
bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada
bull Armazenamento no transmissor eou no receptor
bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
Protocolos com paralelismo (pipelining)
Transport Layer 3-41
Pipelining aumento da utilizaccedilatildeo
emissor receptor
RTT
Uacuteltimo bit transmitido t = L R
Chegada do primeiro bitChegada do uacuteltimo bit envia ACK
Chegada do ACK envia o proacuteximo pacote t = RTT + L R
U emissor
= 024
30008 = 00008
microsecon
3 L R
RTT + L R =
Aumenta a utilizaccedilatildeopor um fator de 3
Transport Layer 3-42
Protocolos do tipo Pipelining
Go-back-N visatildeo geral Emissor pode enviar ateacute N
pacotes natildeo reconhecidos(unacked) no pipeline
Receptor envia acksacumulativos
Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo
Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido
Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)
Retransmissatildeo seletiva visatildeogeral
Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)
Receptor reconhece (acks) pacotes individuais
Emissor manteacutemtemporizador para cadapacote natildeo reconhecido
Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido
Transport Layer 3-43
Transmissor
bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote
bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos
bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)
bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela
Go-Back-N
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-38
bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado
bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps
bull O protocolo de rede limita o uso dos recursos fiacutesicos
bull rdt30 funciona mas o desempenho eacute sofriacutevel
bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB
Desempenho do rdt30
Ttransmis
satildeo
= 8 kbpkt109 bs
= 8 microsegL (tamanho do pacote em bits)
R (taxa de transmissatildeo bps)=
Usender=008
30008 = 000027 L RRTT + L R
=
Transport Layer 3-39
rdt30 operaccedilatildeo pare e espere
Transmissatildeo do 1ordm Bit dopacote t = 0
emissor receptor
RTT
Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK
Recebe ACK envia proacuteximopacote t = RTT + L R
U sender
= 008
30008 = 000027
microsec
L R
RTT + L R =
Transport Layer 3-40
Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos
bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada
bull Armazenamento no transmissor eou no receptor
bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
Protocolos com paralelismo (pipelining)
Transport Layer 3-41
Pipelining aumento da utilizaccedilatildeo
emissor receptor
RTT
Uacuteltimo bit transmitido t = L R
Chegada do primeiro bitChegada do uacuteltimo bit envia ACK
Chegada do ACK envia o proacuteximo pacote t = RTT + L R
U emissor
= 024
30008 = 00008
microsecon
3 L R
RTT + L R =
Aumenta a utilizaccedilatildeopor um fator de 3
Transport Layer 3-42
Protocolos do tipo Pipelining
Go-back-N visatildeo geral Emissor pode enviar ateacute N
pacotes natildeo reconhecidos(unacked) no pipeline
Receptor envia acksacumulativos
Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo
Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido
Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)
Retransmissatildeo seletiva visatildeogeral
Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)
Receptor reconhece (acks) pacotes individuais
Emissor manteacutemtemporizador para cadapacote natildeo reconhecido
Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido
Transport Layer 3-43
Transmissor
bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote
bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos
bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)
bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela
Go-Back-N
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-39
rdt30 operaccedilatildeo pare e espere
Transmissatildeo do 1ordm Bit dopacote t = 0
emissor receptor
RTT
Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK
Recebe ACK envia proacuteximopacote t = RTT + L R
U sender
= 008
30008 = 000027
microsec
L R
RTT + L R =
Transport Layer 3-40
Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos
bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada
bull Armazenamento no transmissor eou no receptor
bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
Protocolos com paralelismo (pipelining)
Transport Layer 3-41
Pipelining aumento da utilizaccedilatildeo
emissor receptor
RTT
Uacuteltimo bit transmitido t = L R
Chegada do primeiro bitChegada do uacuteltimo bit envia ACK
Chegada do ACK envia o proacuteximo pacote t = RTT + L R
U emissor
= 024
30008 = 00008
microsecon
3 L R
RTT + L R =
Aumenta a utilizaccedilatildeopor um fator de 3
Transport Layer 3-42
Protocolos do tipo Pipelining
Go-back-N visatildeo geral Emissor pode enviar ateacute N
pacotes natildeo reconhecidos(unacked) no pipeline
Receptor envia acksacumulativos
Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo
Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido
Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)
Retransmissatildeo seletiva visatildeogeral
Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)
Receptor reconhece (acks) pacotes individuais
Emissor manteacutemtemporizador para cadapacote natildeo reconhecido
Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido
Transport Layer 3-43
Transmissor
bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote
bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos
bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)
bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela
Go-Back-N
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-40
Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos
bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada
bull Armazenamento no transmissor eou no receptor
bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva
(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo
Protocolos com paralelismo (pipelining)
Transport Layer 3-41
Pipelining aumento da utilizaccedilatildeo
emissor receptor
RTT
Uacuteltimo bit transmitido t = L R
Chegada do primeiro bitChegada do uacuteltimo bit envia ACK
Chegada do ACK envia o proacuteximo pacote t = RTT + L R
U emissor
= 024
30008 = 00008
microsecon
3 L R
RTT + L R =
Aumenta a utilizaccedilatildeopor um fator de 3
Transport Layer 3-42
Protocolos do tipo Pipelining
Go-back-N visatildeo geral Emissor pode enviar ateacute N
pacotes natildeo reconhecidos(unacked) no pipeline
Receptor envia acksacumulativos
Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo
Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido
Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)
Retransmissatildeo seletiva visatildeogeral
Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)
Receptor reconhece (acks) pacotes individuais
Emissor manteacutemtemporizador para cadapacote natildeo reconhecido
Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido
Transport Layer 3-43
Transmissor
bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote
bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos
bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)
bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela
Go-Back-N
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-41
Pipelining aumento da utilizaccedilatildeo
emissor receptor
RTT
Uacuteltimo bit transmitido t = L R
Chegada do primeiro bitChegada do uacuteltimo bit envia ACK
Chegada do ACK envia o proacuteximo pacote t = RTT + L R
U emissor
= 024
30008 = 00008
microsecon
3 L R
RTT + L R =
Aumenta a utilizaccedilatildeopor um fator de 3
Transport Layer 3-42
Protocolos do tipo Pipelining
Go-back-N visatildeo geral Emissor pode enviar ateacute N
pacotes natildeo reconhecidos(unacked) no pipeline
Receptor envia acksacumulativos
Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo
Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido
Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)
Retransmissatildeo seletiva visatildeogeral
Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)
Receptor reconhece (acks) pacotes individuais
Emissor manteacutemtemporizador para cadapacote natildeo reconhecido
Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido
Transport Layer 3-43
Transmissor
bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote
bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos
bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)
bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela
Go-Back-N
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-42
Protocolos do tipo Pipelining
Go-back-N visatildeo geral Emissor pode enviar ateacute N
pacotes natildeo reconhecidos(unacked) no pipeline
Receptor envia acksacumulativos
Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo
Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido
Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)
Retransmissatildeo seletiva visatildeogeral
Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)
Receptor reconhece (acks) pacotes individuais
Emissor manteacutemtemporizador para cadapacote natildeo reconhecido
Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido
Transport Layer 3-43
Transmissor
bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote
bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos
bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)
bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela
Go-Back-N
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-43
Transmissor
bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote
bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos
bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)
bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela
Go-Back-N
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-44
GBN FSM estendida para o transmissor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Λ
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-45
bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum
bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem
GBN FSM estendida para o receptor
Wait
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(0ACKchksum)
Λ
udt_send(sndpkt)
default
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-46
GBN em accedilatildeo
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-47
bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior
bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido
bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos
Retransmissatildeo seletiva
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-48
Retransmissatildeo seletiva janelas do transmissore do receptor
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-49
TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de
sequumlecircncia disponiacutevel estaacute najanela envia o pacote
Timeout(n)bull Reenvia pacote n restart
timerACK (n) em
[sendbasesendbase+N]bull Marca pacote n como
recebidobull Se n eacute o menor pacote natildeo
reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido
Retransmissatildeo seletiva
RECEPTORPacote n em [rcvbase rcvbase +
N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem
entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido
pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-50
Retransmissatildeo seletiva em accedilatildeo
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-51
Exemplo bull Sequumlecircncias 0 1 2 3
bull Tamanho da janela = 3
bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios
bull Incorretamente passadados duplicados comonovos (figura a)
P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela
Retransmissatildeoseletiva dilema
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-52
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-53
TCP Visatildeo Geral RFCs 793 1122 1323 2018
2581 Dado full duplex
Fluxo de dados bi-direcional na mesmaconexatildeo
MSS maximum segment size
Orientado a conexatildeo handshaking (troca de
mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados
Fluxo controlado O emissor natildeo esgota a
capacidade do receptor
Ponto-a-ponto um emissor um receptor
Confiaacutevel fluxo de bytes emsequecircncia
Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)
pipelined Controle de congestionamento e de
fluxo no TCP definem o tamanho dajanela
Buffers de transmissatildeo amp derecepccedilatildeo
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-54
Estrutura do Segmento TCP
source port dest port
32 bits
applicationdata
(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUheadlen
notused
Options (variable length)
URG dado urgente(generalmente natildeo usado)
ACKnuacutemero deACK vaacutelido
PSH forccedila a entregado dado (geralmente natildeousado)
RST SYN FIN(comandos de
estabelecimentoencerramento e
reiniacutecio de conexatildeo
nuacutemero de bytes o receptor estaacutepronto paraaceitar
Contagem dosBytes de dados(natildeo de segmentos)
checksum(como no UDP)
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-55
rsquos de sequecircncia do TCP e dosACKs
rsquos de sequecircncia
Nuacutemero do primeirobyte nos segmentos de dados
ACKs
Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado
ACK acumulativo
Q Como o receptor manipulaos segmentos fora de ordem
R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo
Host A Host B
Seq=42 ACK=79 dado = lsquoCrsquo
Seq=79 ACK=43 dado = lsquoCrsquo
Seq=43 ACK=80
Usuaacuteriotecla
lsquoCrsquo
Host reconhecea recepccedilatildeo do
lsquoCrsquo ecoado
Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo
timeCenaacuterio Telnet simplificado
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-56
TCP Round Trip Time (RTT) e Timeout
Q Como definir o valor de timeout para o TCP
Maior do que o RTT entretanto o RTT
varia
Muito pequeno timeout prematuro
Retransmissotildeesdesnecessaacuterias
Muito grande reaccedilatildeolenta agrave perda de segmento
Q Como estimar o RTT SampleRTT tempo medido entre
a transmissatildeo do segmento e a recepccedilatildeo do ACK
Ignora as retransmissotildees
SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado
Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-57
TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT
Meacutedia moacutevel com peso exponencial
Influecircncia das amostras do passado decrescemexponencialmente
Valor tiacutepico para αααα = 0125
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-58
Exemplo de estimaccedilatildeo do RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lisec
on
ds)
SampleRTT Estimated RTT
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-59
TCP Round Trip Time e Timeout
Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila
Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila
Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|
(tipicamente ββββ = 025)
Ajuste do intervalo de temporizaccedilatildeo
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-60
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-61
TCP Transferecircncia confiaacutevel de dados
TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP
Pipelined segments
ACKs acumulativos
TCP usa tempo de retransmissatildeo simples
Retransmissotildees satildeodiparadas por timeout ACKs duplicados
Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo
controle de congestionamento
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-62
TCP eventos do transmissor
Dado recebido da app
Crie um segmento com nuacutemero de sequumlecircncia
seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento
Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)
Tempo de expiraccedilatildeo TimeOutInterval
Tempo de confirmaccedilatildeo(timeout)
Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo
Reinicia o temporizadorAck rcvd Quando houver o ACK de
segmentos anteriormente natildeoconfirmados
Atualizar o que foiconfirmado
Iniciar o temporizador se houver segmentos pendentes
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-63
TCP transmis-sor(simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) switch(event)
event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)
start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)
event timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
end of loop forever
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-64
TCP cenaacuterios de retransmissatildeo
Host A
Seq=100 20 bytes data
ACK=100
tempoTimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq
=92
tim
eout
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
perdido
tim
eout
ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tempoS
eq=9
2 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-65
TCP cenaacuterios de retransmissatildeo (cont)
Host A
Seq=92 8 bytes data
ACK=100
loss
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
time
SendBase= 120
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-66
TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]
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 natildeochegarenvia ACK
Imediatamente envia um ACKacumulativo
Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado
Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-67
Retransmissatildeo Raacutepida
Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo
Longo atraso antes de reenviar um pacoteperdido
Detecta segmentosperdidos por meio de ACKs duplicados
Transmissorfrequumlentemente enviamuitos segmentosback-to-back
Se o segmento eacuteperdido haveraacute muitosACKs duplicados
Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido
Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-68
Host A
tim
eout
Host B
tempo
X
seq=92 8 bytes de dado
seq=100 20 bytes de dado
seq=120 15 bytes de dado
seq=135 6 bytes de dado
seq=141 16 bytes de dado
Ack = 100
Ack = 100
Ack = 100
Ack = 100
seq=100 20 bytes de dado
tempo
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-69
event ACK received with ACK field value of y if (y gt SendBase)
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer
else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)
resend segment with sequence number y
Algoritmo de Restransmissatildeo Raacutepida
ACK duplicado para um segmentojaacute reconhecido
Retransmissatildeo raacutepida
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-70
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-71
TCP Controle de Fluxo
lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo
Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora
Processos de aplicaccedilatildeopodem ser lentos para lero buffer
Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais
Controle de fluxo
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-72
TCP ndash controle de fluxo modo de operaccedilatildeo
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espaccedilo disponiacutevel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -LastByteRead]
Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos
Transmissor limita osdados natildeo confimados aoRcvWindow
Garantia contra overflow no buffer do receptor
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-73
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-74
Gerenciamento da Conexatildeo TCP
RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados
Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo
(ex RcvWindow) Cliente iniciador da conexatildeo
Socket clientSocket = new Socket(ldquohostnameportnumber)
Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()
Three way handshakePasso 1 sistema final cliente envia
TCP SYN ao servidor Especifica de sequecircncia
inicial Natildeo haacute envio de dados
Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK
Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de
sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o
SYNACK responde com um segmento ACK que pode conterdados
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-75
Gerenciamento da conexatildeo TCP (cont)
Fechando uma conexatildeo
client closes socketclientSocketclose()
Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor
Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN
cliente
FIN
servidor
ACK
fecha
fecha
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-76
Gerenciamento da Conexatildeo TCP (cont)
Passo 3 o cliente recebe FIN responde com ACK
Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos
Passo 4 o servidor recebeACK Conexatildeo fechada
cliente
FIN
servidor
ACK
ACK
FIN
fecha
fecha
fechado
fechadoT
empo
de
espe
ra
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-77
Gerenciamento da Conexatildeo TCP (cont)
Ciclo de vidado Cliente TCP
Ciclo de vidado Servidor TCP
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-78
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-79
Princiacutepios de Controle do Congestionamento
Congestionamento Informalmente ldquomuitas fontes enviando dados
acima da capacidade da rede de trataacute-losrdquo
Diferente de controle de fluxo Indicaccedilotildees
Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Problema top-10
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-80
CausasCustos do congestionamento
cenaacuterio 1 Dois emissores
dois receptores
Um roteador buffer infinito
Semretransmissatildeo
Grandesatrasos quandocongestionado
Buffers de saiacutedacompartilhados e ilimitados
Host Aλin dado original
Host B
λout
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-81
Causascustos do congestionamento cenaacuterio 2
Um roteador buffers finitos
Transmissor reenvia pacotes perdidos
Buffer finito
Host A λin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-82
CausasCustos do Congestionamento
cenaacuterio 2 (cont) (traacutefego bom)
Retransmissatildeo somente quando haacute perdas
Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo
λin
λout
=
λin
λout
gt
λinλ
out
ldquocustosrdquo do congestionamento
Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo
Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote
R2
R2λin
λ out
a
R2
R2λin
λ out
c
R4
R2
R2λin
λ out
b
R3
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-83
Causascustos do congestionamento
cenaacuterio 3 Quatro transmissores
Caminhos com muacuteltiplos saltos
Temporizaccedilotildeesretransmissotildees
λin
P o que acontece quando e aumentam
λin
Buffers de saiacuteda limitados e compartilhados
Host Aλin dado original
Host B
λout
λin dado original maisdados retransmitidos
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-84
Causascustos do congestionamento cenaacuterio 3 (cont)
Outro ldquocustordquo do congestionamento
bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada
Host A
Host B
λou
t
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-85
Abordagens voltadas para o controle do congestionamento
Controle de congestionamentofim-a-fim
Natildeo usa realimentaccedilatildeoexpliacutecita da rede
Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais
Abordagem usada pelo TCP
Controle de congestionamentoassistido pela rede
Roteadores enviaminformaccedilotildees para os sistemasfinais
Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)
Taxa expliacutecita do transmissorpoderia ser enviada
Existem duas abordagens gerais para o problema de controlede congestionamento
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-86
Controle de congestionamento assistido pela rede
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-87
Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM
ABR available bit rate
ldquoserviccedilo elaacutesticordquo Se o caminho do
transmissor natildeo estaacutecongestionado
bull Transmissor podeusar a bandadisponiacutevel
Se o caminho do transmissor estaacutecongestionado
bull Transmissor eacutelimitado a uma taxamiacutenima garantida
Ceacutelulas RM (resource management)
Enviadas pelo transmissor entremeadas com as ceacutelulas de dados
Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento
As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-88
Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)
Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima
suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches
congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI
setado o receptor marca o bit CI na ceacutelula RM devolvida
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-89
Capiacutetulo 3 Visatildeo Geral
31 Serviccedilos da Camadade Transporte
32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo
33 Transporte Sem-Conexatildeo UDP
34 Princiacutepios datransferecircncia confiaacutevelde dados
35 TransporteOrientado_a_conexatildeo TCP
Estrutura do segmento
Transferecircncia confiaacutevel de dados
Controle de fluxo
Gerenciamento de conexatildeo
36 Princiacutepios do controle de congestionamento
37 Controle de congestionamento do TCP
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-90
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo
Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)
Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada
Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda
time
Tam
anho
da
jane
lade
cong
esti
onam
ento
Comportamento dentede serra testando a banda disponiacutevel
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-91
TCP Controle de congestionamento- detalhes
O emissor limita a transmissatildeoLastByteSent-LastByteAcked
lelelele CongWin
Aproximadamente
CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede
Como o emissor percebe o congestionamento
evento de perda= timeout ou 3 acks duplicados
O emissor reduz a taxa(CongWin) apoacutes um eventode perda
3 mecanismos AIMD
Partida lenta (slow start)
Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout
taxa =CongWin
RTTBytessec
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-92
TCP Partida lenta (slow start)
No iniacutecio da conexatildeo CongWin = 1 MSS
Exemplo MSS = 500 bytes amp RTT = 200 ms
Taxa inicial = 20 kbps
Largura de bandadisponiacutevel pode ser gtgt MSSRTT
Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel
Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-93
TCP Partida lenta (cont)
A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra
dobra CongWin a cadaRTT
Incrementa CongWinpara cada ACK recebido
Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido
Host A
Um segmento
RT
T
Host B
tempo
Dois segmentos
Quatro segmentos
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-94
Refinamento inferindo perdas
Apoacutes 3 ACKs duplos
CongWin eacute reduzida agravemetade
A janela entatildeo crescelinearmente
Mas apoacutes um evento de timeout
CongWin eacute reduzida a 1 MSS
A janela cresceexponencialmente
Apoacutes o ldquothresholdrdquo a janelacresce linearmente
3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo
Filosofia
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-95
Refinamento
P quando o aumentoexponencial devealterar paralinear
R quando CongWinalcanccedila 12 do seuvalor antes do timeout
Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute
definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-96
Resumo Controle de congestionamentodo TCP
Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente
Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente
Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold
Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-97
TCP controle de congestionamentodo emissor
Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado
partida lenta(SS)
CongWin = CongWin + MSS If (CongWin gt Threshold)
ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo
Resulta em dobrar o CongWin a cada RTT
ACK recebidopara dado previamentenatildeo-confirmado
prevenccedilatildeo de congestiona-mento (CA)
CongWin = CongWin + MSS (MSSCongWin)
Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT
Evento de perdadetectado portrecircs ACKsduplicados
SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo
Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS
Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo
Entra em partida lenta
ACK duplicado
SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado
CongWin e Threshold natildeomudam
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-98
TCP throughput
Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start
Defina W como o tamanho da janela quandoocorre a perda
Quando a janela eacute W o throughput eacuteWRTT
Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT
Throughput meacutedio 75 WRTT
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-99
Futuro do TCP TCP sobre enlaces de grande capacidade
Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps
Requer janelas de tamanho igual a W = 83333 segments
Throughput em termos da taxa de perda
L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta
velocidade
LRTT
MSSsdot221
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-100
Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK
TCP connection 1
Gargalorepresentado
pela capacidade Rdo roteador
TCP connection 2
TCP Justiccedila
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-101
Porque o TCP eacute justo
Duas sessotildees competindo
O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm
R
R
Compartilhamento igual da banda
Connection 1 throughput
Con
n ect
ion
2 t
hro
ughpu
t
congestion avoidance incremento aditivo
perda decresce a janela por um fator de 2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2
Transport Layer 3-102
Justiccedila (cont)
Justiccedila e o UDP
Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP
Natildeo desejam limitar o emissor devido o congestionamento
Utilizam o UDP enviar aacuteudioviacutedeo a uma
taxa constante toleramperda de pacotes
pesquisa ldquoTCP friendlyrdquo
Justiccedila e conexotildees TCP em paralelo
Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts
Browsers Web fazem isto
Exemplo enlace com taxa R suportando 9 conexotildees
Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10
Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2