一种控制器负载均衡方法及装置与流程

文档序号:11156966阅读:972来源:国知局
一种控制器负载均衡方法及装置与制造工艺

本发明涉及计算机网络技术领域,特别是涉及一种控制器负载均衡方法及装置。



背景技术:

SDN(Software Defined Network,软件定义网络)是未来网络中一种重要的新型网络架构。该架构的核心思想是将网络设备控制面与数据面分离并集中到一个中心化的控制器上,控制器拥有对整个SDN网络的宏观视角,并提供管理视图和编程接口来控制整个SDN网络。控制器能够为交换机计算转发数据包或流所需要的流表项,而交换机则只需按照流表项对数据包进行转发。这样,交换机设备可以得到简化,节约了设备开销,同时,整个网络的可控制性和可管理性也得到了提高。但网络规模较大时,单个控制器由于其在扩展性和可靠性方面的局限,使它成为SDN网络的瓶颈,所以需要由多个控制器组成的控制平面来实现对整个网络的控制,其中,上述控制器中的一个可以是该控制平面的超级控制器,用于对该控制平面的控制器进行管理。

在多控制器的SDN网络中,控制器各自控制着网络中部分交换机,在通常情况下,每个交换机只需与一个控制器保持连接,但是为了负载均衡和容错目的,一个交换机至少同时与两个控制器保持连接。通过控制器之间的协作,控制层面中的超级控制器会为每个交换机指定一个主控制器,将连接的其他控制器设置为此交换机的从控制器,这样解决了单一控制器带来的可靠性和可扩展性问题。但由于交换机到控制器的映射都是静态的,从而使得控制层面很难适应网络流量的变化。在这种情况下,一旦某个控制器超负载,则该控制器对于交换机的流请求响应时间会不断增加,甚至可能会超过规定的时间,从而影响网络性能,因此,在多控制器的SDN网络中,均衡控制器之间负载分布是至关重要的。

目前,基于交换机迁移策略的控制器负载均衡方案是主要解决方法之一,这种方法的原理是将过载控制器的一部分负载通过迁移交换机的方式来迁移到负载较轻的控制器上,从而实现控制器负载均衡的目的。该方法具体为:在当前周期内,根据记载的所有控制器的负载值和预设的负载阈值,确定过载控制器;在该过载控制器所控制的交换机中,选择一个交换机确定为待迁移交换机;从确定的待迁移交换机的从控制器中选择一个控制器,确定为目标控制器;将待迁移交换机迁移到该目标控制器上。上述方法中,在迁移交换机后,该过载控制器可能仍然会过载,但是在一个周期内中,只能对一个过载控制器的一个交换机进行一次迁移,需要在接下来的周期内,对该过载控制器进行负载迁移,会导致该过载控制器长时间处于过载的状态,降低了负载均衡的时间效率。



技术实现要素:

本发明实施例的目的在于提供一种控制器负载均衡方法及装置,以提高负载均衡的时间效率。具体技术方案如下:

第一方面,为了达到上述目的,本发明实施例公开了一种控制器负载均衡方法,所述方法包括:

在当前周期内,从过载控制器中选择一个过载控制器,确定为第一控制器,其中,所述过载控制器为:根据本地记录的各个控制器的负载值和预先设置的第一负载阈值,从各个控制器中确定的控制器;

从所述第一控制器所控制的交换机中,确定待迁移交换机;

将所确定的待迁移交换机划分为交换机组,其中,每一交换机组中包括至少一个交换机;

针对每一交换机组,从该交换机组的所有交换机共有的从控制器中,为该交换机组选择一个从控制器,作为该交换机组的目标控制器;

向所述第一控制器和每个目标控制器发送迁移信息,以使得所述第一控制器将每一交换机组中的交换机迁移至对应的目标控制器上。

可选的,在所述向所述过载控制器和每个目标控制器发送迁移信息的步骤之后,所述方法还包括:

判断所述当前周期是否结束;

如果否,确定在所述当前周期内是否重新获取了各个控制器的负载值;

如果获取,将本地记录的各个控制器的负载值更新为最新获取的各个控制器的负载值,并返回执行所述在当前周期内,从过载控制器中选择一个过载控制器,确定为第一控制器的步骤;

如果没有获取,从未被确定为所述第一控制器的过载控制器中重新选择一个过载控制器,将所述第一控制器更新为重新选择的过载控制器,并返回执行所述从所述第一控制器所控制的交换机中,确定待迁移交换机的步骤。

可选的,所述从所述第一控制器所控制的交换机中,确定待迁移交换机的步骤,包括:

根据本地记录的各个控制器的负载值,估算所述第一控制器的待迁移负载值;

获取所述第一控制器所控制的各个交换机的负载值;

根据所述待迁移负载值和所获取的交换机的负载值,将所述第一控制器所控制的交换机划分为交换机集合;

判断所划分得到的交换机集合是否只有一个;

如果是,将划分得到的交换机集合中的交换机确定为待迁移交换机;

如果否,从划分得到的交换机集合中选择一个交换机集合,作为目标交换机集合;并将所述目标交换机集合中的交换机确定为待迁移交换机。

可选的,所述根据所述待迁移负载值和所获取的交换机的负载值,将所述第一控制器所控制的交换机划分为交换机集合的步骤,包括:

在所获取的交换机的负载值中,确定总和最接近所述待迁移负载值的负载值组合;

将所确定的负载值组合中的负载值对应的交换机划分至同一个交换机集合中。

可选的,所述根据本地记录的各个控制器的负载值,估算所述第一控制器的待迁移负载值的步骤,包括:

根据本地记录的各个控制器的负载值,采用如下公式估算所述第一控制器的待迁移负载值;

Target=Poverloaded-Paverage

其中,Target为所述待迁移负载值,Poverloaded为所述第一控制器的负载程度,是根据本地记录的所述第一控制器的负载值和预设的第一控制器能承受的最大负载值计算得到的;Paverage为当前网络的平均负载程度,是是根据本地记录的各个控制器的负载值的平均值及预设的网络能承受的最大负载值计算得到的。

