CN101547125B - 一种自治系统内网络异常定位的系统和方法 - Google Patents

一种自治系统内网络异常定位的系统和方法 Download PDF

Info

Publication number
CN101547125B
CN101547125B CN2008101027063A CN200810102706A CN101547125B CN 101547125 B CN101547125 B CN 101547125B CN 2008101027063 A CN2008101027063 A CN 2008101027063A CN 200810102706 A CN200810102706 A CN 200810102706A CN 101547125 B CN101547125 B CN 101547125B
Authority
CN
China
Prior art keywords
router
ospf
message
declaration
steps
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN2008101027063A
Other languages
English (en)
Other versions
CN101547125A (zh
Inventor
许旭
毕经平
李晔
刘大鹏
杨峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
G Cloud Technology Co Ltd
Original Assignee
Institute of Computing Technology of CAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN2008101027063A priority Critical patent/CN101547125B/zh
Publication of CN101547125A publication Critical patent/CN101547125A/zh
Application granted granted Critical
Publication of CN101547125B publication Critical patent/CN101547125B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种自治系统内网络异常定位的系统和方法。该系统包括分析单元,用于根据采集的OSPF LSA构建拓扑,并在拓扑构建完成之后,根据路由信息采集探针收到的使拓扑改变的OSPF Update报文发现拓扑的变化,然后结合OSPF协议定位网络异常;路由信息采集探针,用于通过物理上部署到自治系统的OSPF区域,通过隧道连通到网络中,与网络中每个OSPF区域的运行OSPF协议的路由器建立邻接关系,实时被动地采集在该OSPF区域泛洪的LSA报文,并将采集到的LSA报文发送给所述分析单元。其利用OSPF LSA对自治系统内的网络异常进行定位,发现网络拓扑变化,协助定位网络异常。

Description

一种自治系统内网络异常定位的系统和方法
技术领域
本发明涉及网络测量和分析技术领域,特别是涉及一种利用开放最短路径优先协议的链路状态广播(OSPF LSA)对自治系统内网络异常定位的系统和方法。
背景技术
今天的国际互联网(Internet)和较大的网络服务提供商(Internet ServiceProvider,ISP),自治系统(Autonomous System,AS)。自治系统设置了管理控制的区域和作用于自治系统范围的路由策略。所以Internet级的路由结构常被划分为域内和域间两种。
对于域内路由,有多种域内路由协议,目前开放最短路径优先协议(OpenShortest Path First,OSPF)有较广泛的应用。
OSPF是Open Shortest Path First(即“开放最短路由优先协议”)的缩写。它是IETF组织开发的一个基于链路状态的自治系统内部路由协议。在IP网络上,它通过收集和传递自治系统的链路状态来动态地发现并传播路由。
每一台运行OSPF协议的路由器总是将本地网络的连接状态,(如可用接口信息、可达邻居信息等)用链路状态广播(Link_State Advertisement,LSA)描述,并广播到整个自治系统中去。这样,每台路由器都收到了自治系统中所有路由器生成的链路状态广播,这些链路状态广播的集合组成了链路状态数据库(Link State Database,LSDB)。由于每一条链路状态广播是对一台路由器周边网络拓扑的描述,则整个链路状态数据库就是对该自治系统网络拓扑的真实反映。
网络拓扑是指网络元素之间的一种连接性信息,它对于网络管理和运营者有着重要的意义。自治系统(AS)内网络拓扑就是指一个自动系统中各区域内的路由连接性信息。
随着OSPF路由器种类概念的引入,OSPF协议又对其链路状态广播(OSPFLSA)报文作出了分类。OSPF将链路状态广播报文共分成5类,分别为:
类型1:又被称为路由器链路信息报文(OSPF Router LSA),所有的OSPF路由器都会产生这种数据包,用于描述路由器上联接到某一个区域的链路或是某一端口的状态信息。路由器链路信息报文只会在某一个特定的区域内广播,而不会广播至其它的区域。
在类型1的链路报文中,OSPF路由器通过对报文中某些特定数据位的设定,告诉其余的路由器自身是一个区域边界路由器或是一个自治系统(AS)边界路由器。并且,类型1的链路状态报文在描述其所联接的链路时,会根据各链路所联接的网络类型对各链路打上链路标识Link ID。
类型2:又被称为网络链路信息报文(OSPF Network LSA)。网络链路信息报文是由指定路由器产生的,在一个广播性的、多点接入的网络,例如以太网、令牌环网及FDDI网络环境中,这种链路状态报文用来描述该网段上所联接的所有路由器的状态信息。
指定路由器(DR)只有在与至少一个路由器建立相邻关系后才会产生网络链路信息报文,在该报文中含有对所有已经与指定路由器(DR)建立相邻关系的路由器的描述,包括指定路由器(DR)本身。类型2的链路信息只会在包含指定路由器(DR)所处的广播性网络的区域中广播,不会广播至其余的OSPF路由区域。
类型3和类型4:类型3和类型4的链路状态广播在OSPF协议中又称为总结链路信息报文(OSPF Summary LSA),该链路状态广播是由区域边界路由器或AS边界路由器产生的。Summary LSA描述的是到某一个区域外部的路由信息,这一个目的地地址必须是同一个自治系统(AS)中。Summary LSA也只会在某一个特定的区域内广播。类型3与类型4两种总结性链路信息的区别在于,类型3是由区域边界路由器产生的,用于描述到同一个自治系统(AS)中不同区域之间的链路状态;而类型4是由自治系统(AS)边界路由器产生的,用于描述不同自治系统(AS)的链路状态信息。
类型5:类型5的链路状态广播称为AS外部链路状态信息报文。类型5的链路报文是由自治系统(AS)边界路由器产生的,用于描述到自治系统(AS)外的目的地的路由信息,该数据包会在自治系统(AS)中除残域以外的所有区域中广播。一般来说,这种链路状态信息描述的是到自治系统(AS)外部某一特定网络的路由信息,在这种情况下,类型5的链路状态报文的链路标识采用的是目的地网络的IP地址;在某些情况下,自治系统(AS)边界路由器可以对自治系统(AS)内部广播默认路由信息,在这时,类型5的链路广播数据包的链路标识采用的是默认网络号码0.0.0.0。
目前现有的利用OSPF链路状态广播(LSA)构建自治系统内拓扑方法没有为每个路由器维护OSPF报文列表,故不能反映出拓扑的变化情况,另外,也没有结合开放最短路径优先协议(OSPF)进行故障定位分析,使得现有方法构建的域内拓扑对网络管理的借鉴性较差。
发明内容
本发明所要解决的问题是提供一种自治系统内网络异常定位的系统和方法,其利用开放最短路径优先协议的链路状态广播(OSPF LSA)对自治系统内的网络异常进行定位,发现网络拓扑变化,协助定位网络异常。
为实现本发明目的而提供的一种自治系统内网络异常定位的系统,包括分析单元,用于根据采集的OSPF链路状态广播报文构建拓扑,并在拓扑构建完成之后,根据路由信息采集探针收到的使拓扑改变的OSPF更新报文发现拓扑的变化,然后结合OSPF协议定位网络异常。
所述的自治系统内网络异常定位的系统,还包括路由信息采集探针,用于通过物理上部署到自治系统的OSPF区域,通过隧道连通到网络中,与网络中每个OSPF区域的运行OSPF协议的路由器建立邻接关系,实时被动地采集在该OSPF区域泛洪的链路状态广播报文,并将采集到的链路状态广播报文发送给所述分析单元。
所述分析单元包括构建模块、更新模块和判断模块,其中:
所述构建模块,用于根据路由信息采集探针采集发来的自治系统内各个区域的OSPF链路状态广播报文,如果该报文为自治系统中的宣告路由器第一次发出的OSPF链路状态广播报文,则构建拓扑,并根据拓扑的数据结构得到OSPF报文列表;
所述更新模块,用于在拓扑构建完成之后,根据路由信息采集探针采集到的OSPF更新报文,对接收到的OSPF Router LSA,OSPF Network LSA报文进行解析,根据报文内容及拓扑的边关系,更新拓扑中的节点或者边的信息;
所述判断模块,用于通过比较新收到的链路状态广播报文和所述OSPF报文列表中同一宣告路由器发出的相同区域内的最近一条同类型链路状态广播报文,判断自治系统内拓扑的变化,并结合该变化及OSPF协议分析,定位自治系统内的网络异常事件。
所述的自治系统内网络异常定位的系统,还包括报文区分模块,用于区分路由信息采集探针和分析单元之间传输的报文的类型。
所述报文类型一类是路由信息采集探针通过与网络中的OSPF路由器建立邻居关系而得到的路由更新报文;另一类是路由采集探针所发送的与网络中OSPF路由器之间的邻居关系建立或者丢失的应用层控制报文。
所述的自治系统内网络异常定位的系统,还包括配置模块,用于对路由信息采集探针覆盖范围内的路由器进行OSPF配置,使路由信息采集探针与自治系统内建立隧道的路由器建立起OSPF全邻接关系,采集到区域内各路由器的报文信息。
为实现本发明目的还提供一种自治系统内网络异常定位的方法,包括下列步骤:
步骤A,分析单元根据采集到的OSPF链路状态广播报文,如果该报文为自治系统中的宣告路由器第一次发出的OSPF链路状态广播报文,则构建拓扑,并根据拓扑的数据结构为每个路由器维护一个OSPF报文列表;
步骤B,在拓扑构建完成之后,如果路由信息采集探针又收到OSPF更新报文,则分析单元利用该OSPF链路状态广播报文与OSPF报文列表中同类型的链路状态广播报文进行比较,根据OSPF更新报文发现更新拓扑的变化;
步骤C,根据OSPF更新报文发现拓扑变化之后,结合OSPF协议定位网络异常。
所述步骤A之前还包括下列步骤:
步骤A’,将路由信息采集探针通过物理上部署到自治系统的OSPF区域中,实时被动地采集在该OSPF区域泛洪的链路状态广播报文,并传输给分析单元。
所述步骤A中,所述数据结构包括:
自治系统数据结构:其包括该自治系统内区域列表,路由器列表,子网列表;
路由器信息数据结构:其包括路由器ID,类型,接口列表,OSPF RouterLSA列表,OSPF NetworkLSA列表,单向邻居集合,双向邻居集合;
记录网段及指定路由器信息的数据结构:包括网段IP,DR接口,DR路由器ID,通过该网段上普通路由器发出的RouterLSA与指定路由器建立单向边关系的路由器集合,通过DR的NetworkLSA获得该网段上普通路由器放入宣告路由器的单向邻居集合。
所述步骤A包括下列步骤:
步骤A1,收到一条链路状态广播报文后,如果该报文为自治系统中的宣告路由器第一次发出的OSPF链路状态广播报文,则通过链路状态广播报文内容获得宣告路由器所在区域号,在自治系统所维护的区域列表中检索所述区域号;若检索到,转向步骤A2;否则,转向步骤A3;
步骤A2,判断收到的OSPF链路状态广播报文类型,如果是RouterLSA,则转向步骤A4;如果是NetworkLSA,则转向步骤A6;否则,结束返回;
步骤A3,建立一所述区域号的区域结构,写入自治系统所维护的区域OSPF报文列表中,转向步骤A2;
步骤A4,以宣告路由器ID为路由器ID建立路由器结构,并根据RouterLSA中宣告的路由器类型填充路由器结构,并根据路由器ID和类型在拓扑图中画出该路由器,并将其添加到所述区域号的路由器OSPF报文列表中,转向步骤A5;
步骤A5,遍历RouterLSA中的每条链路,记录到该路由器以所述区域号为索引的OSPF RouterLSA报文列表中,分类型处理,直到最后一条,然后结束返回;
步骤A6,以宣告路由器ID为路由器ID建立路由器结构,根据路由器ID在拓扑图中画出该路由器,并将其添加到所述区域号的路由器列表中;
步骤A7,查找记录网段及指定路由器信息的数据结构中是否有该指定路由器信息;
若没有,创建一个新条目,将网段、DR接口、DR路由器ID信息填入;
若已经存在,则填补信息空缺处,同时为单向边关系的路由器集合中的路由器添加宣告路由器的单向邻居关系;
步骤A8,遍历NetworkLSA中的邻居路由器,记录到该路由器以所述区域号为索引的OSPF NetworkLSA报文列表中,直到最后一条。
所述步骤A5中,所述分类型处理,包括下列步骤:
步骤A51,对于点到点类型,如果linkData是宣告路由器的一个接口,linkID是邻居路由器的ID,记为neighborRouterID,则将neighborRouterID加入宣告路由器的单向邻居集合,并检查宣告路由器是否存在于neighborRouterID的单向邻居集合,若是,在拓扑图中画出边;否则,结束返回;
步骤A52,对于transit network类型,如果linkData是宣告路由器的一个接口,linkID是宣告路由器所在网段DR的接口,则:
若linkData与linkID相等,说明宣告路由器是一网段上的指定路由器,从记录网段及指定路由器信息的数据结构中检索相应的指定路由器条目,若检索到,则填充相应信息,并为宣告路由器的单向邻居集合中所有路由器建立它们与指定路由器的单向邻居关系;若没有检索到,将该接口和宣告路由器ID放入记录网段及指定路由器信息的数据结构;
若linkData与linkID不相等,说明宣告路由器是一网段上的普通路由器,查询记录网段及指定路由器信息的数据结构中是否有该网段DR信息;
若没有,则结束返回;若有,则根据该接口获得网段指定路由器的ID,记为neighborRouterID,将neighborRouterID加入宣告路由器的单向邻居集合;
检查宣告路由器是否存在于neighborRouterID的单向邻居集合;
若是,在拓扑图中画出边;若没有,建立一条以linkID为DR接口的条目放入记录网段及指定路由器信息的数据结构,将未知的信息置空,并将宣告路由器放入该条目中的单向边关系的路由器集合中,标记其尚未记录DR单向邻居关系;
步骤A53,对于stub network类型,以linkData子网IP和linkID子网掩码,即以子网IP&子网掩码的结果为子网ID,建立一个子网结构,在拓扑图中画出该子网,并将其添加到所述区域号的子网OSPF报文列表中,画出宣告路由器与该子网之间边的关系;
步骤A54,对于virtual link类型,如果linkData是宣告路由器的一个接口,linkID是邻居路由器的ID,记为neighborRouterID,则将neighborRouterID加入宣告路由器的单向邻居集合,并检查宣告路由器是否存在于neighborRouterID的单向邻居集合,若是,在拓扑图中画出边;
步骤A55,重复执行步骤A5。
所述步骤B包括下列步骤:
步骤B1,在路由信息采集探针收到使拓扑改变的OSPF更新报文后,判断收到的OSPF链路状态广播报文类型,如果是RouterLSA,转向步骤B2;如果是NetworkLSA,转向步骤B6;否则结束返回;
步骤B2,获得该条RouterLSA的宣告路由器ID,及所在区域号,以宣告路由器及区域作为查询条件,找到同一宣告路由器最近的RouterLSA,记为oldRouterL SA;
步骤B3,遍历同一宣告路由器最近的oldRouterLSA中的每一条原链路,在新的RouterLSA中检索宣告该原链路的接口,并进行分析转到步骤B4处理,直到最后一条,然后转向步骤B5;
步骤B4,判断原链路的类型,并根据不同的类型进行不同的处理,然后转向步骤B3;
步骤B5,转向步骤A5进行分析处理;
步骤B6,NetworkLSA中的linkStateID和子网掩码相与之后,获得网段IP,查找记录网段及指定路由器信息的数据结构,找到该网段IP对应的条目,查看该网段原指定路由器信息,并进行分析处理;
步骤B7,转向步骤A7~A8进行处理。
所述步骤B3包括下列步骤:
步骤B31,若在当前的RouterLSA中没有检索到接口,说明宣告路由器接口减少,初步判定路由器接口出现故障,转入步骤B4;
步骤B32,如检索到接口但链路中内容不一致,包括链路类型、linkID或linkData不一致,则说明接口正常,但链路内容变化,转向步骤B4。
所述步骤B4包括下列步骤:
步骤B41,如果是点到点类型,则获得先前与宣告路由器建立起点到点链路的邻居路由器ID,即原链路中的linkID,从拓扑图中删掉边,并从宣告路由器和邻居路由器数据结构中的单向邻居集合和双向邻居集合中删掉彼此的信息;
步骤B42,如果是transit network类型,则判断原链路中的linkID与linkData是否相等;
如果linkID与linkData相等,说明宣告路由器以前是一网段上的指定路由器,现在指定路由器发生改变,从记录网段及指定路由器信息的数据结构中找到与之对应的条目,在拓扑图中删除指定路由器在该网段与普通路由器建立的边,将该条目从记录网段及指定路由器信息的数据结构中删除;
如果linkID与linkData不等,说明宣告路由器以前是一网段上的普通路由器,通过linkID获得网段指定路由器接口,从记录网段及指定路由器信息的数据结构找到与之对应条目,从拓扑图中删除宣告路由器与指定路由器之间的边,并从宣告路由器和指定路由器数据结构中的单向邻居集合和双向邻居集合中删掉彼此的信息,并从指定路由器的单向边关系的路由器集合和宣告路由器的单向邻居集合中删除宣告路由器相关信息;
步骤B43,如果是stub network类型,则获得先前与宣告路由器建立起边关系的子网IP,即原链路中的linkData&linkID,从拓扑图中删掉该边;
步骤B44,如果是virtual link类型,则获得先前与宣告路由器建立起虚链路的邻居路由器ID,即原链路中的linkID,从拓扑图中删掉边,并从宣告路由器和邻居路由器数据结构中的单向邻居集合和双向邻居集合中删掉彼此的信息。
所述步骤B6中,所述分析处理,包括下列步骤:
步骤B61,若原指定路由器ID与宣告路由器ID相等,以宣告路由器及区域作为查询条件,找到同一宣告路由器最近的NetworkLSA,记为oldNetworkLSA,遍历oldNetworkLSA中的每个邻居路由器;
若邻居路由器ID没有出现在新NetworkLSA的邻居路由器中,则从拓扑图中删除宣告路由器到邻居路由器ID的边,并从宣告路由器和邻居路由器ID数据结构中的单向邻居集合和双向邻居集合中删掉彼此的信息;并且将邻居路由器ID从宣告路由器的单向邻居集合中删除;
若邻居路由器ID出现在新NetworkLSA的邻居路由器中,则继续,重复步骤B61;
步骤B62,若原指定路由器ID与宣告路由器ID不等,说明网段指定路由器改变,在拓扑图中删除原指定路由器在该网段与普通路由器建立的边,从宣告路由器和普通路由器数据结构中的单向邻居集合和双向邻居集合中删掉彼此的信息,并将网段IP对应的条目从记录网段及指定路由器信息的数据结构中删除。
所述步骤C中,所述定位网络异常,包括下列步骤:
若路由器与先前的邻居路由器之间的边都断开,在拓扑图中孤立,则推断该路由器宕机或重启;
若路由器与先前的一邻居路由器之间的链路中断,则若所述路由器的RouterLSA报文导致链路中断,则推断所述路由器与先前的一邻居路由器之间的接口出现问题;若先前的一邻居路由器的RouterLSA报文导致链路中断,则推断先前的一邻居路由器与所述路由器之间的接口出现问题;若所述路由器和先前的一邻居路由器的RouterLSA报文都发生变化,则推断所述路由器与先前的一邻居路由器之间的网线出现问题;
若拓扑图中增加一条从一路由器到另一路由器的链路,则若所述路由器的RouterLSA报文导致链路增加,则推断所述路由器到所述另一路由器的接口开启;若所述另一路由器的RouterLSA报文导致链路增加,则推断所述另一路由器到所述路由器的接口开启;
若先前在同一个网段上的路由器集合中心节点改变,则推断该网段的指定路由器改变。
本发明的有益效果是:本发明的自治系统内网络异常定位的系统和方法,构建自治系统内拓扑,并且为每个路由器分区域维护一OSPF报文列表,通过比较两条同一路由器发出的同类型链路状态广播报文(LSA)发现自治系统内的拓扑变化,并且通过该变化推断网络异常事件的发生,包括路由器宕机、重启,链路的增加、中断,接口开启、关闭,网段DR改变等。本发明帮助网管人员发现网络拓扑变化,协助定位网络异常。
附图说明
图1为本发明自治系统内网络异常定位的系统结构示意图;
图2为本发明自治系统内网络异常定位的方法流程图;
图3为本发明自治系统内网络拓扑构建过程流程图;
图4为本发明自治系统内网络拓扑更新过程流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的一种自治系统内网络异常定位的系统和方法进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提出了一种利用开放最短路径优先协议的链路状态广播(OSPFLSA)定位自治系统内网络异常的系统和方法,其通过设置路由信息探针与自治系统的每个区域内的任一路由器建立OSPF邻居关系,构建自治系统内拓扑,并且为每个路由器维护一个OSPF报文列表,并在路由信息采集探针收到宣告路由器相同但报文其他内容不同的OSPF LSA报文后,与报文列表中同类型的链路状态广播(LSA)报文进行比较,发现自治系统内拓扑的变化,并且通过该变化推断网络异常事件的发生,包括路由器宕机、重起,链路的增加、中断,接口开启、关闭,网段指定路由器(Designated Router,DR)改变等。
下面详细说明本发明的一种自治系统内网络异常定位的系统,其包括路由信息采集探针5和分析单元2,其中:
所述路由信息采集探针5,用于通过物理上部署到自治系统1(AS)的OSPF区域(Area),通过隧道连通到网络中,与网络中每个OSPF区域的运行OSPF协议的路由器6建立邻接关系,实时被动地采集在该OSPF区域泛洪的链路状态广播(OSPF LSA)报文,并将采集到的链路状态广播报文发送给分析单元2。
所述分析单元2,用于根据路由信息采集探针5采集的OSPF链路状态广播(LSA)报文构建拓扑,并在拓扑构建完成之后,根据路由信息采集探针5收到的使拓扑改变的OSPF更新报文发现拓扑的变化,然后结合OSPF协议定位网络异常。
较佳地,所述分析单元2,包括构建模块21、更新模块22和判断模块23,其中:
所述构建模块21,用于根据路由信息采集探针5采集发来的自治系统1内各个区域的OSPF链路状态广播(LSA)报文,如果该报文为自治系统1中的宣告路由器第一次发出的OSPF链路状态广播(LSA)报文,则构建拓扑,并根据拓扑的数据结构得到OSPF报文列表。
所述更新模块22,用于在拓扑构建完成之后,根据路由信息采集探针5采集到的OSPF更新报文(OSPF Update),对接收到的OSPF Router LSA,OSPF Network LSA报文进行解析,根据报文内容及拓扑的边关系,更新拓扑中的节点或者边的信息。
所述判断模块23,用于通过比较新收到的链路状态广播(LSA)报文和所述OSPF报文列表中同一宣告路由器发出的相同区域内的最近一条同类型链路状态广播(LSA)报文,判断自治系统1内拓扑的变化,并结合该变化及OSPF协议分析,定位自治系统1内的网络异常事件。
所述异常事件包括路由器宕机、重启,链路的增加、中断,接口开启、关闭,网段指定路由器(DR)改变等。
路由信息采集探针5需要模拟实现完整的开放最短路径优先协议(OSPF协议),能够运行开放最短路径优先路由协议的状态机,能够与真实路由器建立OSPF会话并交换OSPF路由更新报文,这个可以通过现有的开源路由软件GNU Zebra来实现。
通过开源路由软件GNU Zebra实现路由信息采集探针5是一种现有技术,本领域技术人员根据本发明实施例描述的内容,能够实现该路由信息采集探针5,因此,在本发明实施例中,不再一一详细描述。
为了实现本发明的路由信息采集探针5被动采集的目的,即路由信息采集探针5与真实路由器6建立起OSPF会话之后,只是被动地接受对方发送过来的OSPF更新报文,因此,本发明的路由信息采集探针5,除了按照OSPF协议规范,为了维持与对方路由器的邻居关系而发送的周期性Keep Alive报文外,不向网络中注入其他任何报文,从而不影响网络现有的路由状况,从而达到被动采集的目的。
网络采集设备通过遂道的方式参与到多个自治系统1的OSPF协议交互中,获取各OSPF区域的链路状态数据库信息。路由信息采集探针5通过物理部署到自治系统1(AS)的每个运行开放最短路径优先路由协议(OSPF)区域(Area)中的方式,或者仅物理部署到一自治系统1(AS)的一OSPF区域(Area)中,通过隧道(tunnel,例如GRE)连通到网络中其他OSPF区域中的方式,来与网络中每个特定OSPF区域(Area)的任何一台运行OSPF协议的路由器6建立邻接(Adjacency)关系,实时被动地采集在该OSPF区域(Area)泛洪的链路状态广播(LSA)报文。
对于实时采集到的链路状态宣告(LSA)报文,为每个路由器6维护一个OSPF报文列表,分区域记录该路由器6产生的最新OSPF RouterLSA和OSPFNetworkLSA。
较佳地,为了实现路由信息采集探针5与上层分析单元2有效结合的目的,所述自治系统1内网络异常定位的系统还包括报文区分模块4,用于区分路由信息采集探针5和分析单元2之间传输的报文类型。所述报文类型一类是路由信息采集探针5通过与网络中的OSPF路由器6建立邻居关系而得到的路由更新报文;另一类是路由采集探针所发送的与网络中OSPF路由器6之间的邻居关系建立或者丢失的应用层控制报文。
更佳地,所述自治系统1内网络异常定位的系统还进一步包括配置模块3,用于对路由信息采集探针5覆盖范围内的路由器6进行OSPF配置,使路由信息采集探针5与自治系统1内建立隧道的路由器6建立起OSPF全邻接关系,采集到区域内各路由器6的报文信息。
对路由信息采集探针5覆盖范围内的路由器6进行正确OSPF配置。在路由信息采集探针5覆盖范围内的路由器6进行的正确信息交互的前提下,保证采集器能收到全面的OSPF信息。需要在自治系统1内进行OSPF配置,分两种情况:
若采集探针与被监测路由器6属于同一区域,用network命令将采集器的某个接口加入到该区域;使采集探针与区域内的路由器6建立起OSPF全邻接关系,采集到区域内各路由器6的报文信息。
若采集探针与被监测路由器6属于不同区域,先在探针上建立隧道(tunnel),再用network命令将该隧道加入到被监测区域,使采集探针与区域内的路由器6建立起OSPF全邻接关系,采集到区域内各路由器6的报文信息。
下面详细说明本发明的一种自治系统内网络异常定位的方法,其包括如下步骤:
步骤S100,将路由信息采集探针通过物理上部署到自治系统1的OSPF区域中,实时被动地采集在该OSPF区域泛洪的链路状态广播(LSA)报文,并传输给分析单元2;
路由信息采集探针5通过物理上部署到自治系统1(AS)的某个OSPF区域(Area)中,通过隧道(tunnel,例如通用路由封装(Generic RoutingEncapsulation,GRE)连通到网络中其他OSPF区域(Area)中方式,来与网络中每个特定OSPF区域(Area)的任何一台运行开放最短路径优先(OSPF)协议的路由器6建立邻接(Adjacency)关系,实时被动地采集在该OSPF区域(Area)泛洪(Flooding)的链路状态广播(LSA)报文,将收集到的OSPF更新(OSPF Update)报文发向分析单元2。
步骤S200,分析单元根据采集到的OSPF链路状态广播(LSA)报文,如果该报文为自治系统1中的宣告路由器第一次发出的OSPF链路状态广播(LSA)报文,则构建拓扑,并根据拓扑的数据结构为每个路由器维护一个OSPF报文列表;
分析单元2根据路由信息采集探针5发上来的一个自治系统1内各个区域的OSPF报文,构建拓扑,并根据拓扑的数据结构,对于实时采集到的链路状态广播报文,分析单元2为每个路由器6分区域维护其OSPF报文列表,分区域记录该路由器6产生的最新OSPF Rounter LSA和OSPF Network LSA。
所述数据结构包括:
A)自治系统数据结构ASInfo_Class:其包括该自治系统内区域列表,路由器列表,子网列表;
B)路由器信息数据结构RouterInfo_Class:其包括路由器ID,类型,接口列表,OSPF RouterLSA列表,OSPF NetworkLSA列表,单向邻居集合,双向邻居集合;
C)记录网段及指定路由器(DR)信息的数据结构TransitnetMap:包括网段IP,DR接口,DR路由器ID,通过该网段上普通路由器发出的RouterLSA与指定路由器(DR)建立单向边关系的路由器集合NormalRouterSet,通过DR的NetworkLSA获得该网段上普通路由器放入宣告路由器的单向邻居集合AttachedRouterSet。
进一步地,所述步骤S200,其包括下列步骤:
步骤S210,收到一条链路状态广播(LSA)报文后,如果该报文为自治系统1中的宣告路由器第一次发出的OSPF链路状态广播(LSA)报文,则通过链路状态广播报文内容获得宣告路由器所在区域号(areaID),在自治系统1所维护的区域列表中检索所述区域号(areaID);若检索到,转向步骤S220;否则,转向步骤S230;
步骤S220,判断收到的OSPF的链路状态广播(LSA)报文类型,如果是RouterLSA,则转向步骤S240;如果是NetworkLSA,则转向步骤S260;否则,结束返回;
步骤S230,建立一个以所述区域号(areaID)为区域号的区域结构,写入自治系统1所维护的区域OSPF报文列表中,转向步骤S220;
步骤S240,以宣告路由器ID为路由器ID建立路由器结构,并根据RouterLSA中宣告的路由器类型填充路由器结构,并根据路由器ID和类型在拓扑图中画出该路由器,并将其添加到所述区域号(areaID)的路由器OSPF报文列表中,转向步骤S250;
步骤S250,遍历RouterLSA中的每条链路(link),记录到该路由器以所述区域号(areaID)为索引的OSPF RouterLSA报文列表中,分类型处理,直到最后一条,然后结束返回;
进一步地,所述步骤S250中,所述分类型处理,包括下列步骤:
步骤S251,对于点到点(point-to-point)类型,如果linkData是宣告路由器的一个接口,linkID是邻居路由器的ID,记为neighborRouterID,则将neighborRouterID加入宣告路由器的单向邻居集合,并检查宣告路由器是否存在于neighborRouterID的单向邻居集合,若是,在拓扑图中画出边;否则,结束返回;
步骤S252,对于transit network类型,如果linkData是宣告路由器的一个接口,linkID是宣告路由器所在网段DR的接口,则:
a)若linkData与linkID相等,说明宣告路由器是一网段上的指定路由器(DR),从数据结构TransitnetMap中检索相应的指定路由器(DR)条目,若检索到,则填充相应信息,并为宣告路由器的单向邻居集合AttachedRouterSet中所有路由器6建立它们与指定路由器(DR)的单向邻居关系;若没有检索到,将该接口和宣告路由器ID放入数据结构TransitnetMap;
b)若linkData与linkID不相等,说明宣告路由器是一网段上的普通路由器,查询数据结构TransitnetMap中是否有该网段DR信息;
若没有,则结束返回;若有,则根据该接口获得网段指定路由器(DR)的ID,记为neighborRouterID,将neighborRouterID加入宣告路由器的单向邻居集合;
检查宣告路由器是否存在于neighborRouterID的单向邻居集合;
若是,在拓扑图中画出边;若没有,建立一条以linkID为DR接口的条目放入数据结构TransitnetMap,将未知的信息置空,并将宣告路由器放入该条目中的单向边关系的路由器集合NormalRouterSet中,标记其尚未记录DR单向邻居关系;
步骤S253,对于stub network类型,以linkData子网IP和linkID子网掩码,即以子网IP&子网掩码的结果为子网ID,建立一个子网结构,在拓扑图中画出该子网,并将其添加到所述区域号(areaID)的子网OSPF报文列表中,画出宣告路由器与该子网之间边的关系;
步骤S254,对于virtual link类型,如果linkData是宣告路由器的一个接口,linkID是邻居路由器的ID,记为neighborRouterID,则将neighborRouterID加入宣告路由器的单向邻居集合,并检查宣告路由器是否存在于neighborRouterID的单向邻居集合,若是,在拓扑图中画出边;
步骤S255,重复执行步骤S250。
步骤S260,以宣告路由器ID为路由器ID建立路由器结构,根据路由器ID在拓扑图中画出该路由器,并将其添加到所述区域号(areaID)的路由器列表中;
步骤S270,查找数据结构TransitnetMap中是否有该指定路由器(DR)信息;
若没有,创建一个新条目,将网段、DR接口、DR路由器ID信息填入;
若已经存在,则填补信息空缺处,同时为单向边关系的路由器集合NormalRouterSet中的路由器6添加宣告路由器的单向邻居关系;
步骤280,遍历NetworkLSA中的邻居路由器attached Router,记录到该路由器以所述区域号(areaID)为索引的OSPF NetworkLSA报文列表中,直到最后一条。
遍历NetworkLSA中的邻居路由器attached Router,获得每个邻居路由器attached Router的路由器ID,记为attachedRouterID,将attachedRouterID加入宣告路由器的单向邻居集合AttachedRouterSet,并检查宣告路由器是否存在于attachedRouterID的单向邻居集合;若是,在拓扑图中画出边;否则,重复执行步骤S280。
在本发明分析单元2中,只有宣告自己的OSPF报文才能足以说明宣告路由器的真实存在,在其他报文中被指为邻居路由器的信息不能用来构建一个路由器。而且,边的构建依赖于双方的宣告,而不是单方面的。每个路由器会维护一OSPF报文列表,以区域为索引,记录该路由器在该区域内产生的最新OSPF RouterLSA和OSPF NetworkLSA内容。路由信息采集探针5收集到的报文顺序不可控,该拓扑生成阶段不要求特定的报文顺序,从而能在任何报文顺序下构建出正确的拓扑。
步骤S300,在拓扑构建完成之后,如果路由信息采集探针又收到OSPF更新报文,则分析单元利用该OSPF链路状态广播(LSA)报文与OSPF报文列表中同类型的链路状态广播(LSA)报文进行比较,根据OSPF更新报文(OSPF Update)发现更新拓扑的变化;
在拓扑构建完成之后,路由信息采集探针5又收到使拓扑改变的OSPF更新报文(OSPF Update),即收到的OSPF链路状态广播(LSA)报文是宣告路由器相同但其他内容不同的OSPF链路状态广播(LSA)报文,则分析处理而发现更新拓扑的变化。
进一步地,步骤S300具体包括如下步骤:
步骤S310,在路由信息采集探针收到使拓扑改变的OSPF更新报文后,判断收到的OSPF链路状态广播(LSA)报文类型,如果是RouterLSA,转向步骤S320;如果是NetworkLSA,转向步骤S360;否则结束返回;
步骤S320,获得该条RouterLSA的宣告路由器ID,及所在区域号(areaID),以宣告路由器及区域作为查询条件,找到同一宣告路由器最近的RouterLSA,记为oldRouterLSA;
步骤S330,遍历同一宣告路由器最近的oldRouterLSA中的每一条原链路oldlink,在新的RouterLSA中检索宣告这条链路(link)的接口(interface),并进行分析后转到步骤S340处理,直到最后一条,然后转向步骤S350;
进一步地,所述步骤S330包括下列步骤:
步骤S331,若在当前的RouterLSA中没有检索到接口(interface),说明宣告路由器接口减少,初步判定路由器6接口出现故障,转入步骤S340;
步骤S332,如检索到接口(interface)但链路(link)中内容不一致,包括链路类型、linkID或linkData不一致,则说明接口(interface)正常,但链路内容变化,转向步骤S340。
步骤S340,判断原链路oldlink的类型,并根据不同的类型进行不同的处理,然后转向步骤S330;
进一步地,所述步骤S340包括下列步骤:
步骤S341,如果是点到点(point-to-point)类型,则获得先前与宣告路由器建立起点到点(point-to-point)链路的邻居路由器ID,即原链路oldlink中的linkID,从拓扑图中删掉边,并从宣告路由器和邻居路由器数据结构中的单向邻居集合和双向邻居集合中删掉彼此的信息;
步骤S342,如果是transit network类型,则判断原链路oldlink中的linkID与linkData是否相等;
如果linkID与linkData相等,说明宣告路由器以前是一网段上的指定路由器(DR),现在指定路由器(DR)发生改变,从数据结构TransitnetMap中找到与之对应的条目,在拓扑图中删除指定路由器(DR)在该网段与普通路由器建立的边,将该条目从数据结构TransitnetMap中删除;
如果linkID与linkData不等,说明宣告路由器以前是一网段上的普通路由器,通过linkID获得网段指定路由器(DR)接口,从数据结构TransitnetMap找到与之对应条目,从拓扑图中删除宣告路由器与指定路由器(DR)之间的边,并从宣告路由器和指定路由器(DR)数据结构中的单向邻居集合和双向邻居集合中删掉彼此的信息,并从指定路由器(DR)的单向边关系的路由器集合NormalRouterSet和宣告路由器的单向邻居集合AttachedRouterSet中删除宣告路由器相关信息;
步骤S343,如果是stub network类型,则获得先前与宣告路由器建立起边关系的子网IP,即原链路oldlink中的linkData&linkID,从拓扑图中删掉该边;
步骤S344,如果是virtual link类型,则获得先前与宣告路由器建立起虚链路的邻居路由器ID,即原链路oldlink中的linkID,从拓扑图中删掉边,并从宣告路由器和邻居路由器数据结构中的单向邻居集合和双向邻居集合中删掉彼此的信息。
步骤S350,转向步骤S250进行分析处理;
步骤S360,NetworkLSA中的linkStateID和子网掩码相与之后,获得网段IP,查找数据结构TransitnetMap,找到该网段IP对应的条目transitNetInfo,查看该网段原指定路由器(DR)信息,并进行分析处理;
进一步地,所述步骤S360中,进行分析处理,包括下列步骤:
步骤S361,若原DR路由器ID与宣告路由器ID相等,以宣告路由器及区域作为查询条件,找到同一宣告路由器最近的NetworkLSA,记为oldNetworkLSA,遍历oldNetworkLSA中的每个邻居路由器attachedRouterID;
a)若attachedRouterID没有出现在新NetworkLSA的邻居路由器AttachedRouter中,则从拓扑图中删除宣告路由器到attachedRouterID的边,并从宣告路由器和attachedRouterID数据结构中的单向邻居集合和双向邻居集合中删掉彼此的信息;并且将attachedRouterID从宣告路由器的单向邻居集合AttachedRouterSet中删除;
b)若attachedRouterID出现在新NetworkLSA的邻居路由器attachedRouter中,则继续重复步骤S361;
步骤S362,若原指定路由器(DR)ID与宣告路由器ID不等,说明网段指定路由器(DR)改变,在拓扑图中删除原指定路由器(DR)在该网段与普通路由器建立的边,从宣告路由器和普通路由器数据结构中的单向邻居集合和双向邻居集合中删掉彼此的信息,并将网段IP对应的条目transitNetInfo从数据结构TransitnetMap中删除。
步骤S370,转向步骤S270~S280进行处理。
该阶段通过比较同一宣告路由器发出的不同内容的同类报文,对上层拓扑图及底层数据结构进行更新,并能定位出网络拓扑变化,供定位故障。
步骤S400,根据OSPF更新报文发现拓扑变化之后,结合开放最短路径优先协议(OSPF协议)定位网络异常。
根据OSPF更新报文(OSPF Update)发现拓扑变化之后,分析单元2结合OSPF协议定位网络异常,如路由器宕机、重启,链路的增加、中断,接口开启、关闭,网段指定路由器(DR)改变。
进一步地,所述步骤S400中定位网络异常,包括下列步骤:
步骤S410,若路由器与先前的邻居路由器之间的边都断开,在拓扑图中孤立,则推断该路由器宕机或重启;
步骤S420,若路由器A与先前的某一邻居路由器B之间的链路中断,则:
A1)若路由器A的RouterLSA报文导致链路中断,则推断路由器A与路由器B之间的接口出现问题;
B1)若路由器B的RouterLSA报文导致链路中断,则推断路由器B与路由器A之间的接口出现问题;
C1)若路由器A和B的RouterLSA报文都发生变化,则推断路由器A与B之间的网线出现问题;
步骤S430,若拓扑图中增加一条从路由器A到路由器B的链路,则:
A2)若路由器A的RouterLSA报文导致链路增加,则推断路由器A到B的接口开启;
B2)若路由器B的RouterLSA报文导致链路增加,则推断路由器B到A的接口开启;
步骤S440,若先前在同一个网段上的路由器集合中心节点改变,则推断该网段的指定路由器(DR)改变。
根据以上推断给出告警信息,便于网管人员定位、排查网络异常故障。
本发明的自治系统内网络异常定位系统和方法,利用OSPF链路状态广播(LSA)报文定位自治系统内网络异常,其通过路由信息采集探针5与每个区域内的任一路由器建立OSPF邻居关系,将收集到的OSPF更新报文(OSPFUpdate)发向分析单元2,分析单元2对接收到的OSPF Router LSA,OSPFNetwork LSA进行解析,根据报文内容及“双向”建立边关系原则,构建拓扑中节点或边的信息。该发明不依赖于OSPF LSA报文顺序,能在包乱序的情况下构建正确的拓扑,并为每个路由器分区域维护OSPF报文列表。本发明通过比较新收到的LSA和OSPF报文列表中同一宣告路由器发出的相同区域内的最近的一条同类型链路状态广播(LSA)报文,判断自治系统内拓扑的变化,并结合该变化及OSPF协议分析,定位自治系统内网络异常事件,包括路由器宕机、重起,链路的增加、中断,接口开启、关闭,网段DR改变等,帮助网管人员发现网络拓扑变化,协助定位网络异常。
通过以上结合附图对本发明具体实施例的描述,本发明的其它方面及特征对本领域的技术人员而言是显而易见的。
以上对本发明的具体实施例进行了描述和说明,这些实施例应被认为其只是示例性的,并不用于对本发明进行限制,本发明应根据所附的权利要求进行解释。

