我正在尝试使用命令tc
模拟慢速网络链接。我使用netem
来模拟延迟和数据包丢失,使用htb来模拟窄带宽,但我发现netem
中有一个限制选项,这个选项有什么作用?它会影响最终带宽吗?
我用Google搜索并在http://manpages.ubuntu.com/manpages/raring/man8/tc-netem.8.html
中找到了一些内容说:
将所选选项的效果限制为指定数量的下一个数据包。
但我仍然无法理解它的作用。
答案 0 :(得分:4)
我不知道netem正在做什么,但我发现如果你没有设置"限制"为了更高的价值,netem无法正常工作 - 即它以更高的速度丢弃数据包并可能存在其他问题,基本上不能准确地模拟真实的网络。
来自CarlH提到的mailing list,Stephen Hemminger说:
限制值至少在使用默认qdisc时是数据包 在netem(tfifo)里面。您也可以使用pfifo并为其配置 数据包限制,或bfifo只相同的字节。值1000是低,你 除非你是,否则比最大数据包速率*延迟大约多50% 试图模拟一个队列很小的路由器。
因此对于1 Gbps链路,1 Gbps / 1500字节MTU * 100 ms * 1.5 = 12500。
命令:
sudo tc qdisc add dev eth1 root netem limit 12500 delay 100ms loss 1%
我一直在使用限制100000,这似乎工作正常,但似乎较低的值可能没问题。
答案 1 :(得分:1)
来自https://lists.linuxfoundation.org/pipermail/netem/2007-March/001091.html
"限制"参数是指在中分配的缓冲区数 netem模块。
必须调整限制以支持延迟的帧数 (在给定的数据速率下,例如500ms)。
您诚挚的,
Laurent MARIE