可选的,所述从划分得到的交换机集合中选择一个交换机集合,作为目标交换机集合的步骤,包括:

获取划分得到的每一交换机集合中的各个交换机分别到所述第一控制器的距离;

针对每一交换机集合,计算该交换机集合中各交换机对应的距离的总和;

选择最大的总和对应的交换机集合作为目标交换机集合。

可选的,所述将所确定的待迁移交换机划分为交换机组的步骤,包括:

根据所获取的距离和预设的贪婪算法,对所确定的待迁移交换机进行分组处理,得到待迁移组;

判断所得到的待迁移组的数量是否大于第二控制器的数量,其中,所述第二控制器为:各个待迁移交换机共有的从控制器中,本地记录的负载值小于预先设置的第二负载阈值的从控制器;

如果是,对所得到的待迁移组进行合并处理,得到数量不大于所述第二控制器的数量的待迁移组;并将合并处理后的待迁移组确定为交换机组;

如果否,将所得到的迁移组确定为交换机组。

可选的,所述对所得到的待迁移组进行合并处理,得到数量不大于所述第二控制器的数量的待迁移组的步骤,包括:

从所得到的待迁移组中选择一个待迁移组,确定为目标待迁移组;

在除所述目标迁移组之外的其他待迁移组中,确定与所述目标迁移组合并后距离方差最小的待迁移组;

将所述目标待迁移组和所确定的待迁移组合并为一个新的待迁移组;

判断待迁移组的数量是否大于所述第二控制器的数量;

如果是,在合并后的待迁移组中选择一个待迁移组,将所述目标待迁移组更新为所选择的待迁移组;返回执行所述在除所述目标迁移组之外的其他待迁移组中,确定与所述目标迁移组合并后距离方差最小的待迁移组的步骤。

可选的,所述针对每一交换机组,从该交换机组的所有交换机共有的从控制器中,为该交换机组选择一个从控制器,作为该交换机组的目标控制器的步骤,包括:

利用以下公式,针对每一交换机组,计算每一第二控制器针对该交换机组的数据值:

Cn=ω1×|Ln+Lk-LAverage|+ω2×Hk

其中,Cn为第二控制器n针对交换机组k的数据值,Ln为第二控制器n的负载压力值,Lk为交换机组k的平均负载压力值,LAverage为当前网络平均负载压力值,Hk为交换机组k到第二控制器n的距离,ω1和ω2分别为预设权重,其和为1;

针对每一交换机组,确定该交换机组中数据值最小的第二控制器,作为该交换机组的目标控制器。

第二方面,为了达到上述目的,本发明实施例公开了一种控制器负载均衡装置,所述装置包括:

第一确定模块,用于在当前周期内,从过载控制器中选择一个过载控制器,确定为第一控制器,其中,所述过载控制器为:根据本地记录的各个控制器的负载值和预先设置的第一负载阈值,从各个控制器中确定的控制器;

第二确定模块,用于从所述第一控制器所控制的交换机中,确定待迁移交换机;

划分模块,用于将所确定的待迁移交换机划分为交换机组,其中,每一交换机组中包括至少一个交换机;

选择模块,用于针对每一交换机组,从该交换机组的所有交换机共有的从控制器中,为该交换机组选择一个从控制器,作为该交换机组的目标控制器;

发送模块,用于向所述第一控制器和每个目标控制器发送迁移信息,以使得所述第一控制器将每一交换机组中的交换机迁移至对应的目标控制器上。

可选的,所述装置还包括:

判断模块,用于判断所述当前周期是否结束;

第三确定模块,用于在所述判断模块的判断结果为否的情况下,确定在所述当前周期内是否重新获取了各个控制器的负载值;

第一更新模块,用于在所述第三确定模块的确定结果为获取的情况下,将本地记录的各个控制器的负载值更新为最新获取的各个控制器的负载值,并返回执行所述第一确定模块;

第二更新模块,用于在所述第三确定模块的确定结果为没有获取的情况下,从未被确定为所述第一控制器的过载控制器中重新选择一个过载控制器,将所述第一控制器更新为重新选择的过载控制器,并返回执行所述第二确定模块。

可选的,所述第二确定模块,包括:

估算子模块,用于根据本地记录的各个控制器的负载值,估算所述第一控制器的待迁移负载值;

获取子模块,用于获取所述第一控制器所控制的各个交换机的负载值;

划分子模块,用于根据所述待迁移负载值和所获取的交换机的负载值,将所述第一控制器所控制的交换机划分为交换机集合;

第一判断子模块,用于判断所划分得到的交换机集合是否只有一个;

第一确定子模块,用于在所述第一判断子模块的判断结果为是的情况下,将划分得到的交换机集合中的交换机确定为待迁移交换机;

第二确定子模块,用于在所述第一判断子模块的判断结果为否的情况下,从划分得到的交换机集合中选择一个交换机集合,作为目标交换机集合;并将所述目标交换机集合中的交换机确定为待迁移交换机。

可选的,所述划分子模块,包括:

第一确定单元,用于在所获取的交换机的负载值中,确定总和最接近所述待迁移负载值的负载值组合;

划分单元,用于将所确定的负载值组合中的负载值对应的交换机划分至同一个交换机集合中。

可选的,所述估算子模块,具体用于:

根据本地记录的各个控制器的负载值,采用如下公式估算所述第一控制器的待迁移负载值;

Target=Poverloaded-Paverage

其中,Target为所述待迁移负载值,Poverloaded为所述第一控制器的负载程度,是根据本地记录的所述第一控制器的负载值和预设的第一控制器能承受的最大负载值计算得到的;Paverage为当前网络的平均负载程度,是根据本地记录的各个控制器的负载值的平均值及预设的网络能承受的最大负载值计算得到的。

可选的,所述第二确定子模块,包括:

获取单元,用于获取划分得到的每一交换机集合中的各个交换机分别到所述第一控制器的距离;

计算单元,用于针对每一交换机集合,计算该交换机集合中各交换机对应的距离的总和;

选择单元,用于选择最大的总和对应的交换机集合作为目标交换机集合;

第二确定单元,用于将所述目标交换机集合中的交换机确定为待迁移交换机。

