BGP4+协议研究与应用
2011-06-14李晓红
庞 超,李晓红
(石家庄信息工程职业学院,河北石家庄050001)
0 引言
为了有效管理飞速发展的互联网,而将其划分为多个相对独立的网络,称为自治域(AS)。AS之间通过外部网关协议(EGP)来交换网路可达性信息,以实现整个互联网的连通。BGP是应用最广泛的外部网关协议,目前的最新版本是BGP4,但它仅支持IPv4,这种局限性给它的进一步发展带来了很大障碍。
1 BGP4+协议
1.1 面向多协议的BGP4+扩展
应广大服务提供商和用户的要求,IETF提出了BGP的多协议扩展解决方案BGP4+,它很好地解决了BGP4的IPv4局限性问题,使BGP协议具有了灵活的可扩展性,能够支持IPv6等多种网络层协议,而且具有良好的向后兼容性。
BGP4+在BGP UPDATE报文的路径属性数据域新增加了2种类型的属性:多协议可达属性(MP_REACH_NLRI )和多协议不可达属性(MP_UNREACH_NLRI) 。这2种新的路径属性可以携带多种网络层协议的路由信息,具有高度可扩展性。
在RFC2858中定义的多协议可达属性格式为:
①地址族标识,2 bytes,具体类型在RFC1700中定义;
②后地址类型标识,1 byte;
③下一跳网络地址,由1 byte的长度字段和可变长的地址值字段组成;
④下一跳的子网连接点(SNPA)信息,第1个字节标识了SNPA的个数,后续的每个SNPA的地址信息由1 byte的长度字段和可变长的地址值字段组成;
⑤网络层可达性信息(NLRI),由多个二元组构成,每个二元组包括1 byte的长度字段和可变长的前缀字段。
多协议不可达属性格式如下:
①地址族标识,2 bytes,具体类型在RFC1700中定义;
②后地址类型标识,1 byte;
③撤销路由NLRI,由多个二元组构成,每个二元组包括1 byte的长度字段和可变长的前缀字段。
属性中的NLRI字段即可_携带IPv6路由信息,进行路由的宣告或撤销。这2个路径属性是可选非过渡的,不支持BGP4+的网络节点将忽略这2个属性,也不会将其转发。
1.2 BGP4+协议流程
BGP4+的协议流程与BGP4的基本相同,遵循RFC1771等标准的规定。只是由于新的路径属性的引入,增加了边界网关协议更新消息(BGP UPDATE)报文处理的复杂性。为了支持IPv6,BGP4+所做的特别工作主要体现在:
①在BGP OPEN报文的可选参数“权能通告”中增加IPv6地址族类型,与BGP对等体协商IPv6协议处理能力;
②增加对多协议可达属性和多协议不可达属性的发送处理,其中对多协议可达属性的下一跳地址和SNPA信息字段也要包含对IPv6地址的描述;
③增加对多协议可达属性和多协议不可达属性的接收处理,异常处理包括报文合法性检查、与其他路径属性的包容关系等。
2 BGP4+软件设计
2.1 软件组成
BGP4+软件由操作系统(包含Socket、转发表等组件),BGP协议软件,RTM路由管理软件和维护管理软件组成,如图1所示。
图1 BGP4+软件组成示意图
图1中BGP协议软件是BGP4+软件的核心,主要模块组成如下:
①决策协调模块(DC)管理着输入路由表(Adj-RIBs-In)和本地路由表(Loc-RIBs),根据BGP连接的建立(或撤销)来增加(或删除)一个Adj-RIB-In。它接收NM发来的BGP UPDATE消息和DC-RTM发来的内部更新,在Adj-RIB-In中增加(或删除)路由。通过决策优选出最佳路由并决定是否加入Loc-RIB。它还用于协调实现下一跳可达性检查、路由振荡衰减和路由汇聚等功能;
②更新管理模块(UM)管理着输出路由表(Adj-RIBs-Out),向BGP对等体发送BGP UPDATE消息,向DC-RTM发送内部更新,控制路由输出的周期和抖动,并用于实现无循环选路功能;
③策略管理模块(PM)管理着策略数据库,对将要加入Adj-RIBs-In和Adj-RIBs-Out的路由进行过滤,对将要发送给BGP对等体的路由进行属性修改。它决定是否进行路由振荡衰减和路由汇聚,并实际计算汇聚路由;
④RIB抽象层(RA)提供了一套函数调用接口用于对RIB(路由表)进行增加、查询、删除、修改操作;
⑤邻居管理模块(NM),它管理着BGP邻居数据库,维护BGP状态机和保活、保持和连接重试等定时器。监听连接请求,根据需要发送BGP OPEN、KEEPALIVE和NOTIFICATION 报文。对 BGP UPDATE报文进行解析(或组包)处理。还实现了消息合法性检查和连接冲突检测等功能。
2.2 工作过程
以图2所示的网络环境为例,路由器3上的BGP协议软件的工作过程如下:
①Socket收发模块从系统Socket收到来自路由器1的BGP UPDATE报文,通过内部消息通道发给NM模块;
②NM解析报文后发给DC,假设该报文通告了一条IPv6路由;
③DC向PM询问该路由是否可以加入Adj-RIB-In,如果可以则调用RA插入该路由;
④DC询问RTM进行下一跳可达性检查,若通过,则开始 BGP判决,优选出最佳路由,插入Loc-RIB;
⑤DC将控制权交给UM,UM将该路由通告给RTM;
⑥RTM路由装入系统转发表,并重分发到其他路由协议软件(如OSPF);
⑦UM向PM询问该路由是否应该加入Adj-RIB-Out,如果需要加入,则对路由进行属性修改后调用RA插入该路由;
⑧UM向路由器2发送BGP UPDATE消息通告该路由,由NM组包后通过Socket收发模块发送到网络中。
图2 BGP工作过程
2.3 开发过程
BGP4+软件在 BGP协议软件的基础上针对IPv6应用环境进行了开发,增加了维护管理模块和初始化过程。BGP4+软件通过维护管理接口接收来自人机界面的维护命令,调用 BGP协议软件的MIB管理接口API对BGP4+协议进行控制管理。BGP4+软件工作流程如下:
①BGP4+初始化过程在VxWorks系统的启动任务的usrAppInit函数中完成,运行在协议栈相关初始化过程之后,主要完成BGP协议软件的启动,BGP4+软件所需数据的初始化,创建BGP4+维护管理模块任务;
②BGP4+维护管理模块任务通过Socket接收来自人机界面的配置管理消息后,解析消息内容,调用BGP协议软件API,进行BGP4+协议配置、邻居配置和策略配置等操作,将配置结果回应给人机界面;
③BGP4+维护管理模块任务接收来自人机界面的查询状态消息后,调用BGP协议软件API,进行BGP4+协议状态、邻居状态、策略状态和本地路由表的查询操作,组成查询响应消息上报给人机界面。
3 BGP4+协议应用
3.1 应用环境
在某课题中,BGP4+软件在大容量核心路由交换机样机中得到应用,使之实现了BGP协议对IPv6的支持。IPv6试验网络拓扑如图3所示。
图3 试验网络拓扑
3.2 应用过程
3.2.1 配置BGP自治域和邻居
R1的配置:
R1(config)#router bgp 2
R1(config-router)#neighbor 20::2 remote-as 1
R1(config-router)#neighbor 10::2 remote-as 3
R2的配置:
R2(config)#router bgp 1
R2(config-router)#neighbor 20::1 remote-as 2
R3的配置:
R3(config)#router bgp 3
R3(config-router)#neighbor 10::1 remote-as 2
通过show bgp neighbor命令可查看邻居关系和连接状态。
3.2.2 配置直连路由并被BGP重分发
R1的配置:
R1(config)#interface loopback1
R1(config-if)#ipv address 222::1/64
R1(config)#router bgp 2
R1(config-router)#redistribute connected
通过show router命令可查看路由重分发结果。
3.2.3 配置静态路由并被BGP重分发
R1的配置:
R1(config)#ipv6 route 44::/64 10::2
R1(config)#router bgp 2
R1(config-router)#redistribute static
通过show router命令可查看路由重分发结果。
4 结束语
BGP4+协议是BGP的多协议扩展解决方案,上述BGP4+软件在某大容量核心路由交换机样机中应用,运行稳定,通过了协议测试仪的测试,满足了设备功能和性能要求。
[1]RFC 1771.A Border Gateway Protocol 4(BGP-4)[S],1995.
[2]RFC2858.Multiprotocol Extensions for BGP-4[S],2000.
[3]RFC4271.A Border Gateway Protocol 4(BGP-4)[S],2006.
[4]张宏科,苏 伟.IPv6路由协议栈原理与技术.北京:北京邮电大学出版社,2006.