Um rastreamento de pacotes mostra TCP ZeroWindow. Antes de alterar um parâmetro do kernel, identifique a extremidade que anuncia o zero.

Essa extremidade descreve sua capacidade de recepção naquela conexão TCP. Ela não anuncia quanta largura de banda o proxy inteiro tem. Uma sonda de janela zero permite ao emissor descobrir se a capacidade anunciada mudou; as sondas sozinhas não provam perda de pacotes nem um proxy com defeito.

browser  <-- TCP A -->  proxy  <-- TCP B -->  website

São conversas TCP separadas. Suponha que o navegador pare de ler uma resposta grande e anuncie zero em A. O proxy pode acabar parando de esvaziar B à medida que seus próprios buffers enchem. Uma janela zero posterior em B pode ser consequência do cliente lento, não o problema original.

A situação inversa é possível durante um envio. Se a aplicação de destino parar de consumir dados, sua janela em B pode fechar. A pressão pode então viajar de volta para o cliente através dos buffers do proxy.

Coloque as observações em ordem

  1. Registre as extremidades da conexão e o sentido da transferência afetada.
  2. Identifique qual extremidade anunciou primeiro uma janela de recepção que encolhe ou é zero.
  3. Verifique se a aplicação dela estava lendo, parada em outra operação ou limitada por recursos.
  4. Compare o momento na outra conexão do proxy antes de atribuir a causa original.

Os rótulos de análise de janela do Wireshark são interpretações úteis da captura, não uma instrução para aumentar todo buffer de recepção. O escalonamento de janela também precisa ser interpretado à luz da negociação da conexão.

Testar outra extremidade de uma lista de proxies e ver a transferência se recuperar é uma evidência útil de que o caminho mudou. Por si só, porém, não prova que a implementação de TCP de um sistema operacional fosse defeituosa. Mantenha a explicação ligada ao processo receptor e à conexão onde a espera começou.

Artigos relacionados