libpcap如何从驱动程序接收数据包?

时间:2014-04-21 00:19:59

标签: linux networking libpcap

有人可以指点一个好的起点来了解libpcap如何从网络驱动程序获取数据包吗?我打算用快速实现替换接收函数。

1 个答案:

答案 0 :(得分:3)

“接收功能”是:

  • 标准驱动程序接收功能,与用于接收数据包的功能没有什么不同,并将它们传递给常规网络堆栈;
  • 常规网络堆栈的“数据包套接字”部分。

Some Intel slides on DPDK似乎表明DPDK允许用户空间代码更直接地与网络适配器通话。这意味着使用libpcap的正确方法是编写一个使用DPDK的libpcap“模块”。

Libpcap暂时支持拥有多个“模块”来捕获流量的能力。这些不是可以在运行时加载的插件模块(可能会在某天发生,但是,由于libpcap可能需要额外的权限才能捕获流量,因此必须完成对第三方插件模块的支持 非常 ,以防止不受信任的代码以这些权限运行!);它们被编译成libpcap。

libpcap源代码模块的一些示例,除了各种操作系统的“默认”模块外,Myricom NIC为pcap-snf.c,Endace DAG卡为pcap-dag.c

如果你想进一步追求,最好是你订阅tcpdump-workers mailing list并继续讨论。 (它不是一个非常高流量的列表,尽管它的名字,它既适用于libpcap和tcpdump的用户和开发人员;你也会陷入“libpcap的开发者”类别,就像有人编写捕获模块一样。)