一种检测SDN集群分裂的方法及装置与流程

文档序号:12182467阅读:215来源:国知局
一种检测SDN集群分裂的方法及装置与流程

本发明涉及通信技术领域,特别是涉及一种检测SDN集群分裂的方法及装置。



背景技术:

SDN(Software Defined Network,软件定义网络)是由多台控制器组成的集群。创建SDN集群网络时,需为每台控制器配置其在SDN集群网络中的角色。具体地,控制器在SDN集群网络中的角色有两种:主控制器(leader控制器)和普通控制器(member控制器)。通常情况下,一个集群网络有多台主控制器和多台普通控制器组成。

正常情况下,一个SDN集群网络即为一个SDN集群。在SDN集群配置完成后,SDN集群将启动选举机制,通过选举机制,在多台主控制器中选举产生一个主用主控制器,其余的主控制器为备用主控制器。主用主控制器负责对SDN集群内其他控制器产生的数据和服务进行集中的决策和管理,以达到数据在SDN集群范围内一致和同步的目的。

在配置SDN集群网络时,还会为SDN集群网络配置一个北向IP,以通过该北向IP,使SDN集群网络内的各控制器与SDN集群网络外部的设备进行通信。具体地,SDN集群网络的北向IP配置于SDN集群的主用主控制器上。外部设备可以通过北向IP访问主用主控制器,进而通过主用主控制器实现与各其他控制器的通信。例如,外部设备可以通过北向IP为集群内部的每台控制器下发配置数据,或对SDN集群内部各控制器的数据进行读写操作。

但是,有些情况下,由于网络故障或其他原因,会导致SDN集群分裂,即一个SDN集群分裂成为两个以上的SDN子集群。当一个SDN集群分裂成两个SDN子集群时,这两个SDN子集群会各自选出一个主用主控制器。这种情况下,当外部设备通过北向IP访问SDN集群网络时,该外部设备将随机地与任一个子集群内的主用主控制器进行通信。这将导致配置数据更新失常等问题,因此,需要一种检测SDN集群分裂的方法。



技术实现要素:

本发明实施例的目的在于提供一种检测SDN集群分裂的方法及装置,以准确地检测SDN集群是否发生了分裂。具体技术方案如下:

第一方面,本发明实施例提供了一种检测SDN集群分裂的方法,应用于SDN集群网络中的任一角色的控制器,所述方法包括:

接收SDN集群网络中的主用主控制器发送的检测报文;其中,所述检测报文是所述主用主控制器周期性发送的;

当自身所在的SDN集群网络与发送所述检测报文的主用主控制器所在的SDN集群网络相同时,识别自身在自身所在SDN集群中是否为主用主控制器;

如果是,确定所述SDN集群网络中发生了集群分裂。

第二方面,本发明实施例提供了一种检测SDN集群分裂的装置,应用于SDN集群网络中的任一角色的控制器,所述装置包括:

接收模块,用于接收SDN集群网络中的主用主控制器发送的检测报文;其中,所述检测报文是所述主用主控制器周期性发送的;

识别模块,用于当自身所在的SDN集群网络与发送所述检测报文的主用主控制器所在的SDN集群网络相同时,识别自身在自身所在SDN集群中是否为主用主控制器;

确定模块,用于当所述识别模块识别结果为是时,确定所述SDN集群网络中发生了集群分裂。

本发明实施例提供了一种检测SDN集群分裂的方法及装置,SDN集群网络中的主用主控制器可以周期性地发送检测报文,其他控制器接收到该检测报文后,当其所在的SDN集群网络与发送该检测报文的主用主控制器所在的SDN集群网络相同,且其在其所在的SDN集群中为主用主控制器时,表明当前的SDN集群网络中出现了至少两个主用主控制器,因此能够确定SDN集群网络中发生了集群分裂。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种检测SDN集群分裂的方法的流程图;

图2为本发明实施例提供的一种检测SDN集群分裂的装置的结构示意图;

