unesp - IBILCE - SJRP Curso de Redes de Computadores...
-
Upload
truongkhue -
Category
Documents
-
view
216 -
download
0
Transcript of unesp - IBILCE - SJRP Curso de Redes de Computadores...
-
unesp - IBILCE - SJRP
1
Curso de
Redes de Computadores
2010
Adriano Mauro [email protected]
Captulo 3
Camada de Transporte
-
unesp - IBILCE - SJRP
2
Captulo 3: Camada de Transporte
Metas do captulo:
Compreender os
princpios dos servios da
camada de transporte:
Multiplexao/
desmultiplexao.
Transferncia confivel
de dados.
Controle de fluxo.
Controle de
congestionamento.
Instanciao e
implementao na
Internet.
O que veremos:
Servios da camada de transporte.
Multiplexao/desmultiplexao.
Transporte sem conexo: UDP.
Princpios de transferncia confivel de
dados.
Transporte orientado a conexo: TCP
Transferncia confivel
Controle de fluxo
Gerenciamento de conexes
Princpios de controle de
congestionamento.
Controle de congestionamento em TCP.
-
unesp - IBILCE - SJRP
3
Comparao entre as camadas
Camada Transporte processos
Camada de rede hosts
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.
Esta distino sutil, mas MUITO importante!
-
unesp - IBILCE - SJRP
4
Camada de Transporte X Camada de Rede (1)
Exemplo:
10 irmos numa casa em So Paulo, SP.
e 10 irmos em outra casa em Manaus, AM.
Os de SP so primos daqueles em Boa Vista.
Escrevem cartas entre SP e AM semanalmente.
Em So Paulo:
Joo recolhe as cartas, e as entrega ao correio.
Em Manaus:
Maria recolhe as cartas, e as entrega ao correio.
Tambm recebem e fazem a distribuio local das cartas
que chegam.
-
unesp - IBILCE - SJRP
5
Camada de Transporte X Camada de Rede (2)
Hosts (end systems) = Casas.
Processos = pessoas que trocam mensagens.
Mensagens da aplicao = cartas em envelopes.
Protocolo da camada de rede:
Servio postal (correio).
Protocolo da Camada de Transporte:
Joo (de um lado) e Maria (do outro).
-
unesp - IBILCE - SJRP
6
Servios e protocolos de TRANSPORTE (1)
Prov comunicao lgicaentre processos de aplicao
executando em hosts
diferentes.
Protocolos de transporte
rodam em sistemas finais.
Camada de rede: dados
transferidos entre hosts.
Camada de transporte:
dados transferidos entre
processos.
aplicaotransporte
redeenlacefsica
redeenlacefsica
aplicaotransporte
redeenlacefsica
redeenlacefsica
redeenlacefsica
redeenlacefsica
redeenlacefsica
-
unesp - IBILCE - SJRP
7
Servios e protocolos de TRANSPORTE (2)
Do ponto de vista da APLICAO a camada de
transporte permite enxergar os sistemas como se eles
estivessem fisicamente conectados.
Mesmo que existam vrios roteadores, links e
outros equipamentos no caminho.
A Camada de Aplicao no tem que se preocupar com a
infra-estrutura de interligao, usada para carregar as
mensagens.
-
unesp - IBILCE - SJRP
8
Protocolos da camada de transporte (1)
Como j foi dito:
Protocolos de transporte
so implementados nos
sistemas das pontas (end
systems), e no nos
roteadores intermedirios.
TRANSPORTE: Camada
4, superior camada de
rede.
aplicaotransporte
redeenlacefsica
redeenlacefsica
aplicaotransporte
redeenlacefsica
redeenlacefsica
redeenlacefsica
redeenlacefsica
redeenlacefsica
-
unesp - IBILCE - SJRP
9
Protocolos da camada de transporte (2)
Dois Servios de transporte na Internet:
Entrega confivel, ordenada, ponto
a ponto: TCP.
Controle Congestionamento.
Controle de fluxo.
Estabelecimento de conexo
(setup).
Entrega no confivel, (melhor
esforo), no ordenada, ponto a
ponto ou multiponto: UDP.
aplicaotransporte
redeenlacefsica
redeenlacefsica
aplicaotransporte
redeenlacefsica
redeenlacefsica
redeenlacefsica
redeenlacefsica
redeenlacefsica
-
unesp - IBILCE - SJRP
10
Multiplexao/desmultiplexao (1)
MULTIPLEXAO: Juntar dados de mltiplos
processos de aplicaes, encapsulando dados com
cabealho (usado depois para demultiplexao).
aplicaotransporte
rede
MP2
aplicaotransporte
rede
receptor
Ht
Hn segmento
segmento Maplicao
transporterede
P1M
M M
P3 P4
cabealhode segmento
dados da camada de aplicao
-
unesp - IBILCE - SJRP
11
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.
aplicaotransporte
rede
MP2
aplicaotransporte
rede
receptor
Ht
Hn segmento
segmento Maplicao
transporterede
P1M
M M
P3 P4
cabealhode segmento
dados da camada de aplicao
-
unesp - IBILCE - SJRP
12
aplicaotransporte
rede
MP2
aplicaotransporte
rede
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.
receptor
Ht
Hn segmento
segmento Maplicao
transporterede
P1M
M M
P3 P4
cabealhode segmento
dados da camada de aplicao
-
unesp - IBILCE - SJRP
13
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.
porta emissor porta receptor
32 bits
dados daaplicao
(mensagem)
outros campos
do cabealho
formato genrico de segmento
TCP/UDP
-
unesp - IBILCE - SJRP
14
estaoA
Multiplexao/desmultiplexao: exemplos
servidor B
porta orig.: xporta dest: 23
porta orig:23porta dest: x
uso de portas:
aplicao simples de telnet
Cliente WWWestao A
servidor WWW B
Web clienthost C
IP orig: CIP dest: B
porta orig: xporta dest: 80
IP orig : CIP dest: B
porta orig: yporta dest: 80
Uso de portas : servidor WWW
IP orig: AIP dest: B
porta orig: xporta dest: 80
-
unesp - IBILCE - SJRP
15
UDP: User Datagram Protocol [RFC 768]
Protocolo de transporte da 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.
Por qu existe um UDP?
Elimina estabelecimento de
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.
-
unesp - IBILCE - SJRP
16
Mais sobre UDP
Muito utilizado para aplicaes de
meios contnuos (voz, vdeo)
So tolerantes a perdas.
So sensveis taxa de
transmisso.
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!
porta origem porta dest.
32 bits
Dados de aplicao
(mensagem)
Formato de um sgmento UDP
comprimento checksum
Comprimento embytes do
segmento UDP,incluindo cabealho
-
unesp - IBILCE - SJRP
17
Checksum UDP
Emissor:
Trata contedo do segmento
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...
Receptor:
Computa checksum do segmento recebido
Verifica se checksumcomputado zero:
NO - erro detectado.
SIM - nenhum erro detectado. Mas ainda pode ter erros?(Veremos mais adiante .)
Meta: detectar falha no segmento transmitido.
-
unesp - IBILCE - SJRP
18
Exemplo de clculo do checksum (1)
Considere 3 palavras de 16 bits sendo transmitidas:
0110011001100110
0101010101010101
0000111100001111
A soma das duas primeiras palavras :
0110011001100110
0101010101010101
1011101110111011
Adicionando a terceira palavra, a soma acima fica:
1011101110111011
0000111100001111
1100101011001010
Os complementos de 1 so obtidos convertendo
todos os 0s para 1s , e todos os 1s para 0s.
Ver RFC-1071 !
-
unesp - IBILCE - SJRP
19
Lembrete 1: mtodo PolinomialModo Polinomial ( vai um)(Este o mtodo realmente usado pelo UDP. Em caso de dvida,consulte a seo 3.3.2 do livro texto d o curso ComputerNetworking: A Top-Down Approach Featuring the Internet - James F.Kurose & Keith W. Ross).
Lembrar que:
0 + 0 = 0 = 00 (vai zero)1 + 0 = 1 = 01 (vai zero)
0 + 1 = 1 = 01 (vai zero)0 + 1 = 1 = 01 (vai zero)
1 + 1 = 2 = 10 (vai 1)1 + 1 + 1 = 3 = 11 (vai 1)
01 11 01 1 0 1 0 1
+ 0 1 1 1 0 0 0 0
1 1 0 0 0 1 0 1
11 1 0 01 01 1 0 1+ 1 1 0 0 1 1 0 0
1 0 0 1 0 0 0 1
Complemento de 1 = 0 1 1 0 1 1 1 0
-
unesp - IBILCE - SJRP
Lembrete 2: carry
20
-
unesp - IBILCE - SJRP
21
Exemplo de clculo do checksum (2)
Assim o complemento de 1's da soma 1100101011001010
0011010100110101
Este valor se torna o checksum.
No receptor, todas as palavras de 16 bits so somadas,
incluindo o checksum.
Se no foram introduzidos erros no pacote, a soma no
receptor certamente dever resultar em 1111111111111111.
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 ??
-
unesp - IBILCE - SJRP
22
Exemplo de clculo do checksum (2)
Assim o complemento de 1's da soma 1100101011001010
0011010100110101
Este valor se torna o checksum.
-
unesp - IBILCE - SJRP
Pseudo Header (1)
UDP (assim como o TCP) usa um pseudo
header no clculo do checksum, com
informaes do IP (16 bytes).
Checksum usa os headers (pseudo header e header
UDP), e os dados do UDP.
Comprimento do UDP pode ser um nmero
mpar de bytes.
Algoritmo do checksum soma palavras de 16 bits.
Soluo: adicionar pad de zeros , no final, se
necessrio.
Pad no transmitido.
23
-
unesp - IBILCE - SJRP
Pseudo Header (2)
24
Pseudo header
IP (usado pelo UDP)
(16 bytes)
Header UDP
(8 bytes)
Violao da independncia das camadas
-
unesp - IBILCE - SJRP
25
Princpios de Transferncia confivel de dados
Reliable Data Transfer
(RDT)
-
unesp - IBILCE - SJRP
26
Princpios de Transferncia confivel de dados
Reliable Data Transfer (RDT)
Importante nas camadas de transporte, enlace
No topo da lista dos 10 tpicos mais importantes em redes!
Caractersticas do canal no confivel determinam a complexidade
de um protocolo de transferncia confivel de dados (RDT).
-
unesp - IBILCE - SJRP
27
Transferncia confivel de dados (RDT): como comear
emissor receptor
rdt_rcv(): chamada quando pacote
chega no lado receptor do canal.
deliver_data(): chamada por
rdt para entregar dados para
camada superior.
udt_send(): chamada por ambos
os lados para troca de pacotes de
controle. UDT representa um
unreliable data transfer.
rdt_send( ): chamada da camada superior, (Ex:
pela aplicao). Passa dados para entregar
camada superior receptora
-
unesp - IBILCE - SJRP
28
Transferncia confivel de dados (rdt): como comear
Iremos:
Desenvolver passo-a-passo os lados remetente e receptor do
protocolo confivel RDT.
Vamos Considerar apenas fluxo unidirecional de dados.
Mas a informao de controle flui em ambos sentidos!
Usar mquinas de estados finitos (FSM - Finite State Machine)
para especificar remetente e receptor.
estado1
estado2
evento causando transio de estadosaes tomadas na transio de estado
ESTADO: quando o
sistema est num
estado, o prximo
estado determinado
unicamente pelo prximo
evento.
eventoaes
-
unesp - IBILCE - SJRP
29
Rdt1.0: transferncia confivel usando um canal 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.
Evento que causou
a transio
Aes tomadas
quando ocorre um
evento
-
unesp - IBILCE - SJRP
30
rdt2.0 - Modelo um pouco mais realista:
Bits num pacote podem ser corrompidos.
Falhas podem ocorrer nos componentes
fsicos da rede:
Por exemplo, quando um pacote transmitido,
propagado ou bufferizado.
Entretanto, continuamos supondo que
todos os pacotes transmitidos so
recebidos na ordem em que so
enviados.
Ainda que bits possam estar corrompidos.
-
unesp - IBILCE - SJRP
31
Rdt2.0: canal com erros de bits
Canal subjacente pode inverter bits no pacote
O checksum UDP pode detectar erros de bits.
A questo : como recuperar dos erros?
Confirmao (ACK): receptor avisa explicitamente
ao remetente que pacote chegou bem.
Confirmao negativa (NAK): receptor avisa
explicitamente ao remetente que pacote tinha erros.
Emissor retransmite pacote ao receber um NAK
( Lembrar de cenrios humanos usando ACKs, NAKs )
-
unesp - IBILCE - SJRP
32
Mensagens de controle
Permitem o receptor informar ao emissor o
que foi recebido corretamente.
E o que foi recebido com erro, exigindo
retransmisso.
Protocolos baseados em retransmisso so
chamados de Protocolos ARQ:
Automatic Repeat reQuest.
-
unesp - IBILCE - SJRP
33
Novas capacidades em rdt2.0
Trs capacidades adicionais so exigidas em
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.
Estes novos mecanismos esto presentes na
proposta de protocolo rdt2.0
-
unesp - IBILCE - SJRP
34
rdt2.0: especificao da FSM - EmissorPossui 2 estados: Em um estado
aguarda dados da camada superior.
Em outro estado, aguarda ACK ou
NACK do receptor Aguarda dados da
aplicao
Aguarda ACK ou
NACK do receptor
Se recebe um ACK confirmando que o
dado atual foi recebido, retorna ao
estado de aguardar um pacote da
camada superior
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)
1
2
3
-
unesp - IBILCE - SJRP
35
rdt2.0: especificao da FSM - Receptor
Possui apenas 1 estado: ao receber
um pacote, responde com ACK ou
NACK, dependendo se o pacote est
ou no corrompido.
Pacote recebido apresenta
erro. Emite um NACK, e
retorna ao estado de
aguardar.
Pacote recebido est
ntegro. Emite um ACK,
confirmando e retorna ao
estado de aguardar.
-
unesp - IBILCE - SJRP
36
rdt2.0: em ao (sem erros)
FSM do remetente FSM do receptor
-
unesp - IBILCE - SJRP
37
rdt2.0: em ao (cenrio de erro)
FSM do remetente FSM do receptor
-
unesp - IBILCE - SJRP
Mas o RDT2.0 tem uma falha
fatal...
38
-
unesp - IBILCE - SJRP
rdt2.0 tem uma falha fatal!
O que acontece se ACK ou NACK com erro ?
Emissor no sabe o que aconteceu no receptor!
No se pode apenas retransmitir: h possibilidade de
pacotes duplicados.
O que fazer?
Remetente usa ACKs/NAKs p/ ACK/NAK do
receptor?
E se perder ACK/NAK do remetente?
Retransmitir?
Pode causar retransmisso de pacote recebido certo!
39
-
unesp - IBILCE - SJRP
40
rdt2.0 tem uma falha fatal!
O que acontece se ACK ou NACK com erro ?
Remetente no sabe o que aconteceu no receptor!
No se pode apenas retransmitir: h possibilidade de pacotes duplicados.
O que fazer?
Remetente usa ACKs/NAKs p/ ACK/NAK do receptor?
E se perder ACK/NAK do remetente?
Retransmitir?
Mas pode causar retransmisso de pacote recebido certo!
Lidando com duplicao:
Emissor inclui nmero de
seqncia para cada
pacote.
Emissor retransmite
pacote atual se ACK/NAK
recebido com erro.
Receptor descarta pacote
duplicado.
Remetente envia um pacote,e ento aguarda resposta do receptor.
Stop and wait
-
unesp - IBILCE - SJRP
41
rdt2.1: EMISSOR, trata ACK/NAKs com erro
Insere No. de
seqncia 0 no pacote
Deve verificar
se ACK/NAK
recebido tinha
erro
Aguarda a chegada
do No. Seq. correto
1
2
3
4
-
unesp - IBILCE - SJRP
42
rdt2.1: receptor, trata ACK/NAKs com erroDeve checar se pacote
recebido duplicado.
O estado indica se No. de
seqncia esperado 0 ou 1Pacote corrompido
No. Seq. errado
-
unesp - IBILCE - SJRP
43
rdt2.1: discusso (1)
Emissor:
Insere No. de sequncia no pacote.
Bastam dois Nos. de sequncia (0 ou 1).
Deve verificar se ACK/NAK recebido tem erro.
Duplicou o No. de estados
Estado deve lembrar se o pacote atual tem
No. de sequncia 0 ou 1.
-
unesp - IBILCE - SJRP
44
rdt2.1: discusso (2)
Receptor:
Deve checar se pacote recebido duplicado
Estado indica se No. de seqncia esperado
0 ou 1.
Receptor no tem como saber se ltimo
ACK/NAK foi recebido bem pelo emissor.
-
unesp - IBILCE - SJRP
45
rdt2.2: um protocolo sem NAKs
Mesma funcionalidade que
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 doEMISSOR
!
-
unesp - IBILCE - SJRP
46
rdt3.0: canais com erros e perdas (1)
Nova suposio: alm de corromper dados, o
canal tambm pode perder pacotes (dados ou
ACKs).
Como lidar com perdas?
Ou seja, como detectar perda de pacotes ?
O que fazer quando pacotes so perdidos?
Checksum, No. de sequncia, ACKs, e
retransmisses podem ajudar, mas no sero
suficientes.
-
unesp - IBILCE - SJRP
47
rdt3.0: canais com erros e perdas (2)
Abordagem: remetente aguarda um determinado
tempo pelo ACK em trnsito.
Exige uso de temporizadores (timers).
Timeout esgotamento do timer.
Retransmite se nenhum ACK recebido neste tempo.
Se pacote (ou ACK) est apenas atrasado (no perdido):
A retransmisso ser duplicada.
Mas uso de nmero de seqncia resolve este problema.
Receptor deve avisar o nmero de seqncia do
pacote sendo confirmado.
-
unesp - IBILCE - SJRP
48
rdt3.0: remetente
Esgotou o timer:
reenvia o anterior
Inicia o timer e aguarda
o ack
-
unesp - IBILCE - SJRP
49
rdt3.0 em ao
-
unesp - IBILCE - SJRP
50
rdt3.0 em ao
-
unesp - IBILCE - SJRP
51
Protocolos dutados (pipelined)
-
unesp - IBILCE - SJRP
Problema com protocolo stop & wait
Em longas distncias: retardo fim-a-fim grande.
Pacote em trnsito, ainda no confirmado.
52
-
unesp - IBILCE - SJRP
53
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, :
Ttransmisso
=8 kbits/pacote
10**9 b/seg= 8 microseg
Desempenho =8 microseg
30.016 mseg= 0,027 %
Pacote de 1KB a cada 30 mseg vazo de
33kByte/seg num enlace de 1 Gbps !
Protocolo limita uso dos recursos fsicos!
Tempo de
ida e volta
-
unesp - IBILCE - SJRP
54
Protocolos dutados (pipelined)
Dutagem (pipelining): remetente admite mltiplos
pacotes em trnsito, ainda no reconhecidos.
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).
-
unesp - IBILCE - SJRP
55
GBN - Go Back N (1)
Tambm conhecido como Volta-N.
Emissor: pode enviar mltiplos pacotes,
sem aguardar ACK do receptor.
Entretanto:
No pode haver mais do que um valor
mximo de N pacotes no confirmados
no canal.
-
unesp - IBILCE - SJRP
56
GBN - Go Back N (2)
[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.
send_base = Seq. # do pacote mais antigo no confirmado no duto.
nextseqnum = Menor Seq. # no usado (Seq.# do prximo a enviar).
-
unesp - IBILCE - SJRP
57
GBN - Go Back N (3) No Emissor: O intervalo de nmeros de seqncia para
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
de nmeros de seqncia: sliding-window protocol
= Janela deslizante
Pergunta: por que limitar o nmero de pacotes no confirmados ?
-
unesp - IBILCE - SJRP
58
GBN: FSM estendida do emissor
Chamada superior:
verifica se a janela est
cheia. Se no est,
forma o pacote e envia.
Se est cheia, recusa.
Recebe um ACK(n):
confirma que todos
pacotes at, e inclusive,
o No. de seqncia n
foram recebidos no
receptor: ACK
cumulativo pode
receber ACKs
duplicados.
Temporizador
Timeout(n): retransmite pacote n e
todos os pacotes com No. de
seqncia maiores na janela.
-
unesp - IBILCE - SJRP
59
GBN: FSM estendida do emissor
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
-
unesp - IBILCE - SJRP
60
GBN: FSM estendida do emissor
Se for recebido um ACK, e ainda
houver pacotes enviados mas ainda
no confirmados, o timer ser
reiniciado.
Se no houver nenhum pacote
pendente (aguardando confirmao),
ento o timer desligado. Temporizador: um cronmetro para o pacote mais antigo
transmitido, mas que ainda no foi
reconhecido
-
unesp - IBILCE - SJRP
61
GBN: FSM estendida do receptor
Receptor muito simples:
Usa apenas ACK: sempre envia ACK para pacote recebido o.k. com o maior nmero de seqncia em ordem.
Pode gerar ACKs duplicados
S precisa se lembrar do expectedseqnum
Pacote fora de ordem: Descarta (no armazena) receptor no usa buffers !
Manda ACK de pacote com maior No. de seqncia em ordem.
expectedseqnum =
expectedseqnum + 1
-
unesp - IBILCE - SJRP
62
GBN
em ao
Janela = 4.
Envia de 0 a 3 e
o 2 se perde
Confirma os
pacotes 0 e 1
Pacote 2 se
perdeu. Descarta o
3 e pede o 2
(confirma o 1).
Descarta o 4 e o
5, e continua
pedindo o 2.
Timeout do ack de 2.
Retransmite o 2.
-
unesp - IBILCE - SJRP
63
GBN no o TCP
GBN incorpora quase todas as tcnicas que sero
encontradas nos componentes do TCP (visto mais adiante):
Nmero de seqncia;
Checksum;
ACK cumulativos;
Timeouts;
Operao de retransmisso
Entretanto existem diferenas entre o TCP e o GBN.
Por exemplo: muitas implementaes TCP fazem buffering
de segmentos recebidos corretamente, mas fora de ordem.
TCP um hbrido de GBN e Repetio Seletiva (a seguir).
-
unesp - IBILCE - SJRP
64
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.
medida em que a probabilidade de erro
do canal cresce, o duto fica lotado de
retransmisses desnecessrias.
-
unesp - IBILCE - SJRP
65
Repetio Seletiva
-
unesp - IBILCE - SJRP
66
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.
Emissor apenas re-envia pacotes para os quais o ACK no foi recebido.
Timer de EMISSOR para cada pacote sem ACK.
Janela do emissor N nmeros de seqncia consecutivos.
Outra vez limita Nos. de seqncia de pacotes enviados, mas ainda no reconhecidos.
-
unesp - IBILCE - SJRP
67
Repetio seletiva: janelas de remetente e receptor
O emissor j ter
recebido confirmao
para alguns pacotes
da janela.
-
unesp - IBILCE - SJRP
68
Repetio seletiva no emissor
Dados recebidos de acima. O emissor verifica o prximo nmero
de seqncia disponvel para o pacote.
Se o nmero de seqncia estiver dentro da janela do emissor, os
dados so empacotados e enviados; caso contrrio so bufferizados ou devolvidos camada superior para transmisso
posterior.
Timeout. Temporizadores so usados para proteger contra perda
de pacotes.
Somente um nico pacote ser transmitido no caso de timeout.
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.
-
unesp - IBILCE - SJRP
69
Repetio seletiva no receptor (1)
Pacote com nmero de seqncia no intervalo [ rcv_base, rcv_base+N-1]
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.
Pacote com nmero de seqncia recebido dentro de
[ 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.
-
unesp - IBILCE - SJRP
70
Repetio seletiva no receptor (2)
Intervalo dentro da janela
[ rcv_base, rcv_base+N-1]
[ rcv_base-N, rcv_base-1 ]:
pacotes j confirmados anteriormente
Pacote com nmero de seqncia recebido dentro de
[ 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.
-
unesp - IBILCE - SJRP
71
Repetio seletiva - resumo
Dados de cima:
Se prximo No. de seqncia na
janela, envia pacote.
Timeout(n):
Reenvia pacote n.
Reinicia o temporizador.
ACK(n) em [sendbase,sendbase+N]:
Marca pacote n como recebido.
Se N for menor pacote no
confirmado, avana base da
janela ao prximo No. de
seqncia no confirmado.
Pacote n dentro de
[rcvbase, rcvbase+N-1]:Envia ACK(n).
Fora de ordem: buffering
Em ordem: entrega (tb. entrega
pacotes em ordem do buffer),
avana janela p/ prximo pacote
ainda no recebido.
Pacote n em [rcvbase-N,rcvbase-1]
ACK(n), mesmo que j tenha
enviado antes.
Seno:Ignora.
receptoremissor
-
unesp - IBILCE - SJRP
72
Retransmisso seletiva em ao
-
unesp - IBILCE - SJRP
73
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.
-
unesp - IBILCE - SJRP
Repetio
seletiva: dilema
74
-
unesp - IBILCE - SJRP
75
Repetio
seletiva: dilema
Exemplo:
Nos. de seqncia : 0, 1, 2 e 3.
Tamanho de janela = 3.
Receptor no v diferena entre
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 funcionar.
-
unesp - IBILCE - SJRP
76
TCP: Viso geral (1) RFCs: 793, 1122, 1323, 2018, 2581
Peer-to-Peer (P2P): nico emissor transmite para um nico receptor.
Fornece fluxo de bytes ordenados e confivel: No estruturado em mensagens.
dutado (pipelined): Tamanho da janela ajustado por controle de fluxo e
congestionamento do TCP.
Usa Buffers de envio e recepo, e variveis de
estado para cada conexo.
socket
door
TCP
send buffer
TCP
receive buffer
socket
door
segment
application
writes data
application
reads data
-
unesp - IBILCE - SJRP
77
TCP: Viso geral (2) RFCs: 793, 1122, 1323, 2018, 2581
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.
1500 bytes, 536 bytes
ou 512 bytes
-
unesp - IBILCE - SJRP
78
TCP: estrutura do segmento
No. porta origem No. porta dest
32 bits
dados da
aplicao
(tamanho varivel)
nmero de seqncia
nmero de confirmao (ACK)
janela receptor
ptr dados urg.checksum
FSRPAUtam.cab.
semuso
Opes (tamanho varivel)
URG: dados urgentes
(pouco usado)
ACK: No. ACK vlido
PSH = push: fora
envio de dados
imediatamente.
RST, SYN, FIN:
gesto de conexo
(comandos de
estabelecimento,
liberao)
No. bytes que o
receptor quer
aceitar: Controle
de Fluxo.
Contagem
de dados
por bytes
(no segmentos!)
checksum
Internet
(como UDP)
Tamanho do header
em palavras de 32 bits
20 bytes fixos
no header
-
unesp - IBILCE - SJRP
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.
-
unesp - IBILCE - SJRP
80
Gerenciamento de conexes no
TCP
-
unesp - IBILCE - SJRP
81
TCP: Gerenciamento de Conexes (1)
Lembrete: Remetente e receptor TCP estabelecem conexo antesde trocar segmentos de dados.
Conexo full duplex : fluxo de dados vai nos dois 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
Servidor: aquele chamado pelo cliente.
Passive Open.
-
unesp - IBILCE - SJRP
82
TCP: Iniciando Conexo (1)
Inicializao em 3 passos (3-way handshake):
(1): Cliente envia segmento de controle SYN do TCP ao servidor.
Bit SYN do TCP ajustado como 1. (SYN=1; ACK=0)
Cliente especifica No. de Seqncia inicial.
(2): Servidor recebe SYN, responde com segmento de controle SYN-ACK
Ajusta SYN=1 E ACK=1 (SYN=1; ACK=1)
Confirma SYN recebido.
Aloca buffers, especifica No. seq. inicial de servidor para o
receptor.
(3): Cliente recebe SYN=1; ACK=1, e responde com segmento de controle ACK e comea a enviar dados. (SYN=0; ACK=1)
-
unesp - IBILCE - SJRP
83
TCP: Iniciando Conexo (2)
(SYN=1; ACK=0)
(SYN=1; ACK=1)
(SYN=0; ACK=1)
Cliente confirma o
No. seq. do server,
e comea a enviar
dados seguindo
seu No. de seq.
Servidor confirma o
No. seq. do cliente,
e envia seu prprio
No. de seq.
-
unesp - IBILCE - SJRP
Estabelecimento da Conexo
Origem
A
Destino
BSYN 1415531521:1415531521 (0)
SYN 1823083482: 1823083482 (0)
ACK 1415531522
ACK 1823083522
-
unesp - IBILCE - SJRP
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.
-
unesp - IBILCE - SJRP
86
TCP: Fechando uma Conexo (1)
Encerrando uma conexo:
Passo 1: cliente envia segmento de controle FIN ao
servidor.
Passo 2: servidor recebe FIN, responde com ACK.
Tambm pede encerramento
da conexo, enviando FIN.
( Segue.... )
cliente servidor
fechar
fechar
fechada
esp
era
te
mpo
riza
da
-
unesp - IBILCE - SJRP
87
TCP: Fechando uma Conexo (2)
Passo 3: cliente recebe FIN, responde com ACK.
Entre em espera
temporizada -
responder com ACK a
FINs recebidos
Step 4: servidor, recebe ACK. Conexo encerrada.
cliente servidor
fechando
fechando
fechada
esp
era
tem
pori
zada
fechada
-
unesp - IBILCE - SJRP
Encerramento da Conexo
Origem
A
Destino
BFIN 1415531522:1415531522 (0) ACK 1823083522
ACK 1415531523
ACK 1823083523
FIN 1823083522: 1823083522 (0)
ACK 1415531523
-
unesp - IBILCE - SJRP
89
TCP: Ciclo de vida do SERVIDOR
Ciclo de vida do servidor TCP
-
unesp - IBILCE - SJRP
90
TCP: Ciclo de vida do CLIENTE
Ciclo de vida do cliente TCP
-
unesp - IBILCE - SJRP
MSS e numerao de segmentos
91
-
unesp - IBILCE - SJRP
MSS (Maximum Segment Size)
O MSS representa o tamanho do maior bloco de
dados que o TCP pretende enviar num nico
segmento para o destino.
Para a maioria dos computadores o MSS
ajustado automaticamente pelo sistema
operacional.
Default (obrigatrio): 536 bytes.
(20 bytes IP, 20 bytes TCP, para um total de 576 bytes).
Ethernet padro: 1460 bytes.
(20 bytes IP, 20 bytes TCP, para um total de 1500 bytes)
-
unesp - IBILCE - SJRP
Quanto maior o MSS, melhor
Em geral, quanto maior o MSS melhor o
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.
-
unesp - IBILCE - SJRP
94
MSS e numerao de segmentos
Aplicao quer enviar 500.000 bytes de dados,
Em TCP com MSS = 1.000 bytes
Transmisso TCP: 500 partes de 1.000 bytes
1o. segmento ltimo segmento
O No. de sequncia do emissor incrementado pelo No. de bytes enviados
-
unesp - IBILCE - SJRP
95
TCP: Nmeros de seqncia e ACKs
Nos. de sequncia:
nmero do primeiro
byte de dados do
segmento.
ACKs: No. de
sequncia do prximo
segmento esperado
(em bytes).
ACK cumulativo.
P: Como receptor trata segmentos fora da ordem?
Especificao do TCP
omissa - deixado ao
implementador.
Maioria das vezes:
buferiza.
Host AHost B
UsurioteclaC
A reconhecechegadado Cecoado
B reconhecechegada de C, ecoa
C de volta
tempo
cenrio simples de telnet
-
unesp - IBILCE - SJRP
96
TCP: transferncia confivel de dados no
TRANSMISSOR (1/2)
waitfor
event
waitfor
event
event: data received
from application above
event: timer timeout for
segment with seq# y
event: ACK received,
with ACK# y
create, send segment
retransmit segment
ACK processing
Passagem dos dados da aplicao ao
TCP, e transmisso de um segmento.
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.
Chegada de um segmento
de reconhecimento (ACK)
vindo do receptor.
-
unesp - IBILCE - SJRP
97
TCP: transferncia confivel de dados no
TRANSMISSOR (2/2) processamento do ack
waitfor
event
waitfor
event
event: data received
from application above
event: timer timeout for
segment with seq # y
event: ACK received,
with ACK # y
create, send segment
retransmit segment
ACK processing
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 re-
reconhea 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.
-
unesp - IBILCE - SJRP
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 re-
reconhea um segmento para qual o emissor j
tenha recebido ACK anteriormente.
Veremos em seguida como isso usado pelo
TCP...
98
-
unesp - IBILCE - SJRP
99
Retransmisso rpida (1/2)
Quando um receptor recebe um segmento com
um nmero de seqncia maior do que
prximo nmero de seqncia esperado, ele
detecta uma falha no fluxo de dados
Ou seja: detecta um segmento faltante.
Uma vez que o TCP no usa NACK, o receptor
no pode emitir uma negativa de ACK de volta ao
emissor. 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.
-
unesp - IBILCE - SJRP
Retransmisso rpida (2/2)
Se o emissor receber trs ACKs
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
-
unesp - IBILCE - SJRP
Entendendo os 3 ACKs duplicados
101
ACK xxxxxxx523
ACK xxxxxxx523
ACK xxxxxxx523
ACK xxxxxxx523Ain
da n
o
ocorr
eu t
imeout
1o. ACK duplicado
2o. ACK duplicado
3o. ACK duplicado
Tim
er
A chegada de 4 ACKs idnticos antes de vencer o timer
daquele ACK, resulta na retransmisso rpida.
-
unesp - IBILCE - SJRP
RFC 2581 - TCP Congestion Control
102
" 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
-
unesp - IBILCE - SJRP
103
Gerao de ACKs no TCP [RFCs 1122, 2581]
Evento Ao do receptor TCP
Chegada do segmento em ordem, com nmero de seqncia previsto: todos os dados at o No. de seq. previsto j
reconhecidos; nenhum buraco nos dados recebidos.
Promove ACK atrasado Espera at 500ms
pela chegada de um outro segmento em
ordem. Se o prximo segmento no chegar
em ordem neste intervalo, emita um ACK do
anterior.
Chegada de um segmento em ordem com nmero de seqncia previsto. Um outro segmento em ordem aguardando transmisso de ACK. Nenhum buraco nos dados recebidos.
Emita imediatamente um nico ACK cumulativo. Confirmando ambos os segmentos em-ordem.
Chegada do segmento fora de ordem com nmero de seqncia mais alto do que esperado detectada falha na sequncia.
Emita imediatamente o ACK duplicado, indicando o nmero de seqncia do prximo segmento esperado.
Chegada de segmento que completa parcial ou completamente uma falha nos dados recebidos.
Emita imediatamente o ACK, contanto que o segmento comece no fim mais baixo da falha.
-
unesp - IBILCE - SJRP
104
TCP: cenrios de retransmisso (1)
Estao A
perdatem
pori
za
o
tempo cenrio doACK perdido
Estao B
X
-
unesp - IBILCE - SJRP
105
TCP: cenrios de retransmisso (2)
Timeout antes
da chegada do
ack do primeiro
segmento. Re-
envia
Recebe o ACK
do primeiro e host
A acha que do
re-enviadoEste ACK do re-
envio do 1o.
Segmento
desconsiderado
O ACK do
segundo
segmento chega
on-time
-
unesp - IBILCE - SJRP
106
TCP: cenrios de retransmisso (3)
Indica que B
recebeu tudo
certo, at o 100
(aguarda o 120)
Recebe a indicao
que B recebeu tudo
certo, at o 100, e no
re-envia nada.
O ACK do
primeiro
segmento se
perde
Envia dois
segmentos de
uma vez e
aguarda
-
unesp - IBILCE - SJRP
107
Controle de FLUXO no TCP
-
unesp - IBILCE - SJRP
108
TCP: Controle de Fluxo (1)
buffering pelo receptor
RcvBuffer = tamanho do Buffer de recepo.
RcvWindow = informa ao emissor quantidade de espao vazio no
buffer do receptor.
Este valor mantido como varivel em cada emissor (lembrar que Full Duplex).
Para emissor no esgotar os buffers do receptor
transmitindo demais, ou muito rapidamente.
-
unesp - IBILCE - SJRP
109
TCP: Controle de Fluxo (2)RECEPTOR: explicitamente avisa o emissor da quantidade
de espao livre disponvel (que muda dinamicamente).
Campo RcvWindow (janela) no segmento TCP .
EMISSOR: mantm a quantidade de dados transmitidos, porm ainda no reconhecidos, MENOR que o valor mais recente de RcvWindow.
(isso vale para cada lado da conexo)
-
unesp - IBILCE - SJRP
110
Troca de informaes sobre controle de fluxo TCP
(0) 4 Kb = Tamanho
do buffer do receptor.
(1) Aplicao
envia 2 Kb
(2) Receptor
confirma e avisa que
pode enviar mais 2
Kb.
(4) Receptor
confirma e pede
para aguardar
(buffer cheio) win=0(...) Emissor
aguarda...
(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)
(6) Receptor agora
pode enviar at 2
Kb; envia o 1 Kb que
falta.
(3) Aplicao
envia 3 Kb, mas
emissor TCP s
pode enviar 2 Kb
-
unesp - IBILCE - SJRP
111
Tempo de resposta (RTT) e ajustes da
temporizao de timeout
Retransmisso adaptativa
-
unesp - IBILCE - SJRP
112
TCP: Tempo de Resposta (RTT) e timeout
P: Como escolher valor
do temporizador de
timeout do TCP?
Deve ser maior que o RTT.
Note que o RTT pode
variar.
Muito curto: temporizao
prematura.
Retransmisses so
desnecessrias.
Muito longo: reao
demorada perda de
segmentos.
P: Como estimar RTT?
RTTamostra: tempo medido entre
a transmisso do segmento e o
recebimento do ACK
correspondente.
Ignora retransmisses, e
segmentos com ACKs
cumulativos
RTTamostra varia.
Necessita ponderador de RTT.
Usa vrias medies recentes,
no apenas o valor corrente (RTTamostra)
Atribuir mais peso s amostras recentes do que s amostras antigas.
-
unesp - IBILCE - SJRP
113
Mas, no to simples
Ainda h a questo entre o RTT e o timeout.
Necessrio ajustar o timeout com o RTT.
No algo simples.
O TCP utilizava normalmente timeout = B*RTT.
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).
Mas, um valor constante era inflexvel, e no atendia os casos em que a variao era maior.
-
unesp - IBILCE - SJRP
Algoritmo original
114
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
-
unesp - IBILCE - SJRP
115
Proposta de Van Jacobson (1)
1988: Van Jacobson props tornar Bproporcional 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 |
-
unesp - IBILCE - SJRP
116
Proposta de Van Jacobson (2)
A maioria das implementaes atuais usa este algoritmo
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.
Exerccio:
Pesquisar e estudar algoritmo Jacobson/Karels.
-
unesp - IBILCE - SJRP
117
Se voc pensa que acabou (1)
Temporizador de retransmisso no o nico usado pelo TCP.
Na verdade so 4 timers.
Retransmisso (j visto)
Persistncia
Keep-alive
Time-wait
-
unesp - IBILCE - SJRP
118
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)
-
unesp - IBILCE - SJRP
119
Temporizador keep alive
Temporizador keep alive (mantenha vivo):
Para verificar conexes inativas por muito tempo.
Um lado verifica se o outro ainda est l.
-
unesp - IBILCE - SJRP
120
Temporizador Time Wait
Temporizador time wait (tempo de espera):
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.
-
unesp - IBILCE - SJRP
121
Controle de Congestionamento
-
unesp - IBILCE - SJRP
122
Princpios de Controle de Congestionamento (1)
Congestionamento:
Informalmente: trata-se de fontes enviando muitos
dados mais rapidamente do que a rede pode
suportar.
Diferente de controle de fluxo.
Retransmisso de pacotes trata o sintoma do
congestionamento da rede (que a perda de
segmentos), mas no trata a causa do
congestionamento:
Origens tentando enviar dados numa taxa muito alta.
-
unesp - IBILCE - SJRP
Princpios de Controle de Congestionamento (2)
Como se manifesta:
Perda (drop) de pacotes Esgotamento de buffers em roteadores.
Retransmisso de pacotes. devido aos drops.
Longos atrasos Grande enfileiramento nos buffers dos roteadores.
123
-
unesp - IBILCE - SJRP
124
Soluo para o Congestionamento
Verdadeira soluo para o congestionamento
diminuir a taxa de transmisso de dados.
No inserir novos pacotes na rede, at que os antigos
tenham sado.
Ou seja, at que os antigos tenham sido entregues.
TCP tenta alcanar esse objetivo.
Manipulando dinamicamente o
tamanho da janela.
-
unesp - IBILCE - SJRP
125
O que o TCP faz para evitar
congestionamentos:
Quando uma conexo estabelecida, escolhe um
tamanho de janela adequado.
Veremos mais adiante como esta escolha.
O receptor pode especificar uma janela a partir do
tamanho de seu buffer.
Indica o quanto ele est disposto a receber.
Se o transmissor se mantiver dentro do tamanho da
janela, no haver problemas causados pela
sobrecarga dos buffers no receptor.
Mas eles ainda podem ocorrer devido a
congestionamentos internos na rede.
-
unesp - IBILCE - SJRP
126
TCP: Controle de Congestionamento (1)
Deve-se entender que existem dois
problemas potenciais:
Capacidade do receptor.
Capacidade da rede.
Deve-se tratar cada um em separado.
Para isso, cada transmissor mantm duas janelas:
Janela fornecida pelo receptor.
RcvWin
Janela de congestionamento:
CongWin
-
unesp - IBILCE - SJRP
127
TCP: Controle de Congestionamento (2)
Cada uma identifica o nmero de bytes que o
transmissor pode enviar
pode enviar o valor mnimo das duas janelas.
Ento, a quantidade mxima de dados no
confirmados que um host pode enviar em uma
conexo:
LastByteSent - LastByteAcked min{CongWin, RcvWin}
-
unesp - IBILCE - SJRP
128
TCP: Controle de Congestionamento
Controle fim a fim (sem apoio da rede).
Taxa de transmisso limitada pela tamanho da janela
de congestionamento Congwin:
Congwin
A janela efetiva o mnimo do que o
transmissor e o receptor consideram vivel.
Veremos exemplo a seguir....
-
unesp - IBILCE - SJRP
129
TCP: Controle de Congestionamento
A janela efetiva o mnimo do que o
transmissor e o receptor consideram vivel.
Se o receptor disser: envie 8KB, mas...
se o transmissor souber que qualquer rajada com
mais de 4 KB poder congestionar a rede,
ele enviar apenas 4 KB.
Se o receptor disser: envie 8KB, e o
transmissor souber que rajadas de at 32 KB
passam pela rede sem problemas, ele enviar os
8 KB solicitados.
-
unesp - IBILCE - SJRP
130
Como funciona o controle:
Duas fases
1. Partida lenta.
2. Preveno de
congestionamento.
Variveis importantes:
Congwin
threshold:
define limiar entre fases
de partida lenta e controle
de congestionamento.
Tambm chamado de
patamar.
Tudo explicado a seguir...
Sondagem para banda a ser usada:
Transmitir o mais rpido possvel sem perder pacotes. (ou seja, Congwin ajustado ao mximo possvel)
Aumentar Congwin at perder pacotes isso causa congestionamento.
Quando houver perdas: diminuir Congwin.
Depois volta a sondagem (aumentando) novamente.
-
unesp - IBILCE - SJRP
131
Partida lenta e sondagem do congestionamento (1)
Conexo estabelecida transmissor ajusta
a janela de congestionamento igual ao MSS
em uso.
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...)
-
unesp - IBILCE - SJRP
132
Partida lenta e sondagem do congestionamento (2)
medida que cada um desses segmentos for
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.
Na prtica, cada rajada confirmada duplica a janela
de congestionamento atual: crescimento exponencial.
-
unesp - IBILCE - SJRP
133
TCP: Partida lenta
A cada RTT ocorre um aumento exponencialno tamanho da janela. Partida no to lenta!
Algoritmo de Partida Lenta
inicializa: Congwin = 1
for (cada segmento c/ ACK)
Congwin++
until (evento de perda OR
CongWin > threshold)
Estao A
RT
T
Estao B
tempo
Veremos o que isso a seguir...
-
unesp - IBILCE - SJRP
Quando parar o crescimento?
Mas, quando parar o crescimento ?
Obviamente este crescimento ter de ser
interrompido em algum momento, devido a
congestionamento da rede ou capacidade do
receptor.
Para isso usado o parmetro de threshold.
Vejamos como...
134
-
unesp - IBILCE - SJRP
135
Threshold
Algoritmo de controle de congestionamento
TCP utiliza um terceiro parmetro limitante:
o threshold.
Tambm chamado de limiar ou patamar.
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.
-
unesp - IBILCE - SJRP
136
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.
-
unesp - IBILCE - SJRP
137
TCP: Evitar Congestionamento (1)
(3) Quando h
timeout, congwin
volta para 1 MSS, e
threshold cai pela
metade
timeout
(2) Quando atinge
threshold, o
crescimento passa a
ser linear
(fase de preveno de
congestionamento)
(2.1) Quando atinge o threshold o aumento de um segmento mximo para
cada rajada em vez de um para cada segmento.
(1) Fase de
partida lenta
-
unesp - IBILCE - SJRP
138
TCP: Evitar Congestionamento (2)
Evitar congestionamento
/* partida lenta acabou */
/* Congwin > threshold */
Until (event de perda) {
cada w segmentos
reconhecidos:
Congwin++
}
threshold = Congwin/2
Congwin = 1
faa partida lenta
timeout
-
unesp - IBILCE - SJRP
139
Justeza do TCP
Meta de justeza: se N sesses
TCP compartilham o
mesmo enlace, cada uma
deve ganhar 1/N da
capacidade do enlace.
Desconsiderando a
fase de partida lenta:
TCP usa AADM:
Aumento Aditivo,
Decremento
Multiplicativo
Aumenta janela
em 1 a cada RTT.
Diminui janela por
fator de 2 quando
um evento de
perda acontece.
AADM / Additive-Increase, Multiplicative-Decrease (AIMD)
TCP conexo 1
Roteadorgargalo
capacidade R
TCP conexo 2
-
unesp - IBILCE - SJRP
140
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
(camadas de aplicao e
transporte)
Entramos no ncleoda
rede.
-
unesp - IBILCE - SJRP
141
-
unesp - IBILCE - SJRP
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
-
unesp - IBILCE - SJRP
143