1

我正在开发一个可以作为路由器的 C++ 应用程序。此应用程序在给定端口上接收 UDP 数据包(每秒近 37 个字节),并且必须在 10 毫秒内将它们多播到另一个目的地。但是,有时在数据包接收后,重传超过了 10 ms 的限制,可以达到 100 ms。这些禁区延迟是随机的。应用程序在同一个以太网接口但在不同端口上接收其他类型的数据包(每秒最多 200 个近 100 字节的数据包)。我不确定这个后来的流是否会破坏另一个流,因为这些延迟峰值太少了(10000 个数据包中有 2 个数据包)

这些零星延误的原因可能是什么?以及如何解决它们?

PS 我的应用程序在 Linux 2.6.18-238.el5PAE 上运行。延迟是在数据包的接收和传输成功之后测量的!

更清晰的图像: 在此处输入图像描述

4

1 回答 1

2

对于非实时操作系统来说,10 毫秒是一个艰难的最后期限。

总体而言,在 Linux 上生成以太网流量以进行调度的任务并非易事。例如见BRUTE,一个高性能的流量生成器;也许你会在它的代码或研究论文中找到有用的东西。

于 2012-09-17T09:51:02.667 回答