随着INTERNET在中国的发展,ISP服务商与INTERNET的连接也在发生着变化。在网络连接上,从单一的连接,到通过多个电信公司多条线路连接到INTERNET;在所使用的路由协议方面,从使用的静态路由协议,发展到使用BGP(Border gateway PRotocol)。那么ISP如何随着网络的发展,在网络内部合理有效地部署BGP路由协议呢?我们将在本文中简要的介绍一下。实际上,如何在网内部署BGP路由协议的主导思想也就是如何使自治域内部的路由器获得自治域外部路由信息,从而引导访问域外的流量流出自治域。
从总体上,在域内部署BGP路由协议应考虑以下几点:
1.网络实际的拓扑结构;
2.设备性能是否满足启动BGP的要求,通常BGP的路由表非常庞大,以从50,000条增加到现在约100,000余条。这对路由器的内存及性能要求很高;
3.在有多条INTERNET接入线路时,线路的备份和流量的分布。
以下将通过一些例子来具体说明这些问题。在继续讨论前,我们先提及几个概念:
核心层:具有高速交换能力的骨干网络,位于网络的核心。
分布层:在核心层的外围,通常用于实现各种路由策略或实施访问控制等功能。
接入层:在网络的最外层,在该范围内的路由器是用户联入ISP的接入点。
在网络发展初期,网络结构比较简单(如图一),ISP只有一条线路连接到INTERNET。通常人们不会在这种简单的网络结构中使用BGP,而会使用简单方便的静态路由进行互联。这样可以简化路由器配置,便于治理,同时降低对边界路由器的性能要求,减少成本。
假如需要启用BGP,操作也很简单只需在路由器R1上启用BGP,并将R1作为网内其它路由器的缺省网关,从而达到将外部路由注入网内的目的。
图1
随着网络的近一步发展,ISP需要通过不同的网络提供商,通过多条线路与INTERNET连接,以保证网络的可靠性。这时BGP才有了真正的用武之地。在这种情况下,网络通常会出现以下几种结构。如图二,图三。两种网络结构看起来有些类似,图三中网络结构只是增加了一台路由器以排除图二中路由器R1产生单点故障的可能,但在如何部署BGP路由时却完全不同。
在图二中只需在R1上配置BGP,并将R1作为网内其它路由器的缺省网关,并通过BGP路由协议所提供的Weight这个路由参数,调节网内流量在两条线路上的分布。这样即可实现线路的互为备份,又可有效的调节流量分布。
在图三中,有两台路由器拥有外部路由,通常为保证域内的路由一致性,需在图中路由器R1和R2之间建立IBGP连接,使其建立一致的BGP路由表。在这个过程中,也可人为的使用BGP路由协议所提供的Local-Preference这个路由参数,优化路由选择,以控制数据流量在线路上的分布。但如何将这些外部路由告知网内的其它路由器,简单的有以下两种方法:
1.在网络结构相对简单时,网络没有分布层,核心层直接与接入层连接。这时接入层路由器往往不能在传输大量的用户数据的同时, 满足启用BGP所需的性能要求。在这种情况下,只有依据流量的分布情况,将网内接入路由器划分组别,不同的组别将缺省网关指向不同的边界网关路由器。
这种设计只能作为网络结构不完善,设备性能不高时的临时方案,不能作为永久性方案。因为它经常需要人为干预,依据网络流量变化情况重新划分路由器组别,否则会出现某一路由器负载过重,而另为一台负载较轻的情况,从而不能有效的使用设备资源。而且当互联的线路增多时,这种设计会面临更多的问题。
2.最好的方法是首先要建立完善网络结构,网络结构应具备核心层,分布层和接入层。通过IBGP路由协议将外部路由注入到分布层路由器中,如图二中路由器R3,R4。进而将分布层的路由器作为某一区域接入层路由器的缺省网关,将通往域外的负载均匀的分布到各个分布层路由器上,从减少对具体某个路由器的压力。
这种设计是网络结构日趋完善,网络规模日趋扩大的ISP最终的选择。
最近CISCO公司有从另一角度提出一个部署BGP路由协议的新思路,使用IBGP作为内部路由协议,交换网内用户路由信息。及在网络的接入层路由器上启用IBGP路由协议,并将指向用户的静态路由分布到IBGP中。这主要是考虑,BGP路由协议在路由变动时,只更新发生变动的路由,不会象OSPF和ISIS,重新计算SPF数据库。因而利用BGP这一特性减少路由收敛时间,提高网络的稳定性。但在使用这种方法时,应注重BGP对路由器性能的要求,应避免将外部路由注入到接入层路由器中,导致路由器工作性能下降。
综上所述,我们简单讨论了如何在ISP的网络上部署BGP路由协议。实际上,BGP的应用重点和优势在于其对路由信息的控制能力, 从而达到对数据流量的控制和分配。这是一项非常复杂的工作,要依据具体的情况而定,在本文就不多谈了。但有一点需要注重,仅仅依靠BGP自身的手段来满足各种不同的实际需要是不可行的,还需与互联伙伴共同协作才能实现,因为BGP中的许多参数需要互联双方共同商定,才能生效。