1 BGP概述

BGP(Border Gateway Protocol,边界网关协议)是一种既可以用于不同AS(Autonomous System,自治系统)之间,又可以用于同一AS内部的动态路由协议。当BGP运行于同一AS内部时,被称为IBGP(Internal BGP);当BGP运行于不同AS之间时,称为EBGP(External BGP)。AS是拥有同一选路策略,属于同一技术管理部门的一组路由器。当前使用的BGP版本是BGP-4。

1.1  BGP的特点

BGP具有如下特点:

·BGP是一种EGP(Exterior Gateway Protocol,外部网关协议),与OSPF、RIP等IGP(Interior Gateway Protocol,内部网关协议)不同,其着眼点不在于发现和计算路由,而在于控制路由的传播和选择最佳路由。

·BGP使用TCP作为其传输层协议(端口号179),提高了协议的可靠性。

·BGP是一种路径矢量(Path-Vector)路由协议,它采用到达目的地址所经过的AS列表来衡量到达目的地址的距离。

·BGP支持CIDR(Classless Inter-Domain Routing,无类域间路由)。

·路由更新时,BGP只发送更新的路由,大大减少了BGP传播路由所占用的带宽,适用于在Internet上传播大量的路由信息。

·BGP路由通过携带AS路径信息彻底解决路由环路问题。

·BGP提供了丰富的路由策略,能够对路由实现灵活的过滤和选择。

·BGP易于扩展,能够适应网络新的发展。

1.2  BGP发言者和BGP对等体

运行BGP协议的路由器称为BGP发言者。BGP发言者接收或产生路由信息,并将路由信息发布给其它BGP发言者。

相互之间存在TCP连接、相互交换路由信息的BGP发言者互为BGP对等体。

根据对等体所在的AS,可以将对等体分为以下两种:

·IBGP对等体:对等体与本地路由器位于同一AS。

·EBGP对等体:对等体与本地路由器位于不同AS。

根据对等体的IP地址类型,可以将对等体分为以下两种:

·IPv4对等体:通过IPv4地址创建的对等体。

·IPv6对等体:通过IPv6地址创建的对等体。

1.3  BGP的消息类型

BGP定义了以下几种消息类型:

·Open:TCP连接建立后发送的第一个消息,用于在BGP对等体之间建立会话。

·Update:用于在对等体之间交换路由信息。一条Update消息可以发布具有相同路径属性的多条可达路由,也可以同时撤销多条不可达路由。

·Keepalive:BGP周期性地向对等体发送Keepalive消息,以保持会话的有效性。

·Route-refresh:用来要求对等体重新发送指定地址族的路由信息。

·Notification:当BGP检测到错误状态时,就向对等体发出Notification消息,之后BGP会话会立即中断。

1.4  BGP的路由属性

BGP路由属性是跟随路由一起发布出去的一组参数。它对特定的路由进行了进一步的描述,使得路由接收者能够根据路由属性值对路由进行过滤和选择。下面将介绍几种常见的路由属性。

1. 源(ORIGIN)属性

ORIGIN属性定义了路由信息的来源,标记一条BGP路由是怎么生成的。它有以下三种类型:

·IGP:优先级最高,表示路由产生于本AS内。

·EGP:优先级次之,表示路由通过EGP学到。

·Incomplete:优先级最低,表示路由的来源无法确定。例如,从其它路由协议引入的路由信息。

2. AS路径(AS_PATH)属性

AS_PATH属性记录了某条路由从本地到目的地址所要经过的所有AS号。当BGP路由器将一条路由通告到其他AS时,会把本地AS号添加在AS_PATH列表中。收到此路由的BGP路由器根据AS_PATH属性就可以知道到达目的地址所要经过的AS。

AS_PATH属性有以下两种类型:

·AS_SEQUENCE:AS号按照一定的顺序排列。如图1-1所示,离本地AS最近的相邻AS号排在前面,其他AS号按顺序依次排列。

·AS_SET:AS号只是经过的AS的简单罗列,没有顺序要求。

图1-1 AS_PATH属性

 

 

AS_PATH属性具有如下用途:

·避免路由环路的形成:缺省情况下,如果BGP路由器接收到的路由的AS_PATH属性中已经包含了本地的AS号,则BGP路由器认为出现路由环路,不会接受该路由。

·影响路由的选择:在其他因素相同的情况下,BGP会优先选择路径较短的路由。比如在图1-1中,AS 50中的BGP路由器会选择经过AS 40的路径作为到目的地址8.0.0.0的最优路由。用户可以使用路由策略来人为地增加AS路径的长度,以便更为灵活地控制BGP路径的选择。路由策略的详细介绍,请参见“三层技术-IP路由配置指导”中的“路由策略”。

