一种基于灰色马尔可夫算法的SDN多控制器故障检测算法的制作方法

文档序号:19320544发布日期:2019-12-04 00:29阅读:492来源:国知局
一种基于灰色马尔可夫算法的SDN多控制器故障检测算法的制作方法

本发明涉及一种sdn多控制器故障检测算法,具体涉及一种基于灰色马尔可夫算法的sdn多控制器故障检测算法。



背景技术:

随着社会的进步,网络无处不在,伴随着云计算及其相关业务的发展,服务器的应用需求产生了爆炸性的增长。受制于空间、能源等相关因素的影响,单纯使用物理服务器已经无法满足使用需求的增长。随着社交网络、移动互联网、物联网等业务领域的快速发展,大数据正日益成为当前的焦点,其面向的海量数据处理也对网络提出了更高的要求。传统的网络难以满足云计算、大数据,以及相关业务提出的灵活的资源需求。为了解决以上问题,软件定义网络sdn(softwaredefinednetworking,sdn)由此而生,sdn的本质是网络软件化,提升网络可编程能力,是一次网络架构的重构。sdn将比原来网络架构更好、更快、更简单的实现各种功能特性。sdn打破了传统网络设备的封闭性,使整个网络变得更加灵活开放,以此来不断适应更新的业务和应用需求,其系统架构分为一个集中式的控制平面和分布式的数据平面,控制层相当于人的大脑,转发层相当于人的四肢,应用层对应于各种创新的想法,大脑在想法的驱动下对四肢进行指挥以达到想要的效果;南向接口和北向接口则分别相当于人体内的神经和脑电波,负责进行上传下达。

在sdn架构中,控制平面掌控全局网络的资源,主要控制数据平面的转发等功能,尤其重要,所以控制平面的性能对整体网络的性能有直接的影响。作为控制平面的核心组件,控制器的性能关乎整个sdn网络的性能表现,随着sdn部署的速度越来越快,控制器性能的好坏成为社会各界所关注的重点。网络采用单控制器体系结构,即只有一个控制器实现全网的集中控制。这种结构虽然实现简单,但是没有提供处于核心层的控制面的错误容忍能力。比如控制面遭受恶意攻击后整个网络被控制。同时随着网络规模的迅速扩大,由于单控制器的扩展性较差,也限制了其发展,其处理性能的限制将成为整个网络的性能瓶颈,进而使整个网络性能下降,甚至造成全网瘫痪。因此处于发展期的sdn从单控制器节点逐步开始支持分布式的多控制器架构,以满足日益增长的网络规模需要,相比单控制器而言,多控制器可以保证高可用性,有效避免了单控制器单点故障的问题,在某个控制器发生故障时,不会影响整体网络的运行。虽然多控制器的架构由此出现,但是随着网络规模的逐渐扩大,由于控制软件系统设计不完善或遭到网络攻击,人为操作失误,网络协议因素,或者自然因素等都是引起网络故障的主要原因,网络中的许多故障仍是不可避免的,当前在控制层面的故障检测方面仍然没有提供行之有效的解决方案,提高控制平面的高可用性是保障全网性能稳定的关键,因此如何解决控制节点故障使网络更加稳定可靠是当前迫切需要解决的问题。

目前对于多域sdn中控制器的故障检测方法大致分为两种,一种是在控制节点外采用外部故障检测器,通过外部故障检测器进行各控制节点的故障检测,但是这类方法在实现检测器与控制器之间的串口时相当繁琐,并且在多数应用场景中故障检测器都只有一个,同样可能存在单点故障的可能,检测作业将在检测器发生故障时无法进行,故障检测点不可靠。而如果再增加一个备份检测器,整个网络的开销也会非常大;另一种故障检测方法是利用控制器的剩余资源,控制节点间通过信息交互进行检测,以此判断被检测方的状态。目前对于多域sdn中控制器的故障检测通常是采用固定超时时间间隔的方式,但是很难定义固定的超时延迟,其长度可能会影响故障检测时间,无法及时的发现故障点。考虑到网络的动态性,控制平面中数据流量处于实时变动的状态,既有控制节点之间同步网络的信息也会存在周期性的心跳检测信息等。因此当网络流量较大时,控制节点之间的链路拥塞不仅会导致数据同步不及时,还可能阻塞心跳信号,无法及时准确的探测控制节点的状态信息。因此需要根据网络的动态变化去预测下一次消息的到达时间,不断调整时间间隔,实现快速判断。



