Transmission Control Protocol
TCP
Controle de fluxo
Janela deslizante
• O protocolo básico usado pelo TCP é chamado Janela Deslizante.
• Quando envia um segmento, o TCP dispara um temporizador.
– O tempo em que ele aguardará por uma confirmação.
– Com que frequência os pacotes são retransmitidos.
• Quando o segmento chega, o receptor retorna um segmento com
número de confirmação igual ao valor do próximo byte que ele
espera receber.
– Esse segmento pode conter dados ou não de acordo com a
circunstância.
• Desvincula a confirmação da alocação de buffers pelo receptor.
Impasses
– Suponha que o receptor tenha uma janela de
4.096 bytes.
• Se o transmissor enviar um segmento de
2048 bytes e este for recebido de forma
correta, o receptor confirmará o segmento
e anunciará uma janela de 2048 bytes.
Impasses (2)
• Agora o transmissor envia outros 2048
bytes que são confirmados e a janela
passa a ter tamanho zero.
• O transmissor deve esperar até que o
processo da aplicação receptora retire
alguns bytes do buffer e anuncie o novo
tamanho para que o transmissor possa
enviar mais bytes.
Exceções
• Janela de tamanho zero.
– Duas exceções:
• Dados urgentes.
– Exemplo: Encerramento da conexão.
• Windows Probe.
– Transmissor envia um segmento de um byte para forçar
o receptor a anunciar novamente o tamanho da janela.
Confirmações adiadas
• Retardar as confirmações (e atualizações
de janelas) em 500 ms esperando algum
dado que lhe dê carona.
Algoritmo de Nagle
• Como sabemos, o comando telnet envia um único
byte de dados por pacote transmitido.
– Mais um cabeçalho TCP de 20 bytes.
– Mais um cabeçalho IP de 20 bytes.
• 41 bytes de dados.
• Normalmente isto não representa um problema
em redes pequenas, porém, em redes grandes há
uma tendência de congestionamento.
• Pacotes pequenos podem representar um
problema.
• Uma solução simples e elegante foi proposta em
Nagle [1984].
05/11/2015
André Luiz Silva
8
Conceito do Nagle
• Este algoritmo afirma que somente um único
pequeno segmento pode ser enviado até o
recebimento do ACK correspondente.
– Um segmento TCP pequeno é aquele que não
preenche o espaço inteiro do payload (campo de
dados).
• Nenhum próximo pequeno segmento pode ser
enviado até a chegada do ACK do primeiro
segmento enviado.
• Pequenas porções de dados são coletadas pelo
TCP e enviadas em um único segmento simples,
quando o ACK do primeiro segmento é recebido.
05/11/2015
André Luiz Silva
9
Desabilitando o Nagle
• Em certos casos, torna-se necessário
desabilitar o algoritmo Nagle.
– X windows.
• Pequenos movimentos do mouse.
– Teclas de funções.
• Vários comandos são enviados.
• Os soquetes API usam a
opção TCP_NODELAY para desabilitar o
algoritmo. Mogul e Minshall (2001).
05/11/2015
André Luiz Silva
10
Síndrome do Janelamento inútil
• Clark, 1982.
• Dados são passados para o transmissor
em grandes blocos, mas o receptor lê os
dados somente um byte por vez.
– Aplicação interativa.
• Inicialmente o buffer do receptor está
cheio.
– Janela zero e o transmissor sabe disso.
Síndrome do Janelamento inútil (2)
Síndrome do Janelamento inútil (3)
• Em seguida a aplicação lê um caractere.
– Receptor envia uma confirmação com janela
de um byte.
• Transmissor envia um byte e o buffer
enche outra vez.
– Receptor confirma e anuncia janela = 0.
• Situação se repete indefinidamente.
Solução
• A solução é evitar que o receptor envie
uma atualização de janela de um byte.
– O receptor passa a esperar:
• Um tamanho de janela de um segmento (conforme
foi acordado no início) para confirmar o segmento
recebido ou,
• Que o seu buffer tenha metade de sua capacidade
livre.
• O que for menor.
Conclusões
• O algoritmo de Nagle e a solução de Clark
são complementares.
• Nagle tenta resolver o problema da
aplicação enviar apenas um byte por vez.
• Clark tenta resolver o problema da
aplicação retirar apenas um byte por vez.
Segmentos fora de ordem
• Receptor armazena os segmentos até que
possam ser passados para a aplicação em
ordem.
• Se o receptor receber os segmentos 1, 2, 4, 5, 6
e 7, ele confirma até o último byte do segmento
2.
• Quando o transmissor sofrer um timeout, ele
retransmite o segmento 3.
• O receptor ao recebe-lo poderá confirmar até o
segmento 7.
Tráfego de dados
• Taxa média de dados
– Quantidade de bits enviados dividida pelo
intervalo de tempo decorrido durante a
transmissão x 100.
05/11/2015
Profº André Luiz Silva
17
Congestionamento
• O congestionamento pode ocorrer se a
carga (quantidade de pacotes enviados
para a rede) superar a capacidade da
rede (quantidade de pacotes que uma
rede consegue controlar).
• O congestionamento ocorre em sistemas
que envolvem algum tipo de espera.
05/11/2015
Profº André Luiz Silva
18
Soluções
• A solução é diminuir a taxa de
transmissão dos dados.
– A idéia é não incluir um novo pacote na rede
até que o anterior a tenha deixado.
• O TCP tenta alcançar esse objetivo
manipulando dinamicamente o tamanho
da janela.
05/11/2015
Profº André Luiz Silva
19
Detectando o congestionamento
• O primeiro passo é detectar o
congestionamento
– Pacotes perdidos devido a ruídos na rede.
– Esgotamento de buffers nos roteadores.
– Atualmente todos os algoritmos TCP que
atuam na Internet presumem que os timeouts
são provocados por congestionamentos.
05/11/2015
Profº André Luiz Silva
20
Atrasos em uma rede
• De empacotamento
• De processamento
• De propagação
05/11/2015
Profº André Luiz Silva
21
Mecanismos de controle de
congestionamento
• Fim-a-fim
– A camada de rede não oferece nenhum
suporte explícito à camada de transporte
– A perda de segmentos TCP é tomada como
uma indicação de congestionamento.
• Assistido pela rede
– A rede informa sobre o congestionamento
• Roteador envia ao remetente um pacote de
congestionamento (choke packet).
• Roteador marca um campo em um pacote
indicando o congestionamento.
05/11/2015
Profº André Luiz Silva
22
Controle de congestionamento em
malha aberta
• Evitam o congestionamento antes que ele
ocorra.
– Política de retransmissão
– Política de janelas
– Política de confirmação imposta pelo receptor
– Política de descarte de pacotes
– Política de admissão (qualidade de serviço)
05/11/2015
Profº André Luiz Silva
23
Reação do TCP à congestionamentos
• No momento do estabelecimento da conexão
(apresentação em três vias) o tamanho da
janela é escolhido.
• O receptor especifica o tamanho da janela de
acordo com o espaço livre em seu buffer.
• Se o transmissor se mantiver dentro do tamanho
da janela, não haverá problemas causados por
sobrecargas nos buffers do receptor.
05/11/2015
Profº André Luiz Silva
24
Causas dos congestionamentos
• Dois problemas potenciais:
– A capacidade da rede
– A capacidade do receptor
• Duas soluções:
• A janela de recepção (RcvWindow)
• A janela de congestionamento
(CongWin)
05/11/2015
Profº André Luiz Silva
25
Duração do temporizador
• RTT (Round Trip Time).
– Tempo de viagem de ida e volta do
pacote.
• RTO (Retransmission Timeout).
– Temporizador de retransmissão.
• SRTT (Smoothed Round-Trip Time).
– Melhor estimativa atual do tempo de ida e
volta ao destino.
05/11/2015
Profº André Luiz Silva
26
SRTT (Smoothed Round Trip Time)
• Estimativa relacionada ao RTT.
• SRTT = α SRTT + (1 – α) RTT.
• α é um fator de nivelamento que
determina a rapidez com que os valores
antigos são esquecidos.
– Ou seja, uma média ponderada que leva em
consideração principalmente os últimos
RTTs.
• Normalmente α = 7/8.
Download

06 Controle de fluxo