在Linux中获取TCP RTT

7

我需要获取TCP流的RTT。

我已经研究了proc文件系统,但无法获得TCP的RTT值。如果有人知道在哪个文件中存储RTT,请分享一下。

提前感谢您。

3个回答

11

也许可以使用iproute工具中提供的ss(socket统计信息)实用程序来帮助您解决这个问题。

# ss -i 'src 1.1.1.1:1234 and dst 2.2.2.2:1234'
State      Recv-Q Send-Q                         Local Address:Port                             Peer Address:Port
ESTAB      0      0                              1.1.1.1:1234                                   2.2.2.2:1234
    reno wscale:2,7 rto:3380 rtt:855/602.5 ato:40 ssthresh:2 send 27.3Kbps rcv_space:5840

如果你想了解更多关于rtt字段的信息,我认为最好看一下ss.c


2
注意:如果您在“ss”中没有看到rtt信息,则意味着机器尚未在内核中启用INET_DIAG子系统,并且正在回退到使用/proc/net/中更有限的信息。您需要重新构建内核并启用INET_DIAG /“INET套接字监视接口”支持。 - Pierz

1

使用ip命令还可以打印以前目标的缓存rtts(以及rttvar、cwnd):

sudo ip tcp_metrics

请参阅 https://man7.org/linux/man-pages/man8/ip-tcp_metrics.8.html。 - poolie

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接