我正在开展一个学校项目,试图模拟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的版本。 TBF和NETEM允许设置速率和队列大小。
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工具。
问候,迭戈