我正在尝试使用 command 模拟慢速网络链接tc
。我用netem
模拟延迟和丢包和htb模拟窄带宽,但我发现有一个限制选项netem
,这个选项有什么作用?会影响最终带宽吗?
我用谷歌搜索并在http://manpages.ubuntu.com/manpages/raring/man8/tc-netem.8.html中找到了一些东西
其中说:
将所选选项的效果限制为指定数量的下一个数据包。
但我仍然无法理解它的作用。
我正在尝试使用 command 模拟慢速网络链接tc
。我用netem
模拟延迟和丢包和htb模拟窄带宽,但我发现有一个限制选项netem
,这个选项有什么作用?会影响最终带宽吗?
我用谷歌搜索并在http://manpages.ubuntu.com/manpages/raring/man8/tc-netem.8.html中找到了一些东西
其中说:
将所选选项的效果限制为指定数量的下一个数据包。
但我仍然无法理解它的作用。
我不知道 netem 到底在做什么,但我发现如果你不将“限制”设置为更高的值,netem 就不能正常工作——即它以更高的速度丢弃数据包,并且可能还有其他问题,本质上不能准确地模拟真实的网络。
从CarlH 提到的邮件列表中,Stephen Hemminger 说:
至少当在 netem (tfifo) 中使用默认的 qdisc 时,限制值以数据包为单位。您还可以使用 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%
我一直在使用limit 100000,这似乎工作正常,但似乎较低的值可能没问题。
来自https://lists.linuxfoundation.org/pipermail/netem/2007-March/001091.html
“limit”参数是指在 netem 模块中分配的缓冲区数量。
必须调整限制以支持给定数据速率下延迟的帧数(例如 500 毫秒)。
此致,
劳伦特·玛丽