图3为本发明实施例提供的一种检测SDN集群分裂的装置的另一结构示意图。

具体实施方式

为了准确地检测SDN集群是否发生了分裂,本发明实施例提供了一种检测SDN集群分裂的方法及装置。

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。

正常情况下,通过北向IP下发到主用主控制器中的配置,会自动在SDN集群内所有控制器之间自动同步,这是SDN集群的基本功能。但是SDN集群分裂后,当外部设备通过北向IP修改集群配置时,只能在其中一个SDN子集群内达到配置数据同步,另一个SDN子集群完全感知不到新产生的配置数据。或者,当外部设备通过北向IP获取SDN集群内部控制器的详细信息时,也只能获取到其中一个SDN子集群内的控制器的详细信息,并不能获取到SDN集群内每台控制器的详细信息。

由于SDN集群分裂后存在上述对SDN集群的信息获取,以及配置数据更新失常问题,有必要尽早检测到SDN集群分裂,然后进一步采取手工合并、或者自动合并措施,将分裂产生的SDN子集群合并为同一SDN集群。

一种可选的SDN集群分裂检测方法为:在SDN集群网络中部署第三方设备,SDN集群内各控制器均与第三方设备建立连接。SDN集群内各控制器均周期性地向第三方设备发送单播报文,告知第三方设备自身的角色,当第三方设备识别到SDN集群网络中出现两个以上的主用主控制器时,其可以确定SDN集群网络中发生了集群分裂。

但是,上述方法中,需要引入第三方设备,导致成本较高;第三方设备需要和SDN集群内各控制器建立连接,导致SDN集群网络组网更复杂;并且,第三方设备和SDN集群中各控制器之间的网络稳定性会导致集群分裂检测不准确。例如:当第三方设备和SDN集群中任一台或多台控制器之间的网络出现故障时,第三方设备将接收不到每个控制器发生的单播报文,从而不能准确地判断SDN集群是否发生了集群分裂。

本发明实施例提供了一种检测SDN集群分裂的方法过程,应用于SDN集群网络中的任一角色的控制器,如图1所示,该过程可以包括以下步骤:

S101,接收SDN集群网络中的主用主控制器发送的检测报文;其中,所述检测报文是所述主用主控制器周期性发送的。

本发明实施例提供的方法可以应用于SDN集群网络中的任一角色的控制器。具体地,该控制器可以为主用主控制器、备用主控制器或普通控制器。为了描述方便,在本发明实施例中,可以将该控制器称为目标控制器。

在本发明实施例中,SDN集群网络中的各主用主控制器都可以周期性地发送检测报文。

其中,主用主控制器周期性发送检测报文时,检测报文的发送周期可以为1毫秒、3毫秒、8毫秒等。

例如,当SDN集群网络中只存在一个SDN集群时,该SDN集群中的主用主控制器可以周期性地发送检测报文;当SDN集群网络中存在多个SDN子集群时,每个SDN子集群中的主用主控制器都可以周期性地发送检测报文。其中,当SDN集群网络中存在多个SDN子集群,每个SDN子集群中的主用主控制器都周期性地发送检测报文时,各主用主控制器发送检测报文的周期可以相同,也可以不同。

在本发明实施例中,主用主控制器发送检测报文时,具体地,其可以以广播或组播的形式发送检测报文。当主用主控制器以广播形式发送检测报文时,二层互通的集群内的其余控制器都可以接收到该检测报文。当主用主控制器以组播形式发送检测报文时,该主用主控制器所在组播内的其余控制器都可以接收到该检测报文。

因此,在本发明实施例中,目标控制器可以接收主用主控制器发送的检测报文,以根据该检测报文判断自身所在的SDN集群网络中是否发生了集群分裂。

S102,当自身所在的SDN集群网络与发送所述检测报文的主用主控制器所在的SDN集群网络相同时,识别自身在自身所在SDN集群中是否为主用主控制器。

