控制器角色确定方法、网络交换设备、控制器及网络系统与流程

文档序号:16061897发布日期:2018-11-24 12:16阅读:190来源:国知局

本公开涉及通信技术领域,尤其涉及一种控制器角色确定方法、网络交换设备、控制器及网络系统。

背景技术

sdn(softdefinenetwork,软件定义网络)是一种新型网络创新架构,其核心思想是将网络设备的控制层与转发层分离,以实现对网络流量的灵活控制。

在sdn网络中,控制器和网络交换设备之间采用openflow协议作为控制层和转发层的信令通道,控制器可以通过该信令通道配置和管理openflow网络交换设备。网络交换设备可以和多个控制器建立openflow连接。控制器集群中允许出现一个主控制器,集群中其余成员都是从控制器。主控制器用于接收网络交换设备上送的packet-in报文并负责下发转发流表,从控制器则主要进行网络交换设备的状态查询。当主控制器异常时,集群中的其他控制器就可以申请将自己的状态变更为主控制器,网络交换设备会主动将集群中的控制器状态通告给所有的控制器,以保证集群中主控制器的唯一性。

网络交换设备接入控制器集群时,若集群内主控制器的选择工作未完成或者网络连接异常,则可能导致一段时间内集群中存在多个主控制器的情况。多主控制器会导致集群中的业务无法成功下发到网络交换设备上,而一次配置下发失败,就会导致较长时间的业务断流,虽然可以依赖控制器和网络交换设备之间的周期性配置对比来发现配置失败的问题,但在大规模的数据中心内收集网络交换设备的配置需要较长时间,网络中的业务受到影响的可能性较大。



技术实现要素:

有鉴于此,本公开提出了一种控制器角色确定方法、网络交换设备、控制器及网络系统,能够降低控制器集群中存在多个主控制器的可能性。

根据本公开的第一方面,提供了一种控制器角色确定方法,所述方法应用于网络交换设备,所述方法包括:识别来自第一控制器的第一角色请求消息中携带的信息,其中,角色请求消息中包括控制器请求的角色信息以及控制器的优先级信息;在所述第一角色请求消息中控制器请求的角色信息为主控制器且所述第一角色请求消息中控制器的优先级信息为第一控制器的优先级的情况下,比较所述第一控制器的优先级和本设备中存储的当前作为主控制器的第二控制器的优先级;当第一控制器的优先级高于第二控制器的优先级时,向第二控制器发送角色状态消息,该角色状态消息中包括:所述第一控制器的设备标识、所述第一控制器请求的角色信息、以及所述第一控制器的优先级信息;当接收到所述第二控制器发送的第二角色请求消息时,在所述第二角色请求消息中角色信息为从控制器的情况下,将本设备上所述第二控制器的角色设置为从控制器、所述第一控制器的角色设置为主控制器,并向所述第二控制器发送响应于所述第二角色请求消息的变更成功消息、向所述第一控制器发送响应于所述第一角色请求消息的变更成功消息,以使所述第二控制器将自身的角色设置为从控制器、所述第一控制器将自身的角色设置为主控制器。

根据本公开的第一方面,提供了一种控制器角色确定方法,所述方法应用于控制器集群中的第一控制器,所述方法包括:在集群内的控制器未选举出主控制器时,根据本设备的优先级生成角色请求消息,所述角色请求消息中携带的角色信息为主控制器,所述角色请求消息中携带的控制器的优先级信息为本设备的优先级;向网络交换设备发送所述角色请求消息,以便于所述网络交换设备根据所述角色请求消息中携带的信息确定是否允许所述本设备担任主控制器;若接收到所述网络交换设备响应于所述角色请求消息返回的变更成功消息,则变更本设备的角色为主控制器。

根据本公开的第三方面,提供了一种网络交换设备,该网络交换设备包括:消息识别模块,用于识别来自第一控制器的第一角色请求消息中携带的信息,其中,角色请求消息中包括控制器请求的角色信息以及控制器的优先级信息;优先级比较模块,用于在所述第一角色请求消息中控制器请求的角色信息为主控制器且所述第一角色请求消息中控制器的优先级信息为第一控制器的优先级的情况下,比较所述第一控制器的优先级和本设备中存储的当前作为主控制器的第二控制器的优先级;消息发送模块,用于当第一控制器的优先级高于第二控制器的优先级时,向第二控制器发送角色状态消息,该角色状态消息中包括:所述第一控制器的设备标识、所述第一控制器请求的角色信息、以及所述第一控制器的优先级信息;第一角色设置模块,用于当接收到所述第二控制器发送的第二角色请求消息时,在所述第二角色请求消息中角色信息为从控制器的情况下,将本设备上所述第二控制器的角色设置为从控制器、所述第一控制器的角色设置为主控制器,并向所述第二控制器发送响应于所述第二角色请求消息的变更成功消息、向所述第一控制器发送响应于所述第一角色请求消息的变更成功消息,以使所述第二控制器将自身的角色设置为从控制器、所述第一控制器将自身的角色设置为主控制器。

根据本公开的第四方面,提供了一种控制器,该控制器包括:第一消息生成模块,用于在集群内的控制器未选举出主控制器时,根据本设备的优先级生成角色请求消息,所述角色请求消息中携带的角色信息为主控制器,所述角色请求消息中携带的控制器的优先级信息为本设备的优先级;第一消息发送模块,用于向网络交换设备发送所述角色请求消息,以便于所述网络交换设备根据所述角色请求消息中携带的信息确定是否允许所述本设备担任主控制器;角色变更模块,用于若接收到所述网络交换设备响应于所述角色请求消息返回的变更成功消息,则变更本设备的角色为主控制器。

