(linux)用于监控 tcp 连接“质量”的工具?

(linux)用于监控 tcp 连接“质量”的工具?

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

它应该是一个有客户端和服务器部分的工具。客户端每秒向服务器发送 1kB 的数据,服务器监控数据包的传输速度。

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

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

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

非常感谢!

答案1

您如何定义“数据包传输速度有多快”?如果您想知道数据包从 A 点到达 B 点需要多长时间,那么我认为没有亚毫秒级精确的时钟同步就无法做到这一点。

我会尝试捕获一些实际流量(即实际使用应用程序时),并使用 WireShark 进行分析,查找发送的某些数据与相应的 ACK 数据包之间的延迟。这样就可以计算出流量的往返时间 (RTT)。

更新

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

答案2

听起来你需要防火墙

但是,您确定看到的是无效链接,而不是用户连接中的 TCP 停顿吗?如果连续丢失三个数据包,大多数 TCP 都会停顿。

您是否使用了系统中最好的 TCP 拥塞控制?在 Windows 中,您应该打开复合TCP如果可以的话,在 Linux 中你应该使用韦斯特伍德对于此应用程序。

答案3

仅供参考.. Linux“ping”有这个选项:

-s packetsize
指定要发送的数据字节数。默认值为 56,与 8 个字节的 ICMP 头数据组合后,将转换为 64 个 ICMP 数据字节。

答案4

我不确定您是在寻找长期运行的监视器,还是寻找像 ping 这样的一次性测试应用程序。如果您想分析链接的 TCP 性能,经典工具是网络管道。NetPIPE 可以告诉您吞吐量和双向通信的延迟。

相关内容