·对路由进行过滤:通过配置AS路径过滤列表,可以针对AS_PATH属性中所包含的AS号来对路由进行过滤。AS路径过滤列表的详细介绍,请参见“三层技术-IP路由配置指导”中的“路由策略”。

3. 下一跳(NEXT_HOP)属性

BGP的NEXT_HOP属性取值不一定是邻居路由器的IP地址。如图1-2所示,NEXT_HOP属性取值情况分为几种:

·BGP发言者把自己产生的路由发给所有邻居时,将该路由信息的NEXT_HOP属性设置为自己与对端连接的接口地址;

·BGP发言者把接收到的路由发送给EBGP对等体时,将该路由信息的NEXT_HOP属性设置为自己与对端连接的接口地址;

·BGP发言者把从EBGP邻居得到的路由发给IBGP邻居时,并不改变该路由信息的NEXT_HOP属性。如果配置了负载分担,等价路由被发给IBGP邻居时则会修改NEXT_HOP属性。关于“负载分担”的概念请参见“1.7  BGP负载分担”。

图1-2 NEXT_HOP属性

 

 

4. MED(Multi-Exit Discriminator,多出口区分)属性

MED属性仅在相邻两个AS之间交换,收到此属性的AS不会再将其通告给其它AS。

MED属性相当于IGP使用的度量值(metrics),它用于判断流量进入AS时的最佳路由。当一个BGP路由器通过不同的EBGP对等体得到目的地址相同但下一跳不同的多条路由时,在其它条件相同的情况下,将优先选择MED值较小者作为最佳路由。如图1-3所示,从AS 10到AS 20的流量将选择Router B作为入口。

图1-3 MED属性

 

 

通常情况下,BGP只比较来自同一个AS的路由的MED属性值。在某些特殊的应用中,用户也可以通过配置compare-different-as-med命令,强制BGP比较来自不同AS的路由的MED属性值。

5. 本地优先(LOCAL_PREF)属性

LOCAL_PREF属性仅在IBGP对等体之间交换,不通告给其他AS。它表明BGP路由器的优先级。

LOCAL_PREF属性用于判断流量离开AS时的最佳路由。当BGP路由器通过不同的IBGP对等体得到目的地址相同但下一跳不同的多条路由时,将优先选择LOCAL_PREF属性值较高的路由。如图1-4所示,从AS 20到AS 10的流量将选择Router C作为出口。

图1-4 LOCAL_PREF属性

 

 

6. 团体(COMMUNITY)属性

BGP将具有相同特征的路由归为一组,称为一个团体,通过在路由中携带团体属性标识路由所属的团体。团体没有物理上的边界,不同AS的路由可以属于同一个团体。

根据需要,一条路由可以携带一个或多个团体属性值(每个团体属性值用一个四字节的整数表示)。接收到该路由的路由器可以通过比较团体属性值对路由作出适当的处理(比如决定是否发布该路由、在什么范围发布等),而不需要匹配复杂的过滤规则(如ACL),从而简化路由策略的应用和降低维护管理的难度。

公认的团体属性有:

·INTERNET:缺省情况下,所有的路由都属于INTERNET团体。具有此属性的路由可以被通告给所有的BGP对等体。

·NO_EXPORT:具有此属性的路由在收到后,不能被发布到本地AS之外。如果使用了联盟,则不能被发布到联盟之外,但可以发布给联盟中的其他子AS(关于联盟的定义请参见“1.8  6. 联盟”)。

·NO_ADVERTISE:具有此属性的路由被接收后,不能被通告给任何其他的BGP对等体。

·NO_EXPORT_SUBCONFED:具有此属性的路由被接收后,不能被发布到本地AS之外,也不能发布到联盟中的其他子AS。

除了公认的团体属性外,用户还可以使用团体属性列表自定义团体属性,以便更为灵活地控制路由策略。

7. 扩展团体属性

随着团体属性的应用日益广泛,原有四字节的团体属性无法满足用户的需求。因此,BGP定义了新的路由属性——扩展团体属性。扩展团体属性与团体属性有如下不同:

·扩展团体属性为八字节,提供了更多的属性值。

·扩展团体属性可以划分类型。在不同的组网应用中,可以使用不同类型的扩展团体属性对路由进行过滤和控制。与不区分类型、统一使用同一个属性值空间的团体属性相比,扩展团体属性的配置和管理更为简单。

目前,设备支持的扩展团体属性有VPN Target属性和SoO(Site of Origin,源站点)属性。VPN Target属性的详细介绍,请参见“MPLS配置指导”中的“MPLS L3VPN”。

SoO扩展团体属性用来标识路由的原始站点。路由器不会将带有SoO属性的路由发布给该SoO标识的站点,确保来自某个站点的路由不会再被发布到该站点,从而避免路由环路。在AS路径信息丢失时,可以通过SoO属性来避免发生环路。

SoO属性有三种格式:

·16位自治系统号:32位用户自定义数,例如:101:3。

