您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 浅谈BGP协议的工作原理
浅谈BGP协议的工作原理图文信息中心李宪民【摘要】BGP(BorderGatewayProtocol:边界网关协议):是一种增强的距离矢量路由协议,属于外部路由协议。从功能上讲它是一种自治系统间的动态路由协议。它通过维护IP路由表或‘前缀’表来实现自治系统(AS)之间的可达性,使用基于路径、网络策略或规则集来决定路由。它的基本功能是在自治系统间自动交换无环路的路由信息,通过交换带有自治系统号(AS)序列属性的网络可达信息,来构造自治系统的拓扑图,从而消除路由环路,并使得基于自治系统级别的策略控制得以实施。本文从应用的角度出发,通过BGP协议特点、BGP路由通告原则、成为BGP路由的方法、BGP报文(消息)、BGP邻接关系的建立、BGP的路由属性、BGP路由选择等七个方面对BGP协议进行阐释。【关键词】BGP路由协议自治系统对等体状态机BGP报文路由属性一、BGP协议简介BGP(BorderGatewayProtocol)是一种自治系统间的动态路由协议,它的基本功能是在自治系统间自动交换无环路的路由信息,通过交换带有自治系统号序列属性的路径可达信息,来构造自治区域的拓扑图,从而消除路由环路并实施用户配置的路由策略。与OSPF和RIP等在自治区域内部运行的协议对应,BGP是一种EGP(ExteriorGatewayProtocol)协议,而OSPF、RIP、ISIS等为IGP(InteriorGatewayProtocol)协议。BGP协议经常用于ISP之间。BGP协议从1989年以来就已经开始使用。它最早发布的三个版本分别是RFC1105(BGP-1)、RFC1163(BGP-2)和RFC1267(BGP-3),当前使用的是RFC1771(BGP-4)。随着INTERNET的飞速发展,路由表的体积也迅速增加,自治区域间路由信息的交换量越来越大,影响了网络的性能。BGP支持无类别域间选路CIDR(ClasslessInterdomainRouting),可以有效的减少日益增大的路由表。BGP-4正迅速成为事实上的Internet边界路由协议标准。二、BGP协议相关概念(一)自治系统(AutonomousSystem)自治系统:是由同一个技术管理机构管理、使用统一选路策略的一些路由器的集合。每个自治系统都有唯一的自治系统编号,这个编号是由因特网授权的管理机构分配的。引入自治系统的基本思想:通过不同的编号来区分不同的自治系统。通过采用路由协议和自治系统编号,路由器就可以确定彼此间的路径和路由信息的交换方法。自治系统的编号范围是1到65535,其中1到64511是注册的因特网编号,64512到65535是私有网络编号。(二)BGP路由传递一般情况下一条路由是从自治系统内部产生的,它由某种内部路由协议发现和计算,传递到自治系统的边界,由自治系统边界路由器(ASBR)通过EBGP连接传播到其它自治系统中。路由在传播过程中可能会经过若干个自治系统,这些自治系统称为过渡自治系统。如右图中AS5。若这个自治系统有多个边界路由器,这些路由器之间运行IBGP来交换路由信息。这时内部的路由器并不需要知道这些外部路由,它们只需要在边界路由器之间维护IP连通性。如:AS2、AS3、AS4。还有一种自治系统称为StubAS,如:AS1、AS6、AS7。其内部只有一个ASBR通过EBGP连接外部,AS1AS7AS6AS5AS4AS3AS2同外部其他AS的通信要靠过渡自治系统来转发数据。对一个具体的ASBR来说,其路由的来源有两种:从对等体接收的或者从IGP引入的。对于接收的路由,根据其属性(如AS路径、团体属性等)进行过滤,并设置某些属性(如本地优先级、MED值等),之后若需要的话,将具体的路由聚合为超网路由。BGP可能从多个对等体收到目的地相同的路由,根据规则选择最好的路由并加入IP路由表。对于IGP路由,则要经过引入策略的过滤和设置。BGP发送优选的BGP路由和引入的有效的IGP路由给对等体。(三)BGP对等体运行BGP协议来交换路由信息的路由器被称为BGP发言人(BGPSpeaker),和它通信的其它的BGP发言人,两个发言者之间构成交换路由信息的连接,这两个路由器成为相邻体或者对等体。换句话说,两个BGP发言者之间相互连接,完成路由信息的交互,这两个路由器就称为BGP对等体,是两个边缘路由器实体。BGP对等体(peer)就是BGP邻居,对等体关系就是BGP邻居关系。BGP有两种邻居:IBGP和EBGP。如右图所示:如果两个交换BGP报文的对等体属于同一个自治系统,那么这两个对等体就是IBGP对等体(InternalBGP),如RTB-RTD。如果两个交换BGP报文的对等体属于不同的自治系统,那么这两个对等体就是EBGP对等体(ExternalBGP),如RTA-RTB。虽然BGP是运行于自治系统之间的路由协议,但是一个AS的不同边界路由器之间也要建立BGP连接,只有这样才能实现路由信息在全网的传递,如RTB和RTD,为了建立AS100和AS300之间的通信,我们要在它们之间建立IBGP连接。IBGP对等体之间不一定是物理上直连的,只要TCP连接能够建立即可。为了IBGP对等体路由通告的可靠性,我们一般采用loopback接口建立IBGP邻居关系,同时必须指定路由更新报文的源接口。路由器一般默认要求EBGP对等体之间是有物理上的直连链路,同时一般也提供改变这个缺省设置的配置命令。允许同非直连相连网络上的邻居建立EBGP连接,这时需要修改EBGP的最大跳数。(四)IBGP全连接物理意义的全连接:在所有ASBR任意两点之间建立物理链路。实际组网中不能保证。逻辑意义的全连接:AS内所有设备都运行BGP,所有ASBR和所有其他路由器间建立IBGP邻居关系通告路由。这一点更不可能。大多数的实际情况是ASBR上同时运行BGP和IGP,其他路由器仅运行IGP。所以通常在大规模网络中,如果局部无法实现ASBR全连接的话,我们可以利用BGP路由反射器或者BGP联盟来解决这样的问题(五)有限状态机有限状态机(finite-statemachine,FSM),又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。状态存储关于过去的信息,就是说:它反映从系统开始到现在时刻的输入变化。转移指示状态变更,并且用必须满足来确使转移发生的条件来描述它。动作是在给定时刻要进行的活动的描述。有多种类型的动作:进入动作(entryaction):在进入状态时进行退出动作:在退出状态时进行输入动作:依赖于当前状态和输入条件进行转移动作:在进行特定转移时进行在计算机科学中,有限状态机被广泛用于建模应用行为、硬件电路系统设计、软件工程,编译器、网络协议和计算与语言的研究三、BGP协议特点BGP路由协议的重点在于控制路由的传播和选择最好的路由,而OSPF、RIP等IGP协议的重点在于发现和计算路由。通过携带AS路径信息以及BGP的路由通告原则,可以解决自治系统之间与内部的路由环路问题。BGP为路由信息附带丰富的路由属性,路由策略利用这些属性,可以灵活的控制选路。BGP-4支持无类别域间选路CIDR(ClasslessInterDomainRouting),也称为supernetting,这是对BGP-3的一个重要改进。CIDR的引入简化了路由聚合。路由聚合实际上是合并多个不同路由的过程,这样由通告几条路由变为通告一条路由,减小了路由表规模。BGP比OSPF、RIP等IGP协议的拓扑图要更抽象一些。IGP协议构造的是AS内部的路由器的拓扑结构图。IGP把路由器抽象成若干端点,把路由器之间的链路抽象成边,根据链路的状态或其它参数,生成拓扑图。根据此拓扑图选择代价最小的路由。而在BGP中,拓扑图的端点是一个AS区域,边是AS之间的链路。这体现了EGP和IGP是分层的关系。即IGP负责在AS内部选择花费最小的路由,EGP负责选择AS间花费最小的路由。四、BGP路由通告原则(一)基本原则多条路径时,BGPSpeaker只选最优的给自己使用;BGPSpeaker只把自己使用的路由通告给对等体;BGPSpeaker从EBGP获得的路由会向它所有BGP对等体通告(包括EBGP和IBGP);连接一建立,BGPSpeaker将把自己所有BGP路由通告给新对等体;(二)基本原则的应用1、BGPSpeaker只把自己使用的路由通告给对等体,即那些属于BGP路由而且在路由表中使用的路由。上图中若仅在RTD上import直连路由,RTA无法接收到11.4.1.0/24网段的BGP路由。因为尽管RTC上可以学到RTD通告的关于11.4.1.0/24的BGP路由,但是RTC上同时有一条关于11.4.1.0/24的直连路由,直连路由显然比有IBGP邻居处学习来的路由更优。因此,虽然输入命令“display/showbgprouting-table”时可以在BGP路由表中看到11.4.1.0/24路由。但是在全局路由表中,输入命令“display/showiprouting-table”时,显示的却是来源于直连的11.4.1.0/24路由,根据“BGPSpeaker只把自己使用的路由通告给对等体”原则,RTC不会通告这条BGP路由给RTA。解决方法就是在RTC上import直连路由。2、BGPSpeaker从IBGP获得的路由不会通告给它的IBGP邻居。在IBGP对等体相互通告路由的过程中,BGP属性不会做任何改变。那么,AS内部的路由环路问题应如何避免?在上图中如果没有这条路由通告规则,RTC从IBGP对等体RTA学到的路由就会通告给RTD,RTD继而会通告给RTB,RTB再把这条路由通告回RTA。这样就在AS内形成了路由环路。所以,此原则是在AS内避免路由环路的重要手段。但是,这条原则的引入,带来了新的问题:RTD无法收到来自AS12的BGP路由。一般我们采用IBGP的逻辑全连接来解决这个问题,即在RTA-RTD、RTB-RTC之间再建立两条IBGP连接。3、BGPSpeaker从IBGP获得的路由是否通告给它的EBGP对等体要依IGP和BGP同步的情况来决定。如右图所示。综上所述,一般情况下,如果BGPSpeaker学到去往同一网段的路由多于一条时,只会选择一条最优的路由给自己使用,即上传给路由表。但是,由于路由器也会选择最优的路由给自己使用,所以BGPSpeaker本身选择的最优的路由也不一定被路由器使用。例如,一条去往相同网段的BGP优选路由与一条静态路由,这时,由于BGP路由优先级要低,所以路由器会把这条静态路由加到路由表中去,而不会选择BGP优选的路由。五、成为BGP路由的方法BGP的主要工作是在自治系统之间传递路由信息,而不是去发现和计算路由信息。所以,BGP的路由信息需要通过配置命令的方式注入到BGP中。按照注入的方式可分为三类:纯动态注入、半动态注入、静态注入。1、纯动态注入:是指路由器将通过IGP路由协议动态获得的路由信息直接注入到BGP中去。它可以把路由器获得的所有IGP路由信息都引入到BGP系统中。这种方式配置简单,一次性引入所有的路由信息。相关命令:import-routeprotocol[process-id][medmed|route-policyroute-policy-name]protocol:指定可引入的外部路由协议,例如:isis、ospf、rip等process-id:当引入路由协议为isis、ospf或rip时,根据需要指定进程号。med:指定引入路由的MED度量值。route-policy-name:从其他路由协议引入路由时,可以使用该参数指定的路由策略过滤路由。OSPF发现路由18.0.0.1/8把IGP(OSPF)发现的路由纯动态地注入到RTB的BGP路由表中。2、半动态注入:是指路由器有选择性的将IGP发现的动态路由信息注入到BGP系统中去。它和纯动态注入的区别在于:半动态注入一开始就有选择的注入路由信息;而纯动态
本文标题:浅谈BGP协议的工作原理
链接地址:https://www.777doc.com/doc-5401391 .html