根据本公开的第五方面,提供了一种网络交换设备,包括:处理器;用于存储处理器可执行指令的机器可读存储介质;其中,所述处理器被配置为执行上述第一方面的方法。

根据本公开的第六方面,提供了一种机器可读存储介质,其上储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使所述处理器实现上述第一方面的方法。

根据本公开的第七方面,提供了一种控制器,包括:处理器;用于存储处理器可执行指令的机器可读存储介质;其中,所述处理器被配置为执行上述第二方面的方法。

根据本公开的第八方面,提供了一种机器可读存储介质,其上储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使所述处理器实现上述第二方面的方法。

根据本公开的第九方面,提供了一种网络系统,所述网络系统包括上述第五方面所述的网络交换设备和上述第七方面所述的控制器。

本公开各方面实施例的控制器角色确定方法、网络交换设备、控制器及网络系统中,网络交换设备通过识别来自第一控制器的第一角色请求消息中携带的信息;在所述第一角色请求消息中控制器请求的角色信息为主控制器且优先级信息为第一控制器的优先级的情况下,比较第一控制器的优先级和本设备中存储的当前作为主控制器的第二控制器的优先级;当第一控制器的优先级高于第二控制器的优先级时,向第二控制器发送包括第一控制器的设备标识、第一控制器请求的角色信息以及第一控制器的优先级的角色状态消息;当接收到所述第二控制器发送的第二角色请求消息时,在所述第二角色请求消息中请求的角色信息为从控制器的情况下,将本设备上所述第二控制器的角色设置为从控制器、所述第一控制器的角色设置为主控制器,并向所述第二控制器发送响应于所述第二角色请求消息的变更成功消息,向所述第一控制器发送响应于所述第一角色请求消息的变更成功消息,由此能够在确定集群中原来作为主控制器的第二控制器申请成为从控制器后,再更改网络交换设备上各控制器的角色、同意其他控制器成为主控制器,这样网络交换设备上的主控制器角色和集群中主控制器的角色保持一致,降低了集群中同时存在多个主控制器的可能性,提升了网络交换设备和控制器之间openflow控制层面的稳定性。

根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。

附图说明

包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。

图1示出根据本公开一实施例的控制器角色确定方法的流程图。

图2示出根据本公开一实施例的sdn网络示意图。

图3示出根据本公开一实施例的控制器角色确定方法的流程图。

图4示出根据本公开一实施例的控制器角色确定方法的流程图。

图5示出根据本公开一实施例的控制器角色确定方法的流程图。

图6示出根据本公开一实施例的控制器角色确定方法的流程图。

图7示出根据本公开一实施例的控制器角色确定方法的流程图。

图8示出根据本公开一实施例的一种网络交换设备的框图。

图9示出根据本公开一实施例的一种网络交换设备的框图。

图10示出根据本公开一实施例的一种控制器的框图。

图11示出根据本公开一实施例的一种控制器的框图。

图12是根据一示例性实施例示出的一种网络交换设备的框图。

图13是根据一示例性实施例示出的一种控制器的框图。

具体实施方式

以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。

在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。

另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。

图1示出根据本公开一实施例的控制器角色确定方法的流程图。图2示出根据本公开一实施例的sdn网络示意图。如图2所示,sw1、sw2、sw3和sw4为openflow交换机(以下称为交换机),gw为网关,controller1和controller2为openflow控制器(以下称为控制器)。controller1和controller2为控制器集群(以下称为集群)中的成员。交换机和集群中的控制器之间建立openflow连接,交换机和控制器之间可以采用tls(transportlayersecurity,安全传输层协议)加密来保证传输安全,也可以采用tcp(transmissioncontrolprotocol,传输控制协议)直接传输。

如图2所示,以sw1接入集群为例。初始状态下,集群网络连接正常,sw1接入集群时,由集群内控制器进行协商,选择controller1作为sw1的主控制器。相关技术中,由于网络连接异常,sw1和控制器之间的openflow连接断开,之后网络恢复,sw1重新加入到sdn网络中,并发起和控制器的openflow连接的情况下,controller1和controller2同时感知到sw1的接入,在集群内协商选举sw1的主控制器。若此时集群网络尚未完全恢复(controller1和controller1之间的通信异常),则controller1和controller2可能都会向sw1申请成为主控制器。在sw1接收到的申请中的generationid(生成标识)小于当前sw1上最大的generationid时,sw1不允许变更主控制器;在sw1接收到的申请中的generationid大于或者等于当前sw1上最大的generationid时,sw1允许变更主控制器。sw1会依次执行接收到的申请,假设sw1先执行来自controller1的申请,再执行来自controller2的申请。sw1接收来自controller1的申请,若该申请中的generationid大于当前sw1上最大的generationid,则sw1确定controller1可以成为主控制器,sw1将本设备中controller1的角色设置为主控制器,向controller1发送变更成功消息。controller1接收变更成功消息,设置自身为主控制器。此时,sw1上最大的generationid为来自controller1的申请中的generationid。

