2011-08-05 56 views
6

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

11

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!

-1
 
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 
+0

No veo la relevancia de esto en la pregunta. – MaxVT

1

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?

Cuestiones relacionadas