Professional Documents
Culture Documents
O que veremos:
Servios da camada de transporte. Multiplexao/desmultiplexao. Transporte sem conexo: UDP. Princpios de transferncia confivel de
Princpios de controle de
Instanciao e
implementao na Internet.
Protocolo da Camada de Transporte fornece comunicao lgica entre processos, rodando em hosts diferentes. Protocolo da Camada de Rede fornece comunicao lgica entre hosts.
Camada de transporte repousa exatamente sobre a camada de rede.
lgica
Camada de rede: dados transferidos entre hosts. Camada de transporte: dados transferidos entre processos.
so implementados nos sistemas das pontas (end systems), e no nos roteadores intermedirios.
TRANSPORTE: Camada
a ponto: TCP.
Multiplexao/desmultiplexao (1)
MULTIPLEXAO: Juntar dados de mltiplos
processos de aplicaes, encapsulando dados com cabealho (usado depois para demultiplexao).
P3
receptor
M M
P4 P2
P1
M
10
Multiplexao/desmultiplexao (1)
MULTIPLEXAO: Juntar dados de mltiplos
processos de aplicaes, envelopando dados com cabealho (usado depois para demultiplexao). DEMULTIPLEXAO: entrega de segmentos recebidos para os processos da camada de aplicao corretos.
dados da camada de aplicao cabealho de segmento
P3
receptor
P4 P2
P1
M
11
Multiplexao/desmultiplexao (2)
Segmento - Unidade de dados trocada entre entidades da
camada de transporte. Ou TPDU- Transport protocol Data Unit, ou 4-PDU (PDU da camada 4). No exemplo abaixo: P1 com P3, e P2 com P4.
P3 receptor
M M
P4 P2
P1
M
12
Multiplexao/desmultiplexao (3)
Multiplexao/demultiplexao: Baseadas em nmeros de porta e endereos IP de remetente e receptor: Nmeros de porta de remetente/receptor so enviados em cada segmento. Nmero de porta so bem conhecido para aplicaes especficas (WKS): E-mail na porta 25, telnet na porta 23, http na porta 80, e assim por diante.
32 bits porta emissor porta receptor
Multiplexao/desmultiplexao: exemplos
estao A
porta orig.: x porta dest: 23
servidor B
servidor WWW B
Internet mnimo. Best Effort: Servio melhor esforo, resulta que segmentos UDP podem ser: Perdidos. Entregues aplicao fora de ordem de envio. Sem conexo: No h setup UDP entre remetente e receptor. Tratamento independente de cada segmento UDP.
conexo (o que pode causar retardo). Simples: no se mantm estado da conexo no remetente/receptor. Pequeno cabealho de segmento. Mais simples. Sem controle de congestionamento: UDP pode transmitir o mais rpido possvel.
15
porta origem
comprimento
porta dest.
Outros usos de UDP : DNS (servidor de nomes). SNMP (gerenciamento). Transferncia confivel com UDP: deve incluir confiabilidade na camada de aplicao. Recuperao de erro fica por conta da aplicao!
checksum
Checksum UDP
Meta: detectar falha no segmento transmitido. Emissor:
Trata contedo do segmento
Receptor:
Computa checksum do
como seqncia de inteiros de 16-bits. Campo checksum zerado. Checksum: soma (adio usando complemento de 1) do contedo do segmento. Emissor coloca complemento de um do valor da soma no campo checksum de UDP . Envia...
segmento recebido Verifica se checksum computado zero: NO - erro detectado. SIM - nenhum erro detectado. Mas ainda pode ter erros? (Veremos mais adiante .)
17
Lembrete 2: carry
20
incluindo o checksum.
Se no foram introduzidos erros no pacote, a soma no
Se um dos bits for zero, ento algum erro foi introduzido no pacote.
Pergunta para casa: Por que o UDP usa checksum, se a maioria dos protocolos data-link (inferiores), incluindo o popular Ethernet, tambm fornece verificao de erro ??
21
22
mpar de bytes.
Algoritmo do checksum soma palavras de 16 bits. Soluo: adicionar pad de zeros , no final, se necessrio.
Pad no transmitido.
23
Pseudo header IP (usado pelo UDP) (16 bytes) Header UDP (8 bytes)
24
25
da camada superior, (Ex: pela aplicao). Passa dados para entregar camada superior receptora
deliver_data(): chamada por rdt para entregar dados para camada superior.
emissor
receptor
udt_send(): chamada por ambos os lados para troca de pacotes de controle. UDT representa um unreliable data transfer.
estado 1
evento aes
estado 2
confivel
Suposio 1.0: Canal perfeitamente confivel. No apresenta erros de bits. No apresenta perda de pacotes.
FSMs separadas, para remetente e receptor: Remetente envia dados pelo canal subjacente. Receptor recebe dados do canal subjacente.
fsicos da rede:
31
Mensagens de controle
Permitem o receptor informar ao emissor o
32
protocolos de ARQ para lidar com a presena de erros de bits: Deteco de erros: mecanismo para permitir que o receptor identifique quando erros de bit ocorreram. Realimentao (feedback) pelo receptor: mensagens de controle (ACK, NAK) trocadas entre receptor e o emissor. Retransmisso: para corrigir os erros detectados.
Se recebe um NACK, re-envia o ltimo pacote atual, e retorna a aguardar um ACK ou NACK. No pode aceitar dados da camada superior (stop-and-wait)
Se recebe um ACK confirmando que o dado atual foi recebido, retorna ao estado de aguardar um pacote da camada superior 34
Pacote recebido est ntegro. Emite um ACK, confirmando e retorna ao estado de aguardar.
35
FSM do remetente
FSM do receptor
36
FSM do remetente
FSM do receptor
37
38
receptor?
O que fazer?
Remetente usa ACKs/NAKs p/
ACK/NAK do receptor?
seqncia para cada pacote. Emissor retransmite pacote atual se ACK/NAK recebido com erro. Receptor descarta pacote duplicado.
40
2
4
Aguarda a chegada do No. Seq. correto
41
42
43
44
rdt2.1, mas s com ACKs. Ao invs de NAK, receptor envia ACK para o ltimo pacote recebido bem. Receptor deve incluir explicitamente o No. de seqncia do pacote reconhecido. ACK duplicado no remetente resulta na mesma ao que o NAK: retransmite pacote atual.
FSM do EMISSOR
45
Ou seja, como detectar perda de pacotes ? O que fazer quando pacotes so perdidos?
Mas uso de nmero de seqncia resolve este problema. Receptor deve avisar o nmero de seqncia do pacote sendo confirmado.
47
rdt3.0: remetente
Inicia o timer e aguarda o ack
48
rdt3.0 em ao
49
rdt3.0 em ao
50
51
52
Desempenho de rdt3.0
rdt3.0 funciona, porm seu desempenho muito ruim.
Exemplo:
Link de 1 Gbps (10**9 bits/seg); Pacote de 1 KByte (8K bits) retardo fim a fim de 15 ms, :
T = transmisso
Pacote de 1KB a cada 30 mseg vazo de 33kByte/seg num enlace de 1 Gbps ! Protocolo limita uso dos recursos fsicos!
53
Faixa de nmeros de seqncia deve ser aumentada. Buffers no remetente e/ou no receptor.
Duas formas genricas de protocolos dutados: Volta-N (GBN Go Back N) Retransmisso Reletiva (selective repeat).
54
sem aguardar ACK do receptor. Entretanto: No pode haver mais do que um valor mximo de N pacotes no confirmados no canal.
55
[0, send_base - 1] = Pacotes transmitidos e confirmados (verde) [send_base, nextseqnum -1] = Pacotes enviados mas no confirmados (amarelo) [nextseqn, send_base + N - 1] = Disponveis para serem usados imediatamente, assim que dados chegarem da camada superior (azul). Sequence number (base + N) : no podem ser usados at que um pacote no confirmado que esteja atualmente no duto tenha sido confirmado.
56
pacotes transmitidos, mas ainda no confirmados, poder ser visto como uma janela (window) de tamanho N sobre o intervalo de nmeros de seqncia.
medida que o protocolo opera, a janela se desloca sobre o espao
57
Temporizador Timeout(n): retransmite pacote n e todos os pacotes com No. de seqncia maiores na janela.
58
Se ocorrer um esgotamento do temporizador, o emissor reenvia TODOS os pacotes que tinham sido previamente enviados, mas que ainda no tinham sido reconhecidos.
Temporizador: um cronmetro para o pacote mais antigo transmitido, mas que ainda no foi reconhecido
59
Temporizador: um cronmetro para o pacote mais antigo transmitido, mas que ainda no foi reconhecido
60
Receptor muito simples: Usa apenas ACK: sempre envia ACK para pacote recebido o.k. com o maior nmero de seqncia em ordem.
expectedseqnum = expectedseqnum + 1
GBN em ao
Janela = 4. Envia de 0 a 3 e o 2 se perde
Confirma os pacotes 0 e 1
GBN no o TCP
GBN incorpora quase todas as tcnicas que sero
Entretanto existem diferenas entre o TCP e o GBN. Por exemplo: muitas implementaes TCP fazem buffering
63
Problemas do GBN
GBN tem problemas de performance.
Se o tamanho da janela grande e o atraso da rede tambm grande, muitos pacotes podem estar no duto. Um nico erro em um segmento resulta na retransmisso de um grande nmero de segmentos, a maioria desnecessrios.
Repetio Seletiva
65
Repetio seletiva
Evita retransmisses desnecessrias. O emissor retransmite apenas os pacotes que ele suspeita terem sido recebidos com erro pelo receptor.
Receptor confirma individualmente todos os pacotes
recebidos corretamente.
Armazena pacotes no buffer, conforme necessrio, para posterior entrega em ordem camada superior.
no foi recebido.
Janela do emissor
67
ACK recebido. Se um ACK for recebido, o emissor marca o pacote como recebido.
Se o nmero de seqncia do pacote for igual send-base, ento a base da janela avana at o pacote com o menor nmero de seqncia no-confirmado. Se houver pacotes no transmitidos, com nmeros de seqncia que caem agora dentro da janela, estes pacotes so transmitidos.
68
recebido corretamente:
Neste caso, o pacote recebido cai dentro da janela do receptor e um pacote seletivo de ACK retornado ao remetente. Se o pacote no foi recebido previamente, ele armazenado. Se este pacote tiver um nmero de seqncia igual base da janela da recepo (rcv_base), ento este pacote, e os quaisquer pacotes previamente armazenados e numerados em seqncia (comeando com o rcv_base) so entregues camada superior. A janela de recepo movida ento para a frente pelo nmero total dos pacotes entregues camada superior.
[ rcv_base-N, rcv_base-1 ]: Neste caso, um ACK deve ser gerado, mesmo que este seja um pacote que o receptor j tenha confirmado previamente. Se no: Ignora o pacote.
69
70
Timeout(n):
Reenvia pacote n. Reinicia o temporizador.
ACK(n) em [sendbase,sendbase+N]:
Marca pacote n como recebido.
Pacote n em
[rcvbase-N,rcvbase-1]
Seno:
Ignora.
71
Retransmisso seletiva em ao
72
Retransmisso seletiva em ao
Quando um pacote com um nmero de seqncia de rcv_base=2 recebido, ento ele e os pacotes rcv_base+1 e rcv_base+2 podem ser entregues camada superior.
73
74
os dois cenrios (a) e (b) !!! Incorretamente passa dados duplicados como sendo novos em (a). Pergunta: Qual a relao entre tamanho de No. de seqncia e tamanho de janela?
Um tamanho de janela que seja igual ao tamanho de numerao sequencial, menos 1, no vai 75 funcionar.
Peer-to-Peer (P2P):
No estruturado em mensagens.
dutado (pipelined):
socket door
76
O trfego Full Duplex: Fluxo de dados bi-direcional na mesma conexo. MSS: o tamanho mximo de segmento de dados.
(Falaremos de MSS mais adiante)
orientado a conexo: Handshaking de 3 vias (troca de msgs de controle) inicia estado de remetente, receptor antes de trocar dados.
Tem o Fluxo controlado: o receptor no ser
afogado.
77
PSH = push: fora envio de dados imediatamente. Contagem de dados por bytes (no segmentos!)
nmero de seqncia
Tamanho do header em palavras de 32 bits
checksum
78
Header TCP
Porta Origem e Porta Destino identificam o processo de aplicao que est enviando dados e o processo de aplicao que ir receber os dados. Nmero de seqncia identifica os bytes enviados. Na prtica ele a identificao do primeiro byte de dados contido no segmento enviado. Os demais so seqenciados a partir deste byte. Acknowledgement identifica os bytes que foram recebidos e tratados sem erro pelo destino, bem como a seqncia do prximo byte esperado Tamanho representa o tamanho total do frame TCP Reservado um campo ainda no utilizado FLAGS identifica as flags (syn, fin, psh, rst, ack, urg) Window identifica o tamanho da janela para o controle de fluxo Checksum destina-se a verificao de erros de transmisso. calculado usando o pseudo header, o header TCP e tambm a rea de dados Urgent Pointer um ponteiro para dados urgentes, contidos na rea de dados.
80
sentidos. Inicializam variveis TCP: Nmeros de seqncia e confirmao. Buffers, informaes de controle de fluxo (por exemplo RcvWindow) e temporizadores. Cliente: aquele que inicia a conexo.
Active Open
Bit SYN do TCP ajustado como 1. (SYN=1; ACK=0) Cliente especifica No. de Seqncia inicial.
(SYN=1; ACK=1)
Confirma SYN recebido. Aloca buffers, especifica No. seq. inicial de servidor para o receptor. (SYN=0; ACK=1)
82
(SYN=1; ACK=1)
Servidor confirma o No. seq. do cliente, e envia seu prprio No. de seq.
(SYN=0; ACK=1)
Cliente confirma o No. seq. do server, e comea a enviar dados seguindo seu No. de seq. 83
Estabelecimento da Conexo
Origem A
SYN 1415531521:1415531521 (0) <mss 1024>
Destino B
ACK 1823083522
Encerramento da Conexo
Half Close Conexes TCP so full-duplex. Cada lado da conexo deve finalizar a conexo de forma independente Quando um dos lados envolvidos recebe uma solicitao de finalizao, deve enviar a notificao para a aplicao.
Uma aplicao aps receber o pedido de finalizao ainda pode mandar dados.
fechar
fechada
86
cliente
servidor
fechando
fechando
fechada
fechada
87
Encerramento da Conexo
Origem A
FIN 1415531522:1415531522 (0) ACK 1823083522
Destino B
ACK 1415531523
ACK 1823083523
89
91
dados que o TCP pretende enviar num nico segmento para o destino. Para a maioria dos computadores o MSS ajustado automaticamente pelo sistema operacional.
desempenho da rede.
Mais dados so enviados num nico segmento. Desde que no ocorra fragmentao. Quanto maior a quantidade de dados enviados em um nico bloco, menor o overhead de headers TCP e IP. O MSS est limitado pelo MTU, que est limitado pela tecnologia ou protocolo da camada de enlace.
Esta relao ser discutida mais adiante, junto com a discusso sobre MTU na camada de rede.
1o. segmento
ltimo segmento
94
Host A
Usurio tecla C
Host B
nmero do primeiro byte de dados do segmento. ACKs: No. de sequncia do prximo segmento esperado (em bytes). ACK cumulativo.
A reconhece P: Como receptor trata chegada segmentos fora da ordem? do C ecoado Especificao do TCP omissa - deixado ao implementador. Maioria das vezes: buferiza.
Se no chegar o ACK: Cada vez que o TCP entrega um segmento ao IP (abaixo), ele inicia um temporizador para aquele segmento. Se este temporizador expirar, o TCP responde ao evento de timeout, re-enviando o segmento que causou o timeout.
96
Chegada de um ACK o emissor deve determinar se o ACK um first-time ACK (para um segmento o qual o remetente ainda est esperando um ACK), ou uma duplicata de ACK, que rereconhea um segmento para qual o remetente j tenha recebido ACK anteriormente.
Chegada de um ACK first-time o emissor informado que todos os dados at (inclusive) o byte que est sendo confirmado foram recebidos no receptor. O emissor atualiza sua varivel do estado do TCP que segue o nmero de seqncia do ltimo byte que tenha sido recebido corretamente (e em ordem), no receptor.
97
ACKs duplicados
First time ack sinal que est tudo ok. Mas, o que acontece se o emissor recebe um
ACK duplicado ?
Ou seja, uma duplicata de ACK, que rereconhea um segmento para qual o emissor j tenha recebido ACK anteriormente.
TCP...
98
um nmero de seqncia maior do que prximo nmero de seqncia esperado, ele detecta uma falha no fluxo de dados
Ao invs disso, re-reconhece simplesmente o ltimo byte em ordem dos dados que ele recebeu corretamente. Isto , ele gera um ACK em duplicata para o ltimo byte recebido ok.
99
duplicados (ou seja, 4 ACKs idnticos) para o mesmo segmento que ele enviou, ele assume que foi perdido o segmento que vem em seguida ao segmento que foi confirmado 4 vezes.
Neste caso, o TCP executa uma retransmisso rpida re-envia o segmento faltante, mesmo antes que o temporizador do segmento expire [RFC 2581].
100
ACK xxxxxxx523
ACK xxxxxxx523
Timer
A chegada de 4 ACKs idnticos antes de vencer o timer daquele ACK, resulta na retransmisso rpida.
101
" The TCP sender SHOULD use the "fast retransmit" algorithm to detect and repair loss, based on incoming duplicate ACKs. The fast retransmit algorithm uses the arrival of 3 duplicate ACKs (4 identical ACKs without the arrival of any other intervening packets) as an indication that a segment has been lost. After receiving 3 duplicate ACKs, TCP performs a retransmission of what appears to be the missing segment, without waiting for the retransmission timer to expire."
http://www.faqs.org/rfcs/rfc2581.html
102
Chegada de segmento que completa Emita imediatamente o ACK, contanto que o parcial ou completamente uma falha nos segmento comece no fim mais baixo da falha. dados recebidos.
103
temporizao
perda
tempo
106
107
109
(5) Aplicao l 2 Kb do TCP ; Receptor TCP avisa que pode enviar mais 2 Kb (reconfirma o ltimo recebido e envia janela de 2048)
110
111
a transmisso do segmento e o recebimento do ACK correspondente. Ignora retransmisses, e segmentos com ACKs cumulativos RTTamostra varia.
Necessita ponderador de RTT.
Mas, no to simples
Ainda h a questo entre o RTT e o timeout. Necessrio ajustar o timeout com o RTT.
No algo simples.
Mas, neste caso a dificuldade determinar B. Nas implementaes iniciais, B era fixado em 2. Ou seja, duas idas e voltas (2 x RTT).
Estimativa emprica (leia-se chute).
Algoritmo original
Medir RTTamostra para cada par segment/ACK Calcular a mdia ponderada do RTT: RTT_estimado = a*RTT_estimado + b*RTTamostra, onde a+b = 1 a: deve ser entre 0.8 and 0.9 b: deve ser entre 0.1 and 0.2 Ajustar timeout baseado no RTT_estimado
TimeOut = 2 * RTT_estimado
114
proporcional variao do RTT. Portanto, uma grande variao significa um valor alto para B, e pouca variao significa um valor baixo.
Na prtica ele sugeriu usar o desvio mdio do RTT como uma forma de estimar o desvio padro.
No exato, mas uma aproximao razovel. Desvio mdio dado pela mdia aritmtica dos desvios. Desvio = | valor mdio - valor medido |
115
e define o intervalo de timeout (ajuste do temporizador) como: timeout = RTT + 4*DevRTT A escolha do fator 4 arbitrria. Minimiza o nmero de retransmisses necessrias:
Menos de 1% de todos os pacotes chegam com atraso de mais de 4 vezes o desvio padro.
usado pelo TCP. Na verdade so 4 timers. Retransmisso (j visto) Persistncia Keep-alive Time-wait
117
Temporizador de persistncia
Temporizador de persistncia: Para evitar impasse. Receptor envia pacote de tamanho de janela 0, pedindo para emissor aguardar. De tempos em tempos o emissor faz um teste para ver se pode enviar (devido a risco de perda do pacote de atualizao do receptor)
118
119
usado durante o encerramento de uma sesso. ajustado para 2 vezes o tempo de vida mximo de um pacote (TTL - Time to Live). Tenta garantir que quando uma sesso for encerrada, todos os pacotes criados por ela j tenham sido entregues.
120
Controle de Congestionamento
121
Congestionamento:
Informalmente: trata-se de fontes enviando muitos
122
Retransmisso de pacotes.
devido aos drops.
Longos atrasos
Grande enfileiramento nos buffers dos roteadores.
123
124
janela, no haver problemas causados pela sobrecarga dos buffers no receptor. Mas eles ainda podem ocorrer devido a congestionamentos internos na rede.
125
problemas potenciais:
127
Congwin
A janela efetiva o mnimo do que o transmissor e o receptor consideram vivel. Veremos exemplo a seguir....
128
se o transmissor souber que qualquer rajada com mais de 4 KB poder congestionar a rede,
ele enviar apenas 4 KB.
transmissor souber que rajadas de at 32 KB passam pela rede sem problemas, ele enviar os 8 KB solicitados.
129
usada:
Transmitir o mais rpido possvel sem perder pacotes. (ou seja, Congwin ajustado ao mximo possvel) Aumentar Congwin at perder pacotes isso causa congestionamento.
Variveis importantes:
Em seguida, ele envia este segmento mximo. Se esse segmento for confirmado antes de ocorrer um timeout, o transmissor:
Adicionar o nmero de bytes de 1 segmento na janela de congestionamento, de modo que ela tenha capacidade equivalente a 2 segmento mximos. Enviar os 2 segmentos... .... (continua...)
131
confirmado, a janela de congestionamento aumentada em um tamanho deste segmento mximo, de tal forma que - quando ambos forem confirmados - a janela ter agora 4 vezes o valor inicial.
Quando a janela de congestionamento chegar a n segmentos, e se todos os n segmentos forem confirmados a tempo, a janela de congestionamento ser aumentada pelo nmero de bytes correspondentes aos n segmentos.
132
Estao A Estao B
tempo
Partida no to lenta!
133
interrompido em algum momento, devido a congestionamento da rede ou capacidade do receptor. Para isso usado o parmetro de threshold. Vejamos como...
134
Threshold
Algoritmo de controle de congestionamento
Threshold definido inicialmente como 64KB. O crescimento exponencial interrompido quando o threshold alcanado. Ento o crescimento passa a ser linear.
Quando atingir o threshold, a varivel congwin passa a aumentar de um MSS para cada rajada.
135
Threshold e o timeout
Quando h um timeout, o threshold atribudo
metade da janela de congestionamento atual, e a janela de congestionamento reinicializada para 1 MSS. Na prtica, esse algoritmo diminui o tamanho da janela de congestionamento metade, e depois retoma seu crescimento a partir da.
136
(3) Quando h timeout, congwin volta para 1 MSS, e threshold cai pela metade
(2.1) Quando atinge o threshold o aumento de um segmento mximo para cada rajada em vez de um para cada segmento. 137
/* partida lenta acabou */ /* Congwin > threshold */ Until (event de perda) { cada w segmentos reconhecidos: Congwin++ } threshold = Congwin/2 Congwin = 1 faa partida lenta
138
Justeza do TCP
Meta de justeza: se N sesses TCP compartilham o mesmo enlace, cada uma deve ganhar 1/N da capacidade do enlace.
TCP conexo 1
Aumenta janela em 1 a cada RTT. Diminui janela por fator de 2 quando um evento de perda acontece.
TCP conexo 2
Captulo 3: Sumrio
Princpios por trs dos servios
da camada de transporte:
Multiplexao / desmultiplexao transferncia confivel de dados controle de fluxo controle de congestionamento Instanciao e implementao na Internet. UDP TCP
Prximo captulo:
Samos da borda da rede
140
141
Exerccio proposto:
Estudar a diferenas e semelhanas entre os
algoritmos TCP Reno e TCP Tahoe, entendendo como eles atuam com relao emisso de ACKs e recuperao de falhas.
142
143