基于深度动态贝叶斯网络的服务功能链故障诊断算法

2022-01-04 09:43王兆堃陈前斌
电子与信息学报 2021年12期
关键词:贝叶斯故障诊断物理

唐 伦 廖 皓 曹 睿 王兆堃 陈前斌

(重庆邮电大学通信与信息工程学院 重庆 400065)

(重庆邮电大学移动通信技术重点实验室 重庆 400065)

1 引言

近年来,随着用户多样化需求的不断增加,传统网络架构难以适应用户需求的变化。基于软件定义网络(Software Defined Network, SDN)和网络功能虚拟化(Network Function Virtualization,NFV)的网络切片已成为5G网络运营商以可持续的方式按需提供各种定制服务的关键技术[1-3]。在切片网络中,每个业务请求由一组提供不同网络服务的虚拟网络功能(Virtual Network Function, VNF)组成,这些VNF按一定顺序互连形成一条服务功能链(Service Function Chaining, SFC)[4]。SFC可以动态地创建、伸缩、迁移和销毁,会在更大程度上导致网络故障的发生[5]。因此,研究SFC的故障诊断是非常重要的。

目前的网络故障诊断方法主要分为基于探针[6,7]、基于模型[8,9]和基于学习[10,11]的方法。然而,基于探针的方法需要占用网络资源,更容易引发网络中的拥塞,造成服务质量下降的问题。基于模型的方法每次诊断时都需要重构网络拓扑和故障依赖图模型,在大规模网络中难以保证诊断的及时性。而基于学习的方法能够智能地对故障进行分类,但是训练数据往往不具有时效性,导致实际诊断准确度不高。

针对上述存在的问题,本文结合SFC场景的特点,提出一种基于深度动态贝叶斯网络(Deep Dynamic Bayesian Network, DDBN)的SFC故障诊断算法来研究VNF节点故障定位问题。首先,根据SFC的分层网络架构中的故障传播关系,构建故障诊断模型,采用在物理节点监测其上多个VNF性能数据的方式收集症状的高维数据。其次,考虑到基于SDN/NFV架构[12]下网络观测数据的多样性以及物理节点和VNF的空间相关性,引入深度信念网络(Deep Belief Network, DBN)模型对观测数据进行特征提取和降维,以及对故障进行初步的诊断。通过k步对比散度算法(Contrastive Divergencek, CD-k)对历史观测数据集进行近似采样以提高网络的学习效率,使用加入动量项的自适应BP算法对模型进行微调以加快模型的收敛速度。然后利用实时症状数据对模型进一步微调,得出最佳的参数模型。最后,利用故障间的时间相关性,引入动态贝叶斯网络(Dynamic Bayesian Network, DBN)实时诊断故障根源,使用1.5时间片联合树推理算法[13]对故障根源进行定位,提高诊断准确度。

2 系统模型

本文的系统模型如图1所示,由两条SFC组成的服务功能转发图,将模型细分为应用层、虚拟化层和基础设施层。应用层包括服务功能及连接服务功能的虚拟链路。虚拟化层包括NFV MANO和SDN控制器,实现资源管理、网络业务编排、故障管理等功能。基础设施层包括基础设施物理节点及其连接关系,接入网和核心网设备采用各种通用服务器,通过虚拟机实现网络功能虚拟化。在实际网络中,随着业务量和服务请求的增大,SFC的条数会增多、SFC间的共用虚拟链路和VNF也会更多,从而使得网络更加复杂。基础设施层的物理节点在实际中会受到时间和环境中的随机因素的影响而发生故障[14],通过映射关系表现为SFC的VNF节点发生故障。

图1 系统模型

3 网络模型

3.1 底层网络模型

本文将底层网络抽象为一个带权无向图GP=(NP,LP),其中NP={n1,n2,...,nm}表示通用服务器节点集合,Cm表示某一台通用服务器节点nm ∈NP的计算资源。LP={lmn|nm,nn ∈NP}表示物理链路的集合,lmn ∈LP表示通用服务器节点m,n之间的直接链路,Bmn表示lmn拥有的带宽资源。

