一种基于批量更新的多核SDN交换机流表管理方法及系统与流程

文档序号:23684052发布日期:2021-01-23 09:06阅读:100来源:国知局
一种基于批量更新的多核sdn交换机流表管理方法及系统
技术领域
:[0001]本发明属于sdn交换机的流表管理
技术领域
:,具体地说,涉及一种基于批量更新的多核sdn交换机流表管理方法及系统。
背景技术
::[0002]软件定义网络(softwaredefinednetwork,sdn)交换机是一种新型网络创新架构,是网络虚拟化的一种实现方式。通过将网络设备的控制面与数据面分离开来,从而实现了网络流量的灵活控制,使网络作为管道变得更加智能,为核心网络及应用的创新提供了良好的平台。[0003]随着网络技术的不断发展,为了满足各种复杂的业务需求,网络状态的变化也正变得越来越频繁,在sdn网络中,需要通过不断更新sdn交换机中的流表来实现相应的网络功能,从而进行数据包的正确处理。同时,随着网络设备节点的不断增加,网络上的流量也呈现指数级的增长,sdn交换机的转发性能在整个网络中变得尤为重要。[0004]为了提升性能,通常采用基于多核处理器的sdn交换机来进行数据包的转发,多核sdn交换机具有多个相对独立的转发核,可以并行执行数据包的转发流程;这对流表的更新效率和转发核的查表效率都提出了很高的要求,只支持全量更新的acl算法具有很高的查表性能,但更新效率很低。目前,在sdn网络中控制器下发流表方式为逐条下发,而交换机采用acl算法,每次需要全量更新查找树;因此,现有的逐条下发的更新流表的处理方法流表更新性能较差,无法满足业务要求。另外,上述现有的更新流表的处理方法中,为每个转发核设置对应的转发表的方案,可以避免多核间流表更新和查找冲突,但不利于网络流量在多核间的均衡,不能充分利用多核的优势,限制了转发性能。同样的,为每个转发核维护一套流表的方案,加剧了转发核的负担,更限制了转发性能。技术实现要素:[0005]为解决现有技术存在的上述缺陷,本发明提出了一种基于批量更新的多核sdn交换机流表管理方法,该方法在多核sdn交换机中快速进行流表和表项加载的方法,以提高sdn交换机的流表更新性能和数据转发性能。通过控制平面与转发平面的分离,并将转发平面查表使用的多份流表发布版本交由控制平面统一管理,避免了每个转发核自己更新表项时都需要创建查找树,减轻了转发核负担,提高了交换机的转发性能。[0006]本发明提供了一种基于批量更新的多核sdn交换机流表管理方法,该方法包括:[0007]多核sdn交换机的控制平面接收控制器实时下发的建表消息,并将其存储至建表表;[0008]多核sdn交换机的控制平面接收控制器实时下发的更新表项消息,并缓存至增量表;判断是否达到批量更新条件;[0009]如果达到批量更新条件,则将缓存至增量表的n条更新表项消息进行一次批量更新,并将其更新至全量表;根据建表表和全量表,基于控制平面任选的待修改版本,生成具有查找树信息的当前最新流表发布版本,供多核sdn交换机的转发平面查表使用;其中,n为大于或等于1的正整数;[0010]如果未达到批量更新条件,则继续将更新表项消息缓存至增量表,直至达到批量更新条件;[0011]多核sdn交换机的转发平面中的多个独立的转发核对当前最新流表发布版本进行并行查表,并依据各自查询到的转发规则进行转发。[0012]作为上述技术方案的改进之一,所述批量更新条件为预先设定的批量更新时间和预先设定的接收更新表项消息的数量n。[0013]作为上述技术方案的改进之一,所述建表表,用于存储控制器实时下发的建表消息;[0014]所述增量表,用于缓存控制器实时下发的更新表项消息;[0015]所述全量表,用于维护多核sdn交换机内的所有表项;还用于在批量更新时,依据增量表缓存的n条更新表项消息对多核sdn交换机内的表项进行更改操作;[0016]所述待修改版本为转发核未正在使用的、除了当前的流表发布版本之外的空闲流表版本;其中,空闲流表版本为转发核未正在使用的、具有查找树信息的流表发布版本。[0017]作为上述技术方案的改进之一,所述如果达到批量更新条件,则将缓存至增量表的n条更新表项消息进行一次批量更新,并将其更新至全量表;根据建表表和全量表,基于控制平面任选的待修改版本,生成具有查找树信息的当前最新流表发布版本,供转发平面查表使用;具体为:[0018]如果达到批量更新条件,新建一新的增量表,将控制器实时下发的更新表项消息缓存至该新的增量表,供下一次批量更新使用;[0019]然后,将缓存至增量表的n条更新表项消息按时间顺序依次进行更改操作,得到多个更新表项,并将其逐一更新至全量表;基于控制平面任选的待修改版本,查询是否需要新建流表;[0020]如果待修改版本中没有所需要的流表,则根据建表消息新建缺少的流表;[0021]如果待修改版本中已经有了所需要的流表,则不需要重复建表;[0022]再在基于控制平面任选的待修改版本上,利用更新后的全量表,生成具有查找树信息的当前最新流表发布版本,供转发平面查表使用;同时控制平面再任选一待修改版本,供下一个更新的流表发布版本的构建。[0023]作为上述技术方案的改进之一,所述更改操作为增加表项、删除表项或修改表项。[0024]作为上述技术方案的改进之一,所述转发平面包括:m个独立的转发核;其中,m为大于或等于1的整数;[0025]针对m个独立的转发核,控制平面至多需要维护不超过m+2个流表发布版本;[0026]其中,该m+2个流表发布版本包括:m个独立的转发核中的每个独立的转发核正在使用的流表发布版本、待修改版本和当前的流表发布版本。[0027]作为上述技术方案的改进之一,所述m+2个流表版本中的每个流表发布版本上均设置使用标识符reference,用于标识是否有转发核正在使用流表发布版本;[0028]当无转发核正在使用流表发布版本时,则该流表发布版本的使用标识符reference为0;[0029]当某个转发核使用流表发布版本时,将该流表发布版本的使用标识符reference加1;[0030]当某个转发核查询结束后,将之前使用的流表发布版本的使用标识符reference减1;[0031]流表发布版本的使用标识符reference的数值与正在使用该流表发布版本的转发核个数相同。[0032]作为上述技术方案的改进之一,所述转发平面中的多个独立的转发核对当前最新流表发布版本进行并行查表,并各自查询到的转发规则进行转发;具体为:[0033]转发平面中的每个独立的转发核对同一份当前最新流表发布版本进行并行查询,查找到当前最新流表发布版本,再对该当前最新流表发布版本进行查表,依据各自查询到的转发规则进行转发;同时,控制平面修改该当前最新流表发布版本的使用标识符reference。[0034]本发明还提供了一种基于批量更新的多核sdn交换机流表管理系统,该系统包括:[0035]存储模块,用于利用多核sdn交换机的控制平面接收控制器实时下发的建表消息,并将其存储至建表表;[0036]发布版本创建模块,用于利用控制平面接收控制器实时下发的更新表项消息,并缓存至增量表;判断是否达到批量更新条件;[0037]如果达到批量更新条件,则将缓存至增量表的n条更新表项消息进行一次批量更新,并将其更新至全量表;根据建表表和全量表,基于控制平面任选的待修改版本,生成具有查找树信息的当前最新流表发布版本,供转发平面查表使用;[0038]如果未达到批量更新条件,则继续将更新表项消息缓存至增量表,直至达到批量更新条件;和[0039]转发模块,用于利用转发平面中的每个独立的转发核对当前最新流表发布版本进行查表,并依据各自查询到的转发规则进行转发。[0040]本发明与现有技术相比的有益效果是:[0041]本发明的方法采用批量更新表项的方式,进一步减少了创建查找树的次数,仅创建一份流表发布版本,供多个转发核并行查询,实现快速的表项加载,提高了流表的加载速度;同时由控制平面负责修改流表发布版本上的使用标识符和生成当前最新流表发布版本,避免每个转发核更新表项时都需要多次创建查找树,减轻了转发核负担,提高了多核sdn交换机的转发性能。附图说明[0042]图1是本发明的一种基于批量更新的多核sdn交换机流表管理方法的流程图;[0043]图2是本发明的一种基于批量更新的多核sdn交换机流表管理方法的一个实施例的具体工作流程图;[0044]图3是本发明的一种基于批量更新的多核sdn交换机流表管理方法的多核sdn交换机流表更新的示意图;[0045]图4a是本发明的一种基于批量更新的多核sdn交换机流表管理方法的另一个实施例的创建发布版本的管理场景示意图;[0046]图4b是图4a所示场景下转发核使用发布版本进行查表的示意图;[0047]图4c是图4b所示场景下部分转发核完成查表并有更新表项需求的示意图;[0048]图4d是图4c所示场景下有除正在查表的fe1核之外的转发核进行查表的示意图;[0049]图4e是图4d所示场景下正在查表的转发核结束查表的示意图;[0050]图4f是图4e所示场景下有除正在查表的fe3核之外的转发核进行查表的示意图。具体实施方式[0051]现结合附图对本发明作进一步的描述。[0052]如图1所示,本发明提供了一种基于批量更新的多核sdn交换机流表管理方法,该方法由交换机控制平面维护流表的多个版本,即每个转发核正在使用的流表版本,待修改版本,以及当前的最新的流表发布版本;在达到批量更新条件时,负责对缓存至增量表中的n条更新表项消息,进行一次批量更新,可以支持控制平面修改流表发布版本上的使用标识符reference和转发平面中的多个转发核并行查表,并且避免了每个转发核更新表项时需要多次创建查找树,减轻了转发核的负担,提高了流表加载速度和转发性能。[0053]在多核处理器中,当sdn交换机处于多核并行处理环境时,根据内部核分配的任务不同,分为控制平面和转发平面。控制平面在满足批量更新条件时,将缓存至增量表中的n条更新表项信息进行一次批量更新,仅创建一次具有查找树信息的当前最新流表发布版本,转发平面中的多个转发核并行查询同一份当前最新流表发布版本,并依据各自查询到的转发规则进行转发。[0054]如图1所示,该方法具体包括:[0055]多核sdn交换机的控制平面接收控制器实时下发的建表消息,并将其存储至建表表;[0056]其中,所述建表消息包括建表的数量和对应的id号;控制平面此时仅将建表消息存储在建表表中;在达到批量更新条件时,只需新建缺少的流表,对已有的流表不需要重复建表。所述建表表,用于存储控制器实时下发的建表消息;[0057]控制平面接收控制器实时下发的更新表项消息,并缓存至增量表;判断是否达到批量更新条件;所述增量表,用于缓存控制器实时下发的更新表项消息;[0058]如果达到批量更新条件,则将缓存至增量表的n条更新表项消息进行一次批量更新,并将其更新至全量表;根据建表表和全量表,基于控制平面任选的待修改版本,生成具有查找树信息的当前最新流表发布版本,供转发平面查表使用;其中,n为大于1的正整数;[0059]具体地,如果达到批量更新条件,新建一新的增量表,将控制器实时下发的更新表项消息缓存至该新的增量表,供下一次批量更新使用;[0060]然后,将缓存至增量表的n条更新表项消息按时间顺序依次进行更改操作,得到多个更新表项,并将其逐一更新至全量表,同时更新完成后,将该增量表删除;[0061]基于控制平面任选的待修改版本,查询是否需要新建流表;[0062]如果待修改版本中没有所需要的流表,则根据建表消息新建缺少的流表;[0063]如果待修改版本中已经有了所需要的流表,则不需要重复建表;[0064]再在基于控制平面任选的待修改版本上,利用更新后的全量表,生成具有查找树信息的当前最新流表发布版本,供转发平面查表使用;同时控制平面再任选一待修改版本,供下一个更新的流表发布版本的构建。[0065]所述全量表,用于维护多核sdn交换机内的所有表项;还用于在批量更新时,依据增量表缓存的n条更新表项消息对多核sdn交换机内的表项进行更改操作;[0066]其中,所述更改操作为增加表项、删除表项或修改表项。[0067]如果未达到批量更新条件,则继续将更新表项消息缓存至增量表,直至达到批量更新条件;[0068]其中,所述批量更新条件为预先设定的批量更新时间和预先设定的接收更新表项消息的数量n。[0069]具体地,在数量机制中,设置每批次的批量更新的最多批量处理的表项消息的数量n,当本批次需要批量更新的表项消息数量达到预先设定的数量n时,判定满足批量更新的条件,同时将消息数量更新为0,继续下一次的消息数量的计数;[0070]在时间机制中,设置生存周期时间和起始更新时间,在初始化时设置起始更新时间为0,当检测到当前时间大于生存周期时间和起始更新时间的加和时,表明该批次的批量更新的等待时间已达到预先设定的批量更新时间,满足批量更新的条件,同时将起始更新时间更新为当前时间,继续下一次的批量计时。[0071]其中,批量更新条件的标准是预先设定的批量更新时间和预先设定的接收更新表项消息的数量n,二者满足其一即可;例如,预先设定的批量更新时间为10s,预先设定的接收更新表项消息的数量n为100,[0072]当达到预先设定的批量更新时间为10s,此时缓存至增量表的更新表项消息的数量达到了200条,则满足更新条件,一次批量更新200条更新表项消息;[0073]当达到预先设定的批量更新时间为10s,此时缓存至增量表的更新表项消息的数量达到了80条,则满足更新条件,一次批量更新80条更新表项消息;[0074]当达到预先设定的接收更新表项消息的数量n为100,此时批量更新时间为8s,则满足更新条件,一次批量更新100条更新表项消息;[0075]当达到预先设定的批量更新时间为10s,此时缓存至增量表的更新表项消息的数量达到了100条,则满足更新条件,一次批量更新100条更新表项消息。[0076]所述待修改版本为转发核未正在使用的、除了当前的流表发布版本之外的空闲流表版本;其中,空闲流表版本为转发核为正在使用的、其上的使用标识符reference为0的、具有查找树信息的流表发布版本。在其他具体实施例中,空闲流表版本还可以是一个全新的、还没有查找树信息的流表发布版本。[0077]如果之前所有发布版本都没有添加任何表项,则选择0号版本作为待修改版本;如果遍历之前生成的发布版本都有转发核正在使用该版本,则选择一个新版本作为待修改版本;由于最坏情况下,每个转发核都会占用一个发布版本,而控制平面需要1个待修改,同时需要1个可供发布的发布版本,因此,控制平面最多需要维护的版本数量为交换机内转发核数m+2。[0078]其中,控制平面每次利用当前的更新后的全量表和建表表,并基于待修改版本,都会生成一个当前最新发布版本,多个转发核并行查询同一份控制平面生成的该当前最新发布版本,并依据各自查询到的转发规则进行转发。[0079]当转发平面的某个核正在使用某个版本查表时,如果此时有更新表项消息,并且控制平面生成当前的最新发布版本时,本次查表依旧使用正在查的该某个版本,在该转发核完成转发后,在下一次再有查表需求时,则按照当前的最新的发布版本进行查找。在进行更改操作时,利用批量更新表项的方法,进一步减少了创建查找树信息的次数,提高了流表的加载速度;同时由控制平面负责修改发布版本上的使用标识符和生成最新流表发布版本,避免每个转发核更新流表时都需要创建查找树,减轻了转发核负担,提高了交换机的转发性能。[0080]转发平面中的多个独立的转发核对当前最新流表发布版本进行并行查表,并依据各自查询到的转发规则进行转发。[0081]具体地,转发平面中的每个独立的转发核对同一份当前最新流表发布版本进行并行查询,查找到当前最新流表发布版本,再对该当前最新流表发布版本进行查表,依据各自查询到的转发规则进行转发,并根据预先设定的转发次数,完成转发核的转发;同时,控制平面修改该当前最新流表发布版本上的使用标识符reference。[0082]其中,所述转发平面包括:m个独立的转发核,且相互之间独立;其中,m为大于或等于1的整数;[0083]针对m个独立的转发核,控制平面至多维护m+2个流表发布版本;其中,控制平面至多维护m+2个流表发布版本是指最多需要维护m+2个流表发布版本,而不是无限制的维护发布版本,从而占用控制平面的处理资源。[0084]其中,该m+2个流表发布版本包括:m个独立的转发核中的每个独立的转发核正在使用的流表发布版本、待修改版本和当前的流表发布版本。[0085]所述m+2个流表版本中的每个流表发布版本上均设置使用标识符reference,用于标识是否有转发核正在使用流表发布版本;[0086]具体地,当无转发核正在使用流表发布版本时,则该流表发布版本的使用标识符reference为0;[0087]当有1-m个转发核正在使用流表发布版本时,则该流表发布版本的使用标识符reference从1累加到与转发核的个数相同的数值。[0088]本发明还提供了一种基于批量更新的多核sdn交换机流表管理系统,该系统包括:[0089]存储模块,用于利用多核sdn交换机的控制平面接收控制器实时下发的建表消息,并将其存储至建表表;[0090]发布版本创建模块,用于利用控制平面接收控制器实时下发的更新表项消息,并缓存至增量表;判断是否达到批量更新条件;[0091]如果达到批量更新条件,则将缓存至增量表的n条更新表项消息进行一次批量更新,并将其更新至全量表;根据建表表和全量表,基于控制平面任选的待修改版本,生成具有查找树信息的当前最新流表发布版本,供转发平面查表使用;[0092]如果未达到批量更新条件,则继续将更新表项消息缓存至增量表,直至达到批量更新条件;和[0093]转发模块,用于利用转发平面中的每个独立的转发核对当前最新流表发布版本进行查表,并依据各自查询到的转发规则进行转发。[0094]实施例1.[0095]如图2所示,本发明提供了一种基于批量更新的多核sdn交换机流表管理方法,该1(addtable4entry1),增加entry2(addtable4entry2),并按照时间先后顺序依次写入增量表的尾部,更新表项消息设置有增加(add)、删除(del)、修改(mod)三种类型,通过设计index这一变量来唯一标识每一条表项。[0116]图3中控制器下发了8条更新表项信息,并通过单链表结构存储在增量表中,假设批量更新条件为预先设定的接收更新表项消息的数量n为8,则当前情况下达到批量更新条件,将8条更新表项信息整合至全量表。[0117]从全量表的链表头部逐一读取更新表项消息的index和类型,如果更新表项消息的类型为增加(add)或修改(mod),则判断全量表中是否存在该index的表项,若不存在该表项,则在全量表中新添加该表项,并将全量表中表项计数加一;若已存在该表项,查看该表项匹配域是否与待修改的表项内容一致,如果一致,则将增量表中的表项内存直接拷贝到全量表中,进行覆盖更新;如果不一致,则直接舍弃该消息;[0118]如果更新表项消息的类型为删除(del),则判断全量表中是否存在该index的表项,若不存在该表项,则直接舍弃该消息,若存在该表项,则将该表项在全量表中所占的内存清空,并将全量表中表项计数减一;[0119]最后控制平面利用当前的全量表,在待修改版本上创建具有查找树信息的当前最新流表发布版本,即在待修改版本上对table1进行加载、在待修改版本上对table2进行和在待修改版本上对table4进行加载,创建具有查找树信息的最新流表发布版本,供多个转发核查询,并依据各自查询到的转发规则进行转发,同时,控制平面再任选一个待修改版本,供下一个更新的发布版本的构建,至此完成了流表管理的全过程。[0120]实施例3.[0121]交换机流表版本管理的示意图如图4a、4b、4c、4d、4e和4f所示,其中,在本实施例中,多核sdn交换机的转发平面中包括5个独立的转发核,分别为fe1核、fe2核、fe3核、fe4核、fe5核,在本发明所涉及的流表版本管理中,多核sdn交换机的控制平面维护的版本中包括一份待修改版本和一份最新发布版本,本实施例中,按照版本号从小到大的顺序进行遍历查找空闲版本,如果遍历之前生成的发布版本都有转发核正在使用该版本,则选择一个新版本作为待修改版本。由于最坏情况下,每个转发核都会占用一个旧的发布版本,因此,控制平面至多需要维护5个旧的发布版本,再加上一个待修改版本和一个最新的发布版本,即version0、version1、version2、version3、version4、version5、version6。[0122]图4a为本发明涉及的流表版本管理的一种场景示意图。如图4a所示,在初始化创建发布版本时,选择0号版本作为待修改版本,并在此基础上创建新的具有查找树信息的发布版本,创建完成后,需要寻找下一个待修改版本,此时各个转发核均未进行查表操作,即均未使用发布版本;[0123]图4b为图4a所示场景下转发核使用发布版本进行查表的示意图。如图4b所示,5个转发核均使用当前发布版本version0进行查表,此时version0的版本标识符reference[i]全置于1,表示正在使用中;而reference=5,表示有5个转发核正在使用中;[0124]图4c为图4b所示场景下部分转发核完成查表并有更新表项需求的示意图。如图4c所示,fe1核、fe2核、fe3核、fe4核均已经完成查表,fe1核还在version0版本进行查表,此时version0的版本标识符只有reference[0]置于1,表明version0也还在使用中。[0125]当有更新表项需求时,按照版本号从小到大的顺序遍历,version1作为第一个被找到的待修改版本,控制平面在version1版本上生成最新发布版本,正在使用version0版本进行查表的转发核fe1核则继续使用该版本查表,不受新发布的最新发布版本的影响,故此时fe1核依旧在version0版本进行查表。[0126]图4d为图4c所示场景下有除正在查表的fe1核之外的转发核进行查表的示意图。如图4d所示,fe1核依旧在version0版本进行查表,当有其他转发核有查表需求时,例如fe3核,则按照当前发布版本version1进行查表,此时version0版本和version1版本均在使用中,利用多版本流表管理完成了在不影响当前正在查表的转发核fe1核工作的前提下,完成了流表版本的平滑更替。[0127]图4e为图4d所示场景下正在查表的转发核结束查表的示意图。如图4e所示,fe1核按照预先设定的转发次数,结束了在version0版本的查表,并将位于该转发核上的reference[0]置0,此时没有任何一个核在使用version0版本进行查表,将该版本置于空闲状态吗,且不是当前的发布版本,可作为待修改版本;[0128]图4f为图4e所示场景下有除正在查表的fe3核之外的转发核进行查表的示意图。如图4f所示,由于并没有发布新的流表版本,此时发布版本依旧为version1,fe3核依旧在version1版本进行查表,当fe4核与fe5核需要查表时,也按照当前的发布版本version1进行查表。此外通过版本号从小到大的顺序遍历,选择version0作为待修改版本,供下次进行批量更新时,则在version0上进行加载,生成下一个新的发布版本。[0129]最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1