技术实现要素:

本发明的目的在于克服上述现有技术中存在的缺点,提供一种基于灰色马尔可夫算法的sdn多控制器故障检测算法,该算法相比传统方法考虑到控制器利用自身资源检测故障的同时,也考虑了控制器对网络的自适应性,通过双向故障检测机制和灰色马尔可夫算法实现了对sdn网络中多控制器故障的快速检测,提高了检测效率。

为实现上述目的,本发明采用以下技术方案:

一种基于灰色马尔可夫算法的sdn多控制器故障检测算法,包括以下步骤:

a)根据双向故障检测机制确定故障点;

b)构建灰色预测模型,并根据灰色马尔可夫预测模型,预测下一次心跳信息到达值;

c)建立灰色马尔可夫预测模型,并根据灰色马尔可夫预测模型对下一次心跳信息到达值进行修正,然后根据网络的动态变化,自适应的调整修正后的心跳信息到达值的门限值,从而实现故障检测。

本发明进一步的改进在于,步骤a)的具体过程如下:

假设sdn控制平面有n个控制节点,控制器集合c={c1,c2,…,cn},正常的情况下,控制节点ci以固定时间间隔向其相邻控制节点ci-1和ci+1发送心跳检测信息,ci-1和ci+1在心跳周期间隔内都会收到来自ci的信息并做出回应,如果ci-1和ci+1在固定时间间隔内都没有收到心跳检测包,则将控制器ci置于怀疑状态,此时ci-1和ci+1主动向ci发送心跳信息,若ci仍未回复,则判断ci为故障点。

本发明进一步的改进在于,步骤b)的具体过程如下:

对心跳信息到达时间序列x(0)进行级比检验:k=2,3,...,n;如果所有的级比都落在可容覆盖区间内,则根据进程pa所发送的心跳信息到达时间序列x(0)建立灰色预测模型gm(1,1);否则,对心跳信息到达时间序列x(0)做变换处理,使级比都落在可容覆盖区间内;

将心跳信息到达时间序列对x(0)作一次累加,从而得到一次累加生成序列:

x(1)={x(1)(1),x(1)(2),x(1)(3),…,x(1)(n)},

其中,x(1)(1)=x(0)(1),

令z(1)(k)为x(1)的紧邻均值生成序列:z(1)(k)=(z(1)(2),z(1)(3),...,z(1)(n)),其中,z(1)(k)=0.5x(1)(k)+0.5x(1)(k+1),k=1,2,...,n-1;灰色预测模型包括白化微分方程和灰化方程,建立灰色预测模型的灰色微分方程为:

x(0)(k)+az(1)(k)=b;

其中,a为发展系数,b为灰色作用量;

为待估参数向量,即则灰色微分方程的最小二乘估计参数列满足:

其中

再建立灰色微分方程的白化方程:

对灰色微分方程进行求解可得,于是得到预测值:从而相应地得到灰度预测方程:

本发明进一步的改进在于,心跳信息到达时间序列x(0)通过以下过程得到:

控制器a,b,c,d两两依次环形相连,控制器a与控制器b,控制器b与控制器c,控制器c与控制器d以及控制器d与控制器a之间互相发送心跳检测信息,在控制器a和控制器b上分别存在进程pa与进程pb,进程pa向进程pb以固定时间间隔t发送心跳信息,用序列x(0)表示心跳信息到达时间序列,x(0)={x(0)(1),x(0)(2),x(0)(3),…,x(0)(n)},其中,x(0)(n)为第n个心跳信息的到达时间。

本发明进一步的改进在于,变换处理为平移变换:y(0)(k)=x(0)(k)+c,k=1,2,...,n,取常数c使级比都落在可容覆盖区间内。

本发明进一步的改进在于,步骤c)中建立灰色马尔可夫预测模型,并根据灰色马尔可夫预测模型对下一次心跳信息到达值进行修正的具体过程如下:

c1)定义心跳信息到达时间灰色预测相对误差q(t):