由于每次集群内选举出主控制器时会在原有的generationid基础上产生一个更大的generationid,controller1和controller2对应的原有generationid是相同的,因此controller1和controller2发送的申请中携带的generationid可能相同。sw1接收到来自controller2的申请后,若该申请中的generationid等于sw1上最大的generationid(来自controller1的申请中的generationid),则sw1将本设备中controller1的角色设置为从控制器,controller2的角色设置为主控制器,向controller2发送变更成功消息,并向controller1发送角色状态消息。controller2接收变更成功消息,设置自身为主控制器。controller1接收角色状态消息,发现controller2为主控制器,controller1设置自身为从控制器。若网络状况较差导致controller1接收到角色状态消息的时间相较于controller2接收到变更成功消息的时间较晚,或者controller1一直无法接收到角色状态消息,就会出现controller1和controller2同时作为sw1主控制器的状态,此时,controller1和controller2都可以向sw1下发配置,即集群中出现了双主控的情形,因此可能导致控制器和网络交换设备之间业务下发不一致。

图1所示的控制器角色确定方法可以应用于网络交换设备,该网络交换设备与控制器集群建立了openflow连接,该网络交换设备可以为openflow交换机,例如图2所示的sw1、sw2、sw3和sw4等。如图1所示,该控制器角色确定方法包括:

步骤s11,识别来自第一控制器的第一角色请求消息中携带的信息,其中,角色请求消息中包括控制器请求的角色信息以及控制器的优先级信息。

在描述本公开的实施例之前,为了避免名称的混淆,对于实施例中涉及到的两类消息进行说明,本实施例中包括角色请求消息和角色状态消息两类消息。

其中,角色请求消息为控制器发往网络交换设备的消息,控制器通过角色请求消息向网络交换设备请求担任某种角色,例如,请求担任主控制器或者请求担任从控制器的角色;或者,在控制器集群内部已经选举出主控制器时,控制器可以通过角色请求消息请求网络交换设备变更网络交换设备中记录的主控制器和从控制器的信息。

角色状态消息为网络交换设备发往控制器的消息,当网络交换设备接收到角色请求消息确定控制器集群中有控制器向网络交换设备请求角色变换时,网络交换设备会通过角色状态消息通知集群中的其他控制器、该请求角色变换的控制器的相关信息。

具体的,角色请求消息中包括控制器请求的角色信息以及控制器的优先级信息。

网络交换设备可以根据角色请求消息中的角色信息设置本设备上控制器的角色,确定与控制器连接的openflow通道的角色。控制器的角色信息包括主控制器(master)、从控制器(slave)和对等控制器(equal)。角色请求消息中控制器的优先级信息可以为发送该角色请求消息的控制器的优先级,也可以为空值。当控制器的优先级信息为发送角色请求的控制器的优先级时,网络交换设备需要按照优先级来决定是否允许变更控制器的角色。当控制器的优先级信息为空值时,网络交换设备需要按照generationid来决定是否允许变更控制器的角色。

当然,角色请求消息还包括请求角色变换的控制器的设备标识。

当角色请求消息包括的该设备标识为第一控制器时,本实施例中角色请求消息记为第一角色请求消息,当角色请求消息中包括的该设备标识为第二控制器时,本实施例中角色请求消息记为第二角色请求消息。

第一角色请求消息为第一控制器向网络交换设备发送角色请求消息。第一角色请求消息中控制器请求的角色信息表示第一控制器请求担任的角色,该角色信息可以为主控制器、从控制器或者对等控制器。第一角色请求消息中的控制器的优先级信息可以是第一控制器的优先级或者空值。

网络交换设备可以识别出第一角色请求消息中携带了哪些信息,以及这些信息的取值。在一个示例中,openflow协议中,rolerequestmessage为角色请求消息,rolerequestmessage的role字段为控制器请求的角色信息,rolerequestmessage的priority字段为控制器的优先级信息。role字段的取值为1时表征对等控制器,role字段的取值为2时表征主控制器,role字段的取值为3时表征从控制器。priority字段的取值为0时表征空值,priority字段的取值非0时priority字段的取值为控制器的优先级。网络交换设备可以识别出rolerequestmessage中role字段的取值,从而确定出控制器请求担任的角色。网络交换设备可以识别出rolerequestmessage中priority字段的取值,从而决定角色是否允许发生变更。

第一控制器可以为控制器集群中任意一个控制器。

步骤s12,在所述第一角色请求消息中控制器请求的角色信息为主控制器且所述第一角色请求消息中控制器的优先级信息为第一控制器的优先级的情况下,比较所述第一控制器的优先级和本设备中存储的当前作为主控制器的第二控制器的优先级。

优先级代表了控制器在集群中作为主控制器的权重,优先级越高则控制器申请成为主控制器的成功率越高。优先级可以在控制器在加入集群时指定。在一种可能的实现方式中,控制器的优先级高低可以根据控制器的处理速度、稳定性等性能确定。

在集群内的控制器未选举出主控制器时,按照相关技术中的控制器角色确定方法,可能会出现多主控制器的状态。在本公开实施例中,设置一个优先级信息,在集群内的控制器未选举出主控制器时,控制器向网络交换设备发送的角色请求消息中控制器的优先级信息为该控制器的优先级;在集群内的控制器选举出主控制器时,控制器向网络交换设备发送的角色请求消息中优先级信息为空值。网络交换设备可以根据角色请求消息中是否携带有优先级信息,确定集群内的控制器是否选举出了主控制器,进而确定是根据优先级还是根据generationgid决定是否允许变更控制器的角色。

