以一秒的间隔监控瞬时网络吞吐量?

以一秒的间隔监控瞬时网络吞吐量?

对于我所拥有的测试设置,我需要以大约 5 秒或更短的间隔定期监控“路由器”* 的吞吐量(亚秒间隔非常好,但不是必需的)。理想情况下,我可以生成一个文件,其中包含每个间隔内看到的字节数和数据包数。我最终将从这些数据中生成吞吐量的时间序列。

在之前使用旧版 FreeBSD 的设置中,有一个名为“bpfmon”的工具可以向我提供此信息。但是,我需要在现代版本的 Linux(即 Ubuntu 11.04)下执行此操作。

我查看了和iptrafiftop但它们似乎没有提供我需要的解决方案,也似乎无法轻松抓取我需要的数据。我知道 iptables 统计数据可能能够提供我想要的结果,但我见过的示例似乎依赖于反复读取和重置流量计数器,这似乎可能不准确,因为读取/重置不是原子操作。我已经在想要监控的链接上捕获了我感兴趣的流量的 tcpdump 跟踪,因此我愿意接受简单解析它的方法。

我觉得这一定是一个常见的问题,所以我希望有一个标准的“最佳实践”工具来实现这一点。

*我在引号中说“路由器”是因为我实际上谈论的是一台具有两个桥接 NIC 的机器,我感兴趣的所有流量都会通过这台机器。

答案1

所有方法最终都会导致重复的计数器读取操作。通常,您不会重置计数器(只是因为您提到的原因 - 您可能会因竞争条件而丢失计数),而是将收集的值与上一个样本的值进行比较。

但是由于您已经使用 tcpdump 来保存连接数据,因此您可以使用类似跟踪绘图模式使您的数据可视化。

如果你只是需要一些吞吐量/数据包数量,你可以简单地使用tcpstat 1

答案2

你为什么不尝试使用 iptraf?转到配置/计时器.../屏幕更新间隔...菜单并输入 1(表示 1 秒采样频率)。顺便说一句,如果 NIC 是桥接的,它就不会被称为“路由器”。它可能是一座桥梁或一个交换机。

相关内容