背景
我想创建一个测试应用程序来测试不同系统的网络性能。为此,我计划让该机器通过一个专用网络(否则非繁忙)发送以太网帧到另一台机器(或设备),该设备只需接收消息并将其发送回来。发送应用程序将记录总往返时间(以及其他内容)。
测试的目的是查看特定系统(操作系统 + 组件等)在网络流量方面的表现。这在下图中表示为机器A。请注意,我不关心网络基础设施(交换机、电缆等)的性能 - 我试图测试从网络卡到用户空间的网络流量的性能。
我们将(尝试)测量各种事物,其中之一是消息的总往返时间,还包括机器A的中断延迟、一般驱动程序开销等。机器A将是实时系统。但是为了支持这些测试,我需要一个可以反弹消息并以其他方式向被测试系统添加网络刺激的单独机器。下图中的这个单独的机器是机器B,这也是本问题的重点。
问题
我想开发一个应用程序,可以尽可能一致(最好是低)地延迟接收并返回这些消息。我希望获得的延迟在几微秒内保持一致。为简单起见,我想在像Windows或Linux这样的通用操作系统上进行测试,但我可以考虑其他建议。除了操作系统和我的测试应用程序之外,该机器上将没有其他负载(CPU或其他负载)。
我想到以下方法:
- 在用户空间运行的普通应用程序,具有高优先级
- 运行在内核空间的线程,以避免用户空间/内核空间转换
- 已经执行此操作的现成设备(尽管我尚未找到)
问题
是否有其他方法或框架已经实现了这一点?为了获得一致且低延迟的结果,我还需要考虑哪些方面?哪种方法是推荐的?