BGP路由协议学习指引

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

学习心得类文档模版2008-04-033第1页,共16页1学习心得模版:标题BGP路由协议学习指引学习书集名称BGP协议,TCP/IPRouting第二卷,RFC1771,RFC2283等书集总章节书集总页数阅读时间2007-5编写日期2007-5-24学习人陈大顺发布对象●公司内部○用户简要描述标题:BGP路由协议学习指引背景情况简述:我司最新推出的RSR50路由器已能全面支持BGP路由协议,本文是一个简单的BGP路由协议学习指引,有些同事可能已经看过这篇文档,现摘录下来帮助大家复习一遍.本文根据实际中的需求介绍了BGP的一些基础概念,包括BGP对等体,BGP属性等,重点介绍了下一跳,MED,本地优先和AS-PATH等重要属性,扩展介绍了BGP的团体属性和扩展团体属性,并介绍了BGP的多协议扩展,正是多协议扩展BGP在现在的MPLS-VPN,QOS等技术中得到了广泛应用。这篇文的目的是让读者在最快的时间内掌握BGP,并应用到实践中。正文第一章概述第二章BGP协议基础2.1需求之一—路由传播2.2需求之二—下一跳问题2.3需求之三—自环问题2.4需求之四—ISP内部连接2.5需求之五—出口流量控制(一)2.6需求之五—出口流量控制(二)2.7路由选择分析2.7.1下一跳可达与路由选择2.7.2本地优先与路由选择2.7.3AS-PATH属性与路由选择2.7.4MED属性与路由选择2.8总结第三章BGP协议高级特性及MBGP3.1BGP团体属性和扩展团体属性3.2BGP多协议扩展(MBGP)第四章总结学习心得类文档模版2008-04-033第2页,共16页2第一章概述随着数据通信技术的不断融合与网络建设的不断扩展,在各个行业都有网络融合的趋势,大型网络的组建不可避免的要考虑到BGP协议的应用,同时也在不断引入更先进的数据通信技术,比如Multicast,QoS,MPLS,MPLS-VPN等,这些技术有一个共同的特点,就是需要边界网关路由协议(BGP)的支持,利用BGP丰富的属性来传递自己的信息。这些技术目前来说是如火如荼,各行业的用户都表现出了很大的热情,目前我们自主开发的路由器已经可以支持BGP,我们也完全有必要跟随市场,来给用户提供全套的解决方案,因此必须尽快的熟悉这个协议。当然,在不熟悉动态路由协议,学习好BGP协议是不可能的,为了帮助读者尽快的了解和掌握动态路由协议,尤其是BGP协议,写了这篇文章,该文章使用一种比较通俗的方式来讲述BGP,目标是让有一定路由基础而又对BGP不熟悉的读者,在最快的时间内掌握BGP。在阅读本文的时候,建议读者有耐心并有信心,相信大多数有耐心的读者读完本文后,都会明白BGP到底是怎么一回事,而且从根本上了解了BGP的运行原理和使用场合。本文对BGP的介绍不是局限在传统的BGP4路由协议上,在介绍BGP4路由协议的基础上,同时也介绍了BGP扩展(MBGP),这正是在MPLS-VPN,Multicast等技术中大量使用的协议。第二章BGP协议基础从本章开始,我们从一系列实际需求出发来介绍一些基础的概念,在本文中,我们没有介绍BGP,而是根据实际需求对RIP协议逐步进行改造,在完成本文的叙述后,RIP就被我们改造成了BGP协议。所以,只要读者掌握了本文介绍的每个实际需求及根据该需求的改造结果,就已经掌握了BGP的一个特性。2.1需求之一—路由传播现在我们提出一个需求:两个ISP通过一条高速链路连接起来,这两个ISP想把各自的路由通知给对方。如下图所示:学习心得类文档模版2008-04-033第3页,共16页3图中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的路由传播问题,但有一个严重的缺陷:默认情况下,RIP每隔三秒钟把自己的路由表通告一遍,这样如果两个ISP的路由表非常大(达到100000条),完成这个通告的过程也需要不止三秒的时间,这样整个链路就完全为RIP通告服务,而不能转发其他数据了。为了解决这个问题,我们对RIP协议做如下改造:1、去掉RIP的每三秒通告一次路由表的规则;2、引入增量通告规则,即如果路由没有变化,则不发任何通告,一旦路由有变化,则按照下列规则进行:如果是路由增加,则通告给对方增加的路由,如果是路由删除,则通告给对方删除的路由,如果是路由修改(比如修改了下一跳等),则首先通告一个路由删除,再通告一个路由增加。这样改进之后,只要路由表不进行大的改变,整个链路上就会很平静。细心的读者可能会发现另外一个问题:开始的时候,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连接给拆学习心得类文档模版2008-04-033第4页,共16页4除了,以后同步的时候必须重新建立,这样需要消耗很多资源,如果利用保持的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之间建立了我们上面介绍的扩展RIPTCP连接,RT2和RT3之间也建立了该连接,这样RT2会从RT3学习到路由,并且把学习到的路由通告给RT1,这时候,根据RIP协议的规则,RT1会把RT2作为到到RT3上路由的下一跳,但实际情况是,RT1只要直接把RT3作为下一跳即可,因为这是个广播网络,而如果把RT2作为下一跳,理论上是没有任何问题的,因为RT2还是要把数据报递交给RT3,但这样会浪费RT2很多资源。能不能想个办法,让RT1直接把RT3作为他的下一跳呢?解决的办法也有很多,在这里我们这样解决:学习心得类文档模版2008-04-033第5页,共16页51、在路由器上,给每条通告的路由附加上一个IP地址值,该地址值指出了通往该路由的下一跳;2、一般情况下,路由器在向外通告自己的路由的时候,把下一跳改写为向外通告的接口的IP地址,但如果通过的路由的原来的下一跳跟自己往外通告的接口位于同一个广播网络,则不修改下一跳,而直接发送出去。引入这样的规则后,上面图中的问题便解决了:RT2从RT3接收到的路由的下一跳是RT3的连接广播网络的端口,而当RT2在把从RT3获得的路由通告给RT1的时候,RT2判断出口的IP地址跟通告的路由位于同一个广播网络(通过IP地址判断),则不修改下一跳,直接把这些路由通告给RT1。需要注意的是,RT2在向RT1通告不是从RT3获得的路由的时候,还是要把路由的下一跳修改为自己通告的接口。在大多数情况下,这样的处理是合适的,但有些情况就不适合,比如下面的网络:RT1,RT2和RT3通过一种叫做NBMA(非广播多路访问,典型的如ATM,帧中继等)的网络连接起来,这时候,RT1和RT2之间,以及RT2和RT3之间建立了PVC,而RT1和RT3之间没有建立PVC,在这样的情况下,如果RT2再进行刚才的动作,在向RT1通告从RT3获得的路由的时候,不修改下一跳,这样RT1就会把下一跳当成RT3,问题产生了:RT3和RT1之间根本没有PVC,所以RT1和RT3之间根本没法通信,这样必然会阻断一部分数据流量。为了解决这个情况,我们采取一种折中的方案:默认情况下,按照开始提出的规则,即如果通告的路由的下一跳跟通告的接口位于同一个三层网段,则不修改下一跳,但提供一个配置命令,这个配置命令强制路由器修改下一跳为通告的接口,而不管通告的路由的下一跳是什么。采用这种方案,我们就可以适应任何网络了:在广播网络中,我们不需任何配置,路由器根据实际情况修改下一跳,在非全连通的NBMA网络(注意是非全连通的,全连通的情况下不会产生该问题)中,我们可以通过配置命令强制路由器修改下一跳为通告接口。到此为止,我们已经很完善的解决了下一跳问题,我们在解决该问题的时候,给通告的每条路由都附加了一个数据:下一跳的IP地址。这样在通告路由的时候,必须按照下面的格式:{IP网络号,掩码位数,下一跳IP地址...}我们之所以在下一跳IP地址后边加了一个省略号,是因为在后面的时候,我们还要在通告的每条路由后边添加其他的数据。为了方便,我们把添加的这些为解决某些问题的数据称为属性。在这里我们第一次引入了属性的概念,读者一定要理解,因为在BGP中,不论怎样强调属性的概念都不过分。记住,属性就是跟路由束缚在一起的一些数据,这些数据为了解决某些问题(比如下一跳等)。学习心得类文档模版2008-04-033第6页,共16页6引入属性的概念后,我们就可以把解决下一跳

1 / 16
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功