我有在 Ubuntu 上运行的 apache 服务器。客户端连接并下载图像。我需要提取底层 TCP 连接的 RTT 估计。有没有办法做到这一点?也许像在调试模式下运行我的 tcp 堆栈以让它在某处记录此信息之类的东西?
请注意,我不想运行 tcpdump 并从记录的跟踪中提取 RTT!我需要 TCP 堆栈的 RTT 估计(显然这是您可以通过 TCP_INFO 套接字选项获得的信息的一部分)。基本上需要像 tcpprob (kprobe) 这样的东西来插入一个钩子并记录每个传入数据包(或每次更改)的 TCP 连接的估计 RTT。
UPDATE:
我找到了解决方案。 rtt、拥塞窗口等可以使用 tcpprobe 进行记录。我在下面发布了一个答案。
这可以在不需要任何额外的内核模块的情况下使用ss命令(部分iproute包),它可以提供有关打开套接字的详细信息。它不会显示每个数据包,但大部分信息是通过多个数据包计算得出的。例如。列出当前打开的 TCP (t
选项)套接字和相关的内部 TCP 信息(i
)信息——包括拥塞控制算法,rtt
, cwnd
etc:
ss -ti
以下是一些输出示例:
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 0 192.168.56.102:ssh 192.168.56.1:46327
cubic wscale:6,7 rto:201 rtt:0.242/0.055 ato:40 mss:1448 rcvmss:1392
advmss:1448 cwnd:10 bytes_acked:33169 bytes_received:6069 segs_out:134
segs_in:214 send 478.7Mbps lastsnd:5 lastrcv:6 lastack:5
pacing_rate 955.4Mbps rcv_rtt:3 rcv_space:28960
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)