浅谈BGP协议的工作原理

上传人:沈*** 文档编号:77181918 上传时间:2022-04-19 格式:DOC 页数:18 大小:2.59MB
收藏 版权申诉 举报 下载
浅谈BGP协议的工作原理_第1页
第1页 / 共18页
浅谈BGP协议的工作原理_第2页
第2页 / 共18页
浅谈BGP协议的工作原理_第3页
第3页 / 共18页
资源描述:

《浅谈BGP协议的工作原理》由会员分享,可在线阅读,更多相关《浅谈BGP协议的工作原理(18页珍藏版)》请在装配图网上搜索。

1、浅谈BGP协议的工作原理图文信息中心 李宪民【摘 要】BGP(Border Gateway Protocol:边界网关协议):是一种增强的距离矢量路由协议,属于外部路由协议。从功能上讲它是一种自治系统间的动态路由协议。它通过维护IP路由表或前缀表来实现自治系统(AS)之间的可达性,使用基于路径、网络策略或规则集来决定路由。它的基本功能是在自治系统间自动交换无环路的路由信息,通过交换带有自治系统号(AS)序列属性的网络可达信息,来构造自治系统的拓扑图,从而消除路由环路,并使得基于自治系统级别的策略控制得以实施。本文从应用的角度出发,通过BGP协议特点、BGP路由通告原则、成为BGP路由的方法、B

2、GP报文(消息)、BGP邻接关系的建立、BGP的路由属性、BGP路由选择等七个方面对BGP协议进行阐释。【关键词】 BGP 路由协议 自治系统 对等体 状态机 BGP报文 路由属性 一、BGP 协议简介BGP(Border Gateway Protocol)是一种自治系统间的动态路由协议,它的基本功能是在自治系统间自动交换无环路的路由信息,通过交换带有自治系统号序列属性的路径可达信息,来构造自治区域的拓扑图,从而消除路由环路并实施用户配置的路由策略。与OSPF和RIP等在自治区域内部运行的协议对应,BGP是一种EGP(Exterior Gateway Protocol)协议,而OSPF、RIP

3、、ISIS等为IGP(Interior Gateway Protocol)协议。BGP协议经常用于ISP之间。 BGP协议从1989年以来就已经开始使用。它最早发布的三个版本分别是RFC1105(BGP-1)、RFC1163(BGP-2)和RFC1267(BGP-3),当前使用的是RFC1771(BGP- 4)。随着INTERNET的飞速发展,路由表的体积也迅速增加,自治区域间路由信息的交换量越来越大,影响了网络的性能。BGP支持无类别域间选路CIDR(Classless Interdomain Routing),可以有效的减少日益增大的路由表。BGP-4正迅速成为事实上的Internet边界

4、路由协议标准。二、BGP 协议相关概念(一)自治系统( Autonomous System )自治系统:是由同一个技术管理机构管理、使用统一选路策略的一些路由器的集合。每个自治系统都有唯一的自治系统编号,这个编号是由因特网授权的管理机构分配的。 引入自治系统的基本思想:通过不同的编号来区分不同的自治系统。通过采用路由协议和自治系统编号,路由器就可以确定彼此间的路径和路由信息的交换方法。 自治系统的编号范围是1到65535,其中1到64511是注册的因特网编号,64512到65535是私有网络编号。(二)BGP路由传递一般情况下一条路由是从自治系统内部产生的,它由某种内部路由协议发现和计算,传递

5、到自治系统的边界,由自治系统边界路由器(ASBR)通过EBGP连接传播到其它自治系统中。路由在传播过程中可能会经过若干个自治系统,这些自治系统称为过渡自治系统。如右图中AS5。若这个自治系统有多个边界路由器,这些路由器之间运行IBGP来交换路由信息。这时内部的路由器并不需要知道这些外部路由,它们只需要在边界路由器之间维护IP连通性。如:AS2、AS3、AS4。还有一种自治系统称为Stub AS,如:AS1、AS6、AS7。其内部只有一个ASBR通过EBGP连接外部,同外部其他AS的通信要靠过渡自治系统来转发数据。对一个具体的ASBR来说,其路由的来源有两种:从对等体接收的或者从IGP引入的。对

6、于接收的路由,根据其属性(如AS路径、团体属性等)进行过滤,并设置某些属性(如本地优先级、MED值等),之后若需要的话,将具体的路由聚合为超网路由。BGP可能从多个对等体收到目的地相同的路由,根据规则选择最好的路由并加入IP路由表。对于IGP路由,则要经过引入策略的过滤和设置。BGP发送优选的BGP路由和引入的有效的IGP路由给对等体。(三)BGP对等体运行BGP协议来交换路由信息的路由器被称为BGP 发言人(BGP Speaker),和它通信的其它的BGP发言人,两个发言者之间构成交换路由信息的连接,这两个路由器成为相邻体或者对等体。换句话说,两个BGP发言者之间相互连接,完成路由信息的交互

7、,这两个路由器就称为BGP对等体,是两个边缘路由器实体。BGP对等体(peer)就是BGP邻居,对等体关系就是BGP邻居关系。BGP有两种邻居:IBGP和EBGP。如右图所示:如果两个交换BGP报文的对等体属于同一个自治系统,那么这两个对等体就是IBGP对等体(Internal BGP),如RTB-RTD。 如果两个交换BGP报文的对等体属于不同的自治系统,那么这两个对等体就是EBGP对等体(External BGP),如RTA-RTB。虽然BGP是运行于自治系统之间的路由协议,但是一个AS的不同边界路由器之间也要建立BGP连接,只有这样才能实现路由信息在全网的传递,如RTB和RTD,为了建立

