Como exatamente o TCP reage a um tempo limite de retransmissão?

7

insira a descrição da imagem aquiOi! Alguém poderia me explicar o que acontece no intervalo? Então o tamanho da janela cai completamente. Eu pensei que, com o tempo limite, acontecesse o mesmo que em 3 ACKs duplicados; metade do cwnd e entrar em aumento aditivo. Existe alguma diferença na forma como esses indicadores de congestionamento são tratados?

MSunesson
fonte

Respostas:

11

O que acontece no tempo limite é realmente bastante claro a partir do desenho ... O tamanho da janela de congestionamento volta ao seu valor original de 1 e o início lento é executado novamente.

As especificidades de como uma pilha TCP manipulará eventos de congestionamento dependem de qual variante você está usando. Este desenho parece um exemplo do algoritmo TCP Reno .

Ao ver três ACKs duplicados, o TCP Reno conclui que há congestionamento, mas a rede ainda está funcionando desde que alguns segmentos foram aceitos. No caso de um tempo limite, a situação é pior: a rede parece completamente sem resposta. Na verdade, o fato de receberem duplicados acks antes que um timer de retransmissão expire significa que os segmentos ainda estão sendo recebidos pelo outro lado, mesmo que alguns possam ter sido perdidos (ou reordenados).

Portanto, no caso de três acks duplicados, a janela de congestionamento é cortada ao meio e aumentada linearmente. Isso é conhecido como recuperação rápida e seu objetivo é evitar a espera de tempos limite de retransmissão.

Quando ocorre um tempo limite de retransmissão, a reação é mais drástica. O TCP Reno inicia novamente com inicialização lenta em uma janela de congestionamento do tamanho 1 e um limite de inicialização lenta de metade do valor da janela de congestionamento quando ocorreu o tempo limite. Quando o limite é atingido, o aumento torna-se linear novamente (aumento aditivo).

O TCP Tahoe não incluía recuperação rápida e reagiria da mesma maneira nos dois casos, redefinindo a janela de congestionamento para seu valor inicial e executando o início lento. A recuperação rápida do TCP Reno basicamente ignora o início lento, definindo imediatamente a janela de congestionamento para o valor limite e iniciando o aumento linear.

Observe que existem muito mais variantes e as implementações reais podem ser mais complexas. Também não é fácil observar esses algoritmos no trabalho, porque outros mecanismos TCP podem interferir.

Não sei se o que você tinha em mente (usando recuperação rápida nas duas situações) existe como um algoritmo conhecido e implementado para evitar congestionamentos. Provavelmente foi testado e descartado quando o Reno foi implementado. Sinta-se à vontade para pesquisar alguns artigos científicos nesta área.

Gerben
fonte