TCP SACK y DSACK en Wireshark: diagnosticar pérdida de paquetes, opción sack_perm y retransmisión en PCAP
Diagnosticar las opciones TCP SACK, DSACK y sack_perm en los PCAP de Wireshark. Cubre reconocimientos selectivos, recuperación de pérdida de paquetes, reordenamiento, ACK duplicados y retransmisiones espurias.
El análisis de retransmisión TCP se vuelve mucho más preciso cuando el reconocimiento selectivo está disponible. Los usuarios buscan "TCP SACK pcap", "DSACK Wireshark", "SACK duplicado", "retransmisión espuria", "reordenamiento de TCP frente a pérdida de paquetes" y "captura selectiva de paquetes ACK" cuando un seguimiento muestra ACK duplicados, retransmisiones y paquetes desordenados, pero la causa raíz no está clara.
La cirugía PCAP es útil porque la evidencia SACK se incluye en las opciones de TCP. Si elimina los paquetes incorrectos, pierde el protocolo de enlace o separa los ACK de los datos, el diagnóstico se debilita.
Lo que agrega SACK
Los ACK de TCP tradicionales reconocen el siguiente byte esperado. Si falta un segmento pero llegan segmentos posteriores, el receptor solo puede seguir confirmando el espacio.
SACK permite que el receptor diga: "Todavía me falta este rango anterior, pero he recibido estos rangos posteriores".
Esto ayuda a distinguir:
- Pérdida real de paquetes.
- Entrega fuera de orden.
- Paquetes duplicados.
- Comportamiento del receptor.
- Comportamiento de recuperación del remitente.
SACK debe ser negociado
La capacidad SACK se negocia en SYN y SYN-ACK. Si la captura comienza después del protocolo de enlace, es posible que no sepa si se permitió SACK.
Conservar siempre:
- SYN.
- SYN-ACK.
- Opción permitida SACO.
- Opción de escala de ventana.
- Opción de marca de tiempo si está presente.
Por este motivo, una "pequeña pcap alrededor de la retransmisión" puede resultar insuficiente.
ACK duplicados con bloques SACK
Los ACK duplicados no significan todos lo mismo. Un ACK duplicado con bloques SACK puede indicarle al remitente exactamente qué rangos de bytes posteriores llegaron.
Evidencia a inspeccionar:
- Número de confirmación.
- SACO borde izquierdo y borde derecho.
- Bloques SACK repetidos.
- Nueva información de SACO.
- Si los datos faltantes aparecen más adelante.
- Si la retransmisión llena el vacío.
Esto es mucho más eficaz que simplemente contar los ACK duplicados.
Pérdida de paquetes versus reordenamiento
Si un segmento llega tarde pero no se pierde, SACK puede mostrar que ya se recibieron datos posteriores. El remitente puede retransmitir y luego también puede llegar el paquete original. Eso puede parecer complicado.
Preguntas:
- ¿El segmento original llegó tarde?
- ¿Llegó primero la retransmisión?
- ¿DSACK informó más tarde datos duplicados?
- ¿Existe una ruta que reordene los paquetes?
- ¿Las ráfagas cruzan múltiples enlaces, túneles o rutas con equilibrio de carga?
La cirugía PCAP puede ayudar a aislar el rango de secuencia exacto y comparar el orden de los paquetes.
Qué significa DSACK
Duplicate SACK puede informar que se recibieron datos duplicados. Esto es útil para identificar retransmisiones o reordenaciones espurias.
La evidencia DSACK puede sugerir:
- El remitente retransmitió innecesariamente.
- La red entregó los datos originales tarde.
- El punto de captura vio duplicados.
- El receptor obtuvo tanto los bytes originales como los retransmitidos.
- Paquetes duplicados de Middlebox.
Esa es una conclusión diferente a la de "el paquete se perdió".
Retransmisiones espurias
Una retransmisión no siempre es prueba de pérdida. Puede ser desencadenado por:
- Reordering.
- Comportamiento ACK retrasado.
- Capture artefactos de descarga.
- Tiempo de espera de retransmisión demasiado pequeño.
- Compresión ACK.
- Cronograma de virtualización.
- Asimetría del camino.
SACK y DSACK ayudan a demostrar si realmente faltaban datos o simplemente estaban retrasados.
El punto de captura importa
Si el pcap es unilateral o está detrás de una NAT, la interpretación de SACK puede ser complicada. Un paquete puede estar ausente de su punto de captura pero presente en el receptor.
Práctica útil:
- Compare capturas del lado del remitente y del lado del receptor.
- Mantenga las marcas de tiempo sincronizadas.
- Conservar los números de secuencia.
- Evite recortar paquetes de solo ACK.
- Anote la ubicación de descarga y captura.
El análisis SACK sin paquetes ACK no es análisis.
Lista de verificación de depuración
Utilice este flujo de trabajo:
- Mantenga el protocolo de enlace TCP.
- Confirmar SACK permitido.
- Encuentre el primer ACK duplicado.
- Decodifica bloques SACK.
- Asigne rangos de SACK a paquetes de datos.
- Identificar rangos de secuencia retransmitidos.
- Compruebe si hay DSACK.
- Separe la pérdida de la reordenación.
- Verifique el punto de captura y descargue el contexto.
- Conserve los paquetes antes/después del evento de recuperación.
Diagnóstico final
TCP SACK y DSACK proporcionan evidencia precisa de pérdida de paquetes, reordenamiento, entrega duplicada y retransmisiones espurias. La clave es preservar las opciones de protocolo de enlace, los paquetes de solo ACK, los bloques SACK y los rangos de secuencia retransmitidos.
La cirugía PCAP ayuda a mantener esa evidencia intacta para que el análisis de pérdidas de TCP pueda ir más allá de los recuentos genéricos de ACK duplicados.