2

我有哪些替代方法可以在最快的时间内读取数据包?

在用户空间编写驱动程序?

我从来没有为网卡写过驱动程序(尽管如果它不像写一个完整的操作系统那么难我会感兴趣吗?)。我能否获得已经存在的驱动程序代码,它必须存在于 Linux 的某个地方,并将其“移植”到用户空间?Linux 内核驱动程序和我的驱动程序会尝试竞争相同的数据包吗?

不是编写驱动程序,而是从 C/C++ 应用程序堆栈后立即访问网络数据?

我对这种方法知之甚少-因此,如果有人可以在这里提供帮助,我会很感兴趣。

我有兴趣实现我自己的零拷贝技术以尽可能快地获取数据包数据。这台计算机不需要使用普通的互联网——它可以是两台计算机之间的专有网络连接(用于 TCP 和 UDP)。

编辑:

我的意思是延迟,而不是吞吐量

4

2 回答 2

2

正如您所说,在 Linux 中接收数据包的最低延迟是绕过需要特殊驱动程序的 Linux 内核。来自 Mellanox、Solarflare、Myricom、Chelsio 等的高端网络适配器提供内核绕过软件。例如,Mellanox 声称您可以使用他们的 ConnectX-3 卡和 VMA 6.0 软件在 2 微秒内收到一个数据包

本周 Mellanox 宣布了其最新版本的 VMA 6.0 消息传递加速器,其中包括通过 ConnectX-3 VPI 适配器卡增强的 TCP 和 UDP 加速支持。凭借低于 1.4 微秒的超低 UDP 延迟和低于 1.7 微秒的 TCP 套接字延迟,据报道,这种消息传递技术比竞争产品快两倍以上。

http://insidehpc.com/2012/01/10/interview-mellanox-vma-6-0-tackles-latency-for-high-frequency-trading/

于 2013-08-16T21:46:22.387 回答
1

我会说使用 PCap 应该足够快。他们还为 linux 修改了具有改进性能的版本 - PF_RING / PF_RING DNA

于 2013-08-16T23:13:54.737 回答