Transmission Control Protocol TCP Controle de fluxo.

27
Transmission Control Protocol TCP Controle de fluxo

Transcript of Transmission Control Protocol TCP Controle de fluxo.

Page 1: Transmission Control Protocol TCP Controle de fluxo.

Transmission Control Protocol TCP

Controle de fluxo

Page 2: 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.

Page 3: Transmission Control Protocol TCP Controle de fluxo.

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.

Page 4: Transmission Control Protocol TCP Controle de fluxo.

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.

Page 5: Transmission Control Protocol TCP Controle de fluxo.
Page 6: Transmission Control Protocol TCP Controle de fluxo.

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.

Page 7: Transmission Control Protocol TCP Controle de fluxo.

Confirmações adiadas

• Retardar as confirmações (e atualizações de janelas) em 500 ms esperando algum dado que lhe dê carona.

Page 8: Transmission Control Protocol TCP Controle de fluxo.

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

Page 9: Transmission Control Protocol TCP Controle de fluxo.

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

Page 10: Transmission Control Protocol TCP Controle de fluxo.

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

Page 11: Transmission Control Protocol TCP Controle de fluxo.

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.

Page 12: Transmission Control Protocol TCP Controle de fluxo.

Síndrome do Janelamento inútil (2)

Page 13: Transmission Control Protocol TCP Controle de fluxo.

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.

Page 14: Transmission Control Protocol TCP Controle de fluxo.

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.

Page 15: Transmission Control Protocol TCP Controle de fluxo.

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.

Page 16: Transmission Control Protocol TCP Controle de fluxo.

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.

Page 17: Transmission Control Protocol TCP Controle de fluxo.

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

Page 18: Transmission Control Protocol TCP Controle de fluxo.

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

Page 19: Transmission Control Protocol TCP Controle de fluxo.

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

Page 20: Transmission Control Protocol TCP Controle de fluxo.

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

Page 21: Transmission Control Protocol TCP Controle de fluxo.

Atrasos em uma rede

• De empacotamento

• De processamento

• De propagação

11/04/23 Profº André Luiz Silva 21

Page 22: Transmission Control Protocol TCP Controle de fluxo.

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

Page 23: Transmission Control Protocol TCP Controle de fluxo.

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

Page 24: Transmission Control Protocol TCP Controle de fluxo.

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

Page 25: Transmission Control Protocol TCP Controle de fluxo.

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

Page 26: Transmission Control Protocol TCP Controle de fluxo.

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

Page 27: Transmission Control Protocol TCP Controle de fluxo.

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.