我正在测试 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
指定接口上传输的每个数据包增加延迟。