Intel E810 Advanced RSS介绍

news/2024/9/29 22:26:54/

点击上方蓝字

2020

关注我们吧

盛世华诞  月满金秋

DPDK与SPDK开源社区

~祝大家国庆中秋双节快乐~

Intel E810 Advanced RSS介绍

Su Simei; Guo Jia

Advanced RSS的特性

Legacy的RSS是对普通五元组(src ip, dst ip, src port, dst port, protocol)进行哈希,而且默认情况下是对报文的五元组同时进行哈希。Intel E810对RSS做了增强,支持Advanced RSS, 主要体现在以下方面:

(1) 支持通过RTE_FLOW API对RSS的input set, hash function等进行动态配置。如只对ipv4报文的src ip或者dst ip进行哈希; 对ipv4报文设置hash function达到对称哈希,交换src ip和dst ip的值,报文到达同一个队列。对称哈希的意义: 对上下行的业务,到达同一个core,使得效率更高。

(2) 随着DDP(Dynamic Device Personalization)的出现,可以对更多的协议进行解析并哈希,如对GTPU的teid, PPPoE的session id , L2TPv3的session id, ESP的spi, AH的spi等。

硬件实现概念

RSS和flow director一样,都属于分类过滤器,从高层面的角度看,分类过滤器的框图如图1,此图来源于Intel E810 Datasheet

图1 分类过滤器的框图

图1中主要模块的描述如下

Profile ID: 一个由包的类型,包的标识以及VSI生成的功能。

Field Vector: 以filter的profile id为基础,从包头中被抽取出来的内容。 

Input Set: 从包头中抽取出来的一些域,一般等同于field vector或者是其中某几位的掩码。

Filter Lookup: 通过精确匹配或者是RSS来分发,并把包和一些行为(action)关联起来。

Action: 如指定到达某个queue、拒绝或接收某个类型的包等行为。

Priority Resolver: 默认的优先级从高到低是ACL, switch, FDIR, RSS。

上面描述的是RSS, FDIR等过滤器的通用模块,针对RSS,它有自己的逻辑框图,如图2。

图2 RSS的逻辑框图

Incoming packets进入到parser模块,五元组src ip、dst ip、src port、dst port和protocol中的子集作为input set,结合一个任意的hash key以及hash function(默认hash function是Toeplitz function)计算得到hash value,用hash value求模redirection table size的结果去索引redirection table以得到被最终散列到的队列,并最终被对应的CPU worker收到。

AVF RSS的软件实现流程

Advanced RSS同时支持DPDK PF和AVF。以AVF RSS为例,其实现机制:在AVF中对到达的flow进行解析,将解析的结果通过virtual channel传递给PF,在PF中实现创建或者删除这条规则。这里的virtual channel是作为PF和VF之间协商的消息通道,即PF和VF共用的相关数据结构。对增加或者删除一条RSS规则来说,VF传递给PF的信息是这条规则的具体信息,包括报文类型,报文协议的层数,需要哈希的域,非隧道报文或隧道报文,哈希function(用来指定对称哈希或非对称哈希)等。其流程图如图3。

图3  在AVF中配置RSS Flow的流程图

测试用例

(1) Example 1: 创建一个对ipv4报文的src进行哈希的规则

   flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end

   一条RSS flow由pattern和action构成,pattern是eth_ipv4, action是RSS, type表示input set,即对包的哪些域进行哈希。在这个例子中,ipv4表示rss type,需和前面的pattern一致,l3-src-only是对rss type ipv4的修饰,表示对ipv4的src进行哈希。Key_len 0和queues end表示在rte_flow的命令中暂时不支持对RSS的key_len和queue的配置,但可在flow director中配置queue region。

测试结果如下: 发一个ipv4类型的报文,改变src的值,可以观察到不同src ip的报文被散列到不同的队列中。

(2) Example 2: 创建一个对ipv4-udp报文对称哈希的规则

   flow create 0 ingress pattern eth / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end

   pattern是eth_ipv4_udp,通过指定rss func为symmetric Toeplitz hash来配置对称哈希,rss type为ipv4-udp,和前面的pattern保持一致,表示对ipv4-udp的报文进行对称hash,即交换src ipv4和dst ipv4、src udp port和dst udp port,hash结果保持不变,到达同一个队列。

测试结果如下:

