读取网络数据的最快方法

Quickest way to read network data?

本文关键字:方法 网络 数据 读取      更新时间:2023-10-16

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

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

我从未为网卡编写过驱动程序(尽管如果它不像编写整个操作系统那么困难,我会感兴趣吗?)。我可以获得Linux中某个地方必须存在的现有驱动程序代码,并将其"移植"到用户空间吗?Linux内核驱动程序和我的驱动程序会试图争夺相同的数据包吗?

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

我对这种方法了解不多,所以如果有人能在这里帮忙,我会感兴趣的。

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

编辑:

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

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

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

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

我认为使用PCap应该足够快。他们还修改了linux的版本,提高了性能——PF_RING/PF_RING DNA。