可选的,所述划分模块,包括:

分组处理子模块,用于根据所获取的距离和预设的贪婪算法,对所确定的待迁移交换机进行分组处理,得到待迁移组;

第二判断子模块,用于判断所得到的待迁移组的数量是否大于第二控制器的数量,其中,所述第二控制器为:各个待迁移交换机共有的从控制器中,本地记录的负载值小于预先设置的第二负载阈值的从控制器;

第三确定子模块,用于在所述第二判断子模块的判断结果为是的情况下,对所得到的待迁移组进行合并处理,得到数量不大于所述第二控制器的数量的待迁移组;并将合并处理后的待迁移组确定为交换机组;

第四确定子模块,用于在所述第二判断子模块的判断结果为否的情况下,将所得到的迁移组确定为交换机组。

可选的,所述第三确定子模块,包括:

第三确定单元,用于从所得到的待迁移组中选择一个待迁移组,确定为目标待迁移组;

第四确定单元,用于在除所述目标迁移组之外的其他待迁移组中,确定与所述目标迁移组合并后距离方差最小的待迁移组;

合并单元,用于将所述目标待迁移组和所确定的待迁移组合并为一个新的待迁移组;

判断单元,用于判断待迁移组的数量是否大于所述第二控制器的数量;

更新单元,用于在所述判断单元的判断结果为是的情况下,在合并后的待迁移组中选择一个待迁移组,将所述目标待迁移组更新为所选择的待迁移组;返回执行第四确定单元。

可选的,所述选择模块,包括:

计算子模块,用于利用以下公式,针对每一交换机组,计算每一第二控制器针对该交换机组的数据值:

Cn=ω1×|Ln+Lk-LAverage|+ω2×Hk

其中,Cn为第二控制器n针对交换机组k的数据值,Ln为第二控制器n的负载压力值,Lk为交换机组k的平均负载压力值,LAverage为当前网络平均负载压力值,Hk为交换机组k到第二控制器n的距离,ω1和ω2分别为预设权重,其和为1;

第五确定子模块,用于针对每一交换机组,确定该交换机组中数据值最小的第二控制器,作为该交换机组的目标控制器。

本发明实施例提供的一种控制器负载均衡方法及装置,可以从过载控制器中选择一个过载控制器作为第一控制器,然后,从该第一控制器所控制的交换机中,确定待迁移机交换机,再将待迁移交换机划分为交换机组,然后,为每一交换机组确定一个目标控制器,最后,将交换机组中的交换机迁移至对应的目标控制器上。相较于现有技术中,迁移针对第一控制器只迁移一个交换机,本发明实施例是将一个交换机组作为一个整体确定目标控制器,从而实现交换机组的整体迁移,进而提高了负载均衡的时间效率。当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。

附图说明

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

图1为本发明实施例提供的控制器负载均衡方法的第一种流程示意图;

图2为第一种SDN网络架构的拓扑示意图;

图3为进行交换机组划分后的第二种SDN网络局部结构的拓扑示意图;

图4为进行分组处理后的第三种SDN网络局部结构的拓扑示意图;

图5为本发明实施例提供的控制器负载均衡方法的第二种流程示意图;

图6为第四种SDN网络结构的拓扑示意图;

图7为控制器B负载值的方差随时间变化的曲线图;

图8为控制器B负载值随时间变化的曲线图;

图9为本发明实施例提供的控制器负载均衡方法的第一种结构示意图;

图10为本发明实施例提供的控制器负载均衡方法的第二种结构示意图。

具体实施方式

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

为解决现有技术存在的问题,本发明实施例提供了一种控制器负载均衡方法及装置,下面首先对本发明实施例提供的一种控制器负载均衡方法进行详细说明。

图1为本发明实施例提供的控制器负载均衡方法的第一种流程示意图,方法包括:

S101:在当前周期内,从过载控制器中选择一个过载控制器,确定为第一控制器,其中,所述过载控制器为:根据本地记录的各个控制器的负载值和预先设置的第一负载阈值,从各个控制器中确定的控制器。

首先,对本发明实施例所用的SDN网络架构进行说明。该网络架构包括控制层面和数据层面,控制层面与数据层面分离。控制层面包括一个超级控制器和多个控制器,需要说明的是,在本发明实施例中所说的控制器是相对于超级控制器来说的普通控制器。数据层面中包括多个交换机,交换机与控制器逻辑连接。超级控制器在交换机连接的控制器中,指定一个控制器作为该交换机的主控制器,该交换机连接的其他控制器为该交换机的从控制器。示例性的,图2为第一种SDN网络架构的拓扑示意图,从图2可知,交换机S1连接的控制器有控制器C1、C2、C3和C4,当前对于交换机S1来说,控制器C1是主控制器,控制器C2、C3和C4是从控制器。超级控制器分别与控制器C1、C2、C3和C4连接,使得超级控制器可以从控制器中获取信息。需要说明的是,本发明实施例提供的控制器负载均衡方法可以应用于超级控制器。

需要说明的是,周期是从网络启动时开始计算,将预先设置的时间间隔作为一个周期,示例性的,预先设置的时间间隔可以为2毫秒,即2毫秒为一个周期。在本发明实施例中,本地记录的各个控制器的负载值是周期性获取的。各个控制器中运行了负载监测模块,该负载监测模块用于测量自身的负载值,并且将测量得到的负载值周期性地推送给超级控制器。需要说明的是,这里所说的周期性和上述所说的周期不是相同的概念,这里所说的周期的时间间隔可以小于上述所说的周期时间间隔,当然,也可以不小于上述所说的周期时间间隔。

需要说明的是,如果根据本地记录的各个控制器的负载值和预先设置的第一负载阈值,没有确定出过载控制器,则说明目前各个控制器均处于负载均衡状态,不需要进行对控制器进行负载均衡。第一负载阈值是根据实际情况确定的负载值,如果一个控制器的负载值大于第一负载阈值,则该控制器为过载控制器。本领域技术人员可以理解的是,在确定第一控制器的时候,可以在过载控制器中随机选择一个过载控制器,也可以在过载控制器中选择负载值最大的控制器。如果一个控制器的负载过大,会影响网络性能,选择负载值最大的控制器作为第一控制器,这样可以大大减少过载对网络性能的影响。