Claims (14)

1.一种自治系统内网络异常定位的方法,其特征在于,包括下列步骤:
步骤A,分析单元根据采集到的OSPF链路状态广播报文,如果该报文为自治系统中的宣告路由器第一次发出的OSPF链路状态广播报文,则构建拓扑,并根据拓扑的数据结构为每个路由器维护一个OSPF报文列表;
步骤B,在拓扑构建完成之后,如果路由信息采集探针又收到OSPF更新报文,则分析单元利用该OSPF链路状态广播报文与OSPF报文列表中同类型的链路状态广播报文进行比较,根据OSPF更新报文发现更新拓扑的变化;
步骤C,根据OSPF更新报文发现拓扑变化之后,结合OSPF协议定位网络异常;
所述步骤A包括下列步骤:
步骤A1,收到一条链路状态广播报文后,如果该报文为自治系统中的宣告路由器第一次发出的OSPF链路状态广播报文,则通过链路状态广播报文内容获得宣告路由器所在区域号,在自治系统所维护的区域列表中检索所述区域号;若检索到,转向步骤A2;否则,转向步骤A3;
步骤A2,判断收到的OSPF链路状态广播报文类型,如果是RouterLSA,则转向步骤A4;如果是NetworkLSA,则转向步骤A6;否则,结束返回;
步骤A3,建立一所述区域号的区域结构,写入自治系统所维护的区域OSPF报文列表中,转向步骤A2;
步骤A4,以宣告路由器ID为路由器ID建立路由器结构,并根据RouterLSA中宣告的路由器类型填充路由器结构,并根据路由器ID和类型在拓扑图中画出该路由器,并将其添加到所述区域号的路由器OSPF报文列表中,转向步骤A5;
步骤A5,遍历RouterLSA中的每条链路,记录到该路由器以所述区域号为索引的OSPF RouterLSA报文列表中,分类型处理,直到最后一条,然后结束返回;
步骤A6,以宣告路由器ID为路由器ID建立路由器结构,根据路由器ID在拓扑图中画出该路由器,并将其添加到所述区域号的路由器列表中; 
步骤A7,查找记录网段及指定路由器信息的数据结构中是否有该指定路由器信息;
若没有,创建一个新条目,将网段、DR接口、DR路由器ID信息填入,其中,DR表示指定路由器;
若已经存在,则填补信息空缺处,同时为单向边关系的路由器集合中的路由器添加宣告路由器的单向邻居关系;
步骤A8,遍历NetworkLSA中的邻居路由器,记录到该路由器以所述区域号为索引的OSPF NetworkLSA报文列表中,直到最后一条。
2.根据权利要求1所述的自治系统内网络异常定位的方法,其特征在于,所述步骤A之前还包括下列步骤:
步骤A’,将路由信息采集探针通过物理上部署到自治系统的OSPF区域中,实时被动地采集在该OSPF区域泛洪的链路状态广播报文,并传输给分析单元。
3.根据权利要求1或2所述的自治系统内网络异常定位的方法,其特征在于,所述步骤A中,所述的拓扑的数据结构包括:
自治系统数据结构:其包括该自治系统内区域列表,路由器列表,子网列表;
路由器信息数据结构:其包括路由器ID,类型,接口列表,OSPF RouterLSA列表,OSPF NetworkLSA列表,单向邻居集合,双向邻居集合;
记录网段及指定路由器信息的数据结构:包括网段IP,DR接口,DR路由器ID,通过该网段上普通路由器发出的RouterLSA与指定路由器建立单向边关系的路由器集合,通过DR的NetworkLSA获得该网段上普通路由器放入宣告路由器的单向邻居集合。
4.根据权利要求1所述的自治系统内网络异常定位的方法,其特征在于,所述步骤A5中,所述分类型处理,包括下列步骤:
步骤A51,对于点到点类型,如果linkData是宣告路由器的一个接口,linkID是邻居路由器的ID,记为neighborRouterID,则将neighborRouterID加入宣告路由器的单向邻居集合,并检查宣告路由器是否存在于neighborRouterID的单向邻居集合,若是,在拓扑图中画出边;否则,结束返回; 
步骤A52,对于transit network类型,如果linkData是宣告路由器的一个接口,linkID是宣告路由器所在网段DR的接口,则:
若linkData与linkID相等,说明宣告路由器是一网段上的指定路由器,从记录网段及指定路由器信息的数据结构中检索相应的指定路由器条目,若检索到,则填充相应信息,并为宣告路由器的单向邻居集合中所有路由器建立它们与指定路由器的单向邻居关系;若没有检索到,将该接口和宣告路由器ID放入记录网段及指定路由器信息的数据结构;
若linkData与linkID不相等,说明宣告路由器是一网段上的普通路由器,查询记录网段及指定路由器信息的数据结构中是否有该网段DR信息;
若没有,则结束返回;若有,则根据该接口获得网段指定路由器的ID,记为neighborRouterID,将neighborRouterID加入宣告路由器的单向邻居集合;
检查宣告路由器是否存在于neighborRouterID的单向邻居集合;
若是,在拓扑图中画出边;若没有,建立一条以linkID为DR接口的条目放入记录网段及指定路由器信息的数据结构,将未知的信息置空,并将宣告路由器放入该条目中的单向边关系的路由器集合中,标记其尚未记录DR单向邻居关系;
步骤A53,对于stub network类型,以linkData子网IP和linkID子网掩码,即以子网IP相与子网掩码的结果为子网ID,建立一个子网结构,在拓扑图中画出该子网,并将其添加到所述区域号的子网OSPF报文列表中,画出宣告路由器与该子网之间边的关系;
步骤A54,对于virtual link类型,如果linkData是宣告路由器的一个接口,linkID是邻居路由器的ID,记为neighborRouterID,则将neighborRouterID加入宣告路由器的单向邻居集合,并检查宣告路由器是否存在于neighborRouterID的单向邻居集合,若是,在拓扑图中画出边;
步骤A55,重复执行步骤A5。
5.根据权利要求1或2所述的自治系统内网络异常定位的方法,其特征在于,所述步骤B包括下列步骤:
步骤B1,在路由信息采集探针收到使拓扑改变的OSPF更新报文后,判断收到的OSPF链路状态广播报文类型,如果是RouterLSA,转向步骤B2;如果是NetworkLSA,转向步骤B6;否则结束返回; 
步骤B2,获得该条RouterLSA的宣告路由器ID,及所在区域号,以宣告路由器及区域作为查询条件,找到同一宣告路由器最近的RouterLSA,记为oldRouterLSA;
步骤B3,遍历同一宣告路由器最近的oldRouterLSA中的每一条原链路,在新的RouterLSA中检索宣告该原链路的接口,并进行分析转到步骤B4处理,直到最后一条,然后转向步骤B5;
步骤B4,判断原链路的类型,并根据不同的类型进行不同的处理,然后转向步骤B3;
步骤B5,转向步骤A5进行分析处理;
步骤B6,NetworkLSA中的linkStateID和子网掩码相与之后,获得网段IP,查找记录网段及指定路由器信息的数据结构,找到该网段IP对应的条目,查看该网段原指定路由器信息,并进行分析处理;
步骤B7,转向步骤A7~A8进行处理。
6.根据权利要求5所述的自治系统内网络异常定位的方法,其特征在于,所述步骤B3包括下列步骤:
步骤B31,若在当前的RouterLSA中没有检索到接口,说明宣告路由器接口减少,初步判定路由器接口出现故障,转入步骤B4;
步骤B32,如检索到接口但链路中内容不一致,包括链路类型、linkID或linkData不一致,则说明接口正常,但链路内容变化,转向步骤B4。
7.根据权利要求5所述的自治系统内网络异常定位的方法,其特征在于,所述步骤B4包括下列步骤:
步骤B41,如果是点到点类型,则获得先前与宣告路由器建立起点到点链路的邻居路由器ID,即原链路中的linkID,从拓扑图中删掉边,并从宣告路由器和邻居路由器数据结构中的单向邻居集合和双向邻居集合中删掉彼此的信息;
步骤B42,如果是transit network类型,则判断原链路中的linkID与linkData是否相等;
如果linkID与linkData相等,说明宣告路由器以前是一网段上的指定路由器,现在指定路由器发生改变,从记录网段及指定路由器信息的数据结构中找 到与之对应的条目,在拓扑图中删除指定路由器在该网段与普通路由器建立的边,将该条目从记录网段及指定路由器信息的数据结构中删除;
如果linkID与linkData不等,说明宣告路由器以前是一网段上的普通路由器,通过linkID获得网段指定路由器接口,从记录网段及指定路由器信息的数据结构找到与之对应条目,从拓扑图中删除宣告路由器与指定路由器之间的边,并从宣告路由器和指定路由器数据结构中的单向邻居集合和双向邻居集合中删掉彼此的信息,并从指定路由器的单向边关系的路由器集合和宣告路由器的单向邻居集合中删除宣告路由器相关信息;
步骤B43,如果是stub network类型,则获得先前与宣告路由器建立起边关系的子网IP,即原链路中的linkData相与linkID,从拓扑图中删掉该边;
步骤B44,如果是virtual link类型,则获得先前与宣告路由器建立起虚链路的邻居路由器ID,即原链路中的linkID,从拓扑图中删掉边,并从宣告路由器和邻居路由器数据结构中的单向邻居集合和双向邻居集合中删掉彼此的信息。
8.根据权利要求5所述的自治系统内网络异常定位的方法,其特征在于,所述步骤B6中,所述分析处理,包括下列步骤:
步骤B61,若原指定路由器ID与宣告路由器ID相等,以宣告路由器及区域作为查询条件,找到同一宣告路由器最近的NetworkLSA,记为oldNetworkLSA,遍历oldNetworkLSA中的每个邻居路由器;
若邻居路由器ID没有出现在新NetworkLSA的邻居路由器中,则从拓扑图中删除宣告路由器到邻居路由器ID的边,并从宣告路由器和邻居路由器ID数据结构中的单向邻居集合和双向邻居集合中删掉彼此的信息;并且将邻居路由器ID从宣告路由器的单向邻居集合中删除;
若邻居路由器ID出现在新NetworkLSA的邻居路由器中,则继续,重复步骤B61;
步骤B62,若原指定路由器ID与宣告路由器ID不等,说明网段指定路由器改变,在拓扑图中删除原指定路由器在该网段与普通路由器建立的边,从宣告路由器和普通路由器数据结构中的单向邻居集合和双向邻居集合中删掉彼此的信息,并将网段IP对应的条目从记录网段及指定路由器信息的数据结构中删除。 
9.根据权利要求1或2所述的自治系统内网络异常定位的方法,其特征在于,所述步骤C中,所述定位网络异常,包括下列步骤:
若路由器与先前的邻居路由器之间的边都断开,在拓扑图中孤立,则推断该路由器宕机或重启;
若路由器与先前的一邻居路由器之间的链路中断,则若所述路由器的RouterLSA报文导致链路中断,则推断所述路由器与先前的一邻居路由器之间的接口出现问题;若先前的一邻居路由器的RouterLSA报文导致链路中断,则推断先前的一邻居路由器与所述路由器之间的接口出现问题;若所述路由器和先前的一邻居路由器的RouterLSA报文都发生变化,则推断所述路由器与先前的一邻居路由器之间的网线出现问题;
若拓扑图中增加一条从一路由器到另一路由器的链路,则若所述路由器的RouterLSA报文导致链路增加,则推断所述路由器到所述另一路由器的接口开启;若所述另一路由器的RouterLSA报文导致链路增加,则推断所述另一路由器到所述路由器的接口开启;
若先前在同一个网段上的路由器集合中心节点改变,则推断该网段的指定路由器改变。
10.一种自治系统内网络异常定位的系统,其特征在于,包括:
分析单元,用于根据采集的OSPF链路状态广播报文构建拓扑,并在拓扑构建完成之后,根据路由信息采集探针收到的使拓扑改变的OSPF更新报文发现拓扑的变化,然后结合OSPF协议定位网络异常;
路由信息采集探针,用于通过物理上部署到自治系统的OSPF区域,通过隧道连通到网络中,与网络中每个OSPF区域的运行OSPF协议的路由器建立邻接关系,实时被动地采集在该OSPF区域泛洪的链路状态广播报文,并将采集到的链路状态广播报文发送给所述分析单元;
其中,分析单元根据采集到的OSPF链路状态广播报文,如果该报文为自治系统中的宣告路由器第一次发出的OSPF链路状态广播报文,则构建拓扑,并根据拓扑的数据结构为每个路由器维护一个OSPF报文列表;
在拓扑构建完成之后,如果路由信息采集探针又收到OSPF更新报文,则分析单元利用该OSPF链路状态广播报文与OSPF报文列表中同类型的链路状态广播报文进行比较,根据OSPF更新报文发现更新拓扑的变化; 
根据OSPF更新报文发现拓扑变化之后,分析单元结合OSPF协议定位网络异常;
其中,所述分析单元根据采集到的OSPF链路状态广播报文,如果该报文为自治系统中的宣告路由器第一次发出的OSPF链路状态广播报文,则构建拓扑,并根据拓扑的数据结构为每个路由器维护一个OSPF报文列表具体为:
步骤A1,收到一条链路状态广播报文后,如果该报文为自治系统中的宣告路由器第一次发出的OSPF链路状态广播报文,则分析单元通过链路状态广播报文内容获得宣告路由器所在区域号,在自治系统所维护的区域列表中检索所述区域号;若检索到,转向步骤A2;否则,转向步骤A3;
步骤A2,判断收到的OSPF链路状态广播报文类型,如果是RouterLSA,则转向步骤A4;如果是NetworkLSA,则转向步骤A6;否则,结束返回;
步骤A3,建立一所述区域号的区域结构,写入自治系统所维护的区域OSPF报文列表中,转向步骤A2;
步骤A4,以宣告路由器ID为路由器ID建立路由器结构,并根据RouterLSA中宣告的路由器类型填充路由器结构,并根据路由器ID和类型在拓扑图中画出该路由器,并将其添加到所述区域号的路由器OSPF报文列表中,转向步骤A5;
步骤A5,遍历RouterLSA中的每条链路,记录到该路由器以所述区域号为索引的OSPF RouterLSA报文列表中,分类型处理,直到最后一条,然后结束返回;
步骤A6,以宣告路由器ID为路由器ID建立路由器结构,根据路由器ID在拓扑图中画出该路由器,并将其添加到所述区域号的路由器列表中;
步骤A7,查找记录网段及指定路由器信息的数据结构中是否有该指定路由器信息;
若没有,创建一个新条目,将网段、DR接口、DR路由器ID信息填入,其中,DR表示指定路由器;
若已经存在,则填补信息空缺处,同时为单向边关系的路由器集合中的路由器添加宣告路由器的单向邻居关系;
步骤A8,遍历NetworkLSA中的邻居路由器,记录到该路由器以所述区域号为索引的OSPF NetworkLSA报文列表中,直到最后一条。 
11.根据权利要求10所述的自治系统内网络异常定位的系统,其特征在于,所述分析单元包括构建模块、更新模块和判断模块,其中:
所述构建模块,用于根据路由信息采集探针采集发来的自治系统内各个区域的OSPF链路状态广播报文,如果该报文为自治系统中的宣告路由器第一次发出的OSPF链路状态广播报文,则构建拓扑,并根据拓扑的数据结构得到OSPF报文列表;
所述更新模块,用于在拓扑构建完成之后,根据路由信息采集探针采集到的OSPF更新报文,对接收到的OSPF Router LSA,OSPF Network LSA报文进行解析,根据报文内容及拓扑的边关系,更新拓扑中的节点或者边的信息;
所述判断模块,用于通过比较新收到的链路状态广播报文和所述OSPF报文列表中同一宣告路由器发出的相同区域内的最近一条同类型链路状态广播报文,判断自治系统内拓扑的变化,并结合该变化及OSPF协议分析,定位自治系统内的网络异常事件。
12.根据权利要求10所述的自治系统内网络异常定位的系统,其特征在于,还包括报文区分模块,用于区分路由信息采集探针和分析单元之间传输的报文的类型。
13.根据权利要求12所述的自治系统内网络异常定位的系统,其特征在于,所述报文类型一类是路由信息采集探针通过与网络中的OSPF路由器建立邻居关系而得到的路由更新报文;另一类是路由采集探针所发送的与网络中OSPF路由器之间的邻居关系建立或者丢失的应用层控制报文。
14.根据权利要求12所述的自治系统内网络异常定位的系统,其特征在于,还包括配置模块,用于对路由信息采集探针覆盖范围内的路由器进行OSPF配置,使路由信息采集探针与自治系统内建立隧道的路由器建立起OSPF全邻接关系,采集到区域内各路由器的报文信息。 
CN2008101027063A 2008-03-25 2008-03-25 一种自治系统内网络异常定位的系统和方法 Active CN101547125B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2008101027063A CN101547125B (zh) 2008-03-25 2008-03-25 一种自治系统内网络异常定位的系统和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2008101027063A CN101547125B (zh) 2008-03-25 2008-03-25 一种自治系统内网络异常定位的系统和方法