3.2 SFC请求模型

4 问题描述

基于SDN/NFV的网络切片架构在实现网络动态灵活部署的同时,也为网络的故障诊断带来了新的挑战。

监测数据的数量和类型:切片网络中,部署的服务涉及大量的VNF和物理资源实体,而VNF和物理资源具有不同的层次和粒度。VNF种类存在多样化,导致故障原因和故障症状集合的规模随VNF的数量和类型大幅增长,需要采集更多的KPI类型和告警信息来反映系统的运行状态。然而高维化的症状数据不仅会延长诊断时间,还会导致“维度灾”的发生,降低故障诊断的精度。5G端到端切片网络所涉及的网络资源可划分为物理层、逻辑层和应用层,各层所包含的资源类型如表1所示。

表1 各层包含的资源类型

数据的一致性和弱相关性:在检测和本地化过程中,收集故障症状数据来源不同,其度量形式也不相同,并且可能存在大量的与诊断故障无关或弱相关信息。因此,在故障诊断定位之前,必须要使用有效的方式对故障症状特征进行提取和降维。

缺乏网络可见性:区别于传统网络架构下故障可以根据厂商提供的各层信息和手段进行各层独立定位,基于SDN/NFV的网络切片底层物理资源和上层服务由不同的厂商提供。通常情况下,底层基础设施的运行情况、故障发生的概率和层间映射关系对上层应用是透明的。NFV在提供按需创建、伸缩、迁移和销毁等灵活操作的同时,也会导致VNF与虚拟资源、虚拟资源和物理资源出现层间映射关系的不确定。

故障关联性:资源的切片化利用将导致共因故障的增多,更容易发生故障的干扰和传播。NFV环境中不同SFC的VNF节点可能共享同一底层物理网络资源,因而一条SFC中VNF节点存在故障往往使得映射到同一物理基础设施的其它VNF节点也表现出故障症状。另外,网络虚拟化也会带来故障传播机理的不确定性和复杂性,某VNF节点的功能故障可能是多个故障源综合作用的表现。

为应对上述问题为网络故障诊断带来的新的挑战,本文设计了一种新的故障诊断模型。在同一物理节点收集其上多个VNF节点的相关监测数据,通过MANO提供统一计算资源来分析和检测节点状态,进而根据应用层故障的VNF节点和基础设施层之间的映射关系定位故障的根源,确定SFC发生故障的具体原因。

针对分层的网络架构,使用能够在时间上因果关联并适应环境动态变化的动态贝叶斯网络来进行故障的诊断。而要使用动态贝叶斯网络进行SFC的故障诊断,必须知道SFC网络的故障依赖图。故障依赖图反映网络的层级结构和承载关系,表示故障如何在网络中传播并导致服务的崩溃,根据此找到故障的根源。故障依赖图中故障以一定概率沿着箭头方向传播,如图2所示。

图2 某网络切片故障依赖图

传统的动态贝叶斯网络主要依据专家经验构造合适的故障推理模型,然而NFV环境复杂多变,可能出现多个症状信息共同表征一个故障根源或多个故障根源综合作用于一个症状信息的情况,这些情况使得专家经验不再适用。另外,传统的模型难以应对症状数据存在的高维和弱相关等特性[15]。因此,本文引入同样基于贝叶斯网络的深度信念网络对症状数据进行降维和特征提取。

要找到检测出的故障,需要使用推理算法来定位故障根源。而在使用推理算法之前,需要依据深度动态贝叶斯网络(DDBN)搭建SFC的故障诊断模型。

5 基于DDBN的SFC故障诊断模型

5.1 DDBN模型