·32位IP地址:16位用户自定义数,例如:192.168.122.15:1。

·32位自治系统号:16位用户自定义数,其中的自治系统号最小值为65536。例如:65536:1。

1.5  BGP的选路规则

目前,BGP选择路由的过程为:

(1)      丢弃下一跳(NEXT_HOP)不可达的路由;

(2)      优选首选值(Preferred-value)最大的路由;

(3)      优选本地优先级(LOCAL_PREF)最高的路由;

(4)      依次选择network命令生成的路由、import-route命令引入的路由、聚合路由;

(5)      优选AS路径(AS_PATH)最短的路由;

(6)      依次选择ORIGIN类型为IGP、EGP、Incomplete的路由;

(7)      优选MED值最低的路由;

(8)      依次选择从EBGP、联盟EBGP、联盟IBGP、IBGP学来的路由;

(9)      优选IGP Metric值最小的路由;

(10)   优选迭代深度值小的路由;

(11)   如果当前的最优路由为EBGP路由,则BGP路由器收到来自不同的EBGP邻居的路由后,不会改变最优路由;

(12)   优选Router ID最小的路由器发布的路由。如果路由包含RR属性,那么在路由选择过程中,就用ORIGINATOR_ID来替代Router ID;

(13)   优选下一跳地址为IPv4地址的路由。

(14)   优选CLUSTER_LIST长度最短的路由;

(15)   优选IP地址最小的对等体发布的路由。

 

·CLUSTER_ID为路由反射器的集群ID,CLUSTER_LIST由CLUSTER_ID序列组成,路由反射器将自己的CLUSTER_ID加入CLUSTER_LIST中。若路由反射器收到路由中的CLUSTER_LIST包含自己的CLUSTER_ID,则丢弃该路由,从而避免集群内发生环路。

·如果配置了负载分担,并且有多条到达同一目的地的路由,则根据配置的路由条数选择多条路由进行负载分担。

 

1.6  BGP发布路由的策略

BGP发布路由时采用如下策略:

·存在多条有效路由时,BGP发言者只将最优路由发布给对等体。如果配置了advertise-rib-active命令,则BGP发布IP路由表中的最优路由;否则,发布BGP路由表中的最优路由。

·BGP发言者只把自己使用的路由发布给对等体。

·BGP发言者会将从EBGP获得的路由发布给它的所有BGP对等体(包括EBGP对等体和IBGP对等体)。

·BGP发言者会将从IBGP获得的路由发布给它的EBGP对等体,但不会发布给它的IBGP对等体。

·会话一旦建立,BGP发言者将把满足上述条件的所有BGP路由发布给新对等体。之后,BGP发言者只在路由变化时,向对等体发布更新的路由。

1.7  BGP负载分担

BGP可以通过如下两种方式实现负载分担:

·基于迭代路由实现负载分担

·通过改变BGP选路规则实现负载分担

1. 基于迭代路由实现BGP负载分担

由于BGP协议本身的特殊性,它产生的路由的下一跳地址可能不是当前路由器直接相连的邻居。常见的一个原因是:IBGP之间发布路由信息时不改变下一跳。这种情况下,为了能够将报文正确转发出去,路由器必须先找到一个直接可达的地址(查找IGP建立的路由表项),通过这个地址到达路由表中指示的下一跳。在上述过程中,去往直接可达地址的路由被称为依赖路由,BGP路由依赖于这些路由指导报文转发。根据下一跳地址找到依赖路由的过程就是路由迭代。

目前系统支持基于迭代的BGP负载分担,即如果依赖路由本身是负载分担的(假设有三个下一跳地址),则BGP也会生成与依赖路由数量相同的下一跳地址来指导报文转发。需要说明的是,基于迭代的BGP负载分担并不需要命令配置,这一特性在系统上始终启用。

2. 通过改变BGP选路规则实现负载分担

在实现方法上,BGP的负载分担与IGP的负载分担有所不同:

·IGP(如RIP、OSPF)是通过协议定义的路由算法,对到达同一目的地址的不同路由,根据计算结果,将度量值(metric)相等的路由进行负载分担,选择的标准很明确(按metric)。

·BGP本身并没有路由计算的算法,它只是一个选路的路由协议,因此,不能根据一个明确的度量值决定是否对路由进行负载分担,但BGP有丰富的选路规则,可以在对路由进行一定的选择后,有条件地进行负载分担,也就是将负载分担加入到BGP的选路规则中去。

采用本方式进行负载分担时,BGP不再按照“1.5  BGP的选路规则”中的规则选择路由,当路由同时满足如下条件时,即在这些路由间进行负载分担:

·ORIGIN属性、LOCAL_PREF属性、和MED属性完全相同。

·对AS_PATH属性的要求为:

¡  如果同时配置balance as-path-neglectbalance as-path-relax命令,或者仅配置balance as-path-neglect命令,则AS_PATH属性可以不同。

