DPDK(17):网卡多队列技术与RSS功能介绍、DPDK多队列 您所在的位置:网站首页 dpdk队列 DPDK(17):网卡多队列技术与RSS功能介绍、DPDK多队列

DPDK(17):网卡多队列技术与RSS功能介绍、DPDK多队列

2024-07-06 19:26| 来源: 网络整理| 查看: 265

2.什么是RSS

RSS(Receive Side Scaling)是一种能够在多处理器系统下使接收报文在多个CPU之间高效分发的网卡驱动技术。

网卡对接收到的报文进行解析,获取IP地址、协议和端口五元组信息网卡通过配置的HASH函数根据五元组信息计算出HASH值,也可以根据二、三或四元组进行计算。取HASH值的低几位(这个具体网卡可能不同)作为RETA(redirection table)的索引根据RETA中存储的值分发到对应的CPU

下图描述了完整的处理流程:

基于RSS技术程序可以通过硬件在多个CPU之间来分发数据流,并且可以通过对RETA的修改来实现动态的负载均衡。

3.在DPDK中配置RSS

DPDK支持设置静态hash值和配置RETA。 不过DPDK中RSS是基于端口的,并根据端口的接收队列进行报文分发的。 例如我们在一个端口上配置了3个接收队列(0,1,2)并开启了RSS,那么 中就是这样的:

{0,1,2,0,1,2,0.........}

运行在不同CPU的应用程序就从不同的接收队列接收报文,这样就达到了报文分发的效果。

在DPDK中通过设置rte_eth_conf中的mq_mode字段来开启RSS功能, rx_mode.mq_mode = ETH_MQ_RX_RSS。

当RSS功能开启后,报文对应的rte_pktmbuf中就会存有RSS计算的hash值,可以通过pktmbuf.hash.rss来访问。 这个值可以直接用在后续报文处理过程中而不需要重新计算hash值,如快速转发,标识报文流等。

RETA是运行时可配置的,这样应用程序就可以动态改变CPU对应的接收队列,从而动态调节报文分发。 具体通过PMD模块的驱动进行配置,例如ixgbe_dev_rss_reta_update和ixgbe_dev_rss_reta_query。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有