Publications (2)

Publication Number Publication Date
CN101547125A CN101547125A (zh) 2009-09-30
CN101547125B true CN101547125B (zh) 2011-08-03

Family

ID=41194034

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008101027063A Active CN101547125B (zh) 2008-03-25 2008-03-25 一种自治系统内网络异常定位的系统和方法

Country Status (1)

Country Link
CN (1) CN101547125B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102273133B (zh) * 2011-04-29 2013-04-17 华为技术有限公司 网络故障诊断方法及装置和系统
CN104168154B (zh) * 2014-07-31 2018-01-02 中国人民解放军91655部队 面向网络态势感知的多级别网络系统及其构建方法
CN105024866B (zh) * 2015-08-17 2018-06-26 中国科学院计算技术研究所 一种IS-ISv6网络路由配置异常检测系统及方法
CN105306362B (zh) * 2015-09-18 2018-08-10 中国科学院计算技术研究所 基于IPv6的OSPF网络路由信息的被动采集方法及系统
CN105262691B (zh) * 2015-10-30 2018-04-06 上海斐讯数据通信技术有限公司 一种快速清除ospf无效lsa的方法及设备
CN105939207B (zh) * 2015-11-26 2017-06-23 北京匡恩网络科技有限责任公司 一种基于网络探针的网络拓扑自动发现方法
CN107547259A (zh) * 2017-07-21 2018-01-05 合肥未来计算机技术开发有限公司 一种拓扑发现监测装置
CN110995587B (zh) * 2019-12-10 2020-12-25 北京邮电大学 一种路由不稳定事件源定位方法及装置
CN112383419B (zh) * 2020-11-03 2022-08-05 晏平 Ospf网络问题告警方法、装置、计算机设备及存储介质
CN114006800B (zh) * 2021-10-11 2023-12-05 中盈优创资讯科技有限公司 一种基于igp-spf算法的设备脱网告警方法及装置
CN114095393B (zh) * 2022-01-20 2022-08-23 北京天维信通科技有限公司 自动挂载检测探针的sd-wan新建隧道节点监测方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1905512A (zh) * 2006-08-17 2007-01-31 北京邮电大学 开放最短路径优先路由协议的监测与分析系统及工作方法
CN101009702A (zh) * 2006-12-31 2007-08-01 中国科学院计算技术研究所 一种ospf全邻接条件下lsa被动式采集方法
CN101094117A (zh) * 2007-06-29 2007-12-26 中国科学院计算技术研究所 一种自动检测ospf多路访问网络上路由器链路中断的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1905512A (zh) * 2006-08-17 2007-01-31 北京邮电大学 开放最短路径优先路由协议的监测与分析系统及工作方法
CN101009702A (zh) * 2006-12-31 2007-08-01 中国科学院计算技术研究所 一种ospf全邻接条件下lsa被动式采集方法
CN101094117A (zh) * 2007-06-29 2007-12-26 中国科学院计算技术研究所 一种自动检测ospf多路访问网络上路由器链路中断的方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
尤澜涛 等.基于OSPF的网络拓扑快速发现系统的设计.《计算机工程》.2006,第32卷(第24期), *
徐建锋 等.基于OSPF服务器的网络拓扑发现.《计算机应用》.2004,第24卷(第8期), *

