通过比较 PCAP 测量延迟和其他统计数据

网络工程 潜伏
2022-02-19 16:36:57

我需要测量某些统计数据,例如延迟、数据包延迟和抖动。是否可以通过嗅探两端的流量然后比较捕获数据包的时间来测量 2 个节点之间的这些统计数据?顺便说一句,这两个节点很可能无法互相看到,但他们稍后可能会看到。

3个回答

您无法通过嗅探流量来衡量这些统计数据,因为大多数数据包通常会通过 OSI 第 7 层,并且由于应用程序响应缓慢和许多其他因素,响应可能会延迟。

正如 Ron 提到的,您可以使用IP SLA并在 Cacti 或 nProbe 中绘制图表,NTOP 也可以用于收集抖动统计信息。Netflow 将是很好的信息来源。对于非常简单的测量,您可以使用 mtr 等工具。

您不能保证捕获流量的两台主机的时钟同步。即使启用了 NTP,两台主机之间也可能存在 10 毫秒的偏差。现在,如果两台主机同步到同一个 NTP 源(stratum0)并且在同一个 LAN 网络上,我们可以确保它们在几毫秒内精确。如果它们同步到 Internet 上可用的基于 WAN 的 NTP 源(如 pool.ntp),通常具有stratum1/2 和不同的 NTP 源。偏差可能在 10 毫秒内。因此,您的延迟数据包延迟和抖动将完全消失

您可以使用 tshark(或 wireshark),它有一些选项可以获取延迟、抖动和其他指标:

       -z icmp,srt[,filter]
           Compute total ICMP echo requests, replies, loss, and percent loss, as well as minimum, maximum, mean, median and sample standard deviation SRT statistics typical of what ping provides.

       -z rtp,streams
           Collect statistics for all RTP streams and calculate max. delta, max. and mean jitter and packet loss percentages.

请注意,要使上述 2 个选项起作用,您需要在网络捕获中分别具有 ICMP 和 RTP 数据包。

使用来自Wireshark Sample Captures的 ICMP 和 RTP 样本捕获的示例

$ tshark -qr nflog.pcap -z icmp,srt
==========================================================================
ICMP Service Response Time (SRT) Statistics (all times in ms):
Filter: <none>

Requests  Replies   Lost      % Loss
6         4         2          33.3%

Minimum   Maximum   Mean      Median    SDeviation     Min Frame Max Frame
0.000     1116.657  279.166   0.003     558.328        29        37        
==========================================================================

$ tshark -qr aaa.pcap -z rtp,streams
========================= RTP Streams ========================
    Src IP addr  Port    Dest IP addr  Port       SSRC          Payload  Pkts         Lost   Max Delta(ms)  Max Jitter(ms) Mean Jitter(ms) Problems?
    192.168.1.2 30000   212.242.33.36 40392 0x3796CB71 ITU-T G.711 PCMA     9     0 (0.0%)           69.95            7.80           18.02 
==============================================================