TCP SACK e DSACK no Wireshark: diagnosticar perda de pacotes, opção sack_perm e retransmissão em PCAPs

Diagnosticar opções TCP SACK, DSACK e sack_perm em Wireshark PCAPs. Abrange confirmações seletivas, recuperação de perda de pacotes, reordenação, ACKs duplicados e retransmissões espúrias.

saco tcp, dsack, confirmação seletiva, saco duplicado, perda de pacotes, reordering, análise pcap

A análise de retransmissão TCP fica muito mais precisa quando o reconhecimento seletivo está disponível. Os usuários procuram por "TCP SACK pcap", "DSACK Wireshark", "SACK duplicado", "retransmissão espúria", "reordenação TCP versus perda de pacotes" e "captura seletiva de pacotes ACK" quando um rastreamento mostra ACKs duplicados, retransmissões e pacotes fora de ordem, mas a causa raiz não é clara.

A cirurgia PCAP é útil porque a evidência SACK é transportada nas opções TCP. Se você eliminar os pacotes errados, perder o handshake ou separar os ACKs dos dados, o diagnóstico ficará mais fraco.

O que o SACK adiciona

Os ACKs TCP tradicionais reconhecem o próximo byte esperado. Se um segmento estiver faltando, mas chegarem segmentos posteriores, o receptor poderá apenas continuar reconhecendo a lacuna.

SACK permite que o receptor diga: "Ainda estou sentindo falta desta faixa anterior, mas recebi essas faixas posteriores."

Isso ajuda a distinguir:

  • Perda real de pacotes.
  • Entrega fora de ordem.
  • Pacotes duplicados.
  • Comportamento do receptor.
  • Comportamento de recuperação do remetente.

SACK deve ser negociado

A capacidade SACK é negociada no SYN e no SYN-ACK. Se a captura começar após o handshake, talvez você não saiba se o SACK foi permitido.

Sempre preserve:

  • SYN.
  • SYN-ACK.
  • Opção permitida SACK.
  • Opção de escala de janela.
  • Opção de carimbo de data/hora, se presente.

É por isso que um “pequeno pcap em torno da retransmissão” pode ser insuficiente.

ACKs duplicados com blocos SACK

ACKs duplicados não significam todos a mesma coisa. Um ACK duplicado com blocos SACK pode informar ao remetente exatamente quais intervalos de bytes posteriores chegaram.

Evidências para inspecionar:

  • Número ACK.
  • SACK borda esquerda e borda direita.
  • Blocos SACK repetidos.
  • Novas informações do SACK.
  • Se os dados ausentes aparecerão posteriormente.
  • Se a retransmissão preenche a lacuna.

Isto é muito mais forte do que apenas contar ACKs duplicados.

Perda de pacotes versus reordenamento

Se um segmento chegar atrasado, mas não for perdido, o SACK poderá mostrar que os dados posteriores já foram recebidos. O remetente pode retransmitir e então o pacote original também pode chegar. Isso pode parecer confuso.

Questões:

  • O segmento original chegou atrasado?
  • A retransmissão chegou primeiro?
  • Posteriormente, o DSACK relatou dados duplicados?
  • Existe um caminho que reordena os pacotes?
  • As rajadas estão cruzando vários links, túneis ou caminhos com balanceamento de carga?

A cirurgia PCAP pode ajudar a isolar o intervalo exato da sequência e comparar a ordem dos pacotes.

O que significa DSACK

Duplicate SACK pode relatar que dados duplicados foram recebidos. Isso é útil para identificar retransmissões ou reordenações falsas.

A evidência DSACK pode sugerir:

  • Remetente retransmitido desnecessariamente.
  • A rede entregou os dados originais com atraso.
  • O ponto de captura viu duplicatas.
  • O receptor obteve bytes originais e retransmitidos.
  • Pacotes duplicados do Middlebox.

Essa é uma conclusão diferente de “o pacote foi perdido”.

Retransmissões espúrias

Uma retransmissão nem sempre é prova de perda. Pode ser desencadeado por:

  • Reordering.
  • Comportamento ACK atrasado.
  • Capture artefatos de descarregamento.
  • Tempo limite de retransmissão muito pequeno.
  • Compressão ACK.
  • Tempo de virtualização.
  • Assimetria de caminho.

SACK e DSACK ajudam a provar se os dados estavam realmente faltando ou apenas atrasados.

O ponto de captura é importante

Se o pcap for unilateral ou atrás de um NAT, a interpretação do SACK pode ser complicada. Um pacote pode estar ausente do seu ponto de captura, mas presente no receptor.

Prática útil:

  • Compare as capturas do lado do remetente e do lado do receptor.
  • Mantenha os carimbos de data/hora sincronizados.
  • Preservar números de sequência.
  • Evite cortar pacotes somente ACK.
  • Anote o local de descarregamento e captura.

A análise SACK sem pacotes ACK não é análise.

Lista de verificação de depuração

Use este fluxo de trabalho:

  1. Mantenha o handshake TCP.
  2. Confirme o SACK permitido.
  3. Encontre o primeiro ACK duplicado.
  4. Decodifique blocos SACK.
  5. Mapeie intervalos de SACK para pacotes de dados.
  6. Identifique intervalos de sequência retransmitidos.
  7. Verifique se há DSACK.
  8. Separe a perda do reordenamento.
  9. Verifique o ponto de captura e o contexto de descarregamento.
  10. Preservar pacotes antes/depois em torno do evento de recuperação.

Diagnóstico final

TCP SACK e DSACK fornecem evidências precisas de perda de pacotes, reordenamento, entrega duplicada e retransmissões falsas. A chave é preservar as opções de handshake, pacotes somente ACK, blocos SACK e intervalos de sequência retransmitidos.

A cirurgia PCAP ajuda a manter essas evidências intactas para que a análise de perda de TCP possa ir além das contagens genéricas de ACK duplicados.