当目标控制器接收到主用主控制器发送的检测报文后,其可以判断自身所在的SDN集群网络与发送该检测报文的主用主控制器所在的SDN集群网络是否相同;如果是,进一步地,可以识别自身在自身所在SDN集群中是否为主用主控制器。

可以理解,正常情况下,一个SDN集群网络中只包含一个SDN集群,从而一个SDN集群网络中只包含一个主用主控制器。并且,在本发明实施例中,当主用主控制器以广播形式发送检测报文时,不包含在该主用主控制器所在SDN集群网络中的控制器,也可能接收到该检测报文。

因此,在本发明实施例中,当目标控制器接收到检测报文时,其可以首先判断自身所在的SDN集群网络与发送该检测报文的主用主控制器所在的SDN集群网络是否相同。当自身所在的SDN集群网络与发送该检测报文的主用主控制器所在的SDN集群网络相同时,进而可以识别自身在自身所在的SDN集群中是否为主用主控制器,以根据识别结果,确定自身所在的SDN集群网络中是否发生了集群分裂。

具体的,对于当选的主用主控制器,其存储的配置文件中会标识自身的身份,例如,主用主控制器标识为leader,SDN集群网络中其他的控制器标识为member。因此,在识别自身是否为主用主控制器时,具体包括:通过本地存储的身份信息(是leader还是member)确定自身是否为主用主控制器。

S103,当自身在自身所在SDN集群中为主用主控制器时,确定所述SDN集群网络中发生了集群分裂。

在本发明实施例中,由于只有主用主控制器才会发送检测报文,所以当目标控制器接收到了检测报文,且识别到自身在自身所在SDN集群中为主用主控制器时,表明自身所在的SDN集群网络中出现了两个主用主控制器,即自身和发送检测报文的主用主控制。因此,目标控制器可以确定自身所在的SDN集群网络中发生了集群分裂。

本发明实施例提供了一种检测SDN集群分裂的方法,SDN集群网络中的主用主控制器可以周期性地发送检测报文,其他控制器接收到该检测报文后,当其所在的SDN集群网络与发送该检测报文的主用主控制器所在的SDN集群网络相同,且其在其所在的SDN集群中为主用主控制器时,表明当前的SDN集群网络中出现了至少两个主用主控制器,因此能够确定SDN集群网络中发生了集群分裂。

在上述实施例的基础上,可选的,所述检测报文为广播形式或组播形式,周期性地发送检测报文。

检测报文可以为二层广播报文,例如,ARP广播报文(协议类型是0x0806)。检测报文也可以为现有技术中的二层环路检测报文,例如,可以为链路层发现协议报文,LLDP(Link Layer Discovery Protocol,简称LLDP)。当然,检测报文也可以为现有技术中的其他类型的周期性发送的广播或组播报文。本发明中仅仅以ARP报文和LLDP报文为例进行说明,但并不应当以此作为限制。

本实例所提供的检测SDN集群分裂的方法,由于检测报文可以采用现有技术中的广播形式或者组播形式的报文,因此,不需要额外的第三方设备,降低了成本。

作为本发明实施例的一种可选的实现方式,若检测报文为自定义格式的报文,则可以在检测报文中携带检测标识,所述检测标识用于标识报文是否为用于检测集群分裂的检测报文。这种情况下,当目标控制器接收到检测报文后,通过识别报文中携带了检测标识,即可触发其判断自身所在SDN集群是否发生了分裂。

当然,检测标识并不仅仅限制存在于自定义格式的报文中,若以现有的报文作为检测报文时,则可以在现有报文的自定义字段携带检测标识。

可选的,携带检测标识的字段可以与携带身份信息的字段相同,即检测标识可以同时用于标识身份。

