2014-04-21 28 views
0

有人可以請我指出一個好的開始地方,瞭解libpcap如何從網絡驅動程序獲取數據包?我的目的是用快速實施來取代接收功能。libpcap如何從驅動程序接收數據包?

+0

哪個平臺?其基本思想是它將自己的驅動程序插入到協議棧中。細節因平臺而異。如果你能從根本上提高一直以來一直在努力的事情的速度,那將是一件令人驚訝的事情。 – EJP

+0

這將在Linux中。基本上,我想用Intel DPDK驅動程序替換ixgbe。 – Patrick

回答

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開發人員」類別,因爲有人正在編寫捕獲模塊。)

相關問題