首页 > 解决方案 > 无法使用 DPDK 捕获 VLAN 标记的数据包

问题描述

我们正在使用 DPDK 捕获多播 UDP 流,需要帮助来捕获来自 VLAN 中继端口的多播数据包。我们 Linux 服务器上的 pNIC(Intel x710)连接到交换机上的中继端口,因此接收来自 2 个 VLAN 的数据包。我们的 Linux 服务器在裸机上安装了 CentOS(没有使用管理程序)。

在非 VLAN 流量的正常情况下,我们将物理网卡与 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 服务器/)。在这种情况下,我们仍然需要将物理端口与 DPDK 绑定,因为绑定发生在 PCI 设备 id上(VLAN IF 没有 PCI id)。但是,我们无法确定要创建什么以及要创建多少个 KNI 端口。已尝试创建两个 KNI 端口 - 每个 VLAN ID 一个,但这对我们不起作用。在这种情况下无法启用 KNI 端口。

任何帮助将不胜感激 !!

标签: linuxvlan

解决方案


我们已经能够通过以下步骤解决手头的问题:

  • 物理网卡端口 (p1p1) 绑定到 DPDK。
  • 名称为 p1p1 的 KNI 端口在物理 NIC 端口之上创建。没有为该 KNI 端口分配 IP 地址。
  • VLAN 接口使用 p1p1 作为主设备添加
    • “ip 链接添加链接 p1p1 名称 p1p1.10 类型 vlan id 10”
    • “ip 链接添加链接 p1p1 名称 p1p1.20 类型 vlan id 20”
  • 启动 VLAN IF
    • “ip link set dev p1p1.10 up”
    • “ip 链接设置开发 p1p1.20 向上”
  • 为 p1p1.10 和 p1p1.20 分配适当的 IP

发布此消息后,我们可以发送多播加入请求并在 DPDK 绑定端口上接收流。


推荐阅读