Tengo una pequeña red de oficina y estoy experimentando una gran latencia de enlace de Internet. Tenemos una topología de red simple: una computadora configurada como enrutador que ejecuta el servidor 10.10 de Ubuntu, 2 tarjetas de red (una para el enlace a Internet, otra para la red de la oficina) y un conmutador que conecta 20 computadoras. Tengo un enorme registro tcpdump recopilado en el enrutador y me gustaría trazar un histograma con el tiempo RTT de todos los flujos TCP para tratar de encontrar la mejor solución a este problema de latencia. Entonces, ¿alguien podría decirme cómo hacerlo usando wireshark u otra herramienta?Trazar histograma RTT utilizando wireshark u otra herramienta
Respuesta
Wireshark o tshark le puede dar la RTT TCP para cada paquete recibido ACK usando tcp.analysis.ack_rtt que mide el delta de tiempo entre la captura de un paquete TCP y el ACK para ese paquete.
Necesita ser cuidadoso con esto como la mayor parte de sus paquetes ACK habrá de sus máquinas de oficina ACKing paquetes recibidos a través de Internet, por lo que va a medir el RTT entre el router al ver el paquete de internet y ver el ACK de su máquina de oficina.
Para medir su RTT de internet necesita buscar ACKS de internet (ACKing datos enviados desde su red). Suponiendo que las máquinas de sus oficinas tienen direcciones IP como 192.168.1.xy se han registrado todos los datos en el puerto LAN del router se puede utilizar un filtro de pantalla de este modo:
tcp.analysis.ack_rtt and ip.dst==192.168.1.255/24
para volcar los RTT en una. csv para el análisis puede usar un comando tshark como tal;
tshark -r router.pcap -Y "tcp.analysis.ack_rtt and ip.dst==192.168.1.255/24" -e tcp.analysis.ack_rtt -T fields -E separator=, -E quote=d > rtt.csv
- La opción -r dice tshark para leer desde el archivo .pcap
- la opción -y especifica el filtro de salida a usar (-R sin -2 está en desuso)
- El opción -e especifica el campo de la producción
- las opciones -T especificar el formato de la salida
Haces c use la utilidad mergecap para fusionar todos sus archivos pcap en un único archivo antes de ejecutar este comando. ¡Convertir esta salida en un histograma debería ser fácil!
You can use tshark statistics to create a table of all tcp conversations: $ tshark -r test.pcap -q -z conv,tcp ================================================================================ TCP Conversations Filter: | | | Total | | Frames Bytes | | Frames Bytes | | Frames Bytes | 192.168.108.2:2720 147.234.1.253:21 28 2306 18 1047 46 3353 147.234.1.253:58999 192.168.108.2:2721 3 170 2 122 5 292 192.168.108.2:2718 147.137.21.94:139 0 0 3 186 3 186 192.168.108.2:2717 147.137.21.94:445 0 0 3 186 3 186 ================================================================================ Or use this little script: for file in `ls -1 *.pcap` do tshark -r $file -q -z conv,tcp > $file.txt done
Aquí está la 5-min PerlScript inspirado por la respuesta de rupello:
#!/usr/bin/perl
# For a live histogram of rtt latencies, save this file as /tmp/x.pl and chmod +x /tmp/x.pl, then run:
# tshark -i br1 -R "tcp.analysis.ack_rtt and ip.dst==192.168.1.0/24" -e tcp.analysis.ack_rtt -T fields -E separator=, -E quote=d | /tmp/x.pl
# Don't forget to update the interface "br1" and "and ip.dst==..." bits as appropriate.
@t[$m=0]=20;
@t[++$m]=10;
@t[++$m]=5;
@t[++$m]=2;
@t[++$m]=1;
@t[++$m]=0.9;
@t[++$m]=0.8;
@t[++$m]=0.7;
@t[++$m]=0.6;
@t[++$m]=0.5;
@t[++$m]=0.4;
@t[++$m]=0.3;
@t[++$m]=0.2;
@t[++$m]=0.1;
@t[++$m]=0.05;
@t[++$m]=0.04;
@t[++$m]=0.03;
@t[++$m]=0.02;
@t[++$m]=0.01;
@t[++$m]=0.005;
@t[++$m]=0.001;
@t[++$m]=0;
@h[0]=0;
while (<>) {
s/\"//g; $n=$_; chomp($n);
for ($i=$m;$i>=0;$i--) { if ($n<=$t[$i]) { $h[$i]++; $i=-1; }; };
if ($i==-1) { $h[0]++; };
print "\033c";
for (0..$m) { printf "%6s %6s %8s\n",$t[$_],sprintf("%3.2f",$h[$_]/$o*100),$h[$_]; };
}
poner esto en su gráfico smokeping y ... Prepárense para la "navaja suiza de las estadísticas" utilidad esto ha inspirado ...
Las versiones más nuevas de tshark parecen funcionar mejor con un "stdbuf -i0 -o0 -e0" delante del "tshark".
PD ¿Alguien sabe si wireshark tiene incorporadas las estadísticas DNS e ICMP rtt o cómo obtenerlas fácilmente?
- 1. Trazar histograma en Python
- 2. Cómo trazar un histograma preintervenido En R
- 3. detección de condición de carrera utilizando findbugs u otra herramienta de análisis
- 4. Hibernate, iBatis, Java EE u otra herramienta ORM de Java
- 5. Trazar histograma con puntos en lugar de barras
- 6. Tesseract u otra OCR lib
- 7. Histograma Matplotlib
- 8. ¿Cómo puedo detectar un depurador u otra herramienta que pueda estar analizando mi software?
- 9. ¿Agregar imagen de fondo/color a DMG usando hdiutil u otra herramienta?
- 10. Complemento de Firefox u otra herramienta para validar localmente páginas HTML
- 11. ¿Cómo puedo trazar un histograma de datos de cola larga usando R?
- 12. Alternativa Http simple para Wireshark
- 13. Trazar una serie de datos debajo de otra
- 14. Encriptación de contraseña con Spring/Hibernate - Jasypt u otra cosa?
- 15. ¿Cómo puedo unir pares de líneas consecutivas en un archivo grande (1 millón de líneas) utilizando vim, sed u otra herramienta similar?
- 16. Cómo trazar hist con escala de registro
- 17. ¿La mejor manera de verificar automáticamente y compilar proyectos de Eclipse con Ant en Hudson u otra herramienta de CI?
- 18. por qué debo usar libtool --mode == ejecutar gdb wireshark para permitir la depuración wireshark
- 19. ¿Cómo se crea una macro (u otra herramienta) que usa el texto de variables dadas en formato de cadena?
- 20. Seleccione div (u otro elemento) que clase contenga "grap" (u otra palabra especificada) por ejemplo
- 21. utilizando la herramienta de reempaquetado de JarJar
- 22. ¿Cuáles son algunos buenos tutoriales de Wireshark?
- 23. ¿Una forma de esquivar siempre un histograma?
- 24. R u otra robusta libra matemática de Ruby en Heroku?
- 25. ¿Múltiples conexiones (asíncronas) con urllib2 u otra biblioteca http?
- 26. Reenvío perfecto y std :: tuple (u otra clase con plantilla)
- 27. Mostrar PDF en Fancybox u otra caja de luz
- 28. Captura de pantalla del navegador mediante JavaScript (u otra cosa)
- 29. String.Replace (u otra modificación cadena) que no trabaja
- 30. NSKeyedArchiver escribir XML (u otra legible para humanos)?
No veo la relevancia de esto en la pregunta. – MaxVT