¡  如果仅配置balance as-path-relax命令,则AS_PATH属性内容不同但长度相同的路由之间能够形成BGP负载分担。

¡  如果未配置balance as-path-neglectbalance as-path-relax命令,则要求AS_PATH属性也必须相同。

·同为标签路由(具有对应MPLS标签值的路由)或同为非标签路由。

图1-5 BGP负载分担示意图

 

 

图1-5中,Router A和Router B是Router C的IBGP对等体。当Router D和Router E同时向Router C通告到达同一目的地的路由时,如果用户在Router C上配置了进行负载分担的BGP路由条数为2,则当这两条路由满足负载分担条件时,Router C就把这两条路由同时加入到转发表中,实现BGP路由的负载分担。Router C只向Router A和Router B转发一次该路由,该路由的属性按照如下方法确定:

·如果未配置balance as-path-neglectbalance as-path-relax命令,形成负载分担的路由的AS_PATH属性相同,则发布路由的AS_PATH属性就为该值;如果配置了balance as-path-neglectbalance as-path-relax命令,形成负载分担的路由的AS_PATH属性不同,则发布路由的AS_PATH属性为最佳路由的AS_PATH属性。

·NEXT_HOP属性改变为Router C的地址,而不是原来的EBGP对等体地址。

·其它的BGP路由属性为最佳路由的属性。

 

BGP负载分担特性适用于EBGP、IBGP以及联盟之间。

 

1.8  大规模BGP网络所遇问题的解决方法

在大规模BGP网络中,对等体的数目众多,路由表庞大,配置和维护极为不便。通过如下方法,可以降低管理难度,提高路由发布效率。

1. 路由聚合

在大规模的网络中,BGP路由表十分庞大,使用路由聚合(Routes Aggregation)可以大大减小BGP路由表的规模。

路由聚合实际上是将多条路由合并的过程。这样BGP在向对等体通告路由时,可以只通告聚合后的路由,而不是将所有的具体路由都通告出去。

目前系统支持自动聚合和手动聚合方式。使用后者还可以控制聚合路由的属性,以及决定是否发布具体路由。

2. 路由衰减

路由发生变化时,路由协议会向邻居发布路由更新,收到路由更新的路由器需要重新计算路由并修改路由表。如果发生路由震荡,即路由不稳定,路由表中的某条路由反复消失和重现,则会消耗大量的带宽资源和CPU资源,严重时会影响到网络的正常工作。

在多数情况下,BGP协议都应用于复杂的网络环境中,路由变化十分频繁。为了防止持续的路由震荡带来的不利影响,BGP使用衰减来抑制不稳定的路由。

BGP衰减使用惩罚值来衡量一条路由的稳定性,惩罚值越高说明路由越不稳定。如图1-6所示,路由每次从可达状态变为不可达状态,或者可达路由的属性每次发生变化时,BGP给此路由增加一定的惩罚值(系统固定为1000,不可修改)。当惩罚值超过抑制阈值时,此路由被抑制,不参与路由选择。惩罚值达到设置的上限后,不再继续增加。

发生震荡的路由如果没有再次震荡,则路由的惩罚值会逐渐减少。每经过一段时间,惩罚值便会减少一半,这个时间称为半衰期(Half-life)。当惩罚值低于再使用阈值时,此路由变为可用路由,参与路由选择。

图1-6 BGP路由衰减示意图

 

 

3. 对等体组

在大规模BGP网络中,对等体的数量很多,其中很多对等体具有相同的策略,在配置时会重复使用一些命令。此时,将这些对等体加入一个对等体组,可以简化配置。

对等体组是具有某些相同属性的对等体的集合。当一个对等体加入对等体组时,此对等体将获得与所在对等体组相同的配置。当对等体组的配置改变时,组内成员的配置也相应改变。

4. 团体

在大规模的网络中,如果通过地址前缀列表、ACL、AS_PATH等实现对路由的控制,不仅配置复杂,而且不方便维护。利用团体属性和扩展团体属性,可以提高路由策略配置的灵活度,简化路由策略的管理,从而降低维护管理的难度。团体属性和扩展团体属性的介绍请参见“1.4  BGP的路由属性”。

5. 路由反射器

为保证IBGP对等体之间的连通性,需要在IBGP对等体之间建立全连接关系。假设在一个AS内部有n台路由器,那么应该建立的IBGP连接数就为n(n-1)/2。当IBGP对等体数目很多时,对网络资源和CPU资源的消耗都很大。

利用路由反射可以解决这一问题。在一个AS内,其中一台路由器作为RR(Route Reflector,路由反射器),作为客户机(Client)的路由器与路由反射器之间建立IBGP连接。路由反射器从客户机接收到路由后,将其传递(反射)给所有其他的客户机,从而保证客户机之间不需要建立BGP连接,就可以学习到彼此的路由。

