前文我们曾提到过,RIP协议是最初的路由协议。由于网络的日益复杂化,这个协议已经不能适应需要了,所以新一代的BGP路由协议成为各个网络的新掌控者。那么为什么这个协议如此受到青睐呢?下面我们就来分析一下。
BGP路由协议特性
◆BGP是一种外部路由协议,与OSPF、RIP等内部路由协议不同,其着眼点不在于发现和计算路由,而在于控制路由的传播和选择***的路由。
◆过在BGP路由中携带AS路径信息,可以彻底解决路由循环问题。
◆用TCP作为其传输层协议,提高了协议的可靠性。
BGP-4支持无类域间路由CIDR。这是较BGP-3的一个重要改进。CIDR以一种全新的方法看待IP 地址,不再区分A类网、B类网及C类网。例如一个非法的C类网络地址192.213.0.0(255.255.0.0)采用CIDR表示法192.213.0.0/16 就成为一个合法的超级网络,其中“/16"表示子网掩码由从地址左端开始的16 比特构成。CIDR的引入简化了路由聚合(Routes Aggregation),路由聚合实际上是合并几个不同路由的过程,这样从通告几条路由变为通告一条路由,减小了路由表规模。
路由更新时,BGP路由协议只发送更新的路由,大大减少了BGP传播路由所占用的带宽,适用于在Internet上传播大量的路由信息。
出于管理和安全方面的考虑,每个自治系统都希望能够对进出自治系统的路由进行控制,BGP-4提供了丰富的路由策略,能够对路由实现灵活的过滤和选择,并且易于扩展以支持网络新的发展。
目前BGP路由协议的扩展性面临的问题
(1)I-BGP的Full-Mesh问题
BGP路由协议分为I-BGP和E-BGP两个部分。I-BGP用于自治域内的路由器之间,E-BGP用于自治域间的路由器之间。为了防止产生环回路由,BGP协议要求一个路由器通过I-BGP学到的路由,不再向其他I-BGP邻居广播,所以一个自治域内所有参加I-BGP协议的路由器都要与其他路由器建立会话,从而保证路由信息能够正确地广播到每一个路由器。依照这个原则,一个自治域内总的I-BGP会话数为N×(N-1)/2 (N为运行I-BGP的路由器数),当N不断增大时,这个数字会大得惊人:如100台路由器,则会话数为4950.这对网络设备而言是个非常大的负担,而且还将使网络的管理与配置变得异常复杂。而骨干网通常由大量的运行I-BGP的路由器组成,因此,这个问题是否能够解决,直接影响到网络规模的大小。
(2)更改路由策略时路由振荡的问题
BGP路由协议属于增量更新的路由协议,当有新的路由要发布时,路由器会向邻居发送Update信息,而如果要删除某条路由时,就会发送Withdraw信息。BGP路由的Flap的定义是:当一条路由在被收回(Withdraw)后,又被广播(Update)出来,视为一次Flap.由于任何一条路由的收回和更新都会导致一台路由器整个路由表重新计算,因此当Flap的情况比较多时,对路由器设备的负载将产生巨大的压力。根据笔者在实际工作中的经验,一般情况下,一台高端路由器在计算BGP路由的时候,CPU的负载基本上在80%~90%左右,有时甚至达到100%,占用了几乎所有的CPU资源。虽然目前大部分的高端路由器都将路由计算的模块与转发模块分布在不同的硬件上,来减少主CPU忙导致的路由器性能下降的问题,但是路由表的频繁变化和更新,对整个设备的运行还是有一定的影响的,而且这样的计算会随着路由的收回或广播,继续向自治域内部扩展,使内部的路由器产生同样的问题。
(3)其他需要考虑的问题
除了上面的两个问题会导致对路由器资源过量消耗之外,还有其他的一些因素,如路由的数目、BGP路由协议的路由表的大小和路由计算的方式等,同样也会影响路由器的性能。
另外,网络越大,路由条目越多,配置和管理的工作也就越复杂,这就需要在网络设计的时候尽量简化配置,降低管理人员的工作强度,避免人为原因造成故障。