8、AS100和AS300之间的通信,我们要在它们之间建立IBGP连接。IBGP对等体之间不一定是物理上直连的,只要TCP连接能够建立即可。为了IBGP对等体路由通告的可靠性,我们一般采用loopback接口建立IBGP邻居关系,同时必须指定路由更新报文的源接口。路由器一般默认要求EBGP对等体之间是有物理上的直连链路,同时一般也提供改变这个缺省设置的配置命令。允许同非直连相连网络上的邻居建立EBGP连接,这时需要修改EBGP的最大跳数。(四)IBGP全连接物理意义的全连接:在所有ASBR任意两点之间建立物理链路。实际组网中不能保证。逻辑意义的全连接:AS内所有设备都运行BGP,所有ASBR和所有

9、其他路由器间建立IBGP邻居关系通告路由。这一点更不可能。大多数的实际情况是ASBR上同时运行BGP和IGP,其他路由器仅运行IGP。所以通常在大规模网络中,如果局部无法实现ASBR全连接的话,我们可以利用BGP路由反射器或者BGP联盟来解决这样的问题(五)有限状态机有限状态机(finite-state machine, FSM),又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。状态存储关于过去的信息,就是说:它反映从系统开始到现在时刻的输入变化。转移指示状态变更,并且用必须满足来确使转移发生的条件来描述它。动作是在给定时刻要进行的活动的描述。有

10、多种类型的动作: 进入动作(entry action):在进入状态时进行 退出动作:在退出状态时进行 输入动作:依赖于当前状态和输入条件进行 转移动作:在进行特定转移时进行 在计算机科学中,有限状态机被广泛用于建模应用行为、硬件电路系统设计、软件工程,编译器、网络协议和计算与语言的研究三、BGP 协议特点BGP路由协议的重点在于控制路由的传播和选择最好的路由,而OSPF、RIP等IGP协议的重点在于发现和计算路由。通过携带AS路径信息以及BGP的路由通告原则,可以解决自治系统之间与内部的路由环路问题。BGP为路由信息附带丰富的路由属性,路由策略利用这些属性,可以灵活的控制选路。BGP-4支持无

11、类别域间选路CIDR(Classless InterDomain Routing),也称为supernetting,这是对BGP-3的一个重要改进。CIDR的引入简化了路由聚合。路由聚合实际上是合并多个不同路由的过程,这样由通告几条路由变为通告一条路由,减小了路由表规模。BGP比OSPF、RIP等IGP协议的拓扑图要更抽象一些。IGP协议构造的是AS内部的路由器的拓扑结构图。IGP把路由器抽象成若干端点,把路由器之间的链路抽象成边,根据链路的状态或其它参数,生成拓扑图。根据此拓扑图选择代价最小的路由。而在BGP中,拓扑图的端点是一个AS区域,边是AS之间的链路。这体现了EGP和IGP是分层的关

12、系。即IGP负责在AS内部选择花费最小的路由,EGP负责选择AS间花费最小的路由。四、BGP路由通告原则(一)基本原则l 多条路径时,BGP Speaker只选最优的给自己使用;l BGP Speaker只把自己使用的路由通告给对等体;l BGP Speaker从EBGP获得的路由会向它所有BGP对等体通告(包括EBGP和IBGP);l 连接一建立,BGP Speaker将把自己所有BGP路由通告给新对等体;(二)基本原则的应用1、BGP Speaker只把自己使用的路由通告给对等体,即那些属于BGP路由而且在路由表中使用的路由。上图中若仅在RTD上import直连路由,RTA无法接收到11.

13、4.1.0/24网段的BGP路由。因为尽管RTC上可以学到RTD通告的关于11.4.1.0/24的BGP路由,但是RTC上同时有一条关于11.4.1.0/24的直连路由,直连路由显然比有IBGP邻居处学习来的路由更优。因此,虽然输入命令“display/show bgp routing-table” 时可以在BGP路由表中看到11.4.1.0/24路由。但是在全局路由表中,输入命令“display/show ip routing-table”时,显示的却是来源于直连的11.4.1.0/24路由,根据“BGP Speaker只把自己使用的路由通告给对等体”原则,RTC不会通告这条BGP路由给RT

14、A。解决方法就是在RTC上import直连路由。2、BGP Speaker 从IBGP获得的路由不会通告给它的IBGP邻居。在IBGP对等体相互通告路由的过程中,BGP属性不会做任何改变。那么,AS内部的路由环路问题应如何避免?在上图中如果没有这条路由通告规则,RTC从IBGP对等体RTA学到的路由就会通告给RTD,RTD继而会通告给RTB,RTB再把这条路由通告回RTA。这样就在AS内形成了路由环路。所以,此原则是在AS内避免路由环路的重要手段。但是,这条原则的引入,带来了新的问题:RTD无法收到来自AS 12的BGP路由。一般我们采用IBGP的逻辑全连接来解决这个问题,即在RTA-RTD、

