发明内容
为了实时全面地监测域间路由不稳定状况,通常和多个路由器建立对等关系,这些路由器也因此叫做对等路由器或者对等体。我们周期性地分析T内的不稳定状况。选取的周期T应该可以使得大部分的前缀能够出现至少两次路由的变化,过短和过长的周期T都不利于对不稳定状况的监测和分析。实验统计发现,有98%的前缀可以出现至少两次路由变化。
一种域间路由不稳定性的分析方法,其特征在于,从分析<对等体、前缀>二元组的边界网关协议(BGP)更新消息序列出发,提出相应的分析指标和方法,在以下四个不同层面对域间路由的不稳定性进行分析:(1)特定<对等体、前缀>二元组的路由不稳定状况;(2)到指定前缀的路由不稳定状况;(3)网络局部的路由不稳定状况;(4)网络整体的路由不稳定状况。
1不稳定事件定义
BGP是路径向量路由协议,域间路由不稳定性主要体现在自治系统
(AS)级的路由变化,为了对四个层面的路由不稳定状况进行分析,根据能否反映AS级路由变化,定义如下三类路由不稳定事件:重复宣告:它是两个连续且重复的路由宣告,这里重复的路由宣告是指:后面路由宣告的AS_PATH属性值和前面宣告并被隐式撤销的AS级路由相同。这表明一条路由被隐式撤销且被重复的路由代替。该事件不反映AS级路由的变化,但它可能反映了病态行为或路由策略的改变。这种重复的路由宣告过多,会加重路由器的负载,降低路由系统的工作稳定性。冗余撤销:它是两个连续关于同一不可达前缀的BGP撤销消息。到某一前缀的路由被显式撤销之后,不应该再发出对该不可达前缀的撤销消息,所以这种撤销是多余的。如果这种多余的撤销消息过多,会加重路由器的负载,降低路由系统的工作稳定性。
路由波动:这有两种情况:1)一条路由在它不可达时被显式或隐式地撤销,后来它又被另一条到达相同目的的不同路由所代替。这对应于A1W+A2和A1A2消息序列,反映了AS级路由变化。其中A1和A2表示具有不同ASPATH属性值的前缀P的路由宣告,“W+”表示一个或多个对前缀P的路由撤销。2)一个路由在不可达时被显式地撤销,然后又被宣布可达。这对应A1W+A1消息序列,反映了短暂的拓扑故障(链路或者是路由器)。我们可以把这两种情况看成两类事件。
2特定<对等体、前缀>二元组的路由不稳定状况
该层面的分析是最基本的,它展示了特定对等体Peer到特定前缀Prefix的路由不稳定状况。我们把BGP更新消息按<对等体、前缀>二元组分组。对每一组消息,按时间先后顺序排列。选取对应于<Peer,Prefix>的BGP消息序列组,我们考察如下指标:
1)路由持续时间和有效时间
BGP宣告消息的AS PATH属性中的AS序列代表从Peer到Prefix的一条AS级路由R,路由R从宣告到被显式或隐式撤销的时间可以称为该路由的一次生存期。只要这次生存期与分析时间T有重叠,我们就称该路由R在时间T内出现一次,其重叠部分的时间就是在T内该路由一次出现的持续时间。设该路由在T内出现并持续了n次,n次持续时间的总和称为该路由的有效时间,记为A(R)。<Peer,Prefix>的路由可能有若干条,其中有效时间最长的路由称为主路由。A(R)/n定义为路由R在T内的持续时间,记为Aavg(R)。持续时间说明路由出现后持久的程度,如果在分析时间内路由R出现并持续了n次,那么n次持续时间之和称为该路由的有效时间,持续时间和有效时间越长,说明该路由越稳定。
2)前缀可达时间和前缀可达持续时间
在分析时间T内,所有出现的路由的有效时间之和记为RT,定义为<Peer,Prefix>的前缀可达时间。如果所有路由在T内总共出现N次,则RT/N定义为<Peer,Prefix>的前缀可达持续时间,记为RTavg。前缀可达时间长,表明该前缀可达性良好。较差的可达性反映了路由较差的稳定性。前缀可达持续时间说明了前缀可达状态持久的程度,持续时间越长,到该前缀的路由越稳定。
3)平均路径长度
设AS(R)表示路由R经过的AS数量,对T内出现的所有路由,
定义为<Peer,Prefix>的平均路径长度。虽然也有一些特殊情况,但是一般来说路径越长,不稳定的概率越大。
4)事件频度
单位时间内不稳定事件发生的数量定义为事件频度。事件频度越高,表明路由的不稳定性越大。我们可以统计T内发生的事件数量来计算<Peer,Prefix>的事件频度,也可以用(T内发生事件的次数/T)计算更小单位时间的事件频度。
3到指定前缀的路由不稳定状况
第2节前缀的数量可达十几万或更多,我们不必要也不可能对它们逐一考察。本节在第2节的基础上,分析所有对等体到指定前缀的不稳定状况,展示出被监测网络中到指定前缀的整体不稳定状况。当发现它不稳定时,再通过第2节做更具体的考察。我们考察如下指标:
1)前缀可达时间和前缀可达持续时间
我们使用均值来概括整体状况。设集合PEER={Peer|Peer是一个对等体,被监测网络中指定前缀Prefix是Peer的可达前缀},C(PEER)表示PEER中对等体的个数,
定义为被监测网络中指定前缀Prefix的可达时间。类似的,
定义为被监测网络中指定前缀Prefix的可达持续时间。其中RT(Peer,Prefix)和RTavg(Peer,Prefix)是对应于<Peer,Prefix>的前缀可达时间和前缀可达持续时间。
2)被监测网络中指定前缀Prefix的事件频度
同前面类似,如果Event(Peer,Prefix)是对应于<Peer,Prefix>的某类事件的频度,则
为任一Peer到Prefix的某类事件平均频度,定义为被监测网络中指定前缀Prefix的事件频度。
4网络局部的路由不稳定状况
每个对等路由器观察到的是整个被监测网络局部的BGP路由活动,本节在第2节的基础上,分析从指定对等体到其所有可达前缀的整体路由不稳定状况,反映出网络某一局部范围的路由不稳定状况,或者可以说成局部于特定对等体的不稳定状况。我们做如下分析:
1)局部前缀可达时间和局部前缀可达持续时间
设时间T内,指定对等体Peer的所有可达前缀的集合是P,Prefix是P中的一个前缀,C(P)表示P的前缀个数,则
为Peer到P中所有可达前缀的平均可达时间,定义为局部前缀可达时间。 为Peer到P中所有可达前缀的平均可达持续时间,定义为局部前缀可达持续时间。其中RT(Peer,Prefix)和RTavg(Peer,Prefix)分别表示<Peer,Prefix>的前缀可达时间和前缀可达持续时间。
2)Peer的局部事件频度
同上面的方法类似,若Event(Peer,Prefix)表示<Peer,Prefix>的某类事件频度,则
为Peer到其任一可达前缀的某类事件平均频度,定义为Peer的局部事件频度。
5网络整体的路由不稳定状况
有时候我们关心整个被监测网络的不稳定状况,第3节和第4节的分析无法给出。下面在第3节的基础上,分析从所有对等体看到的,网络到任一可达前缀的路由不稳定状况,反映出被监测网络整体的稳定状况。我们做如下分析:
1)被监测网络的前缀可达时间和被监测网络的前缀可达持续时间
如果用PEER表示所有对等体的集合,Peer是其中的一个对等体,CP(Peer)表示Peer的所有可达前缀的数量,则
定义为被监测网络的前缀可达时间,把表达式中的RT(Peer)换成RTavg(Peer),则得到的表达式定义为被监测网络的前缀可达持续时间;
一个对等体的可达前缀较多,其观察到的局部范围则会较广,因此它所观察到的局部不稳定状况越能代表整体状况。基于这种思想,如果用PEER表示所有对等体的集合,Peer是其中的一个对等体,CP(Peer)表示Peer的所有可达前缀的数量,RT(Peer)和RTavg(Peer)分别表示第4节的前缀可达时间和可达持续时间,则
定义为被监测网络的前缀可达时间;把表达式中的RT(Peer)换成RTavg(Peer),则得到的表达式定义为被监测网络的前缀可达持续时间。
2)被监测网络整体事件频度
和前面一样,如果Event(Peer)表示第4节的Peer的局部事件频度,把上面表达式中的RT(Peer)换成Event(Peer),则得到的表达式定义为被监测网络整体的事件频度。
6基本实现步骤
为了达到实现上面提出的分析指标的目的,在实际的系统中可以按照这样的步骤:
(1)和多个路由器(称为对等路由器)建立对等关系,收集来自它们的BGP更新消息。
(2)根据收集到的数据,在特定<对等体、前缀>二元组层面进行各个基本指标的分析。其中对于不稳定事件频度指标,需要首先按照1种的定义来识别出不稳定事件。
(3)在到指定前缀,网络局部,网络整体层面进行各个指标的分析。
(4)输出各个层面上各种指标的分析结果。
具体实施方式
我们在Linux下用C语言开发了相关的分析工具FlapView。它读取BGP原始消息数据文件。它首先对<对等体、前缀>二元组层面进行分析,包括前缀可达时间、前缀可达持续时间、不稳定事件频度、路径长度、路由数量、路由波动差距这些基本指标,在此基础上分析了其它三个层面的路由不稳定性。分析结果以XML格式输出,可以保存在数据库或者特定的文件中。用户可以指定分析周期、分析结果存放的文件等参数。
图1工具中各个模块的介绍如下:
●MRT(Multi-threaded Routing Toolkit多线程路由工具包(一种路由信息导出格式))数据解析模块:该模块从文件读取路由信息数据,解析MRT数据格式,得到分析需要的路由表和路由更新信息数据。
●分析树初始化模块:在开始分析路由更新信息前,需要用分析起始时刻的路由表,生成起始时刻的分析树,这时的分析树含有完整的起始时刻的<Peer,Prefix>路由状态信息。
●基本指标分析模块:从MRT数据解析模块那里获得路由跟新信息,结合分析树分析<Peer,Prefix>的指标。
●数据存储模块:各分析模块通过它把分析结果存储到数据库或者文件中。
●网络局部分析模块:从基本分析指标数据库中读基本指标,然后分析每一个Peer的网络局部不稳定性的指标,最后把结果发送给数据存储模块和网络整体分析模块。
●网络整体分析模块:在网络局部分析指标上得到网络整体不稳定性的指标值。
●到指定前缀的分析模块:分析到指定前缀的路由不稳定性指标。前缀在相关的配置文件中指定。