sendp(Ether()/IP(src="1.1.4.1",dst="2.2.2.3")/UDP(sport=20,dport=22),iface="enp175s0f3")

RSS hash=0xb4169d0

sendp(Ether()/IP(src="2.2.2.3",dst="1.1.4.1")/UDP(sport=22,dport=20),iface="enp175s0f3")

RSS hash=0xb4169d0

总结

本文主要介绍Intel E810 Advanced RSS的概念、硬件实现和测试用例,以及AVF Advanced RSS软件实现流程。目前Advanced RSS在5G UPF等workload中有广泛的应用。如果大家对Advanced RSS感兴趣,欢迎继续关注后续Advanced RSS在VPP中具体应用的文章。

转载须知

DPDK与SPDK开源社区公众号文章转载声明

推荐阅读

Intel E810 DDP在VPP offload加速框架中的应用

英特尔®以太网控制器E810介绍:面向5G核心网络

点玉兔换玉兔,点背景换背景????

发现“分享”“赞”了吗,戳我看看吧


http://www.ppmy.cn/news/177554.html

相关文章

如何解读Linux Kernel OOPS信息

OOPS信息解读 rootfirefly:~/mnt/module# insmod oops_module.ko [ 867.140514] Unable to handle kernel NULL pointer dereference at virtual address 00000000 [ 867.141279] pgd ffffffc0f0a65000 [ 867.141582] [00000000] *pgd0000000000000000, *pud000000000000…

计算机系统_炸弹(boom)实验/逆向工程实验(phase_4)

第四关 0000000000400fc1 <phase_4>: 400fc1: 4883 ec 18 sub $0x18, %rsp 400fc5: 488d 54 24 0c lea 0xc(%rsp), %rdx 400fca: bec1 1e 40 00 mov $0x401ec1, %esi 400fcf: b800 00 00 00 mov $0x0, %eax…

基于NB-IOT的智能烟感应用方案

据国家有关部门发布的2018年火灾数据统计&#xff0c;全国共发生火灾23.7万起&#xff0c;造成1407人死亡&#xff0c;伤798人。直接财产损失36.75亿元&#xff0c;其中居民住宅火灾10.7万起&#xff0c;超过全年火灾总数的45%&#xff0c;其原因与我国当前火灾预防基础设施建设…

基于GPRS、NB-IOT、LTE的自组网方案

一、概述 成都亿佰特电子科技有限公司是一家致力于自主研发和客户定制需求的创新型公司&#xff0c;成都亿佰特针对GPRS、NB-IOT、LTE推出了RS232、R485接口的E840-DTU系列数传电台。 针对目前GPRS、NB-IOT、LTE三种不同的技术形式和市场需求&#xff0c;成都亿佰特已经建立了…

华为S5700S配置总结

需要使用通讯控制线缆连接电脑和交换机, 一头接交换机的Console口,一头接电脑(应该需要串口,没有的话得用USB转串口). 在PC机上运行终端仿真程序,设置终端通信参数为&#xff1a; 波特率为9600bit/s、8位数据位、1位停止位、无校验和无流控&#xff0c;并选择终端类型为VT100. …

查看h3c光功率参考值

通常情况下我们在做交换机光模块接入后想看一下功率等一系列参数是否满足要求&#xff0c;为了将来不出error包等情况。h3c会有一个参考值可以给我们工程师参考。当然该命令是在隐藏模式下进行的啦。具体请看&#xff1a; <H3C-S5600>sys System View: return to User Vi…

华为S5600的ACL设置

前几天设置一台华为S5600的ACL规则&#xff0c;发现设置ACL的规则的时候很奇怪&#xff0c;不是按照顺序启控对应的规则&#xff0c;打电话给华为的技术人员&#xff0c;被告知是反过来顺序执行的。 重新编辑ACL规则&#xff0c;下发到对用的端口&#xff0c;测试成功。 另外发…

H3C S5600 交换机SSH登陆的设置

H3C S5600 交换机SSH登陆的设置 一、SSH简介SSH 是Secure Shell&#xff08;安全外壳&#xff09;的简称。当用户通过一个不能保证安全的网络环境远程登录到交换机时&#xff0c;SSH 特性可以提供安全的信息保障和强大的认证功能&#xff0c;以保护交换机不受诸如IP 地址欺诈、…