一种软件定义网络控制器集群的调度方法

文档序号:8265403阅读:344来源:国知局
一种软件定义网络控制器集群的调度方法
【技术领域】
[0001] 本发明涉及网络技术领域,具体涉及一种软件定义网络控制器集群的调度方法。
【背景技术】
[0002] 目前,软件定义网络(Software Defined Network, SDN)控制器的调度方案大致包 括两种,一种是基于双机热备的调度方案,其架构如图1所示,平时由主控制器节点负责接 管所有的交换机,在主控制器节点出现宕机时,由备控制器节点接管所有的交换机;其缺点 是负载压力都集中在单个控制器节点上,处理性能较低。
[0003] 另一种是通过第三方管理者进行控制器集群的调度方案,其架构如图2所示,在 所有控制器节点之外加入一个第三方管理者,负责管理调度集群中的所有控制器节点;所 有的控制器节点都是通过该第三方管理者分配交换机的接管任务;如果控制器节点出现宕 机,第三方管理者将重新调度交换机接管任务;其缺点是如果第三方管理者出现宕机,会影 响整体网络系统的运行,同时,由于控制器集群的节点数量上限受第三方管理者的程序调 度性能影响,使得第三方管理者的性能会成为整体集群的瓶颈。

【发明内容】

[0004] 本发明针对现有技术中软件定义网络控制器的调度方案处理性能较低或受限于 第三方管理者的性能等技术问题,提出一种具有更高性能的软件定义网络控制器集群的调 度方法。
[0005] 以下分别基于同步数据修复方法和负载均衡方法对本发明提出的一种软件定义 网络控制器集群的调度方法进行介绍。
[0006] 1.基于同步数据修复方法
[0007] 本发明提出的一种软件定义网络控制器集群的调度方法,所述软件定义网络控制 器集群包括若干控制器节点;每个控制器节点相应拥有一份Hash表,每份Hash表的数据包 括:各个控制器节点的标识、各个控制器节点负责接管的交换机的标识、各个控制器节点的 负载因子;其中,每个控制器节点只允许修改其拥有的Hash表中由其负责接管的交换机的 标识以及其负载因子;每个控制器节点修改了其拥有的Hash表中的数据时,需将其修改的 数据同步到其他控制器节点中,由其他控制器节点相应更新各自拥有的Hash表中的数据;
[0008] 所述调度方法包括同步数据修复方法,所述同步数据修复方法包括:
[0009] 本控制器节点查询当前连接到本控制器集群中的交换机的标识;
[0010] 根据本控制器节点拥有的Hash表中的数据,判断查询到的标识对应的交换机的 接管情况;
[0011] 根据所述接管情况,确定是否执行Hash表数据修复;所述Hash表数据修复包 括:对本控制器节点所拥有的Hash表中的数据进行修复,同时对其他控制器节点所拥有的 Hash表中相应的数据进行同步修复。
[0012] 优选的,所述查询当前连接到本控制器集群中的交换机的标识具体通过openf low 协议进行查询。
[0013] 优选的,所述根据所述接管情况,确定是否执行Hash表数据修复的步骤包括:
[0014] 根据本控制器节点拥有的Hash表中的数据,判断接管所述查询到的标识对应的 交换机的控制器节点数量;
[0015] 若所述控制器节点数量等于1,则不执行Hash表数据修复。
[0016] 优选的,所述根据所述接管情况,确定是否执行Hash表数据修复的步骤还包括:
[0017] 若所述控制器节点数量等于0,则通过openf low协议接管所述查询到的标识对应 的交换机,并执行Hash表数据修复。
[0018] 优选的,所述根据所述接管情况,确定是否执行Hash表数据修复的步骤还包括:
[0019] 若所述控制器节点数量大于1,则根据本控制器节点所拥有的Hash表中的数据判 断所述查询到的标识对应的交换机是否由本控制器节点接管;若是,则执行Hash表数据修 复。
[0020] 2.基于同步负载均衡方法
[0021] 本发明提出的一种软件定义网络控制器集群的调度方法,所述软件定义网络控制 器集群包括若干控制器节点;每个控制器节点相应拥有一份Hash表,每份Hash表的数据包 括:各个控制器节点的标识、各个控制器节点负责接管的交换机的标识、各个控制器节点的 负载因子;其中,每个控制器节点只允许修改其拥有的Hash表中由其负责接管的交换机的 标识以及其负载因子;每个控制器节点修改了其拥有的Hash表中的数据时,需将其修改的 数据同步到其他控制器节点中,由其他控制器节点相应更新各自拥有的Hash表中的数据;
[0022] 所述调度方法包括负载均衡方法,所述负载均衡方法包括:
[0023] 根据本控制器节点拥有的Hash表中的数据,判断本控制器节点的负载状况和其 他控制器节点的负载状况,相应执行本控制器节点与其他控制器节点之间的负载均衡;
[0024] 优选的,所述根据本控制器节点拥有的Hash表中的数据,判断本控制器节点的负 载状况和其他控制器节点的负载状况,相应执行本控制器节点与其他控制器节点之间的负 载均衡的具体步骤包括:
[0025] 根据本控制器节点拥有的Hash表中的数据,通过计算判断本控制器节点是否处 于负载空闲状态;若处于负载空闲状态,则计算本控制器节点还需要接管多少交换机才达 到负载饱和状态;
[0026] 通过计算判断其他控制器节点是否处于负载繁忙状态;若是,则计算该控制器节 点还需要放弃多少交换机才能达到负载饱和状态;
[0027] 本控制器节点接管所述处于负载繁忙状态的控制器节点需要放弃的交换机,直至 本控制器节点达到负载饱和状态。
[0028] 优选的,所述负载均衡方法基于以下计算公式判断控制器节点的负载状况:
[0029] Load = (count/weights) ^Nodeffeigh
[0030] 其中,Load为相应的控制器节点达到负载饱和时接管的交换机数量;count为 本控制器集群中交换机的总数量;weights为所有控制器节点对应的负载因子的总和; NodeWeigh为相应的控制器节点对应的负载因子;
[0031] 若控制器节点接管的交换器数量小于Load,则判断出其处于负载空闲状态;若控 制器节点接管的交换器数量大于Load,则判断出其处于负载繁忙状态;若控制器节点接管 的交换器数量等于Load,则判断出其处于负载饱和状态。
[0032] 优选的,所述负载均衡方法还包括:
[0033] 更新本控制器节点拥有的Hash表中由其负责接管的交换机的标识以及其负载因 子,将其更新后的数据同步到其他控制器节点中,由其他控制器节点相应更新各自拥有的 Hash表中的数据。
[0034] 优选的,所述调度方法还包括控制器节点选举方法,所述控制器节点选举方法包 括:
[0035] 各控制器节点获取所有需要选举接管的交换机的标识;
[0036] 根据各控制器节点拥有的Hash表中的数据,选举出控制器节点对获取到的标识 对应的交换机进行接管。
[0037] 有益效果:本发明提出的软件定义网络控制器集群的调度方法,其采用的是控制 器集群的方案,可以将负载压力分摊给各个控制器节点,避免了现有技术双机热备的调度 方案中将所有负载压力集中给单个控制器节点导致处理性能较低的问题;
[0038] 同时,本发明的集群中的每个控制器节点相应配置一份Hash表,并限定每个控制 器节点只允许修改其拥有的Hash表中由其负责接管的交换机的标识以及其负载因子,每 个控制器节点修改了其拥有的Hash表中的数据时,需将其修改的数据同步到其他控制器 节点中,由其他控制器节点相应更新各自拥有的Hash表中的数据;因此,本发明可以根据 Hash表中的数据确定相应的控制器节点对交换机进行接管,而不需要引入第三方管理者, 故而不会导致整个集群受限于第三方管理者的性能。
[0039] 基于所述Hash表,本发明可以实现各个控制器节点之间的冗余及负载均衡,大大 提高了整个集群的性能
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1