有效
一种基于SDN的多控制器动态部署方法和系统
李方敏、邱溢文、旷海兰、彭小兵、栾悉道、杨志邦、张韬
湖南中勘北斗研究院有限公司
摘要
本发明公开了一种基于SDN的多控制器动态部署方法,包括:使用Paxos算法从与SDN网络中故障控制器相邻的多个控制器中选择一个控制器作为主节点,主节点根据SDN网络的拓扑结构、各个跟随节点的负载情况、以及故障控制器与其进行同步期间发送的消息获得故障控制器所管理的所有交换机对应的最终迁入控制器,再由跟随节点根据得到的故障控制器下所有交换机所对应的最终迁入控制器执行交换机的迁入过程。本发明能解决现有多控制器动态部署方法中存在的由于没有考虑迁入控制器的容量限制、以及忽略了故障恢复后交换机与控制器间的传输距离所引起的控制器的平均响应时延增加的技术问题。
1.一种基于SDN的多控制器动态部署方法,其特征在于,包括以下步骤:(1)使用Paxos算法从与SDN网络中故障控制器相邻的多个控制器中选择一个控制器作为主节点;步骤(1)包括以下子步骤:(1-1)与SDN网络中故障控制器相邻的控制器判断其自身是否存在超载情况,若是则过程结束,否则进入步骤(1-2);(1-2)该控制器判断其自身的选举状态是否是未激活状态,如果是则进入步骤(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)主节点根据SDN网络的拓扑结构、各个跟随节点的负载情况、以及故障控制器与其进行同步期间发送的消息获得故障控制器所管理的所有交换机对应的最终迁入控制器,再由跟随节点根据得到的所有交换机对应的最终迁入控制器执行交换机的迁入过程;步骤(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)主节点在接收到来自所有跟随节点的迁入过程完毕通知后将其自身的选举状态修改为未激活状态。
2.根据权利要求1所述的多控制器动态部署方法,其特征在于,逻辑时钟用于表示选票轮次,其代表选票的实时性,每进行一次广播选票,则该值递增一次。
3.根据权利要求2所述的多控制器动态部署方法,其特征在于,控制器标识表示的是选票中被选举的控制器的序号。
4.根据权利要求3所述的多控制器动态部署方法,其特征在于,主节点间隔一段时间与其相邻的所有控制器进行同步操作,同步操作期间,每个控制器会发送消息到主节点,该消息中包括有每个控制器对应的所有交换机向该控制器发送的数据包进入消息数量、以及每个控制器的当前负载。
5.一种基于SDN的多控制器动态部署系统,其特征在于,包括:第一模块,用于使用Paxos算法从与SDN网络中故障控制器相邻的多个控制器中选择一个控制器作为主节点;第一模块包括:第一子模块,用于与SDN网络中故障控制器相邻的控制器判断其自身是否存在超载情况,若是则过程结束,否则进入第二子模块;第二子模块,用于该控制器判断其自身的选举状态是否是未激活状态,如果是则进入第三子模块,否则过程结束;第三子模块,用于该控制器将其选举状态设置为决策状态,向与故障控制器相邻的另一台控制器发送参与竞争主节点的信息,即选票,并接收来自于与故障控制器相邻的另一台控制器的选票;第四子模块,用于该控制器判断来自于与故障控制器相邻的另一台控制器的选票对应的逻辑时钟是否与其自身的逻辑时钟相同,如果不相同则进入第五子模块,如果相同则转入第七子模块;第五子模块,用于该控制器判断来自于与故障控制器相邻的另一台控制器的选票对应的逻辑时钟是否大于其自身的逻辑时钟,如果是则进入第六子模块,否则过程结束;第六子模块,用于该控制器将其自身的逻辑时钟设置为来自与故障控制器相邻的另一台控制器的选票对应的逻辑时钟;第七子模块,用于该控制器判断来自于与故障控制器相邻的另一台控制器的选票中的事务序号字段中的值是否大于该控制器向与故障控制器相邻的另一台控制器发送的选票中的对应值,如果是则进入第九子模块,否则进入第八子模块;第八子模块,用于该控制器判断来自于与故障控制器相邻的另一台控制器的选票中的剩余负载字段中的值是否大于该控制器向与故障控制器相邻的另一台控制器发送的选票中的对应值,将该控制器向与故障控制器相邻的另一台控制器发送的选票作为当前选票,如果是则进入第九子模块,否则进入第十子模块;第九子模块,用于该控制器将其自身向与故障控制器相邻的另一台控制器发送的选票替换为来自于与故障控制器相邻的另一台控制器的选票,将替换后的选票作为当前选票;第十子模块,用于该控制器将其自身的逻辑时钟增加一次,并且向与故障控制器相邻的另一台控制器发送当前选票,并统计当前时刻从与故障控制器相邻的所有控制器接收到的所有选票、以及当前时刻其自身发送给与故障控制器相邻的所有控制器的选票的总数量、以及每张选票中的控制器标识;第十一子模块,用于该控制器统计具有相同控制器标识的选票的数量,从中选择选票数量最大值,并判断该选票数量最大值是否超过第十子模块中统计的选票总数量的一半,如果是则进入第十二子模块,否则返回第三子模块;第十二子模块,用于该控制器判断该选票数量最大值所对应的选票中的控制器标识是否是其自身的标识,如果是则将其自身设置为主节点,否则将其自身设置为跟随节点;第二模块,用于主节点根据SDN网络的拓扑结构、各个跟随节点的负载情况、以及故障控制器与其进行同步期间发送的消息获得故障控制器所管理的所有交换机对应的最终迁入控制器,再由跟随节点根据得到的所有交换机对应的最终迁入控制器执行交换机的迁入过程;第二模块包括:第十三子模块,用于主节点根据故障控制器与其进行同步期间发送的消息对该故障控制器对应的交换机进行降序排序;第十四子模块,用于设置计数器i=1;第十五子模块,用于主节点根据降序排序的结果判断故障控制器的第i个交换机迁入一个跟随节点时,会不会使该跟随节点发生超载,如果不会,则将该跟随节点加入候选迁入控制器集合中,如果会,则针对其余跟随节点重复本子模块的过程,直到遍历完毕所有跟随节点为止,从而得到最终的候选迁入控制器集合;第十六子模块,用于主节点从最终的候选迁入控制器集合中找出与第i个交换机传输距离最短的控制器,将该控制器作为第i个交换机的最终迁入控制器;第十七子模块,用于设置i=i+1,并重复上述第十五子模块,直至故障控制器对应的所有交换机均被处理完毕为止,从而得到故障控制器对应的所有交换机对应的最终迁入控制器;第十八子模块,用于主节点将第十七子模块得到的所有交换机对应的最终迁入控制器下发到所有跟随节点;第十九子模块,用于跟随节点根据主节点发送的所有交换机对应的最终迁入控制器对故障节点的所有交换机执行迁入过程,在迁入过程完成后将其自身的选举状态修改为未激活状态,并将迁入过程完毕通知发送到主节点;第二十子模块,用于主节点在接收到来自所有跟随节点的迁入过程完毕通知后将其自身的选举状态修改为未激活状态。