既不是路由反射器也不是客户机的BGP路由器被称为非客户机(Non-client)。非客户机与路由反射器之间,以及所有的非客户机之间仍然必须建立全连接关系。其示意图如图1-7所示。

图1-7 路由反射器示意图

 

 

路由反射器及其客户机形成了一个集群。通常情况下,一个集群中只有一个路由反射器,该反射器的Router ID就作为集群ID,用于识别该群。如图1-8所示,为了提高网络的可靠性、避免单点故障,一个集群中可以设置多个路由反射器。此时,集群中所有路由反射器上都需要配置相同的集群ID,以便集群具有统一的标识,避免路由环路的产生。

图1-8 多路由反射器

 

 

如果配置了路由反射器后,由于组网需要在路由反射器的客户机之间又建立了全连接,则客户机之间可以直接交换路由信息,客户机到客户机之间的路由反射是没有必要的。此时,不需要修改网络配置或改变网络拓扑,只需在路由反射器上通过相关命令禁止其在客户机之间反射路由,就可以避免路由反射,减少占用的带宽资源。

 

禁止客户机之间的路由反射后,客户机到非客户机之间的路由仍然可以被反射。

 

6. 联盟

联盟(Confederation)是处理自治系统内部的IBGP网络连接激增的另一种方法,它将一个自治系统划分为若干个子自治系统,每个子自治系统内部的IBGP对等体建立全连接关系,子自治系统之间建立联盟内部EBGP连接关系。其示意图如图1-9所示。

图1-9 联盟示意图

 

 

在不属于联盟的BGP发言者看来,属于同一个联盟的多个子自治系统是一个整体,外界不需要了解内部的子自治系统情况,联盟ID就是标识联盟这一整体的自治系统号,如上图中的AS 200就是联盟ID。

联盟的缺陷是从非联盟方案向联盟方案转变时,要求路由器重新进行配置,逻辑拓扑也要改变。

在大型BGP网络中,路由反射器和联盟可以被同时使用。

1.9  MP-BGP

1. MP-BGP支持的协议

BGP-4只能传递IPv4单播的路由信息,不能传递其它网络层协议(如IPv6等)的路由信息。

为了提供对多种网络层协议的支持,IETF对BGP-4进行了扩展,形成MP-BGP(Multiprotocol Border Gateway Protocol,多协议边界网关协议)。MP-BGP可以为多种网络层协议传递路由信息。

·IPv6单播

通过MP-BGP发布和维护IPv6单播路由前缀信息。

·IPv4组播/IPv6组播

组播路由协议PIM(Protocol Independent Multicast,协议无关组播)根据单播静态路由或者任意单播路由协议(包括RIP、OSPF、IS-IS、BGP等)所生成的单播路由表进行RPF(Reverse Path Forwarding,逆向路径转发)检查,以创建组播路由表项,从而进行组播报文的转发。组播转发路径与单播转发路径是一致的。但是,在某些情况下,组播网络拓扑和单播网络拓扑有可能不同;有些用户希望组播转发路径不同于单播转发路径,以便分别对组播流量和单播流量进行管理和控制。

MP-BGP对IPv4组播/IPv6组播的扩展,称为MBGP(Multicast BGP,组播BGP),它通过MP-BGP传递用于RPF检查的路由信息,并将该信息保存在独立的组播BGP路由表中,以实现单播转发和组播转发的隔离,使得组播转发路径可以不同于单播转发路径。

有关组播、PIM和RPF检查的详细介绍,请参见“IP组播配置指导”。

·VPNv4/VPNv6

通过MP-BGP发布和维护VPNv4/VPNv6路由前缀信息,详细介绍请参见“MPLS配置指导”中的“MPLS L3VPN”和“IPv6 MPLS L3VPN”。

·带标签的IPv4单播/IPv6单播

通过MP-BGP发布和维护IPv4单播/IPv6单播路由前缀的同时,还发布为该路由前缀分配的MPLS标签。带标签的IPv4单播路由主要应用于MPLS L3VPN的跨域VPN-OptionC组网中;带标签的IPv6单播路由主要应用于6PE和MPLS L3VPN的跨域VPN-OptionC组网中。跨域VPN-OptionC组网的详细介绍,请参见“MPLS配置指导”中的“MPLS L3VPN”。

·L2VPN

通过MP-BGP发布和维护标签块信息和远端邻居信息,详细介绍请参见“MPLS配置指导”中的“MPLS L2VPN”和“VPLS”。

·IPv4 MDT

通过MP-BGP发布和维护包含PE地址及PE所在的Default-group等信息的MDT信息,以便组播VPN根据MDT信息在公网上建立以PE为根(即组播源)的Default-MDT。详细介绍请参见“IP组播配置指导”中的“组播VPN”。

·MVPN

