一种硬件流表hash冲突解决方法及系统与流程

文档序号:34614030发布日期:2023-06-29 09:49阅读:30来源:国知局
一种硬件流表hash冲突解决方法及系统与流程

本发明涉及云计算领域,尤其是涉及一种在智能网卡ovs-dpdk卸载中,解决硬件流表hash冲突的方法。。


背景技术:

1、智能网卡ovs-dpdk卸载方案中,ovs会通过dpdk提供的rte_flow接口将软件流表卸载到硬件,硬件一般都采用哈希表(以下简称hash表)存储软件卸载的流表。在硬件构建流表的时候,我们常常会碰到两条流表的关键字计算的哈希值相同,即hash冲突,hash冲突不可避免。硬件流表hash冲突会导致流表一直重复卸载,造成软硬件的资源浪费,如何解决hash冲突就是一个亟待解决的问题。

2、现有技术中解决方法一般有四种:分离链表法,开放定址法,rehash法,建立公共溢出区。

3、1)使用分离链表法(也叫hash桶法)解决hash冲突的原理:利用链表解决冲突。将hash值相同的元素归于同一个子集,每一个子集合称为一个桶,各个桶中的元素通过一个单链表链接起来,各链表的头节点存储在hash表中。

4、2)使用开放定址法解决hash冲突的原理:当关键字key的哈希地址p=f(key)出现冲突时,以p为基础,产生另一个哈希地址p1,若p1仍然冲突,再以p为基础,产生另一个哈希地址p2,一直到找出一个不冲突的哈希地址pi,将相应元素存入其中。

5、3)使用rehash解决hash冲突的原理:提供多个哈希函数,如果第一个哈希函数计算出来的key的哈希值冲突了,则使用第二个哈希函数计算key的哈希值,第二个也冲突了就使用第三个,以此类推。

6、4)使用建立公共溢出区解决hash冲突的原理:将哈希表分为基本表和溢出表两部分,溢出表可以是另一块顺序表,也可以是另一块芯片(如tcam),凡是和基本表发生冲突的元素,一律填入溢出表。

7、然而,上述解决hash冲突的四种方法,在智能网卡流表卸载场景中,都存在一定的缺陷:

8、1)hash桶法需要遍历单链表才能找到地址,在链表长度较深时,查找带来的性能损耗无法接受。

9、2)开放地址法要求填装因子α较小,在智能网卡几百万到几千万的流表规模下,占用的内存空间很大。

10、3)rehash需要多次计算,在hash冲突发生较频繁的时候,计算时间无法接受。

11、4)使用公共溢出区则是要增加额外的内存或者芯片,带来的功耗和成本压力不小。

12、由此可见,本领域亟需一种能够克服上述缺陷的能够解决hash冲突的方案。


技术实现思路

1、本发明的目的在于提供一种硬件流表hash冲突解决方法和系统,以解决上述背景技术中在智能网卡流表卸载场景中解决hash冲突时存在的缺陷。

2、第一方面,本发明提供一种硬件流表hash冲突解决方法,其特征在于,所述方法由以下步骤构成:

3、s100,硬件收到第一报文,对所述第一报文进行解析,提取所述第一报文的key并计算其hash值,根据所述hash值找到对应hash桶;

4、s200,逐个比较所述hash桶中单链表的每个元素的key和报文的key是否匹配;

5、s300,如果key不匹配,直接跳过比较下一个key,如果key匹配,则按照对应的动作action执行对应操作。

6、s400,如果匹配至所述单链表结束仍未匹配成功,则判断所述单链表节点个数是否为预设值,如果是则构造第二报文,并将所述第二报文的reason字段赋值为hash桶满,并发送所述第二报文至ovs-dpdk软件模块。

7、第二方面,一种硬件流表hash冲突解决系统,所述系统包含硬件和ovs-dpdk软件模块,其特征在于:

8、硬件收到第一报文,对所述第一报文进行解析,提取所述第一报文的key并计算其hash值,根据所述hash值找到对应hash桶;

9、逐个比较所述hash桶中单链表的每个元素的key和第一报文的key是否匹配;如果key不匹配,直接跳过比较下一个key,如果key匹配,则按照key对应的动作act i on执行对应操作。

10、如果匹配至所述单链表结束仍未匹配成功,则判断所述单链表节点个数是否为预设值,如果是则构造第二报文,并将所述第二报文的reason字段赋值为hash桶满,并发送所述第二报文至ovs-dpdk软件模块。

11、本发明在hash桶法的基础上,固定单链表的长度,硬件在流表mi ss和流表卸载两种情况中,检测到对应的桶满,则给软件上报一个特殊的原因----hash桶满,软件收到这个原因后,不会再卸载这个f l ow,即利用ovs-dpdk软件和硬件的报文通信机制,让ovs不重复卸载hash冲突且桶满的流表,软件兜底转发,保证了丢包率,增加了硬件的效率。



技术特征:

1.一种硬件流表hash冲突解决方法,其特征在于,所述方法由以下步骤构成:

2.一种如权利要求1所述的硬件流表hash冲突解决方法,其特征在于,所述发送所述第二报文至ovs-dpdk软件模块,还包括:

3.一种如权利要求2所述的硬件流表hash冲突解决方法,其特征在于,所述硬件收到第一报文,包括:所述第一报文为一条流的首包业务报文。

4.一种如权利要求3所述的硬件流表hash冲突解决方法,其特征在于,所述如果是则构造第二报文,包括,第二报文为硬件流表miss报文,ovs-dpdk收到所述硬件流表miss报文后转发报文并将流表插入本地缓存中;

5.一种如权利要求3所述的硬件流表hash冲突解决方法,其特征在于,所述ovs-dpdk收到所述第二报文后判断reason字段是否为hash桶满,包括,如果为否则将将本地缓存中对应流表的标记更新为可卸载;ovs-dpdk卸载模块后续遍历本地缓存流表,通过流表标记判断是否可以卸载,如果可以则构造卸载报文并发送至硬件。

6.一种如权利要求1或2所述的硬件流表hash冲突解决方法,其特征在于,所述硬件收到第一报文,包括:所述第一报文为ovs-dpdk发来的流表卸载报文。

7.一种如权利要求5所述的硬件流表hash冲突解决方法,其特征在于,

8.一种硬件流表hash冲突解决系统,所述系统包含硬件和ovs-dpdk软件模块,其特征在于:

9.一种计算设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;

10.一种计算机存储介质,所述存储介质中存储有至少一可执行程序,所述可执行程序使处理器执行如权利要求1-7任一项所述的硬件流表hash冲突解决方法对应的操作。


技术总结
本发明涉及云计算领域,针对硬件流表hash冲突会导致流表一直重复卸载,造成软硬件的资源浪费这一问题,提出一种硬件流表hash冲突解决方法,在hash桶法的基础上,固定单链表的长度,利用OVS‑DPDK软件和硬件的报文通信机制,让OVS不重复卸载hash冲突且桶满的流表,软件兜底转发,保证了丢包率,增加硬件的效率。

技术研发人员:杨一帆,邹明,文旭,刘珂,李易,吴绍华
受保护的技术使用者:天翼云科技有限公司
技术研发日:
技术公布日:2024/1/13
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1