本文所提出的基于DDBN的SFC故障诊断算法依赖在时间上是因果关联并适应环境动态变化的动态贝叶斯网络和对高维输入数据处理良好的深度信念网络,并基于DDBN模型对SFC的故障推理关系进行了形式化,采用动态贝叶斯网络模型对高层时间关系进行建模,而在每个时间片内,使用深度信念网络模型从观测数据提取特征,如图3所示。

图3 基于DDBN的故障诊断模型

底层物理网络由N个通用服务器节点组成,映射到某一物理节点上的VNF节点个数为Hm,假设已检测出的SFC故障节点为hm ∈Hm,在每个时间片采集一次该物理节点上所有VNF节点数据,则T个时间片采集的节点数据表示为Y={Y1,...,Yt,...,YT},单个时间片采集的节点数据表示为

5.2 动态贝叶斯网络模型

本文中的动态贝叶斯网络(DBN)模型定义为(B0,B→),其中B0表示深度信念网络的在线学习阶段初始时间片的先验网络,即最初时刻基础设施层节点状态。B→表示由两个以上时间片段的贝叶斯网络组成的隐藏状态转移模型。动态贝叶斯网络(DBN)是根据观测数据Yt={y1,y2,...,ym}推导出隐变量Xt={x1,x2,...,xn}最大可能取值的概率,其中Y表示SFC虚拟节点的症状信息,具有m种可能的取值,X表示基础设施层节点状态,具有n种可能的实际结果。

设初始隐变量先验分布矩阵为π,则

动态贝叶斯网络模型经典假设下,观测和状态的联合概率由下式给出

5.3 深度信念网络模型

在本文中,首先使用3层堆叠的受限玻尔兹曼机(Restricted Boltzmann Machine, RBM)组成的多隐含层神经网络,以无监督学习的方式对网络进行贪婪的逐层训练,仅使用SFC虚拟节点历史观测数据集来学习基础设施层节点的故障高级特征。然后在3层RBM模型之上添加一个softmax层,形成深度信念网络(DBN)来对节点故障进行分类,结合标签数据进行反向的有监督微调,得出初始时间片的分类模型。

设需要学习的参数为θ,在本文的SFC场景中,θ即为需要得出的故障症状与实际故障间的概率依赖关系,即

其中,wij表示可视层节点i与隐含层节点j之间的权重,ai表示可视层节点i的偏置,bj表示隐含层节点j的偏置,n为基础设施层节点各种故障因素X的个数,m为虚拟节点症状数据Y的个数。

5.4 SFC故障诊断模型的参数学习

对于单个时间片内的SFC故障诊断模型的参数,采用深度信念网络来进行学习,通过离线和在线学习的方式进行参数的训练。

首先采集故障节点的历史观测数据集,作为训练样本,并分为标记样本S和未标记样本U。给定Y和X分别表示故障的VNF节点各种类型的症状信息和故障类型的标签输出。对于同一基础设施层节点上VNF节点的历史观测数据的集合可以表示为Q={...,Qi,...}, 其中Qi=[Yt,Yt−1,...,Yt−d+1],d表示模型输入样本的维度。然后,把无监督学习的无标记样本记为U(Y),监督学习的有标记样本记为S(Y,X),并把所有数据样本都划分为小批量数据集,以便通过批处理训练来提高深度信念网络模型的训练速度。

在对模型参数进行训练之前,采用线性的最大最小值方法对观测数据进行归一化预处理。随后,利用无标记和标记的小批量数据集来对模型进行训练,其中,无标记数据集U(Y)以无监督学习的方式对RBM的参数进行学习,使得RBM的网络概率分布可以更好地拟合训练样本。采用CD-k算法来对样本进行近似采样,通过求解对数似然函数的梯度,更新参数θ。

在得到无监督的预训练阶段的最佳模型参数之后,结合标签数据S(Y,X)进行有监督的反向微调,建立故障特征与节点状态标签之间的复杂非线性关系,从而优化模型的性能,标签值表示SFC每个VNF节点故障的真实状态。本文采用引入动量项的自适应BP算法来反向微调网络模型的整体参数,并将无监督阶段的参数作为初始化参数,其表达式为

