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.
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:
- Mantenha o handshake TCP.
- Confirme o SACK permitido.
- Encontre o primeiro ACK duplicado.
- Decodifique blocos SACK.
- Mapeie intervalos de SACK para pacotes de dados.
- Identifique intervalos de sequência retransmitidos.
- Verifique se há DSACK.
- Separe a perda do reordenamento.
- Verifique o ponto de captura e o contexto de descarregamento.
- 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.