通过MP-BGP发布和维护MVPN路由信息。在组播VPN的RSVP-TE模式中,设备根据MVPN路由信息建立相容性隧道和选择性隧道,详细介绍请参见“IP组播配置指导”中的“组播VPN”。

·EVPN

通过MP-BGP发布和维护EVPN路由信息,以实现自动发现VTEP、自动建立和关联VXLAN隧道、通告MAC地址和ARP信息。详细介绍请参见“EVPN配置指导”中的“EVPN”。

2. MP-BGP的扩展属性

路由信息中与网络层协议相关的关键信息包括路由前缀和下一跳地址。BGP-4通过Update消息中的NLRI(Network Layer Reachability Information,网络层可达性信息)字段携带可达路由的前缀信息,Withdrawn Routes字段携带不可达路由的前缀信息,NEXT_HOP属性携带下一跳地址信息。NLRI字段、Withdrawn Routes字段和NEXT_HOP属性不易于扩展,无法携带多种网络层协议的信息。

为实现对多种网络层协议的支持,MP-BGP定义了两个新的路径属性:

·MP_REACH_NLRI(Multiprotocol Reachable NLRI,多协议可达NLRI):用于携带多种网络层协议的可达路由前缀及下一跳地址信息,以便向邻居发布该路由。

·MP_UNREACH_NLRI(Multiprotocol Unreachable NLRI,多协议不可达NLRI):用于携带多种网络层协议的不可达路由前缀信息,以便撤销该路由。

MP-BGP通过上述两个路径属性传递不同网络层协议的可达路由和不可达路由信息。不支持MP-BGP的BGP发言者接收到带有这两个属性的Update消息后,忽略这两个属性,不把它们传递给其它邻居。

3. 地址族

MP-BGP采用地址族(Address Family)和子地址族(Subsequent Address Family)来区分MP_REACH_NLRI属性、MP_UNREACH_NLRI属性中携带路由信息所属的网络层协议。例如,如果MP_REACH_NLRI属性中AFI(Address Family Identifier,地址族标识符)为2、SAFI(Subsequent Address Family Identifier,子地址族标识符)为1,则表示该属性中携带的是IPv6单播路由信息。关于地址族的一些取值可以参考RFC 1700。

4. MP-BGP支持BGP IPvX会话承载IPv4和IPv6路由

MP-BGP支持IPvX(X可以为4或6)对等体之间交互IPv4和IPv6路由,即IPv4对等体之间除了交互IPv4路由以外还可以交互IPv6路由,IPv6对等体之间除了交互IPv6路由以外还可以交互IPv4路由:

·IPv6路由的下一跳为IPv4地址时,MP-BGP将此IPv4地址映射为IPv6地址封装在Update报文的Next-Hop属性中。此时,需要配置路由策略,将IPv6路由的下一跳地址修改为对端设备的IPv6地址,否则无法正常进行路由迭代。

·IPv4路由的下一跳为IPv6地址时,需要BGP会话协商支持扩展IPv6下一跳能力,将IPv4 NLRI封装在MP_REACH_NLRI属性中。此时,需要配置路由策略,将IPv4路由的下一跳地址修改为对端设备的IPv4地址,否则无法正常进行路由迭代。

图1-10 MP-BGP支持BGP IPvX会话承载IPv4和IPv6路由

 

 

图1-10为例,Device B和Device C之间仅建立BGP IPv6会话,Device A和DeviceB、Device C和Device D之间同时建立BGP IPv4和BGP IPv6会话,Device A和Device D可以学习到对方的IPv4和IPv6路由并且两个地址族下的流量都能正常互通。当Device C收到Device B发布的IPv4路由时,下一跳为Device B的IPv6地址,需要在Device C上配置路由策略将这类路由的下一跳属性修改为Device B上出接口Port A的IPv4地址10.1.1.1/24,反之同理。

1.10  BGP多进程

一台BGP路由器上可以同时启动多个BGP进程,每个BGP进程对应一个BGP实例。BGP为不同的BGP实例维护独立的路由表。

1.11  BGP相关视图介绍

设备为BGP定义了多种视图,分别用来管理不同BGP实例、不同地址族及不同VPN实例的路由信息。BGP支持VPN多实例,可以为不同的VPN实例维护独立的路由表。

大多数BGP配置命令可以在多个视图下执行,不同视图下命令的作用范围有所不同,详细介绍如表1-1所示。

表1-1 BGP相关视图介绍

视图名称

进入视图方法

说明

BGP实例视图

<Sysname> system-view

[Sysname] bgp 100 instance abc

[Sysname-bgp-abc]

执行bgp命令时,可以通过instance参数指定BGP实例名称,以便进入指定BGP实例的视图,该视图下有些配置对指定BGP实例的公网和所有VPN实例内所有地址族的路由和对等体生效(如联盟、GR、日志功能的配置等),有些配置只对指定BGP实例的公网内所有地址族的路由和对等体生效

