基于最小生成树的网络故障定位算法研究_韩瑞东

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于最小生成树的网络故障定位算法研究

韩瑞东1,殷圣忠2,李

萍1

(1.运城学院计算机科学与技术系,山西运城044000;2.中国新闻社,北京100037)

摘要:针对网络中某一个设备故障可能会使其他设备产生告警甚至影响整个网络运行的这种情况,提出一

种基于最小生成树的网络故障定位算法以找出故障源。该算法包括时间关联分析和空间关联分析,时间关联分析通过压缩、过滤、计数和抑止规则对告警信息进行处理以减少冗余。空间关联分析通过预处理、告警分析、调整最小生成树和链路关联四部分对进行冗余处理后的告警信息进行处理以确定出真正的故障源。算法结果表明,其可以有效支持校园网络的故障管理,帮助网络管理员快速找出故障设备,以提高工作效率。

关键词:网络故障;关联分析;定位;故障源

中图分类号:TP393文献标识码:A

收稿日期:2017-03-26

基金项目:运城学院协同创新项目[CI-2015018]

作者简介:韩瑞东(1988-),男,山西运城人,硕士,助教,研究方向:软件技术开发。

文章编号:1674-0874(2017)04-0010-04

第33卷第4期山西大同大学学报(自然科学版)

Vol.33.No.42017年8月

Journal of Shanxi Datong University(Natural Science)Aug 2017

随着互联网的快速发展,网络规模不断扩大,网络中出现的故障可能会影响整个网络,甚至会给社会带来巨大损失,网络安全问题变得重要[1]。当网络中某一个设备产生故障时,可能会使其他正常的网元也发生告警,从而使整个网络产生大量的告警信息,在这些告警信息中,要找出真正的故障源,就需要对这些告警信息进行关联分析[2]。传统的算法是基于方法库的,把产生故障的情况在方法库中找到最类似的情况排查故障(情况相似度至少高达90%),实现难度较大,复杂度高,且效率低。因此,提出一种基于最小生成树的网络故障定位算法。

1算法原理

由于一台设备故障时,不仅会使自身产生重复告警,也会使其他正常的设备发出相同或相关的告警,要确定具体的故障源,就需要先对重复或相关的告警进行冗余,然后通过具体的网络拓扑结构来定位出真正的故障源。所以,提出的算法包含两方面:时间关联分析和空间关联分析。1.1时间关联分析

在网络运行过程中,当某一个网元产生告警信息时,在一段时间内可能会产生大量相同的或相关的告警信息,为了减少冗余,首先对这些告警信息进行时间关联分析。根据网络实际运行情况设定

时间窗口T(两个告警事件产生的时间差不能大于该值),然后利用下面四种规则进行关联分析,以减少冗余[3]。

(1)压缩(Compression)

针对某一台设备会产生大量的重复告警信息,而在规定的时间窗口内只需要保留一条即可,其他的自动丢掉,就需要使用压缩规则。其规则如下所示:

Compression(E1,E2,···Ei,···En){

if(E1==E2==···==Ei==···==En)

if(abs(Ti-T1)

RETAIN E1;

IGNORE E2,···Ei,···En;}}

该规则中,Ei 代表的是第i 个告警事件,Ti 代表的是第i 个告警事件发生的时间,根据IP 地址来判断是不是同一个设备发出的相同告警事件,用“==”表示。

(2)过滤(Fliltering)

网络中产生的大量告警信息有些并不是我们所关心的,对网络运行也不会产生影响,那就在时间段内直接过滤,针对此情况,就需要使用过滤规则。其规则如下:Filtering(Ei){

if(S(Ei)!=A &&T)

IGNORE Ei;

else RETAIN Ei;}该规则中,A 代表的是告警条件,S(Ei)代表的是第i 个事件发生时所带参数是否符合A 的条件。

(3)计数(Counting)

针对某一个网元在设定的时间窗口内可能只产生一次或几次告警,就需要使用计数规则。根据网络实际情况,在这设定一个值M ,超过该值时,保留;否则舍掉。其规则如下:Counting(E1,E2,···Ei,···En){

int i,j,count=0,M,N;if(abs(Ti-T1)

for(j=i+1;j

if(Ej==Ei){

count++;IGNORE Ej;}if(count>M)RETAIN Ei;else IGNORE Ei;}

该规则中,M 为根据网络实际情况设置的预定值,N 为总事件个数,count 为计算相同事件的参数。

(4)抑止(Suppression)

网络运行过程中某一个网元(如路由器、交换机等)发生告警信息时,其每个端口都会产生告警信息,根据每个端口告警信息的优先级(以告警信息的严重程度来判断)来进行关联分析,丢掉优先级低的,保留高的。针对该情况,就需要使用抑止规则。其规则如下:

Suppression(E1,E2,···Ei,···Ej,···En){

if(abs(Ti-T1)

if(Si>Sj)

IGNORE Ej ;

else INGORE Ei ;}

该规则中,sIP 代表的是同一台设备不同端口发出的告警信息,S 代表的是严重级别。1.2空间关联分析

空间关联分析主要是根据网络的拓扑结构来进行的,通过利用最小生成树的相关知识分析被管网元之间的关系来寻找出故障源[4]。图1所示为告警关联流程图,利用实际网络的拓扑结构,可以看做是图,再利用相关算法实现最小生成树,在最小生成树中利用设备之间的关系来判断出故障事件,以达到目的。

由于现实网络中并不是所有的设备都两两相连,所以可以把网络拓扑看做是一个稀疏图,用邻接表来存储。这样就能很好地节省空间,并且能够

支持算法的实现。该算法是根据网络拓扑模块提供的相关信息找出一个最小生成树,然后再根据这个最小生成树对故障信息进行关联分析。对于最小生成树来说,若两个节点在相同的子树上,则这两个节点之间有且只有一条链路。通过数据结构知识中最小生成树的性质,保留关键的信息,消除一些不必要的链路信息。当收到告警信息时,算法就会判断是否为链路故障信息,如果是最小生成树的路径,就把该最小生成树拆成两个不同的子树,算法就会搜索这两个子树的所有节点,查出不包含的网络监控的子树,就会过滤掉这棵子树所有节点的告警信息,只保留关键路径告警信息。数据结构中,最小生成树有两种经典算法,普里姆(Prim)算法和克鲁斯卡尔(Kruskal)算法,Prim 算法的时间复杂度为O(n 2),而Kruskal 算法的时间复杂度为O(eloge)[5]。

对比这两个算法,Kruskal 算法主要是针对边来展开,边数越少越有效,对稀疏图有优势;而Prim 算法对稠密图会更好一些。根据对比,本算法的实现采用Kruskal 算法。

图1告警关联流程图

2算法实现

算法由预处理、告警分析、调整最小生成树以及链路关联等组成,时间复杂度为O(eloge),e 是链路数。如图2所示。

图2空间关联分析流程图

2.1预处理

该阶段主要是通过拓扑发现模块得到网络拓扑结构用邻接表来存储,然后利用Kruskal 算法实现最小生成树,流程图如图3

所示。

韩瑞东等:基于最小生成树的网络故障定位算法研究2017年·

·11

相关文档
最新文档