Estudo de TCP / IP observa controle de congestionamento de 9 tcp

fundo

TCP/IPOs protocolos são a base da era da Internet atual. Todos os produtos de rede ou linguagens de desenvolvimento e estruturas de desenvolvimento são baseados em tcp/ipprotocolos. Portanto, aprender bem tcp/ipserá de grande ajuda para os indivíduos na indústria da Internet no futuro.

Mas este é um curso teórico básico, assim como o curso de sistema operacional, depois de aprendido pode não ter muito impacto em você e não vai permitir que você imediatamente tenha as habilidades para colocar em prática. Mas, precisamente porque este é um curso teórico básico, todas as tecnologias da Internet são baseadas nele. Portanto, se você entender o tcp/ipacordo, ele terá um efeito positivo no seu desenvolvimento futuro ou na solução de problemas no trabalho.

controle de congestionamento tcp

O controle de fluxo mencionado no artigo anterior ocorreu entre C e S sem considerar o impacto do ambiente de rede pública.Se a qualidade da rede pública atual for particularmente ruim e a perda de pacotes for susceptível de ocorrer, então o remetente deve prestar atenção a isso. E esse é exatamente o problema com o qual o controle de congestionamento precisa lidar.

Janela de congestionamento: evita que o remetente envie muito rápido, tornando a rede muito atrasada para processar, resultando em congestionamento da rede! !

Para controle de congestionamento, tcpcada conexão precisa manter 2um estado central:

  • Janela de congestionamento
  • Limite de início lento

Os algoritmos envolvidos são os seguintes:

  • Início lento
  • Prevenção de congestionamento
  • Retransmissão rápida
  • Resposta rápida

A seguir, veremos esses estados e algoritmos um por um.


status

Janela de congestionamento (cwnd)

A janela de congestionamento se refere à quantidade de dados que você ainda pode transmitir. Existem algumas diferenças com a janela de recepção:

  • A janela de recebimento (rwnd) é o limite dado pela extremidade receptora
  • A janela de congestionamento (cwnd) é o limite do próprio remetente e o padrão é 1 segmento

Nota:

  • Ambos são iguais, eles são usados ​​para limitar o tamanho da janela de envio
  • 发送窗口大小 = min(rwnd, cwnd). Pegue o mínimo dos dois, e o controle de congestionamento é usado para controlar as cwndmudanças
Limite de início lento (ssthresh)

O tamanho padrão é 65536byte. Quando ocorre um tempo limite, o limite é definido como 发送窗口的一般, cwnddefinido como 1e reiniciado o algoritmo de início lento!


algoritmo

Início lento

Quando você começou a transferir dados, não sabia se a rede pública atual estava estável ou congestionada. Se você for muito agressivo e enviar pacotes muito rapidamente, poderá ocorrer uma perda maluca de pacotes, causando um desastre de rede em avalanche. Ao mesmo tempo, é um desperdício de recursos da rede pública.

Portanto, o controle de congestionamento deve primeiro adotar um algoritmo conservador para se adaptar lentamente a toda a rede.Este algoritmo é chamado de algoritmo de início lento. O processo é como se segue:

  1. Primeiro, três apertos de mão, rwndo tamanho anunciado por ambas as partes
  2. Ambas as partes inicializam seu próprio cwndtamanho
  3. No início do período de transmissão, cada vez que o remetente recebe um ACK, o cwndtamanho aumenta 1. Em outras palavras, cada vez que um passa RTT, o cwndtamanho da janela dobra. Se a janela inicial for 10, depois que a primeira rodada 10de mensagens for transmitida e o remetente receber 10uma ACKconfirmação, o cwndtamanho se torna 20; a segunda rodada passa 40a ser ; a terceira rodada 80...

cwndO tamanho não pode crescer indefinidamente. Quando cwndatinge o limite ( cwnd > ssthresh), como controlar cwndo tamanho da janela? Isso é o que precisa ser feito para evitar congestionamentos.

Prevenção de congestionamento

