基于BGP协议分析的AS域流量监控系统的
设计与实现
录显明
北京邮电大学信息处理与智能技术重点实验室,北京(100876)
E-mail:lxm913@hotmail
摘要:通过对BGP协议的分析,可以提取出各个AS域所对应开放的路由信息,之后我们可以根据这些路由来进行AS域的流量监测与控制。基于这一理论,本文提出了一个实现该功能的系统模型,并就了各部分模块的功能进行了说明。
关键词:BGP协议分析,AS号码资源,流量监控
1. 前言
由于一个AS域号通常代表了一个网络,比如一个ISP、一个学术网或一个企业团体等组织,所以通过对某
一AS域的流量进行监测,我们可以确定该AS域的网络流量走向统计,进而达到资源合理调度的目的。这对于运营商来说可以用来调度网络的配置,比如对于中国电信(AS4810)来说,通过监测AS域流量,我们发现去往教育网(AS4789)的流量很大,但是网速很慢,则电信就可以多开放一些去往教育网的路由,或者可以提供通往教育网的高速有偿服务,来达到资源的合理调度;再有,如果电信发现有大量的流量是从教育网出来的,但是流经电信去了移动(AS24059),则电信就可以减少一些去往移动的路由或者进行收取过路费的有偿服务。即有AS域的流量监控系统通过对网络出口流量和流向的分析,可以详细了解本地AS域网络与其他外部AS域网络之间的访问情况,从而有效地选择与其他网络的互联方式和互联地点,节约互联链路费用。
2. BGP协议介绍
AS(Autonomous System 自治域)指一个具有统一管理机构、统一路由策略的网络。自治域内部采用的路由选择协议称为内部网关协议,常用的有RIP、OSPF;外部网关协议主要用于多个自治域之间的路由选择,常用的是BGP。
在各个AS中分配有称作“AS号”的全世界不重复的固定号码,以IANA为中心进行管理。通常,一个AS号被分配给一个ISP(学术网和企业网等ISP以外的组织也能取得AS号)。
作为外部网关协议,BGP(Border Gateway Protocol边界网关协议)发送和引入路由的单位是整个AS
自治区域,即BGP要发送本地路由器所在的AS内部的所有路由,引入其它AS自治区域的所有路由。它的主要功能是与其它自治域的BGP交换网络可达信息和自治域路径信息。
网络可达信息就是指路由信息,它是发出该条信息的AS域所开放的IP地址列表。自治域路径信息则包括到达某个特定网络须经过的自治域串(AS号列表)。这些更新信息通过TCP传送出去,以保证传输的可靠性。
2.1 BGP协议的路由信息交互过程
BGP采用发送路由增量(Incremental)的方法,完成全部路由信息的通告和维护:初始化时发送所有的路由给BGP对端(BGP Peer),同时在本地保存了已经发送给BGP对端的路由信息。当本地的BGP收到了一条新路由时(如通过IGP注入了新路由或加入了新的静态路
由),与保存的已发送信息进行比较,如未发送过,则发送,如已发送过则与已经发送的路由进行比较,如新路由花费更小,则发送此新路由,同时更新已发送信息,反之则不发送。当本地BGP发现一条路由失效时(如对应端口失效),如此路由已发送过,则向BGP对端发送一个退出路由消息。
BGP路由信息发送采用TCP连接,端口号为179。
2.2 BGP协议格式
BGP有4种类型的消息[1]。分别为OPEN,UPDATE,KEEPALIVE和NOTIFY。它们有相同的消息头。
⑴消息头结构:
Marker : (16字节) 鉴权信息;
Length :(2字节) 消息的长度;
Type :(1字节) 消息的类型:0 -OPEN、1 -UPDATE、2-NOTIFICATION、3 -KEEPALIVE。
⑵OPEN消息结构:
Version :(1字节) 发端BGP版本号;
My Autonomous System :(2字节无符号整数) 本地AS号;
Hold Time :(2字节无符号整数) 发端建议的保持时间;
BGP Identifier :(4字节) 发端的路由器标识符;
OptParmLen :(1字节) 可选的参数的长度;
Optional Parameters :(变长) 可选的参数。
⑶KEEPALIVE消息结构
KEEPALIVE消息只有一个消息头。
⑷NOTIFY消息结构
Error code:(1字节) 错误代码;
Error subcode :(1字节) 辅助错误代码;
Data :(变长) 依赖于不同的错误代码和辅助错误代码,用于诊断错误原因。
⑸UPDATE消息结构
Unfeasible Routes Len :(2字节无符号整数) 不可达路由长度;
Withdrawn Routes :(变长) 退出路由;
Path Attribute Len :(2字节无符号整数) 路径属性长;
Path Attributes :(变长) 路径属性(以下详细说明);
Network Layer Reachability Information :(变长) 网络可达信息(信宿)。
其中退出路由和信宿地址的表示方法为一的二元组。length一个字节,指示地址前缀的长度。prefix为地址前缀,长度1至4字节。
2.3 BGP的路径属性
每个路径属性由1字节的属性标志位,1字节的属性类型,1或2字节路由属性长度和路径属性数据组成[1]。
属性标志位各位的具体意义分别如下:
位0:0 表示此属性必选,1 表示此属性可选;
位1:0 表示此属性为非过渡属性,1表示此属性为过渡属性;
位2:0 表示所有属性均为路由起始处生成,1 表示中间AS加入了新属性;
位3:0 表示路由属性长度由1字节指示,1表示由2字节指示;
位4至位7:未用置0 。
主要的路经属性类型包括:
⑴ORIGIN(Type Code = 1,公认必选属性)
指示此路由起始类型: IGP(value=0)、EGP(value=1)以及 INCOMPLETE (value=2)。
⑵AS_PATH(Type Code = 2,公认必选属性)
AS路径属性由一系列AS路径段(Segment)组成。每个AS路径段为一三元组<;路径段类型,路径段长度,路径值>。
路径类型有: AS_SET(value=1)和AS_SEQUENCE(value=2);
路径段长度用1字节表示AS号的数量,即最长为255个AS号;
路径值为若干AS号,每个AS号为2字节。
⑶NEXT_HOP(Type Code = 3,公认必选属性)
此属性为UPDATE消息中的信宿地址所使用的下一跳IP地址。
⑷MULTI_EXIT_DISC(Type Code = 4,公认自决属性)
简称MED属性。为一4字节无符合整数。它在AS区域间传播,用来帮助一个其它AS 区域的BGP伙伴选择进入本AS区域的人口。
⑸LOCAL_PREF(Type Code = 5,公认自决属性)
本地优先级属性。为一4字节无符合整数。它在AS区域内传播,用来帮助一个本AS 区域内BGP伙伴选择进入其它AS区域的出口。
⑹ATOMIC_AGGREGATE(Type Code = 6,公认自决属性)
元聚合属性。长度为零。它表示本地BGP在若干路由中选择了一个较抽象的(less specific)路由,而没有选择较具体(specific)的路由。
⑺AGGREGATOR(Type Code = 7,可选过渡属性)
聚合者属性。长度为6字节,分别为最后进行路由聚合的路由器的AS号(2字节)和IP 地址(4字节)。
3. 系统模型
图1 AS 域流量监控系统的设计架构图
4. 系统实现
4.1 BGPRouter 模块(协议栈)
所谓BGPRouter ,就是编程实现以上的BGP 协议(即实现BGP 的协议栈),可以对
各类消息类型进行处理。并将其在某一个主机上运行,并在相邻的路由器上进行配置,将该主机设为路由器的“邻居”,这样,在路由器与该主机之间就实现了BGP 消息的互连,该路由器就可以将其所知道的所有路由信息以BGP 协议的格式发往主机,即实现了BGP 报文的提取。
IP 地址
图2 BGPRouter与RR路由器之间的信息交互过程
4.2 BGP报文处理模块
功能如下:
⑴ UDP报文接收:建一个UDPServerSocket,接收来自BGPRouter的报文,并存入缓存。
(2) BGP报文解析:起一个线程,对缓存中的每个UPDATE消息报文进行解析,提取相关参数,直接写入数据库表,或者先写入临时文件,再定期批量导入数据库表。
(3) UDP报文计数:对收到的报文进行统计,包括接受报文数、发送报文数、丢失报文数,以及UPDATE报文数、KeepAlive报文数、错误报文数。
(4) BGP路由表维护:起一个定时调度线程,定期把数据从临时文件导入数据库表,以便批量更新BGP相关库表中的参数信息,减少数据库连接次数,提高效率。
(5)创建数据库链接池:初始化数据库连接池,为之后的与数据库表的连接预留资源,以提高数据库连接效率。
(6)定时读取配置文件:起一个定时调度线程,定期读取配置文件中的一些参数,方便了外部控制及参数变更。
4.3 数据库表设计
AS号码由IANA统一进行全球分配,故表1的AS资源可以从IANA的搜集整理得到。[2]
表1  AS资源表。包括:AS号、AS名称AS所在国家简称、国家名称、AS所属洲际组织(APNIC、ARIN、IANA等)、描述等项。
表2  AS路径属性信息表。包括:NLRI编号、BGP采集器地址、对端路由器地址(RR 路由器)、获取时间、可达地址前缀、地址前缀有效长度、路由起始地址、路由起始类型(Origin)、下一跳地址、MED属性、本地优先级(LocalPref)、路由聚合选项(AtomicAggregate)、聚合路由器AS号、聚合路由器地址、目的AS号、最小跳数(HopCount---到达该可达地址段的所有ASPath中路径最短的跳数)、路径信息(字符串形式的Path详细信息)等项。
表3  AS域地址表。包括:AS号、地址前缀、前缀有效长度等项。
表1  流量统计表。包括:时间、AS编号、入境实际流量、出境实际流量、入境通过流量、出境通过流量、入境丢弃流量、出境丢弃流量、入境直通流量、出境直通流量等项。
4.4 Web页面呈现
(1)路由信息查询及配置页面
依据于以上的表1和表2的原始信息表,组合AS域号、HopCount等参数进行路由信息的查询,并实现对所重点关心的AS域号的标示,并可手工配置部分AS域号和IP路由信息,并可以把这些重点关心的AS域号所对应的IP地址配置为流控策略下发至探针设备,以实现根据IP地址进行的流控。
图3 路由信息查询页面
电信查流量