15、RTB-RTC之间再建立两条IBGP连接。3、BGP Speaker 从IBGP获得的路由是否通告给它的EBGP对等体要依IGP和BGP同步的情况来决定。如右图所示。综上所述,一般情况下,如果BGP Speaker学到去往同一网段的路由多于一条时,只会选择一条最优的路由给自己使用,即上传给路由表。但是,由于路由器也会选择最优的路由给自己使用,所以BGP Speaker本身选择的最优的路由也不一定被路由器使用。例如,一条去往相同网段的BGP优选路由与一条静态路由,这时,由于BGP路由优先级要低,所以路由器会把这条静态路由加到路由表中去,而不会选择BGP优选的路由。五、成为BGP路由的方法BGP

16、的主要工作是在自治系统之间传递路由信息,而不是去发现和计算路由信息。所以,BGP 的路由信息需要通过配置命令的方式注入到BGP中。 按照注入的方式可分为三类:纯动态注入、半动态注入、静态注入。1、纯动态注入:是指路由器将通过IGP路由协议动态获得的路由信息直接注入到BGP中去。它可以把路由器获得的所有IGP 路由信息都引入到BGP系统中。这种方式配置简单,一次性引入所有的路由信息。相关命令:import-route protocol process-id med med | route-policy route-policy-name protocol:指定可引入的外部路由协议,例如:isis

17、、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系统中去。它和纯动态注入的区别在于:半动态注入一开始就有选择的注入路由信息;而纯动态是把所有的IGP路由信息都注入,然后再过滤(可选)。相关命令:network ipv4-add

18、ress mask | mask-length route-policy route-policy-name ipv4-address:BGP发布的IPv4网络地址,点分十进制形式。此网络或主机地址应该是由IGP动态路由协议发现的。mask/mask-length:IP地址掩码或掩码长度。如果没有指定掩码,则按有类地址处理。route-policy-name:发布路由应用的路由策略。OSPF发现路由18.0.0.1/8把IGP(OSPF)发现的路由半动态地注入到RTB的BGP路由表中。3、静态注入:它与半动态注入很类似,不同的是半动态注入的路由是由IGP动态路由协议发现的路由。而静态注入的路由

19、是手工配置的静态路由。人为配置静态路由18.0.0.1/8把人为配置的静态路由注入到RTB的BGP路由表中。六、BGP报文(消息)(一)BGP报文(消息)分类:1、Open:是连接建立后发送的第一个消息,它用于建立BGP 对等体间的连接关系。2、KeepAlive:是用于检测连接有效性的消息。 3、Update:是BGP 系统中最重要的信息,用于在对等体之间交换路由信息,它最多由三部分构成:不可达路由(unreachable)、路径属性(pathattributes)、网络可达性信息NLRI(network layer reach/reachable information) 4、Notifi

20、cation:是错误通告消息 (二)BGP报文作用BGP 协议的运行是通过报文(消息)驱动的。BGP对等体间通过发送OPEN报文来交换各自的版本、自治系统号、保持时间、BGP标识符等信息,进行协商。UPDATE报文携带的是路由更新信息。其中包括撤销路由信息和可达路由信息及其各种路由属性。当BGP检测到差错(连接中断、协商出错、报文差错等)时,发送NOTIFICATION 报文,关闭同对等体的连接。KEEPALIVE报文在BGP对等体间周期地发送,以确保连接保持有效。OPEN报文主要用于建立邻居(BGP对等体)关系,它是BGP路由器之间的初始握手消息,应该发生在任何通告消息之前。其他在收到OPE

21、N消息之后,即以KEEPALIVE消息作为响应。一旦握手成功,则这些BGP邻居就可以进行UPDATE、KEEPALIVE以及NOTIFICATION等消息的交换操作了。(三)BGP报文格式BGP报文的格式是一样的,都是”报文头+报文体“的格式,下面就是BGP报文头: Type(类型):1 字节,指示报文类型,如OPEN、UPDATE报文等 。 Marker(标记):本16字节的字段包含消息接收者可以预测的值。如果消息类型是OPEN,或者OPEN消息没有承载认证信息(作为可选参数),标记必须是全1。否则,标记的值要使用认证机制来计算。标记可以用来探测BGP对端的同步丢失,认证进入的BGP报文。

22、Length(长度):两字节无符号整数。指定了消息的全长,包括头部字节。1、Open报文Open报文是由报文头加如下结构构成的。 Version :发端BGP版本号 My Autonomous System :本地AS号 Hold Time :发送方提供建议的保持定时器的设定秒数。 保持定时器规定了BGP邻居认为发送方信息有效的时间长度。如果BGP对等体之前的OPEN报文中Hold Time时间不一致,选择较小的Hold Time。 BGP Identifier :发送端的路由器标识符。 该值是在BGP对等体之间进行握手操作的过程中确定的,并且在每个本地接口及每个BGP对等体之间是保持不变的。

23、 Optional parmeters Len :可选的参数的长度 Optional Parameters :可选的参数2、KeepAlive报文KeepAlive报文只有报文头。KeepAlive 报文主要用于对等体路由器间的运行状态以及链路的可用性确认。KeepAlive 报文的组成只包括一个BGP数据报头。 KeepAlive 消息在对等路由器间的交换频度以保证对方保持定时器不超时为限。 当一台路由器与其邻居建立BGP连接之后,将以Keepalive-interval设定的时间间隔周期性地向对等体发送Keepalive 报文,表明该连接是否还可保持。 缺省情况下,发送Keepalive