需要说明的是,针对记录的同一组各个控制器的负载值确定的过载控制器,如果一个过载控制器被确定为第一控制器,该过载控制器不会再次被确定为第一控制器。针对记录的同一组各个控制器的负载值确定的过载控制器,是一个过载控制器集合。当一个过载控制器被确定为第一控制器,则将该过载控制器从过载控制器集合中删除。

S102:从所述第一控制器所控制的交换机中,确定待迁移交换机。

具体的,从所述第一控制器所控制的交换机中,确定待迁移交换机的步骤,包括:

根据本地记录的各个控制器的负载值,估算所述第一控制器的待迁移负载值;

获取所述第一控制器所控制的各个交换机的负载值;

根据所述待迁移负载值和所获取的交换机的负载值,将所述第一控制器所控制的交换机划分为交换机集合;

判断所划分得到的交换机集合是否只有一个;

如果是,将划分得到的交换机集合中的交换机确定为待迁移交换机;

如果否,从划分得到的交换机集合中选择一个交换机集合,作为目标交换机集合;并将所述目标交换机集合中的交换机确定为待迁移交换机。

本领域技术人员可以理解的是,将控制器所控制的交换机迁移走,可以降低控制器的负载,实现控制器的负载均衡。但是需要估算第一控制器的待迁移负载值,进而确定迁移哪些交换机。

超级控制器可以从第一控制器中获取第一控制器控制的各个交换机的负载值,根据待迁移负载值和所获取的交换机的负载值,可以将第一控制器所控制的交换机划分为交换机集合。具体的,可以在交换机的负载值中,确定总和接近待迁移负载值的负载值组合,将负载值组合中的负载值对应的交换机划分至同一个交换机集合中。当然,并不仅限于上述示例,还存在其他方式将交换机划分为交换机集合。

如果划分得到的交换机集合只有一个,则可以将该交换机集合中交换机确定为待迁移交换机。如果划分得到的交换机集合有多个,迁移一个交换机集合中交换机,就可以实现负载均衡。如果将所有交换机集合中的交换机均迁移至其他的控制器上,会影响整个网络的负载均衡。所以需要在多个交换机集合中选择一个交换机集合,作为目标交换机集合,将目标交换机集合中的交换机确定为待迁移交换机。

具体的,所述根据本地记录的各个控制器的负载值,估算所述第一控制器的待迁移负载值的步骤,包括:

根据本地记录的各个控制器的负载值,采用如下公式估算所述第一控制器的待迁移负载值;

Target=Poverloaded-Paverage

其中,Target为所述待迁移负载值,Poverloaded为所述第一控制器的负载程度,是根据本地记录的所述第一控制器的负载值和预设的第一控制器能承受的最大负载值计算得到的;Paverage为当前网络的平均负载程度,是根据本地记录的各个控制器的负载值的平均值及预设的网络能承受的最大负载值计算得到的。

在实际应用中,第一控制器能承受的最大负载值是预先设置的,可以是根据实际情况设置,针对不同的控制器,可以设置相同的能承受的最大负载值,也可以设置不同的能承受的最大负载值。网络能承受的最大负载值可以是根据预设的各个控制器能承受的最大负载值的平均值确定的,还可以是通过其他方式预先确定的,在这里不进行限定。

具体的,Poverloaded可以通过以下公式计算得到:

Poverloaded=Lj/Lmax

其中,Lj为本地记载的第一控制器的负载值,第一控制器为控制器j,Lmax为预设的第一控制器能承受的最大负载值。

需要说明的是,Paverage也可以利用与上述相同的原理计算得到,具体的,Paverage的计算公式为:

Paverage=Nv/Nmax

其中,Nv为本地记录的各个控制器的负载值的平均值,Nmax为预设的网络能承受的最大负载值。

具体的,所述根据所述待迁移负载值和所获取的交换机的负载值,将所述第一控制器所控制的交换机划分为交换机集合的步骤,包括:

在所获取的交换机的负载值中,确定总和最接近所述待迁移负载值的负载值组合;

将所确定的负载值组合中的负载值对应的交换机划分至同一个交换机集合中。

需要说明的是,负载值组合中的负载值的总和不能超过待迁移负载值。

示例性的,第一控制器为控制器C8,待迁移负载值为15%,控制器C8控制的交换机分别为交换机S11、S12、S13、S14和S15,交换机的负载值可以为该交换机发送的PACKET-IN(数据包传入)包的数量占控制器接收到的包数量的百分比。具体的,交换机S11、S12、S13、S14和S15分别为7%、8%、2%、5%和30%。在这5个负载值中,确定总和最接近15%的负载值组合。确定出了负载值组合1和负载值组合2,负载值组合1中的负载值分别为8%和7%,负载值组合2中的负载值分别为8%、2%和5%。将交换机S11和S12划分至交换机集合1中,交换机S12、S13和S14划分至交换机集合2。具体的,进行交换机组划分后的第二种SDN网络局部结构的拓扑示意图,可以如图3所示。

具体的,所述从划分得到的交换机集合中选择一个交换机集合,作为目标交换机集合的步骤,包括:

获取划分得到的每一交换机集合中的各个交换机分别到所述第一控制器的距离;

针对每一交换机集合,计算该交换机集合中各交换机对应的距离的总和;

选择最大的总和对应的交换机集合作为目标交换机集合。

在本发明实施例中,超级控制器可以从每个控制器获取自身分别到各个交换机的距离,获取的距离中包含了每一交换机集合中的各个交换机分别到第一控制器的距离。

计算交换机集合中的各交换机对应的距离的总和,可以采用如下公式:

Dq=∑Dij

其中,Dq为交换机集合q中的各交换机对应的距离的总和,Dij为交换机集合q中交换机i到第一控制器j的距离。

