可有人请点我一个很好的起点,学习如何从的libpcap的网络驱动程序获取其数据包? 我的打算是,以取代接收功能与快速实施。
Answer 1:
“接收功能”是:
- 标准驱动程序接收功能,从什么是用于接收数据包,并将其交给常规网络堆栈没有什么不同;
- 常规网络堆栈的“包插座”的一部分。
在DPDK一些英特尔的幻灯片似乎表明DPDK更直接地让用户空间代码聊到网络适配器。 这意味着,以正确的方式使用,与libpcap的是写一个libpcap的“模块”,它使用DPDK。
libpcap的都有,一会儿,支持有多个“模块”来捕获流量的能力。 这些可以在运行时加载不插件模块(也可能有一天会发生,但正如libpcap的可能,以捕捉交通需要额外的特权,为第三方插件模块的支持就必须做得非常仔细,以防止不可信从这些特权运行的代码)!; 他们编译成libpcap的。
在libpcap的源模块的一些实例中,比关于各种操作系统的“默认”模块等,是pcap-snf.c
为Myricom的NIC和pcap-dag.c
为了Endace DAG卡。
如果您想进一步追究,它很可能是最好的,如果你订阅了tcpdump的工人邮件列表 ,并继续讨论那里。 (这不是一个非常高流量的名单,尽管它的名字,它是为用户和两个libpcap的和tcpdump的开发商,你会落入类别“的libpcap的开发商”,因为有人写捕获模块。)
文章来源: How libpcap receive a packet from the driver?