作为本发明实施例的一种实现方式,主用主控制器可以以广播形式发送检测报文。其中,该检测报文可以为免费ARP(Address Resoloution Protocol,地址解析协议)报文。并且,该免费ARP报文的目标IP(Target IP)为发送该报文的主用主控制器所在SDN集群的北向IP。可选地,该免费ARP报文的源IP也可以为发送该报文的主用主控制器所在SDN集群的北向IP,以使接收该免费ARP报文的控制器,根据SDN集群的北向IP以及本地保存的所在SDN集群的北向IP,判断与发送该ARP报文的主用主控制器是否属于同一个SDN集群网络。

当免费ARP报文的源IP和目的IP均为发送该报文的主用主控制器所在SDN集群的北向IP时,发送该报文的主用主控制器将会接收到自身发送的报文。这种情况下,为了准确地确定SDN集群是否发生了分裂,目标控制器可以根据其接收到的报文中包括的源MAC地址,来判断该报文是否为自身发送的。

当目标控制器确定其接收到的报文是自身发送时,其将不根据该报文判断自身所在的SDN集群是否发生了分裂。当目标控制器确定其接收到的报文不是自身发送时,其将根据该报文判断自身所在的SDN集群是否发生了分裂。

可选的,可以在免费ARP报文的目标MAC地址字段携带主用主控制器的身份信息(leader还是member)。

需要说明的是,主用主控制器以广播形式发送检测报文时,该检测报文还可以为现有的其它类型的二层广播报文,或者,也可以为自定义的广播报文,本发明实施例对此不作限定。

在实际应用中,当主用主控制器以广播形式发送检测报文时,二层互通的集群内的其余控制器都可以接收到该检测报文。也就是说,与发送检测报文的主用主控制器不在同一个SDN集群网络的控制器也可以接收到该检测报文。而当目标控制器接收到与自身不在同一个SDN集群网络的主用主控制器发送的检测报文时,其不需要根据该检测报文判断自身所在的SDN集群网络是否发生了集群分裂。

因此,当主用主控制器以广播形式发送检测报文时,目标控制器接收到检测报文后,其可以根据该检测报文中携带的北向IP,以及本地保存的自身所在SDN集群的北向IP,判断自身与该主用主控制器是否属于同一个SDN集群网络。只有当自身与该主用主控制器属于同一个SDN集群网络时,目标控制器才根据该检测报文判断自身所在的SDN集群网络是否发生了集群分裂。

具体地,当检测报文中携带的北向IP,与自身所在SDN集群的北向IP相同时,即可确定自身与该主用主控制器属于同一个SDN集群网络;当检测报文中携带的北向IP,与自身所在SDN集群的北向IP不相同时,即可确定自身与该主用主控制器不属于同一个SDN集群网络。

可以理解,在实际应用中,当发生集群分裂时,SDN集群网络中的主控制器可能成为新产生的SDN子集群中的主用主控制器,而SDN集群网络中的普通控制器不可能成为新产生的SDN子集群中的主用主控制器。

因此,作为本发明实施例的一种实现方式,可以预先在SDN集群网络中构建组播组,该组播组中包括SDN集群网络中的每台主控制器。

进一步地,主用主控制器周期性地发送检测报文时,可以以组播形式发送。这种情况下,接收到该检测报文的控制器只可能是组播组内的各控制器,也就是与该主用主控制器在同一SDN集群网络内的各主控制器。

目标控制器接收到主用主控制器以组播形式发送的检测报文后,可以直接识别自身在自身所在SDN集群中是否为主用主控制器,进而确定自身所在的SDN集群网络中是否发生了集群分裂。

其中,当主用主控制器以组播形式发送检测报文时,该检测报文可以为链路层发现协议LLDP报文。需要说明的是,主用主控制器以组播形式发送检测报文时,该检测报文还可以为现有的其它类型的组播报文,本发明实施例对此不作限定。

在实际应用中,配置SDN集群时,可以配置各主控制器的优先级。如,可以由用户根据各主控制器的硬件配置等参数,来确定各主控制器的优先级。各控制器的优先级信息属于配置层面的数据,重启后继续有效。

