本发明涉及但不限于软件定义网络(sdn,softwaredefinednetwork)技术,尤指一种网络功能实现方法及控制装置和网元。
背景技术:
开放网络基金会(onf,opennetworkingfoundation)制定的软件定义网络(sdn,softwaredefinednetwork)架构1.0标准描述了sdn的基本组件,图1为相关技术中sdn网络组件架构示意图,如图1所示,sdn采用控制平面与数据平面相分离的架构,sdn的控制平面由sdn控制器来实现,sdn的数据平面由网元来实现,sdn控制器与网元之间通过sdn南向接口相连。sdn控制器通过sdn南向接口向网元下发转发表,从而达到控制数据转发的目的,以实现数据转发和转发控制的分离。
随着sdn技术的演进以及sdn部署的增多,人们发现,不论是从传统网络演进而来的sdn网络,还是新建的sdn网络,网元除了需要支持网元与sdn控制器之间运行的sdn南向接口控制协议,比如开放流(openflow)协议外,还需要支持网元与网元之间运行的其它传统控制协议,比如双向转发检测(bfd)协议、链路层发现协议(lldp)和域内路由协议(igp)等,本文中,将网元与sdn控制器之间运行的sdn南向接口控制协议称为集中式控制协议,网元与网元之间运行的其它传统控制协议称为分布式控制协议。也就是说,网元既要支持集中式控制协议,又要支持分布式控制协议。
虽然集中式控制协议也能够实现分布式控制协议所能实现的网络功能,但是集中式控制协议与分布式控制协议在实现相同的网络功能如操作、管理和维护(oam)功能时会具备不同的性能和实时性,而不同sdn应用场景对于同一网络功能的性能及实时性会有不同的要求。于是,对于很多sdn应用场景来说,网元需要支持分布式控制协议并利用分布式控制协议实现某些网络功能,才能满足这些sdn应用场景对这些网络功能的性能及实时性要 求。
对于同时支持集中式控制协议和分布式控制协议的网元来说,虽然在利用上述两类控制协议实现相同的网络功能时会有性能及实时性上的区别,但是,利用上述两类控制协议来同时实现相同的网络功能时仍会发生冲突,针对如何避免集中式控制协议和分布式控制协议同时实现相同的网络功能的问题,目前尚未提出有效的解决方案。
技术实现要素:
本发明提供一种网络功能实现方法及控制装置和网元,能够避免集中式控制协议和分布式控制协议同时实现相同的网络功能时发生冲突的问题。
为了达到本发明目的,本发明提供了一种网络功能实现方法,当软件定义网络sdn控制器与网元之间建立起控制连接时,包括:
sdn控制器查询网元能够支持的分布式控制协议类型及分布式控制协议在网元各端口上的使能状态;
对于分布式控制协议处于启用状态的端口,sdn控制器关闭所述端口上用于实现与所述分布式控制协议相同网络功能的集中式控制协议。
可选地,该方法还包括:对于所述网元未启用分布式控制协议实现网络功能的端口,利用集中式控制协议实现所述网络功能。
可选地,所述sdn控制器查询网元能够支持的分布式控制协议类型及分布式控制协议在网元各端口上的使能状态包括:
所述sdn控制器向网元发送查询消息,查询消息用于查询网元能够支持的分布式控制协议类型以及分布式控制协议在网元各端口上的使能状态;
接收来自所述网元返回的响应消息,响应消息携带网元能够支持的分布式控制协议类型,以及分布式控制协议在所述网元各端口上的使能状态。
可选地,所述查询消息为openflow协议中定义的网元功能查询ofpt_features_request消息;
所述响应消息为扩展的网元功能响应ofpt_features_reply消息。
可选地,该方法还包括:所述网元将能够支持的分布式控制协议类型和/ 或分布式控制协议在网元各端口上的使能状态发生变化信息通过通告消息通告给所述sdn控制器。
可选地,所述通告消息为扩展的openflow异步消息。
可选地,该方法还包括:所述sdn控制器向网元发送命令消息,所述命令消息用以指示所述网元启用或关闭网元所支持的一种或一种以上分布式控制协议在所述网元各端口上的运行。
可选地,所述命令消息为扩展的网元配置ofpt_set_config消息或者扩展的网元端口修改ofpt_port_mod消息。
可选地,所述扩展携带的分布式协议信息采用类型-长度-赋值tlv的封装格式;
其中,tlv的类型type字段表示该tlv携带了分布式协议信息;
长度length字段表示所有n个分布式协议元组的总长度;
赋值value字段由n个分布式协议元组组成,每个分布式协议元组又包含三个字段:分布式协议类型、端口号和使能状态。
本发明又提供了一种控制装置,包括查询模块,控制模块;其中,
查询模块,用于在与网元之间建立起控制连接时,查询网元能够支持的分布式控制协议类型及分布式控制协议在网元各端口上的使能状态;
控制模块,用于对于分布式控制协议处于启用状态的端口,关闭所述端口上用于实现与所述分布式控制协议相同网络功能的集中式控制协议。
可选地,所述控制模块还用于:对于分布式控制协议处于未启用状态的端口,利用集中式控制协议实现该网络功能。
可选地,还包括:第一处理模块,用于接收来自所述网元的网元能够支持的分布式控制协议类型和/或分布式控制协议在网元各端口上的使能状态发生变化的变化信息,并输出给控制模块。
可选地,所述控制模块还用于:向所述网元发送命令消息,所述命令消息用以指示网元启用或关闭网元所支持的一种或一种以上分布式控制协议在所述网元各端口上的运行。
本发明再提供了一种网元,包括:
接口模块,用于接收来自控制装置的查询消息,根据查询消息向第二处理模块发送需要查询的网元能够支持哪些分布式控制协议以及各种分布式控制协议在网元各端口上的使能状态的查询通知;
第二处理模块,用于接收到查询通知,根据查询通知向控制装置返回响应消息,响应消息携带需要查询的网元能够支持的分布式控制协议类型,以及分布式控制协议在网元各端口上的使能状态。
可选地,所述第二处理模块还用于,将自身所属网元能够支持的分布式控制协议类型和/或分布式控制协议在网元各端口上的使能状态发生变化的变化信息通告给所述控制装置。
可选地,所述接口模块还用于:接收来自所述控制装置的命令消息,根据命令消息向所述第二处理模块发送命令通知;
所述第二处理模块还用于:接收命令通知,根据命令通知启用或关闭自身所属网元所支持的一种或一种以上分布式控制协议在网元各端口上的运行。
本发明还提供了一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令用于执行上述任一项的网络功能实现方法。
与现有技术相比,本申请技术方案包括:当sdn控制器与网元之间建立起控制连接时,sdn控制器查询网元能够支持的分布式控制协议类型及分布式控制协议在网元各端口上的使能状态;对于分布式控制协议处于启用状态的端口,sdn控制器关闭所述端口上用于实现与所述分布式控制协议相同网络功能的集中式控制协议。本发明提供的技术方案中,当sdn控制器获知网元某端口正在启用分布式控制协议实现某网络功能后,不再利用集中式控制协议在相同网元端口上实现相同的网络功能,避免了集中式控制协议和分布式控制协议同时实现相同的网络功能时发生冲突的问题。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为相关技术中sdn网络组件架构示意图;
图2为本发明网络功能实现方法的流程图;
图3为本发明消息扩展tlv的格式示意图;
图4为本发明控制装置的组成结构示意图;
图5为本发明网元的组成结构示意图;
图6为本发明sdn控制器控制lldp协议的第一实施例的示意图;
图7为本发明sdn控制器控制bfd协议的第二实施例的示意图;
图8为本发明sdn控制器同时控制lldp协议和bfd协议的第三实施例的示意图;
图9为本发明sdn控制器控制igp协议的第四实施例的示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
图2为本发明网络功能实现方法的流程图,当sdn控制器与网元之间建立起控制连接时,如图2所示,包括:
步骤200:sdn控制器查询网元能够支持的分布式控制协议类型及分布式控制协议在网元各端口上的使能状态。
sdn控制器与网元之间一旦建立起控制连接,sdn控制器随即向网元发送查询消息,以查询网元能够支持哪些分布式控制协议以及各种分布式控制协议在网元各端口上的使能状态;而网元在收到来自sdn控制器的查询消息后返回响应消息,以向sdn控制器上报网元自身所支持的各种分布式控制协议类型,以及各种分布式控制协议在网元各端口上的使能状态。
进一步地,本步骤还包括:网元通过对各种分布式控制协议进行统一的编码,比如:给分布式控制协议如lldp分配码字1,给分布式控制协议如bfd分配码字2等,只要使得每种分布式控制协议都有该分布式控制协议唯一对应的码字即可。
各种分布式控制协议在网元各端口上的两种使能状态包括启用(enabled)状态和关闭(disabled)状态。
网元在向sdn控制器发送的响应消息中携带网元所支持的各种分布式控制协议对应的码字,以及这些码字与端口号、使能状态的对应关系,以实现对网元所支持的各种分布式控制协议类型以及各种分布式控制协议在网元各端口上的使能状态的上报。
其中,
sdn控制器向网元发送的查询消息可以使用openflow协议中定义的网元功能查询(ofpt_features_request)消息;网元向sdn控制器回复的响应消息可以通过openflow协议中定义的网元功能响应(ofpt_features_reply)消息扩展得到,扩展携带的分布式协议信息可采用类型-长度-赋值(tlv,type-length-value)的封装格式,图3为本发明消息扩展tlv的格式示意图,如图3所示,tlv的type字段表示该tlv携带了分布式协议信息;length字段表示所有n个分布式协议元组的总长度;value字段由n个分布式协议元组组成,每个分布式协议元组又包含三个字段:分布式协议类型如码字、端口号和使能状态。
其中,openflow提供了一个开放的协议,能在不同的交换机和路由器上对流表进行编程。
步骤201:对于分布式控制协议处于启用状态的端口,sdn控制器关闭所述端口上用于实现与所述分布式控制协议相同网络功能的集中式控制协议。
进一步地,对于网元未启用分布式控制协议实现网络功能的端口,仍然可以利用集中式控制协议实现该网络功能。
本发明提供的技术方案中,当sdn控制器获知网元某端口正在启用分布 式控制协议实现某网络功能后,不再利用集中式控制协议在相同网元端口上实现相同的网络功能,避免了集中式控制协议和分布式控制协议同时实现相同的网络功能时发生冲突的问题。
进一步地,
由于sdn网络中的网元可能同时受到多个sdn控制器的控制,而且除了受到sdn控制器的控制,网元还可能受到网管和/或网元配置点的管理,所以在网络运行过程中,网元所支持的分布式控制协议类型和/或各种分布式控制协议在网元各端口上的使能状态可能会发生sdn控制器事先不知情的变化,当网元所支持的分布式控制协议类型和/或各种分布式控制协议在网元各端口上的使能状态发生变化时,本发明方法还包括:
网元将能够支持的分布式控制协议类型和/或分布式控制协议在网元各端口上的使能状态发生变化信息通过通告消息通告给sdn控制器。
这样,对于网元正在启用分布式控制协议实现网络功能的端口,sdn控制器关闭了该端口上利用集中式控制协议实现相同的网络功能,对于网元未启用分布式控制协议实现网络功能的端口,仍然利用集中式控制协议实现该网络功能。
其中,通告消息可以使用扩展的openflow异步消息,即扩展的分布式协议状态通告消息,在扩展的分布式协议状态通告消息中也携带如图3所示的采用如tlv封装格式的分布式协议信息。
进一步地,
在sdn控制器实时掌握网元所支持的各种分布式控制协议类型,以及各种分布式控制协议在网元各端口上的使能状态的基础上,该方法还包括:
sdn控制器向网元发送命令消息,以指示网元启用或关闭网元所支持的一种或一种以上分布式控制协议在网元各端口上的运行。也就是说,sdn控制器可以根据需要随时修改网元所支持的各种分布式控制协议在网元各端口上的使能状态。
其中,命令消息可以通过openflow协议中定义的网元配置(ofpt_set_config)消息扩展得到,在扩展的ofpt_set_config消息中也携带如图3所示的采用如tlv封装格式的分布式协议信息。命令消息也 可以通过openflow协议中定义的网元端口修改(ofpt_port_mod)消息扩展得到,扩展的ofpt_port_mod消息中携带有分布式协议类型字段和使能状态字段。
图4为本发明控制装置的组成结构示意图,如图4所示,至少包括查询模块,控制模块;其中,
查询模块,用于在与网元之间建立起控制连接时,查询网元能够支持的分布式控制协议类型及分布式控制协议在网元各端口上的使能状态;
控制模块,用于对于分布式控制协议处于启用状态的端口,关闭所述端口上用于实现与所述分布式控制协议相同网络功能的集中式控制协议。
具体地,
查询模块具体用于:在与网元之间建立起控制连接时,向网元发送查询消息,以查询网元能够支持哪些分布式控制协议以及各种分布式控制协议在网元各端口上的使能状态;接收来自网元返回携带网元自身所支持的各种分布式控制协议类型,以及各种分布式控制协议在网元各端口上的使能状态的响应消息。
控制模块还用于:对于分布式控制协议处于未启用状态的端口,仍然利用集中式控制协议实现该网络功能。
本发明控制装置还包括:第一处理模块,用于接收来自网元的网元能够支持的分布式控制协议类型和/或分布式控制协议在网元各端口上的使能状态发生变化的变化信息,并输出给控制模块。
进一步地,控制模块还用于:向网元发送命令消息,以指示网元修改如启用或关闭网元所支持的一种或一种以上分布式控制协议在网元各端口上的运行。
图5为本发明网元的组成结构示意图,至少包括接口模块,第二处理模块;其中,
接口模块,用于接收来自控制装置的查询消息,根据查询消息向第二处理模块发送需要查询的网元能够支持哪些分布式控制协议以及各种分布式控制协议在网元各端口上的使能状态的查询通知;
第二处理模块,用于接收到查询通知,根据查询通知向控制装置返回响应消息,响应消息携带需要查询的网元能够支持的分布式控制协议类型,以及分布式控制协议在网元各端口上的使能状态。
进一步地,
第二处理模块还用于,将自身所属网元能够支持的分布式控制协议类型和/或分布式控制协议在网元各端口上的使能状态发生变化的变化信息通告给控制装置。
进一步地,
接口模块还用于:接收来自控制装置的命令消息,根据命令消息向第二处理模块发送命令通知;
第二处理模块还用于:接收到命令通知,根据命令通知启用或关闭自身所属网元所支持的一种或一种以上分布式控制协议在网元各端口上的运行。
下面结合具体实施例对本发明技术方案进行详细描述。
图6为本发明sdn控制器控制lldp协议的第一实施例的示意图,如图6所示,在第一实施例中,假设sdn控制器与网元之间运行openflow集中式控制协议,网元1与网元2之间运行lldp分布式控制协议。在第一实施例中,sdn控制器通过扩展的openflow协议对网元所支持的lldp协议进行控制,包括:
sdn控制器通过发送查询消息获知:网元1和网元2都支持lldp协议,且lldp协议在网元1的端口1和网元2的端口2上都处于启用状态。具体包括:
sdn控制器与网元1之间一旦建立起控制连接,sdn控制器随即向网元1发送查询消息,以查询网元1能够支持哪些分布式控制协议以及各种分布式控制协议在网元1各端口上的使能状态;网元1在收到sdn控制器发送的查询消息后返回响应消息,向sdn控制器上报网元1自身支持lldp协议,以及lldp协议在网元1各端口上的使能状态。同样地,sdn控制器与网元2之间一旦建立起控制连接,sdn控制器随即向网元2发送查询消息,以查询网元2能够支持哪些分布式控制协议以及各种分布式控制协议在网元2各 端口上的使能状态;网元2在收到sdn控制器发送的查询消息后返回响应消息,向sdn控制器上报网元2自身支持lldp协议,以及lldp协议在网元2各端口上的使能状态。其中,
sdn控制器向网元1和网元2发送的查询消息可以使用openflow协议中定义的ofpt_features_request查询消息,网元1和网元2向sdn控制器回复的响应消息可以通过openflow协议中定义的ofpt_features_reply响应消息扩展得到,扩展携带的分布式协议信息可采用类型-长度-赋值(tlv,type-length-value)的封装格式,图3为本发明消息扩展tlv的格式示意图,如图3所示,tlv的type类型字段表示该tlv携带了分布式协议信息;length长度字段表示所有n个分布式协议元组的总长度;value赋值字段由n个分布式协议元组组成,每个分布式协议元组又包含三个字段:分布式协议类型如码字、端口号和使能状态。
第一实施例中,假设网元1的端口1和网元2的端口2都启用了lldp协议,使得网元1和网元2可以利用lldp协议实现相互发现的网络功能。这样,sdn控制器在获知网元1的端口1和网元2的端口2正在启用lldp协议实现相互发现的网络功能后,不再利用openflow协议在网元1的端口1和网元2的端口2上实现相互发现的网络功能,以免网元1的端口1同时收到两种相互冲突的lldp报文:网元2的端口2由于启用lldp协议后发送的lldp报文以及sdn控制器通过openflow协议指示网元2的端口2发送的lldp报文,造成网元1的端口1上lldp协议状态机的混乱。
在第一实施例中,假设独立于sdn控制器的网管分别将网元1的端口1和网元2的端口2上的lldp协议使能状态从启用修改为关闭,那么,还包括:网元1和网元2分别通过向sdn控制器发送通告消息的方式上报上述变化。其中,网元1和网元2向sdn控制器发送的通告消息可以使用扩展的openflow异步消息,即扩展的分布式协议状态通告消息,在扩展的分布式协议状态通告消息中也携带如图3所示的采用如tlv封装格式的分布式协议信息;
这样,sdn控制器在获知网元1的端口1和网元2的端口2不再启用lldp协议实现相互发现的网络功能后,开始利用openflow协议在网元1的端口1 和网元2的端口2上实现相互发现的网络功能。
根据openflow协议的规定,sdn控制器通过向网元1发送包含lldp报文和发送端口号的packet_out消息,指示网元1从端口1向外发送lldp报文,而网元2会将收到的lldp报文和接收端口号通过packet_in消息发送给sdn控制器;同理,sdn控制器通过向网元2发送包含lldp报文和发送端口号的packet_out消息,指示网元2从端口2向外发送lldp报文,而网元1会将收到的lldp报文和接收端口号通过packet_in消息发送给sdn控制器。这样,sdn控制器就可以利用openflow协议在网元1的端口1和网元2的端口2上实现相互发现的网络功能。
进一步地,在第一实施例中,sdn控制器还可以通过向网元1和网元2分别发送命令消息的方式指示网元1的端口1和网元2的端口2启用lldp协议。与此同时,sdn控制器停止利用openflow协议在网元1的端口1和网元2的端口2上实现相互发现的网络功能。其中,
sdn控制器向网元1和网元2发送的命令消息可以通过openflow协议中定义的ofpt_set_config消息扩展得到,在扩展的ofpt_set_config消息中也携带如图3所示的采用如tlv封装格式的分布式协议信息;sdn控制器向网元1和网元2发送的命令消息也可以通过openflow协议中定义的ofpt_port_mod消息扩展得到,扩展的ofpt_port_mod消息中携带有分布式协议类型字段和使能状态字段;
这样,sdn控制器在获知网元1的端口1和网元2的端口2上的lldp协议从启用状态变为关闭状态后,为了重新使能网元1和网元2之间的自动相互发现,可以向网元1和网元2分别发送命令消息,分别指示网元1的端口1和网元2的端口2重新启用lldp协议。与此同时,为了避免利用lldp协议和利用openflow协议同时实现网元1与网元2之间相互发现的网络功能所带来的冲突,sdn控制器停止利用openflow协议在网元1的端口1和网元2的端口2上实现相互发现的网络功能。
图7为本发明sdn控制器控制bfd协议的第二实施例的示意图,如图7所示,在第二实施例中,假设sdn控制器与网元之间运行openflow集中式控制协议,网元3与网元4之间运行bfd分布式控制协议。在第一实施例中, sdn控制器通过扩展的openflow协议对网元所支持的bfd协议进行控制,包括:
sdn控制器通过发送查询消息获知,网元3支持bfd协议且bfd协议在网元3的端口3上处于关闭状态,网元4不支持bfd协议。具体包括:
sdn控制器与网元3之间一旦建立起控制连接,sdn控制器随即向网元3发送查询消息,以查询网元3能够支持哪些分布式控制协议以及各种分布式控制协议在网元3各端口上的使能状态;网元3在收到sdn控制器发送的查询消息后返回响应消息,向sdn控制器上报网元3支持bfd协议,以及bfd协议在网元3各端口上的使能状态。同样地,sdn控制器与网元4之间一旦建立起控制连接,sdn控制器随即向网元4发送查询消息,以查询网元4能够支持哪些分布式控制协议以及各种分布式控制协议在网元4各端口上的使能状态;网元4在收到sdn控制器发送的查询消息后返回响应消息,向sdn控制器上报网元4支持的分布式控制协议,其中没有bfd协议,也即网元4不支持bfd协议。也就是说,在网元3的端口3上关闭了bfd协议,网元4不支持bfd协议,使得网元3和网元4无法利用bfd协议实现链路状态实时监控的网络功能。
在sdn控制器获知网元3的端口3和网元4的端口4没有启用bfd协议实现链路状态实时监控的网络功能后,开始利用openflow协议在网元3的端口3和网元4的端口4上实现链路状态实时监控的网络功能。
根据openflow协议的规定,sdn控制器通过向网元3发送包含bfd报文和发送端口号的packet_out消息,指示网元3从端口3向外发送bfd报文,sdn控制器通过向网元4下发处理bfd报文的流表,指示网元4对收到的bfd报文进行处理;sdn控制器通过向网元4发送包含bfd报文和发送端口号的packet_out消息,指示网元4从端口4向外发送bfd报文,sdn控制器通过向网元3下发处理bfd报文的流表,指示网元3对收到的bfd报文进行处理。这样,sdn控制器就可以利用openflow协议在网元3的端口3和网元4的端口4上实现链路状态实时监控的网络功能。
假设独立于sdn控制器的网管在网元4上新安装了bfd协议,且配置网元4的端口4上的bfd协议处于关闭状态,网元4可以通过向sdn控制 器发送通告消息的方式上报上述变化。
进一步地,sdn控制器还可以通过向网元3和网元4分别发送命令消息的方式指示网元3的端口3和网元4的端口4启用bfd协议。与此同时,sdn控制器会停止利用openflow协议在网元3的端口3和网元4的端口4上实现链路状态实时监控的网络功能。
进一步地,sdn控制器在获知网元4新安装了bfd协议且网元4的端口4上的bfd协议处于关闭状态后,为了使能网元3和网元4之间的链路状态实时监控,可向网元3和网元4分别发送命令消息,指示网元3的端口3和网元4的端口4启用bfd协议。与此同时,为了避免利用bfd协议和利用openflow协议同时实现网元3与网元4之间链路状态实时监控的网络功能所带来的冲突,sdn控制器会停止利用openflow协议在网元3的端口3和网元4的端口4上实现链路状态实时监控的网络功能。
图8为本发明sdn控制器同时控制lldp协议和bfd协议的第三实施例的示意图,如图8所示,第三实施例中,假设sdn控制器与网元之间运行openflow集中式控制协议,网元1与网元2之间运行lldp和bfd分布式控制协议,在第三实施例中,sdn控制器通过扩展的openflow协议对网元所支持的lldp协议和bfd协议同时进行控制,包括:
sdn控制器通过发送查询消息获知:网元5支持lldp协议和bfd协议,且lldp协议在网元5的端口5上处于启用状态,bfd协议在网元5的端口5上处于关闭状态,网元6支持lldp协议而不支持bfd协议,且lldp协议在网元6的端口6上处于启用状态。具体包括:
sdn控制器与网元5之间一旦建立起控制连接,sdn控制器随即向网元5发送查询消息,以查询网元5能够支持哪些分布式控制协议以及各种分布式控制协议在网元5各端口上的使能状态;网元5在收到sdn控制器发送的查询消息后返回响应消息,向sdn控制器上报网元5自身支持lldp协议和bfd协议,以及lldp协议和bfd协议在网元5各端口上的使能状态。同样地,sdn控制器与网元6之间一旦建立起控制连接,sdn控制器随即向网元6发送查询消息,以查询网元6能够支持哪些分布式控制协议以及各种分布式控制协议在网元6各端口上的使能状态,网元6在收到sdn控制器发送的 查询消息后返回响应消息,向sdn控制器上报网元6自身支持的分布式控制协议以及这些分布式控制协议在网元6各端口上的使能状态,其中有lldp协议而没有bfd协议,即网元6支持lldp协议而不支持bfd协议。
第三实施例中,假设网元5的端口5和网元6的端口6都启用了lldp协议,使得网元5和网元6可以利用lldp协议实现相互发现的网络功能。这样,sdn控制器在获知后,不再利用openflow协议在网元5的端口5和网元6的端口6上实现相互发现的网络功能,以免产生冲突。
如果网元5的端口5上关闭了bfd协议,网元6不支持bfd协议,使得网元5和网元6无法利用bfd协议实现链路状态实时监控的网络功能。那么,sdn控制器获知网元5的端口5和网元6的端口6没有启用bfd协议实现链路状态实时监控的网络功能后,会开始利用openflow协议在网元5的端口5和网元6的端口6上实现链路状态实时监控的网络功能。
第三实施例中,假设独立于sdn控制器的网管分别将网元5的端口5和网元6的端口6上的lldp协议使能状态从启用修改为关闭,那么,还包括:网元5和网元6分别通过向sdn控制器发送通告消息的方式上报上述变化。同样,如果独立于sdn控制器的网管在网元6上新安装了bfd协议,且配置网元6的端口6上的bfd协议处于关闭状态,网元6通过向sdn控制器发送通告消息的方式上报上述变化。
sdn控制器获知网元5的端口5和网元6的端口6不再启用lldp协议实现相互发现的网络功能后,开始利用openflow协议在网元5的端口5和网元6的端口6上实现相互发现的网络功能。
进一步地,在第三实施例中,sdn控制器还可以通过向网元5和网元6分别发送命令消息的方式指示网元5的端口5和网元6的端口6同时启用lldp协议和bfd协议。与此同时,sdn控制器停止利用openflow协议在网元5的端口5和网元6的端口6上实现相互发现的网络功能和链路状态实时监控的网络功能。
这样,sdn控制器在获知网元5的端口5和网元6的端口6上的lldp协议从启用状态变为关闭状态后,为了重新使能网元5和网元6之间的自动相互发现,可以向网元5和网元6分别发送命令消息,分别指示网元5的端 口5和网元6的端口6重新启用lldp协议。与此同时,为了避免利用lldp协议和利用openflow协议同时实现网元5与网元6之间相互发现的网络功能所带来的冲突,sdn控制器停止利用openflow协议在网元5的端口5和网元6的端口6上实现相互发现的网络功能。
同样,sdn控制器在获知网元6新安装了bfd协议且网元6的端口6上的bfd协议处于关闭状态后,为了使能网元5和网元6之间的链路状态实时监控,可以向网元5和网元6分别发送命令消息,指示网元5的端口5和网元6的端口6启用bfd协议。与此同时,为了避免利用bfd协议和利用openflow协议同时实现网元5与网元6之间链路状态实时监控的网络功能所带来的冲突,sdn控制器停止利用openflow协议在网元5的端口5和网元6的端口6上实现链路状态实时监控的网络功能。
图9为本发明sdn控制器控制igp协议的第四实施例的示意图,如图9所示,在第四实施例中,假设sdn控制器与网元之间运行openflow集中式控制协议,网元7、网元8、网元9之间运行igp分布式控制协议。在第四实施例中,sdn控制器通过扩展的openflow协议对网元所支持的igp协议进行控制,包括:
sdn控制器通过发送查询消息获知:网元7、网元8、网元9都支持igp协议,且igp协议在网元7的端口7和端口8、网元8的端口7和端口8、网元9的端口9和端口10上都处于启用状态。具体包括:
sdn控制器与网元7之间一旦建立起控制连接,sdn控制器随即向网元7发送查询消息,以查询网元7能够支持哪些分布式控制协议以及各种分布式控制协议在网元7各端口上的使能状态;网元7在收到sdn控制器发送的查询消息后返回响应消息,向sdn控制器上报网元7自身支持igp协议,以及igp协议在网元7各端口上的使能状态。同样地,sdn控制器与网元8之间一旦建立起控制连接,sdn控制器随即向网元8发送查询消息,以查询网元8能够支持哪些分布式控制协议以及各种分布式控制协议在网元8各端口上的使能状态;网元8在收到sdn控制器发送的查询消息后返回响应消息,向sdn控制器上报网元8支持igp协议,以及igp协议在网元8各端口上的使能状态。同样地,sdn控制器与网元9之间一旦建立起控制连接,sdn控 制器随即向网元9发送查询消息,以查询网元9能够支持哪些分布式控制协议以及各种分布式控制协议在网元9各端口上的使能状态;网元9在收到sdn控制器发送的查询消息后返回响应消息,向sdn控制器上报网元9支持igp协议,以及igp协议在网元9各端口上的使能状态。
第四实施例中,假设网元7的端口7和端口8、网元8的端口7和端口8、网元9的端口9和端口10都启用了igp协议,使得网元7、网元8和网元9可以利用igp协议实现路由转发的网络功能。这样,在sdn控制器获知网元7的端口7和端口8、网元8的端口7和端口8、网元9的端口9和端口10正在启用igp协议实现路由转发的网络功能后,不再利用openflow协议在网元7的端口7和端口8、网元8的端口7和端口8、网元9的端口9和端口10上实现路由转发的网络功能。也就是说,sdn控制器不会计算网元7、网元8、网元9之间的路由,也不会利用openflow协议给网元7、网元8、网元9下发相应的转发流表,以免网元7、网元8、网元9上通过igp协议生成的转发表与sdn控制器通过openflow协议下发的转发流表发生冲突,造成网元上转发状态的混乱。
在第四实施例中,假设独立于sdn控制器的网管分别将网元7的端口7和端口8、网元8的端口7和端口8、网元9的端口9和端口10上的igp协议使能状态从启用修改为关闭,呢么,还包括:网元7、网元8、网元9分别通过向sdn控制器发送通告消息的方式上报上述变化。
这样,sdn控制器在获知网元7的端口7和端口8、网元8的端口7和端口8、网元9的端口9和端口10不再启用igp协议实现路由转发的网络功能后,开始利用openflow协议在网元7的端口7和端口8、网元8的端口7和端口8、网元9的端口9和端口10上实现路由转发的网络功能。
根据openflow协议的规定,sdn控制器会计算网元7的端口7和端口8、网元8的端口7和端口8、网元9的端口9和端口10之间的路由,形成每个网元上对应于所计算出路由的转发流表,然后通过openflow协议给网元7、网元8、网元9下发相应的转发流表。这样,sdn控制器就可以利用openflow协议在网元7的端口7和端口8、网元8的端口7和端口8、网元9的端口9和端口10上实现路由转发的网络功能。
进一步地,在第四实施例中,sdn控制器还可以通过向网元7、网元8、网元9分别发送命令消息的方式指示网元7的端口7和端口8、网元8的端口7和端口8、网元9的端口9和端口10启用igp协议。与此同时,sdn控制器停止利用openflow协议在网元7的端口7和端口8、网元8的端口7和端口8、网元9的端口9和端口10上实现路由转发的网络功能。
这样,sdn控制器在获知网元7的端口7和端口8、网元8的端口7和端口8、网元9的端口9和端口10上的igp协议从启用状态变为关闭状态后,为了重新使能网元7、网元8、网元9之间的路由转发,可以向网元7、网元8、网元9分别发送命令消息,分别指示网元7的端口7和端口8、网元8的端口7和端口8、网元9的端口9和端口10重新启用igp协议。与此同时,为了避免利用igp协议和利用openflow协议同时实现网元7、网元8和网元9之间路由转发的网络功能所带来的冲突,sdn控制器停止利用openflow协议在网元7的端口7和端口8、网元8的端口7和端口8、网元9的端口9和端口10上实现路由转发的网络功能。
以上所述,仅为本发明的较佳实例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。