第一角色请求消息中控制器请求的角色信息为主控制器时,表示第一控制器请求担任主控制器。由于需要保证集群中主控制器的唯一性,因此,第一角色请求消息可能会进一步的触发其他控制器变更角色,例如原主控制器变更自身角色为从控制器。第一角色请求消息中控制器的优先级信息为第一控制器的优先级时,表示第一控制器所在集群未选举出主控制器,此时网络交换设备需要根据优先级确定是否允许第一控制器担任主控制器。

第二控制器为网络交换设备上当前角色为主控制器的控制器。第二控制器可以为集群中的控制器按照负载分担的方式选举出的主控制器,也可以为基于控制器的优先级确定的。网络交换设备中存储有第二控制器的优先级。

需要说明的是,当网络交换设备上存在角色为主控制器的控制器但该控制器是由集群中的控制器选举出的,网络交换设备中存储的当前作为主控制器的第二控制器的优先级为默认优先级。具体的,当网络交换设备上的主控制器是由集群中的控制器选举出来的时,网络交换设备接收到的来自该主控制器的角色请求消息中控制器的优先级信息为空值,网络交换设备也就无法获取到主控制器的优先级,因此,网络交换设备可以将本设备中存储的第二控制器的优先级设置为默认优先级。

在一个示例中,默认优先级可以低于集群中各控制器的优先级中的最低优先级。

步骤s13,当第一控制器的优先级高于第二控制器的优先级时,向第二控制器发送角色状态消息,该角色状态消息中包括:所述第一控制器的设备标识、所述第一控制器请求的角色信息、以及所述第一控制器的优先级信息。

当第一控制器的优先级高于第二控制器的优先级时,网络交换设备允许控制器的角色发生变更。网络交换设备可以向第二控制器发送角色状态消息,该角色状态消息中包括第一控制器的设备标识、第一控制器请求的角色信息、以及第一控制器的优先级信息。其中,设备标识可以用于识别唯一的控制器,第一控制器的设备标识可以用于识别第一控制器。网络交换设备可以从第一角色请求消息中获取第一控制器请求的角色信息以及第一控制器的优先级信息,根据步骤s12可知,第一控制器请求的角色信息为主控制器,第一控制器的优先级信息为第一控制器的优先级。

第二控制器接收到上述角色状态消息后,根据第一控制器的设备标识确定出该角色状态消息对应于第一控制器,根据第一控制器请求的角色信息确定出第一控制器为主控制器,根据第一控制器的优先级信息确定出第一控制器的优先级。当第二控制器确定第一控制器的优先级高于自身的优先级时,第二控制器向网络交换设备发送角色信息为从控制器的角色请求消息,以请求更改角色,即请求将自身当前的主控制器角色更改为从控制器角色。

步骤s14,当接收到所述第二控制器发送的第二角色请求消息时,在所述第二角色请求消息中控制器角色信息为从控制器的情况下,将本设备上所述第二控制器的角色设置为从控制器、所述第一控制器的角色设置为主控制器,并向所述第二控制器发送响应于所述第二角色请求消息的变更成功消息、向所述第一控制器发送响应于所述第一角色请求消息的变更成功消息,以使所述第二控制器将自身的角色设置为从控制器、所述第一控制器将自身的角色设置为主控制器。

第二角色请求消息为第二控制器向网络交换设备发送的请求消息。当第二请求消息中角色信息为从控制器时,表明第二控制器申请成为从控制器,不再做主控制器。

网络交换设备接收到第二角色请求消息,表明网络交换设备与第二控制器连接正常,此时,网络交换设备可以将本设备上第二控制器的角色设置为从控制器,向第二控制器发送响应于所述第二角色请求消息的变更成功消息,以保持网络交换设备和控制器上第二控制器角色的一致性。同时,网络交换设备可以将本设备上第一控制器的角色设置为主控制器,并向第一控制器发送响应于第一角色请求消息的变更成功消息,以实现了主控制器的更改。第一控制器接收到变更成功消息后,将自身的角色设置为主控制器,这样保持了网络交换设备和集群中主控制器角色的一致性,且角色变更过程中仅存在一个主控制器。

通过在确认第二控制器(原主控制器)申请成为从控制器后,网络交换设备再更改本设备上控制器的角色、允许第二控制器成为从控制器、第一控制器(申请成为主控制的控制器)成为主控制器,这样降低了集群中同时存在多主控制器的可能性,同时保持了网络交换设备上的主控制器角色和集群中主控制器上的角色的一致性,提升了网络交换设备和控制器之间配置下发的正确性,提升了控制器层面的稳定性。

图3示出根据本公开一实施例的控制器角色确定方法的流程图。如图3所示,该控制器角色确定方法还包括:

步骤s15,在所述第一角色请求消息中的角色信息为主控制器且所述第一角色请求消息中控制器的优先级信息为第一控制器的优先级的情况下,若本设备上不存所述第二控制器,则将本设备上所述第一控制器的角色设置为主控制器,并向所述第一控制器发送响应于所述角色请求消息的变更成功消息,以使所述第一控制器将自身的角色设置为主控制器。

网络交换设备上可能不存在选举出的主控制器的信息。在一个示例中,网络交换设备加入集群后,在集群内未协商出谁作为网络交换设备的主控制器时,网络交换设备上不存在主控制器的信息。在一个示例中,当网络交换设备与集群中主控制器连接异常时,网络交换设备上不存在主控制器的信息。

