libpcap编程(2)DPDK下的数据包捕获

DPDK和libpcap的结合
最近阅读DPDK刚好阅读到 libret_pdump库,该库类似于libpcap提供一个数据包捕获的框架,并在dpdp目录的app/pdump下提供了一个根据该库开发的数据包捕获程序。该库将Rx和Txmbufs的完整副本复制到新的mempool中,因为涉及到数据包的复制,会降低应用程序的性能,所以官方文档建议是用于调试使用。
该库提供一系列API初始化数据包的捕获框架,其中也包括禁用或者启用数据包捕获,以及初始化。官方的解释如下:
  • rte_pdump_init(): This API initializes the packet capture framework.
  • rte_pdump_enable(): This API enables the packet capture on a given port and queue. Note: The filter option in the API is a place holder for future enhancements.
  • rte_pdump_enable_by_deviceid(): This API enables the packet capture on a given device id (vdev name or pci address) and queue. Note: The filter option in the API is a place holder for future enhancements.
  • rte_pdump_disable(): This API disables the packet capture on a given port and queue.
  • rte_pdump_disable_by_deviceid(): This API disables the packet capture on a given device id (vdev name or pci address) and queue.
  • rte_pdump_uninit(): This API uninitializes the packet capture framework.
  • rte_pdump_set_socket_dir(): This API sets the server and client socket paths. Note: This API is not thread-safe.
该部分数据在dpdk-17.02 /lib/librte_pdump/ rte_pdump.h下有相关说明。
本打算通过编程的方式实现这部分代码,但是因为主机中只有一块网卡,不能进行绑定,所以针对编程部分,只有在后期实验中加以论证。
libret_pdump库采用C/S模型工作,服务器用于启用或者禁止数据包捕获,客户端用于负责请求启用或者禁用数据包捕获功能。


你可能感兴趣的:(编程小结)