在 Linux 中跟踪带宽和延迟

在 Linux 中跟踪带宽和延迟

我正在尝试编写一个简单的脚本,可以检测网络中任意两台主机之间的网络流量(两个方向的带宽和延迟)随时间的变化。有没有工具可以做到这一点?

如果需要,我计划用 bash 编写几个客户端/服务器脚本来使用nc(netcat)执行此测试,但如果预先存在的解决方案捕获了我正在尝试做的事情,请告诉我。

首先,我要确定我可以在任意主机之间 1 秒内发送多少数据。我们将其称为“有效负载”。初步测试显示有效负载约为 50 MB。

然后我将执行以下操作:

  1. 客户端将有效负载发送到服务器。
  2. 当服务器收到整个有效载荷时,它将立即通过向客户端发送有效载荷来做出响应。
  3. 当客户端收到整个有效负载时,它将休眠 30 秒。转到 1。

通过这样做,我将收到以下数据(双向带宽和延迟):

  1. 通过记录(1)中从客户端到服务器time的执行情况nc,我将获得从客户端到服务器发送数据的带宽。
  2. 通过记录(2)中time执行从服务器到客户端的操作nc,我将获得从服务器向客户端发送数据的带宽。
  3. 我会以某种方式确定数据包延迟,也许使用监控工具或区分从源发送的有效载荷的第一个数据包和在目的地接收的有效载荷的第一个数据包之间的时间戳。

答案1

iPerf 是一款出色的性能测试工具。我不会像您建议的那样编写脚本来监控负载,而是会考虑 Nagios(并集成 PNP4Nagios,它会为您整理通知,并为您提供随时间变化的性能图表)。

我确实想知道长期持续地在主机之间移动数据是否可行,因为这会浪费本来可用的带宽。您是否应该更好地监控链路的实际吞吐量,并将其与延迟和数据包丢失相关联,以确定在需要时是否物有所值?(我曾“打压”过 ISP,他们玩起了 ISP 手册中最古老的游戏,并多次试图坚持认为问题不在他们的网络上,尤其是在监控多个点时)

我注意到,虽然延迟、数据包丢失和吞吐量并不完全相互依赖,但(对于具有已知/收缩/预期特征的链接)这些因素之间存在相关性。

答案2

你需要检查的是防火墙满足您的需要。

根据我对您的问题的理解,我认为应该如此。

相关内容