延续上述示例,交换机S11、S12、S13和S14到控制器C8的距离为6hops(跃点数)、4hops、2hops和3hops,则交换机集合1中各交换机对应的距离的总和为10hops,交换机集合2中各交换机对应的距离的总和为9hops。在本发明实施例中,选择总和最大对应的交换机集合作为目标交换机集合,目标交换机集合为交换机集合1,确定的待迁移交换机为交换机S11和S12。

在本发明实施例中,之所以选择距离最大对应的交换机集合为目标交换机集合,是因为交换机距离控制器越远,管理成本会也高。相对于选择迁移距离比较近的交换机,迁移距离比较远的交换机会降低管理成本,提高网络性能。

S103:将所确定的待迁移交换机划分为交换机组,其中,每一交换机组中包括至少一个交换机。

具体的,根据所获取的距离和预设的贪婪算法,对所确定的待迁移交换机进行分组处理,得到待迁移组;

判断所得到的待迁移组的数量是否大于第二控制器的数量,其中,所述第二控制器为:各个待迁移交换机共有的从控制器中,本地记录的负载值小于预先设置的第二负载阈值的从控制器;

如果是,对所得到的待迁移组进行合并处理,得到数量不大于所述第二控制器的数量的待迁移组;并将合并处理后的待迁移组确定为交换机组;

如果否,将所得到的迁移组确定为交换机组。

需要说明的是,贪婪算法又称贪心算法,在对问题求解时,总是做出在当前看来是最好的选择。不从整体最优上加以考虑,而是从局部出发,获取局部最优解。在本发明实施例中,贪婪算法是按照待迁移交换机中的交换机到第一控制器之间的距离进行分组处理,获得待迁移组。具体的,可以将迁移交换机组中,到第一控制器的距离最接近的交换机两两分为一组,当然,还可以将到第一控制器的距离最接近的两个以上交换机分为一组。需要说明的是,待迁移组相互之间不存在相同的交换机,对待迁移交换机进行分组处理之后,可能会存在只有一个交换机的待迁移组。

示例性的,第一控制器为控制器C5,待迁移交换机为交换机S21、S22、S23、S24、S25、S26和S27。交换机S21、S22、S23、S24、S25、S26和S27到控制器C5的距离分别为6hops、2hops、8hops、7hops、15hops、10hops和12hops。将上述距离中最接近的两个距离对应的交换机划分到一组,对上述7个交换机进行分组处理,得到4个待迁移组。具体的,进行分组处理后的第三种SDN网络局部结构的拓扑示意图,可以如图4所示,待迁移组1包括交换机S21和S22交换机,待迁移组包括交换机S23和S24,待迁移组包括交换机S25,待迁移组包括交换机S26和S27。

在本发明实施例中,在对待迁移交换机进行分组处理,得到待迁移组后,还需要判断待迁移组的数量是否大于第二控制器的数量,是因为对待迁移交换机进行分组处理,主要想要在第二控制器中,为每一待迁移组选择一个目标控制器。如果待迁移交换机组的数量大于第二控制器的数量,第二控制器的数量不足以分配给待迁移组,从而失去了对待迁移组分组处理的意义。此时,需要对得到的待迁移组进行合并,得到数量不大于第二控制器数量的待迁移组。

如果待迁移组的数量不大于第二控制器的数量,则将待迁移组确定为交换机组。

具体的,所述对所得到的待迁移组进行合并处理,得到数量不大于所述第二控制器的数量的待迁移组的步骤,包括:

从所得到的待迁移组中选择一个待迁移组,确定为目标待迁移组;

在除所述目标迁移组之外的其他待迁移组中,确定与所述目标迁移组合并后距离方差最小的待迁移组;

将所述目标待迁移组和所确定的待迁移组合并为一个新的待迁移组;

判断待迁移组的数量是否大于所述第二控制器的数量;

如果是,在合并后的待迁移组中选择一个待迁移组,将所述目标待迁移组更新为所选择的待迁移组;返回执行所述在除所述目标迁移组之外的其他待迁移组中,确定与所述目标迁移组合并后距离方差最小的待迁移组的步骤。

在本发明实施例中,当待迁移组的数量大于第二控制器的数量,需要对待迁移组进行合并处理,在进行合并处理时,可以先在待迁移组中选择一个待迁移组,作为目标待迁移组。具体的,可以是随机一个待迁移组作为目标控制器,可以是将选择待迁移组中交换机对应的距离中,总和最小的待迁移组作为目标待迁移组,当然,并不仅限于上述方法,还有其他方法选择目标待迁移组。

延续上述示例,目标迁移组为待迁移组1,第二控制器有3个,分别计算待迁移组1分别与待迁移组2、待迁移组3和待迁移组4合并,合并后的待迁移组中交换机到第一控制器的距离的方差。在得到的3个方差值分别为6.92、44.33和19.67,根据所得到的方差值,确定待迁移组1和待迁移组2进行合并。因为将这两个待迁移组合并,得到的新的待迁移组,新的待迁移组中的交换机到第一控制器的距离的方差最小。此时,待迁移组数量为3个,分别为合并后的待迁移组1、待迁移组3和待迁移组4。合并后的待迁移组1中包括交换机S21、S22、S23和S24。待迁移组的数量等于第二控制器的数量,将这3个待迁移组确定为交换机组,交换机组1为合并后的待迁移组1,交换机组2为待迁移组2,交换机组3为待迁移组3。

需要说明的是,如果在一次合并之后,如果待迁移交换组的数量还大于第二控制器的数量,则需要继续进行合并。具体的,可以在合并后的待迁移组中选择一个待迁移组,将目标待迁移组更新为所选择的待迁移组;返回执行在除目标迁移组之外的其他待迁移组中,确定与目标迁移组合并后距离方差最小的待迁移组的步骤。

S104:针对每一交换机组,从该交换机组的所有交换机共有的从控制器中,为该交换机组选择一个从控制器,作为该交换机组的目标控制器。

所述针对每一交换机组,从该交换机组的所有交换机共有的从控制器中,为该交换机组选择一个从控制器,作为该交换机组的目标控制器的步骤,包括:

利用以下公式,针对每一交换机组,计算每一第二控制器针对该交换机组的数据值:

Cn=ω1×|Ln+Lk-LAverage|+ω2×Hk

其中,Cn为第二控制器n的数据值,Ln为第二控制器n的负载压力值、Lk为交换机组k的平均负载压力值,LAverage为当前网络平均负载压力值,Hk为交换机组k到第二控制器n的距离,ω1和ω2分别为预设权重,其和为1;

针对每一交换机组,确定该交换机组中数据值最小的第二控制器,作为该交换机组的目标控制器。

在本发明实施例中,为每一交换机组确定目标控制器时,需要在每一交换机组所有交换机共有的从控制器中,确定目标控制器。进一步地,在各个交换机组中交换机共有的从控制器中,为每一个交换机组确定一个目标控制器。为了在迁移交换机组后,目标控制器不过载,需要在各个交换机组中交换机共有的,负载值低于第二负载阈值的从控制器中确定目标控制器。即可以在第二控制器中为每一交换机组确定一个目标控制器。因为第二控制器的负载值小于第二负载阈值,说明第二控制器中的每一控制器均是轻负载控制器,保证了第二控制器中的控制器不会因为增加了迁移的交换机组的负载值而过载。

具体的,在第二控制器中确定每一交换机组对应的目标控制器的方法可以为:针对每一交换机组,计算每一第二控制器针对该交换机组的数据值。延续上述示例,计算3个第二控制器针对交换机组1的数据值,在计算得到的3个数据值中,确定最小的数据值对应的第二控制器。交换机组1的目标控制器为所确定的第二控制器。针对交换机组2和交换机组3,重复上述步骤,分别确定交换机组2和交换机组3的目标控制器。

S105:向所述第一控制器和每个目标控制器发送迁移信息,以使得所述第一控制器将每一交换机组中的交换机迁移至对应的目标控制器上。

在现有技术中,是将第一控制器所控制的交换机中,负载最重的交换机迁移至目标控制器。这样导致目标控制器过载的概率增大,从而引起交换机频繁迁移的问题。在本发明实施例中,可以将交换机组中的交换机迁移至目标控制器上,目标控制器是根据上述公式计算出来的数据值,在第二控制器中确定的。这样能保证目标控制器不会过载,从而,避免交换机频繁迁移的问题。

在本发明实施例中,超级控制器向第一控制器发送迁移信息,第一控制器将接收到迁移消息后,将自己对于所有交换机组中的交换机的状态从主控制器状态变更为从控制器状态,同时,将每一交换机组中的交换机迁移至对应的目标控制器上。超级控制器向每一目标控制器发送迁移消息,目标控制器在将接收到迁移消息后,对于自身对应的交换机组,将状态由从控制器状态切换至主控制器状态。需要说明的是,对交换机组进行迁移的方法与现有技术中交换机迁移方法原理相同,在这里不对交换机组的详细迁移过程进行赘述。

在本发明实施例中,通过计算得到的待迁移负载值,确定待迁移交换机,并对待迁移交换机进行分组,得到交换机组。针对每一交换机组,确定一个目标控制器,在将所有的交换机组迁移走之后,第一控制器从过载状态变为负载均衡状态,而且,目标控制器也不会过载。在一个周期内即可实现第一控制器的负载均衡,相较于现有技术中,可能需要在几个周期之后才能实现第一控制器的负载均衡,本发明实施例提高了负载均衡的时间效率。

应用本发明实施例,可以从过载控制器中选择一个过载控制器作为第一控制器,然后,从该第一控制器所控制的交换机中,确定待迁移机交换机,再将待迁移交换机划分为交换机组,然后,为每一交换机组确定一个目标控制器,最后,将交换机组中的交换机迁移至对应的目标控制器上。相较于现有技术中,迁移针对第一控制器只迁移一个交换机,本发明实施例是将一个交换机组作为一个整体确定目标控制器,从而实现交换机组的整体迁移,进而提高了负载均衡的时间效率。

图5为本发明实施例所提供的控制器负载均衡方法的第二种流程示意图。基于图1所提供的实施例,本发明实施例所提供的一种控制器负载均衡方法,在S105之后,还包括S110、S111、S112和S113,其中,

S106:判断所述当前周期是否结束;如果否,执行S107。

在本发明实施例中,如果当前周期没有结束,则执行S107。如果当前周期结束,则进入下一个周期,可以理解为进入下一个周期,对于超级控制器来说就是当前周期。获取各个控制器负载值的周期与当前周期的时间间隔并没有直接关系,可以在进入下一个周期之后,才重新获取到各个控制器的负载值;也可以在进入到下一个周期之前,重新获取各个控制器的负载值。不管在什么时候重新获取各个控制器的负载值,针对获取的同一组负载值确定的过载控制器,一个过载控制器只能被确定为第一控制器一次。

S107:确定在所述当前周期内是否重新获取了各个控制器的负载值;如果获取,执行S108,如果没有获取,执行S109。

在当前周期内,在执行S101至S106的时,重新获取了各个控制器的负载值,使用的还是记录的各个控制器的负载值,而不是重新获取的各个控制器的负载值。

S108:将本地记录的各个控制器的负载值更新为最新获取的各个控制器的负载值,并返回执行S101。

因为在当前周期内,可能多次重新获取了各个控制的负载值,在执行S101和S106过程中,使用的是本地记录的各个控制器的负载值,在这个过程中,各个控制器的负载值很有可能发生了变化,因此,将本地记录的各个控制器的负载值更新为最新获取的各个控制器的负载值。在更新完成之后,则返回执行S101。

S109:从未被确定为所述第一控制器的过载控制器中重新选择一个过载控制器,将所述第一控制器更新为重新选择的过载控制器,并返回执行S102。

在当前周期内,如果没有重新获取各个控制器的负载值,则需要在从未被确定为第一控制器的过载中重新选择一个过载控制器,可以选择过载次重的过载控制器,当然,也可以随机在没有被确定为第一控制器的过载控制器中选择一个过载控制器,将第一控制器更新为重新选择的过载控制器,并返回执行S102。