网络交换设备上不存在主控制器的信息时,表明集群中不存在主控制器,网络交换设备接收到第一角色请求消息后,可以直接将本设备上第一控制器的角色设置为主控制器,并同意第一控制器将自身的角色设置为主控制器,使第一控制器可以下发配置。

在一种可能的实现方式中,在步骤s14或者步骤s15的网络交换设备将本设备上第一控制器的角色设置为主控制器之后,网络交换设备可以将本设备中存储的主控制器的优先级更新为第一控制器的优先级。这样,可以保持网络交换设备上主控制器的优先级和集群中主控制器的优先级一致,使网络交换设备可以根据本地存储的主控制器优先级确定是否进行主控制器的变更。当网络交换设备确定出第一控制器的优先级高于本设备中存储的当前作为主控制器的第二控制器的优先级时,网络交换设备进入主控制器变更流程,执行步骤s13和步骤s14。当网络交换设备确定出第一控制器的优先级低于或者等于本设备中存储的当前作为主控制器的第二控制器的优先级时,网络交换设备拒绝进行主控制器的变更,向第一控制器发送响应于第一角色请求消息的变更失败消息,以使第一控制器保持自身的角色不变。

在一种可能的实现方式中,第一角色请求消息中还携带集群内选举出主控制器时产生的generationid。generationid是单调递增的计数器,每次主从关系改变时,控制器会分配一个新的(更大的)生成标识。例如,每当指定一个新的主控制器,生成标识会增加。

图4示出根据本公开一实施例的控制器角色确定方法的流程图。如图4所示,在所述识别来自第一控制器的第一角色请求消息中携带的信息之后,该控制器角色确定方法还包括:

步骤s16,在所述第一角色请求消息中控制器请求的角色信息为主控制器且所述第一角色请求消息中控制器的优先级信息为空值的情况下,比较所述第一角色请求消息中携带的generationid和本设备中最大的generationid。

步骤s17,当所述第一角色请求消息中携带的generationid大于所述本设备中最大的generationid时,将本设备上所述第一控制器的角色设置为主控制器,并向所述第一控制器发送响应于所述角色请求消息的变更成功消息,以使所述第一控制器将自身的角色设置为主控制器。

第一角色请求消息中控制器的优先级信息为空值,表明集群内的控制器已经通过集群控制器之间的交互选出了主控制器。第一角色请求消息中角色信息为主控制器,表明第一控制器为集群内的控制器交互后选举出的主控制器。此时,网络交换设备可以根据第一角色请求消息中携带的generationid确定是否允许变更主控制器。

在一种可能的实现方式中,当所述第一角色请求消息中携带generationid小于或者等于所述本设备中最大的generationid时,网络交换设备向第一控制器发送响应于所述第一角色请求消息的变更失败消息,拒绝进行主控制器的变更,使所述第一控制器保持自身的角色不变。

在一种可能的实现方式中,在步骤s17的将本设备上所述第一控制器的角色变更为主控制器之后,网络交换设备还可以将本设备中存储的第二控制器的优先级设置为默认优先级。在一个示例中,默认优先级可以低于集群中优先级最低的优先级。由于步骤s16中第一角色请求消息中控制器的优先级信息为空值,网络交换设备无法获取到第一控制器的优先级,因此网络交换设备可以将本设备中存储的第二控制器的优先级设置为默认优先级。

需要说明是是,在上述实施例中,控制器角色确定方法应用于网络交换设备,因而上述“本设备”指的是网络交换设备。

对于下面的控制器角色确定方法中,应用于控制器集群中的控制器,因而所涉及到的“本设备”指的是执行该方法的控制器。

图5示出根据本公开一实施例的控制器角色确定方法的流程图。该方法可以应用于控制器集群中的第一控制器,该第一控制器可以为集群中任意一个控制器,例如图2所示的controller1和controller2等。如图5所示,该控制器角色确定方法包括:

步骤s21,在集群内的控制器未选举出主控制器时,根据本设备的优先级生成角色请求消息,所述角色请求消息中携带的角色信息为主控制器,所述角色请求消息中携带的控制器的优先级信息为本设备的优先级。

步骤s22,向网络交换设备发送所述角色请求消息,以便于所述网络交换设备根据所述角色请求消息中携带的信息确定是否允许所述本设备担任主控制器。

步骤s23,若接收到所述网络交换设备响应于所述角色请求消息返回的变更成功消息,则变更本设备的角色为主控制器。

角色请求消息、角色信息、优先级信息,变更成功消息可以参照步骤s11至步骤s14,这里不再赘述。

网络交换设备接入集群时,若由于网络连接异常等原因,集群中的成员之间通信异常,集群内主控制器的协商无法正常进行,此时集群中的控制器向网络交换设备申请成为主控制器而发送的角色请求消息中携带的角色信息为主控制器、携带的控制器的优先级信息为本设备的优先级。各控制器加入集群时,指定了各自的优先级。

在一种可能的实现方式中,在集群内的控制器未选举出主控制器时,集群中的每个控制器(每个与网络交换设备建立openflow连接的控制器)均可以根据本设备的优先级生成角色请求消息,从而向网络交换设备申请成为该网络交换设备的主控制器。

在一种可能的实现方式中,第一控制器可以获取加入集群时集群内各控制器的优先级。若获取到了所述各控制器的优先级,则第一控制器比较所述各控制器的优先级,并当本设备的优先级为所述各控制器的优先级中的最高优先级时,根据所述本设备的优先级生成角色请求消息。若未获取到所述各控制器的优先级,则第一控制器根据本设备的优先级生成角色请求消息。

