使用wireshark或其他工具绘制RTT直方图



我有一个小的办公网络,我正在经历一个巨大的互联网连接延迟。我们有一个简单的网络拓扑:一台被配置为运行ubuntu服务器10.10的路由器的计算机,2张网卡(一张到互联网连接,另一张到办公网络)和一个连接20台计算机的交换机。我在路由器上收集了一个巨大的tcpdump日志,我想用所有 TCP流的RTT时间绘制一个直方图,试图找出解决这个延迟问题的最佳方案。那么,谁能告诉我如何使用wireshark或其他工具做到这一点?

Wireshark或tshark可以使用 TCP .analysis给出每个接收到的ACK数据包的TCP RTT。ack_rtt,用于测量捕获TCP数据包和该数据包的ACK之间的时间间隔。

你需要小心这一点,因为你的大多数ACK数据包将来自你的办公室机器从互联网接收到的ACK数据包,所以你将测量路由器看到来自互联网的数据包和看到来自办公室机器的ACK之间的RTT。

要测量您的internet RTT,您需要查找来自internet的ack(从您的网络发送的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文件合并为一个文件。将此输出转换为直方图应该很容易!

以下是受鲁佩罗回答启发的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 "33c"; 
 for (0..$m) { printf "%6s %6s %8sn",$t[$_],sprintf("%3.2f",$h[$_]/$o*100),$h[$_]; };
}

新版本的tshark在"tshark"前加上"stdbuf -i0 - 0 -e0 "似乎效果更好。

有没有人知道wireshark是否有内置的DNS和ICMP rtt统计数据,或者如何轻松获得这些?

2018更新:参见https://github.com/dagelf/pping

最新更新