最快的方式来读取networking数据?

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

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

我从来没有写过网卡的驱动程序(但是如果不像编写整个操作系统那样困难,我会感兴趣?)。 我可以获得已经存在的驱动程序代码,这些驱动程序代码必须存在于Linux的某处,并将其“移植”到用户空间中? Linux内核驱动程序和我的驱动程序都试图竞争相同的数据包?

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

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

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

编辑:

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

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

本周,Mellanox宣布推出最新版本的VMA 6.0消息加速器,其中包括通过ConnectX-3 VPI适配器卡增强的TCP和UDP加速支持。 由于超低的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 。