随着客户网络规模和覆盖范围的不断增长,使用BGP路由协议不再是运营商网络的特权,越来越多的企业网络也开始部署BGP。BGP能够支持更大规模的网络,支持丰富多变的选路策略,海量的路由表容量,但随之而来的便是BGP性能瓶颈的问题:
1、 BGP位于应用层,比底层协议占用更多的系统资源,因此需要尽可能保证路由的稳定性、路由数量的控制,以及更强的路由硬件设备;
2、 BGP路由属性复杂,每条路由比IGP协议消耗更多的字节,因此需要提高报文的传输效率,防止网络中的报文分片;
3、 BGP路由源自不同的IGP,甚至不同的自治系统,路由数量繁多和来源复杂,任意一条路由的震荡,都可能影响到全网设备的稳定性和路由收敛速度,因此需要限制路由震荡的范围,杜绝牵一发而动全身的现象;
4、 BGP自身路由收敛速度较慢,缺省BGP的HOLD TIME为180s,为了加快BGP的收敛速度,需要底层提供快速检测机制。
针对BGP组网面临的诸多性能相关问题,以下从报文传输、路由更新、快速检测三个方面入手,介绍BGP网络性能的优化思路,具体优化措施如下。
1 BGP邻居PMTU检测
BGP协议是运行在TCP之上的,所以TCP的参数设置会影响BGP的性能。在路由数目比较少的情况下TCP的参数调整可能对BGP性能影响不大,但是当路由数目比较庞大的时候调整TCP参数可以起到明显优化性能的作用。下面分析具体的优化方法。
首先了解一下BGP协议报文发送的方法,如图1所示。
图 1 BGP与TCP数据传输格式
BGP首先需要把自己需要发送的数据告诉TCP,然后TCP根据数据的长度进行分段,分段大小由TCP协商的MSS值的大小决定,每个TCP分段对应着一个发出去的IP包。所以MSS参数的设置对于BGP数据传输的性能起着关键作用,如果设置过大可能会造成中间某台设备的IP层分片,BGP协议报文的传输其实是一个端到端的传输过程,如果数据被分片了那么必然还需要重新组合恢复回来,这样会给接收者的CPU带来一定的负担,组包的过程降低了处理效率;如果 MSS值设置过小,那么又会使网络的有效利用率很低,发送端和接收端对能够一次处理的报文进行多次处理,降低了效率。
通过BGP邻居PMTU检测功能可以解决前面提到的问题,在建立BGP邻居之前,路由器会自动发送一个PMTU报文来检测路径上的最大MTU, TCP协议可以根据最大MTU值来设定MSS的大小,达到最优网络传输性能。
2 BGP路由更新定时器
在BGP的RFC4271上定义了BGP的路由更新的定时器,该定时器只能对同一地址族的相同前缀的路由起作用,其主要作用是防止网络中的某条路由震荡过于频繁,同时也是对路由设备CPU的一种保护。
图 2 路由更新定时器说明
如图2所示,红色与蓝色的箭头代表相同前缀的路由,但是从不同邻居学习而来,而且蓝色的路由优于红色的。假设RA上配置的更新定时器时间为30秒。那么RB路由收敛过程如下:
Ø RA接收到红色路由后立刻发送给RB,同时RA上启动更新定时器(30秒);
Ø 10秒以后RA接收到更优的蓝色路由,由于定时器没有超时暂时不发送给RB,但是更新本地路由表,在第10秒RA完成路由收敛;
Ø 第30秒RA上更新定时器超时,所以发送蓝色路由给RB并且更新掉红色路由,RB在第30秒完成收敛。
从上面的分析可以看出,RB的收敛时间比RA慢20秒左右,由于BGP是距离矢量路由协议这种延迟可能对整个网络的BGP路由器都会有一定影响,所以需要在网络稳定性和路由收敛速度之间进行抉择,在设备性能允许、路由总体比较稳定的前提下,可以适当降低路由更新定时器的值,最小值为5s。
BGP还有一种路由衰减机制Dampening,用以惩罚频繁震荡的路由,如果某条BGP路由震荡频率超过设定阈值,该路由将被抑制,直至路由达到稳态位置,因此对于大型网络来说,可以综合使用路由更新定时器和路由衰减两种方式,以达到路由收敛速度和路由稳定性的最佳结合。
3 与BFD协议联动
前面介绍的功能和设置只能使路由的收敛时间达到秒级水平,对于一个运营商(SP)的网络来说,往往需要更快地感知路由的变化或者BGP邻居的状态变化。但是IBGP邻居状态的感知往往由于邻居非直连的原因,需要依靠IGP的收敛或者BGP自身的KEEPALIVE报文来感知邻居的状态,这样最长可能需要 180秒时间,对于运营商来说是无法容忍的。
BFD(Bidirectional Forwarding Detection,双向转发检测)是一种高速的独立“Hello”协议,工作机制和路由协议的慢速“hello”相似。一对系统BFD能够与相邻系统建立对等关系,然后每个系统以协商的速率监测来自对端系统的BFD报文,监测速率能够以毫秒级增量设定。当对等系统没有接到预先设定数量的BFD数据包时,就认为BFD保护的软件或硬件基础设施发生故障,并通知上层路由协议,已达到路由快速切换收敛的目的。(注:BFD目前存在两个版本:VER 0和VER 1,并且两个版本不能互相兼容。)
借用此BFD的快速检测特性,配置BGP与BFD联动,一旦BGP邻居建立后,BFD自动和BGP邻居关系进行关联,并周期性发送探测报文,这个周期时间一般为几十毫秒,当超过5倍的时间没有收到探测报文,BFD会通知BGP断开邻居关系,这样就可以迅速的完成路由收敛。
4 结束语
BGP是一种非常强大的路由协议,肩负着大型企业网络,乃至整个互联网的路由交换重任,因此BGP协议的处理效率和收敛速度至关重要,关乎核心网络的稳定和性能。本文提及的BGP几种优化手段,从不同层面提升了BGP网络的性能和稳定性,包括网络传输效率、路由稳定性、路由快速收敛等,三者缺一不可,当然还可以结合路由聚合、路由策略、网络结构等,全方位优化BGP网络,止于至善。事实上,优化方法远不止这几种,随着网络技术的不断发展,将来必然会涌现出更多的BGP相关的优化措施。