Also Published As

Publication number Publication date
CN101547125A (zh) 2009-09-30

Similar Documents

Publication Publication Date Title
CN101547125B (zh) 一种自治系统内网络异常定位的系统和方法
CN101547114B (zh) 一种自治系统内的拓扑处理系统和方法
CN101252488B (zh) 一种多自治系统路由器级拓扑处理系统和方法
CN101282241B (zh) 一种自治系统内的实时网络路由拓扑处理系统及方法
CN104168154B (zh) 面向网络态势感知的多级别网络系统及其构建方法
CN103718519B (zh) 实现分离式架构网络中的ospf
CN100394742C (zh) 开放最短路径优先路由协议的监测与分析系统及工作方法
CN102215136B (zh) 流量拓扑生成方法和装置
Oliveira et al. The (in) completeness of the observed Internet AS-level structure
CN101399771B (zh) 在多域网络内传达风险信息的方法和设备
CN106992891A (zh) 一种针对ospf网络的路由配置异常检测方法及系统
CN100388695C (zh) 互联网的域间路由监测与分析系统及其工作方法
US20020103631A1 (en) Traffic engineering system and method
CN101917434B (zh) 域内ip源地址验证的方法
CN100550859C (zh) 一种自治系统级网络路由拓扑构建方法
CN103607326A (zh) 在链路状态控制的以太网络中的连续性检查管理
JP2004508743A (ja) インターネットルート非集合およびルート選択参照
Le et al. Shedding light on the glue logic of the internet routing architecture
Wang et al. On understanding transient interdomain routing failures
Gregori et al. BGP and inter-AS economic relationships
CN110519163A (zh) 检测环网络中点对多点标签交换路径的出口
CN105637806B (zh) 网络拓扑确定方法和装置、集中式网络状态信息存储设备
CN106302351A (zh) 收集访问控制列表的方法、装置及系统
CN101330411A (zh) 一种模拟大规模网络拓扑的方法和系统
CN105812168A (zh) 一种绘制网络拓扑图的方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: G-CLOUD TECHNOLOGY CO., LTD.

