【发布时间】:2021-05-04 14:40:09
【问题描述】:
我们正在使用 DPDK 捕获多播 UDP 流,在捕获来自 VLAN 中继端口的多播数据包方面需要帮助。我们 Linux 服务器上的 pNIC(Intel x710)连接到交换机上的中继端口,因此接收来自 2 个 VLAN 的数据包。我们的 Linux 服务器在裸机上安装了 CentOS(没有使用虚拟机管理程序)。
在非 VLAN 流量的正常情况下,我们将物理 NIC 与 DPDK 绑定并为其创建一个 KNI 端口(具有明确定义的 IP)(KNI 是发出多播加入请求时需要的,而没有 KNI 端口我们无法提出加入请求)。
对于 VLAN 流量,我们服务器的物理端口连接到交换机上的中继端口。在 Linux 服务器上,我们配置了两个 VLAN 接口 pNIC.10 和 pNIC.20 分别接收来自 VLAN 10 和 20 的数据包(参考https://www.linuxtechi.com/vlan-tagged-nic-ethernet-card-centos-rhel-servers/)。在这种情况下,我们仍然需要将物理端口与 DPDK 绑定,因为绑定发生在 PCI 设备 id 上(VLAN IF 没有 PCI id)。但是,我们无法确定要创建什么以及要创建多少个 KNI 端口。已尝试创建两个 KNI 端口 - 每个 VLAN ID 一个,但这对我们不起作用。在这种情况下无法启用 KNI 端口。
任何帮助将不胜感激!
【问题讨论】:
-
能否请您更新以下信息,dpdk 版本、网卡型号、固件、RX vlan 的 DPDK 应用程序设置、多播 IP 接受、示例程序(如果有)?也请描述实际问题
-
要求vlan tag-1重定向到Kernel interface-1,vlan tag-2重定向到Kernel interface-2?
-
@VipinVarghese 我们正在使用带有 Intel x710 DA-4 NIC 的 DPDK 版本 18。我在原始帖子中添加了一个图表以使事情变得清晰。我们面临的问题是我们无法通过带有来自多个 VLAN 的数据的 VLAN 标记端口捕获多播数据包。不用说,两个 VLAN 有不同的子网。我们希望使用 Intel x710 NIC 上的单个物理端口捕获来自 172.16.1.x 和 172.16.2.x 的多播数据。
-
下列说法正确吗? DPDK口你用的是PF口,还有VF口。 linux 或 DPDK 中都没有为流过滤启用 MAC-VLAN。 DPDK 在混杂和所有多播接收中启用?在 dpdk 中禁用 vlan 标记删除?是否允许在 dev_Configure 中启用所有 vlan?
-
DPDK 正在与 PF 端口一起使用。没有 VF 端口。在 linux 或 DPDK 中没有为流过滤启用 MAC-VLAN - 是的 DPDK 在混杂中启用 - 是的,所有多播接收 - 是的,但只有在启用 IGMP 后发送加入请求时 dpdk 中禁用了 Vlan 标记删除 - 是.我猜你指的是 VLAN 条带。我们确实设置了 local_port_conf.rxmode.hw_vlan_filter = 1 虽然允许在 dev_Configure 中启用所有 vlan - 不确定这指的是什么属性。可以分享一下具体的名字吗?