• DPDK 之 Symmetric Receive-side Scaling


    DPDK 之 Symmetric Receive-side Scaling

    上篇介绍到RSS HASH默认RK是一个非对称KEY,也就是同一条数据流收、发这两个方向的数据包的RSS HASH值是不同的。在IDS/DPI等流量分析应用场景中,同一条流数据由非对称HASH计算将分流到不同的CPU,这样极大的增加了应用负担,降低了处理能力。为了解决这个问题,有人提出了修改(RSSRK),将其改为重复的16个bits,来获取对称的结果。具体详情可查阅Scalable TCP Session Monitoring with Symmetric Receive-side Scaling此篇论文,这里不再详述。

    对称RK为以下320 bits数据,将其写入网卡RSSRK寄存器(82599)即可:

    0x6d5a 0x6d5a 0x6d5a 0x6d5a
    0x6d5a 0x6d5a 0x6d5a 0x6d5a
    0x6d5a 0x6d5a 0x6d5a 0x6d5a
    0x6d5a 0x6d5a 0x6d5a 0x6d5a
    0x6d5a 0x6d5a 0x6d5a 0x6d5a

    DPDK 可通过 API rte_eth_dev_rss_hash_update 动态修改当前网卡 RSS HASH KEY, 具体可参考testpmd 中 port_rss_hash_key_update 与 cmd_config_rss_parsed 详细实现:

    void
    port_rss_hash_key_update(portid_t port_id, char rss_type[], uint8_t *hash_key,
                 uint hash_key_len)
    {
        struct rte_eth_rss_conf rss_conf;
        int diag;
        unsigned int i;
    
        rss_conf.rss_key = NULL;
        rss_conf.rss_key_len = hash_key_len;
        rss_conf.rss_hf = 0;
        for (i = 0; i < RTE_DIM(rss_type_table); i++) {
            if (!strcmp(rss_type_table[i].str, rss_type))
                rss_conf.rss_hf = rss_type_table[i].rss_type;
        }
        diag = rte_eth_dev_rss_hash_conf_get(port_id, &rss_conf);
        if (diag == 0) {
            rss_conf.rss_key = hash_key;
            diag = rte_eth_dev_rss_hash_update(port_id, &rss_conf);
        }
        if (diag == 0)
            return;
    
        switch (diag) {
        case -ENODEV:
            printf("port index %d invalid
    ", port_id);
            break;
        case -ENOTSUP:
            printf("operation not supported by device
    ");
            break;
        default:
            printf("operation failed - diag=%d
    ", diag);
            break;
        }
    }
  • 相关阅读:
    利用HttpClient进行带参数的http文件上传
    使用mysqlproxy 快速实现mysql 集群 读写分离 [转]
    SQL Server Express 自动备份方法
    screen 配置文件
    linux启动DHCP
    dynamic table_name in cursor
    LogMiner and supplemental logging
    RAC 规划配置网络环境
    RAC prepare OS and installation media
    一次导数据流程
  • 原文地址:https://www.cnblogs.com/dream397/p/13920956.html
Copyright © 2020-2023  润新知