zoukankan      html  css  js  c++  java
  • 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 队列分流.

  • 相关阅读:
    AwaitAsync(异步和多线程)
    Newtonsoft.Json高级用法
    C# DataTable 去重复数据方法
    C# List 根据对象属性去重的四种方法对比
    C# <T>泛型的使用
    LeetCode 368. Largest Divisible Subset
    LeetCode 357. Count Numbers with Unique Digits
    LeetCode 350. Intersection of Two Arrays II
    LeetCode 349. Intersection of Two Arrays
    LeetCode 344. Reverse String
  • 原文地址:https://www.cnblogs.com/dream397/p/13903809.html
Copyright © 2011-2022 走看看