若第一控制器获取到了各控制器的优先级,表明网络交换设备接入集群时,集群内的控制器已经完成了优先级的传送,即第一控制器上保存了集群中所有其他控制器的优先级。在集群内的控制器已经完成了优先级的传送时,集群内优先级最高的控制器可以确定自己作为申请成为主控制器的控制器,并生成角色请求消息,集群内其他控制器不生成角色请求消息。这样,不需要每个控制器发送角色请求消息,节省了控制器的资源;减少了角色请求消息的数量,节省了网络资源和网络交换设备用于处理角色请求消息的资源;减少了控制器角色变更的次数,提升了网络稳定性。

若第一控制器未获取到各控制器的优先级,表明网络交换设备与集群之间的网络连接的建立早于集群内部的网络连接。此时,集群中每个控制器都可以生成角色请求消息,来向网络交换设备申请成为主控制器,以保证优先级较高的控制器能够成为主控制器。

控制器向网络交换设备发送角色请求消息的方式以及网络交换设备处理角色请求消息的方式可以参照步骤s11至步骤s17,这里不再赘述。

图6示出根据本公开一实施例的控制器角色确定方法的流程图。如图6所示,在向所述网络交换设备发送角色请求消息之前,该控制器角色确定方法还包括:

步骤s24,若确定本设备被选举为主控制器,则根据分配的generationid生成包括该generationid、角色信息为主控制器且优先级信息为空值的角色请求消息。

集群内的控制器选举第一控制器为主控制器后,集群内的其他控制器不会参与竞争,只有第一控制器会发送角色请求消息,此时角色请求消息中无需携带本设备的优先级,仅需要携带新分配的generationid即可。需要说明的是,generationgid可以由集群内的控制器协商分配,也可以由第三方分配,对此本公开不做限制。

图7示出根据本公开一实施例的控制器角色确定方法的流程图。该方法可以应用于控制器集群中的任一控制器。本实施例中,以该方法应用于上述实施例中的第一控制器为例进行说明,但应当理解的是,控制器集群中的任一控制器均可以执行该方法。其中,下述实施例中的第三控制器指的是控制器集群中除第一控制器以外的其他控制器。如图7所示,该角色确定方法还包括:

步骤s25,识别来自所述网络交换设备的角色状态消息中携带的信息,该角色状态消息为第三控制器申请角色变换时所述网络交换设备发送的用于通告角色信息的消息,该角色状态消息中包括所述第三控制器的设备标识、所述第三控制器请求的角色信息和所述第三控制器的优先级信息。

步骤s26,当本设备为主控制器时,在所述角色状态消息中第三控制器请求的角色信息为主控制器且所述角色状态消息中的优先级信息为第三控制器的优先级的情况下,比较所述第三控制器的优先级和本设备的优先级。

步骤s27,当所述第三控制器的优先级高于本设备的优先级时,向所述网络交换设备发送用于请求将本设备的角色变更为从控制器的角色请求消息。

网络交换设备可以通过角色状态消息向集群内的控制器通告角色信息。为了保证集群中主控制器的唯一性,当集群中的主控制器接收到的角色状态消息后,确定网络交换设备中的主控制器不是本设备时,集群中的控制器可以进行角色的更改。

在步骤s25中的角色状态消息为第三控制器申请角色变换时网络交换设备发送的用于通告角色信息的消息。具体的,第三控制器向网络交换设备发送第三角色请求消息,该第三角色请求消息中携带有第三控制器的标识、第三控制器请求的角色信息和第三控制器的优先级信息。在第三控制器请求的角色信息为主控制器且第三控制器的优先级信息为第三控制器的优先级的情况下,参照步骤s11至步骤s13,网络交换设备可以向第一控制器发送角色状态消息,该角色状态消息中包括第三控制器的设备标识、第三控制器请求的角色信息和第三控制器的优先级信息。

在步骤s26中,当角色状态消息中第三控制器请求的角色信息为主控制器时,表明第三控制器申请成为主控制器,为了保证集群中主控制器的唯一性,当前为主控制器的第一控制器需要进入角色变更流程。当角色状态消息中的优先级信息为第三控制器的优先级时(优先级信息不为空值时),表明第一控制器需要根据优先级确定是否进行角色变更。

在步骤s27中,当第三控制器的优先级高于本设备的优先级时,第一控制器可以更改自身的角色为从控制器。在优先级信息对应的优先级低于或者等于本设备的优先级时,第一控制器可以保持自身的角色不变。这样,可以使优先级较高的控制器为主控制器,优先级较低的控制器为从控制器。

第一控制器更改自身的角色为从控制器时,需要向所述网络交换设备发送用于请求将本设备的角色变更为从控制器的角色请求消息角色信息,以保持网络交换设备和控制器上角色的一致性。

在一种可能的实现方式中,当所述集群分裂为多个子集群时,与本设备所属子集群内的其他控制器进行交互,确定本设备是否继续存活;若确定本设备继续存活,则重新建立与所述网络交换设备之间的openflow连接;若确定本设备不再存活,则关闭与所述网络交换设备对应的业务。

集群分裂为子集群时,子集群内的控制器可以按照多数派原则选择一个子集群作为存活的集群。若控制器所属子集群继续存活,则控制器继续存活,此时控制器可以重新建立与所述网络交换设备之间的openflow连接,之后控制器按照步骤s21至步骤s27以及网络交换设备按照步骤s11至步骤s17,确定子集群中控制器的角色。若控制器所属子集群不再存活,则控制器不再存活,此时控制器可以关闭与网络交换设备对应的业务,网络交换设备和控制器之间的openflow连接也会自动断开,网络交换设备仅连接继续存活的集群上。这样,可以保证网络交换设备能够连接到一个正常的集群上。

