控制器集群的管理方法、SDN控制器及存储介质与流程

文档序号:15221609发布日期:2018-08-21 17:32阅读:283来源:国知局

本发明涉及通信技术领域,尤其涉及控制器集群的管理方法、sdn控制器及存储介质。



背景技术:

随着软件定义网络(softwaredefinednetwork,sdn)的广泛应用,sdn的网络部署规模也在快速扩大。但是,受限于sdn控制器的运算能力,单个sdn控制器能管理的网络设备数目是有限的,并且,当单个sdn控制器的性能被限制或者被攻击时,极易造成单点故障问题。

因此,多以多个sdn控制器形成一个sdn控制器集群的方式,来分担单个sdn控制器的工作负载,以避免上述单点故障问题。

但是,当以一个sdn控制器集群进行网络部署时,若需要向sdn控制器集群中添加新的sdn控制器或者删除旧的sdn控制器,就需要通过一系列技术和方法来实现sdn控制器集群的管理及动态扩缩。

而目前主要的sdn控制器集群的管理及动态扩缩主要包括以下方法:

(1)主控制器管理

参见图1,图1为主控制器管理方式的示意图。

当通过主控制器管理的方式进行sdn控制器集群的管理及动态扩缩时,sdn控制器集群中有个主控制器,由该主控制器来统一管理其他普通控制器的加入或退出集群。

在具体实现中,主sdn控制器负责建立集群,并接收其他sdn控制器发送过来的申请加入或退出集群的请求。主sdn控制器将依据这些请求修改集群配置信息,变更(增加、删除或替换)集群成员。

这种方案的优势在于,主sdn控制器中将存储有整个集群的全局信息,并且,集群成员的变更都只需要和主sdn控制器交互。而其缺点在于,主sdn控制器仍然存在单点故障问题,一旦主sdn控制器失效,整个集群都将无法正常工作。

(2)分组式管理

参见图2,图2为分组式管理方式的示意图。

当通过分组式管理的方式进行sdn控制器集群的管理及动态扩缩时,可将sdn控制器集群分成若干小组,每个小组都有个主sdn控制器。并且,每个小组内的sdn控制器均按照上述“主控制器管理”的方式运行,也就意味着,每个小组的主sdn控制器管理组内的其他sdn控制器成员,不同组的主sdn控制器之间再形成一个集群。

此外,每个主sdn控制器可存在两个备用控制器。当小组1的主sdn控制器失效时,备用控制器按照一定规则进行排序,将排序靠前的备用控制器切换成为小组1的主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控制器被认定处于离线状态的次数;

在所述次数大于预设阈值时,从所述当前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控制器发送所述第一成员添加请求,以使其他sdn控制器在接收到所述第一成员添加请求时,反馈所述第一成员添加请求的回复信息,所述第一成员添加请求用于将所述第三sdn控制器添加入所述预设控制器集群;

在接收到其他sdn控制器反馈的回复信息时,检测所述回复信息中是否包括确认修改指令,在所述回复信息包括所述确认修改指令时,对所述当前sdn控制器中存储的成员配置信息进行修改,以生成修改后的成员配置信息,将修改后的成员配置信息作为第三配置信息;

向所述第三sdn控制器以及所述预设控制器集群中的其他sdn控制器广播所述第三配置信息,以使接收到所述第三配置信息的sdn控制器将sdn控制器中存储的成员配置信息替换为所述第三配置信息。

优选地,所述在所述当前设备状态不为离线状态时,将所述第一sdn控制器的设备状态认定为非离线状态之后,所述控制器集群的管理方法还包括:

响应于用户输入的第二成员添加请求,向所述预设控制器集群中的其他sdn控制器发送所述第二成员添加请求,以使其他sdn控制器在接收到所述第二成员添加请求时,反馈所述第二成员添加请求的回复信息,所述第二成员添加请求用于将第四sdn控制器添加入所述预设控制器集群;

在接收到其他sdn控制器发送的回复信息时,检测所述回复信息中是否包括确认修改指令,在所述回复信息包括所述确认修改指令时,对所述当前sdn控制器中存储的成员配置信息进行修改,以生成修改后的成员配置信息,将修改后的成员配置信息作为第四配置信息;

