网络延迟测量 (Linux)

omn*_*nom 9 networking linux time latency

我想测量 SNMP GET 请求的网络延迟。有一个免费的命令行工具time,可用于查找各种命令的计时统计信息。例如,它可以通过snmpget以下方式使用:

$ time snmpget -v 2c -c public 192.168.1.3 .1.3.6.1.2.1.2.2.1.10.2
IF-MIB::ifInOctets.2 = Counter32: 112857973

real    0m0.162s
user    0m0.069s
sys 0m0.005s
Run Code Online (Sandbox Code Playgroud)

根据手册,统计数据包括:

  • 调用和终止之间经过的实时时间,

  • 用户 CPU 时间( times(2)
    返回的结构 tms中的tms_utime 和 tms_cutime 值的总和
    ),

  • 系统 CPU 时间( times(2)
    返回的结构 tms中的tms_stime 和 tms_cstime 值的总和
    )。

如您所见,这些选项都不允许测量实际网络延迟时间(排除其他程序执行时间统计)。有什么办法吗?也许不是使用时间工具,而是一些内核黑客?

我想问一下,在我开始编写自己的程序之前。

谢谢,彼得

Fra*_*o R 11

尝试平:

$ ping -U 192.168.1.3
Run Code Online (Sandbox Code Playgroud)

从 ping 手册:

-U 打印完整的用户到用户延迟(旧行为)。通常 ping 会打印网络往返时间,由于 DNS 故障,该时间可能会有所不同。


sar*_*old 6

tcpdump(8)程序的-ttt标志可能正是您所需要的:

00:00:00.000031 IP haig.mdns > 224.0.0.251.mdns: 0 PTR (QM)? 1.0.168.192.in-addr.arpa. (42)
00:00:01.897031 IP haig.45240 > stackoverflow.com.www: Flags [F.], seq 866615166, ack 62506321, win 123, options [nop,nop,TS val 6026371 ecr 419296939], length 0
00:00:00.000030 IP haig.45242 > stackoverflow.com.www: Flags [F.], seq 853537650, ack 61102072, win 123, options [nop,nop,TS val 6026371 ecr 419296939], length 0
00:00:00.000019 IP haig.45243 > stackoverflow.com.www: Flags [F.], seq 863535366, ack 62086489, win 123, options [nop,nop,TS val 6026371 ecr 419296939], length 0
Run Code Online (Sandbox Code Playgroud)

行开头的时间戳显示自上一个数据包以来的时间(以微秒为单位)。通过-t在命令行上给出不同的数字,您可以获得绝对时间、自第一个数据包以来的相对时间或数据包之间的相对时间。

我刚刚展示了随机的 mdns 和网络流量,因为这很容易在我的系统上找到;您可以轻松过滤 SNMP 流量tcpdump(8)以仅获取您感兴趣的数据包。(这将是一个好主意,因为从繁忙的系统中转储所有流量会产生巨大的负载。)


Kar*_*ath 5

运行您的程序,同时使用tcpdump或捕获网络流量wireshark。检查请求和回复的时间并做一个简单的减法。


归档时间:

查看次数:

45219 次

最近记录:

14 年,4 月 前