TCP SACK e DSACK in Wireshark: diagnosticare la perdita di pacchetti, l'opzione sack_perm e la ritrasmissione nei PCAP

Diagnostica le opzioni TCP SACK, DSACK e sack_perm nei PCAP Wireshark. Copre riconoscimenti selettivi, recupero della perdita di pacchetti, riordino, ACK duplicati e ritrasmissioni spurie.

sacco tcp, dsack, riconoscimento selettivo, sacco duplicato, perdita di pacchetti, reordering, analisi pcap

L'analisi della ritrasmissione TCP diventa molto più precisa quando è disponibile il riconoscimento selettivo. Gli utenti cercano "TCP SACK pcap", "DSACK Wireshark", "SACK duplicato", "ritrasmissione spuria", "riordino TCP rispetto alla perdita di pacchetti" e "acquisizione selettiva di pacchetti ACK" quando una traccia mostra ACK duplicati, ritrasmissioni e pacchetti fuori ordine ma la causa principale non è chiara.

La chirurgia PCAP è utile perché la prova SACK viene trasportata nelle opzioni TCP. Se si eliminano i pacchetti sbagliati, si perde l'handshake o si separano gli ACK dai dati, la diagnosi diventa più debole.

Cosa aggiunge SACK

Gli ACK TCP tradizionali riconoscono il byte successivo previsto. Se manca un segmento ma arrivano i segmenti successivi, il ricevitore può solo continuare a riconoscere il gap.

SACK lascia che il ricevitore dica: "Mi manca ancora questo intervallo precedente, ma ho ricevuto questi intervalli successivi".

Questo aiuta a distinguere:

  • Perdita effettiva di pacchetti.
  • Consegna fuori ordine.
  • Pacchetti duplicati.
  • Comportamento del ricevitore.
  • Comportamento di ripristino del mittente.

Il SACCO deve essere negoziato

La capacità SACK è negoziata in SYN e SYN-ACK. Se la cattura inizia dopo l'handshake, potresti non sapere se SACK è stato consentito.

Conserva sempre:

  • SYN.
  • SYN-ACK.
  • Opzione consentita SACCO.
  • Opzione scala finestra.
  • Opzione timestamp se presente.

Questo è il motivo per cui un "piccolo pcap attorno alla ritrasmissione" può essere insufficiente.

ACK duplicati con blocchi SACK

Gli ACK duplicati non significano tutti la stessa cosa. Un ACK duplicato con blocchi SACK può dire al mittente esattamente quali intervalli di byte sono arrivati ​​successivamente.

Prove da verificare:

  • Numero ACK.
  • SACCO bordo sinistro e bordo destro.
  • Blocchi SACK ripetuti.
  • Nuove informazioni SACCO.
  • Se i dati mancanti verranno visualizzati successivamente.
  • Se la ritrasmissione colma il divario.

Questo è molto più efficace del semplice conteggio degli ACK duplicati.

Perdita di pacchetti vs riordino

Se un segmento arriva in ritardo ma non viene perso, SACK potrebbe mostrare che i dati successivi sono già stati ricevuti. Il mittente potrebbe ritrasmettere e quindi potrebbe arrivare anche il pacchetto originale. Può sembrare disordinato.

Domande:

  • Il segmento originale è arrivato in ritardo?
  • La ritrasmissione è arrivata prima?
  • DSACK ha successivamente segnalato dati duplicati?
  • Esiste un percorso che riordina i pacchetti?
  • I burst attraversano più collegamenti, tunnel o percorsi con carico bilanciato?

PCAP Surgery può aiutare a isolare l'esatto intervallo di sequenze e confrontare l'ordine dei pacchetti.

Cosa significa DSACK

SACK duplicato può segnalare che sono stati ricevuti dati duplicati. Ciò è utile per identificare ritrasmissioni o riordini spuri.

Le prove DSACK possono suggerire:

  • Il mittente ha ritrasmesso inutilmente.
  • La rete ha consegnato i dati originali in ritardo.
  • Il punto di cattura ha visto duplicati.
  • Il ricevitore ha ricevuto sia i byte originali che quelli ritrasmessi.
  • Pacchetti duplicati Middlebox.

Questa è una conclusione diversa da "il pacchetto è stato perso".

Ritrasmissioni spurie

Una ritrasmissione non è sempre una prova di perdita. Può essere attivato da:

  • Reordering.
  • Comportamento ACK ritardato.
  • Cattura artefatti di scarico.
  • Timeout di ritrasmissione troppo breve.
  • Compressione ACK.
  • Tempi di virtualizzazione.
  • Asimmetria del percorso.

SACK e DSACK aiutano a dimostrare se i dati erano veramente mancanti o semplicemente in ritardo.

Il punto di cattura è importante

Se il pcap è unilaterale o preso dietro un NAT, l'interpretazione del SACK può essere complicata. Un pacchetto potrebbe essere assente dal punto di cattura ma presente presso il destinatario.

Pratica utile:

  • Confronta le acquisizioni lato mittente e lato destinatario.
  • Mantieni sincronizzati i timestamp.
  • Conserva i numeri di sequenza.
  • Evitare di eliminare i pacchetti solo ACK.
  • Annotare la posizione di scaricamento e acquisizione.

L'analisi SACK senza pacchetti ACK non è un'analisi.

Elenco di controllo del debug

Utilizza questo flusso di lavoro:

  1. Mantieni l'handshake TCP.
  2. Conferma SACCO consentito.
  3. Trova il primo ACK duplicato.
  4. Decodifica i blocchi SACK.
  5. Mappa gli intervalli SACK sui pacchetti di dati.
  6. Identificare gli intervalli di sequenze ritrasmesse.
  7. Controlla DSACK.
  8. Perdita separata dal riordino.
  9. Controlla il punto di acquisizione e il contesto di download.
  10. Conserva i pacchetti prima/dopo l'evento di ripristino.

Diagnosi finale

TCP SACK e DSACK forniscono prove precise della perdita di pacchetti, del riordino, della consegna duplicata e delle ritrasmissioni spurie. La chiave è preservare le opzioni di handshake, i pacchetti solo ACK, i blocchi SACK e gli intervalli di sequenze ritrasmessi.

PCAP Surgery aiuta a mantenere intatte tali prove in modo che l'analisi della perdita TCP possa andare oltre i conteggi ACK duplicati generici.