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

lcb*_*ard 5 bandwidth traffic-shaping

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

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

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

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

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

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

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

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

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

Sea*_*der 4

有一个关于 serverfault 的问题,我用一个更广泛的使用 tc 和 iptables 进行流量限制的示例来回答。这个例子来自我们镜像服务器上的设置,它运行得很好。