Free format text: FORMER OWNER: INSTITUTE OF COMPUTING TECHNOLOGY, CHINESE ACADEMY OF SCIENCES

Effective date: 20130124

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 100080 HAIDIAN, BEIJING TO: 523808 DONGGUAN, GUANGDONG PROVINCE

TR01 Transfer of patent right

Effective date of registration: 20130124

Address after: 523808 Guangdong province Dongguan City Songshan Lake Science and Technology Industrial Park Building No. 14 Keyuan pine

Patentee after: G-Cloud Technology Co., Ltd.

Address before: 100080 Haidian District, Zhongguancun Academy of Sciences, South Road, No. 6, No.

Patentee before: Institute of Computing Technology, Chinese Academy of Sciences

CP02 Change in the address of a patent holder

Address after: 523808 19th Floor, Cloud Computing Center, Chinese Academy of Sciences, No. 1 Kehui Road, Songshan Lake Hi-tech Industrial Development Zone, Dongguan City, Guangdong Province

Patentee after: G-Cloud Technology Co., Ltd.

Address before: 523808 No. 14 Building, Songke Garden, Songshan Lake Science and Technology Industrial Park, Dongguan City, Guangdong Province

Patentee before: G-Cloud Technology Co., Ltd.

CP02 Change in the address of a patent holder