通常情况下,当检测出SDN集群中发生分裂时,将进行集群合并,以恢复SDN集群正常运行。可选地,在本发明实施例中,主用主控制器发送的检测报文中还可以包括该主用主控制器的优先级信息。当目标控制器接收到检测报文,确定自身所在的SDN集群发生了集群分裂时,其可以根据检测报文中包括的发送该检测报文的主用主控制器的优先级,以及自身的优先级,确定如何进行SDN集群合并。

如,当SDN集群合并规则为将各SDN子集群中优先级较高的主用主控制器作为合并后的SDN集群的主用主控制器,目标控制器确定自身的优先级高于发送检测报文的主用主控制器的优先级时,其可以不重启;当目标控制器确定自身的优先级低于发送检测报文的主用主控制器的优先级时,其可以进行重启,以加入发送检测报文的主用主控制器所在的SDN子集群,完成SDN集群合并。

可选的,当主用主控制器以广播形式发送检测报文时,该检测报文为免费ARP报文时,也可以在目标MAC地址字段携带主用主控制器的优先级信息。

当主用主控制器以组播形式发送检测报文时,该检测报文为链路LLDP报文时,可以将SDN集群的北向IP和/或主用主控制器的优先级分别以TLV((type,length,value)封装到LLDP报文中。

作为本发明实施例的一种实现方式,当SDN集群网络中的控制器被选举为主用主控制器后,该控制器将周期性发送检测报文。也就是说,发送检测报文的触发条件即为控制器由非主用主控制器变为主用主控制器。当控制器变为主用主控制器后,其将周期性发送检测报文。

相应于上面的方法实施例,本发明实施例还提供了相应的装置实施例。

图2为本发明实施例提供的一种检测SDN集群分裂的装置,应用于SDN集群网络中的任一角色的控制器,所述装置包括:

接收模块210,用于接收SDN集群网络中的主用主控制器发送的检测报文;其中,所述检测报文是所述主用主控制器周期性发送的;

识别模块220,用于当自身所在的SDN集群网络与发送所述检测报文的主用主控制器所在的SDN集群网络相同时,识别自身在自身所在SDN集群中是否为主用主控制器;

确定模块230,用于当所述识别模块220识别结果为是时,确定所述SDN集群网络中发生了集群分裂。

本发明实施例提供了一种检测SDN集群分裂的装置,SDN集群网络中的主用主控制器可以周期性地发送检测报文,其他控制器接收到该检测报文后,当其所在的SDN集群网络与发送该检测报文的主用主控制器所在的SDN集群网络相同,且其在其所在的SDN集群中为主用主控制器时,表明当前的SDN集群网络中出现了至少两个主用主控制器,因此能够确定SDN集群网络中发生了集群分裂。

进一步地,当所述检测报文为所述主用主控制器以广播形式发送的报文时,所述检测报文中携带所述主用主控制器所在SDN集群的北向IP;

图3为本发明又一实施例提供的检测SDN集群分裂的装置的示意图,如图3所示,所述装置还包括:

判断模块240,用于根据所述检测报文中携带的北向IP,以及本地保存的自身所在SDN集群的北向IP,判断自身与所述主用主控制器是否属于同一个SDN集群网络。

进一步地,所述检测报文为免费地址解析协议ARP报文,所述免费ARP报文的目标IP为所述主用主控制器所在SDN集群的北向IP,以使接收所述免费ARP报文的控制器,根据所述SDN集群的北向IP以及本地保存的所在SDN集群的北向IP,判断与所述主用主控制器是否属于同一个SDN集群网络。

进一步地,所述检测报文为所述主控制器以组播形式发送的,其中,所述SDN集群网络中预先构建有组播组,所述组播组中包括所述SDN集群网络中的每台主控制器。

进一步地,如图3所示,所述装置还包括:

发送模块250,用于当所述SDN集群网络中的控制器被选举为主用主控制器后,周期性发送检测报文。

对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

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