本技术涉及网络,特别涉及一种控制器集群设备管理中角色的选举方法和系统。
背景技术:
1、随着技术的发展,软件定义网络(sdn)已经逐渐从早期的基于openflow协议(一种网络通信协议)的狭义sdn发展到目前实际上广泛应用的基于其他控制协议的广义sdn。其中,sdn控制器通常采用多主集群的实现架构,即控制器集群中包含多个同时工作的控制器实例,且所有控制器实例都能管理全网络中的任意设备,而管控压力则由集群在各实例上均衡分配。
2、netconf协议(网络配置协议)是sdn控制器管控设备的主流南向协议之一。根据netconf协议规范,控制器通过发送netconf rpc配置设备期间,设备的配置数据库会因为lock报文被锁定。因此,sdn控制器需要为每一个设备从集群中选择一个主控制器实例负责操作设备的配置,以避免互相锁定造成的效率低下。
3、相关技术中,为了实现sdn控制器自身压力的负载均衡,通常是基于全网的设备数量进行控制器选举,以实现负载均衡,但仅仅基于数量的控制器选举来实现负载均衡并不一定能做出最优的选择。因此,如何在sdn控制器集群中实现高效的主控制器实例选举是当前亟需解决的问题,以能够有效地达到控制器集群在管理设备时的负载均衡,同时又能够保证选举到较优的主控制器实例。
技术实现思路
1、本技术提供一种控制器集群设备管理中角色的选举方法和系统,以能够有效地达到控制器集群在管理设备时的负载均衡,同时又能够保证选举到较优的主控制器实例。
2、第一方面,提供了一种控制器集群设备管理中角色的选举方法,包括以下步骤:
3、基于控制器实例与设备的交互,获取每个控制器实例与其对应的设备间的消息收发效率以及每个控制器实例的消息处理效率;
4、基于所述消息收发效率与所述消息处理效率对每个控制器实例的权重值进行更新;
5、当目标设备的连接状态发生改变时,将权重值最大的目标控制器实例作为目标设备的主控制器实例。
6、一些实施例中,所述获取每个控制器实例与其对应的设备间的消息收发效率以及每个控制器实例的消息处理效率,包括:
7、获取全部netconf消息对应的第一总长度以及控制器实例i处理全部netconf消息所需的第一总耗时,所述全部netconf消息为控制器实例i处理过的所有netconf消息;
8、基于所述第一总长度和所述第一总耗时确定出控制器实例i的消息处理效率;
9、获取目标netconf消息的第二总长度以及目标netconf消息从控制器实例i发送至设备j所需的第二总耗时,所述目标netconf消息包括控制器实例i向设备j发送的所有netconf消息;
10、基于所述第二总长度和所述第二总耗时计算出控制器实例i相对于设备j的消息收发效率。
11、一些实施例中,所述基于所述消息收发效率与所述消息处理效率对每个控制器实例的权重值进行更新,包括:
12、对控制器实例i的消息处理效率以及其他控制器实例的消息处理效率进行归一化处理,得到控制器实例i的当前实例权重值;
13、对控制器实例i相对于设备j的消息收发效率以及其他控制器实例相对于设备j的消息收发效率进行归一化处理,得到控制器实例i相对于设备j的当前质量权重值;
14、基于所述当前实例权重值和所述当前质量权重值得到控制器实例i的实时权重值。
15、一些实施例中,所述基于所述当前实例权重值和所述当前质量权重值得到控制器实例i的实时权重值,包括:
16、将所述当前实例权重值和所述当前质量权重值代入第一计算公式,得到控制器实例i的实时权重值,所述第一计算公式为:
17、w_resulti=w_insci×(1+w_neti-j)
18、式中,w_resulti表示控制器实例i的实时权重值,w_insci表示控制器实例i的当前实例权重值,w_neti-j表示控制器实例i相对于设备j的当前质量权重值。
19、一些实施例中,所述对控制器实例i的消息处理效率以及其他控制器实例的消息处理效率进行归一化处理,得到控制器实例i的当前实例权重值,包括:
20、对控制器实例i的消息处理效率以及其他控制器实例的消息处理效率进行归一化处理,得到控制器实例i的当前最大实例权重值;
21、根据控制器实例i的当前最大实例权重值、控制器实例i的历史最大实例权重值以及控制器实例i的历史实例权重值计算得到控制器实例i的当前实例权重值。
22、一些实施例中,在所述将权重值最大的目标控制器实例作为目标设备的主控制器实例的步骤之后,还包括:
23、将目标控制器实例的当前实例权重值与预设值相减,得到新的当前实例权重值;
24、当所述新的当前实例权重值小于0时,将目标控制器实例的当前最大实例权重值作为目标控制器实例的当前实例权重值。
25、一些实施例中,所述方法还包括:
26、当目标设备与当前控制器实例发生断连,判断当前控制器实例是否为主控制器实例;
27、若是,则将当前控制器实例的当前实例权重值与预设值相加,得到新的当前实例权重值;
28、若否,则不对当前控制器实施例的当前实例权重值进行调整。
29、一些实施例中,所述当目标设备的连接状态发生改变时,将权重值最大的目标控制器实例作为目标设备的主控制器实例,包括:
30、当目标设备的连接状态发生改变时,确定出控制器集群内与目标设备建立连接的多个控制器实例;
31、从多个控制器实例中选举出权重值最大的目标控制器实例作为目标设备的主控制器实例。
32、第二方面,提供了一种控制器集群设备管理中角色的选举系统,包括:
33、处理模块,其用于基于控制器实例与设备的交互,获取每个控制器实例与其对应的设备间的消息收发效率以及每个控制器实例的消息处理效率;
34、更新模块,其用于基于所述消息收发效率与所述消息处理效率对每个控制器实例的权重值进行更新;
35、选举模块,其用于当目标设备的连接状态发生改变时,将权重值最大的目标控制器实例作为目标设备的主控制器实例。
36、一些实施例中,所述处理模块具体用于:
37、获取全部netconf消息对应的第一总长度以及控制器实例i处理全部netconf消息所需的第一总耗时,所述全部netconf消息为控制器实例i处理过的所有netconf消息;
38、基于所述第一总长度和所述第一总耗时确定出控制器实例i的消息处理效率;
39、获取目标netconf消息的第二总长度以及目标netconf消息从控制器实例i发送至设备j所需的第二总耗时,所述目标netconf消息包括控制器实例i向设备j发送的所有netconf消息;
40、基于所述第二总长度和所述第二总耗时计算出控制器实例i相对于设备j的消息收发效率。
41、本技术提供了一种控制器集群设备管理中角色的选举方法和系统,包括基于控制器实例与设备的交互,获取每个控制器实例与其对应的设备间的消息收发效率以及每个控制器实例的消息处理效率;基于所述消息收发效率与所述消息处理效率对每个控制器实例的权重值进行更新;当目标设备的连接状态发生改变时,将权重值最大的目标控制器实例作为目标设备的主控制器实例。由于消息收发效率反映了控制器实例与设备间的网络质量,而消息处理效率则反映了控制器实例的处理压力;由此可见,本技术通过控制器节点的处理压力以及控制器节点与设备间的网络质量对控制器实例的权重值进行更新,以根据实时环境状态动态调整对设备的控制角色,使控制器的处理压力更均衡,进而有效地达到控制器集群在管理设备时的负载均衡,同时又能够保证选举到更优的主控制器实例。