由此得到相对误差序列y(0)={y(0)(1),y(0)(2),y(0)(3),…,y(0)(n)},将心跳信息到达时间灰色预测相对误差序列划分为n个状态,任一状态区间表示为ei=[e1i,e2i],(i=1,2,…,n),式中ei1,ei2为状态ei的上下限,则总状态集合为e=(e1,e2,…,en);

c2)计算马尔可夫状态转移概率矩阵:

选取状态区间的中间值,根据马尔可夫状态转移概率矩阵对下一次心跳信息到达值进行修正,修正后的预测值为:

本发明进一步的改进在于,步骤c)中,根据网络的动态变化,自适应的调整修正后的心跳信息到达值的门限值,从而实现故障检测的具体过程如下:

当得到下一次心跳信息到达值时,定义误差:ε=(心跳信息预测值)-(心跳信息实际到达值),设置下一次心跳信息到达时间的门限值为:η=上一次预测的误差+下一次心跳信息预测值,每当发送下一次心跳信息时,不断由预测值和上一次预测误差更新门限值,根据网络状况不断调整门限值;如果在门限值η内未收到心跳信息,则进程pb怀疑进程pa出现故障,此时查询控制器a另一个相邻的控制器,若都未收到心跳信息,则向控制器a重发心跳检测信息,仍未得到回复则判断控制器a出现故障。

与现有技术相比,本发明具有以下的有益效果:本发明针对多域sdn控制器的故障检测问题,提出利用控制器自身资源建立双向发送心跳包的故障检测机制,再根据结合灰色马尔可夫模型预测下一次心跳信息到达值,从而根据网络的动态变化,自适应的调整心跳信息到达的门限值,相比传统故障检测方法所采用的固定超时时间间隔或者设置额外的故障检测器,提高了sdn控制器故障检测的准确性和可靠性。

附图说明

图1为双向故障检测方式示意图。

具体实施方式

下面结合附图对本发明进行详细描述。

本发明主要用来求解当前基于多域sdn网络中多控制器的故障检测问题。sdn多控制器架构的提出解决了控制平面单控制器的单点故障、容量瓶颈以及扩展性等问题,针对sdn中控制器故障检测方面而言,主要考虑两个问题,即准确性和可靠性,准确的定位故障是故障检测的首要前提;采用自适应网络变化的超时时间间隔是可靠性的必要条件。本发明利用双向故障检测方式,将灰色模型与马尔可夫模型相结合,根据网络的动态变化采用自适应的方式预测下一次心跳信息的到达时间,提高了故障检测效率,实现了对出现故障的控制节点快速准确的定位。

一种基于灰色马尔可夫算法的sdn多控制器故障检测算法,依次包括以下步骤:

a)建立双向故障检测机制

本发明通过控制器之间双向交互心跳包的检测机制进行控制器的故障检测,假设sdn控制平面有n个控制节点,控制器集合c={c1,c2,…,cn},正常的情况下,控制节点ci以固定时间间隔向其相邻控制节点ci-1和ci+1发送心跳检测信息,ci-1和ci+1在心跳周期间隔内都会收到来自ci的信息并作出回应,如果ci-1和ci+1在此时间间隔内都没有收到心跳检测包,则将控制器ci置于怀疑状态,此时ci-1和ci+1主动向ci发送心跳信息,若ci仍未回复,则判断ci为故障点。

如图1所示,控制器a,b,c,d两两依次环形相连,控制器a与控制器b,控制器b与控制器c,控制器c与控制器d以及控制器d与控制器a之间互相发送心跳检测信息,假设当控制器a出现故障,控制器b在超时时间间隔内未收到控制器a所发送的心跳信息,则控制器b查询控制器d在超时时间间隔内是否收到控制器a发送的消息,若控制器d也没有收到控制器a的消息,则将控制器a置于怀疑状态,此时控制器b与控制器d再次向控制器a发送心跳信息,若都未得到控制器a回复,则认为控制器a发生故障,从而可以准确定位故障点。

b)构建gm(1,1)灰色预测模型:

