在Linux上模拟低带宽,高延迟的网络连接


19

我想在我的Linux机器上模拟一个高延迟,低带宽的网络连接。

限制带宽之前已经讨论过,例如在这里,但是我找不到任何有关限制带宽和延迟的文章。

我可以使用来获得高延迟或低带宽tc。但是我无法将它们组合成一个连接。特别是,这里的示例速率控制脚本对我不起作用:

# tc qdisc add dev lo root handle 1:0 netem delay 100ms 
# tc qdisc add dev lo parent 1:1 handle 10: tbf rate 256kbit buffer 1600 limit 3000
RTNETLINK answers: Operation not supported

如何使用tc或其他任何易于使用的工具来创建低带宽,高延迟的连接?


1
您是否尝试过结合链接中的方法,例如 使用tc的延迟和点滴的带宽?(比使用tc更为丑陋,但可能仍然有效;)
安迪

这是个好主意(确实,trick流甚至会增加延迟),但是不幸的是,Firefox不会在trick流下加载,这就是我需要测试的内容。
贾斯汀·L。2010年

Answers:


15

啊哈!如果我们颠倒命令的顺序,它将起作用。

tc qdisc add dev lo root handle 1: htb default 12 
tc class add dev lo parent 1:1 classid 1:12 htb rate 20kbps ceil 20kbps 
tc qdisc add dev lo parent 1:12 netem delay 1000ms 

https://lists.linux-foundation.org/pipermail/netem/2010-May/001388.html


关于为什么感兴趣的任何人,似乎netem qdisc不能是父代,因此您必须重新排列层次结构才能将其作为叶节点。
安迪2010年

3
请注意,带宽限制仅在一个方向上(传出)。您必须做额外的工作才能使其双向执行(显然使用ifb)。 linuxfoundation.org/collaborate/workgroups/networking/…–
罗杰·

尝试使用tc时遇到了这个问题。根据我的阅读,第一行创建1:0,但第二行则指向1:1?(可能是我的理解是错误的,但是我凝视了很多页面,试图了解如何对类/ qtdiscs进行编号)
symcbean 2013年

1

它不是免费的,但是Charles Web调试代理可以模拟低带宽高延迟连接

http://www.charlesproxy.com/documentation/proxying/throttling/


有趣的是,我实际上是在进行Web调试的。但是,肯定有一种无需花钱就能做到这一点的方法。:)
贾斯汀·L.2010年

可悲的是,查尔斯似乎并没有与当地的交通打交道。当我尝试通过代理访问192.168.1.1时,它死了。
贾斯汀·L。2010年

2
或免费使用WANEm:wanem.sourceforge.net
Nathan Kidd
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.