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, 具体可参考testpmdport_rss_hash_key_updatecmd_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\n", port_id);break;case -ENOTSUP:printf("operation not supported by device\n");break;default:printf("operation failed - diag=%d\n", diag);break;}
}

Reference

Scalable TCP Session Monitoring with Symmetric Receive-side Scaling

Symmetric RSS (Receive-Side scaling)

ntop - Hardware-based Symmetric Flow Balancing in DNA

DPDK - Symmetric Receive-side Scaling相关推荐

  1. DPDK笔记 RSS(receive side scaling)网卡分流机制

    DPDK笔记 RSS(receive side scaling)网卡分流机制 RToax 2020年9月 DPDK 网卡RSS(receive side scaling)简介 DPDK-RSS负载均衡 ...

  2. 《深入浅出DPDK》读书笔记(九):流分类与多队列、流过滤、虚拟化流分类方式、流分类技术的使用

    Table of Contents 94.Linux内核对多队列的支持 95.DPDK与多队列 98.流分类 99.RSS 100.Flow Director 101.服务质量 102.虚拟化流分类方 ...

  3. DPDK在DPVS中的应用及原理分析

    上一篇文章中我们已经介绍了DPVS的特点和部署方式,本文主要是用于介绍DPVS是如何实现前面所说的特点,或者说是如何提高性能的. 下图是爱奇艺的DPVS开发团队给出的DPVS在提高性能方面的操作,我们 ...

  4. linux 网卡rss hash,使用RSS提升DPDK应用的性能

    本文描述了RSS以及在DPDK中如何配置RSS达到性能提升和统一分发. DPDK 1.8.0 什么是RSS RSS(Receive Side Scaling)是一种能够在多处理器系统下使接收报文在多个 ...

  5. 《深入浅出DPDK》读书笔记(十五):DPDK应用篇(Open vSwitch(OVS)中的DPDK性能加速)

    Table of Contents Open vSwitch(OVS)中的DPDK性能加速 174.虚拟交换机简介 175.OVS简介 176.DPDK加速的OVS 177.OVS的数据通路 178. ...

  6. 《深入浅出DPDK》读书笔记(十四):DPDK应用篇(DPDK与网络功能虚拟化:NFV、VNF、IVSHMEM、Virtual BRAS“商业案例”)

    Table of Contents DPDK应用篇 DPDK与网络功能虚拟化 157.网络功能虚拟化 13.1.1起源 158.发展 159.OPNFV与DPDK NFV的部署 160.NFV的部署 ...

  7. 《深入浅出DPDK》读书笔记(十三):DPDK虚拟化技术篇(加速包处理的vhost优化方案)

    Table of Contents 加速包处理的vhost优化方案 142.vhost的演进和原理 143.Qemu与virtio-net 144.Linux内核态vhost-net 145.用户态v ...

  8. 《深入浅出DPDK》读书笔记(十二):DPDK虚拟化技术篇(半虚拟化Virtio)

    Table of Contents 半虚拟化Virtio 132.Virtio使用场景 133.Virtio规范和原理 11.2.1 设备的配置 1. 设备的初始化 2. 设备的发现 3. 传统模式v ...

  9. 《深入浅出DPDK》读书笔记(十一):DPDK虚拟化技术篇(I/O虚拟化、CPU虚拟化、内存虚拟化、VT-d、I/O透传)

    Table of Contents DPDK虚拟化技术篇 X86平台上的I/O虚拟化 120.X86平台上的I/O虚拟化 121.X86平台虚拟化概述 122.CPU虚拟化 123.内存虚拟化 124 ...

  10. 《深入浅出DPDK》读书笔记(十):硬件加速与功能卸载(VLAN、IEEE1588、IP TCP/UDP/SCTP checksum、Tunnel)

    Table of Contents 109.硬件卸载简介 110.网卡硬件卸载功能 111.DPDK软件接口 接收侧: 发送侧: 112.硬件与软件功能实现 113.VLAN硬件卸载 1. 收包时VL ...

最新文章

  1. AWS — AWS 上的 NFV
  2. boost::hana::repeat用法的测试程序
  3. 对于SAP的月结相关流程介绍
  4. python制作计算机程序_用 Python 开发实用程序 – 计算器
  5. Android AutoCompleteTextView控件实现类似百度搜索提示,限制输入数字长度
  6. H - Maximal submatrix HDU - 6957
  7. 高级Java必看的10本书
  8. 怎么升级计算机硬盘,研究僧 篇一:记一次老电脑的升级之路
  9. redis 简单应用
  10. SpringCloud Hoxton版微服务- OpenFeign实现服务调用
  11. 韩顺平php视频笔记70 面向对象编程的三大特征1 抽象 封装
  12. python搭建邮件服务器地址_python 配置邮件发送服务器发送邮件
  13. 30天敏捷结果(1):总体认识Getting Result敏捷方法
  14. php的curl封装类
  15. 电脑联想小新连上蓝牙耳机依然外放,终于解决了
  16. Spring容器父子关系
  17. 计算机汉字怎么制作的,如何制作自己的字体?教你快速制作自己手写字体
  18. 2013年互联网江湖格局观
  19. [UER #1] DZY Loves Graph
  20. Python.win32gui.获取窗体

热门文章

  1. android开机自启动程序设置
  2. Vant中List组件immediate-check=false无效
  3. 管理c语言源代码,c语言源代码---------------个人图书管理系统
  4. linux代码折叠,Sublime代码折叠
  5. python的类方法、静态方法、实例方法_Python 类方法、实例方法、静态方法
  6. python函数参数顺序_对Python中函数参数类型及排序问题,三个方面的总结
  7. html2canvas提升像素,jspdf + html2canvas 实现html转pdf (提高分辨率版本)
  8. s2jh mysql_mysql 一对多 查询 出一行数据
  9. mysql创建一张日期表_MySQL创建一张日期表
  10. CSDN浏览器助手插件[少了很多糟心的广告]