0

所以我知道我可以使用 Linux tc 和 netem 将流的所有数据包延迟给定的延迟。此处介绍的内容http://www.linuxfoundation.org/collaborate/workgroups/networking/netem#Delay_distribution 只是将所有数据包延迟给定的时间,而不改变实际数据包之间的间隔。

我想要做的是将每对连续数据包之间的最小间隔时间设置为 100 毫秒。而且我不想要任何重新排序。

任何想法都非常感谢。

问候,

克拉夫库

4

1 回答 1

1

因此,如果我正确理解您的要求,您需要 100 毫秒的恒定数据包间延迟且不重新排序。您提到的链接(linux基础)中的命令引入了100ms的延迟和20ms的抖动。这种抖动会导致重新排序。

有两种方法可以满足您的要求。

  • 如果不需要抖动:-tc qdisc add/change/replace dev eth0 root netem delay 100ms
  • 如果需要抖动:-rate诀窍是在 netem 命令中 使用高参数。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

如果答案有用,请投票!

于 2014-09-13T11:34:56.707 回答