应用示例

如图2所示,集群中存在两个控制器controller1和controller2,controller1的优先级为1,controller2的优先级为2,controller2的优先级高于controller的优先级。以sw1接入集群为例。初始状态下,集群网络连接正常,sw1接入集群时,有集群内控制器进行协商,选择controller1作为sw1的主控制器。

由于网络连接异常方面的原因,sw1和控制器之间的openflow连接断开了,之后网络恢复,sw1重新加入到sdn网络中,同时发起和controller1和controller2的openflow连接。若集群网络尚未完全恢复,controller1和controller2未选举出主控制器,则controller1和controller2都可以向sw1申请成为主控制器。

示例1

controller1和controller2中均存储有controller1和controller2的优先级。controller1和controller2均确定controller2的优先级高。controller1不会生成并向sw1发送角色请求消息,controller2会根据自身的优先级生成并向sw1发送角色请求消息,请求成为主控制器。

sw1接收到来自controller2的角色请求消息,识别出该角色请求消息中优先级信息为controller2的优先级、角色信息为主控制器。若sw1中不存在角色为主控制器的控制器,则sw1将本设备上controller2的角色设置为主控制器,并向controller2发送变更成功消息,使controller2将自身设置为主控制器。

这种情况下,sw1上的主控制器是controller2,集群中sw1的主控制器也是controller2,两者一致且sw1上和集群中均仅存在一个主控制器。

示例2

controller1和controller2尚未获取对方的优先级。controller1和controller2分别根据自身的优先级生成角色请求消息,并向sw1发送该角色请求消息,请求成为主控制器。

假设sw1先处理了来自controller1的角色请求消息,识别出该角色请求中优先级信息为controller1的优先级、角色信息为主控制器。若sw1中不存在角色为主控制器的控制器,则sw1将本设备上controller1的角色设置为主控制器,并向controller1发送变更成功消息,使controller1将自身设置为主控制器。sw1中将controller1的优先级1作为当前作为主控制器的第二控制器的优先级进行存储。

sw1继续处理来自controller2的角色请求消息,识别出该角色请求消息中优先级信息为controller2的优先级、角色信息为主控制器。由于controller2的优先级为2,高于sw1中存储的优先级1,因此sw1确定变更需要被接纳。sw1向controller1发送角色状态消息,其中,角色状态中包括高优先级控制器的设备标识、高优先级控制器请求的角色信息、高优先级控制器的优先级信息。在本实施例中,由于controller2的优先级高于controller1的优先级,因而该角色状态消息中携带有controller2的设备标识、controller2的优先级信息(优先级2)、controller2请求的角色信息(主控制器)。

controller1接收到角色状态消息,确定优先级信息对应的优先级2高于自身的优先级1,向sw1发送角色请求消息,请求成为从控制器。

sw1接收到来自controller1的角色请求消息后,将controller1的角色变更为从控制器,将controller2的角色变更为主控制器,并向controller1和controller2发送变更成功消息。

controller1在接收到sw1发送的变更成功消息后,controller1将自身设置为从控制器,controller2在接收到sw1发送的变更成功消息后,controller2将自身设置为主控制器。

这种情况下,sw1上的主控制器是controller2,集群中sw1的主控制器也是controller2,两者一致,且始终只存在一个主控制器。

示例3

当集群内控制器选举出主控制器,以选举controller1为主控制器为例。controller1生成包括generationid、且角色信息为主控制器、优先级信息为空值的角色请求消息,并向sw1发送该角色请求消息。

sw1接收来自controller1的角色请求消息,识别出该角色请求消息中优先级信息为空值,根据该角色请求消息中的generationid处理主控制器的角色变更。

图8示出根据本公开一实施例的一种网络交换设备的框图。如图8所示,该网络交换设备300包括:

第一消息识别模块301,用于识别来自第一控制器的第一角色请求消息中携带的信息,其中,角色请求消息中包括控制器请求的角色信息以及控制器的优先级信息;

第一比较模块302,用于在所述第一角色请求消息中控制器请求的角色信息为主控制器且所述第一角色请求消息中控制器的优先级信息为第一控制器的优先级的情况下,比较所述第一控制器的优先级和本设备中存储的当前作为主控制器的第二控制器的优先级;

第一消息发送模块303,用于当第一控制器的优先级高于第二控制器的优先级时,向第二控制器发送角色状态消息,该角色状态消息中包括:所述第一控制器的设备标识、所述第一控制器请求的角色信息、以及所述第一控制器的优先级信息;

第一角色设置模块304,用于当接收到所述第二控制器发送的第二角色请求消息时,在所述第二角色请求消息中角色信息为从控制器的情况下,将本设备上所述第二控制器的角色设置为从控制器、所述第一控制器的角色设置为主控制器,并向所述第二控制器发送响应于所述第二角色请求消息的变更成功消息、向所述第一控制器发送响应于所述第一角色请求消息的变更成功消息,以使所述第二控制器将自身的角色设置为从控制器、所述第一控制器将自身的角色设置为主控制器。