应用本发明实施例,可以从过载控制器中选择一个过载控制器作为第一控制器,然后,从该第一控制器所控制的交换机中,确定待迁移机交换机,再将待迁移交换机划分为交换机组,然后,为每一交换机组确定一个目标控制器,最后,将交换机组中的交换机迁移至对应的目标控制器上。相较于现有技术中,迁移针对第一控制器只迁移一个交换机,本发明实施例是将一个交换机组作为一个整体确定目标控制器,从而实现交换机组的整体迁移,进而提高了负载均衡的时间效率。

下面通过一个具体实例,对本发明实施例提供的负载均衡的方法进行说明。

图6为第四种SDN网络结构的拓扑示意图,控制器A为超级控制器,控制器B、C和D均是普通控制器,每一交换机有一个主控制器,两个从控制器,在图中仅以交换机S10为例进行了示意。交换机S10的主控制器为控制器B,从控制器为控制器C和D。在本具体实例中,控制器B、C和D的第一负载阈值为8000pps(Packets per Second,数据包每秒)。采用以下4个方案进行比较,进而验证本发明实施例提供的控制器负载均衡的方法:方案Ⅰ:采用现有技术中的方案,选择负载最重的交换机进行迁移;方案Ⅱ:采用本发明实施例中的确定待迁移交换机的方法,但不对待迁移交换机进行分组处理,为每一待迁移交换机确定一个目标控制器,并进行迁移;方案Ⅲ:采用本发明实施例提供的负载均衡的方法;方案Ⅳ:采用现有技术中的方案,交换机到控制器的映射是静态映射,即不进行交换机的迁移。

在本具体实例中,首先验证的是交换机频繁迁移问题,利用方案I和方案III来验证。验证中,使用控制器负载的方差来评估网络的均衡性,控制器负载值的方差越小,则控制器的均衡性越高。在相同的条件下,针对控制器B,对方案I和方案III进行仿真,控制器B负载值的方差随时间变化的曲线图如图7所示。图中的两条曲线分别表示方案I和方案III中控制器B的负载值方差随时间的变化规律,其中,曲线201是利用方案III提供的方法,控制器B负载值的方差随时间变化的曲线,曲线202是利用方案I提供的方法,控制器B负载值的方差随时间变化的曲线。从0秒到56秒,控制器B的负载值小于第一负载阈值,在56秒时控制器B所控制交换机的主机传输指令使其发送更多数据流。于是,在56秒到57秒之间,控制器B的负载值超过了第一负载阈值。在方案I中,在控制器B控制的交换机中,选择最重的交换机来迁移,控制器B的负载在61秒时刻降低,但是由于出现了交换机的频繁迁移情况使得控制器B周期性地出现过载现象。因此,在57秒到70秒之间,控制器B的负载值方差比较大,直到70秒时降低,这时交换机的频繁迁移结束。在方案III中,该方案选择两个交换机来迁移并且同时迁移它们,控制器B的负载在61秒时刻降低。比较两个方案,在控制器B过载后,相对于方案I中控制器B的负载值的方差,方案III中的控制器B的负载值的方差较小且较稳定。因此得出,本发明实施例提供的控制器负载均衡方法可以避免交换机频繁问题。

在本发明实施例中,验证交换机整体迁移提高时间效率的问题时,将控制器过载时刻到恢复正常时刻之间的时间定义为均衡完成时间。利用方案II、III和IV中的均衡的完成时间进行验证。在相同的条件下,针对控制器B,对方案Ⅱ、方案Ⅲ和方案Ⅳ进行仿真,控制器B负载值随时间变化的曲线图如图8所示,图中的三条曲线分别表示方案II、III和IV中控制器B的负载值随时间的变化规律,其中,曲线301是利用方案IV提供的方法,控制器B负载值随时间变化的曲线,曲线302是利用方案II提供的方法,控制器B负载值随时间变化的曲线,曲线303是利用方案III提供的方法,控制器B负载值随时间变化的曲线。在图8中,控制器B负载值的单位是K(Kilo,千)pps,。在0秒到56秒之间,控制器B的负载值是小于第一负载阈值的,在56秒时,控制器B所控交换机的主机传输指令使其发送更多数据流。于是,控制器B的负载值在56秒到57秒之间超过了第一负载阈值。在方案II中,有两个交换机需要一一被迁移,这两次迁移分别在61秒和65秒时被完成。在方案III中,两个交换机同时被迁移,迁移是在61秒时完成的。在方案IV中,控制器B负载的降低是一个比较缓慢的过程,直到71秒时负载才恢复正常。因此,本发明实施例提供的控制器负载均衡方法可以提高负载均衡的时间效率。

与图1所示的方法实施例相对应,图9为本发明实施例提供的控制器负载均衡方法的第一种结构示意图,该装置包括:第一确定模块401、第二确定模块402、划分模块403、选择模块404和发送模块405,其中,

第一确定模块401,用于在当前周期内,从过载控制器中选择一个过载控制器,确定为第一控制器,其中,所述过载控制器为:根据本地记录的各个控制器的负载值和预先设置的第一负载阈值,从各个控制器中确定的控制器;

第二确定模块402,用于从所述第一控制器所控制的交换机中,确定待迁移交换机;

划分模块403,用于将所确定的待迁移交换机划分为交换机组,其中,每一交换机组中包括至少一个交换机;

选择模块404,用于针对每一交换机组,从该交换机组的所有交换机共有的从控制器中,为该交换机组选择一个从控制器,作为该交换机组的目标控制器;

发送模块405,用于向所述第一控制器和每个目标控制器发送迁移信息,以使得所述第一控制器将每一交换机组中的交换机迁移至对应的目标控制器上。

具体的,所述第二确定模块402,包括估算子模块、获取子模块、划分子模块、第一判断子模块、第一确定子模块和第二确定子模块(图中未示出)。

估算子模块,用于根据本地记录的各个控制器的负载值,估算所述第一控制器的待迁移负载值;

获取子模块,用于获取所述第一控制器所控制的各个交换机的负载值;

划分子模块,用于根据所述待迁移负载值和所获取的交换机的负载值,将所述第一控制器所控制的交换机划分为交换机集合;

第一判断子模块,用于判断所划分得到的交换机集合是否只有一个;

