dpdk rss

 

testpmd 

                if (nb_rxq > 1) {
                        port->dev_conf.rx_adv_conf.rss_conf.rss_key = NULL;
                        port->dev_conf.rx_adv_conf.rss_conf.rss_hf =
                                rss_hf & port->dev_info.flow_type_rss_offloads;
                } else {
                        port->dev_conf.rx_adv_conf.rss_conf.rss_key = NULL;
                        port->dev_conf.rx_adv_conf.rss_conf.rss_hf = 0;
                }

                if (port->dcb_flag == 0) {
                        if( port->dev_conf.rx_adv_conf.rss_conf.rss_hf != 0)
                                port->dev_conf.rxmode.mq_mode = ETH_MQ_RX_RSS;
                        else
                                port->dev_conf.rxmode.mq_mode = ETH_MQ_RX_NONE;
                }

 

        if (!strcmp(res->value, "all"))
                rss_conf.rss_hf = ETH_RSS_IP | ETH_RSS_TCP |
                                ETH_RSS_UDP | ETH_RSS_SCTP |
                                        ETH_RSS_L2_PAYLOAD;
        else if (!strcmp(res->value, "ip"))
                rss_conf.rss_hf = ETH_RSS_IP;
        else if (!strcmp(res->value, "udp"))
                rss_conf.rss_hf = ETH_RSS_UDP;
        else if (!strcmp(res->value, "tcp"))
                rss_conf.rss_hf = ETH_RSS_TCP;
        else if (!strcmp(res->value, "sctp"))
                rss_conf.rss_hf = ETH_RSS_SCTP;
        else if (!strcmp(res->value, "ether"))
                rss_conf.rss_hf = ETH_RSS_L2_PAYLOAD;
        else if (!strcmp(res->value, "port"))
                rss_conf.rss_hf = ETH_RSS_PORT;
        else if (!strcmp(res->value, "vxlan"))
                rss_conf.rss_hf = ETH_RSS_VXLAN;

 

DPDK 之 RSS

RSS(receive side scaling)是由微软提出的一种负载分流方法,通过计算网络数据报文中的网络层&传输层二/三/四元组HASH值,取HASH值的最低有效位(LSB)用于索引间接寻址表RETA(Redirection Table),间接寻址表RETA中的保存索引值用于分配数据报文到不同的CPU接收处理。现阶段RSS基本已有硬件实现,通过这项技术能够将网络流量分载到多个CPU上,降低操作系统单个CPU的占用率。

Redirection Table(RETA)

82599-RSS-Block-Diagram
INTEL 82576/82599 RETA 为一个包含位宽 4 BITS 的 128 项的索引映射表,通过取固定取HASH值低7位(LSBs),将其映射到RETA表项。输出索引可在运行时动态调整更新来实现网络流量动态的负载均衡,但是更新不能保证与数据报文同步生效。

:
82576/82599 RETA 4位宽的RSS输出索引意味着RSS最大只支持16队列分流,超过16队列之后的队列RSS无法分流。
INTEL XL710 PF RETA 大小 256, 位宽 6 BITS,支持最大 64 队列分流.
INTEL XL710 VF RETA 大小 64, 位宽 4 BITS,支持最大 16 队列分流.

 

posted on 2020-10-30 19:16  tycoon3  阅读(358)  评论(0编辑  收藏  举报

导航