向所述第四sdn控制器以及所述预设控制器集群中的其他sdn控制器广播所述第四配置信息,以使接收到所述第四配置信息的sdn控制器将sdn控制器中存储的成员配置信息替换为所述第四配置信息。

此外,为实现上述目的,本发明还提供一种sdn控制器,所述sdn控制器包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的控制器集群的管理程序,所述控制器集群的管理程序配置为实现如上文所述控制器集群的管理方法的步骤。

此外,为实现上述目的,本发明还提供一种存储介质,所述存储介质上存储有控制器集群的管理程序,所述控制器集群的管理程序被处理器执行时实现如上文所述的控制器集群的管理方法的步骤。

在本发明中通过在sdn控制器本地预先存储成员状态信息,使得当判断出一控制器可能处于离线状态时,可通过该成员状态信息来进行控制器的设备状态的再次判断,由于可基于各控制器本地存储的成员状态信息来进行与其他控制器的交互,简化了部署结构,从而克服了在进行控制器集群的扩缩时交互过程较为繁琐的技术问题。

附图说明

图1为主控制器管理方式的示意图;

图2为分组式管理方式的示意图;

图3为本发明实施例方案涉及的硬件运行环境的sdn控制器结构示意图;

图4为本发明控制器集群的管理方法第一实施例的流程示意图;

图5为控制器集群的管理方法的控制器部署示意图;

图6为本发明控制器集群的管理方法第二实施例的流程示意图;

图7为本发明控制器集群的管理方法第三实施例的流程示意图;

图8为本发明控制器集群的管理方法第四实施例的流程示意图;

图9为本发明控制器集群的管理方法第五实施例的流程示意图;

图10为预设控制器集群与第三sdn控制器的部署示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

参照图3,图3为本发明实施例方案涉及的硬件运行环境的sdn控制器结构示意图。

