TCP Conexão Fiabilidade Full Duplex Entrega ordenada Controlo de fluxo Pacotes longos.
Transmission Control Protocol TCP Controle de fluxo.
Transcript of Transmission Control Protocol TCP Controle de fluxo.
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].
11/04/23 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.
11/04/23 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).
11/04/23 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.
11/04/23 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.
11/04/23 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.
11/04/23 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.
11/04/23 Profº André Luiz Silva 20
Atrasos em uma rede
• De empacotamento
• De processamento
• De propagação
11/04/23 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.
11/04/23 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)
11/04/23 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.
11/04/23 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)
11/04/23 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.
11/04/23 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.