在 Linux 中使用 tc 和在 FreeBSD 中使用 dummynet 来限制带宽

在 Linux 中使用 tc 和在 FreeBSD 中使用 dummynet 来限制带宽

我们有一个在 Linux 上运行的网络产品,需要在低带宽网络中进行测试。

我们已经能够使用 Linux 中的“tc”(流量控制)和 FreeBSD 中的 dummynet 来注入具有可预测行为的延迟(等待时间)。

但是,当我们尝试使用其中任何一种方式来限制带宽时,似乎并没有太大效果。

下面是尝试使用“tc”将带宽设置为 512Kbps 的示例:

tc qdisc 更改 dev eth0 root tbf 速率 512kbit 突发 1540

但是当我们通过该连接运行“scp”时,我们发现速度比我们预期的要高得多。

以下是在 dummynet 和 tc 中设置各种带宽的结果。你可以看到它有一些效果,但不是很大。

BW _______DUMMYNET__________ __________ TC __________
10Mbps 1分钟,3.489秒 4.0MB/秒 1分钟,2.732秒 4.1MB/秒
8Mbps 1分,3.461秒 4.0MB/ 1分,2.728秒 4.1MB/秒
6Mbps 1分钟,3.905秒 4.0MB/秒 1分钟,2.710秒 4.0MB/秒
1Mbps 1分钟,3.261秒 4.0MB/秒 1分钟,2.680秒 4.0MB/秒
512Kbps 1分,26.175秒 3.0MB/秒 1分 25.409秒 3.0MB/秒
256Kbps 2分39.079秒 1.6MB/秒 2分 53.004秒 1.5MB/秒
128Kbps 5分钟,3.501秒 852.7KB/秒 5分钟,50.491秒 739.7KB/秒
64Kbps 9分钟,48.907秒 463.3KB/秒 9分钟,53.105秒 436.5KB/秒

我手边没有我们用于 DUMMYNET 的语法,但我稍后会发布它。

答案1

我在 serverfault 上回答了一个问题,内容更详细使用 tc 和 iptables 进行流量限制的示例。此示例来自我们在镜像服务器上的设置,并且运行良好。

答案2

我不会在有问题的盒子上运行过滤,我会在有问题的两块技术之间的专用盒子/虚拟机中运行它。这样你就可以运行一个干净的基线并更充分地评估结果(在两侧运行 ethereal/wireshark 并查看大小差异以确保你工作正常)

你可能会觉得以下信息有用:http://www.dummycloud.com/screenshots

尽管 tc 应该为你做这件事

相关内容