第一章概述说明:本合同资料适用于约定双方经过谈判、协商而共同承认、共同遵守的责任与
随着数据通信技术的不断融合与网络建设的不断扩展,在各个行业都有网络融
合的趋势,大型网络的组建不可避免的要考虑到BGP协议的应用,同时也在不断引入更先进的数据通信技术,比如Multicast , QoS, MPLS, MPLS-VPN等,这些技术有一个共同的特点,就是需要边界网关路由协议(BGP)的支持,利用BGP丰富的属性来传递自己的信息。
这些技术目前来说是如火如荼,各行业的用户都表现出了很大的热情,目前我们自主开发的路由器已经可以支持BGP我们也完全有必要跟随市场,来给用户提供全
套的解决方案,因此必须尽快的熟悉这个协议。
当然,在不熟悉动态路由协议,学习好BG呦议是不可能的,为了帮助读者尽快的了解和掌握动态路由协议,尤其是BGP协议,写了这篇文章,该文章使用一种比
较通俗的方式来讲述BGP,目标是让有一定路由基础而又对BGP不熟悉的读者,在最
快的时间内掌握BGP。
在阅读本文的时候,建议读者有耐心并有信心,相信大多数有耐心的读者读完
本文后,都会明白BGP到底是怎么一回事,而且从根本上了解了BGP的运行原理和使用场合。本文对BGP的介绍不是局限在传统的BGP4路由协议上,在介绍BGP4路由
协议的基础上,同时也介绍了BGP扩展(MBGP ),这正是在MPLS-VPN , Multicast
等技术中大量使用的协议。
第二章GP协议基础
标题
从本章开始,我们从一系列实际需求出发来介绍一些基础的概念,在本文中,
我们没有介绍BGP,而是根据实际需求对RIP协议逐步进行改造,在完成本文的叙述后,RIP 就被我们改造成了BGP协议。所以,只要读者掌握了本文介绍的每个实际需求及根据该需求的改造结果,就已经掌握了BGP的一个特性。
2.1需求之一一路由传播
现在我们提出一个需求:两个ISP通过一条高速链路连接起来,这两个ISP想
把各自的路由通知给对方。如下图所示:
图中ISP1的路由器RT1知道ISP1的所有路由,而ISP2的边界路由器RT2知
道ISP2的所有路由,当然,这两个路由器是通过
IGP 路由协议,比如 OSPF 完成这一
点的。
假设没有BGP,我们怎样解决这个问题呢? 实际上,解决这个问题的方案很多, 这里我们使用这样一种解决方式: 让RT1 和RT2运行RIP2协议,而且仅仅在 RT1和RT2互连的接口上运行,在 RT1和RT2上 分别把ISP1的路由和ISP2的路由引入 RIP 。这样RIP 进程就每隔三秒种,把自己的路 由表通告给对方一次,互相学习之后,两个 ISP 的边界路由器 RT1和RT2就知道了对 方的路由,这样在 RT1和RT2上再把RIP 路由引入到两个ISP 运行的IGP 协议即可。
可见,在这里我们使用 RIP 解决了两个ISP 的路由传播问题,但有一个严重的
ISP 的路
这样整个
ISP1和ISP2的两个边界
RT1和RT2刚开始建立邻
RIP 协议是使用 UDP 不适合传输大量的数据。 所 , 当然,最容易想到的就 缺陷:默认情况下,RIP 每隔三秒钟把自己的路由表通告一遍,这样如果两个 由表非常大(达到100000条),完成这个通告的过程也需要不止三秒的时间, 链路就完全为RIP 通告服务,而不能转发其他数据了。
为了解决这个问题,我们对 RIP 协议做如下改造:
1、 去掉RIP 的每三秒通告一次路由表的规则;
2、 引入增量通告规则,即如果路由没有变化,则不发任何通告,一旦路由有 变化,
则按照下列规则进行:如果是路由增加,则通告给对方增加的路由, 删除,则通告给对方删除的路由,如果是路由修改(比如修改了下一跳等) 告一个路由删除,再通告一个路由增加。 这样改进之后,只要路由表不进行大的改变,整个链路上就会很平静。
细心的读者可能会发现另外一个问题:开始的时候, 路由器必须有一个同步的过程,也就是说,两个边界路由器 居关系的时候,需要把自己的整个路由表传输给对方。而传统的 作为自己的传输协议的,这个协议的最大缺点就是不可靠, 以我们为了传输庞大的路由表, 可以考虑使用其他的传输协议,
是TCP 协议。
于是,我们再对 RIP 进行改进:把用于传输的协议由 UDP 改为TCP 。这样改 进之后,RIP 使用的发现和维护邻居的机制也应该改变( RIP 使用HELLO 报文来发现 和维护邻居),我们可以这样考虑:
1、 因为要建立TCP 连接,所以ISP 两端的路由器必须知道对方的
IP 地址,
我们通过静态配置的方式告知路由器;
2、 ISP 边界路由器知道对方的IP 地址后,就可以尝试跟对方建立连接了,如 这个
过 如果是路由 ,则首先通