Escalonamento de janela TCP e análise PCAP de rendimento: janela de recepção, janela zero, janela cheia e depuração de transferência lenta
Como analisar o dimensionamento da janela TCP, receber limites de janela, janela zero, eventos de janela cheia, rendimento lento, produto de atraso de largura de banda e evidência de captura de pacotes.
A taxa de transferência lenta do TCP nem sempre é perda de pacotes. Pode ser pressão na janela de recepção, escalonamento de janela ausente, buffers de soquete pequenos, atraso de leitura de aplicativo, buffer de proxy, restrições de VPN ou incompatibilidade de produto com atraso de largura de banda. Os usuários procuram por "pcap de escalonamento de janela TCP", "janela TCP zero", "janela TCP cheia", "captura de pacote de download lento", "taxa de transferência de limitação de janela de recebimento" e "análise TCP de produto de atraso de largura de banda" quando os testes de velocidade são ruins, mas as retransmissões não explicam a desaceleração.
A cirurgia PCAP é útil porque os problemas de rendimento exigem a preservação das opções exatas de handshake, janelas anunciadas, tempo de ACK, rajadas de carga útil, pausas e atualizações de janela.
O que o dimensionamento de janela TCP faz
O campo da janela TCP é limitado em tamanho. O dimensionamento da janela permite janelas de recebimento maiores negociando um fator de escala durante a troca SYN. Se o dimensionamento da janela estiver ausente, desabilitado, removido por um dispositivo ou mal interpretado, a taxa de transferência poderá ser limitada em links de alta latência.
Isso é mais importante quando a latência é significativa:
- Transferências WAN.
- Links VPN.
- Redes via satélite ou celulares.
- Tráfego de nuvem entre regiões.
- Replicação de backup de longa distância.
- Cópia remota de arquivos.
- Grandes downloads HTTP.
Em uma LAN local, uma pequena janela de recebimento ainda pode parecer rápida. Através de um caminho de alta latência, isso pode se tornar o gargalo.
Produto de atraso de largura de banda
O produto de atraso de largura de banda descreve quantos dados devem estar em trânsito para preencher o caminho. Uma conexão com alta largura de banda e alto tempo de ida e volta precisa de uma janela maior.
Se a janela de recebimento for muito pequena, o remetente deverá parar e aguardar pelos ACKs em vez de manter o canal cheio.
Evidência de captura de pacotes:
- O remetente transmite até o limite da janela anunciada.
- O receptor ACKs lentamente ou anuncia uma janela pequena.
- A taxa de transferência forma rajadas e pausas.
- As retransmissões são baixas, mas a velocidade ainda é baixa.
- Os pacotes de atualização da janela aparecem depois que o aplicativo lê os dados.
Este é um gargalo do lado do recebimento ou do controle de fluxo, e não uma perda clássica.
Janela Zero
Janela TCP Zero significa que o receptor não anunciou nenhum buffer de recebimento disponível. O remetente não pode continuar enviando dados do aplicativo até que chegue uma atualização da janela.
Causas comuns:
- O aplicativo recebido não está lendo rápido o suficiente.
- O servidor está sobrecarregado.
- O cliente está pausado ou bloqueado no disco.
- Os buffers de proxy estão cheios.
- A pilha TLS sofre contrapressão.
- O cliente de banco de dados ou receptor de arquivo está lento.
- A captura de pacotes é feita perto do receptor e mostra a pressão local.
Janela Zero não é automaticamente uma falha de rede. Muitas vezes aponta para pressão de recursos do aplicativo ou do host.
Janela cheia
"Janela cheia" geralmente significa que o remetente preencheu a janela anunciada do destinatário. Isso pode acontecer antes da Janela Zero. O remetente está pronto para enviar mais, mas o controle de fluxo impede isso.
Procurar:
- Longas séries de dados até a borda da janela.
- Nenhuma perda de pacotes ao redor da barraca.
- ACKs que não avançam a janela o suficiente.
- O remetente faz uma pausa enquanto espera.
- Atualizações de janela seguidas por outra explosão.
Esse padrão é especialmente importante para casos de suporte de "upload lento" e "download lento".
Opção de escala ausente
O dimensionamento da janela deve ser negociado durante o handshake. Se um lado não incluir a opção de escala de janela em SYN ou SYN-ACK, a conexão não poderá usar o escalonamento posteriormente.
Evidência:
- Opções de SYN.
- Opções de SYN-ACK.
- Valor da escala da janela.
- Janela de recebimento inicial.
- Janela dimensionada eficaz.
- Comportamento do middlebox que elimina opções.
Se a captura começar após o handshake, o fator de escala poderá ser desconhecido. É por isso que os rastreamentos de suporte devem incluir o handshake TCP completo.
Capture questões de localização
A análise da janela depende de onde a captura foi feita. Uma captura perto do remetente pode mostrar um tempo diferente de uma captura perto do receptor. NAT, VPN, proxies e balanceadores de carga também podem dividir conexões.
Questões:
- O pcap foi capturado no cliente, servidor, firewall ou proxy?
- Esta é uma conexão TCP ponta a ponta ou duas conexões do lado do proxy?
- Os números de sequência são traduzidos?
- Os ACKs são atrasados pelo receptor ou pela rede?
- O proxy anuncia uma janela diferente do endpoint final?
A cirurgia PCAP ajuda a cortar e comparar conversas sem perder as opções de aperto de mão.
Evite conclusões falsas sobre perda de pacotes
Os painéis de rendimento geralmente culpam a perda de pacotes. Mas se as retransmissões forem raras e o remetente pausar repetidamente na janela de recepção, o verdadeiro gargalo será o controle de fluxo.
Sinais de que a perda não é a causa principal:
- Poucas retransmissões.
- Nenhuma tempestade ACK duplicada.
- Ciclos regulares de atualização de janelas.
- O remetente faz uma pausa exatamente na janela anunciada.
- A resposta da camada de aplicação demora para consumir dados.
O artigo deve ter como alvo pesquisas como “TCP lento sem perda de pacotes” porque esses usuários precisam de um caminho de diagnóstico diferente.
Lista de verificação de depuração
Use este fluxo de trabalho:
- Mantenha os pacotes SYN e SYN-ACK.
- Grave opções de escala de janela.
- Calcule a janela de recebimento efetiva.
- Identifique pacotes de janela zero e de atualização de janela.
- Identifique períodos de janela cheia.
- Meça o RTT.
- Compare bytes em trânsito com produto de atraso de largura de banda.
- Verifique a taxa de retransmissão separadamente.
- Anote o local de captura.
- Preserve o intervalo lento e o aperto de mão juntos.
Diagnóstico final
Problemas de dimensionamento de janela TCP e janela de recebimento criam transferências lentas sem perda óbvia de pacotes. A evidência está nas opções de handshake, janelas de recebimento anunciadas, eventos de janela zero, atualizações de janela, RTT e comportamento de pausa do remetente.
A cirurgia PCAP ajuda a manter os pacotes que comprovam se o gargalo é perda de rede, pressão de buffer de recebimento, escalonamento de janela ausente, comportamento de proxy ou um aplicativo que não está lendo rápido o suficiente.