(linux) 监控 TCP 连接“质量”的工具?

ern*_*che 6 linux tcp ping latency

我正在寻找一个工具来监控 TCP 连接的质量。我试图描述我的意思:

它应该是一个带有客户端和服务器部分的工具。比如说,客户端每秒向服务器发送 1kB 的数据,而服务器会监视数据包传送的速度。

或者,换句话说:我正在寻找类似于“ping”命令的东西,除了我可以测试TCP连接,并且具有相当高的带宽(即更多的数据包),例如1kB/s。

我对最大吞吐量不感兴趣,而是对持续快速交付感兴趣。例如,我会通过连接传输 128kps MP3 文件,最大吞吐量也为 128kps,但延迟较低。我想立即播放该文件(或者说,使用 1 秒缓冲)。

目标是监控现实生活中网络(互联网)连接的可用性。(不,我对像 nagios 这样设置复杂、使用复杂的东西不感兴趣。)

非常感谢!

Jav*_*ier 1

您如何定义“数据包交付的速度”?如果你想知道一个数据包从A点到达B点需要多长时间,那么我认为没有亚毫秒级精确的时钟同步是不可能完成的。

我会尝试捕获一些真实流量(即实际使用您的应用程序时),并使用 WireShark 对其进行分析,查找发送的一些数据与相应的 ACK 数据包之间的延迟。这将为您提供流量的往返时间 (RTT)。

更新

TCP 堆栈必须跟踪每个连接的 RTT。(它用于优化数据包传输和管理窗口大小)。如果您使用的是 Linux,并且它是您自己的应用程序,则可以使用getsockopt(fd,.. ,TCP_INFO,...)返回的数据,其中包括所有这些内部参数。您可以每秒查看这些数据并通过管道传输到显示应用程序。