我们如何使用 tc 设置可变节流带宽值?

我们如何使用 tc 设置可变节流带宽值?

我正在构建一个网络应用程序,需要测试其在各种带宽下的行为。

这个问题是问题。我成功地针对不同的带宽速率集测试了我的应用程序。

此外我现在想测试应用程序在执行过程中带宽速率发生变化的情况。

我认为可以手动/使用 bash 脚本(以编程方式添加或删除 qdiscs)等完成相同的操作。

但是,如果存在一个 tc 命令,我可以简单地提供一系列带宽值,应用程序就会切换到随机速率进行下一次数据包传输,这将非常有用。

附言:我对 tc 还很陌生,因此相对详细的解释/链接会很有帮助。谢谢!

答案1

网状结构具有模拟物理网络所需的大部分功能。

具体来说,在这个问题中,

# tc qdisc add dev eth0 root netem delay 100ms 10ms 25%

导致通过接口 eth0 发送的数据包延迟 100ms ± 10ms。因此 ping 会产生往返时间 (rtt),范围从 180ms 到 220 ms。(2*延迟)

然而,不同情况下的延迟并不是完全随机的。如果我们愿意,我们可以选择在连续值之间建立相关性。

值 25% 表示下一个延迟值与前一个延迟值有 25% 的依赖性。

这不是真正的统计相关性,而是一种近似值。

我们也可以选择让随机延迟遵循特定的分布

 # tc qdisc change dev eth0 root netem delay 100ms 20ms distribution normal

注:这些例子借用自网状结构本教程还包含许多其他有用的例子。

相关内容