libpcap(> 1.0.0)和PF_RING效率

时间:2013-11-02 13:58:47

标签: c++ linux networking libpcap

我正在使用libpcap 1.4.0来从设备捕获数据包(我正在使用linux)。 我正在遭受数据包丢失的困扰,经过对它的研究,我找到了PF_RING,现在我正在考虑使用它。

问题是,我真的不明白为什么使用PF_RING比使用libpcap的PF_PACKET更有效,当libpcap的默认数据包捕获方法是“零拷贝”(因为libpcap 1.0.0),以及PF_RING的.. 。

有人可以解释一下为什么,使用libpcap 1.0.0及更高版本,使用PF_RING比使用PF_RING更有效(如果它实际上更有效)?

提前谢谢! :)

1 个答案:

答案 0 :(得分:2)

根据https://stackoverflow.com/a/8897187/288875,仍然有一个副本从内核的套接字缓冲区(sk_buff)到你将要读取的内存。 PF_RING似乎来执行此副本(据我记得,正在处理bypass处理从网卡接收的数据的正常内核机制。)