扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
目 录
第一章 概 述 2
第二章 BGP协议基础 3
2.1 需求之一—路由传播 3
2.2 需求之二—下一跳问题 5
2.3 需求之三—自环问题 7
2.4 需求之四—ISP内部连接 9
2.5 需求之五—出口流量控制(一) 11
2.6 需求之五—出口流量控制(二) 13
2.7 路由选择分析 14
2.7.1 下一跳可达与路由选择 14
2.7.2 本地优先与路由选择 16
2.7.3 AS-PATH属性与路由选择 16
2.7.4 MED属性与路由选择 16
2.8 总结 17
第三章 BGP协议高级特性及MBGP 19
3.1 BGP团体属性和扩展团体属性 19
3.2 BGP多协议扩展(MBGP) 21
第四章 总结 23
关键词:
BGP,本地优先属性,MED,AS-PATH,下一跳属性,BGP多协议扩展(MBGP),团体属性,扩展团体属性,MP_REACH_NLRI
缩略语:
BGP:Border Gateway Protocol,边界网关协议
MBGP:Multi-Protocol Border Gateway Protocol,BGP多协议扩展
MPLS:Multi-Protocol Label Switch,多协议标记交换
VPN:Virtual Private Network,虚拟私有网络
MP_REACH_NLRI:多协议网络层可达信息
内容提要:
本文根据实际中的需求介绍了BGP的一些基础概念,包括BGP对等体,BGP属性等,重点介绍了下一跳,MED,本地优先和AS-PATH等重要属性,在第三?薪樯芰薆GP的团体属性和扩展团体属性,并介绍了BGP的多协议扩展,正是多协议扩展BGP在现在的MPLS-VPN,QOS等技术中得到了广泛应用。本文的目的是让读者在最快的时间内掌握BGP,并应用到实践中
第一章 概 述
随着宽带网络技术和数据通信技术的不断融合,宽带网络设备也逐渐引入各种各样的数据通信技术,比如,MPLS,MPLS-VPN,Multicast,QoS等,这些技术有一个共同的特点,就是需要边界网关路由协议(BGP)的支持,利用BGP丰富的属性来传递自己的信息。
这些技术目前来说却如火如荼,不论是电信运营商还是普通网络用户,都表现出了很大的热情,都在大张旗鼓的建设以这些技术为平台的城域网络。暂且不管这些技术到底有没有传说中的完善,既然客户有这样高的热情,我们作为网络设备运营商,也完全有必要跟随市场,来给用户提供全套的解决方案,这样我们必须尽快的熟悉这些技术并附注应用。
当然,在不熟悉动态路由协议,尤其是BGP的情况下,学习好这些新技术是不可能的,为了帮助读者尽快的了解和掌握动态路由协议,尤其是BGP协议,我们写了这篇文章,该文章使用一种比较通俗的方式来讲述BGP,目标是让有一定路由基础而又对BGP不熟悉的读者,在最快的时间内掌握BGP。
在阅读本文的时候,建议读者有耐心并有信心,相信大多数有耐心的读者读完本文后,都会明白BGP到底是怎么一回事,而且从根本上了解了BGP的运行原理和使用场合。本文还有一个特点就是,对BGP的介绍不是局限在传统的BGP4路由协议上,在介绍BGP4路由协议的基础上,同时也介绍了BGP扩展(MBGP),这正是在MPLS-VPN,Multicast等技术中大量使用的协议。
在本文的后边给出了一些建议的读物。读者在掌握本文概念的基础上,阅读后边建议的文章可以加深对BGP的理解,并扩展自己的视野。
第二章 BGP协议基础
从本章开始,我们从一系列实际需求出发来介绍一些基础的概念,在本文中,我们没有介绍BGP,而是根据实际需求对RIP协议逐步进行改造,在完成本文的叙述后,RIP就被我们改造成了BGP协议。所以,只要读者掌握了本文介绍的每个实际需求及根据该需求的改造结果,就已经掌握了BGP的一个特性。
2.1 需求之一—路由传播
现在我们提出一个需求:两个ISP通过一条高速POS链路连接起来,这两个ISP想把各自的路由通知给对方。如下图所示:
图中ISP1的路由器RT1知道ISP1的所有路由,而ISP2的边界路由器RT2知道ISP2的所有路由,当然,这两个路由器是通过IGP路由协议,比如OSPF完成这一点的。
假设没有BGP,我们怎样解决这个问题呢?
实际上,解决这个问题的方案很多,这里我们使用这样一种解决方式:让RT1和RT2运行RIP2协议,而且仅仅在RT1和RT2互连的POS接口上运行,在RT1和RT2上分别把ISP1的路由和ISP2的路由引入RIP。这样RIP进程就每隔三秒种,把自己的路由表通告给对方一次,互相学习之后,两个ISP的边界路由器RT1和RT2就知道了对方的路由,这样在RT1和RT2上再把RIP路由引入到两个ISP运行的IGP协议即可。
可见,在这里我们使用RIP解决了两个ISP的路由传播问题,但有一个严重的缺陷:默认情况下,RIP每隔三秒钟把自己的路由表通告一遍,这样如果两个ISP的路由表非常大(达到100000条),完成这个通告的过程也需要不止三秒的时间,这样整个POS链路就完全为RIP通告服务,而不能转发其他数据了。
为了解决这个问题,我们对RIP协议做如下改造:
1、去掉RIP的每三秒通告一次路由表的规则;
2、引入增量通告规则,即如果路由没有变化,则不发任何通告,一旦路由有变化,则按照下列规则进行:如果是路由增加,则通告给对方增加的路由,如果是路由删除,则通告给对方删除的路由,如果是路由修改(比如修改了下一跳等),则首先通告一个路由删除,再通告一个路由增加。
这样改进之后,只要路由表不进行大的改变,整个POS链路上就会很平静。
细心的读者可能会发现另外一个问题:开始的时候,ISP1和ISP2的两个边界路由器必须有一个同步的过程,也就是说,两个边界路由器RT1和RT2刚开始建立邻居关系的时候,需要把自己的整个路由表传输给对方。而传统的RIP协议是使用UDP作为自己的传输协议的,这个协议的最大缺点就是不可靠,不适合传输大量的数据。所以我们为了传输庞大的路由表,可以考虑使用其他的传输协议,当然,最容易想到的就是TCP协议。
于是,我们再对RIP进行改进:把用于传输的协议由UDP改为TCP。这样改进之后,RIP使用的发现和维护邻居的机制也应该改变(RIP使用HELLO报文来发现和维护邻居),我们可以这样考虑:
1、因为要建立TCP连接,所以ISP两端的路由器必须知道对方的IP地址,我们通过静态配置的方式告知路由器;
2、ISP边界路由器知道对方的IP地址后,就可以尝试跟对方建立连接了,如果连接不能建立,说明对方还未激活,于是会等待一段时间再进行连接的建立,这个过程一直重复,直到连接建立;
3、如果TCP连接建立起来,两端的设备必须交换某些数据以确认对方的能力或确定自己下一步的行动,即所谓的能力交互。这个过程是必须的,因为任何支持IP 协议栈的设备都支持TCP连接的建立,而不是每个支持IP协议栈的设备都支持我们扩展的RIP协议,所以我们必须在该TCP连接上进行确认;
4、确认了对方支持我们扩展的RIP协议后,我们就可以进行路由表的同步了。因为TCP是基于数据流传输服务的,所以设备一次可以传输大量的数据给对方,而不用担心数据的丢失(因为有TCP机制保证);
5、两端路由表同步完成之后,并不是立即拆除这个连接,因为以后如果有路由表改变了,需要重新进行同步(注意,这里是增量同步),如果把这个TCP连接给拆除了,以后同步的时候必须重新建立,这样需要消耗很多资源,如果利用保持的TCP连接,就可以不用重新建立连接而马上进行数据的传输;
6、我们称建立连接的两台设备互为对等体(PEER),因为这两个设备是跨越ISP的,所以我们称为外部对等体,以后会出现内部对等体的概念。为了确保两头设备的扩展RIP进程都在存活,我们要求两端的设备周期性的通过该TCP连接发送HELLO消息,以向对方确认自己还存活;
7、如果一端设备在一个存活超时的时间内没有接收到对方的HELLO消息,则认为对方已经停止运行RIP进程,于是拆除该TCP连接,并把从对方接收到的路由全部删除。
这样的改进之后,完成路由表的传递这个任务已经超超有余了,并且还可以做到对路由表的简单维护(比如当认为对方RIP进程停止后,就删除从对方接收到的路由表)。
& 本部分有下列要点:
1、为了避免经常性的大量数据传输,我们去除了RIP协议中周期发送整个路由表的机制,引入了增量机制;
2、为了克服UDP协议的不可靠传输,我们改变了RIP的传输协议,改用TCP,而且引入了邻居维护机制(在TCP协议上传输HELLO报文)和路由表维护机制(当判断外部对等体DOWN掉之后,删除从该对等体获得的路由表)。
2.2 需求之二—下一跳问题
在上一部分中,我们对RIP做了改造,使之很适合传播大量的路由,但这样的改造又产生了一些问题,首先是下一跳的确定问题,请看下面的网络图形:
在这个图形中,三个路由器RT1,RT2和RT3通过广播式的网络(在该图中是以太网)连接起来,其中RT1和RT2之间建立了我们上面介绍的扩展RIP TCP连接,RT2和RT3之间也建立了该连接,这样RT2会从RT3学习到路由,并且把学习到的路由通告给RT1,这时候,根据RIP协议的规则,RT1会把RT2作为到到RT3上路由的下一跳,但实际情况是,RT1只要直接把RT3作为下一跳即可,因为这是个广播网络,而如果把RT2作为下一跳,理论上是没有任何问题的,因为RT2还是要把数据报递交给RT3,但这样会浪费RT2很多资源。能不能想个办法,让RT1直接把RT3作为他的下一跳呢?
解决的办法也有很多,在这里我们这样解决:
1、在路由器上,给每条通
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。