24、的时间间隔为 60 秒,Hold Time是180秒。每次从邻居处接收到Keepalive 报文将重置Hold Time定时器,如果Hold Time定时器超时,peer就认为对等体Down掉。3、Update报文Update报文由报文头加如下结构构成。 Unfeasible Routes Len :(2字节无符号整数) 不可达路由长度 Withdrawn Routes :(变长) 撤消路由 Path Attribute Len :(2字节无符号整数) 路由属性长度 Path Attributes :(变长) 路由属性 Network Layer Reachability Informatio

25、n :(变长) 网络可达信息UPDATE报文是BGP系统中最重要的信息,用于在同伴之间交换路由信息,它最多由三部分构成:不可达路由(unreachable)、路径属性(path attributes)、网络可达性信息(NLRI,network layer reachability information)。BGP提供了机制告诉对端先前的路由通告不再能使用。有三种方式供BGP发言者指示撤销某条路由的服务: )对于先前通告的路由,在UPDATE消息的WITHDRAWN ROUTES字段内通告了到目的地IP前缀,这样相应的路由被标志为不再使用; )通告有相同网络层可达信息的替代路由; )关闭BGP邻

26、居之间的连接,这意味着从服务里撤销这一对BGP对等体互相通告的所有的路由。一个UPDATE消息一次只能通告一条路由,但它可以携带多个路由属性。一个UPDATE消息一次也可通告多条路由,但它的路由属性必须相同。一个UPDATE消息可以同时携带多个被撤消的路由。4、Notification报文Notification报文由报文头加如下结构构成 Notification报文主要在发生错误或对等体连接被关闭的情况下使用,该消息携带各种错误代码(如定时器超时等),以及辅助错误代码及错误信息。 Errorcode:错误代码: Errsubcode:辅助错误代码。 Data:依赖于不同的错误代码和辅助错误代

27、码。用于标识错误原因。错误代码123456错误类型消息头错Open消息错Update消息错保持时间超时状态机错退出(四)BGP报文(消息)应用:通过TCP建立BGP连接时,发送open消息;连接建立后,如果有路由需要发送或路由变化时,发送UPDATE消息通告对端路由信息;稳定后此时要定时发送KEEPALIVE消息以保持BGP连接的有效性;当本地BGP在运行中发现错误时,要发送NOTIFICATION消息通告BGP对端;BGP使用TCP建立连接,本地监听端口为179。和TCP建立相同,BGP连接的建立也要经过一系列的对话和握手。TCP通过握手协商通告其端口等参数,BGP的握手协商的参数有:BGP

28、版本、BGP连接保持时间、本地的路由器标识(Router ID)、授权信息等。这些信息都在Open消息中携带。 BGP连接建立后,如果有路由需要发送则发送Update消息通告对端。Update消息发布路由时,还要携带此路由的路由属性,用以帮助对端BGP协议选择最优路由。 在本地BGP路由变化时,要通过Update消息来通知对端BGP对等体。经过一段时间的路由信息交换后,本地BGP和对端BGP都无新路由通告,趋于稳定状态。此时要定时发送KEEPALIVE消息以保持BGP连接的有效性。对于本地BGP,如果在保持时间内,未收到任何对端发来的BGP消息,就认为此BGP连接已经中断,将断开此BGP连接,

29、并删除所有从该对等体学来的BGP路由。 当本地BGP在运行中发现错误时,要发送NOTIFICATION消息通告BGP对等体。如对端BGP版本本地不支持、本地BGP收到了结构非法的Update消息等。本地BGP退出BGP连接时也要发送NOTIFICATION消息。七、BGP邻接关系的建立过程BGP协议有限状态机有六个状态,空闲(Idle)、连接(Connect)、活动(Active)、打开发送(Open Sent)、打开确认(Open Confirm)和已建立(Established)六种状态之间的转换过程说明了BGP邻居关系建立的过程。如下图所示:BGP协议的状态机示意图上图中首先是Idle状

30、态,BGP协议一旦Start,状态机就进入Connect状态,在Connect状态,如果Connect-Retry定时器超时,BGP状态机会停留在Connect状态。同时,BGP试图建立TCP连接,如果TCP连接建立失败,BGP状态机进入Active状态。如果TCP连接建立成功,BGP状态机就直接进入Open Sent状态。在Active状态,如果TCP连接依然不能建立起来,那么BGP状态机就会一直停留在Active状态,直到TCP连接建立成功,才会进入Open Sent状态。在Open Sent状态,BGP一旦收到了一个正确的Open报文,就会进入Open Confirm状态。在Open C

31、onfirm状态,如果Keep Alive定时器超时,BGP状态机就会停留在Open Confirm状态。直到BGP收到Keep Alive报文,BGP状态机才会进入Established状态。这时BGP连接才算建立起来。另外,在除Idle状态以外的其它五个状态出现任何Error的时候,BGP状态机就会退回到Idle状态。我们可以通过display bgp peer 或show bgp peer命令看到Active和Establish这两种状态。当BGP的邻居状态是Active时,BGP邻居之间还无法通告路由,主要是因为TCP连接还没有建立起来。可能的原因有路由不可达,或者BGP的配置有错误。