BGP IPv4单播地址族视图

<Sysname> system-view

[Sysname] bgp 100 instance abc

[Sysname-bgp-abc] address-family ipv4 unicast

[Sysname-bgp-abc-ipv4]

该视图下的配置对指定BGP实例的公网内的IPv4单播路由和对等体生效

BGP IPv6单播地址族视图

<Sysname> system-view

[Sysname] bgp 100 instance abc

[Sysname-bgp-abc] address-family ipv6 unicast

[Sysname-bgp-abc-ipv6]

该视图下的配置对指定BGP实例的公网内的IPv6单播路由和对等体生效

BGP IPv4组播地址族视图

<Sysname> system-view

[Sysname] bgp 100 instance abc

[Sysname-bgp-abc] address-family ipv4 multicast

[Sysname-bgp-abc-mul-ipv4]

该视图下的配置对指定BGP实例的IPv4组播路由和对等体生效

BGP IPv6组播地址族视图

<Sysname> system-view

[Sysname] bgp 100 instance abc

[Sysname-bgp-abc] address-family ipv6 multicast

[Sysname-bgp-abc-mul-ipv6]

该视图下的配置对指定BGP实例的IPv6组播路由和对等体生效

BGP VPNv4地址族视图

<Sysname> system-view

[Sysname] bgp 100 instance abc

[Sysname-bgp-abc] address-family vpnv4

[Sysname-bgp-abc-vpnv4]

该视图下的配置对指定BGP实例的VPNv4路由和对等体生效

BGP VPNv4地址族视图的配置请参见“MPLS配置指导”中的“MPLS L3VPN”

BGP VPNv6地址族视图

<Sysname> system-view

[Sysname] bgp 100 instance abc

[Sysname-bgp-abc] address-family vpnv6

[Sysname-bgp-abc-vpnv6]

该视图下的配置对指定BGP实例的VPNv6路由和对等体生效

BGP VPNv6地址族视图的配置请参见“MPLS配置指导”中的“IPv6 MPLS L3VPN”

BGP L2VPN地址族视图

<Sysname> system-view

[Sysname] bgp 100 instance abc

[Sysname-bgp-abc] address-family l2vpn

[Sysname-bgp-abc-l2vpn]

该视图下的配置对指定BGP实例的L2VPN对等体和L2VPN信息生效

BGP L2VPN地址族视图的配置请参见“MPLS配置指导”中的“MPLS L2VPN”和“VPLS”

BGP EVPN地址族视图

<Sysname> system-view

[Sysname] bgp 100 instance abc

[Sysname-bgp-abc] address-family l2vpn evpn

[Sysname-bgp-abc-evpn]

该视图下的配置对指定BGP实例的EVPN路由和对等体生效

BGP EVPN地址族的配置请参见“EVPN配置指导”中的“EVPN”

BGP-VPN实例视图

<Sysname> system-view

[Sysname] bgp 100 instance abc

[Sysname-bgp-abc] ip vpn-instance vpn1

[Sysname-bgp-abc-vpn1]

该视图下的配置对指定BGP实例的指定VPN实例内所有地址族的路由和对等体生效

VPN实例的详细介绍,请参见“MPLS配置指导”中的“MPLS L3VPN”

BGP-VPN IPv4单播地址族视图

<Sysname> system-view

[Sysname] bgp 100 instance abc

[Sysname-bgp-abc] ip vpn-instance vpn1

[Sysname-bgp-abc-vpn1] address-family ipv4 unicast

[Sysname-bgp-abc-ipv4-vpn1]

该视图下的配置对指定BGP实例的指定VPN实例内的IPv4单播路由和对等体生效

VPN实例的详细介绍,请参见“MPLS配置指导”中的“MPLS L3VPN”

BGP-VPN IPv6单播地址族视图

<Sysname> system-view

[Sysname] bgp 100 instance abc

[Sysname-bgp-abc] ip vpn-instance vpn1

[Sysname-bgp-abc-vpn1] address-family ipv6 unicast

[Sysname-bgp-abc-ipv6-vpn1]

该视图下的配置对指定BGP实例的指定VPN实例内的IPv6单播路由和对等体生效

VPN实例的详细介绍,请参见“MPLS配置指导”中的“MPLS L3VPN”

BGP-VPN VPNv4地址族视图

<Sysname> system-view

[Sysname] bgp 100 instance abc

[Sysname-bgp-abc] ip vpn-instance vpn1

[Sysname-bgp-abc-vpn1] address-family vpnv4

[Sysname-bgp-abc-vpnv4-vpn1]

该视图下的配置对指定BGP实例的指定VPN实例内的VPNv4路由和对等体生效

BGP-VPN VPNv4地址族视图的配置请参见“MPLS配置指导”中的“MPLS L3VPN”

