有人可以指点一个好的起点来了解libpcap如何从网络驱动程序获取数据包吗?我打算用快速实现替换接收函数。
答案 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的开发者”类别,就像有人编写捕获模块一样。)