32、当BGP的邻居状态是Establish时,表明BGP对等体之间可以通告BGP路由信息了。八、BGP的路由属性BGP是一种外部路由协议,其着眼点在于控制路由的传播和选择最好的路由。为控制路由的传播和路由选择,BGP为路由附带属性信息。BGP路由属性是一套参数,它对特定的路由进行更深地描述,使得BGP能够对路由进行过滤和选择。在配置路由策略时将广泛地使用路由属性,但并不是所有路由属性都要被用上。路由属性被分为以下几类。 必遵属性:在路由更新数据报文中必须存在的路由属性,这种属性域在BGP路由信息中有着不可替代的作用,如果缺少必遵属性,路由信息就会出错。如AS-Path就是必遵属性,BGP用它来避免

33、路由环路,没有它路由就可能出问题。 可选属性:它是可选的,不一定存在于路由更新数据报文中,设置它完全是根据需要。如MED属性,就用它来控制选路。 过渡属性:具有AS间可传递性的属性就是过渡属性,过渡属性的域值可以被传递到其他AS中去并继续起作用。如Origin属性,路由信息的起源一旦确定,域值会一直存在,无论此路由信息被传到哪个AS中去。 非过渡属性:只在本地起作用,离开自治系统,域值就恢复成默认值,如Local preference。以下列出几种常用属性的情况,如下表所示。 类型代码属性名必遵可选过渡非过渡1Origin必遵过渡2AS-Path必遵过渡3Next-hop必遵过渡4MED可选非

34、过渡5Local-preference可选非过渡6Community可选过渡每个属性都有特定的含义并可以灵活地运用,使得BGP的功能非常强大。BGP属性可以扩展到256种。此处仅列出BGP一些常用路由属性进行说明。 1、Origin来源/ 起源/ 起点属性:它定义路径信息的来源,标记一条路由是怎样成为BGP路由的。如IGP、EGP和Incomplete等。一般的,按如下方式决定一条路由的Origin属性: 某条路由是直接而具体的注入到BGP路由表中的,则origin属性为IGP 路由是通过EGP得到的,则origin属性为EGP 其他情形下,Origin属性都为 IncompleteBGP允许

35、三种类型的起源:BGP在其路由优选过程中会考虑起点属性。具体来说,BGP针对Origin属性的优选顺序为:IGPEGPINCOMPLETE。一般情况下:用“network ip-address mask ”命令注入的路由或者是聚合路由,起点类型为IGP,在BGP路由表显示为i(源属性:0)。把从其它IGP路由协议引入的路由起点类型设置为Incomplete。即用“import”命令注入的路由,在路由表中,显示为(源属性:2)。把通过EGP得到的路由的起点类型设置为 EGP(此处EGP指一种路由协议,该协议现在已经废弃),显示为E(源属性:1)。2、AS-PathAS路径属性:它是路由经过的AS

36、的序列,即列出在到达所通告的网络之前所经过的AS的清单。BGP发言者将自己的AS前置到接收到的AS路径的头部,以记录此路由经过AS的信息,它可以防止路由循环,并用于路由的过滤和选择。 同时,AS-Path属性还可以影响路由选择。在其它因素相同的条件下,选择AS-Path较短的路由。如上图所示,AS200内的关于网络D18.0.0.0/8的BGP路由经AS200、AS300、AS400到达AS100的AS-Path为d1(400 300 200),经AS200、AS500到达AS100的AS-Path为d2(500 200),这时BGP优先选择有较短AS-Path的BGP路由:”D,d2 500

37、 200”。但是在某些特殊应用中,如Hub&Spoke组网方式下,我们需要接受AS号重复的BGP路由。此时,可以用下面的命令来强制接受此类路由:peer group-name | ipv4-address allow-as-loop number 参数:group-name:对等体组的名称。ipv4-address:对等体的IPv4地址。number:本地AS号的的重复次数,范围为110。缺省值为1。可以通过加入伪AS号来增加路径长度,从而影响路径选择。例如,我们可以在RTA上配置,使之将路由10.0.0.0/8发往邻居时,将其AS-Path属性再加上两个自治系统号123、123,这样当这条路

38、由被传递到RTB时,其AS-Path为:d1(123 123 123)。而从AS462传来的始发于AS123的路由的AS-Path为d2(462 123)。这样d1的AS-Path比d2长,所以最终路由器会认为d2为较优的路由。3、Next-hop下一跳属性:它包含到达更新消息所列网络的下一跳边界路由器的IP地址。BGP的下一跳与IGP有所不同,它可以是通告此路由的对等体的地址,如EBGP,这同IGP是相同的。而在其他情况下,BGP使用第三方的下一跳,如IBGP对从EBGP对等体获得的下一跳不加改变地在自治系统内传递。在多路访问媒体上,BGP以路由的实际来源为下一跳,即使它不是BGP对等体。

39、在右图中:RTA:可经下一跳10.0.0.2到达18.0.0.0/8;可经下一跳10.0.0.3到达20.0.0.0/8;可经下一跳21.0.0.1到达19.0.0.0/8。RTC:可经下一跳10.0.0.1到达19.0.0.0/8; 可经下一跳10.0.0.3到达20.0.0.0/8。RTB:可经下一跳10.0.0.2到达18.0.0.0/8; 可经下一跳10.0.0.3到达20.0.0.0/8。BGP中的下一跳概念稍微复杂,它可以是以下三种形式之一:(注:上图中RTA-RTC建立EBGP邻居关系,RTA-RTB、RTC-RTD建立IBGP邻居关系)(1)BGP在向EBGP邻居通告路由时,或

