我是DPDK的新手,我正在尝试编写自己的应用程序,它会以线速捕获数据包。我可以使用dpdk ring和lcore的默认内核空间libpcap。或者我可以使用librte_pmd_pcap,它是dpdk包的一部分。
Librte_pmd_pcap在内部使用内核空间libpcap。
我不知道如何在我自己的dpdk应用程序中使用librte_pmd_pcap。 有人可以帮助我在我们自己的dpdk应用程序中使用librte_pmd_pcap来捕获tcp数据包。
*我已经测试了dpdk软件包附带的testpmd应用程序,testpmd工作正常。我需要你的帮助来编写我自己的dpdk应用程序。提前谢谢。
答案 0 :(得分:1)
如果通过" librte_pmd_pcap"你指的是this source file,它使用了libpcap,这是一个用户模式库;它不是内核的一部分。它在它支持的操作系统(复数)上使用内核模式机制;它在* BSD,OS X和Solaris 11上使用BPF;它在Linux上使用PF_PACKET套接字(除非您使用古老的Linux,在这种情况下它使用SOCK_PACKET套接字);等。
您可以直接使用libpcap,它将使用与使用libpcap的任何其他代码相同的内核机制,包括我链接的代码。
答案 1 :(得分:1)
我能够将rte_eth_pcap.c包含到应用程序代码中并访问api。这允许我在我的应用程序中使用-vdev EAL选项。