我正在开发一个可以作为路由器的 C++ 应用程序。此应用程序在给定端口上接收 UDP 数据包(每秒近 37 个字节),并且必须在 10 毫秒内将它们多播到另一个目的地。但是,有时在数据包接收后,重传超过了 10 ms 的限制,可以达到 100 ms。这些禁区延迟是随机的。应用程序在同一个以太网接口但在不同端口上接收其他类型的数据包(每秒最多 200 个近 100 字节的数据包)。我不确定这个后来的流是否会破坏另一个流,因为这些延迟峰值太少了(10000 个数据包中有 2 个数据包)
这些零星延误的原因可能是什么?以及如何解决它们?
PS 我的应用程序在 Linux 2.6.18-238.el5PAE 上运行。延迟是在数据包的接收和传输成功之后测量的!
更清晰的图像: