模拟单个大网络延迟和数据包突发

模拟单个大网络延迟和数据包突发

我正在测试 Opus 编解码器和使用它的 VoIP 堆栈。我有一个合成测试实用程序,它在环回接口的两个端口之间内部发送 Opus RTP 流量 + 这会将生成的音频写入文件以供进一步分析。

使用 Linux‘tc’实用程序,我可以模拟各种网络故障。

但我还是坚持模拟“突然的网络延迟”之类的事情。抱歉我的英语不好!

这看起来应该像网络停止了 1 秒,然后所有延迟的数据包都尽快发送到目标。

是否可以使用“tc”实用程序实现?

我尝试运行“tc”命令,在综合测试过程中使延迟 1000 毫秒;但它并没有给我想要的效果。

有人可以给出建议吗?

谢谢 :)

答案1

这看起来应该像网络停止了 1 秒,然后所有延迟的数据包都尽快发送到目标。

这实际上是有可能的...来自man tc

网状结构
网络模拟器是 Linux 流量控制功能的增强,允许为从选定网络接口传出的数据包添加延迟、数据包丢失、重复和更多其他特性。

...以及来自man tc-netem

投币口
将累积的数据包延迟交付到时隙内。每个可用时隙都可以配置获取的最小延迟和可选的最大延迟。

...因此,你可以做这样的事情:

sudo tc qdisc add dev interface root netem slot 1000ms 1000ms

...interface您想要的网络接口名称在哪里,如的输出所示ip a

这将保留指定接口上的所有传输数据包1000ms,然后一次性释放它们(突然)。

注意delay另一方面,这将给1000ms指定接口上传输的每个数据包增加延迟。

相关内容