使用tc进行stream量整形

我正在开展一个学校项目,试图模拟Buffer Bloating的networking现象。 由于内存价格低廉,这实际上是由于路由器中的缓冲区越来越大而导致的延迟。

现在,开始这个项目,我已经做了一些关于linux“tc”命令的研究,以及如何使用它,但是我没有看到如何为我的需要设置正确的configuration。 情况如下; 我有3台电脑。 PC1连接到PC2,PC2连接到PC3。 在此configuration中,PC2充当使用大缓冲区的路由器。 stream量从PC1通过PC2发送到PC3。 现在,我的意图是限制PC2可以用来将来自PC1的input数据发送到PC3的带宽。

我正计划通过在PC2上设置一个大缓冲区来延迟从缓冲区获取数据包来模拟较慢的链路。 这应该导致大的缓冲区填满并引入延迟。

现在,我想问一下这个社区,关于如何使用“tc”命令来configuration它,或者其他适合这个工作的工具。 或者,如果您有关于如何模拟缓冲气泡的其他想法,那也是可以的。

谢谢你的耐心。

我认为有两种方法来模拟腹胀,它取决于你正在使用的内核和/或iproute的版本。 TBFNETEM允许设置速率和队列大小。

tc qdisc add dev eth0 root tbf rate Xmbit limit Y burst 1500 

要么

 tc qdisc add dev eth0 root netem Xmbit limit Y 

其中X是带宽,Y是队列大小。 第一个应该在任何2.6内核中工作,并且在2.4的某个更新的版本中。 后者需要新版本的Linux内核和Iproute工具。

问候,迭戈