如图3所示,该sdn控制器可以包括:处理器1001,例如cpu,通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(display),可选用户接口1003还可以包括标准的有线接口、无线接口,对于用户接口1003的有线接口在本发明中可为usb接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。存储器1005可以是高速ram存储器,也可以是稳定的存储器(non-volatilememory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。

本领域技术人员可以理解,图3中示出的结构并不构成对sdn控制器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

如图3所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及控制器集群的管理程序。

在图3所示的sdn控制器中,网络接口1004主要用于连接后台服务器,与所述后台服务器进行数据通信;用户接口1003主要用于连接外设;所述sdn控制器通过处理器1001调用存储器1005中存储的控制器集群的管理程序,并执行以下操作:

判断第一sdn控制器是否处于离线状态;

当判断所述第一sdn控制器处于离线状态时,生成成员变更请求,向第二sdn控制器发送所述成员变更请求,以使所述第二sdn控制器在接收到所述成员变更请求时,从所述第二sdn控制器的成员状态信息中获取所述第一sdn控制器的当前设备状态,并反馈所述当前设备状态,所述第一sdn控制器、所述第二sdn控制器与所述当前sdn控制器属于预设控制器集群;

在接收到所述第二sdn控制器反馈的所述当前设备状态时,判断所述当前设备状态是否为离线状态;

在所述当前设备状态不为离线状态时,将所述第一sdn控制器的设备状态认定为非离线状态。

进一步地,处理器1001可以调用存储器1005中存储的控制器集群的管理程序,还执行以下操作:

检测在预设时间内是否接收到第一sdn控制器发送的心跳消息,并生成检测结果;

根据所述检测结果判断所述第一sdn控制器是否处于离线状态。

进一步地,处理器1001可以调用存储器1005中存储的控制器集群的管理程序,还执行以下操作:

统计所述第一sdn控制器被认定处于离线状态的次数;

在所述次数大于预设阈值时,从所述当前sdn控制器中存储的成员状态信息中查找所述第一sdn控制器的设备状态,将所述第一sdn控制器的设备状态设置为离线状态。

进一步地,处理器1001可以调用存储器1005中存储的控制器集群的管理程序,还执行以下操作:

在所述当前设备状态为离线状态时,对所述当前sdn控制器存储的成员配置信息进行修改,将修改后的成员配置信息作为第一配置信息;

向所述预设控制器集群中的其他sdn控制器广播所述第一配置信息,以使其他sdn控制器将其他sdn控制器中存储的成员配置信息替换为所述第一配置信息。

进一步地,处理器1001可以调用存储器1005中存储的控制器集群的管理程序,还执行以下操作:

在所述当前设备状态为离线状态时,从所述当前sdn控制器存储的成员状态信息中删除所述第一sdn控制器的设备状态,将删除后的成员状态信息作为新的成员状态信息;

按照预设周期向所述第二sdn控制器发送所述新的成员状态信息,以使所述第二sdn控制器将第二sdn控制器中存储的成员状态信息替换为新的成员状态信息。

进一步地,处理器1001可以调用存储器1005中存储的控制器集群的管理程序,还执行以下操作:

响应于用户输入的成员删减请求,向所述预设控制器集群中的其他sdn控制器发送所述成员删减请求,以使其他sdn控制器在接收到所述成员删减请求时,反馈所述成员删减请求的回复信息;

在接收到其他sdn控制器反馈的回复信息时,检测所述回复信息中是否包括确认修改指令,在所述回复信息包括所述确认修改指令时,对所述当前sdn控制器中存储的成员配置信息进行修改,以生成修改后的成员配置信息,将修改后的成员配置信息作为第二配置信息;

向其他sdn控制器广播所述第二配置信息,以使其他sdn控制器将其他sdn控制器中存储的成员配置信息替换为所述第二配置信息。

进一步地,处理器1001可以调用存储器1005中存储的控制器集群的管理程序,还执行以下操作:

在接收到第三sdn控制器发送的第一成员添加请求时,向所述预设控制器集群中的其他sdn控制器发送所述第一成员添加请求,以使其他sdn控制器在接收到所述第一成员添加请求时,反馈所述第一成员添加请求的回复信息,所述第一成员添加请求用于将所述第三sdn控制器添加入所述预设控制器集群;

在接收到其他sdn控制器反馈的回复信息时,检测所述回复信息中是否包括确认修改指令,在所述回复信息包括所述确认修改指令时,对所述当前sdn控制器中存储的成员配置信息进行修改,以生成修改后的成员配置信息,将修改后的成员配置信息作为第三配置信息;

向所述第三sdn控制器以及所述预设控制器集群中的其他sdn控制器广播所述第三配置信息,以使接收到所述第三配置信息的sdn控制器将sdn控制器中存储的成员配置信息替换为所述第三配置信息。

进一步地,处理器1001可以调用存储器1005中存储的控制器集群的管理程序,还执行以下操作:

响应于用户输入的第二成员添加请求,向所述预设控制器集群中的其他sdn控制器发送所述第二成员添加请求,以使其他sdn控制器在接收到所述第二成员添加请求时,反馈所述第二成员添加请求的回复信息,所述第二成员添加请求用于将第四sdn控制器添加入所述预设控制器集群;

在接收到其他sdn控制器发送的回复信息时,检测所述回复信息中是否包括确认修改指令,在所述回复信息包括所述确认修改指令时,对所述当前sdn控制器中存储的成员配置信息进行修改,以生成修改后的成员配置信息,将修改后的成员配置信息作为第四配置信息;

向所述第四sdn控制器以及所述预设控制器集群中的其他sdn控制器广播所述第四配置信息,以使接收到所述第四配置信息的sdn控制器将sdn控制器中存储的成员配置信息替换为所述第四配置信息。

在本实施例中通过在sdn控制器本地预先存储成员状态信息,使得当判断出一控制器可能处于离线状态时,可通过该成员状态信息来进行控制器的设备状态的再次判断,由于可基于各控制器本地存储的成员状态信息来进行与其他控制器的交互,简化了部署结构,从而克服了在进行控制器集群的扩缩时交互过程较为繁琐的技术问题。

基于上述硬件结构,提出本发明控制器集群的管理方法的实施例。

参照图4,图4为本发明控制器集群的管理方法第一实施例的流程示意图。

在第一实施例中,所述控制器集群的管理方法包括以下步骤:

步骤s10:当前sdn控制器判断第一sdn控制器是否处于离线状态;

可以理解的是,考虑到“主控制器管理方式”与“分组式管理”的部署方式都存在明显的结构问题,为了避免部署的结构较为复杂,提出了本实施例描述的控制器部署方式。

参见图5,图5是控制器集群的管理方法的控制器部署示意图,用于简化地描述本实施例提出的部署方式。将图5的部署方式与图2所示的“分组式管理”的部署方式进行对比,图5所示的部署方式,将不进行分组,也不设置主控制器,每个控制器的地位都是对等的。因为,分组机制易导致整体结构较为复杂,且在实际落地实施时成本较高;而且,图5所述的部署方式不设置主控制器,也就不会因为设置唯一的主控制器而易导致单点故障,从而部署的结构较为简化。

但是,图1及图2描述的部署方式都存在主sdn控制器的原因在于,将通过主控制器作为核心来沟通及维护与主控制器相连的其他控制器,以实现整体结构的有效交互。在通过图5的部署方式来部署后,为了继续保证整体结构的有效交互,由于本实施例中每个控制器的地位都是对等的,将在每个控制器的本地都存储且维护成员状态信息,该成员状态信息用于记录预设控制器集群中各控制器的运行状态,所以,本实施例中将通过在每个控制器中存储成员状态信息来与其他控制器进行沟通,以保证整体结构能够进行有效交互。其中,所述成员状态信息具体包括各控制器的运行状态、别名、互联网地址(internetprotocoladdress,ip地址)等控制器相关的信息。

在具体实现中,比如,设置一个预设控制器集群,该预设控制器集群中包括第一sdn控制器a1、当前sdn控制器a2与第二sdn控制器a3,由于该预设控制器集群的控制器的地位平等,不存在主控制器作为核心联络器其下属的其他控制器,而在当前sdn控制器获悉集群中的第一sdn控制器a1处于离线状态时,图1及图2所示的部署方式都将通过主控制器来判断是否第一sdn控制器a1是否的确处于离线状态或者将该第一sdn控制器a1从预设控制器集群中删除,而本实施例中可向集群中的任一控制器发送请求,以确认第一sdn控制器a1的真实状态信息并进行后续操作,无需单凭主控制器。

步骤s20:当判断所述第一sdn控制器处于离线状态时,生成成员变更请求,向第二sdn控制器发送所述成员变更请求,以使所述第二sdn控制器在接收到所述成员变更请求时,从所述第二sdn控制器的成员状态信息中获取所述第一sdn控制器的当前设备状态,并反馈所述当前设备状态,所述第一sdn控制器、所述第二sdn控制器与所述当前sdn控制器属于预设控制器集群;

可以理解的是,在当前sdn控制器a2判断出第一sdn控制器a1处于离线状态时,但是,考虑到在控制器集群的实际运行环境中,可能存在通信链路的影响以及设备故障等多种事故,为了进一步地确认第一sdn控制器a1是否的确处于离线状态,当前sdn控制器a2将生成成员变更请求,并将该成员变更请求发送预设控制器集群中另一控制器,比如,第二sdn控制器a3,由于本实施例中将在预设控制器集群内的每个控制器的本地都存储有成员状态信息,可在第二sdn控制器a3本地存储的成员状态信息中查询第一sdn控制器的当前设备状态,并反馈该当前设备状态回当前sdn控制器a2。

步骤s30:在接收到所述第二sdn控制器反馈的所述当前设备状态时,判断所述当前设备状态是否为离线状态;

步骤s40:在所述当前设备状态不为离线状态时,将所述第一sdn控制器的设备状态认定为非离线状态。

应当理解的是,第二sdn控制器a3反馈的当前设备状态可能为离线状态或者运行状态,若第二sdn控制器a3反馈的当前设备状态不为离线状态,则表明对于第二sdn控制器a3而言,第一控制器a1处于运行状态。该种当前sdn控制器a2认为第一sdn控制器a1处于离线状态而第二sdn控制器a3认为第一sdn控制器a1不处于离线状态的情况,可能是因为当前sdn控制器a2与第一sdn控制器a1之间的链路出现问题,而第二sdn控制器a3与第一sdn控制器a1之间的链路正常,并且,第一sdn控制器a1的设备运行是正常的,所以,第一sdn控制器a1与第二sdn控制器a3之间的交互工作依旧保持正常。当然,对于上述两个sdn控制器产生两种不同的结果的原因不限于上述表述。

可以理解的是,当第二sdn控制器a3反馈的当前设备状态不为离线状态时,将不认定第一sdn控制器a1的设备为离线状态,即不认为第一sdn控制器a1发生故障停止运行。

在本实施例中通过在sdn控制器本地预先存储成员状态信息,使得当判断出一控制器可能处于离线状态时,可通过该成员状态信息来进行控制器的设备状态的再次判断,由于可基于各控制器本地存储的成员状态信息来进行与其他控制器的交互,简化了部署结构,从而克服了在进行控制器集群的扩缩时交互过程较为繁琐的技术问题。

参照图6,图6为本发明控制器集群的管理方法第二实施例的流程示意图,基于上述图4所示的第一实施例,提出本发明控制器集群的管理方法的第二实施例。

在第二实施例中,所述步骤s10,具体包括:

步骤s101:当前sdn控制器检测在预设时间内是否接收到第一sdn控制器发送的心跳消息,并生成检测结果;

可以理解的是,对于当前sdn控制器判断第一sdn控制器是否处于离线状态的方式,可通过心跳机制来实现。所述心跳消息,用于表征所述第一sdn控制器的设备状态。所述心跳机制为,发送方将向接收方周期性地发送心跳消息(heartbeatmessage),以使接收方确定发送方的当前运行状态。所以,第一sdn控制器可在预设时间内向当前sdn控制器发送心跳消息,当当前sdn控制器在预设时间内未接收到该心跳消息时,可认定第一sdn控制器处于离线状态。

步骤s102:根据所述检测结果判断所述第一sdn控制器是否处于离线状态。

在具体实现中,比如,在当前sdn控制器未在预设时间内接受到第一sdn控制器发送的心跳消息时,获取到的检测结果为“第一sdn控制器处于离线状态”。

进一步地,所述步骤s102之后,所述控制器集群的管理方法还包括:

步骤s20':统计所述第一sdn控制器被认定处于离线状态的次数;

可以理解的是,在当前sdn控制器通过心跳机制判断出第一sdn控制器为离线状态时,可通过第二sdn控制器对第一sdn控制器的设备状态进行进一步地验证。但是,在控制器集群的结构较为复杂或者长时间未接收到第二sdn控制器对于第一sdn控制器的进一步验证结果时,由于当前sdn控制器无法立刻对第一sdn控制器的真实设备状态进行较为准确的判断,并且,只通过心跳机制来判断第一sdn控制器的设备状态也存在一定的误差性,可对心跳机制获取到的检测结果进行多次统计,根据统计结果来对第一sdn控制器的设备状态进行判断。

步骤s30':在所述次数大于预设阈值时,从所述当前sdn控制器中存储的成员状态信息中查找所述第一sdn控制器的设备状态,将所述第一sdn控制器的设备状态设置为离线状态。

在具体实现中,比如,在当前sdn控制器依据心跳机制获取到的检测结果显示为“第一sdn控制器处于离线状态”时,由于心跳消息是周期性地发送的,故而,将多次获取到该检测结果,统计显示为“第一sdn控制器处于离线状态”的检测结果的数量。若该数量大于预设阈值,则表明当前sdn控制器已长时间未能与第一sdn控制器连通,为了提高控制器运行的效率,可直接将第一sdn控制器认定为离线状态,因为,若当前sdn控制器长时间尝试与第一sdn控制器进行连通却不能连通,会占据集群内的管道流量,降低了运行效率。

在本实施例中通过心跳机制来判断各sdn控制器的设备状态,从而使得当前sdn控制器可以实时且高效地检测其他sdn控制器的设备状态;并且,当统计的次数大于预设阈值时将第一sdn控制器的设备状态设置为离线状态,可提高控制器运行效率,规避掉长时间无效的控制器交互进程。

参照图7,图7为本发明控制器集群的管理方法第三实施例的流程示意图,基于上述图4所示的第一实施例,提出本发明控制器集群的管理方法的第三实施例。

在第三实施例中,所述步骤s30之后,所述控制器集群的管理方法还包括:

步骤s401:在所述当前设备状态为离线状态时,对所述当前sdn控制器存储的成员配置信息进行修改,将修改后的成员配置信息作为第一配置信息;

可以理解的是,当第二sdn控制器返回的当前设备状态也为离线状态时,可认定第一sdn控制器确为离线状态,由于第一sdn控制器已经离线,为了防止已经离线的第一sdn控制器影响预设控制器集群内的其他sdn控制器的正常运行,可自动将成员配置信息中有关第一sdn控制的配置信息删除,保留未离线的当前sdn控制与第二sdn控制的配置信息。

其中,就成员配置信息而言,sdn控制器本地存储有成员配置信息,该成员配置信息包括sdn控制器自身的配置信息、与sdn控制器相连的sdn交换设备的配置信息、转发表和安全相关的规则等。

步骤s402:向所述预设控制器集群中的其他sdn控制器广播所述第一配置信息,以使其他sdn控制器将其他sdn控制器中存储的成员配置信息替换为所述第一配置信息。

在具体实现中,由于本实施例采取的是如图5所示的部署方式,各sdn控制器的地位是平等的,所以,将在各sdn控制器中存储预设控制器集群中的所有sdn控制器的配置信息,而并非只存储自身sdn控制器的配置信息,所以,在第一sdn控制器离线后,不仅将对当前sdn控制器本地存储的成员配置信息进行修改,并将广播该修改后的成员配置信息至预设控制器集群中的其他sdn控制器,从而实现了集群内的所有sdn控制器均更新存储的成员配置信息。因为第一sdn控制器已离线,所以,更新后的成员配置信息即第一配置信息中将只包括当前sdn控制器与第二sdn控制器的配置信息,但不包括第一sdn控制器的配置信息。

当然,可根据实际情况,将该成员配置信息中的信息类型划分为强一致性信息与弱一致性信息,所述强一致性信息需要控制器集群内的各控制器保持一致,所述弱一致性信息不需要集群中所有成员每时每刻都保持一致,只要求在一个较长时间后,信息能同步到集群中的所有或大部分成员。所以,可为强一致性信息与弱一致性信息设置不同的同步时限,比如,将强一致性信息设置为可在较短内时限进行同步,将弱一致性信息设置为在比之强一致性信息较长的时限内进行同步。

进一步地,所述步骤s30之后,所述控制器集群的管理方法还包括:在所述当前设备状态为离线状态时,从所述当前sdn控制器存储的成员状态信息中删除所述第一sdn控制器的设备状态,将删除后的成员状态信息作为新的成员状态信息;按照预设周期向所述第二sdn控制器发送所述新的成员状态信息,以使所述第二sdn控制器将第二sdn控制器中存储的成员状态信息替换为新的成员状态信息。

在具体实现中,区别于成员配置信息中既存在强一致性信息也存在弱一致性信息,成员状态信息为强一致性信息,所以,控制器集群中的各控制器本地存储的成员状态信息可在较短内时限进行同步。所以,当判断第一sdn控制器为离线状态时,将直接从成员状态信息中删除掉第一sdn控制器的设备状态。

此外,由于成员状态信息为强一致性信息,将在一个较短的时间周期内向其他sdn控制器发送该成员状态信息,以起到保证控制器集群内的各控制器的成员状态信息几乎每时每刻都保持一致。因为,sdn控制器多以成员状态信息来判断其他控制器的运行状态,所以,该成员状态信息会较大程度地影响sdn控制器在集群中的运行以及路径判断。

可以理解的是,通过在预设周期内向第二sdn控制器发送该新的成员状态信息,并将第二sdn控制器本地存储的成员状态信息替换为该新的成员状态信息,从而保证了成员状态信息的一致。

在本实施例中可从成员配置信息中自动删除判断为离线状态的控制器的相关配置信息,并将修改后的成员配置信息进行广播,从而保证了各控制器存储的成员配置信息保持一致且具有较好的稳定性;同时,通过在预设周期内同步控制器集群内的各sdn控制器的成员状态信息,从而保证各控制器可稳定地进行信息交互。

参照图8,图8为本发明控制器集群的管理方法第四实施例的流程示意图,基于上述图4所示的第一实施例,提出本发明控制器集群的管理方法的第四实施例。

在第四实施例中,控制器集群内的sdn控制器可主动提出删减自己出集群,所述步骤s40之后,所述控制器集群的管理方法还包括:

步骤s501:响应于用户输入的成员删减请求,向所述预设控制器集群中的其他sdn控制器发送所述成员删减请求,以使其他sdn控制器在接收到所述成员删减请求时,反馈所述成员删减请求的回复信息;

可以理解的是,当预设控制器集群内的控制器主动提出退出该集群时,将先发送成员删减请求至集群内的其他成员,将等待其他sdn控制器对于该成员删减请求的回复。

步骤s502:在接收到其他sdn控制器反馈的回复信息时,检测所述回复信息中是否包括确认修改指令,在所述回复信息包括所述确认修改指令时,对所述当前sdn控制器中存储的成员配置信息进行修改,以生成修改后的成员配置信息,将修改后的成员配置信息作为第二配置信息;

应当理解的是,比如,若当前sdn控制器主动退出预设控制器集群时,将先发送成员删减请求至第一sdn控制器与第二sdn控制器,并等待第一sdn控制器与第二sdn控制器对于该成员删减请求的回复,该回复信息可能包括确认修改指令,表明同意当前sdn控制器退出该预设控制器集群。但是,在当前sdn控制器退出预设控制器集群的实际实现过程中,需要保证配置信息的一致性,不然,将会影响整个控制器集群运行的稳定性,并且,避免在当前sdn控制器正式离线后出现一些针对当前sdn控制器的无效请求。故而,将在其他sdn控制器同意当前sdn控制器退出集群后,主动对当前sdn控制器的成员配置信息进行修改,具体操作为,将从当前sdn控制器的成员配置信息中删除有关当前sdn控制器本身的配置信息,保留其他sdn控制器的配置信息,因为,本实施例的各控制器中都将预先保存集群内所有控制器的配置信息。

步骤s503:向其他sdn控制器广播所述第二配置信息,以使其他sdn控制器将其他sdn控制器中存储的成员配置信息替换为所述第二配置信息。

可以理解的是,在完成对于本地存储的成员配置信息的修改后,可将第二配置信息广播至其他控制器,以保证各控制器内存储的配置信息保持一致。

在本实施例中通过将修改后的成员配置信息发送至控制器集群内的各控制器并保存至本地,从而实现了控制器集群内的sdn控制器可主动提出删减自己出集群,缩减控制器集群,并能够保证集群内的剩余sdn控制器可保证稳定运行。

参照图9,图9为本发明控制器集群的管理方法第五实施例的流程示意图,基于上述图4所示的第一实施例,提出本发明控制器集群的管理方法的第五实施例。

在第五实施例中,控制器集群外的sdn控制器可主动提出添加自己入集群,所述步骤s40之后,所述控制器集群的管理方法还包括:

步骤s501':在接收到第三sdn控制器发送的第一成员添加请求时,向所述预设控制器集群中的其他sdn控制器发送所述第一成员添加请求,以使其他sdn控制器在接收到所述第一成员添加请求时,反馈所述第一成员添加请求的回复信息,所述第一成员添加请求用于将所述第三sdn控制器添加入所述预设控制器集群;

可以理解的是,预设控制器集群内包括当前sdn控制器、第一sdn控制器以及第二sdn控制器,当存在一个新的sdn控制器即第三sdn控制器欲加入该预设控制器集群时,为了不影响原集群内的控制器之间可稳定地进行交互,同时第三sdn控制器也可与原集群内的控制器进行交互,需要在第三sdn控制器加入预设控制器集群时,自动对各控制器的配置信息进行修改。

步骤s502':在接收到其他sdn控制器反馈的回复信息时,检测所述回复信息中是否包括确认修改指令,在所述回复信息包括所述确认修改指令时,对所述当前sdn控制器中存储的成员配置信息进行修改,以生成修改后的成员配置信息,将修改后的成员配置信息作为第三配置信息;

参见图10,图10为预设控制器集群与第三sdn控制器的部署示意图。在图10中,由于第三sdn控制器并非预设控制器集群中的控制器,将先发送第一成员添加请求给集群中的任一控制器,比如,可将第一成员添加请求发送给集群中的当前控制器;当前控制器在接收到该第一成员添加请求后,将通知集群内的其他控制器存在一个新控制器欲加入本集群,所以,将转发该第一成员添加请求至集群内的其他控制器,以获悉其他控制器是否同意新控制器的加入。

步骤s503':向所述第三sdn控制器以及所述预设控制器集群中的其他sdn控制器广播所述第三配置信息,以使接收到所述第三配置信息的sdn控制器将sdn控制器中存储的成员配置信息替换为所述第三配置信息。

在具体实现中,当其他控制器反馈的回复信息中包括确认修改指令时,表明集群内的控制器均同意新控制器加入集群。当其他控制器都同意后,将自动对各sdn控制器本地存储的成员配置信息进行修改,该修改行为主要是在原成员配置信息中添加关于第三sdn控制器的配置信息,以使得集群内的控制器可实现与第三控制器的通信。所以,第三配置信息中将包括预设控制器集群中的各sdn控制器以及第三sdn控制器的配置信息。

进一步地,控制器集群内的sdn控制器可主动提出添加集群外的sdn控制器入集群,所述步骤s40之后,所述控制器集群的管理方法还包括:

响应于用户输入的第二成员添加请求,向所述预设控制器集群中的其他sdn控制器发送所述第二成员添加请求,以使其他sdn控制器在接收到所述第二成员添加请求时,反馈所述第二成员添加请求的回复信息,所述第二成员添加请求用于将第四sdn控制器添加入所述预设控制器集群;

在接收到其他sdn控制器发送的回复信息时,检测所述回复信息中是否包括确认修改指令,在所述回复信息包括所述确认修改指令时,对所述当前sdn控制器中存储的成员配置信息进行修改,以生成修改后的成员配置信息,将修改后的成员配置信息作为第四配置信息;

向所述第四sdn控制器以及所述预设控制器集群中的其他sdn控制器广播所述第四配置信息,以使接收到所述第四配置信息的sdn控制器将sdn控制器中存储的成员配置信息替换为所述第四配置信息。

可以理解的是,对于步骤s501'-s503'中描述的新控制器添加入预设控制器集群的过程,实则是由控制器集群外的sdn控制器主动提出添加自己入集群,但在实际实现的过程中,本实施例还可提供一种别的添加方式,具体而言,控制器集群内的sdn控制器还可主动提出添加集群外的sdn控制器入集群。

在具体实现中,可由当前sdn控制器主动向集群提出添加集群外的第四sdn控制器入原控制器集群,集群内的sdn控制器提出添加请求与集群外的sdn控制器提出添加请求的流程存在较大的区别。

比如,当前sdn控制器将集群内的其他sdn控制器发送第二成员添加请求,在获取到其他sdn控制器回复的确认修改指令后,可修改本地存储的成员配置信息,修改的主要部分为在原成员配置信息中添加关于第四sdn控制器的配置信息,并将该修改后的配置信息即第四配置信息主动发送给原预设控制器集群内的控制器以及第四配置信息,使得接收到第四配置信息的控制器将第四配置信息保存至本地,也就实现了对于原控制器集群的拓展。因为,由于原控制器集群的控制器有了针对第四sdn控制器的配置信息,从而可与第四sdn控制器进行交互;同时,由于第四sdn控制器中已有原控制器集群的各控制器的配置信息,从而使得第四sdn控制器可主动与原控制器集群的各控制器进行交互。

可以理解的是,结合上述两种添加方式,即步骤s401”-s403”中描述的“控制器集群外的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控制器存储的成员状态信息中删除所述第一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控制器发送的回复信息时,检测所述回复信息中是否包括确认修改指令,在所述回复信息包括所述确认修改指令时,对所述当前sdn控制器中存储的成员配置信息进行修改,以生成修改后的成员配置信息,将修改后的成员配置信息作为第四配置信息;

向所述第四sdn控制器以及所述预设控制器集群中的其他sdn控制器广播所述第四配置信息,以使接收到所述第四配置信息的sdn控制器将sdn控制器中存储的成员配置信息替换为所述第四配置信息。

在本实施例中通过在sdn控制器本地预先存储成员状态信息,使得当判断出一控制器可能处于离线状态时,可通过该成员状态信息来进行控制器的设备状态的再次判断,由于可基于各控制器本地存储的成员状态信息来进行与其他控制器的交互,简化了部署结构,从而克服了在进行控制器集群的扩缩时交互过程较为繁琐的技术问题。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。其中,第一、第二、以及第三等的使用不表示任何顺序,可将这些词语解释为名称。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

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