Acontece que cada vez que uma ACKconfirmação é recebida , o cwndtamanho aumenta 1. Agora, o limite é atingido, cwndvocê só pode adicionar um pouco de: 1/cwnd. Em outras palavras, antes que um tamanho RTTreduzido cwnddobrasse. Agora um RTTabaixo, o cwndtamanho aumenta1

O diagrama de prevenção de congestionamento é o seguinte, onde o AIMDmétodo é adotado
Insira a descrição da imagem aqui

AIMD(A adição aumenta, a multiplicação diminui)

  • Multiplicando a redução
    Seja na fase de início lento ou na fase de controle de congestionamento, enquanto ocorrer o tempo limite da rede, ele será ssthreshdefinido para a cwndmetade e, em seguida cwnd, para 1um segmento. Em seguida, inicie o algoritmo de início lento
  • Aumento aditivo
    Quando a rede freqüentemente atinge o tempo limite, ele ssthreshcairá rapidamente. Para reduzir o número de pacotes injetados na rede, o aumento aditivo significa que, após a implementação da prevenção de congestionamento, a janela de congestionamento é aumentada lentamente para evitar a ocorrência prematura na rede congestionamento

Nota:

  • A quantidade de pacotes de dados enviados na fase de início lento aumenta exponencialmente e a fase de prevenção de congestionamento aumenta linearmente
  • Os algoritmos de prevenção de congestionamento não podem evitar completamente o congestionamento da rede. Ao controlar o tamanho da janela de congestionamento, a rede não está sujeita ao congestionamento.
Retransmissão rápida

tcpSe ocorrer perda de pacote durante a transmissão, isto é, quando a extremidade receptora descobrir que o segmento de dados não chega em ordem, o método de processamento da extremidade receptora é enviar repetidamente o pacote de dados anterior ACK. Por exemplo, se o 4pacote anterior tiver sido recebido e o primeiro 5pacote for perdido, mesmo que 6、7alcance o terminal de recebimento neste momento , o terminal de recebimento sempre retornará o 4primeiro pacote ACK. Quando o remetente recebe >=3uma cópia, ACKele percebe que o pacote está perdido e, portanto, é retransmitido imediatamente e não precisa esperar uma única RTOvez para retransmitir.

Esta é a retransmissão rápida, que resolve o problema de se a retransmissão é necessária .

Retransmissão seletiva

Com base na situação acima, devemos retransmitir o primeiro 5pacote ou o 5、6、7segundo pacote?

Agora 6、7que a bolsa chegou, o tcpestilista não é burro, ela foi passada, por que você ainda passa? Basta registrar quais dos pacotes a seguir chegaram e quais não chegaram e retransmiti-los de acordo.

Após receber a mensagem do remetente, o destinatário responde a uma ACKmensagem, depois nas opções do cabeçalho da mensagem, pode-se adicionar SACKeste atributo por left edgee right edgeinformar o remetente que recebeu os dados em qual intervalo. Portanto, mesmo se o 5primeiro pacote for perdido, quando o 6、7primeiro pacote for recebido, a extremidade receptora dirá à extremidade emissora que esses dois pacotes chegaram e o 5pacote será retransmitido se o primeiro pacote não tiver chegado.

Este processo é denominado retransmissão seletiva ( SACK), que resolve o problema da retransmissão .

Recuperação rápida

O remetente recebeu 3esta duplicata ACKe encontrou perda de pacotes, sentiu que a rede atual já estava um pouco congestionada e entraria na fase de recuperação rápida. do seguinte modo:

  1. ssthreshO valor é reduzido à cwndmetade
  2. cwndValor igual assthresh
  3. cwndAumento linear (aumento aditivo)

Resumindo

Este é o oitavo artigo da série tcp / ip. Acima são os conceitos e algoritmos no controle de congestionamento. Haverá explicações mais aprofundadas e mais detalhadas sobre a cena de uso posteriormente, esta série de artigos será muito longa.
Vamos começar o próximo artigo.

Acho que você gosta

Origin blog.csdn.net/Free_time_/article/details/107444617
Recomendado
Clasificación