一种多控制器SDN网络中控制器故障处理策略

2021-04-22 12:45:36陈泳洁
桂林电子科技大学学报 2021年6期
关键词:决策树交换机控制器

陈泳洁, 王 勇, 叶 苗

(1.桂林电子科技大学 信息与通信学院,广西 桂林 541004;2.桂林电子科技大学 计算机与信息安全学院,广西 桂林 541004;3.桂林电子科技大学 广西云计算与大数据合作创新中心,广西 桂林 541004)

近年来,随着互联网应用的爆发式增长,网络数据量也以指数形式不断增加。《2019中国网络状况白皮书》指出,截至2019年6月,中国网民规模达8.54亿,互联网普及率为61.2%,人均每周在线时长27.9小时。面对如此大规模的网络数据量,传统网络架构面临部署管理、流量控制困难,设备不可编程的问题。美国斯坦福大学Nick McKeown教授和他的团队在2009年提出的一种新型网络创新架构——软件定义网络(software defined network,简称SDN)能够应对由于网络数据的大量增加而出现的单一广播域过于庞大,计算资源无法快速上线,网络时延过大,横向扩展能力不足,业务模型流量不清晰等问题。SDN将传统网络中的控制平面和数据平面分离,由控制层实施集中式控制,即SDN控制器;转发层通过流表进行快速转发,即SDN交换机。SDN控制器作为统一的控制平面,承担着举足轻重的作用,一旦SDN控制器出现故障或者性能无法满足交换机的转发需求,都会使整个网络陷入瘫痪。为了解决这些问题,很多学者采用多个控制器协同工作来实现逻辑集中式控制器的功能[1-3]。然而,受经济因素的制约,大规模网络中普遍采用低成本的网络设备[4],设备故障的情况依旧时有发生。一旦控制器发生故障,其管理域下的交换机便不能实时更新流表,以至于无法应对网络的快速变化,轻则网络拥堵,重则网络瘫痪[5]。针对控制层故障问题,以往的研究方向主要包括设置备用控制器和交换机迁移2种。Fonseca等[6]设计了CPRecovery组件,用于控制器间的信息同步,尽可能地减少网络开销和时延,以保证网络具有足够的可靠性。Heller等[7]按每3个控制器部署一个备份控制器的方法来解决控制器故障问题。该方法虽然能够解决控制器故障带来的网络瘫痪问题,但占用网络资源过多,对于恢复后控制器的生存性也未考虑。Zhang等[8]提出了一种基于生存性模型的控制器备份方法。该方法考虑了网络延迟,为每个主控制器选择备用控制器,以提高控制器故障恢复后多控制器网络的生存力,不仅保证了控制器故障能够有效恢复,且可以减少网络故障带来的链路损失。这种设置备份控制器的方法虽然能够有效解决故障问题,但增加了运营成本,同时也必然导致控制层与数据层之间连接链路的增加,链路故障率随之升高[9]。为了在不过多增加成本的情况下提高网络的可靠性,学者们提出了在不需要部署更多备用控制器的情况下处理控制器故障问题[10]的方法。Zhang等[11]将已有的控制器分为重要控制器和普通控制器2级,对重要控制器实施专用保护,并提出一种模拟退火算法,用于普通控制器从其他域(包括重要控制器和普通控制器)选择备用控制器,当故障发生后,将故障控制器下的交换机迁移至其他控制器域内。AL-Tam等[12]针对数据流提出一种动态的分数级迁移分配模型,允许多个控制器处理来自交换机的流,实验结果表明,该模型与传统模型相比,交换机控制器分配的稳定性提高了约91%。Chan等[13]提出一种多域SDN的控制器故障恢复机制,利用循环心跳包检测控制器是否有故障,一旦检出故障,则以最小化时延为目标选择接替的控制器,并将故障控制器域下的交换机迁移至接替控制器域下。

综上所述,现有的多域SDN控制器故障处理策略大多粗放,方法虽然不少,但目标过于单一,应综合考虑多种指标来选取目标控制器,并保证控制层恢复后仍具有良好的整体性能。因此,为了提高多控制器SDN的网络服务可靠性,通过扩展SDN控制器的北向接口,设计了一个基于FPGA的动态资源协调平台,以集中管理SDN控制器。利用该平台对控制器的状态进行判断,并提出一种改进的随机森林(improved random forest,简称IRF)算法,对故障控制器域下交换机的接替控制器进行选择。