其中,θt和θt−1分别表示第t和t-1次迭代中参数的修正量,β为动量项系数,α为学习率,∂lnL/∂lnθ为当前样本对数似然函数的梯度。模型的学习率对模型训练过程的影响很大,α值过小会导致模型收敛速度很慢,过大会导致损失函数在极小值处不停震荡甚至偏离。加入动量项后,参数的修正量就不只和当前的梯度有关,而由本次迭代的梯度和上一次迭代中的参数共同决定,可以避免训练过程出现较大的波动和局部最优解。

在使用同类型VNF节点历史观测数据得到DBN模型之后,需要使用该VNF故障节点在切片周期内的实时观测数据对模型进行实时优化。采样滑动窗口机制实时更新样本Rt=[Yt,Yt−1,...,Yt−d+1],其中d表示滑动窗口的长度,即每经过一个时间片t,引入t时刻的观测数据Yt,同时删除Yt−d,保持输入样本大小不变。不同于离线学习阶段的批处理方式,这里运用单样本集训练方式进行模型的参数优化,同时在时刻t输出故障症状为Yt−d+1:t条件下得出的基础设施层节点状态为p(Xt|Yt−d+1:t),其中Xt={x1,x2,...,xn}。然后通过T个时间片内采集的故障症状Y={Y1,...,Yt,...,YT}和基础设施层节点状态集合X={X1,...,Xt,...,XT}构造动态贝叶斯网络(DBN)模型的状态转移概率矩阵A和发射概率矩阵B。

5.5 SFC故障诊断的推理过程

利用DDBN模型进行SFC故障的推理,就是在给定故障症状的条件下,计算故障根源的概率分布,在本文中,采用1.5时间片联合树推理算法来最大化p(Xt=i|Y1:T),该算法能够实现并行局部推理计算。设JTt是时间t内的联合树,Ct是J Tt中含有It的团,Dt是J Tt中含有It−1的团,时间片中的接口节点It受到前一时间片接口It−1的影响,并且还影响下一时间片接口It+1,接口之间通过消息传播进行推理,如图4所示。

图4 1.5时间片联合树

推理的基本过程如下:

步骤1 将基于DBN的SFC故障推理模型通过执行正规化、三角化等步骤构造一个1.5时间片联合树 JTt。通过最大势搜索法把故障节点三角化建立团树,找到三角化后的最大团,每个最大团间通过两个团的交集形成的分隔节点相连形成联合树。其中每个团都有一个势函数ψ,是各个团中节点的条件概率表(Conditional Probability Table, CPT)乘积。

步骤2 信息前向传播,使JTt通过JTt−1的证据传播获取新的证据。

(1) 初始化联合树J Tt的势函数ψ。

(2) 首先对症状节点进行赋值,然后将t时间片之前的症状作为先验信息P(It−1|Y1:t−1),将症状信息收集到Ct−1,执行边缘化,得到It−1的概率分布。通过接口It−1从Ct−1向Dt传递。

综上,基于DDBN的SFC故障诊断算法的流程如图5所示。

图5 基于DDBN的SFC故障诊断算法的流程图

6 仿真与性能分析

为了验证上文提出的基于DDBN的SFC故障诊断方案的有效性,本小节对节点故障进行了仿真。

6.1 仿真设置

本实验基于Python 3.6平台进行仿真,从网络中收集VNF节点的CPU使用率、处理时延、排队时延、带宽占用率作为观测数据,通过故障注入的方式获得相应的故障症状,具体的故障类型和样本长度如表2所示。

表2 故障类型和样本长度

