所以我知道我可以使用Linux tc和netem延迟给定延迟的流的所有数据包。 这里展示了什么http://www.linuxfoundation.org/collaborate/workgroups/networking/netem#Delay_distribution 只是在给定的时间内延迟所有数据包,而不是改变实际数据包之间的间隔。
我想要做的是将每个连续数据包对之间的最小间隔时间设置为100毫秒。而且我不想重新排序。
任何想法都非常感激。
此致
kravvcu
答案 0 :(得分:0)
所以,如果我理解你的要求是正确的,你需要一个100毫秒的恒定的数据包间延迟并且没有重新排序。你提到的链接中的命令(linux基础)引入了100ms的延迟和20ms的抖动。这种抖动会产生重新排序。
有两种方法可以满足您的要求。
tc qdisc add/change/replace dev eth0 root netem delay 100ms
rate
参数。 netem在内部维护一个tfifo队列。使用rate
参数,netem根据其tfifo队列中最后一个数据包的发送时间计算下一个数据包的数据包延迟。因此有延迟和抖动但没有重新排序。相同的命令是
tc qdisc add/change/replace dev eth0 root netem rate 1000mbit delay 100ms
rate 1000mbit
或任何非常高的比率就可以了!
此功能未在任何地方记录。但是,在2011/2012/2013年的linux netdev邮件列表中进行了讨论。 ATM我找不到相同的链接。但是,我可以指向实现上述代码的linux源代码。
http://lxr.free-electrons.com/source/net/sched/sch_netem.c#L495
如果答案有用,请投票!