1 多控制器协同模型

基于FPGA的SDN多控制器协同模型如图1所示。该模型使用了层次化设计,将一个大型网络划分为多个域,每个域中的交换机由一个控制器控制,每个控制器分别获取所在子网的网络拓扑,控制层的北向接口与FPGA相连,并与FPGA保持连接和心跳,不仅可以同步全局网络拓扑,而且还能减少控制器间的通信开销,提高控制器的工作效率。

图1 基于FPGA的SDN多控制器协同模型

2 控制器故障处理策略

SDN控制器故障恢复的主要思路[14]是更换控制器与交换机之间的映射关系。为适应网络数据量的增长速度,在SDN网络的控制层部署多个控制器,当某控制器发生故障,将其域下的交换机迁移至其余工作控制器域下,继续完成交换机数据的转发工作。该策略流程如图2所示。

图2 控制器故障处理策略框架

2.1 故障检测模块

FPGA和各个控制器之间采用心跳包的方式检测故障,通过以固定时间的周期向对方发送心跳数据包来检测对方是否存活[15],设定每3 s发送一次心跳报文,用于确定控制器是否正常工作。心跳报文格式如图3所示,后56 bit为数据部分,其中type=4′b0001,data_len为数据长度,padding全为零,用于数据占位,Controller_ID为控制器序号标识。若FPGA未能在规定时间内收到某个控制器的心跳包,则判断该控制器发生故障,此时转至故障恢复模块,若在规定时间内收到了该控制器的心跳包,则重置定时器。

图3 心跳报文格式

2.2 故障恢复模块

该模块采用IRF算法对故障控制器域下的交换机进行重新分配。随机森林是一种灵活、便于使用的机器学习算法,它由多个二叉决策树(binary decision trees,简称BDTs)组成,常被用来进行分类和回归任务。在训练过程中,每个决策树都是由同一训练集的不同子抽样数据建立的。算法流程如下:

1)从原始数据集X中放回地随机抽取x个样本。

2)每个样本有M个特征,从中抽取m个特征。

3)建立决策树。决策树的每个分支都从m个特征中选择1个特征,作为该分支的分裂特征,直至m个特征全部用完,得到每棵树的匹配标签ci。

4)重复步骤1)~3),建立n个决策树。

5)对每棵决策树的匹配标签进行投票,票数最高的作为分类结果,输出Ci。

利用这一过程,为交换机选择接替控制器,同时为适应多控制器SDN网络的应用场景,修改最后的投票机制,将每棵数的分类结果都进行输出,并通过累加得到每个分类结果的出现次数,从大至小依次排列,当一个控制器发生故障,便可以另外选择一个出现次数接近的控制器接管。另一方面,由于FPGA能够并行地实现定制流水线任务[16],对于拥有多棵不同决策树的随机森林来说,FPGA可以快速地计算出结果。IRF算法伪代码如下。

算法1交换机迁移

输入:交换机特征{f1,f2,f3,f4};输出:目标控制器{c0,…,ck,cn}∈C

主程序:

1.cal(tree[0,1,…,m],node[0]);

2.if(left[0,1,…,m]==1)

{cal(tree[0,1,…,m],node[1]);goto 3}

if(right[0,1,…,m]==1)

{cal(tree[0,…,m],node[2]);goto 4}

3.if(left[0,…,m]==1)

{cal(tree[0,…,m],node[3]);}

if(right[0,…,m]==1)

{cal(tree[0,…,m],node[4]);}

4.if(left[0,…,m]==1)

{cal(tree[0,…,m],node[5]);}

if(right[0,…,m]==1)

{cal(tree[0,…,m],node[6]);}

子程序:

cal(tree_id,node_id)

if(fi≤condition[tree_id][node_id])

{if(left_end==1)

{result[tree_id]=class[tree_id][node_id][left]};

else{left=1;}}