40、者将本地发布的BGP路由通告给IBGP邻居时,下一跳属性是本地BGP与对端连接的端口地址。如胶片所示,RTC在向RTA通告路由18.0.0.0/8时,下一跳属性为10.0.0.2 ;RTB在向RTA通告路由19.0.0.0/8时,下一跳属性为21.0.0.1。(2)对于多路访问的网络(广播网或NBMA网络),下一跳情况有所不同:如图所示,RTC在向RTA通告路由20.0.0.0/8时,发现本地端口10.0.0.2同此路由的下一跳10.0.0.3(指在RTC路由表中此路由的下一跳)为同一子网,将使用10.0.0.3 作为向EBGP通告路由的下一跳,而不是10.0.0.2。(3)BGP在向IBGP

41、通告从其它EBGP得到的路由时,不改变路由的下一跳属性,而直接传递给IBGP邻居。如胶片所示,RTA通过IBGP向RTB通告路由18.0.0.0时,下一跳属性为10.0.0.2。这样做,有时会产生问题:如果RTB不知如何去往10.0.0.2,那么此BGP路由将失效。解决方法:方法一:可以在RTA的BGP视图下引入直连路由;方法二:在RTA上,使用命令peer group-name | ipv4-address next-hop-local。此命令用来设置BGP向对等体组/对等体通告路由时,把下一跳属性设为自身的IP地址。 在BGP多路广播网络中,其下一跳属性不变。如右图:路由器B通过EBGP通

42、告网络172.30.0.0 给A而不改变其下一跳属性10.10.10.2,这种行为防止了一个不必要的Hop,因为他们都同在一个多路广播网络里面。如果改变了其下一跳属性为10.10.10.1,当AS 65000作为一个Transit AS(中转自治系统)的时候, AS 64520的EBGP Router就不是以最优的路径通过AS 65000。 BGP是一种AS-by-AS的路由协议,它的下一跳指的是下一个AS,而不是下一个Router。(1)从EBGP学习到的路由,其下一跳属性不变,可以手动做next-hop-self (2)在IBGP关系中,下一跳地址,是通告该路由的IBGP的 更新源还是Ro

43、uter-id呢?下一跳next_ hop属性的三个规则: a、如果是由EBGP peer通告的BGP update报文,那么next_hop就是AS外这个EBGP peer的IP地址。(实际上,是与本AS直连的接口IP地址) b、假如BGP update报文是由IBGP peer通告的,那么next_hop就是这个IBGP peer发出更新报文的接口IP地址 c、如果update 报文最开始是由EBGP peer通告,但是是从本AS内的边界路由器(也就是IBGP peer),那么next_hop是EBGP peer的通告出更新的接口IP地址,而不是本AS的这个IBGP peer。 对于前两点

44、:谁通告的,那么下一跳就是它。对于第三点:我们知道BGP是对于大型互联网的一个路由协议。其实我们应该把它理解成路径向量协议。也就是说它的出发点是AS,而不是单个的router。BGP是宏观的,IGP则是微观的。所以,从AS来看。既然是IBGP peer转发通告EBGP peer发来的路由,那么EBGP peer才是真正的下一跳。 这里,我们会发现一个问题,就是假如这个边界路由器没有告诉本AS的其它路由器到这个EBGP peer怎么走,那么这样路由不可达就会导致数据包被丢弃。所以引入了next_hop_self机制,配置在边界路由器上,使得IBGP peer要发路由更新给EBGP peer的时候

45、,强制从自己这里走,因为对于边界路由器来讲,它知道怎么到达EBGP peer的。这个其实有点类似于代理的概念。比如proxy ARP。就是把自己的MAC地址通告给ARP请求者,而不是把ARP请求的真正目的MAC回送回去。目的就是代理。4、MED(Multi-Exit-Discriminators)属性:它又叫BGP的metrics值(没有MED的路由-MED0;缺少MED的路由,将成为最先优选的路由),作用是影响邻居AS的路由选择。当某个AS有多个出口时,可以用MED属性来帮助其外部的邻居路由器选择一个较好的入口路径。也就是说决定邻居AS更优先从哪个出口进入本AS,默认值是0,一条路由的MED

46、值越小,其优先级越高。MED仅向EBGP邻居发送。 bgp bestpath missing-as-worst命令修改cisco ios对med的行为,使得和最新的ietf标准(丢失MED-将MED设置成无穷大;缺少MED的路由,将成为最后优选的路由)一致。 如果没有启用bgp deterministic-med,接收到的路由的顺序可能影响基于med的最有路径选择,当从多个as收到同一条路由,而且具有完全一样的路径长度和不同的med,就会发生下面的情况: A) ASPATH 1, MED 100, internal, igp metric to NEXT_HOP 10 B) ASPATH 2,

47、 MED 150, internal, igp metric to NEXT_HOP 5 C) ASPATH 1, MED 200, external 在没有配置bgp deterministic-med的路由会优选B(较低的IGP metric),接着是C(EBGPIBGP),而C的MED值高于A 。 在启用bgp deterministic-med的Router,将清除对基于MED最优路径选择的临时依赖,它可以确保满足MED的原始要求,来控制进入本AS的流量的选择,会对进入被AS的所有路由进行med比较,最后选择有最小med值的A是最优路径,但是如果Router配置了bgp always-