根据本公开实施例的网络交换设备能够在确定集群中原来作为主控制器的第二控制器申请成为从控制器后,再更改网络交换设备上各控制器的角色、同意其他控制器成为主控制器,这样网络交换设备上的主控制器角色和集群中主控制器的角色保持一致,降低了集群中同时存在多个主控制器的可能性,提升了网络交换设备和控制器之间openflow控制层面的稳定性。

图9示出根据本公开一实施例的一种网络交换设备的框图。如图9所示,在一种可能的实现方式中,所述网络交换设备300还包括:

第二角色设置模块305,用于在所述第一角色请求消息中的角色信息为主控制器且所述第一角色请求消息中控制器的优先级信息为第一控制器的优先级的情况下,若本设备上不存在所述第二控制器,则将本设备上所述第一控制器的角色设置为主控制器,并向所述第一控制器发送响应于所述第一角色请求消息的变更成功消息,以使所述第一控制器将自身的角色设置为主控制器。

在一种可能的实现方式中,所述第一角色请求消息中还携带有集群内选举出主控制器时产生的生成标识generationid,所述网络交换设备300还包括:

标识比较模块306,用于在所述第一角色请求消息中控制器请求的角色信息为主控制器且所述第一角色请求消息中控制器的优先级信息为空值的情况下,比较所述第一角色请求消息中携带的generationid和本设备中最大的generationid;

第三角色设置模块307,用于当所述第一角色请求消息中携带的generationid大于所述本设备中最大的generationid时,将本设备上所述第一控制器的角色设置为主控制器,并向所述第一控制器发送响应于所述角色请求消息的变更成功消息,以使所述第一控制器将自身的角色设置为主控制器。

在一种可能的实现方式中,所述网络交换设备300还包括:

优先级设置模块308,用于将本设备中存储的第二控制器的优先级设置为默认优先级。

图10示出根据本公开一实施例的控制器的框图。如图10所示,该控制器400包括:

第一消息生成模块401,用于在集群内的控制器未选举出主控制器时,根据本设备的优先级生成角色请求消息,所述角色请求消息中携带的角色信息为主控制器,所述角色请求消息中携带的控制器的优先级信息为本设备的优先级;

第二消息发送模块402,用于向网络交换设备发送所述角色请求消息,以便于所述网络交换设备根据所述角色请求消息中携带的信息确定是否允许所述本设备担任主控制器;

角色变更模块403,用于若接收到所述网络交换设备响应于所述角色请求消息返回的变更成功消息,则变更本设备的角色为主控制器。

在一种可能的实现方式中,所述第一消息生成模块401还用于:

获取加入所述集群时所述集群内各控制器的优先级;

若获取到了所述各控制器的优先级,则比较所述各控制器的优先级,并当本设备的优先级为所述各控制器的优先级中的最高优先级时,根据本设备的优先级生成所述角色请求消息;

若未获取到所述各控制器的优先级,则根据本设备的优先级生成所述角色请求消息。

图11示出根据本公开一实施例的控制器的框图。如图11所示,在一种可能的实现方式中,所述控制器400还包括:

第二消息识别模块404,用于识别来自所述网络交换设备的角色状态消息中携带的信息,该角色状态消息为第三控制器申请角色变换时所述网络交换设备发送的用于通告角色信息的消息,该角色状态消息中包括所述第三控制器的设备标识、所述第三控制器请求的角色信息和所述第三控制器的优先级信息;

第二比较模块405,用于当本设备为主控制器时,在所述角色状态消息中第三控制器请求的角色信息为主控制器且所述角色状态消息中的优先级信息为第三控制器的优先级的情况下,比较所述第三控制器的优先级和本设备的优先级;

第三消息发送模块406,用于当所述第三控制器的优先级高于本设备的优先级时,向所述网络交换设备发送用于请求将本设备的角色变更为从控制器的角色请求消息。

在一种可能的实现方式中,所述控制器400还包括:

第二消息生成模块407,用于若确定本设备被选举为主控制器,则根据分配的generationid生成包括该generationid、角色信息为主控制器且优先级信息为空值的角色请求消息。

在一种可能的实现方式中,所述控制器400还包括:

存活确定模块408,用于当所述集群分裂为多个子集群时,与本设备所属子集群内的其他控制器进行交互,确定本设备是否继续存活;

连接建立模块409,用于若确定本设备继续存活,则重新建立与所述网络交换设备之间的openflow连接;

业务关闭模块410,用于若确定本设备不再存活,则关闭与所述网络交换设备对应的业务。

图12是根据一示例性实施例示出的一种网络交换设备800的框图。参照图12,该网络交换设备800可包括处理器801、存储有机器可执行指令的机器可读存储介质802。处理器801与机器可读存储介质802可经由系统总线803通信。并且,处理器801通过读取机器可读存储介质802中与控制器角色确定逻辑对应的机器可执行指令以执行上文中应用于网络交换设备的控制器角色确定方法。

本文中提到的机器可读存储介质802可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:ram(radomaccessmemory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。

图13是根据一示例性实施例示出的一种控制器900的框图。参照图13,该控制器900可包括处理器901、存储有机器可执行指令的机器可读存储介质902。处理器901与机器可读存储介质902可经由系统总线903通信。并且,处理器901通过读取机器可读存储介质902中与控制器角色确定逻辑对应的机器可执行指令以执行上文中应用于控制器的控制器角色确定方法。

本文中提到的机器可读存储介质902可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:ram(radomaccessmemory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。

本公开实施例还提供一种网络系统,该网络系统包括网络交换设备800和控制器900。

以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1