else{

if(right_end==1)

{result[tree_id]=class[tree_id][node_id][right]};

else{right=1;}}

交换机特征信息按如图4所示的格式输入,前56 bit与心跳报文数据部分格式一致,type=4′b0100;后128 bit中Switch_ID为交换机序号,feature_0~feature_3分别代表交换机的x坐标、y坐标、故障率及吞吐量。由于时延与节点间的地理位置有关,用交换机到控制器之间的距离替代时延[13]。模型参数按如图5所示格式输入,type=4′b0010,tree_id为树的序号,node_id为节点号,node_left_right用以判断决策树是否结束,feature_num表示当前节点采用的是哪个分类特征,condition_value为该特征在当前节点的判断条件,left_class、right_class分别表示当分类终止时左右分支的分类结果。

图4 交换机特征信息

图5 模型参数

3 仿真实验与分析

3.1 实验环境及参数设定

为验证算法的有效性,分别使用Python 3.6和ModelSim 10.6进行仿真验证。实验拓扑[17]通过MATLAB仿真软件采用改进的Salama网络拓扑随机生成算法生成,其抽象结构示意图如图6所示。该网络拓扑限定在10 km×10 km的范围内,节点数为25,用于部署控制器和交换机。设置节点故障率为[0.02,0.04]区间内的随机数,节点吞吐量为[30,100]区间内的随机数。Salama模型综合考虑网络的连通性和平均节点度,通过概率Pl决定2个节点i、j之间是否存在一条直接相连的链路。整个拓扑共有42条链路。

图6 网络拓扑示意图

(1)

其中:α、β为网络特征参数,α为短边相对长边的比例,β为边的密度,均设定为5;li,j为i、j之间的几何距离;L为拓扑图中所有节点距离的最大值。

在4个SDN管理域对SDN控制器进行故障监控和故障恢复。实验环境配置如表1所示。

表1 实验环境配置

3.2 实验结果分析

使用Wireshark[18]抓包软件进行心跳报文的抓取,以验证故障检测模块的有效性。一条完整的心跳报文如图7所示,其中每个字段大小都为一个字节,Controller_ID=0x01,表示该条心跳报文是由控制器C1发送的。

图7 Wireshark抓包

使用ModelSim仿真软件进行硬件仿真,分别设置树的个数为5、10、20,并在软件端使用Python语言编写程序进行仿真。软件端算法的执行时间可以利用代码直接输出,硬件端算法的执行时间由系统时钟频率决定,并用时间加速比衡量硬件端的加速效果,即

(2)

其中:TS为软件端算法的执行时间;TH为硬件端算法的执行时间。软硬件算法执行时间对比如表2所示。从表2可看出,算法的执行时间与决策树个数成正比,硬件端算法比软件端算法平均执行时间降低2个数量级,能更好地适应高速网络传输的需要。因此,该基于FPGA的动态资源协调平台高速有效。

表2 软硬件算法执行时间对比 μs

4 结束语

针对已有的多管理域SDN故障处理算法目标主要针对链路且多是从软件方面对算法进行验证的现状,设计了基于FPGA的多控制器协同平面,采用固定时间间隔发送心跳信息的方式对控制器的状态进行监测,当控制器出现故障后,通过提出的综合考虑交换机-控制器时延、交换机故障率、交换机吞吐量的故障恢复算法进行故障处理。仿真结果表明,本算法能及时发现故障,并对其域下的交换机进行快速迁移,恢复网络的正常运行。

猜你喜欢
决策树交换机控制器
一种针对不均衡数据集的SVM决策树算法
修复损坏的交换机NOS
决策树和随机森林方法在管理决策中的应用
电子制作(2018年16期)2018-09-26 03:27:06
使用链路聚合进行交换机互联
基于决策树的出租车乘客出行目的识别
基于肺癌CT的决策树模型在肺癌诊断中的应用
PoE交换机雷击浪涌防护设计
模糊PID控制器设计及MATLAB仿真
MOXA RTU控制器ioPAC 5542系列
自动化博览(2014年9期)2014-02-28 22:33:17
罗克韦尔自动化交换机Allen-Bradley ArmorStratix 5700
自动化博览(2014年9期)2014-02-28 22:33:16