48、compare-med,将总是采用BGP MED 判断。 Weight(Cisco Only):权重(范围0 到 65,535)。weight是CISCO私有的参数,路由器配置了权重后在本地有效,缺省情况下,从对等学习到的所有路由的Weight都是0,由本Router产生的路由的Weight都是32768。作用是影响路由选择,值越大优先级越高。不向BGP邻居发送,仅限本地路由器,neighbor ip-address | peer-group-name weight default-weight,将邻居发送来的路由的weight值改变。 注意:还有一种特殊的MED(外部度量)属性。先看一种情况

49、:我们知道本地优先级属性用于控制数据流怎样出AS,但有些情况下,AS需要控制数据流怎样进入本AS,如下图所示: 在这个网络中,ISP1通过两条上行链路连接ISP2的两个不同的路由器,假设在ISP2中有这样两个网络: 210.52.83.0/24(在后面的介绍中以83代表)和210.52.82.0/24(在后面的介绍中以82代表),这两个网络都通过BGP协议通告给了ISP1的边界路由器RT3。这时候,ISP2的管理者想达到这样一个目的:从ISP1来的到82的数据流通过RT2路由器到达,而从ISP1来的到83的数据流通过RT1到达。可以看出,跟前面在AS内部控制数据流的出口不同的是,我们需要在AS

50、内部控制数据流怎样流入该AS。 与前面的思路相同,我们还是给通告的路由一种标记,当对端接收到多条去往同一网段的路由时,根据该标记决定选择哪条路由。 在ISP2的边界路由器RT1上,当向RT3发布路由82和83时,给83打上标记50,而给82打上标记100; 在ISP2的边界路由器RT2上,当向RT3发布路由82和83时,给82打上标记50,而给83打上标记100; 当ISP1路由器RT3通过EBGP对等体分别从RT1和RT2获得去往相同网段的路由时,会选择RT1作为83的下一跳而选择RT2作为82的下一跳。 这种标记我们也用属性的方式实现,在实现中这个标记是一个整数,数值越小,在选择中越有优势

51、,我们称这种标记为MED(外部度量)。可以看出,跟本地优先级不同的是,MED控制流量怎样进入AS,而本地优先级则控制流量怎样流出AS。缺省情况下,不允许比较来自不同AS邻居的路由信息的MED值。但是,我们可以使用compare-different-as-med命令来配置允许比较来自不同自治系统中的邻居的路由的MED值。不过,除非能够确认不同的自治系统采用了同样的IGP和路由选择方式,否则不要使用此命令。5、Local-preference本地优先属性:用于在自治系统内优选到达某一个目的地的路由。反映了BGP发言人对每个外部路由的偏好程度。Local-preference的默认值是100,更改值

52、的命令是:Router(config-router)# bgp default local-preference value 它的值越高,其优先级越大。本地优先属性值越大,路由的优选程度就越高。.本地优先值仅在AS内部中有效.(学习的路由影响出去的流量,公告出去的路由影响进来的流量.) 在某些情况下,一个ISP可能通过两条高速链路连接两个大的ISP作为自己到INTERNET的出口,如右图所示。 在这种情况下,ISP0怎样把流量均衡的分布到两条上行链路。假设INTERNET上有这样两条路由:210.52.83.0/24(在后面的介绍中以83代表)和210.52.82.0/24(在后面的介绍中以8

53、2代表),我们的目标是使到网络83的流量分布在到ISP1的链路上,而到网络82的流量分布在到ISP2的链路上。分析ISP0内部网络结构,RT3,RT4和RT5之间分别两两建立TCP连接来构成IBGP对等体关系,而RT3和RT4分别和位于ISP1和ISP2的路由器建立EBGP对等体关系。这样路由器RT3和RT4都会从自己的EBGP对等体收到82和83这两条路由,而且RT3和RT4也会通过IBGP对等体关系彼此通告82、83这两条路由。由此可以看出,RT3和RT4分别有两个来源获得82和83路由,这样我们要达到上述要求,只需要在RT3和RT4上忽略适当的来源即可。6、Community团体属性它标

54、识了一组具有相同特征的路由信息,与它所在的IP子网和自治系统无关。团体是一组有相同性质的目的地的路由,一个团体不限于一个网络或一个自治系统,它没有物理边界。某些团体是公认的,具有全球意义。公认的团体有:NO_EXPORT:带有这一团体值的路由在收到后,不应把该路由通告给一个联盟/AS之外的对等体。NO_ADVERTISE:带有这一团体值的路由在收到后,不应把该路由通告给任何的BGP对等体。LOCAL-AS:带有这一团体值的路由在收到后,可以把该路由通告给它的IBGP对等体,但不应通告给任何的EBGP对等体(包括联盟内的EBGP对等体)。INTERNET:带有这一团体值的路由在收到后,可以通告给

55、所有的其他路由器。除了这些公认的团体属性值外,私有的团体属性值也可以被定义用于特殊用途。这些属性值被一些数字所标识。扩展communities属性(AS号:AS自己定义的号码):将他们转化成10进制就是CISCO路由器对标准communities属性的表示方法。 如:(1).INTERNET:INTERNET团体没有一个确定的值,所有属于这个团体的路由都有一个缺省值,可以自由的公布属于这个团体的路由(Advertise to any peer) (2)NO_EXPORT(4294967041或者0Xffffff01):接收到的携带该值的路由不能公布给EBGP对等体,或者如果配置了一个联盟,该路

