本发明涉及数据通讯领域,尤其涉及一种流表卸载方法、系统、设备、集群以及介质。
背景技术:
1、随着云计算网络发展,其广泛的业务需求致使数据流量剧增,通过计算设备中运行的虚拟交换机实现数据转发的限制日益凸显。为了满足高性能业务转发需求,减轻计算设备的处理负载,让计算设备能够更专注于与业务相关的事务,就需要专门的卸载硬件来承载数据转发业务。
2、由于现有技术中虚拟交换机是把流表项原封不动的卸载到硬件,这样流表查找匹配是将流表项中的匹配项进行字符串匹配,比较耗费计算资源。
技术实现思路
1、本技术提供了一种流表卸载方法、系统、设备、集群以及介质,能够有效减少计算资源的消耗。
2、第一方面,提供了一种流表卸载方法,应用于流表卸载系统,所述流表卸载系统包括计算设备以及卸载硬件,其中,所述计算设备中运行虚拟交换机以及数据平面开发工具包以实现数据包的转发,所述卸载硬件用于存储所述虚拟交换机以及数据平面开发工具卸载的用于转发数据包的流表项,所述卸载硬件包括第一哈希表以及第二哈希表,包括:
3、对第一数据流的第一数据包的头信息采用第一哈希算法得到第一哈希值,采用第二哈希算法得到第二哈希值,其中,第一哈希算法对应第一哈希表,第二哈希算法对应第二哈希表;
4、获取第一哈希表的第一哈希值对应的第一桶中流表项的数量以及第二哈希表的第二哈希值对应的第二桶中流表项的数量;
5、将所述第一桶中流表项的数量和所述第二桶中流表项的数量进行比较,得到比较结果;
6、根据所述比较结果确定将所述第二哈希值以及第一流表项卸载到所述第一哈希表的第一哈希值对应的第一桶中,还是,将所述第一哈希值以及第一流表项卸载到所述第二哈希表的第二哈希值对应的第二桶中,其中,所述第一流表项包括第一匹配项以及第一转发项,所述第一匹配项是根据所述第一数据流的数据包的头信息生成的,所述第一转发项用于指示对所述第一数据流的操作。
7、在一些可能的设计中,所述方法还包括:
8、对第一数据流的第二数据包的头信息采用所述第一哈希算法得到所述第一哈希值,采用所述第二哈希算法得到所述第二哈希值;
9、根据所述第一哈希值获取所述第一桶中存储的各个哈希值,将所述第二哈希值分别和所述第一桶中存储的各个哈希值分别进行比较;
10、在所述第一桶中存储的各个哈希值中存在和所述第二哈希值相等的哈希值的情况下,将所述第一桶中相等的哈希值对应的流表项读取出来;
11、在所述第一桶中存储的各个哈希值中不存在和所述第二哈希值相等的哈希值的情况下,根据所述第二哈希值获取所述第二桶中存储的各个哈希值,将所述第一哈希值分别和所述第二桶中存储的各个哈希值分别进行比较,在所述第二桶中存储的各个哈希值中存在和所述第一哈希值相等的哈希值的情况下,将所述第二桶中相等的哈希值对应的流表项读取出来。
12、在一些可能的设计中,根据所述比较结果确定将所述第二哈希值以及第一流表项卸载到所述第一哈希表的第一哈希值对应的第一桶中,还是,将所述第一哈希值以及第一流表项卸载到所述第二哈希表的第二哈希值对应的第二桶中,包括:
13、在所述第一桶中流表项的数量减去所述第二桶中流表项的数量大于或者等于数量阈值的情况下,将所述第一哈希值以及第一流表项卸载到所述第二哈希表的第二哈希值对应的第二桶中;
14、在所述第一桶中流表项的数量减去所述第二桶中流表项的数量小于数量阈值的情况下,将所述第二哈希值以及第一流表项卸载到所述第一哈希表的第一哈希值对应的第一桶中。
15、在一些可能的设计中,所述第一哈希算法为第一国际电报电话咨询委员会制定循环冗余校验算法、第二国际电报电话咨询委员会制定循环冗余校验算法、调制解调协议中使用的循环冗余校验算法、国际商业机器公司制定的循环冗余校验算法中的其中一个,所述第二哈希算法为第一国际电报电话咨询委员会制定循环冗余校验算法、第二国际电报电话咨询委员会制定循环冗余校验算法、调制解调协议中使用的循环冗余校验算法、国际商业机器公司制定的循环冗余校验算法中的另一个。
16、在一些可能的设计中,所述方法还包括:
17、在所述第一桶以及所述第二桶中任意一个桶未满的时候,确定所述第一流表项卸载成功;
18、在所述第一桶以及所述第二桶均满的时候,确定所述第一流表项卸载失败。
19、在一些可能的设计中,所述方法还包括:
20、在流表项的卸载成功率小于卸载阈值的情况下,将所述第一哈希算法和所述第二哈希算的算法组合更换为其他算法组合。
21、在一些可能的设计中,所述第一哈希算法中哈希值的数量和所述第一哈表中桶的数量为1:1.5。
22、在一些可能的设计中,所述方法还包括:
23、在需要删除第一流表项的情况下,将所述第一流表项对应的第一标志位进行复位,所述第一流表项依然存储在所述第一哈希表或者所述第二哈希表中。
24、第二方面,提供了一种流表卸载系统,所述流表卸载系统包括计算设备以及卸载硬件,其中,所述计算设备中运行虚拟交换机以及数据平面开发工具包以实现数据包的转发;
25、所述卸载硬件用于存储所述虚拟交换机以及数据平面开发工具卸载的用于转发数据包的流表项,所述卸载硬件包括第一哈希表以及第二哈希表;
26、所述虚拟交换机或者数据平面开发工具用于对第一数据流的第一数据包的头信息采用第一哈希算法得到第一哈希值,采用第二哈希算法得到第二哈希值,其中,第一哈希算法对应第一哈希表,第二哈希算法对应第二哈希表;
27、所述虚拟交换机或者数据平面开发工具用于获取第一哈希表的第一哈希值对应的第一桶中流表项的数量以及第二哈希表的第二哈希值对应的第二桶中流表项的数量;
28、所述虚拟交换机或者数据平面开发工具用于将所述第一桶中流表项的数量和所述第二桶中流表项的数量进行比较,得到比较结果;
29、所述虚拟交换机或者数据平面开发工具用于根据所述比较结果确定将所述第二哈希值以及第一流表项卸载到所述卸载硬件的所述第一哈希表的第一哈希值对应的第一桶中,还是,将所述第一哈希值以及第一流表项卸载到所述卸载硬件的所述第二哈希表的第二哈希值对应的第二桶中,其中,所述第一流表项包括第一匹配项以及第一转发项,所述第一匹配项是根据所述第一数据流的数据包的头信息生成的,所述第一转发项用于指示对所述第一数据流的操作。
30、第三方面,提供了一种计算设备,包括:处理器以及存储器,其中,所述存储器用于存储指令,所述处理器用于运行所述存储器中的指令,以执行如第一方面任一项所述的方法。
31、第四方面,提供了一种计算集群,包括多个计算设备,其中,每个计算设备包括处理器以及存储器,所述存储器用于存储指令,所述处理器用于运行所述存储器中的指令,以执行如第一方面任一项所述的方法。
32、第五方面,提供了一种计算机可读存储介质,包括指令,所述指令被计算设备执行时,执行如第一方面任一项所述的方法。