linux - 在每个数据包之间引入延迟

标签 linux delay trafficshaping

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

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

非常感谢任何想法。

问候,

kravvcu

最佳答案

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

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

  • 如果不需要抖动:-tc qdisc 添加/更改/替换 dev eth0 root netem 延迟 100ms
  • 如果需要抖动:- 诀窍是在 netem 命令中使用高 rate 参数。 netem 内部维护一个 tfifo 队列。使用 rate 参数,netem 根据 tfifo 队列中最后一个数据包的发送时间计算下一个数据包的数据包延迟。因此有延迟和抖动,但没有重新排序。

相同的命令是
tc qdisc 添加/更改/替换 dev eth0 root netem 速率 1000mbit 延迟 100ms

速率 1000mbit 或任何非常高的速率即可完成工作!

此功能未在任何地方记录。然而,早在 2011/2012/2013 年就在 linux netdev 邮件列表中进行了讨论。 ATM 我找不到相同的链接。不过,我可以指出实现上述代码的linux源代码。

http://lxr.free-electrons.com/source/net/sched/sch_netem.c#L495

如果答案有用,请投票!

关于linux - 在每个数据包之间引入延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25017648/

相关文章:

安卓 : Introducing delay using handler does not work

jquery - 显示/隐藏 div 的问题

linux - tc 过滤器不匹配 IP 地址,仅匹配范围

xml - 在 shell 脚本中需要帮助以查找和替换 xml 文件中的值

php 文件路径在 windows 上工作但在 linux 上不工作

jquery延迟似乎并没有阻止后续命令的执行

linux - tc类ceil继承

c - 别名 CC 以在 Shell 中引用 Clang?

linux - 使用 Subversion 时如何正确处理符号链接(symbolic link)文件夹?