56、由不能在联盟范围以外公布; (3)NO_ADVERTISE(4294967042或者0Xffffff02):接收到的携带该值的路由不能公布给EBGP或者IBGP的对等体,只留给自己用。(4)LOCAL_AS(4294967043或者0Xffffff03):RFC1997称这个属性为NO_EXPORT_SUBCONFED。不能将接收到的携带该值的路由公布给EBGP对等体,以及在联盟内的其他AS的对等。(5)None(Removes the community with: set community none)一条路由可以具有一个以上的团体属性值。在一条路由中看到多个团体属性值的BGP路由器可以根

57、据一个、一些或所有这些属性值来采取相应的策略。路由器在将路由传递给其他对等体之前可以增加或修改团体属性值。九、BGP路由选择过程(一)本地BGP路由选择过程:1、如果此路由的下一跳不可达,忽略此路由2、选择本地优先级较大的路由3、选择本地路由器始发的路由(本地优先级相同)4、选择AS路径较短的路由5、依次选择起点类型为IGP,EGP,Incomplete类型的路由6、选择MED较小的路由7、选择RouterID较小的路由注意:(1)在比较到MED值都相等的情况下,优先选择从EBGP对等体学来的路由;(2)如果依然相同,那么比较去往BGP下一跳的地址的IGP的Cost值小的路由;(3)如果仍然相

58、等,则查看路由器是否支持并启用了等值路由负载分担的功能,如果是,那么多条路由同时选中;(3)如果不支持,则最后比较Router ID的大小。(二)IOS软件BGP最优路由选择过程:在网络中当存在多条有效的到达特定目的地的路径时,IOS会根据接收他们的相反顺序列出这些路径。也就是说,最新的路径将被列在最开始,而最老的路径列在最末端。对于一个给定的目的地,为了选择最佳路径,BGP通常使用顺序比较的方法。它假定第一条路径(最新的路径)是最佳路径,然后去比较当前的最佳路径和下一条路径,直到比较到有效路径列表的末端。例如,BGP顺序收到3条路径:1,2,3后,BGP假定3是最优路径(因为3是最后收到的)

59、,首先比较3和2。接着,得出的最佳路径再与路径1(最早接收到的)比较。这样,第二次比较得出的最佳路径就成为到达目的地的最终的最佳路径。 如果一条路径不满足下列任何一个条件,那么它在路径决策过程中就不是有效的候选者(换句话说,如果一条路径满足下列条件之一,那么该路径就会成为路径决策过程中的候选者):路径的下一跳不可达;路径未同步,但同步功能被启用了;路径被入站BGP策略所拒绝,并且路由器配置了软重置(soft reset);路由被惩罚。 当前Cisco IOS软件的BGP路径决策有13步,每一步都会被顺序执行,直到找出一条最佳路径为止:1、优选有最大Weight的路由。 2、优选有最大LOCAL

60、_PREF值的路由(范围 0到 4,294,967,295)。 3、优选从本路由器始发的路由(包括本地network配置的重分布,或者在IGP表中已经有一些需要被配置路由聚合的地址,在BGP中用Aggregate命令配置的路由聚合)。依次降低的优先级顺序是: 1) default-originate,针对每个邻居配置; 2) default-information-originate,针对每种地址簇配置的 3) network; 4) redistribute; 5) aggregate-address; 4、优选有最短AS_PATH的路由 A、如果配置了Bgp bestpath as-pat

61、h ignore,则这个步骤被忽略 B、一个AS路径集被当作一个AS,无论在这个集合中有多少AS。AS路径长度中没有包括。AS_CONFED_SEQUENCE。5、根据Origin属性.优选具有最低起源类型的路由(IGPEGIncomplete)6、优选最小MED 值的路由(范围 0到4,294,967,295). A、只有在通过两条路径得到第一个AS(对等体)是同一个AS时才进行MED比较;任何子自治域的联盟系统都会被忽略。也就是说,只有在AS序列号中第一个AS号码一致时,才进行MED比较;任何联盟AS序列号(AS_CONFED_SEQUENCE)都会被忽略。 B、如果路由器上配置了 bgp

62、 always-compare-med ,在全部的路径进行MED比较。但是这需要全体AS都同时启用这个功能,否则有可能发生路由环路。C、如果路由器上配置了bgp bestpath med confed,将对所有只包括AS_CONFED_SEQUENCE的路径进行MED比较(即路径是起源于本地联盟)。D、如果接收到的路径没有分配MED值,则将此路径分配为0,除非路由器上配置了bestpath missingisworst,将被看作MED值为4,294,967,295的路由将在注入到BGP路由选择表之前被改为4,294,967,294。 E、BGP明确的MED值9也可以影响此步骤。7、外部路由EB

63、GP优先于联盟(confederation)外部路由优于内部路由IBGP(优选 E-BGP路由)。 注意,路径中包括AS_CONFEND_SEQUENCE属性对联盟只有在本地有效,因此被看作是内部路径。在路径选择过程中,联盟外部(Confederation External)路径和联盟内部(Confederation Internal)路径是没有差别的。无法区别外部联盟和内部联盟。8.BGP优先选择到BGP下一跳的IGP度量值最低的路径。这一步使得本地拓扑信息被考虑进去。9、如果配置了“maximum-paths ibgp n”命令,这里的n在26之间,并且存在多条等代价成本的路径(对于多条路径,以上16步的比较结果都相同,而且AS_PATH也相同),那么BGP会在IP路由表中插入最多n条接收到的路径。这就激活了BGP的多路径负载均衡特性。如果没有指定关键字ib

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!