BGP MDT地址族视图

<Sysname> system-view

[Sysname] bgp 100 instance abc

[Sysname-bgp-abc] address-family ipv4 mdt

[Sysname-bgp-abc-mdt]

该视图下的配置对指定BGP实例的MDT路由和对等体生效

BGP MDT地址族的配置请参见“IP组播配置指导”中的“组播VPN”

BGP IPv4 MVPN地址族视图

<Sysname> system-view

[Sysname] bgp 100 instance abc

[Sysname-bgp-abc] address-family ipv4 mvpn

[Sysname-bgp-abc-mvpn]

该视图下的配置对指定BGP实例的MVPN路由和对等体生效

BGP IPv4 MVPN地址族的配置请参见“IP组播配置指导”中的“组播VPN”

BGP LS地址族视图

<Sysname> system-view

[Sysname] bgp 100 instance abc

[Sysname-bgp-abc] address-family link-state

[Sysname-bgp-abc-ls]

该视图下的配置对指定BGP实例的LS信息和对等体生效

BGP IPv4 RT-Filter地址族视图

<Sysname> system-view

[Sysname] bgp 100 instance abc

[Sysname-bgp-abc] address-family ipv4 rtfilter

[Sysname-bgp-abc-rtf-ipv4]

该视图下的配置对指定BGP实例的IPv4 RT-Filter路由和对等体生效

BGP IPv4 RT-Filter地址族视图的配置请参见“MPLS配置指导”中的“MPLS L3VPN”

 

1.12  协议规范

与BGP相关的协议规范有:

·RFC 1700:ASSIGNED NUMBERS

·RFC 1997:BGP Communities Attribute

·RFC 2439:BGP Route Flap Damping

·RFC 2545:Use of BGP-4 Multiprotocol Extensions for IPv6 Inter-Domain Routing

·RFC 2918:Route Refresh Capability for BGP-4

·RFC 3107:Carrying Label Information in BGP-4

·RFC 4271:A Border Gateway Protocol 4 (BGP-4)

·RFC 4275:BGP-4 MIB Implementation Survey

·RFC 4277:Experience with the BGP-4 Protocol

·RFC 4360:BGP Extended Communities Attribute

·RFC 4364:BGP/MPLS IP Virtual Private Networks (VPNs)

·RFC 4382:MPLS/BGP Layer 3 Virtual Private Network (VPN) Management

·RFC 4451:BGP MULTI_EXIT_DISC (MED) Consideration

·RFC 4456:BGP Route Reflection: An Alternative to Full Mesh Internal BGP

·RFC 4486:Subcodes for BGP Cease Notification Message

·RFC 4659:BGP-MPLS IP Virtual Private Network (VPN) Extension for IPv6 VPN

·RFC 4684:Constrained Route Distribution for Border Gateway Protocol/MultiProtocol Label Switching (BGP/MPLS) Internet Protocol (IP) Virtual Private Networks (VPNs)

·RFC 4724:Graceful Restart Mechanism for BGP

·RFC 4760:Multiprotocol Extensions for BGP-4

·RFC 4781:Graceful Restart Mechanism for BGP with MPLS

·RFC 5004:Avoid BGP Best Path Transitions from One External to Another

·RFC 5065:Autonomous System Confederations for BGP

·RFC 5082:The Generalized TTL Security Mechanism (GTSM)

·RFC 5291:Outbound Route Filtering Capability for BGP-4

·RFC 5292:Address-Prefix-Based Outbound Route Filter for BGP-4

·RFC 5549:Advertising IPv4 Network Layer Reachability Information with an IPv6 Next Hop

·RFC 5492:Capabilities Advertisement with BGP-4

·RFC 5668:4-Octet AS Specific BGP Extended Community

·RFC 6037:Cisco Systems' Solution for Multicast in BGP MPLS IP VPNs

·RFC 6198:Requirements for the Graceful Shutdown of BGP Sessions

·RFC 6368:Internal BGP as the Provider/Customer Edge Protocol for BGP/MPLS IP

·RFC 6513:Multicast in MPLS/BGP IP VPNs

·RFC 6514:BGP Encodings and Procedures for Multicast in MPLS/BGP IP VPNs

·RFC 6515:IPv4 and IPv6 Infrastructure Addresses in BGP Updates for Multicast VPN

·RFC 6624:Layer 2 Virtual Private Networks Using BGP for Auto-Discovery and Signaling

·RFC 6793:BGP Support for Four-Octet Autonomous System (AS) Number Space

·RFC 7432:BGP MPLS-Based Ethernet VPN

·RFC 7752:North-Bound Distribution of Link-State and Traffic Engineering (TE) Information Using BGP

·RFC 7854:BGP Monitoring Protocol (BMP)

·RFC 7911:Advertisement of Multiple Paths in BGP

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