在/etc/services文件中添加如下内容:
5 BGP监测
基于路径的AS级拓扑发现算法,其拓扑信息来自于BGP更新消息及BGP路由表。从BGP路由表中可获得路径属性,包括AS路径(AS path)、下一跳(Next Hop)、起源(Origin)。其中,AS path属性被BGP用来确保无环路环境;下一跳属性说明了用于去往目的地的下一跳IP地址;起源属性定义路径信息的起源,它可以是下列3个值之一:(1)IGP,说明路由在起始AS的内部,在BGP表中用"i"表示;(2)EGP,说明路由通过外部网关协议而学到,在BGP表中用“e”表示;(3)不完全,说明路由起源未知或通过别的方法学到,该条路径可能不完整,在BGP表中用“?”表示。
以下是BGP路由表的一个片断,其中由符号“*”标记的每1行,代表1条记录。记录的1l列Network指出目的IP,该列的值或者为一个单独的IP地址(如126.0.0.0)或者为一个网段的IP地址,包括掩码(如128.0.0.0/3)。第2列NextHop指明AS路径中第1跳的IP地址。第3列Metric LocPrfWeight是该条路径的权值。第4列Path即为从源IP(198.32.162.100)到目的IP的AS路径。路径结尾的字符“i”,“e”和“?”即为起源属性。“*”标记后紧跟着“>”标记,表明该条路径是最优路径,其他的为合法路径。
基于路径的AS级拓扑发现算法的基本思路,即获取BGP路由表,通过分析得到AS路径的相关信息。从而构造AS级骨干网拓扑,进一步获取BGP更新消息,不断修改完善拓扑结构。图2所示为BGP拓扑实例。
AS1表示AS号为AS1的router,其余类推。其中Zebra是配置了Zebra软件的、逻辑上相当于一个AS的router。它和AS1的speaker交互操作。图2中虚线表示在zebra的router的BGP路由表中一条路由记录中的AS_PATH中的AS号。通过图2可以获得图3所示的拓扑信息。
按上述方式就可以逐步发现拓扑关系,但还没有明确该拓扑图中各个AS对应的BGP router的IP。对路由表中的每一行,均存在一个prefix和as_path,其中as_path是一个数组,如图2的每一个虚线内所列;其中在as_path中第1个AS号永远是neighbor,也就是图2中的AS1。而最后一个则为和prefix对应的AS号。
通过这种方式,实现了BGP拓扑信息的获取,具体软件结构如图4所示。实现的界面如图5所示。
6 结语
提出了BGP路由监测策略,将一个具有部分路由器功能的监测代理连接到网络中的一台BGP边界路由器上,通过两者之间的BGP协议交互,监测代理可捕获关于整个网络的路由信息。由于监测代理不能进行包的转发,且不主动发送路由信息,因此不能对网络和路由器造成太大的负担。该策略能够有效监测全网的路由变化情况,并通过可视化的手段创建了良好的人机交互界面。