veth 接口和 testpmd

问题描述 投票:0回答:2

我想看看我们是否可以将 linux veth 接口附加到 testpmd 应用程序

https://doc.dpdk.org/guides/testpmd_app_ug/testpmd_funcs.html#port-functions

从上面的链接中,它展示了如何通过将 NIC 移动到轮询模式驱动程序来将 NIC 连接到 testpmd,从而允许 NIC 连接到 testpmd 应用程序。

同样,我们是否有支持 veth 轮询模式的驱动程序? 请告诉我是否有人尝试过这个

linux containers dpdk dpdk-pmd
2个回答
1
投票

当前查询中有多个问题和一些假设需要修正。因此请在下面找到相同问题的答案

[问题1] 我们有支持 veth 轮询模式的驱动程序吗?

【解答】目前没有,没有轮询模式驱动程序(PMD)。其中使用LINUX veth接口。请参阅当前可用的 PMD 物理和虚拟接口

[问题 2] https://doc.dpdk.org/guides/testpmd_app_ug/testpmd_funcs.html#port-functions。从上面的链接,它显示了如何通过将 NIC 移动到轮询模式驱动程序来将 NIC 连接到 testpmd,从而允许 NIC 连接到 testpmd 应用程序`

[解答] DPDK 不支持所有供应商 NIC,必须使用

uio
物理驱动程序实现轮询库。以下是通过用户空间驱动程序支持的 NIC 列表。

对于不支持的物理网卡,有 1 种已知的替代方法可以连接和使用。使用基于

PCAP
的 PMD 通过 PCAP PMD 充当端口表示。通过 eal 命令行参数使用虚拟设备初始化
--vdev 'net_pcap0,iface=<interface name>
可以将数据包读写到 NIC 接口。

关于共享的链接https://doc.dpdk.org/guides/testpmd_app_ug/testpmd_funcs.html#port-functions,根据您的要求,它可能是

 port attach net_pcap0,iface=<your kernel interface>
。但我的建议是使用
./dpdk-testpmd --no-pci --vdev=net_pcap0,iface=<your kernel interface> -- -i
启动 testpmd。这将启动没有 PCI 设备的 testpmd,而是虚拟 PCAP PMD 设备,其中 PCAP 库用于与内核 NIC 端口连接(假设您已经安装了 libpcap-dev 并相应地构建了 dpdk)。

[问题3]我们是否可以将linux veth接口附加到testpmd应用程序

[答案] 至少在 DPDK 18.11 LTS、19.11 LTS 和 20.11 LTS 中,我使用了

net_pcap
PMD 与 1 个 veth 接口(用于命名空间和 docker)进行交互。

注意:自DPDK版本、libpcap版本、veth步骤不再共享;很难知道您是否遵循了正确的步骤。因此,如果您遇到问题,我的建议是下次与新问题分享详细信息。


0
投票

[问题1] 我们有支持

veth
轮询模式的驱动程序吗?

是的,有一个 PMD 可以做到这一点,

af_packet
。 Comcast 的 Andrew Wang 对此进行了演示:https://www.dpdk.org/wp-content/uploads/sites/35/2018/12/AndrewWang_FastPrototypingDPDKAppsInContainernet.pdf 创建 https://containernet.github .io/

通过传递以下 DPDK 参数,我能够使用

af_packet
绑定到
veth
接口:
--vdev=net_af_packet,iface=veth-1

添加

--no-pci --no-huge
,以减少大页面和其他网络接口的麻烦。

© www.soinside.com 2019 - 2024. All rights reserved.