72 votos

¿Cómo monitorear pasivamente la pérdida de paquetes tcp? (Linux)

¿Cómo puedo controlar de forma pasiva la pérdida de paquetes en las conexiones TCP hacia/desde mi máquina?

Básicamente, me gustaría contar con una herramienta que se sitúe en segundo plano y observe las ack/nak/retransmisiones TCP para generar un informe sobre qué direcciones IP pares "parecen" estar experimentando grandes pérdidas.

La mayoría de las preguntas de este tipo que encuentro de SF sugieren el uso de herramientas como iperf. Pero, necesito monitorear las conexiones hacia/desde una aplicación real en mi máquina.

¿Están estos datos en la pila TCP de Linux?

63voto

Joel K Puntos 3367

Para tener una idea general de la magnitud de su problema netstat -s hará un seguimiento del número total de retransmisiones.

# netstat -s | grep retransmitted
     368644 segments retransmitted

Puede asociar grep para segments para obtener una visión más detallada:

# netstat -s | grep segments
         149840 segments received
         150373 segments sent out
         161 segments retransmitted
         13 bad segments received

Para una inmersión más profunda, probablemente querrás encender Wireshark.

En Wireshark configure su filtro como tcp.analysis.retransmission para ver las retransmisiones por flujo.

Es la mejor opción que se me ocurre.

Otros callejones sin salida explorados:

  • las herramientas netfilter/conntrack no parecen guardar las retransmisiones
  • stracing netstat -s demostró que sólo está imprimiendo /proc/net/netstat
  • La columna 9 de /proc/net/tcp parecía prometedora, pero desgraciadamente parece que no se utiliza.

1 votos

Y puedes monitorizar los paquetes perdidos con # watch 'netstat -s | grep retransmited'

0 votos

Esto mostraría sólo los problemas de salida. "netstat -s | grep segments" me parece más razonable.

1 votos

Si estás gestionando una red de tamaño razonable, entonces yo recomendaría pastmon sobre wireshark para la monitorización continua - pastmon.sourceforge.net/Wikka-1.1.6.5/wikka.php?wakka=HomePage

14voto

Mark Seger Puntos 71

Estas estadísticas están en /proc/net/netstat y collectl los supervisará por usted, ya sea de forma interactiva o escribiéndolos en el disco para su posterior reproducción:

[root@poker ~]# collectl -st
waiting for 1 second sample...
#<------------TCP------------->
#PureAcks HPAcks   Loss FTrans
        3      0      0      0
        1      0      0      0

Por supuesto, si quiere verlos junto con el tráfico de la red, sólo tiene que incluir n con -s :

[root@poker ~]# collectl -stn
waiting for 1 second sample...
#<----------Network----------><------------TCP------------->
#  KBIn  PktIn  KBOut  PktOut PureAcks HPAcks   Loss FTrans
      0      1      0       1        1      0      0      0
      0      1      0       1        1      0      0      0

8voto

otmar Puntos 21

Puede utilizar el ss para obtener estadísticas detalladas de TCP:

$ /sbin/ss -ti

En Debian, utilice apt-get install iproute para obtener el binario.

0 votos

Tenga en cuenta que la persona que hizo la pregunta buscaba una herramienta de la que pudiera ver el resultado. Aunque algunos de los comandos mencionados hasta ahora no funcionan de esta manera, todas las respuestas votadas incluyen al menos un método para hacerlo.

2 votos

@AndrewB: Puedes hacer watch ss -ti .

3voto

Zlatev Puntos 2445

Es posible que quiera ver el dropwatch utilidad.

0 votos

Sólo está disponible como paquete rpm :/

3voto

polynomial Puntos 3284

Parece que algunos chicos de la Universidad de Carolina del Norte (UNC) construyeron una utilidad para investigar exactamente esto:

Metodología

TCP es un ejemplo clásico de un protocolo heredado que es objeto de a modificaciones. Por desgracia, la evaluación de algo tan fundamental como el mecanismo de detección/recuperación de pérdidas de TCP no es exhaustiva. Nuestro objetivo es realizar una evaluación completa y realista de las pérdidas de TCP y su impacto en el rendimiento de TCP.

Me baso en el análisis pasivo de las conexiones TCP del mundo real para lograr el nivel de detalle y realismo necesario en mi análisis.

http://www.cs.unc.edu/~jasleen/Research-passivetcp.htm#Herramienta

Herramienta

El objetivo de la herramienta es proporcionar resultados más completos y precisos resultados para identificar y caracterizar segmentos fuera de secuencia que los proporcionados por herramientas anteriores como tcpanaly, tcpflows, LEAST y Mystery. Nuestra metodología clasifica cada segmento que aparece fuera de secuencia (OOS) en un rastreo de paquetes en una de las siguientes categorías: reordenación de la red o retransmisión TCP desencadenada por uno de tiempo de espera, ACKs duplicados, ACKs parciales, ACKs selectivos o recuperación implícita. Además, cada retransmisión también se evalúa para saber si era necesaria o no.

No voy a decir que es una calidad de producción. Anteriormente he construido rápidos perl scripts para almacenar tuplas ip/port/ack en la memoria y luego informar sobre los datos duplicados de la exploración de la salida pcap, esto parece que proporciona un análisis más profundo.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: