基础通信学习之BGP路由技术
- BGP路由协议
路由协议按照工作范围可以分为IGP和EGP,IGP工作在同一个自治系统AS内部,主要用来发现和计算路由,为AS内提供路由信息的交换,以便AS内部能够实现互访。而EGP是工作在AS与AS之间,在AS间提供无环路的路由信息交换,BGP则是EGP的一种。
- BGP概述
BGP中,通常会通过不同的编号来区分不同的自治系统,当网络管理员不期望自己的数据经过某个自治系统时,比如由于该自治系统可能是由竞争对手在管理,或是缺乏足够的安全机制,一定要回避它,这种情况下,网络管理员就可以 通过路由协议、策略和自治系统编号控制数据转发的路径。每个自治系统都有唯 一的编号,这个编号是由因特网地址分配组织(Internet Assigned Numbers Authority, IANA)分配的。
自治系统的编号范围为1~65535,其中 1~64 511是注册的因特网编号, 64 512~65535是私有网络编号。运行在自治系统内部的路由协议就是IGP,譬如OSPF,IS-IS 协议;运行在自治系统之间的路由协议就是EGP,譬如BGP。
IGP与EGP的区别有以下两点。
1.IGP是运行在AS内部的路由协议,主要有RIP,OSPF及IS-IS,IGP着重于发现和计算路由。
2.EGP是运行于AS之间的路由协议,现通常都是指BGP,BGP是实现路由控制和选择最好的路由协议。
如图所示。BGP是一种自治系统间的动态路由协议,它的基本功能是在自治系统间自动交换无环路的路由信息,通过交换带有自治系统号序列属性的路径可达信息,来构造自治系统的拓扑图,从而消除环路并实施用户配置的路由策略。BGP经常用于ISP之间。BGP从1989年就已经开始使用 。它最早发布的3个版本分别是 RFC1105 (BGP-1)RFC1163(BGP-2)FC1267(BGP-3)用的是RFC4271/RFC1771 (BGP-4)。BGP-4已经成为事实上的Internet边界路由协议标准。
BGP在不同的自治系统之间无环路的路由信息交换(无环路保证主要通过其AS-PATH属性实现,下文中会详细介绍),BGP是种基于策略的路由协议, 其策略通过丰富的路径属性(Attributes)进行控制。所以BGP有丰富的路由过滤和路由策略。BGP工作在应用层,在传输层采用可靠的TCP作为传输协议(BGP的邻居关系建立在可靠的TCP会话 基础之上)。在路由传输方式上,BGP是一种增强的距离矢量路由协议。而BGP路由的好坏不是基于距离(多数路由协议选路都是基于带宽的 ),它的选路基于丰富的路径属性,而这些属性在路由传输路径上携带,所以可以把BGP称为路径矢量路由协议。如果把自治系统浓缩成一个路由器来看待,BGP作为路径矢量路由协议这一特征便不难理解了。除此以外,BGP具备很多链路状态(LS)路由协议的特征,比如触发式的增量更新机制, 宣告路由时携带掩码,支持CIDR(无类别域间选路),丰富的Metric度量方法等。
BGP邻居关系如图所示。因为BGP使用TCP作为其承载协议,端口为179,所以BGP的邻居关系建立在可靠的TCP会话的基础之上,提高了BGP的可靠性。要建立TCP连接,两端的路由器必须知道对方的IP地址,可以通过直连端口、静态路由或者IGP动态路由协议学习。ISP边界路由器知道对方的IP地址后,就可以尝试跟对方建立连接了,如果连接不能建立,说明对方还未激活,于是会 等待一段时间再进行连接的建立,这个过程一直重复,直到连接建立。如果TCP连接建立起来,两端的设备 必须交换某些数据以确认对方的能力或确定自己下一步的行动,即所谓的能力交互。这个过程是必需的,因为任何支持IP协议栈的设备都支持TCP连接的建立,而不是每个支持IP协议桔的设备都支持BGP,所以必须在该TCP连接上进行确认。确认对方支持BGP后,就进行路由表的同步。两端路由表同步完成之后,并不是立即拆除这个连接,因为以后如果路由表改变了,需要重新进行同步(注意,这里是增量同步),如果把这个TCP连接给拆除了,以后同步的时候必须重新建立,这样需要消耗很多资源,如果利用保持的TCP连接,就可以不用重新建立连接而马上进行数据的传输。
建立连接的两台设备互为对等体(Peer)。为了确保两边设备的BGP进程都在运行,要求两端的设备周期性地通过该TCP连接发送存活(KeepAlive)消息,以向对端确认自己还存活。如果一端设备在一个存活超时的时间内没有接收到对方的KeepAlive消息,则认为对方已经停止运行BGP进程, 于是拆除该 TCP连接,并把从对方接收到的路由全部删除。
运行BGP的路由器称为BGP Speaker它们之间将会交换4种类型的报文,其中OPEN报文、KEEPALIVE报文以及NOTIFICATION报文用于邻居关系的建立和维护。下面介绍4种报文。
- OPEN报文。主要包括BGP版本,AS号等信息。试图建立BGP邻居关系的两个路由器建立了TCP会话后开始交换OPEN信息以最终确认能否形成邻居关系。
- KEEPALIVE报文。该报文用于BGP邻居关系的维护,为周期性交换的报文,用于判断对等体之间的可达性。
- UPDATE报文。该报文则是邻居之间用于交换路由信息的报文, 其中包括撤销路由信息 和可达路由信息及其各种路由属性,是4个报文中最重要的报文。
- NOTIFICATION报文。BGP的差错检测机制,一旦检测到任何形式的差错,BGP Speaker会发送一个NOTIFICATION报文, 随后与之相关的邻居关系将被关闭。
- BGP工作原理
介绍BGP工作原理之前,首先来介绍下BGP的两种邻居。如果两个交换BGP报文的对等体属于同一个自治系统,那么这两个对等体就是IBGP(Internal BGP)如图中的RTB和RTD。如果两个交换BGP报文的对等体属于不同的自治系统,那么这两个对等体就是EBGP对等体( External BGP),如RTD和RTE。虽然BGP是运行于自治系统之间的路由协议.但是AS的不同边界路由器之间也要建立BGP连接,只有这样才能实现路由信息在全网的传递。如RTB和RTD,为了建立AS 100和AS300之间的通信,需要在它们之间建立旧GP连接。BGP工作原理如图 3所示。
1.BGP路由通告原则
BGP Speaker是如何选择性地把路由传递给对端的呢?BGP对等体接收到对端的路由又是怎么处理的?这就涉及BGP路由的五大通告原则。
- BGP路由通告原则一:BGP连接一建立,BGP Speaker将把自己所有BGP路由通告给新对等体。当某条路由有多条路径时,BGP Speaker只选最忧的给自己使用。
一般情况下,如果 BGP Speaker学到去往同一网段的路由多于一条时,只会选择一条最优的路由给自己使用即上送给路由表。但是由于路由器也会选挥最优的路由给自己使用,所以 BGP Speaker本身选择的最优路由也不一定被路由器使用。例如,一条去往相同网段的BGP优选路由与一条静态路由,这时,由于BGP路由优先级要低,所以路由器会把静态路由加到路由表中去,而不会选择BGP优选的路由。
- BGP路由通告原则二:BGP Speaker只把自己使用的路由通告给对等体. 即那些属于BGP路由而且在IP路由表中使用的路由。
- BGP路由通告原则三:BGP Speaker从EBGP获得的路由会向它所有BGP对等体通告,包括BGP和IBGP邻居,如图
对于IGP,工作原理是路由器之间交换路由信息,所以任何一个路由的下一跳是宣告此路由的路由器连接接口的IP地址,这是很容易理解的。而对于BGP,则主要是用于AS之间传递无环路的路由信息,BGP 就是把AS抽象或者浓缩成一个路由器看待,所以RTB不会修改任何路由更新里的信息就更新给RTA,即RTA要到达网络192.168.1.0/24,下一跳位20.0.0.2,这里又引入了一个问题对于RTA来说.很有可能不知道20.0.0.2的路由,就会导致路由不可达。而BGP提供了命令,让某些组网环境中,为保证IBGP邻居能够找到正确的下一跳,可以向IBGP是对等体发布路由时改变下一跳为自身地址。在图中,RTB向RTA传递192.168.1.0路由时,下一跳修改为自身的2.2.2.2,RTA有去往2.2.2.2的路由,所以192.168.1。这条路由对于RTA来说就是有效的。
- BGP路由通告原则四:BGP Speraker从IBGP获得的路由不会通告给它的IBGP邻居。如图所示
如果没有这条路由通告规则RTC从IBGP对等体的路由就会通告给RTD,RTD继而会通告给RTB,RTB再把这条路由通告回RTA。这样就在AS内形成了路由环路。所以,此原则是在AS内避免路由环路的重要手段。但是,这条原则的引入,带来了新的问题:RTD无法收到来自AS12的BGP路由。
一般会采用IBGP的逻辑全连接来解决这个问题,即在RTA-RTD,RTB-RTC之间再建立两条IBGP连接。
如图所示为IBGP全连接(FULL-MESH)关系。这是解决由于IBGP水平分割带来的路由传递问题方法之一。这种方法的缺陷是路由器要付出更多的开销去维护网络里的IBGP会话。
除此以外,BGP还提供了两种解决IBGP水平分割的方案:路由反射器(Route-Reflector,RR)一RFC 2796;联盟(Confederation)一RFC 3065。
- BGP路由通告原则五:BGP Speaker从IBGP获得的路由是否通告给它的EBGP对等体,要依据IGP和BGP同步的情况来决定。
BGP与IGP同步是指BGPSpeaker不将从IBGP等体得知的路由信息通告给它的EBGP对等体,除非该路由信息也能通过IGP得知。若一个路由器能通过IGP得知该路由信息,则可认为此路由在AS中传播的内部路由可达性已有了保证。
BGP的主要任务之一就是向其他自治系统发布该自治系统的网络可达信息。如图所示,RTB会把去往10.1.1.0/24的路由信息封装在BGP报文中,通过由RTB、 RTE 建立的TCP连接通告给RTE。如果 RTE不考虑同步问题,直接接收了这条路由信息并通告给RTF,那么,如果RTF或RTE有去往10.1.1.0/24 的数据报文要发送,这个数据报文要想到达目的地必须经过RTD和RTC。但是,由于先前没有考虑同步问题,RTD和RTC 的路由表中没有去往10.1.1.0/24的路由信息,数据报文到了RTD就会被丢弃。因此,BGP必须与IGP(如RIP、OSPF等)同步。也就是说,当一个路由器从IBGP对等体收到一条路由更新信息, 在把它通告给它的EBGP对等体之前,要试图验证该目的地能否通过自治系统内部IGP路由到达(即验证该目的地是否存在于BGP发现的路由表内,非BGP路由器是否可以传递报文到该目的地)。若能通过BGP知道这个目的地,才会把这样一条路由信息通告给EBGP对等体,否则认为BGP与IGP不同步,不进行通告。
但取消同步是有条件的。 当AS中所有的 BGP路由器能 组成IBGP全闭合网时, 才可以取消同步,即RTB-RTC、RTB-RTD、RTB-RTE、RTC-RTD、RTC-RTE、RTD-RTE都通过TCP连接建立IBGP邻居关系。这时可以发现数据到RTD后,由于RTB-RTD建立了IBGP邻居,所以 RTD上有去往10.1.1.0/24的从 RTB学来的 BGP路由, 这时,通过路由迭代,RTD将数据发给RTC。同理,RTC也会把数据发给RTB。这样,数据就不会在途中丢失了。
2.BGP路由的注入
上文中介绍了BGP路由的通告原则,那么有一个问题,要想通过BGP路由,首先必须存在BGP路由。
上文提到BGP的主要工作目的是在自治系统之间传递路由信息,而不是去发现和计算路由信息。所以,路由信息需要通过配置命令的方式注入到BGP中。成为 BGP路由有两种配置方法,分别是通过Network命令以及通过lmport命令。
第一种方法是通过Network命令:路由器将通过Network将IP路由表里的路由信息注入到BGP的路由表中,并通过BGP传递给其他对等体。通过Network命令注入到BGP路由表里的路由信息必须存在于IP路由表中。
第二种方法是通过lmport命令把其他协议的路由信息注入到BGP路由表中,通过lmport时注入的路由信息通过组合策略共同使用。
- BGP选路原则
BGP作为一个策略工具,主要作用是实现AS间的路由信息传递。BGP结合丰富的路径属性,很好地控制路由信息的传递,从而实现路径的选择。
1.BGP的属性分类
BGP路径属性可以分为以下四大类。
- 公认必遵
- 公认任意
- 可选过渡
- 可选非过渡
BGP必须识别所有公认属性。而一些强制携带的属性必须包含在每一个UPDATE消息里,即公认必遵属性。而其他任意属性则可能会被包含在某些具体UPDATE消息中。一旦BGP对等体更新带有公认属性的UPDATE消息时, BGP对等体必须转发这些公认属性给其他对等体。
除公认属性外,每UPDATE消息里都可以包含一个或多个可选属性。并且不是 每个BGP Speaker都要求支持这些可选属性。而一个新的可选过渡属性可以被发起者或其他一些 BGP Speaker添加到路径属性上。可选属性不需要都被 BGP路由器所认识。可选过渡就是可跨越AS的属性,可选非过渡就是不可跨越AS的属性。
常见的BGP路由属性有以下几种
- Origin
- AS_PATH
- Next hop
- MED
- Local-Preference
- Atomic-Aggregate
- Aggregator
- Community
- Originator-ID
- Cluster-List
- MP_Reach_BLRI
- MP_Unreach_NLRI
- Extended_Communities
表中列出几种常见属性
Origin(起源属性)。定义路由信息的来源,标记一条路由是怎样成为BGP路由的 。
AS_PATH ( AS路径属性)。是路由经过的 AS 的序列,即列出此路由在传递过程中经过了哪些 AS。它可以防止路由循环,并用于路由的过滤和选择。
Next hop(下一跳属性)。包含到达更新消息所列网络的下一跳边界路由器的IP地址。
MED属性。当某个 AS有多个入口时,可以用MED属性来帮助其 外部的 AS选择一个较好的入口路径。
一条路由的MED值越小,其优先级越高,与Cost 值类似。
Local-Preference(本地优先级属性)。用于在AS内优选到达某一目的地的路由。反映了BGPSpeaker对每条BGP路由的偏好程度。属性值越大越优。
Community(团体属性)。团体属性标识了一组具有相同特征的路由信息,与它所在的 IP子网或自治系统无关。
- 起源属性。该属性定义了BGP路径信息源头,实际上也就是BGPSpeaker产生BGP路由的方式,有以下3种 起源属性值。
- IGP:在BGP路由表中 (用 display bgp routing-table查看)将会看到 " i" 的标识,通过 network命令宣告的路由,起点属性为IGP,此种方式也称为BGP信息的半动态注入,network命令所宣告的网络来自于IGP协议(包括静态路由),这些路由是有选择性地通过network命令转换为 BGP路由,所以称为 "半动态 "。
- EGP:在BGP路由表中将会看到 " E" 的标识, 通过将 EGP转化(import)成的BGP路由将具备此属性,这个属性在现实网络中将很难遇到,因为 EGP基本上已经退出了历史舞台。
- Incomplete:在 BGP 路由表中将会有一个 "?" 标识,具备这种属性的路由是通过一些别的方式学到的,属于未知的不明确的状态 ,一般来说,是通过将IGP或者静态路由引入(import )以后产生的 。因为无条件地把IGP路自信息引入到BGP路由表可能会造成副作用,比如不要的或者错误的信息会漏(leak)进BGP 中, 比如IGP路由表中可能会包含很多仅仅用于AS内部的专用地址或者未经注册的地址 。除此以外, 这样做还有可能造成BGP路由表的动荡(因为BGP 的路由依赖于IGP路由),对此问题BGP提供了一个解决方案路由衰减(ROUTE DAMPENING ) 此处将不再讨论。
在这种情况下,必须要施加特殊的过滤, 以确定哪些特定的网络 可以从IGP注入到BGP中。对于能区分开内部和外部路由的协议,比如OSPF,可以通过配置来保证仅仅将内部路由注入到BGP中(VRP5认情况只会引入OSPF路由,并不会引入OSPF外部路由到BGP中 )。BGP的路由还可以通过引入静态路由并下发,这样做可以提高路由的稳定性。起点属性 3个值的优先顺序为IGP>EGP>INCOMPLETE ,3个值对于BGP的选路起着控制作用。
(2)AS路径属性。所谓AS_PATH,是指BGP路由在传输的路径中所经历的AS的列表,是BGP中一个非常重要的公认必遵,过渡属性。BGP不会接收AS_PATH属性中包含本AS Number的路由,从而避免了AS间产生环路的可能。为此,BGP路由器在向EBGP对等体通告一条路由时,要把自己的AS号加入到AS_PATH属性中,以记录此路由经过AS的信息,如果在路由更新消息中发现自己所在的AS号已经被包含在AS_PATH属性中,则表明该路由之前曾经通过该AS 或者是源自于该AS,为避免路由环路,应该将此路由信息丢弃。
另外,AS_PATH属性在路径选择上也是 一个很重要的衡量参数。当路由器中存在两条或者两条以上的到同一 目的地的路由时, 这些路由可以通过此属性比较相五之间的优劣,AS_PATH越短的路径越优先。需要注意的是在大多数的实际网络中,多条路径的优劣往往是由AS_PATH来决定。
如图所示,AS200内的关于网络18.0.0.0/8的BGP 路由经AS200、 AS300 、 AS400到达AS100的AS_PATH为(400 300 200),经AS200、AS500到达AS100的AS_PATH为(500 200),这时BGP优先选择有较短AS_PATH的BGP 路由(500 200)。
(3)下一跳属性。下一跳属性是一个公认必遵、过渡属性。
在图中,路由器RTA与路由器RTC通过直连以太网接口建立EBGP邻居关系,RTA与RTB通过直连接口建立IBGP邻居关系,而路由器RTC与路由器RTD通过直连以太网接口10.0.0.2和10.0.0.3建立IBGP邻居关系。
在上图中的例子对 BGP 中的下一跳属性进行介绍,主要有以下 3种形式。
- BGP 在向EBGP邻居通告路由时,或者将本地发布的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.
- 对于多路访问的网络(广播网或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.
- BGP在向IBGP邻居通告从其他EBGP得到的路由时,不改变路由的下一
跳属性,而直接传递给IBGP邻居如图所示,RTA通过IBGP向RTB通告路由18.0.0.0时,下一跳属性为10.0.0.2,这样做时会有以下问题,如果RTB不知如何去往10.0.0.2那么此BGP路由将失效。
(4)本地优先级属性。在某些情况下,一个ISP可能通过两条高速链路连接两个大的 ISP作为自己到Internet的出口,如下图所示,ISPO通过两条链路分别连接到ISP1和ISP2。
在这种情况下,ISPO怎样把流量均衡地分布到两条上行链路呢?假设Internet上有这样两条路由:210.52.83.0/24 (在后面的介绍中以83为代表) 和210.52.82.0/24(在后面的介绍中以82代表),而图中的需求是便到网络83的流量分布在到 ISP1的链路上,而到网络82的流量分布在到 ISP2的链路上。
分析ISPO内部网络结构,RT3,RT4和RT5之间分别两两建立TCP连接来构成IBGP对等体关系,而RT3 RT4分别和位于ISP2,ISP1的路由器建立EBGP对等体关系 。这样路由器RT3和RT4都会从自己的 EBGP对等体收到 82和83这两条路由,而且RT3和RT4也会通过旧GP对等体关系通告 82,83这两条路由给自己IBGP对等体,由此可以看出,RT5分别有两个来源获得82和83路由,这样只需要在RT3和RT4上适当地对来源的属性进行修改,就可以达到目的。
那么怎样做到这一点呢?在这里,BGP可以给路由附加一种称为本地优先级的属性,路由器接收到去同一目的地的多条路由,可以根据本地优先级属性值的高低进行路由选举(本地优先级的数值越高越好)。本例中,在RT3上,当从ISP2获得路由 82和83的时候,给83赋予本地优先级属性 100(默认,不需配置),而给82赋予本地优先级属性 200。同理,在RT4上,当从ISP1获得路由 82和83的时候,给82赋予100,而给83赋予 200。这样对等体 RT5 就会从两个地方接收到了带有不同本地优先级属性值的同一目的地址的两条路由,根据本地优先级数值的高低进行路由选举。最终实现到达83的流量分布在ISP1上,而到达82的流量分布在ISP2上。
- MED属性。前面介绍的本地优先级属性用于控制数据流怎样出AS,有些情况下,需要控制数据流怎样进入本AS,下图举了这样的一个例子。
在这个网络中,AS100通过两条上行链路连接AS200的两个不同的路由器, 假设在AS200中有这样两个网络 210.52.83.0/24 (在后面的介绍中以83代表)和210.52.82.0/24(在后面的介绍中以82代表),这两个网络都通过BGP通告给了AS100的边界路由器RT3。这时候AS200的管理者想达到以下目的, 从AS100来的到82的数据流通过RT2 路由器到达,而从AS100来的到83的数据流通过RT1到达。可以看出,跟前面 在AS内部控制数据流的出口不同的是,需要在AS内部控制数据流怎样流入该AS。
跟前面的思路相同,还是给通告的路由打上一种标记,当对端接收到多条去往同一网段的路由时,根据该标记决定选择哪条路由。在AS200的边界路由器RT1 上,当向RT3发布路由82和83时,给83打上标记50,而给82打上标记100。在AS200的边界路由器RT2上,当向RT3发布路由82和83时,给82打上标记50,而给83打上标记 100。当AS100 路由器RT3通过EBGP对等体分别从RT1和 RT2获得去往相同网段的路由时,会选择RT1作为83的下一跳,而选择RT2作为82的下一跳。
这种标记也可用属性的方式实现,在实现中这个标记是一个整数,数值越小,在选择中越有优势,通常称这种标记为M ED。可以看出,跟本地优先级不同的是, MED控制流量怎样进入AS,而本地优先级则控制流量怎样流出AS。
- 团体属性
团体是一组有相同性质的目的地址路由。目的就是将路由信息编组,通过组的标识决定路由传递的策略。
每个AS的管理员都可以自己定义目的地址所属的团体 ,默认情况下,所有目的路由都属于常规Internet团体。一条路由可以具有一个以上的团体属性值。在一条路由中看到多个团体属性值的BGP路由器可以根据一个,一些或所有这些属性值来采取相应的策略。路由器在将路由传递 给其他对等体之前可以增加或修改团体属性值。
团体属性由一系列以32位长度为单位的数值所组成,每32位代表一个团体属性。所有路由的团体属性都属于团体属性列表。
团体属性数值范围为0x00000000-0x0000FFFF,0XFFFF0000-0xFFFFFFFF被保留。
公认团体属性是公认的,具有全球意义,公认的团体有以下3种。
NO_EXPORT(OxFFFFFFF01)。路由器收到带有这团体值的路由后,不应把该路由通告给一个联盟之外的对等体。
NO_ADVERTISE(OxFFFFFFF02)。路由器收到带有这一团体值的路囱后,不应把该路由通告给任何的BGP对等体。
NO_EXPORT _SUBCONFED(OxFFFFFFF03)。路由器收到带有这一团体值的路由后,可以把该路由通告给它的IBGP对等体,但不应通告给任何的EBGP对等体(包括联盟内的EBGP对等体)。
除了这些公认的团体属性值外, 私有的团体属性值也可以被定义用于特殊用途。这些属性值使用一些数字所标示。通常,前两字节由本地AS来编码,后两字节是一个0-65535之间的任意数值。例如,AS690被定义为研发,教育和商务部所使用,团体属性数值应该被定义在0x02B20000~0x02B2FFFF之间。
2.BGP的选路原则
前文已经提到BGP的两个作用,控制路由传递和选择最优路径,接下来介绍BGP是如何选择出最忧的BGP路径的。BGP的路径选择过程有以下步骤。
- 如果此路由的下一跳不可达,忽略此路由。
- 评估Preferred-V alue值,数值高的优先( VRP5增加的新参数,指定对等体的首选值,数值越高越好)。
- Local-Preterence值最高的路由优先。
- 聚合路由优先于非聚合路由。
- 评估AS路径的长度,最短的路径优先。
- 比较Origin属性,IGP优于EGP, EGP优于Incomplete。
- 选择MED 较小的路由。
- EBGP路由优于IBGP路由
- BGP优先选择到BGP下一跳的IGP度量最低的路径。
注:当以上全部相同,则为等价路由,可以负载分担,AS_PATH必须完全一致,当负载分担时,以下3条原则无效。
- 比较 Cluster-List长度,短者优先。
- 比较Originator_lD(如果没有Originator_lD,则比较RouterID),选择数值较小的路径。
- 比较对等体的IP地址,选择IP地址数值最小的路径。
- BGP故障案例分析
BGP作为一个复杂的域间路由协议,经常出现各种各样的故障。定位故障的原因以及准确地排除故障都需要建立在对协议运作非常了解的基础上。前面已经提到,BGP正常运行的前提是建立邻居关系,本小节主要介绍BGP邻居无法正常建立时的故障定位思路,故障案例拓扑如图所示。
AS100内的RTB 希望与RTA建立IBGP邻居关系,希望与AS200的RTC建立EBGP邻居关系。现故障现象是RTB与RTA无法建立IBGP邻居关系,与RTC也无法建立EBGP邻居关系。
邻居关系无法建立主要有以下原因。
- TCP 179端口被禁用。
- 没有IP连通性。
- OPEN消息参数不正常。
- EBGP/IBGP配置有误
- 物理层以及其他故障。
理解BGP的通告原则以及BGP的选路过程,对处理BGP相关的故障有很大的帮助。本故障案例仅以BGP邻居无法建立为例,介绍了常见的原因。本故障案例的排查检查结果主要存在以下几个问题。
- TCP连接,BGP邻居更新的源地址不匹配。
- IP连通性,RTC没有到达RTB的路由。
- 配置信息,修改RTB以及RTC上EBGP邻居更新信息的TTL值。
- 配置的BGP AS号不匹配









浙公网安备 33010602011771号