在底层网络构建中,物理网络拓扑随机生成,每条SFC的数据到达服从非齐次泊松分布,每条SFC存在的生命周期为600时隙,相关底层网络参数设置如表3所示。RBM的隐含层的维度分别为[256, 128, 64],sotfmax分类器的维度就是故障标签的大小。在预训练开始时,网络中各神经元采用随机初始化的方式初始化权重和偏置,通过CDk算法更新参数,其最大的迭代次数为32。由于当k=1时CD-k算法就能取得比较好的拟合效果,因此本文中k取1,其初始学习率设为0.001,批次大小为32。在反向微调阶段,模型的最大迭代次数为600,自适应BP算法的学习率为0.001、动量项系数为0.5,批次大小为64,dropout函数设为0.12,损失函数为cross entropy,误差函数目标值为0.0001。

表3 网络参数设置

6.2 结果与分析

为了验证物理节点包含的虚拟节点个数不同以及使用算法不同对诊断精度带来的影响,在本次仿真中,假设一个物理节点只运行同一种类型的切片的VNF,并对包含不同虚拟节点个数的物理节点分别使用深度动态贝叶斯网络(DDBN)、深度信念网络(DBN)和隐马尔可夫模型(HMM)算法进行了仿真验证。图6对比了不同虚拟节点个数下的诊断准确度。观测图6可以看出,随着映射到物理节点上虚拟节点个数的增加,3种算法的诊断准确度也会提高,并在虚拟节点个数为N=5时基本趋于稳定。同时DDBN算法的准确度要高于DBN和HMM算法,在N=3时,其准确度能够达到90%以上。

图6 虚拟节点个数与诊断准确度关系图

图7给出了当映射到物理节点的虚拟节点个数为N=4时,3种算法的收敛性能对比图。在600次迭代训练中,取其中60次迭代值来分析模型的收敛趋势,从图7可以看出,DDBN的算法的收敛速度要比DBN算法和HMM算法更快,这是因为DDBN算法采用自适应的学习率算法,能够更快地收敛到最优性能,并且由于使用了学习率与动量项联合控制参数优化的自适应BP算法,因此算法能够收敛到更高的精确度且其曲线震荡幅度最小。

图7 3种算法的收敛性能对比图

图8为N=4时,物理节点的每种故障类型在3种算法下的诊断准确度对比图。5种不同颜色的柱状图对应于5种不同的故障类型,从图中可以看出,当节点处于正常或端口节点故障时,由于虚拟节点观测数据显示为正常或极端异常,因此3种算法对这两种故障类型的诊断准确度都位于各自算法的较高位置。而第2种类型的故障(应用程序异常)由于是由CPU使用率、处理时延、排队时延、带宽占用率等观测数据共同反映的,因此其诊断准确度最低。

图8 5种故障类型的诊断准确度

对于SFC的故障诊断算法而言,故障定位准确度的稳定性也十分重要。本文采用测试样本对3种算法各进行10次准确率的评估,图9结果表明,由于DDBN算法采用了动态贝叶斯推理过程对在线训练进行了平滑处理和在线纠错,因此该算法的稳定性较好且能够达到平均94%左右的准确率。

图9 3种算法的稳定性

7 结束语

本文在基于SDN/NFV架构的网络切片场景下,针对SFC的故障诊断问题,提出了基于深度动态贝叶斯网络(DDBN)的SFC故障诊断算法。该算法根据SFC故障依赖关系,建立深度动态贝叶斯网络模型,使用深度信念网络来对故障症状数据进行特征提取和分类,引入加入动量项的自适应BP算法对模型进行微调以提高分类精度,最后利用动态贝叶斯网络对时间关系进行建模。仿真结果表明,该算法能够有效地诊断故障根源且具有良好的诊断准确度。

猜你喜欢
贝叶斯故障诊断物理
只因是物理
基于包络解调原理的低转速滚动轴承故障诊断
处处留心皆物理
三脚插头上的物理知识
基于贝叶斯估计的轨道占用识别方法
基于互信息的贝叶斯网络结构学习
一种基于贝叶斯压缩感知的说话人识别方法
因果图定性分析法及其在故障诊断中的应用
我不是教物理的
IIRCT下负二项分布参数多变点的贝叶斯估计