前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Vpp使用dpdk RSS功能部分报文不生效问题

Vpp使用dpdk RSS功能部分报文不生效问题

作者头像
dpdk-vpp源码解读
发布2023-03-07 17:05:13
9470
发布2023-03-07 17:05:13
举报
文章被收录于专栏:DPDK VPP源码分析DPDK VPP源码分析

1、问题背景

测试在验证vpp多队列模式时,发现sctp报文的在X710网卡上不生效。

在vpp使用命令行 show hardware-interfaces 查询网卡相关功能(offload、rx tx队列等)使能情况,发现支持ipv4-sctp但是未开启。具体如下:

rss avail 表示当前网卡所支持的pctype类型。

rss active :表示当前已生效的pctype类型。

下图是X710网卡驱动pctype类型及hash输入设置

2、梳理了一下rss设置流程

1、vpp代码设置代码:

在代码1908/src/plugins/dpdk/device/init.c :394行。多队列模式下是默认开启rss功能的。但是rss_hf只使能了IP、UDP、TCP;未使能SCTP有没有设置sctp报文。

从代码流程分析是下面标红处未设置SCTP,但是未经过测试验证,待确认:

我们通过vpp配置文件/etc/vpp/startup.conf修改rss支持 sctp报文识别,并查询rss active情况:

下图是网卡初始化流程中设置rss函数调用流程。

代码语言:javascript
复制
dpdk_process()->dpdk_lib_init()->dpdk_device_setup()->dpdk_device_start()
在X710网卡会调用到函数i40e_dev_start接口。

2、dpdk 相关处理

代码语言:javascript
复制
#调用流程如下完成rss配置设置
i40e_dev_start()->i40e_dev_rxtx_init()->i40e_dev_rx_init()
->i40e_pf_config_mq_rx()->i40e_pf_config_rss()
#最终完成RSS的设置工作。rss_conf = pf->dev_data->dev_conf.rx_adv_conf.rss_conf;
return i40e_hw_rss_hash_set(pf, &rss_conf);

另外dpdk还提供了对外接口进行rss设置,如下:

代码语言:javascript
复制
rte_eth_dev_rss_hash_update() 通过调用响应网卡对应的PMD驱动提供的ops操作函数
            dev->dev_ops->rss_hash_update来完成设置。i40e_dev_rss_hash_update() X710对应网卡RSS对外提供的接口函数
    对应文件在drivers/net/i40e/i40e_ethdev.c :501 行查询 .rss_hash_update挂接的函数。

3、RSS 相关知识

  • 没有开启 rss:
    • 则所有报文只会从一个硬件队列来收包。
  • 开启 rss 后:
    • rss 会解释报文的 l3 层信息:ip 地址。甚至 l4 层信息:tcp/udp 端口。
    • 报文会经过 hash function 计算出一个 uint32_t 的 rss hash。填充到 struct rte_mbuf 的 hash.rss字段中。
    • rss hash 的 低7位 会映射到 4位长 的 RSS output index
    • 无法解释的 报文,rss hashRSS output index 设置为 0。

参考文章:https://blog.csdn.net/yk_wing4/article/details/101285890

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DPDK VPP源码分析 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档