【发布时间】:2016-01-20 18:25:56
【问题描述】:
我在 Ubuntu 上运行 apache 服务器。客户端连接并下载图像。我需要提取底层 TCP 连接的 RTT 估计。有没有办法做到这一点?也许像在调试模式下运行我的 tcp 堆栈以让它在某处记录此信息?
请注意,我不想运行 tcpdump 并从记录的跟踪中提取 RTT!我需要 TCP 堆栈的 RTT 估计(显然这是您可以使用 TCP_INFO 套接字选项获得的信息的一部分)。基本上需要像 tcprob (kprobe) 这样的东西来插入一个钩子并记录每个传入数据包(或每次更改)的 TCP 连接的估计 RTT。
更新:
我找到了解决方案。 rtt、拥塞窗口等可以使用 tcpprobe 记录。我在下面发布了一个答案。
【问题讨论】:
-
谢谢!是的,我对“ss”很熟悉,但这并不是我所需要的,因为它会给我一个非常粗略的 RTT 采样。我需要像 tcpprob (kprobe) 这样的东西来插入一个钩子,并在每个传入数据包(或每次更改)上记录 TCP 连接的估计 RTT。
-
嗯。 Linux 拥塞控制算法是
net/ipv4/目录中的可插拔模块。每个都以不同的方式计算 rtt (reno 根本不计算它!),所以我认为你必须挂钩到特定的实现。我看到你标记为cubic,所以那是tcp_cubic.c。我认为没有获取 rtt 的通用方法,但我肯定是错的...... -
谢谢@indiv!是的,我还没有找到通用的方法来做到这一点,我可能需要自己动手做。我也在试验 ss ,看看它是否真的足以满足我的需要。我会及时通知你。
-
天哪!我不敢相信 tcpprobe 一直在为我做这件事,我错过了!哈哈,我会尽快发布答案
标签: linux sockets tcp linux-kernel cubic