一种基于SDN的多控制器动态部署方法和系统
技术领域
本发明属于计算机网络技术领域,更具体地,涉及一种基于SDN的多控制器动态部署方法和系统。
背景技术
随着信息技术的快速发展,互联网已经渗透到人们的日常生活中,人们对互联网的需求也日渐提升。然而,传统网络架构稳定性差,且难以革新,从而阻碍了互联网发展的进程。为此,软件定义网络(Software Defined Network,简称SDN)作为一种新型网络架构于2008年被提出,并迅速获得学术界与工业界的认可。与传统网络架构的理念不同,SDN将控制权从网络设备中分离出来,并交由集中式控制器统一管理,同时还提供开放可编程接口,以简化网络配置与业务部署。
在现有的SDN网络中,当多控制器静态部署算法完成网络初始化后,网络系统中的控制器数量、部署位置以及与交换机间的映射关系将不再改变,此时,传统的基于SDN网络的静态部署算法无法适应复杂多变的网络环境。因此,研究人员将多控制器部署问题的研究内容延伸至动态部署,即通过动态改变交换机与控制器间的映射关系来保证网络系统的稳定性。
目前基于SDN的多控制器动态部署策略主要有两种:一种是最近邻算法(ShortestPath Algorithm,简称SP),即在控制器故障的情况下,将其管理的交换机集迁移至离其最近的控制器上,以完成故障恢复;另外一种是基于剩余容量的启发性算法(ResidualCapacity-based Heuristic,简称RCBH),该算法在控制器发生故障时,将其管理的交换机集迁移至当前网络系统剩余负载最多的控制器上。
然而,上述两种多控制器动态部署方法的缺陷:首先,它们均忽略了迁入控制器的容量限制,这会导致新迁入的控制器发生超载情况,从而进一步导致控制器的平均响应时延增加;此外,它们均没有考虑故障恢复后交换机与控制器间的传输距离,在二者之间传输过长的情况下,会导致控制器的平均响应时延增加。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种基于SDN的多控制器动态部署方法和系统,其目的在于,解决现有多控制器动态部署方法中存在的由于没有考虑迁入控制器的容量限制、以及忽略了故障恢复后交换机与控制器间的传输距离所引起的控制器的平均响应时延增加的技术问题。
为实现上述目的,按照本发明的一个方面,提供了一种基于SDN的多控制器动态部署方法,包括以下步骤:
(1)使用Paxos算法从与SDN网络中故障控制器相邻的多个控制器中选择一个控制器作为主节点;
(2)主节点根据SDN网络的拓扑结构、各个跟随节点的负载情况、以及故障控制器与其进行同步期间发送的消息获得故障控制器所管理的所有交换机对应的最终迁入控制器,再由跟随节点根据得到的所有交换机对应的最终迁入控制器执行交换机的迁入过程。
优选地,步骤(1)包括以下子步骤:
(1-1)与SDN网络中故障控制器相邻的控制器判断其自身是否存在超载情况,若是则过程结束,否则进入步骤(1-2);
(1-2)该控制器判断其自身的选举状态是否是未激活(No Active)状态,如果是则进入步骤(1-3),否则过程结束;
(1-3)该控制器将其选举状态设置为决策状态,向与故障控制器相邻的另一台控制器发送参与竞争主节点的信息,即选票,并接收来自于与故障控制器相邻的另一台控制器的选票;
(1-4)该控制器判断来自于与故障控制器相邻的另一台控制器的选票对应的逻辑时钟是否与其自身的逻辑时钟相同,如果不相同则进入步骤(1-5),如果相同则转入步骤(1-7);
(1-5)该控制器判断来自于与故障控制器相邻的另一台控制器的选票对应的逻辑时钟是否大于其自身的逻辑时钟,如果是则进入步骤(1-6),否则过程结束;
(1-6)该控制器将其自身的逻辑时钟设置为来自与故障控制器相邻的另一台控制器的选票对应的逻辑时钟;
(1-7)该控制器判断来自于与故障控制器相邻的另一台控制器的选票中的事务序号字段中的值是否大于该控制器向与故障控制器相邻的另一台控制器发送的选票中的对应值,如果是则进入步骤(1-9),否则进入步骤(1-8);
(1-8)该控制器判断来自于与故障控制器相邻的另一台控制器的选票中的剩余负载字段中的值是否大于该控制器向与故障控制器相邻的另一台控制器发送的选票中的对应值,将该控制器向与故障控制器相邻的另一台控制器发送的选票作为当前选票,如果是则进入步骤(1-9),否则进入步骤(1-10);
(1-9)该控制器将其自身向与故障控制器相邻的另一台控制器发送的选票替换为来自于与故障控制器相邻的另一台控制器的选票,将替换后的选票作为当前选票;
(1-10)该控制器将其自身的逻辑时钟增加一次,并且向与故障控制器相邻的另一台控制器发送当前选票,并统计当前时刻从与故障控制器相邻的所有控制器接收到的所有选票、以及当前时刻其自身发送给与故障控制器相邻的所有控制器的选票的总数量、以及每张选票中的控制器标识;
(1-11)该控制器统计具有相同控制器标识的选票的数量,从中选择选票数量最大值,并判断该选票数量最大值是否超过步骤(1-10)中统计的选票总数量的一半,如果是则进入步骤(1-12),否则返回步骤(1-3);
(1-12)该控制器判断该选票数量最大值所对应的选票中的控制器标识是否是其自身的标识,如果是则将其自身设置为主节点,否则将其自身设置为跟随节点。
优选地,逻辑时钟用于表示选票轮次,其代表选票的实时性,每进行一次广播选票,则该值递增一次。
优选地,控制器标识表示的是选票中被选举的控制器的序号。
优选地,步骤(2)包括以下子步骤:
(2-1)主节点根据故障控制器与其进行同步期间发送的消息对该故障控制器对应的交换机进行降序排序;
(2-2)设置计数器i=1;
(2-3)主节点根据降序排序的结果判断故障控制器的第i个交换机迁入一个跟随节点时,会不会使该跟随节点发生超载,如果不会,则将该跟随节点加入候选迁入控制器集合中,如果会,则针对其余跟随节点重复本步骤的过程,直到遍历完毕所有跟随节点为止,从而得到最终的候选迁入控制器集合;
(2-4)主节点从最终的候选迁入控制器集合中找出与第i个交换机传输距离最短的控制器,将该控制器作为第i个交换机的最终迁入控制器;
(2-5)设置i=i+1,并重复上述步骤(2-3),直至故障控制器对应的所有交换机均被处理完毕为止,从而得到故障控制器对应的所有交换机对应的最终迁入控制器;
(2-6)主节点将步骤(2-5)得到的所有交换机对应的最终迁入控制器下发到所有跟随节点;
(2-7)跟随节点根据主节点发送的所有交换机对应的最终迁入控制器对故障节点的所有交换机执行迁入过程,在迁入过程完成后将其自身的选举状态修改为未激活状态,并将迁入过程完毕通知发送到主节点;
(2-8)主节点在接收到来自所有跟随节点的迁入过程完毕通知后将其自身的选举状态修改为未激活状态。
优选地,主节点间隔一段时间与其相邻的所有控制器进行同步操作,同步操作期间,每个控制器会发送消息到主节点,该消息中包括有每个控制器对应的所有交换机向该控制器发送的数据包进入消息数量、以及每个控制器的当前负载。
按照本发明的另一方面,提供了一种基于SDN的多控制器动态部署系统,包括:
第一模块,用于使用Paxos算法从与SDN网络中故障控制器相邻的多个控制器中选择一个控制器作为主节点;
第二模块,用于主节点根据SDN网络的拓扑结构、各个跟随节点的负载情况、以及故障控制器与其进行同步期间发送的消息获得故障控制器所管理的所有交换机对应的最终迁入控制器,再由跟随节点根据得到的所有交换机对应的最终迁入控制器执行交换机的迁入过程。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
一、由于本发明方法的步骤(2)中充分考虑到了迁入控制器的容量限制,避免了故障恢复后迁入控制器发生超载的情况,从而减少了控制器的平均响应时延;
二、由于本发明方法的步骤(2)在满足控制器负载限制的基础上,选择了与交换机之间传输距离最短的迁入控制器,从而减少了控制器的平均响应时延。
附图说明
图1是对本发明进行模拟仿真使用的OS3E网络拓扑的初始化部署示意图。
图2示出Packet-In消息到达速率与控制器处理时延之间的关系曲线。
图3示出本发明在第一种参数条件下采用不同算法得到的控制器计算开销。
图4示出本发明在第一种参数条件采用不同算法得到的控制器平均响应时延。
图5示出本发明在第二种参数条件采用不同算法得到的控制器计算开销。
图6示出本发明在第二种参数条件采用不同算法得到的控制器平均响应时延。
图7示出本发明在第三种参数条件采用不同算法得到的控制器计算开销。
图8示出本发明在第三种参数条件采用不同算法得到的控制器平均响应时延。
图9示出本发明方法与现有的SP和RCBH算法在故障恢复时间方面的比较。
图10是本发明基于SDN的多控制器动态部署方法的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
如图10所示,本发明基于SDN的多控制器动态部署方法包括以下步骤:
(1)使用Paxos算法从与SDN网络中故障控制器相邻的多个控制器中选择一个控制器作为主节点;
本步骤具体包括以下子步骤:
(1-1)与SDN网络中故障控制器相邻的控制器判断其自身是否存在超载(Overload)情况,若是则过程结束,否则进入步骤(1-2);
具体而言,若控制器的当前负载大于其额定负载,则判断其发生超载。
(1-2)该控制器判断其自身的选举状态是否是未激活(No Active)状态,如果是则进入步骤(1-3),否则过程结束;
(1-3)该控制器将其选举状态设置为决策状态,向与故障控制器相邻的另一台控制器发送参与竞争主节点的信息,即选票,并接收来自于与故障控制器相邻的另一台控制器的选票;
(1-4)该控制器判断来自于与故障控制器相邻的另一台控制器的选票对应的逻辑时钟是否与其自身的逻辑时钟相同,如果不相同则进入步骤(1-5),如果相同则转入步骤(1-7);
具体而言,逻辑时钟指的是选票轮次,其代表选票的实时性,每进行一次广播选票,则该值递增一次;
(1-5)该控制器判断来自于与故障控制器相邻的另一台控制器的选票对应的逻辑时钟是否大于其自身的逻辑时钟,如果是则进入步骤(1-6),否则过程结束;
(1-6)该控制器将其自身的逻辑时钟设置为来自与故障控制器相邻的另一台控制器的选票对应的逻辑时钟;
(1-7)该控制器判断来自于与故障控制器相邻的另一台控制器的选票中的事务序号字段中的值是否大于该控制器向与故障控制器相邻的另一台控制器发送的选票中的对应值,如果是则进入步骤(1-9),否则进入步骤(1-8);
(1-8)该控制器判断来自于与故障控制器相邻的另一台控制器的选票中的剩余负载字段中的值是否大于该控制器向与故障控制器相邻的另一台控制器发送的选票中的对应值,将该控制器向与故障控制器相邻的另一台控制器发送的选票作为当前选票,如果是则进入步骤(1-9),否则进入步骤(1-10);
(1-9)该控制器将其自身向与故障控制器相邻的另一台控制器发送的选票替换为来自于与故障控制器相邻的另一台控制器的选票,将替换后的选票作为当前选票;
(1-10)该控制器将其自身的逻辑时钟增加一次,并且向与故障控制器相邻的另一台控制器发送当前选票,并统计当前时刻从与故障控制器相邻的所有控制器接收到的所有选票、以及当前时刻其自身发送给与故障控制器相邻的所有控制器的选票的总数量、以及每张选票中的控制器标识;
其中,控制器标识表示的是选票中被选举的控制器的序号;
(1-11)该控制器统计具有相同控制器标识的选票的数量,从中选择选票数量最大值,并判断该选票数量最大值是否超过步骤(1-10)中统计的选票总数量的一半,如果是则进入步骤(1-12),否则返回步骤(1-3);
(1-12)该控制器判断该选票数量最大值所对应的选票中的控制器标识是否是其自身的标识,如果是则将其自身设置为主节点,否则将其自身设置为跟随节点(Follower)。
(2)主节点根据SDN网络的拓扑结构、各个跟随节点的负载情况、以及故障控制器与其进行同步期间发送的消息获得故障控制器所管理的所有交换机对应的最终迁入控制器,再由跟随节点根据得到的所有交换机对应的最终迁入控制器执行交换机的迁入过程。
本步骤包括以下子步骤:
(2-1)主节点根据故障控制器与其进行同步期间发送的消息对该故障控制器对应的交换机进行降序排序;
具体而言,主节点会间隔一段时间(本步骤中是100至3000毫秒)与其相邻的所有控制器进行同步操作,同步操作期间,每个控制器会发送消息到主节点,该消息中包括有每个控制器对应的所有交换机向该控制器发送的数据包进入(Packet-in)消息数量、以及每个控制器的当前负载。
(2-2)设置计数器i=1;
(2-3)主节点根据降序排序的结果判断故障控制器的第i个交换机迁入一个跟随节点时,会不会使该跟随节点发生超载,如果不会,则将该跟随节点加入候选迁入控制器集合中,如果会,则针对其余跟随节点重复本步骤的过程,直到遍历完毕所有跟随节点为止,从而得到最终的候选迁入控制器集合;
(2-4)主节点从最终的候选迁入控制器集合中找出与第i个交换机传输距离最短的控制器,将该控制器作为第i个交换机的最终迁入控制器;
(2-5)设置i=i+1,并重复上述步骤(2-3),直至故障控制器对应的所有交换机均被处理完毕为止,从而得到故障控制器对应的所有交换机对应的最终迁入控制器;
(2-6)主节点将步骤(2-5)得到的所有交换机对应的最终迁入控制器下发到所有跟随节点;
(2-7)跟随节点根据主节点发送的所有交换机对应的最终迁入控制器对故障节点的所有交换机执行迁入过程,在迁入过程完成后将其自身的选举状态修改为未激活状态,并将迁入过程完毕通知发送到主节点;
(2-8)主节点在接收到来自所有跟随节点的迁入过程完毕通知后将其自身的选举状态修改为未激活状态。
实验结果与分析
以下对本发明所提出的方法进行仿真分析,实验环境如下表1所示。
表1
OS3E网络拓扑的初始化部署具体如图1所示。
如图1所示,每台控制器分别管理着不同的交换机集。其次,每台交换机还需分别与一台主机相连,用于在网络系统中产生数据流,促使交换机产生Packet-In消息并发送至对应的控制器,进而改变控制器的负载大小。此外,由于本发明的方法依赖于从属(Slave)态到宿主(Master)态的转换,所以各交换机除了需要连接如图1所示的宿主态控制器以外,还需将邻域控制器置为从属态控制器。
为使到达控制器的Packet-In消息数量增大,禁用了Floodlight控制器安装流表的功能。因此,每当交换机接收到数据报文时,都会给相连的宿主态控制器发送Packet-In消息,从而改变控制器的负载大小。
由于控制器负载主要由Packet-In消息的计算开销组成,为确定控制器计算能力的上限,首先通过实验分析Packet-In消息到达速率对控制器处理时延的影响。实验结果如图2所示。
从图2可以看出,当Packet-In消息到达速率小于300KB/s时,控制器处理时延较低,保持在50ms左右;但当Packet-In消息到达速率大于300KB/s时,控制器处理时延陡增。由此可得,控制器计算能力的上限约为300KB/s。为避免故障恢复后控制器发生超载,首先,需要保证控制器的剩余计算能力能够满足迁入交换机的计算开销,同时,还要为控制器预留冗余计算能力,以应对交换机请求数量增加的情况。本发明假设交换机的请求率在故障恢复前后不会发生太大的改变,因此将本发明的方法的负载上限因子pul设为0.9。
接下来,为了说明本发明的方法的有效性,将其与多个应用于故障恢复的动态部署算法进行对比,如下表2所示:
表2
令故障控制器的负载为Ldmg、故障控制器的最近邻控制器的负载为Lsp和当前剩余容量最大的控制器负载为Lrcb。由于SP和RCBH算法的性能都依赖于故障控制器的负载,所以为了全面地分析本发明的方法的有效性,设计了三组实验,并分别在以下三种条件下进行:Ldmg<Lsp、Lsp<Ldmg<Lrcb、Ldmg>Lrcb。在这三组实验中,均令c5为故障控制器,并将其故障发生点设置为20s。具体实验结果如下:
1)Ldmg<Lsp
令各控制器的Packet-In消息到达速率分别为c0=100KB/s,c1=110KB/s,c2=120KB/s,c3=130KB/s,c4=140KB/s,c5=150KB/s。得到的各控制器计算开销对比如图3所示。
由图3可知,当Ldmg<Lsp时,SP、RCBH以及本发明的方法(即图中的HADD-PA算法)执行后均不存在超载控制器。
因此,如图4所示,可以看到控制器平均响应时延均没有显著增加,但本发明的方法的控制器平均响应时延要比SP算法低12.5%,比RCBH算法低20.6%。这是因为SP算法在故障恢复期间将故障控制器下的交换机集迁移至最近邻控制器上,其中最近邻是指控制器间的距离,而不是交换机与迁入控制器间的距离。而RCBH算法则将故障控制器下的交换机集迁移至当前网络系统中剩余容量最多的控制器上,可见该算法同样没有考虑交换机与迁入控制器间的距离。但本发明的方法在保证迁入控制器不超载的同时,将各交换机迁移至离其最近的邻域控制器上,因此控制器平均响应时延要低于其余两种算法。
2)Lsp<Ldmg<Lrcb
令各控制器的Packet-In消息到达速率分别为c0=120KB/s,c1=130KB/s,c2=140KB/s,c3=150KB/s,c4=160KB/s,c5=170KB/s。得到的各控制器计算开销对比如图5所示。
由图5可知,当Lsp<Ldmg<Lrcb时,SP算法执行后存在超载控制器。因此,如图6所示,SP算法的控制器平均响应时延明显高于其它两种算法,其中比RCBH算法高出61.6%,比本发明的方法高出84.4%。这是因为当Packet-In消息到达速率超过控制器计算能力的上限时,控制器处理时延会显著增大,进而影响控制器平均响应时延。
3)Ldmg>Lrcb
从图7与图8可以看出,当Ldmg>Lrcb时,SP与RCBH算法执行后均存在超载控制器,因此二者的控制器平均响应时延要明显高于本发明的方法,其中SP算法要高出82.8%,RCBH算法要高出88.3%。由此可见,当故障控制器负载较高时,本发明的方法能够较为均衡的分配交换机集,以避免超载控制器的出现。
此外,还将本发明的方法的故障恢复时间与SP和RCBH算法进行比较。实验结果图9所示。如图9所示,本发明的方法的故障恢复时间要大于SP与RCBH算法。这是因为本发明的方法在故障恢复期间既需在各邻域控制器间进行多次网络通信以选举出主节点,又要求主节点执行TOA-LC策略以完成分配结果的计算,然后再由邻域控制器执行交换机迁移操作。而SP与RCBH算法可根据现有知识执行交换机迁移操作,因此故障恢复时间相对较短。
综上所述,相较于SP与RCBH算法,本发明的方法故障恢复时间较长,但是算法执行后的网络系统不会出现控制器超载的情况。其次,本发明的方法考虑了交换机与迁入控制器间的传输时延,因此控制器平均响应时延要较其余两种算法低。综上所述,本发明的方法实现了本发明的发明目的。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。