b1)根据双向发送心跳检测包机制首先确定故障点后,为了提高检测效率以及可靠性,需对下一次心跳信息到达时间进行预测,以控制器a和控制器b为例,在控制器a和控制器b上分别存在进程pa与进程pb。进程pa向进程pb以固定时间间隔t发送心跳信息,用序列x(0)表示心跳信息到达时间序列,x(0)={x(0)(1),x(0)(2),x(0)(3),…,x(0)(n)},其中,x(0)(n)为第n个心跳信息的到达时间。

b2)为了保证建立灰色预测模型gm(1,1)的可行性,需要对已知数据做必要的检验处理。

对心跳信息到达时间序列x(0)进行级比检验:k=2,3,...,n。如果所有的级比都落在可容覆盖区间内,则进程pa所发送的心跳信息到达时间序列x(0)可以建立灰色预测模型gm(1,1)。否则,对数据做适当的变换处理,如平移变换:y(0)(k)=x(0)(k)+c,k=1,2,...,n,取常数c使级比都落在可容覆盖区间内,当y(0)(k)满足级比要求才能进行下一步操作。

b3)由于心跳信息的到达时间无规律性,因此为弱化原始数据的随机性,将心跳信息到达时间序列进行累加,显现其规律性,对x(0)作一次累加,从而得到一次累加生成序列:

x(1)={x(1)(1),x(1)(2),x(1)(3),…,x(1)(n)},

其中,x(1)(1)=x(0)(1),

令z(1)(k)为x(1)的紧邻均值生成序列:z(1)(k)=(z(1)(2),z(1)(3),...,z(1)(n)),其中,z(1)(k)=0.5x(1)(k)+0.5x(1)(k+1),k=1,2,...,n-1。灰色预测模型有白化微分方程和灰化方程,白化微分方程用来求方程解,灰化方程主要用于计算解的参数。建立灰色预测模型gm(1,1)的灰色微分方程为:x(0)(k)+az(1)(k)=b。

其中,a为发展系数,b为灰色作用量。设为待估参数向量,即则灰色微分方程的最小二乘估计参数列满足:

其中

再建立灰色微分方程的白化方程:

对灰色微分方程进行求解可得,于是得到预测值:从而相应地得到灰度预测方程:

c)建立灰色马尔可夫预测模型

c1)马尔可夫预测是对事件发生概率所做的预测,其特点就是分析不规则变化的数据,将其与灰色模型结合,可以发挥各自优势,提高预测精度。定义心跳信息到达时间灰色预测相对误差:

根据心跳信息到达时间灰色预测相对误差得到相对误差序列,将其划分为n个状态,任一状态区间可表示为ei=[e1i,e2i],(i=1,2,…,n),式中ei1,ei2为状态ei的上下限,则总状态集合为e=(e1,e2,…,en)

c2)计算马尔可夫状态转移概率矩阵

选取状态区间的中间值,根据马尔可夫状态转移概率矩阵对灰色预测值进行修正,修正后的预测值为:

d)计算自适应心跳信息到达时间

随着网络的动态变化,控制器需要不断的进行拓扑管理,重路由等操作,因此消息的发送将会产生随机的延迟,所以对于控制平面心跳周期自适应是非常有必要的,根据网络状况不断调整心跳周期提高控制平面的可靠性。

当通过步骤b)得到下一次预测值时,为了进一步提高预测精度,定义误差:ε=(心跳信息预测值)-(心跳信息实际到达值),设置下一次心跳信息到达时间的门限值为:η=上一次预测的误差+下一次心跳信息预测值,由此反复,每当发送下一次心跳信息时,不断由预测值和上一次预测误差更新门限值,根据网络状况不断调整门限值以提高检测效率。如果在门限值η内未收到心跳信息,则进程pb怀疑进程pa出现故障,此时查询控制器a另一个相邻的控制器,若都未收到心跳信息,则向控制器a重发心跳检测信息,仍未得到回复则可判断控制器a出现故障。

本发明就多域sdn控制器的故障检测问题,提出利用控制器自身资源建立双向发送心跳包的故障检测机制,再根据结合灰色马尔可夫模型预测下一次心跳信息到达值,从而根据网络的动态变化,自适应的调整心跳信息到达的门限值,相比传统故障检测方法所采用的固定超时时间间隔或者设置额外的故障检测器,提高了sdn控制器故障检测的准确性和可靠性。

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