我正在尝试构建一个多 RX 队列 dpdk 程序,使用 RSS 将传入流量拆分为单个端口上的 RX 队列。Mellanox ConnectX-5 和 DPDK 版本 19.11 用于此目的。当我使用 IP over Ethernet 数据包作为输入时,它工作正常。但是,当数据包包含基于以太网的 MPLS 上的 IP 时,RSS 似乎不起作用。因此,所有属于MPLS 上的各种流(具有不同的 IP、端口)的数据包都被发送到同一个 RX 队列中src
。dst
我的查询是
- DPDK 中是否有任何参数/技术将 MPLS 数据包分发到多个 RX 队列?
- 有没有办法在硬件中剥离 MPLS 标签(在 Eth 和 IP 之间),比如
hw_vlan_strip
?
我的端口配置是
const struct rte_eth_conf default_port_conf = {
.rxmode = {
.hw_vlan_strip = 0, /* VLAN strip enabled. */
.header_split = 0, /* Header Split disabled. */
.hw_ip_checksum = 0, /* IP checksum offload disabled. */
.hw_strip_crc = 0, /* CRC stripping by hardware disabled. */
},
.rx_adv_conf = {
.rss_conf = {
.rss_key = NULL,
.rss_key_len = 0,
.rss_hf = ETH_RSS_IP,
},
} };