本发明涉及互联网,尤其涉及一种流量分发方法、装置、设备和存储介质。
背景技术:
1、非统一内存访问(non uniform memory access,简写为numa)架构是现代常用的多核多中央处理器(central processing unit,简写为cpu)系统架构。在numa系统下,一个numa域包含一个cpu、与cpu相连的内存(可以将该内存称为cpu的本地内存)以及总线系统,其中,总线系统例如是pcie总线等。各numa域的cpu之间可通过快速通道互联(intelquickpath interconnect,简写为qpi)总线相连接。cpu访问本地内存时带宽更大、速度更快、访存性能更好,但是当cpu访问其他numa域中的内存时,也就是发生了远程内存的访问,在这种情况下延迟会变大、访存性能会变差。然而在实际应用中往往会发现不可避免地出现流量跨域的问题,亟待提出一种可靠的技术方案来解决此类问题。
技术实现思路
1、本发明实施例提供一种流量分发方法、装置、设备和存储介质,用以实现避免出现流量跨域的问题。
2、第一方面,本发明实施例提供一种流量分发方法,应用于智能网卡,所述方法包括:
3、当接收到目标报文时,获取所述目标报文中的规则匹配元素,其中,所述规则匹配元素为所述目标报文中的五元组中的至少一项元素;
4、将所述规则匹配元素与流量分发规则表中预先设置的多个规则进行比较匹配,以确定与所述规则匹配元素相匹配的目标规则;
5、基于所述目标规则中规定的参与哈希值计算的所述目标报文中的目标元素以及计算方式,计算所述目标报文对应的目标哈希值,其中,所述目标元素为所述目标规则中规定的所述五元组中的至少一项元素;
6、在预设的多个收包队列中,确定与所述目标哈希值对应的目标收包队列,其中,不同收包队列与各numa域的不同cpu核一一绑定;
7、将所述目标报文存入所述目标收包队列中。
8、可选地,所述获取所述目标报文中的规则匹配元素,包括:
9、获取预先配置的流量匹配条件;
10、基于所述流量匹配条件,确定所述目标报文中的规则匹配元素。
11、可选地,所述流量匹配条件为忽略所述目标报文的源ip地址、目的ip地址、源端口号以及目的端口号,对所述目标报文采用的协议号进行匹配,其中,所述协议号包括tcp协议、udp协议、icmp协议中的一项或多项;
12、所述基于所述流量匹配条件,确定所述目标报文中的规则匹配元素,包括:
13、确定所述目标报文中的协议号。
14、可选地,所述基于所述目标规则中规定的参与哈希值计算的所述目标报文中的目标元素以及计算方式,计算所述目标报文对应的目标哈希值,包括:
15、基于所述目标规则中规定的参与哈希值计算的所述目标报文中的目标元素以及所述目标规则中规定的第一运算类型,计算所述目标报文对应的key值;
16、基于所述目标报文对应的key值以及所述目标规则中规定的第二运算类型,计算所述目标报文对应的目标哈希值。
17、可选地,所述第一运算类型包括求和或者异或,所述第二运算类型包括按位与或者取余。
18、可选地,所述将所述目标报文存入所述目标收包队列中,包括:
19、将所述目标报文存入所述目标收包队列中,以使得与所述目标收包队列绑定的目标中央处理器在达到预设周期时读取所述目标收包队列中已存入的报文。
20、可选地,所述流量分发规则表为写入rss算法中的规则表。
21、第二方面,本发明实施例提供一种流量分发装置,设置于智能网卡,所述装置包括:
22、获取模块,用于当接收到目标报文时,获取所述目标报文中的规则匹配元素,其中,所述规则匹配元素为所述目标报文中的五元组中的至少一项元素;
23、匹配模块,用于将所述规则匹配元素与流量分发规则表中预先设置的多个规则进行比较匹配,以确定与所述规则匹配元素相匹配的目标规则;
24、计算模块,用于基于所述目标规则中规定的参与哈希值计算的所述目标报文中的目标元素以及计算方式,计算所述目标报文对应的目标哈希值,其中,所述目标元素为所述目标规则中规定的所述五元组中的至少一项元素;
25、确定模块,用于在预设的多个收包队列中,确定与所述目标哈希值对应的目标收包队列,其中,不同收包队列与各numa域的不同cpu核一一绑定;
26、存储模块,用于将所述目标报文存入所述目标收包队列中。
27、可选地,所述获取模块,用于:
28、获取预先配置的流量匹配条件;
29、基于所述流量匹配条件,确定所述目标报文中的规则匹配元素。
30、可选地,所述流量匹配条件为忽略所述目标报文的源ip地址、目的ip地址、源端口号以及目的端口号,对所述目标报文采用的协议号进行匹配,其中,所述协议号包括tcp协议、udp协议、icmp协议中的一项或多项;
31、所述获取模块,用于:
32、确定所述目标报文中的协议号。
33、可选地,所述计算模块,用于:
34、基于所述目标规则中规定的参与哈希值计算的所述目标报文中的目标元素以及所述目标规则中规定的第一运算类型,计算所述目标报文对应的key值;
35、基于所述目标报文对应的key值以及所述目标规则中规定的第二运算类型,计算所述目标报文对应的目标哈希值。
36、可选地,所述第一运算类型包括求和或者异或,所述第二运算类型包括按位与或者取余。
37、可选地,所述存储模块,用于:
38、将所述目标报文存入所述目标收包队列中,以使得与所述目标收包队列绑定的目标中央处理器在达到预设周期时读取所述目标收包队列中已存入的报文。
39、可选地,所述流量分发规则表为写入rss算法中的规则表。
40、第三方面,本发明实施例提供一种网络设备,其中包括处理器、存储器和智能网卡,其中,所述智能网卡至少可以实现第一方面中的流量分发方法。
41、第四方面,本发明实施例提供了一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被智能网卡执行时,使所述智能网卡至少可以实现第一方面中的流量分发方法。
42、采用本发明,可以获取目标报文的规则匹配元素,然后将获取到的规则匹配元素与流量分发规则表中的多个规则进行比较匹配,以确定目标报文命中的目标规则。在确定出目标规则之后,可以根据目标规则已定义出的目标报文中需要参与哈希值计算过程的目标元素以及所采用的计算方式,计算目标报文对应的目标哈希值。在获取到目标哈希值之后,目标哈希值的大小即可表示目标收包队列的标识号,因此可以基于目标哈希值确定目标收包队列,然后将目标报文存入目标收包队列等待相应绑定的cpu进行后续业务处理。由于流量分发规则表中的规则为固定规则,规则所规定的参与哈希值计算过程的元素以及所采用的计算方式都是固定的,因此对于同一连接的网络流量来说,经过本发明提供的算法的计算,最终确定的收包队列都是同一个,进而来自于同一连接的网络流量会被同一cpu处理,避免了产生流量跨域的问题。
1.一种流量分发方法,其特征在于,应用于智能网卡,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述获取所述目标报文中的规则匹配元素,包括:
3.根据权利要求2所述的方法,其特征在于,所述流量匹配条件为忽略所述目标报文的源ip地址、目的ip地址、源端口号以及目的端口号,对所述目标报文采用的协议号进行匹配,其中,所述协议号包括tcp协议、udp协议、icmp协议中的一项或多项;
4.根据权利要求1所述的方法,其特征在于,所述基于所述目标规则中规定的参与哈希值计算的所述目标报文中的目标元素以及计算方式,计算所述目标报文对应的目标哈希值,包括:
5.根据权利要求4所述的方法,其特征在于,所述第一运算类型包括求和或者异或,所述第二运算类型包括按位与或者取余。
6.根据权利要求1所述的方法,其特征在于,所述将所述目标报文存入所述目标收包队列中,包括:
7.根据权利要求1-6中任一项所述的方法,其特征在于,所述流量分发规则表为写入网卡分流机制rss算法中的规则表。
8.一种流量分发装置,其特征在于,设置于智能网卡,所述装置包括:
9.一种网络设备,其特征在于,包括:存储器、处理器以及智能网卡;其中,所述智能网卡用于执行权利要求1-7中任一项所述的流量分发方法。
10.一种非暂时性机器可读存储介质,其特征在于,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被智能网卡执行时,使所述智能网卡执行如权利要求1-7中任一项所述的流量分发方法。