2013-11-02 14 views
3

我正在使用libpcap 1.4.0爲了從設備捕獲數據包(我正在使用linux)。 我正在遭受數據包丟失,經過對它的研究,我發現了PF_RING,現在我正在考慮使用它。libpcap(> 1.0.0)和PF_RING效率

問題是,我不明白爲什麼使用PF_RING比使用libpcap的PF_PACKET更有效率,當libpcap的默認數據包捕獲方法是「zero-copy」(自libpcap 1.0.0以來)以及PF_RING的。 ..

可有人請解釋一下我爲什麼,與libpcap的1.0.0或更高版本,使用PF_RING會更有效(如果它實際上是更有效)比不使用它?

預先感謝您! :)

回答

2

根據https://stackoverflow.com/a/8897187/288875還有從內核的socket緩衝區(sk_buff的)一個副本,你會讀到內存。 PF_RING似乎不是要做這個副本(據我記得,處理從網卡接收的數據的正常內核機制)pfring bypass

+0

OK,我覺得現在弄明白了。所以在'PF_PACKET'你必須從內核'KSBUFF'到libpcaps'緩衝,而在'PF_RING'你跳過這兩個內核空間和用戶空間的一個副本甚至是那個副本? – user2508653

+0

@ user2508653以什麼數據速率獲得libpcap丟包? –