一种软件定义网络中组表的处理方法、系统和控制器的制作方法

文档序号:7553026阅读:162来源:国知局

专利名称::一种软件定义网络中组表的处理方法、系统和控制器的制作方法
技术领域
:本发明涉及通信领域中的组表处理技术,尤其涉及一种软件定义网络(SoftwareDefinedNetwork,SDN)中组表的处理方法、系统和控制器。
背景技术
:SDN是一种新型网络创新架构,是针对现有网络设备和架构的一场变革,其核心理念是网络转发与网络控制的分离,从而可实现网络流量的灵活控制,为核心网络及应用的创新提供了良好的平台。SDN中的控制层由原有的交换机、路由器等网络设备中的控制功能抽取出来,采用独立的控制软件来实现。原有的交换机、路由器中的软件功能都从基础设施层剥离,由控制层统一实施交换与路由的管理。其中,所述控制软件可以远程向转发设备下发增、改、删等指令修改自身的流表(flowtable),以实现对网络报文的处理,如:转发、标签处理、过滤坐寸ο在SDN中,控制器(controller)对多个交换机(switch)进行控制和管理,其组成的架构如图1所示。在等价多路径(Equal-CostMultipathRouting,ECMP)或者组播的场景下均需要使用到组表(grouptable)进行处理,但现有技术只能对单个组表项进行操作,即:流表中的一条表项只能调用组表中的一个表项,但这种实现方式不能满足如下场景:在链路故障保护或链路捆绑等场景中,ECMP的出端口或者组播树的下游端口有可能为链路聚合端口。
发明内容有鉴于此,本发明的主要目的在于提供一种SDN中组表的处理方法、系统和控制器,可支持ECMP的出端口或者组播树的下游端口为链路聚合端口的场景。为达到上述目的,本发明的技术方案是这样实现的:本发明提供了一种软件定义网络中组表的处理方法,该方法包括:控制器采用组表嵌套的方式实现数据流的转发。进一步地,所述控制器在等价多路径ECMP的出端口为链路聚合端口、或组播树的下游端口为链路聚合端口时,采用组表嵌套的方式实现数据流的转发。其中,所述组表嵌套的实现方式为:设置组表项I中的多个动作桶actionbucket表示ECMP的多个出端口或者组播树的多个下游端口,并将表示链路聚合端口的actionbucket中的action设置为跳转到组表项2;组表项2中的多个actionbucket则表示链路聚合端口的多个物理出端口。进一步地,该方法还包括:当ECMP出端口或者组播树的下游端口信息发生变化时,通过设置的变更消息对组表中的actionbucket进行增加、删除或修改。其中,所述变更消息为:group_bucket_mod消息。进一步地,该方法还包括:当交换机连接到控制器后,交换机上报自身是否支持组表嵌套能力,如果支持,则继续执行后续的组表嵌套处理流程;否则,后续需执行组表嵌套时,进行报错。其中,所述交换机上报自身是否支持组表嵌套能力,为:控制器向交换机发送查询消息FeatureRequest查询交换机的能力,交换机通过FeatureReply消息向控制器回复查询结果,FeatureReply消息中携带交换机自身是否支持组表嵌套能力的信息。本发明还提供了一种软件定义网络中组表的处理系统,包括控制器;所述控制器包括:组表处理模块,用于采用组表嵌套的方式实现数据流的转发。其中,所述组表处理模块,具体用于当ECMP的出端口为链路聚合端口、或者组播树的下游端口为链路聚合端口时,采用组表嵌套的方式实现数据流的转发。进一步地,当ECMP出端口或者组播树的下游端口信息发生变化时,所述组表处理模块,还用于通过设置的变更消息对组表中的actionbucket进行增加、删除或修改。该系统还包括交换机,所述交换机包括:能力上报模块,用于交换机与控制器连接后,上报交换机是否支持组表嵌套能力;相应的,所述组表处理模块,进一步用于确定交换机支持组表嵌套能力时,继续执行后续的组表嵌套处理流程;确定交换机不支持组表嵌套能力时,在后续需执行组表嵌套时,进行报错。本发明还提供了一种控制器,所述控制器包括:组表处理模块,所述组表处理模块为上文所述的组表处理模块。本发明提供的SDN中组表的处理方法、系统和控制器,控制器采用组表嵌套的方式实现数据流的转发,即:设置组表项I中的多个动作桶actionbucket表示等价多路径ECMP的多个出端口或者组播树的多个下游端口,并将表示链路聚合端口的actionbucket中的action设置为跳转到组表项2;组表项2中的多个actionbucket则表示链路聚合端口的多个物理出端口。因此,本发明可支持ECMP的出端口或者组播树的下游端口为链路聚合端口的场景。此外,本发明还通过设置的变更消息对组表中的actionbucket进行增加、删除或修改,因此,可支持ECMP出端口或者组播树的下游端口数量发生变化、或对端口执行变化处理的场景。此外,本发明在switch连接到controller后,switch上报自身是否支持组表嵌套能力,如果支持,则继续执行后续的组表嵌套处理流程;否则,后续需执行组表嵌套时,进行报错,保证了组表嵌套方法的有效进行,系统更加完善。图1为SDN中控制器和交换机的组成架构示意图;图2为本发明SDN中组表的处理方法实施例的流程示意图;图3为本发明交换机向控制器上报自身是否支持组表嵌套能力的方法示意图;图4为本发明实施例一ECMP出端口为链路聚合端口的系统结构示意图;图5为本发明实施例二组播树下游端口为链路聚合端口的系统结构示意图。具体实施例方式本发明的基本思想是:控制器采用组表嵌套的方式实现数据流的转发。其中,所述控制器在等价多路径ECMP的出端口为链路聚合端口、或组播树的下游端口为链路聚合端口时,采用组表嵌套的方式实现数据流的转发。进一步地,该方法还包括:当所述ECMP出端口或者组播树的下游端口信息发生变化时,即所述端口数量发生变化、或对端口执行变化处理时,通过设置的变更消息对组表中的动作桶(actionbucket)进行增加、删除或修改;其中,所述变更消息为group_bucket_mod消息。进一步地,该方法还包括:当连接到controller后,switch上报自身是否支持组表嵌套能力,如果支持,则继续执行后续的组表嵌套处理流程;否则,后续需执行组表嵌套时,进行报错。下面以ECMP的出端口为链路聚合端口、或者组播树的下游端口为链路聚合端口为例,并结合附图及具体实施例对本发明作进一步详细说明。图2为本发明SDN中组表的处理方法实施例的流程示意图,如图2所示,包括:步骤201:当连接到controller后,switch上报自身是否支持组表嵌套能力,如果支持,则执行步骤202;否则,后续需执行组表嵌套时,进行报错。具体为:当switch连接到controller后,如图3所不,controller向switch发送查询消息FeatureRequest查询switch的能力,switch通过FeatureReply消息向controller回复查询结果,FeatureReply消息中携带switch自身是否支持组表嵌套能力的信息,如果支持,则执行步骤202;否则,后续需要执行组表嵌套操作时,controller进行报错。步骤202:当ECMP的出端口或者组播树的下游端口为链路聚合端口时,采用组表嵌套的方式实现数据流的转发;具体为:当ECMP的出端口或者组播树的下游端口为链路聚合端口时,设组表项I中的多个actionbucket表示ECMP的多个出端口或者组播树的多个下游端口,并将其中表示链路聚合端口的actionbucket中的action设置为applygroup2,即跳转到组表项2。组表项2中的多个actionbucket则表示链路聚合端口的多个物理出端口。进一步地,该方法还包括:步骤203:当ECMP出端口或者组播树的下游端口信息发生变化时,通过设置的变更消息对组表中的actionbucket进行增加、删除或修改;具体为:当ECMP出端口或者组播树的下游端口数量发生变化时、或者对端口执行变化处理时,通过设置变更消息group_bucket_mod对组表中的actionbucket进行增加、删除或修改。下面结合具体实施例对本发明的方法进行详细描述。实施例一本实施例对应的场景为:ECMP出端口为链路聚合端口,系统结构如图4所示。图4中节点A-节点I均表示交换机(switch)。各switch上电后与controller建立连接,连接建立完成后,假设个人计算机(PC)I要与PC3进行通信,且在节点E和节点H之间存在ECMP,包括:路径I和路径2;其中,路径I为E---F---H,路径2为E---G---H,其中节点E和节点F之间使用链路聚合端口,则controller传输给节点E的,即从节点E上下发的流表和组表内容如下:flowtable:matchfieldinstructiondip=pc3_ipapplyactiomapplygroupIgrouptable:groupidtypeactionbucketISelectedbucket!:outport=poit(EG)bucket!:applygroup!2Selectedbucketl:outport=poitI(EF)bucket2:oiitport=port2(EF)这里,先通过普通流表匹配PC3的目的IP,然后进入到组表项I处理,即:applygroupl。在组表项I中,使用查找(Selected)类型指示数据流量进行散列(hash)处理,两个actionbucket分别代表节点E与节点H之间的不同出端口。actionbucketl代表了节点E与节点G之间的出端口,actionbucket2代表了节点E和节点F之间的链路聚合端口,所以需要跳转到组表项2进行处理,组表项2中的两个actionbucket分别代表了节点E和节点F之间链路聚合端口的成员端口。实施例二本实施例对应的场景为:组播树下游端口为链路聚合端口,系统结构如图5所示。如图5所示,在组播应用场景中,I个组播源(Source)和3个组播接收者(Receiverl、Receiver2和Receiver3)进行通信,所示的节点A-节点I表示交换机。其中,节点G和节点H之间存在链路聚合端口,则controller传输给节点G的,即从节点G上下发的流表和组表内容如下:权利要求1.一种软件定义网络中组表的处理方法,其特征在于,该方法包括:控制器采用组表嵌套的方式实现数据流的转发。2.根据权利要求1所述的方法,其特征在于,所述控制器在等价多路径ECMP的出端口为链路聚合端口、或组播树的下游端口为链路聚合端口时,采用组表嵌套的方式实现数据流的转发。3.根据权利要求2所述的方法,其特征在于,所述组表嵌套的实现方式为:设置组表项I中的多个动作桶actionbucket表示ECMP的多个出端口或者组播树的多个下游端口,并将表示链路聚合端口的actionbucket中的action设置为跳转到组表项2;组表项2中的多个actionbucket则表示链路聚合端口的多个物理出端口。4.根据权利要求2所述的方法,其特征在于,该方法还包括:当ECMP出端口或者组播树的下游端口信息发生变化时,通过设置的变更消息对组表中的actionbucket进行增加、删除或修改。5.根据权利要求4所述的的方法,其特征在于,所述变更消息为:group_bucket_mod消息。6.根据权利要求1至5中任一项所述的方法,其特征在于,该方法还包括:当交换机连接到控制器后,交换机上报自身是否支持组表嵌套能力,如果支持,则继续执行后续的组表嵌套处理流程;否则,后续需执行组表嵌套时,进行报错。7.根据权利要求6所述的方法,其特征在于,所述交换机上报自身是否支持组表嵌套能力,为:控制器向交换机发送查询消息FeatureRequest查询交换机的能力,交换机通过FeatureReply消息向控制器回复查询结果,FeatureReply消息中携带交换机自身是否支持组表嵌套能力的信息。8.一种软件定义网络中组表的处理系统,包括控制器;其特征在于,所述控制器包括:组表处理模块,用于采用组表嵌套的方式实现数据流的转发。9.根据权利要求8所述的系统,其特征在于,所述组表处理模块,具体用于当ECMP的出端口为链路聚合端口、或者组播树的下游端口为链路聚合端口时,采用组表嵌套的方式实现数据流的转发。10.根据权利要求9所述的系统,其特征在于,当ECMP出端口或者组播树的下游端口信息发生变化时,所述组表处理模块,还用于通过设置的变更消息对组表中的actionbucket进行增加、删除或修改。11.根据权利要求8、9或10所述的系统,其特征在于,该系统还包括交换机,所述交换机包括:能力上报模块,用于交换机与控制器连接后,上报交换机是否支持组表嵌套能力;相应的,所述组表处理模块,进一步用于确定交换机支持组表嵌套能力时,继续执行后续的组表嵌套处理流程;确定交换机不支持组表嵌套能力时,在后续需执行组表嵌套时,进行报错。12.—种控制器,其特征在于,所述控制器包括:组表处理模块,所述组表处理模块为权利要求8至11中任一项所述的组表处理模块。全文摘要本发明公开了一种软件定义网络中组表的处理方法,包括当组表中的出端口为链路聚合端口时,采用组表嵌套的方式实现数据流的转发。本发明还同时公开了一种软件定义网络中组表的处理系统和一种控制器,本发明所述方法、系统和控制器可支持等价多路径(ECMP)的出端口或者组播树的下游端口为链路聚合端口的场景。文档编号H04L12/811GK103200122SQ20131006967公开日2013年7月10日申请日期2013年3月5日优先权日2013年3月5日发明者孙凌,何文娟申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1