1

我是 DPDK 的新手,我正在尝试编写自己的应用程序,它会以线速捕获数据包。我可以将默认内核空间 libpcap long 与 dpdk ring 和 lcore 一起使用吗?或者我可以使用 dpdk 包中的 librte_pmd_pcap。

Librte_pmd_pcap 在内部使用内核空间 libpcap。

而且我不知道如何在我自己的 dpdk 应用程序中使用 librte_pmd_pcap。有人可以帮助我在我们自己的 dpdk 应用程序中使用 librte_pmd_pcap 来捕获 tcp 数据包。

*我已经测试了 dpdk 软件包附带的 testpmd 应用程序,testpmd 工作正常。我需要你的帮助来编写我自己的 dpdk 应用程序。提前致谢。

4

2 回答 2

2

我能够将 rte_eth_pcap.c 包含到应用程序代码中并访问 api。这让我可以在我的应用程序中使用 -vdev EAL 选项。

于 2017-03-19T19:13:27.370 回答
1

如果通过“librte_pmd_pcap”你指的是这个源文件,它使用 libpcap,这是一个用户模式库;它不是内核的一部分。它在其支持的操作系统(复数)上使用内核模式机制;它在 *BSD、OS X 和 Solaris 11 上使用 BPF;它在 Linux 上使用 PF_PACKET 套接字(除非你在一个古老的 Linux 上,在这种情况下它使用 SOCK_PACKET 套接字);ETC..

您可以直接使用 libpcap,它将使用与使用 libpcap 的任何其他代码相同的内核机制,包括我链接到的代码。

于 2015-11-15T08:43:08.337 回答