Постройте гистограмму RTT, используя Wireshark или другой инструмент - PullRequest
6 голосов
/ 06 августа 2011

У меня небольшая офисная сеть, и я испытываю огромную задержку интернет-соединения.У нас есть простая топология сети: компьютер, настроенный как маршрутизатор, на котором работает сервер Ubuntu 10.10, 2 сетевые карты (одна для подключения к Интернету, другая для офисной сети) и коммутатор, соединяющий 20 компьютеров.У меня есть огромный журнал tcpdump, собранный на маршрутизаторе, и я хотел бы построить гистограмму с временем RTT всех потоков TCP, чтобы попытаться найти лучшее решение этой проблемы с задержкой.Так, может кто-нибудь сказать мне, как это сделать, используя wireshark или другой инструмент?

Ответы [ 3 ]

11 голосов
/ 07 августа 2011

Wireshark или tshark могут предоставить вам RTT TCP для каждого полученного пакета ACK, используя tcp.analysis.ack_rtt , который измеряет разницу во времени между захватом пакета TCP и ACK для этого пакета.

Вы должны быть осторожны с этим, поскольку большинство ваших ACK-пакетов будут из ваших офисных машин ACKing пакетов, полученных из Интернета, поэтому вы будете измерять RTT между вашим маршрутизатором, видя пакет из Интернетаи просмотр ACK со своего офисного компьютера.

Чтобы измерить RTT в Интернете, вам нужно искать ACKS из Интернета (данные ACK, отправленные из вашей сети).Предполагая, что ваши офисные машины имеют IP-адреса, такие как 192.168.1.x, и вы записали все данные на порт LAN вашего маршрутизатора, вы можете использовать фильтр отображения следующим образом:

tcp.analysis.ack_rtt and ip.dst==192.168.1.255/24

Чтобы вывести RTT в.csv для анализа вы можете использовать команду tshark следующим образом:

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

  • Опция -r указывает tshark читать из вашего файла .pcap
  • Параметр -Y указывает используемый фильтр отображения (-R без -2 устарел)
  • Параметр -e указывает поле для вывода
  • Параметры -T определяют форматирование вывода

Вы можете использовать утилиту mergecap, чтобы объединить все ваши файлы pcap в один файл перед выполнением этой команды.Превратить этот вывод в гистограмму должно быть легко!

1 голос
/ 29 марта 2012

Вот 5-минутный текст, вдохновленный ответом Рупелло:

#!/usr/bin/perl

# For a live histogram of rtt latencies, save this file as /tmp/hist.pl and chmod +x /tmp/hist.pl, then run:
# tshark -i wlp2s0 -Y "tcp.analysis.ack_rtt and ip.dst==192.168.0.0/16" -e tcp.analysis.ack_rtt -T fields -E separator=, -E quote=d  | /tmp/hist.pl 
# Don't forget to update the interface "wlp2s0" and "and ip.dst==..." bits as appropriate, type "ip addr" to get those.

@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); $o++;
 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[$_]; };
}

Новые версии tshark лучше работают с "stdbuf -i0 -o0 -e0" перед "tshark".

PS Кто-нибудь знает, есть ли в Wireshark встроенные статистики DNS и ICMP rtt или как их легко получить?

2018 Обновление: см. https://github.com/dagelf/pping

0 голосов
/ 06 августа 2011
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
...