第一确定子模块,用于在所述第一判断子模块的判断结果为是的情况下,将划分得到的交换机集合中的交换机确定为待迁移交换机;

第二确定子模块,用于在所述第一判断子模块的判断结果为否的情况下,从划分得到的交换机集合中选择一个交换机集合,作为目标交换机集合;并将所述目标交换机集合中的交换机确定为待迁移交换机。

具体的,所述划分子模块,包括第一确定单元和划分单元(图中未示出)。

第一确定单元,用于在所获取的交换机的负载值中,确定总和最接近所述待迁移负载值的负载值组合;

划分单元,用于将所确定的负载值组合中的负载值对应的交换机划分至同一个交换机集合中。

具体的,所述估算子模块,具体用于:

根据本地记录的各个控制器的负载值,采用如下公式估算所述第一控制器的待迁移负载值;

Target=Poverloaded-Paverage

其中,Target为所述待迁移负载值,Poverloaded为所述第一控制器的负载程度,是根据本地记录的所述第一控制器的负载值和预设的第一控制器能承受的最大负载值计算得到的;Paverage为当前网络的平均负载程度,是根据本地记录的各个控制器的负载值的平均值及预设的网络能承受的最大负载值计算得到的。

具体的,所述第二确定子模块,包括获取单元、计算单元、选择单元和第二确定单元(图中未示出)。

获取单元,用于获取划分得到的每一交换机集合中的各个交换机分别到所述第一控制器的距离;

计算单元,用于针对每一交换机集合,计算该交换机集合中各交换机对应的距离的总和;

选择单元,用于选择最大的总和对应的交换机集合作为目标交换机集合;

第二确定单元,用于将所述目标交换机集合中的交换机确定为待迁移交换机。

具体的,所述划分模块403,还包括分组处理子模块、第二判断子模块、第三确定子模块和第四确定子模块(图中未示出)。

分组处理子模块,用于根据所获取的距离和预设的贪婪算法,对所确定的待迁移交换机进行分组处理,得到待迁移组;

第二判断子模块,用于判断所得到的待迁移组的数量是否大于第二控制器的数量,其中,所述第二控制器为:各个待迁移交换机共有的从控制器中,本地记录的负载值小于预先设置的第二负载阈值的从控制器;

第三确定子模块,用于在所述第二判断子模块的判断结果为是的情况下,对所得到的待迁移组进行合并处理,得到数量不大于所述第二控制器的数量的待迁移组;并将合并处理后的待迁移组确定为交换机组;

第四确定子模块,用于在所述第二判断子模块的判断结果为否的情况下,将所得到的迁移组确定为交换机组。

具体的,所述第三确定子模块,包括第三确定单元、第四确定单元、合并单元、判断单元和更新单元(图中未示出)。

第三确定单元,用于从所得到的待迁移组中选择一个待迁移组,确定为目标待迁移组;

第四确定单元,用于在除所述目标迁移组之外的其他待迁移组中,确定与所述目标迁移组合并后距离方差最小的待迁移组;

合并单元,用于将所述目标待迁移组和所确定的待迁移组合并为一个新的待迁移组;

判断单元,用于判断待迁移组的数量是否大于所述第二控制器的数量;

更新单元,用于在所述判断单元的判断结果为是的情况下,在合并后的待迁移组中选择一个待迁移组,将所述目标待迁移组更新为所选择的待迁移组;返回执行第四确定单元。

具体的,所述选择模块404,包括计算子模块和第五确定子模块(图中未示出)。

计算子模块,用于利用以下公式,针对每一交换机组,计算每一第二控制器针对该交换机组的数据值:

Cn=ω1×|Ln+Lk-LAverage|+ω2×Hk

其中,Cn为第二控制器n的数据值,Ln为第二控制器n的负载压力值、Lk为交换机组k的平均负载压力值,LAverage为当前网络平均负载压力值,Hk为交换机组k到第二控制器n的距离,ω1和ω2分别为预设权重,其和为1;

第五确定子模块,用于针对每一交换机组,确定该交换机组中数据值最小的第二控制器,作为该交换机组的目标控制器。

应用本发明实施例,可以从过载控制器中选择一个过载控制器作为第一控制器,然后,从该第一控制器所控制的交换机中,确定待迁移机交换机,再将待迁移交换机划分为交换机组,然后,为每一交换机组确定一个目标控制器,最后,将交换机组中的交换机迁移至对应的目标控制器上。相较于现有技术中,迁移针对第一控制器只迁移一个交换机,本发明实施例是将一个交换机组作为一个整体确定目标控制器,从而实现交换机组的整体迁移,进而提高了负载均衡的时间效率。

与图5所示的方法实施例相对应,图10为本发明实施例提供的控制器负载均衡方法的第二种结构示意图,该装置还包括判断模块406、第三确定模块407、第一更新模块408和第二更新模块409,其中,

判断模块406,用于判断所述当前周期是否结束;

第三确定模块407,用于在所述判断模块406的判断结果为否的情况下,确定在所述当前周期内是否重新获取了各个控制器的负载值;

第一更新模块408,用于在所述第三确定模块407的确定结果为获取的情况下,将本地记录的各个控制器的负载值更新为最新获取的各个控制器的负载值,并返回执行所述第一确定模块401;

第二更新模块409,用于在所述第三确定模块407的确定结果为没有获取的情况下,从未被确定为所述第一控制器的过载控制器中重新选择一个过载控制器,将所述第一控制器更新为重新选择的过载控制器,并返回执行所述第二确定模块402。

应用本发明实施例,可以从过载控制器中选择一个过载控制器作为第一控制器,然后,从该第一控制器所控制的交换机中,确定待迁移机交换机,再将待迁移交换机划分为交换机组,然后,为每一交换机组确定一个目标控制器,最后,将交换机组中的交换机迁移至对应的目标控制器上。相较于现有技术中,迁移针对第一控制器只迁移一个交换机,本发明实施例是将一个交换机组作为一个整体确定目标控制器,从而实现交换机组的整体迁移,进而提高了负载均衡的时间效率。

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

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

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

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