06-BGP配置
本章节下载: 06-BGP配置 (1.06 MB)
BGP(Border Gateway Protocol,边界网关协议)是一种既可以用于不同AS(Autonomous System,自治系统)之间,又可以用于同一AS内部的动态路由协议。当BGP运行于同一AS内部时,被称为IBGP(Internal BGP);当BGP运行于不同AS之间时,称为EBGP(External BGP)。AS是拥有同一选路策略,属于同一技术管理部门的一组路由器。
当前使用的BGP版本是BGP-4。BGP-4作为Internet外部路由协议标准,被ISP(Internet Service Provider,互联网服务提供商)广泛应用。
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易于扩展,能够适应网络新的发展。
运行BGP协议的路由器称为BGP发言者。BGP发言者接收或产生路由信息,并将路由信息发布给其它BGP发言者。
相互之间存在TCP连接、相互交换路由信息的BGP发言者互为BGP对等体。根据对等体所在的AS,对等体分为以下几种:
· IBGP对等体:对等体与本地路由器位于同一AS。
· EBGP对等体:对等体与本地路由器位于不同AS。
BGP定义了以下几种消息类型:
· Open:TCP连接建立后发送的第一个消息,用于在BGP对等体之间建立会话。
· Update:用于在对等体之间交换路由信息。一条Update消息可以发布具有相同路径属性的多条可达路由,也可以同时撤销多条不可达路由。
· Keepalive:BGP周期性地向对等体发送Keepalive消息,以保持会话的有效性。
· Route-refresh:用来要求对等体重新发送指定地址族的路由信息。
· Notification:当BGP检测到错误状态时,就向对等体发出Notification消息,之后BGP会话会立即中断。
BGP路由属性是跟随路由一起发布出去的一组参数。它对特定的路由进行了进一步的描述,使得路由接收者能够根据路由属性值对路由进行过滤和选择。下面将介绍几种常见的路由属性。
ORIGIN属性定义了路由信息的来源,标记一条BGP路由是怎么生成的。它有以下三种类型:
· IGP:优先级最高,表示路由产生于本AS内。
· EGP:优先级次之,表示路由通过EGP学到。
· Incomplete:优先级最低,表示路由的来源无法确定。例如,从其它路由协议引入的路由信息。
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的简单罗列,没有顺序要求。
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路由配置指导”中的“路由策略”。
BGP的NEXT_HOP属性取值不一定是邻居路由器的IP地址。如图1-2所示,NEXT_HOP属性取值情况分为几种:
· BGP发言者把自己产生的路由发给所有邻居时,将该路由信息的NEXT_HOP属性设置为自己与对端连接的接口地址;
· BGP发言者把接收到的路由发送给EBGP对等体时,将该路由信息的NEXT_HOP属性设置为自己与对端连接的接口地址;
· BGP发言者把从EBGP邻居得到的路由发给IBGP邻居时,并不改变该路由信息的NEXT_HOP属性。如果配置了负载分担,等价路由被发给IBGP邻居时则会修改NEXT_HOP属性。关于“负载分担”的概念请参见“1.1.6 BGP负载分担”。
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属性值。
LOCAL_PREF属性仅在IBGP对等体之间交换,不通告给其他AS。它表明BGP路由器的优先级。
LOCAL_PREF属性用于判断流量离开AS时的最佳路由。当BGP路由器通过不同的IBGP对等体得到目的地址相同但下一跳不同的多条路由时,将优先选择LOCAL_PREF属性值较高的路由。如图1-4所示,从AS 20到AS 10的流量将选择Router C作为出口。
BGP将具有相同特征的路由归为一组,称为一个团体,通过在路由中携带团体属性标识路由所属的团体。团体没有物理上的边界,不同AS的路由可以属于同一个团体。
根据需要,一条路由可以携带一个或多个团体属性值(每个团体属性值用一个四字节的整数表示)。接收到该路由的路由器可以通过比较团体属性值对路由作出适当的处理(比如决定是否发布该路由、在什么范围发布等),而不需要匹配复杂的过滤规则(如ACL),从而简化路由策略的应用和降低维护管理的难度。
公认的团体属性有:
· INTERNET:缺省情况下,所有的路由都属于INTERNET团体。具有此属性的路由可以被通告给所有的BGP对等体。
· NO_EXPORT:具有此属性的路由在收到后,不能被发布到本地AS之外。如果使用了联盟,则不能被发布到联盟之外,但可以发布给联盟中的其他子AS(关于联盟的定义请参见“1.1.7 6. 联盟”)。
· NO_ADVERTISE:具有此属性的路由被接收后,不能被通告给任何其他的BGP对等体。
· NO_EXPORT_SUBCONFED:具有此属性的路由被接收后,不能被发布到本地AS之外,也不能发布到联盟中的其他子AS。
除了公认的团体属性外,用户还可以使用团体属性列表自定义团体属性,以便更为灵活地控制路由策略。
随着团体属性的应用日益广泛,原有四字节的团体属性无法满足用户的需求。因此,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) 优选下一跳Cost值最低的路由;
(10) 优选CLUSTER_LIST长度最短的路由;
(11) 优选ORIGINATOR_ID最小的路由;
(12) 优选Router ID最小的路由器发布的路由;
(13) 优选IP地址最小的对等体发布的路由。
· CLUSTER_ID为路由反射器的集群ID,CLUSTER_LIST由CLUSTER_ID序列组成,路由反射器将自己的CLUSTER_ID加入CLUSTER_LIST中。若路由反射器收到路由中的CLUSTER_LIST包含自己的CLUSTER_ID,则丢弃该路由,从而避免集群内发生环路。
· 如果配置了负载分担,并且有多条到达同一目的地的路由,则根据配置的路由条数选择多条路由进行负载分担。
BGP发布路由时采用如下策略:
· 存在多条有效路由时,BGP发言者只将最优路由发布给对等体。如果配置了advertise-rib-active命令,则BGP发布IP路由表中的最优路由;否则,发布BGP路由表中的最优路由。
· BGP发言者只把自己使用的路由发布给对等体。
· BGP发言者会将从EBGP获得的路由发布给它的所有BGP对等体(包括EBGP对等体和IBGP对等体)。
· BGP发言者会将从IBGP获得的路由发布给它的EBGP对等体,但不会发布给它的IBGP对等体。
· 会话一旦建立,BGP发言者将把满足上述条件的所有BGP路由发布给新对等体。之后,BGP发言者只在路由变化时,向对等体发布更新的路由。
BGP可以通过如下两种方式实现负载分担:
· 基于迭代路由实现负载分担
· 通过改变BGP选路规则实现负载分担
由于BGP协议本身的特殊性,它产生的路由的下一跳地址可能不是当前路由器直接相连的邻居。常见的一个原因是:IBGP之间发布路由信息时不改变下一跳。这种情况下,为了能够将报文正确转发出去,路由器必须先找到一个直接可达的地址(查找IGP建立的路由表项),通过这个地址到达路由表中指示的下一跳。在上述过程中,去往直接可达地址的路由被称为依赖路由,BGP路由依赖于这些路由指导报文转发。根据下一跳地址找到依赖路由的过程就是路由迭代。
目前系统支持基于迭代的BGP负载分担,即如果依赖路由本身是负载分担的(假设有三个下一跳地址),则BGP也会生成与依赖路由数量相同的下一跳地址来指导报文转发。需要说明的是,基于迭代的BGP负载分担并不需要命令配置,这一特性在系统上始终启用。
在实现方法上,BGP的负载分担与IGP的负载分担有所不同:
· IGP(如RIP、OSPF)是通过协议定义的路由算法,对到达同一目的地址的不同路由,根据计算结果,将度量值(metric)相等的路由进行负载分担,选择的标准很明确(按metric)。
· BGP本身并没有路由计算的算法,它只是一个选路的路由协议,因此,不能根据一个明确的度量值决定是否对路由进行负载分担,但BGP有丰富的选路规则,可以在对路由进行一定的选择后,有条件地进行负载分担,也就是将负载分担加入到BGP的选路规则中去。
采用本方式进行负载分担时,BGP不再按照“1.1.4 BGP的选路规则”中的规则选择路由,当路由同时满足如下条件时,即在这些路由间进行负载分担:
· 路由的AS_PATH属性、ORIGIN属性、LOCAL_PREF属性和MED属性完全相同。(配置balance as-path-neglect命令后,允许不同AS_PATH属性的路由形成等价路由。请根据您的网络状况谨慎使用balance as-path-neglect命令,以避免形成路由环路。)
· 同为经过路由反射器反射的路由,或同为未经路由反射器反射的路由。
图1-5 BGP负载分担示意图
在图1-5中,Router A和Router B是Router C的IBGP对等体。当Router D和Router E同时向Router C通告到达同一目的地的路由时,如果用户在Router C上配置了进行负载分担的BGP路由条数为2,则当满足一定的选路规则后,并且两条路由具有相同的AS_PATH属性、ORIGIN属性、LOCAL_PREF属性和MED属性时,Router C就把接收的两条路由同时加入到转发表中,实现BGP路由的负载分担。Router C只向Router A和Router B转发一次该路由,AS_PATH不变,但NEXT_HOP属性改变为Router C的地址,而不是原来的EBGP对等体地址。Router C通告给Router A和Router B的路由中,其它的BGP路由属性为最佳路由的属性。
BGP负载分担特性适用于EBGP、IBGP以及联盟之间。
在大规模BGP网络中,对等体的数目众多,路由表庞大,配置和维护极为不便。通过如下方法,可以降低管理难度,提高路由发布效率。
在大规模的网络中,BGP路由表十分庞大,使用路由聚合(Routes Aggregation)可以大大减小BGP路由表的规模。
路由聚合实际上是将多条路由合并的过程。这样BGP在向对等体通告路由时,可以只通告聚合后的路由,而不是将所有的具体路由都通告出去。
目前系统支持自动聚合和手动聚合方式。使用后者还可以控制聚合路由的属性,以及决定是否发布具体路由。
路由发生变化时,路由协议会向邻居发布路由更新,收到路由更新的路由器需要重新计算路由并修改路由表。如果发生路由振荡,即路由不稳定,路由表中的某条路由反复消失和重现,则会消耗大量的带宽资源和CPU资源,严重时会影响到网络的正常工作。
在多数情况下,BGP协议都应用于复杂的网络环境中,路由变化十分频繁。为了防止持续的路由振荡带来的不利影响,BGP使用衰减来抑制不稳定的路由。
BGP衰减使用惩罚值来衡量一条路由的稳定性,惩罚值越高说明路由越不稳定。路由每次从可达状态变为不可达状态,或者可达路由的属性每次发生变化时,BGP给此路由增加一定的惩罚值(系统固定为1000,不可修改)。当惩罚值超过抑制阈值时,此路由被抑制,不参与路由优选。惩罚值达到设置的上限后,不再继续增加。
发生振荡的路由如果没有再次振荡,则路由的惩罚值会逐渐减少。每经过一段时间,惩罚值便会减少一半,这个时间称为半衰期(Half-life)。当惩罚值低于再使用阈值时,此路由变为可用路由,参与路由优选。
图1-6 BGP路由衰减示意图
在大规模BGP网络中,对等体的数量很多,其中很多对等体具有相同的策略,在配置时会重复使用一些命令。此时,将这些对等体加入一个对等体组,可以简化配置。
对等体组是具有某些相同属性的对等体的集合。当一个对等体加入对等体组时,此对等体将获得与所在对等体组相同的配置。当对等体组的配置改变时,组内成员的配置也相应改变。
在大规模的网络中,如果通过地址前缀列表、ACL、AS_PATH等实现对路由的控制,不仅配置复杂,而且不方便维护。利用团体属性和扩展团体属性,可以提高路由策略配置的灵活度,简化路由策略的管理,从而降低维护管理的难度。团体属性和扩展团体属性的介绍请参见“1.1.3 BGP的路由属性”。
为保证IBGP对等体之间的连通性,需要在IBGP对等体之间建立全连接关系。假设在一个AS内部有n台路由器,那么应该建立的IBGP连接数就为n(n-1)/2。当IBGP对等体数目很多时,对网络资源和CPU资源的消耗都很大。
利用路由反射可以解决这一问题。在一个AS内,其中一台路由器作为RR(Route Reflector,路由反射器),作为客户机(Client)的路由器与路由反射器之间建立IBGP连接。路由反射器从客户机接收到路由后,将其传递(反射)给所有其他的客户机,从而保证客户机之间不需要建立BGP连接,就可以学习到彼此的路由。
既不是路由反射器也不是客户机的BGP路由器被称为非客户机(Non-client)。非客户机与路由反射器之间,以及所有的非客户机之间仍然必须建立全连接关系。其示意图如图1-7所示。
路由反射器及其客户机形成了一个集群。通常情况下,一个集群中只有一个路由反射器,该反射器的Router ID就作为集群ID,用于识别该群。如图1-8所示,为了提高网络的可靠性、避免单点故障,一个集群中可以设置多个路由反射器。此时,集群中所有路由反射器上都需要配置相同的集群ID,以便集群具有统一的标识,避免路由环路的产生。
如果配置了路由反射器后,由于组网需要在路由反射器的客户机之间又建立了全连接,则客户机之间可以直接交换路由信息,客户机到客户机之间的路由反射是没有必要的。此时,不需要修改网络配置或改变网络拓扑,只需在路由反射器上通过相关命令禁止其在客户机之间反射路由,就可以避免路由反射,减少占用的带宽资源。
禁止客户机之间的路由反射后,客户机到非客户机之间的路由仍然可以被反射。
联盟(Confederation)是处理自治系统内部的IBGP网络连接激增的另一种方法,它将一个自治系统划分为若干个子自治系统,每个子自治系统内部的IBGP对等体建立全连接关系,子自治系统之间建立联盟内部EBGP连接关系。其示意图如图1-9所示。
在不属于联盟的BGP发言者看来,属于同一个联盟的多个子自治系统是一个整体,外界不需要了解内部的子自治系统情况,联盟ID就是标识联盟这一整体的自治系统号,如上图中的AS 200就是联盟ID。
联盟的缺陷是从非联盟方案向联盟方案转变时,要求路由器重新进行配置,逻辑拓扑也要改变。
在大型BGP网络中,路由反射器和联盟可以被同时使用。
设备为BGP定义了多种视图,分别用来管理不同地址族、不同VPN实例的路由信息。BGP支持VPN多实例,可以为不同的VPN实例维护独立的路由表。
大多数BGP配置命令可以在多个视图下执行,不同视图下命令的作用范围有所不同,详细介绍如表1-1所示。
表1-1 BGP相关视图介绍
与BGP相关的协议规范有:
· RFC 1700:ASSIGNED NUMBERS
· RFC 1771:A Border Gateway Protocol 4 (BGP-4)
· RFC 2858:Multiprotocol Extensions for BGP-4
· RFC 3392:Capabilities Advertisement with BGP-4
· RFC 2918:Route Refresh Capability for BGP-4
· RFC 2439:BGP Route Flap Damping
· RFC 1997:BGP Communities Attribute
· RFC 2796:BGP Route Reflection
· RFC 3065:Autonomous System Confederations for BGP
· RFC 4271:A Border Gateway Protocol 4 (BGP-4)
· RFC 4724:Graceful Restart Mechanism for BGP
· RFC 4360:BGP Extended Communities Attribute
· RFC 5082:The Generalized TTL Security Mechanism (GTSM)
在最基本的BGP网络中,只需完成如下配置:
· 启动BGP。
· 配置BGP对等体或对等体组。如果分别对对等体组和对等体组中的对等体进行了某项BGP配置,则以最后一次配置为准。
· 控制BGP路由信息的生成。
如果在BGP网络中,需要对BGP路由信息的发布、BGP路径的选择等进行控制,则可以根据需要进行其他配置。
表1-2 BGP配置任务简介(IPv4)
配置任务 |
说明 |
详细配置 |
|
配置BGP基本功能 |
启动BGP |
必选 |
|
配置BGP对等体 |
二者必选其一 建议在大规模的BGP网络中选择“配置BGP对等体组”,以便简化配置 |
||
配置BGP对等体组 |
|||
配置建立TCP连接使用的源地址 |
可选 |
||
控制BGP路由信息的生成 |
配置BGP发布本地路由 |
二者至少选其一 |
|
配置BGP引入IGP路由协议的路由 |
|||
控制BGP路由信息的发布与接收 |
配置BGP路由聚合 |
可选 |
|
配置向所有对等体发布IP路由表中的最优路由 |
|||
配置向对等体/对等体组发送缺省路由 |
|||
限制从BGP对等体/对等体组接收的路由数量 |
|||
配置BGP路由信息的发布/接收策略 |
|||
配置BGP延迟发布 |
|||
配置BGP路由衰减 |
|||
控制BGP路径的选择 |
为接收路由分配首选值 |
可选 |
|
配置BGP的路由优先级 |
|||
配置本地优先级的缺省值 |
|||
配置MED属性 |
|||
配置NEXT_HOP属性 |
|||
配置AS_PATH属性 |
|||
调整和优化BGP网络 |
配置BGP会话的存活时间间隔与保持时间 |
可选 |
|
配置发布同一路由的时间间隔 |
|||
配置允许同非直连邻居建立EBGP会话 |
|||
使能直连EBGP会话快速复位功能 |
|||
使能4字节AS号抑制功能 |
|||
配置BGP的MD5认证 |
|||
配置BGP负载分担 |
|||
禁止与对等体/对等体组建立会话 |
|||
配置BGP GTSM功能 |
|||
配置BGP软复位 |
|||
配置系统进入二级内存门限告警状态后不断开EBGP对等体 |
|||
配置大规模BGP网络 |
配置BGP团体 |
可选 |
|
配置BGP路由反射 |
|||
配置BGP联盟 |
|||
配置BGP GR |
可选 |
||
配置BGP NSR |
可选 |
||
开启告警功能 |
可选 |
||
使能BGP日志功能 |
可选 |
||
使能BGP的路由抖动日志记录功能(仅Release 1138P01及以上版本支持此特性) |
可选 |
||
配置BGP与BFD联动 |
可选 |
||
配置BGP快速重路由 |
可选 |
一台路由器如果要运行BGP协议,则必须存在Router ID。Router ID用来在一个自治系统中唯一的标识一台路由器。
· 用户可以在启动BGP进入BGP视图后指定Router ID,配置时,必须保证自治系统中任意两台路由器的ID都不相同。通常的做法是将路由器的ID配置为与该路由器某个接口的IP地址一致,为了增加网络的可靠性,建议将Router ID配置为Loopback接口的IP地址。
· 如果没有在BGP视图下配置Router ID,则使用全局Router ID。
· BGP的Router ID一旦确定为非零值后不会随着系统视图下router id命令配置的改变而改变。只能在BGP视图下通过router-id命令改变BGP的Router ID。
· 如果是在BGP视图下配置的Router ID,则Router ID所在接口被删除时路由器不会重新选择Router ID,只有在BGP视图下使用undo router-id命令删除手工配置的Router ID后,路由器才会重新选择Router ID。
表1-3 启动BGP
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
配置全局Router ID |
router id router-id |
缺省情况下,未配置全局Router ID 如果没有配置全局Router ID,则按照下面的规则进行选择: (1) 如果存在配置IP地址的Loopback接口,则选择Loopback接口地址中最大的作为Router ID (2) 如果所有Loopback接口都没有配置IP地址,则从其他接口的IP地址中选择最大的作为Router ID(不考虑接口的up/down状态) |
|
启动BGP,并进入BGP视图或BGP-VPN实例视图 |
启动BGP,并进入BGP视图 |
bgp as-number |
缺省情况下,系统没有运行BGP 一台路由器只能位于一个AS内,一台路由器上只能启动一个BGP进程 进入BGP-VPN实例视图时,指定的VPN实例必须已经创建,且VPN实例内必须配置RD(Route Distinguisher,路由标识符)。VPN实例的详细介绍,请参见“MPLS配置指导”中的“MPLS L3VPN” |
启动BGP,并进入BGP-VPN实例视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
配置路由器的Router ID |
router-id { router-id | auto-select } |
缺省情况下,BGP路由器的Router ID与全局Router ID相同 仅在BGP-VPN实例视图下支持auto-select关键字 |
表1-4 手工创建BGP对等体(IPv4)
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
bgp as-number |
- |
进入BGP-VPN实例视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
创建IPv4 BGP对等体,并指定对等体的AS号 |
peer ip-address as-number as-number |
缺省情况下,设备上不存在任何IPv4 BGP对等体 |
|
(可选)配置对等体的描述信息 |
peer ip-address description description-text |
缺省情况下,对等体没有描述信息 |
|
创建并进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图 |
address-family ipv4 [ unicast ] |
缺省情况下,没有创建BGP IPv4单播地址族视图和BGP-VPN IPv4单播地址族视图 |
|
使能本地路由器与指定对等体交换IPv4单播路由信息的能力 |
peer ip-address enable |
缺省情况下,本地路由器不能与对等体交换IPv4单播路由信息 |
设备需要和大量的邻居建立对等体关系时,如果逐个配置对等体关系,则配置工作量大,新增或者删除对等体的维护、升级工作难度较大,且容易出错。
如果设备的邻居位于同一个网段内,则可以通过BGP动态对等体功能简化配置。在设备上简单地配置一个网段地址内的邻居作为动态对等体,就可以接受来自该网段内的所有邻居的连接请求,并与其建立对等体关系。只有当邻居发起连接请求时,本地才会维护与该邻居的对等体关系;否则,不维护对等体关系。BGP动态对等体功能既简化了配置,又大大降低了维护和升级成本。
表1-5 配置BGP动态对等体(IPv4单播)
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
||
进入BGP-VPN实例视图 |
|||
创建IPv4 BGP动态对等体,并指定对等体的AS号 |
|||
创建BGP IPv4单播地址族或BGP-VPN IPv4单播地址族,并进入相应地址族视图 |
缺省情况下,没有创建BGP IPv4单播地址族和BGP-VPN IPv4单播地址族 |
||
使能本地路由器与指定动态对等体交换IPv4单播路由信息的能力 |
对等体组是具有相同更新策略的对等体的集合。
在大型BGP网络中,对等体的数量会很多,其中,很多对等体需要配置相同的策略,通过配置对等体组并将对等体加入到对等体组,可以使对等体获得与所在对等体组相同的配置,而且当对等体组的配置改变时,组内成员的配置也相应改变,从而简化配置。
根据对等体所在的AS,对等体组可分为:
· IBGP对等体组:对等体组中的对等体与当前路由器位于同一AS。
· EBGP对等体组:对等体组中的对等体与当前路由器位于不同AS。
创建IBGP对等体组后,系统在将对等体加入IBGP对等体组时,会自动在BGP视图下创建该对等体,并设置其AS号为本地AS号。
表1-6 配置IBGP对等体组(IPv4)
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
bgp as-number |
- |
进入BGP-VPN实例视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
创建IBGP对等体组 |
group group-name [ internal ] |
缺省情况下,设备上不存在任何对等体组 |
|
向对等体组中添加指定的IPv4 BGP对等体 |
peer ip-address [ mask-length ] group group-name [ as-number as-number ] |
缺省情况下,对等体组中不存在任何对等体 as-number as-number参数可选可不选,如果选择则必须和本地的AS号一致 |
|
(可选)配置对等体组的描述信息 |
peer group-name description description-text |
缺省情况下,对等体组没有描述信息 |
|
创建并进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图 |
address-family ipv4 [ unicast ] |
缺省情况下,没有创建BGP IPv4单播地址族视图和BGP-VPN IPv4单播地址族视图 |
|
使能本地路由器与指定对等体组中的对等体交换IPv4单播路由信息的能力 |
peer group-name enable |
缺省情况下,本地路由器不能与对等体交换IPv4单播路由信息 |
根据对等体组中的对等体是否属于同一个外部AS,EBGP对等体组又可以分为纯EBGP对等体组和混合EBGP对等体组。如果对等体组中的对等体属于同一个外部AS,该对等体组就是纯EBGP对等体组;如果对等体组中的对等体属于不同外部AS,该对等体组就是混合EBGP对等体组。
用户有三种方式配置EBGP对等体组:
· 第一种方式是创建对等体组后,先指定对等体组的AS号,再将对等体加入到对等体组中,该方式下加入的对等体具有相同的AS号,均为对等体组的AS号。对等体加入对等体组之前可以配置AS号,且为对等体配置的AS号必须与对等体组的AS号相同。
· 第二种方式是创建对等体组后,先配置对等体的AS号,再将对等体加入对等体组中。该方式下,对等体组中对等体的AS号可以相同也可以不同。
· 第三种方式是创建对等体组后,将对等体加入对等体组的同时指定AS号。该方式下,对等体组中对等体的AS号可以相同也可以不同。
(1) 配置EBGP对等体组方式一
表1-7 配置EBGP对等体组方式一(IPv4)
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
bgp as-number |
- |
进入BGP-VPN实例视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
创建EBGP对等体组 |
group group-name external |
缺省情况下,设备上不存在任何对等体组 |
|
指定对等体组的AS号 |
peer group-name as-number as-number |
缺省情况下,没有指定对等体组的AS号 如果对等体组中已经存在对等体,则不能改变该对等体组的AS号,也不能使用undo命令删除已指定的AS号 |
|
向对等体组中添加指定的IPv4 BGP对等体 |
peer ip-address [ mask-length ] group group-name [ as-number as-number ] |
缺省情况下,对等体组中不存在任何对等体 as-number as-number参数可选可不选,如果选择则必须和peer group-name as-number as-number命令中配置的一致 |
|
(可选)配置对等体组的描述信息 |
peer group-name description description-text |
缺省情况下,对等体组没有描述信息 |
|
创建并进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图 |
address-family ipv4 [ unicast ] |
缺省情况下,没有创建BGP IPv4单播地址族视图和BGP-VPN IPv4单播地址族视图 |
|
使能本地路由器与指定对等体组中的对等体交换IPv4单播路由信息的能力 |
peer group-name enable |
缺省情况下,本地路由器不能与对等体交换IPv4单播路由信息 |
(2) 配置EBGP对等体组方式二
表1-8 配置EBGP对等体组方式二(IPv4)
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
bgp as-number |
- |
进入BGP-VPN实例视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
创建EBGP对等体组 |
group group-name external |
缺省情况下,设备上不存在任何对等体组 |
|
创建IPv4 BGP对等体,并指定对等体的AS号 |
peer ip-address [ mask-length ] as-number as-number |
缺省情况下,设备上不存在任何IPv4 BGP对等体 |
|
向对等体组中添加指定的IPv4 BGP对等体 |
peer ip-address [ mask-length ] group group-name [ as-number as-number ] |
缺省情况下,对等体组中不存在任何对等体 as-number as-number参数可选可不选,如果选择则必须和peer ip-address as-number as-number命令中配置的一致 |
|
(可选)配置对等体组的描述信息 |
peer group-name description description-text |
缺省情况下,对等体组没有描述信息 |
|
创建并进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图 |
address-family ipv4 [ unicast ] |
缺省情况下,没有创建BGP IPv4单播地址族视图和BGP-VPN IPv4单播地址族视图 |
|
使能本地路由器与指定对等体组中的对等体交换IPv4单播路由信息的能力 |
peer group-name enable |
缺省情况下,本地路由器不能与对等体交换IPv4单播路由信息 |
(3) 配置EBGP对等体组方式三
表1-9 配置EBGP对等体组方式三(IPv4)
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
bgp as-number |
- |
进入BGP-VPN实例视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
创建EBGP对等体组 |
group group-name external |
缺省情况下,设备上不存在任何对等体组 |
|
向对等体组中添加指定的对等体 |
peer ip-address [ mask-length ] group group-name as-number as-number |
缺省情况下,对等体组中不存在任何对等体 |
|
(可选)配置对等体组的描述信息 |
peer group-name description description-text |
缺省情况下,对等体组没有描述信息 |
|
创建并进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图 |
address-family ipv4 [ unicast ] |
缺省情况下,没有创建BGP IPv4单播地址族视图和BGP-VPN IPv4单播地址族视图 |
|
使能本地路由器与指定对等体组中的对等体交换IPv4单播路由信息的能力 |
peer group-name enable |
缺省情况下,本地路由器不能与对等体交换IPv4单播路由信息 |
BGP使用TCP作为其传输层协议,缺省情况下,BGP使用到达BGP对等体的最佳路由出接口的主IPv4地址与对等体/对等体组建立TCP连接。在如下场合可以通过本配置指定建立TCP连接使用的源地址或源接口(即采用指定源接口的IP地址与对等体/对等体组建立TCP连接):
· 当指定的对等体的IP地址不是本地路由器与对等体之间直连接口的IP地址时,需要在对等体上通过本配置将建立TCP连接使用的源接口指定为对等体IP地址所在的接口。例如,本端设备通过接口A和对端设备的接口B相连,在本端使用peer x.x.x.x as-number as-number命令将对端指定为自己的对等体,但是x.x.x.x不是接口B的IP地址时,需要在对端设备上使用peer connect-interface命令配置源接口,指定源接口为IP地址x.x.x.x所在的接口。
· 当建立BGP会话的路由器之间存在冗余链路时,如果路由器上的一个接口发生故障,链路状态变为down,建立TCP连接的源接口可能会随之发生变化,导致BGP需要重新建立TCP连接,造成网络震荡。为了避免该情况的发生,建议网络管理员将建立TCP连接所使用的源接口配置为Loopback接口,以提高TCP连接的可靠性和稳定性。
· 当两个设备之间建立多条BGP会话时,如果没有为每个会话明确指定建立TCP连接的源接口,可能会由于无法根据到达BGP对等体的最优路由确定TCP连接源接口从而导致无法建立TCP连接,在此情况下建议用户配置BGP对等体时明确配置BGP会话建立TCP连接的源接口。
表1-10 配置建立TCP连接使用的源地址(IPv4)
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
bgp as-number |
- |
进入BGP-VPN实例视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
指定与对等体/对等体组创建BGP会话时建立TCP连接使用的源IP地址 仅Release 1138P01及以上版本支持本命令 |
peer ipv4-address [ mask-length ] source-address source-ipv4-address peer group-name source-address source-ipv4-address |
缺省情况下,BGP使用到达BGP对等体的最佳路由出接口的主IPv4地址与对等体/对等体组建立TCP连接 |
|
配置与对等体/对等体组创建BGP会话时建立TCP连接使用的源接口 |
peer { group-name | ip-address [ mask-length ] } connect-interface interface-type interface-number |
要生成BGP路由,可以通过以下一种或几种途径:
· 配置BGP发布本地路由
· 配置BGP引入IGP路由协议的路由
通过本配置可以将本地路由表中指定网段的路由添加到BGP路由表中,以便通过BGP发布该网段路由。通过该种方式发布的路由的ORIGIN属性为IGP。网络管理员还可以通过使用路由策略更为灵活地控制所发布的路由。
本配置中指定的网段路由必须存在于本地的IP路由表中,且处于Active状态,否则无法将该网段路由添加到BGP路由表中。
表1-11 配置BGP发布本地路由(IPv4)
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
bgp as-number |
- |
进入BGP-VPN实例视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图 |
address-family ipv4 [ unicast ] |
- |
|
将本地路由表中指定网段的路由添加到BGP路由表中 |
network ip-address [ mask | mask-length ] [ route-policy route-policy-name ] |
缺省情况下,BGP不发布任何本地的网段路由 |
BGP可以向邻居AS发送本地AS内部网络的路由信息,但BGP不是自己去发现AS内部的路由信息,而是将IGP路由协议的路由信息引入到BGP路由表中,并发布给对等体。在引入IGP路由协议的路由时,可以针对不同的路由协议来对路由信息进行过滤。
缺省情况下,BGP引入IGP路由协议的路由时,不会引入该协议的缺省路由。用户可以通过配置,指定BGP引入IGP路由协议的路由时,允许将缺省路由引入到BGP路由表中。
通过引入方式发布的路由的ORIGIN属性为Incomplete。
只能引入路由表中状态为active的路由,是否为active状态可以通过display ip routing-table protocol命令来查看。display ip routing-table protocol来查命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“IP路由基础”。
表1-12 配置BGP引入IGP路由协议的路由(IPv4)
操作 |
命令 |
说明 |
||
进入系统视图 |
system-view |
- |
||
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
bgp as-number |
- |
|
进入BGP-VPN实例视图 |
bgp as-number |
|||
ip vpn-instance vpn-instance-name |
||||
进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图 |
address-family ipv4 [ unicast ] |
- |
||
将IGP路由协议的路由信息引入到BGP路由表中 |
import-route protocol [ { process-id | all-processes } [ med med-value | route-policy route-policy-name ] * ] |
缺省情况下,BGP不会引入IGP路由协议的路由信息 |
||
(可选)允许将缺省路由引入到BGP路由表中 |
default-route imported |
缺省情况下,BGP不允许将缺省路由引入到BGP路由表中 |
||
在中型或大型BGP网络中,在向对等体发布路由信息时,可以配置路由聚合,减少发布的路由数量,并减小路由表的规模。IPv4 BGP支持自动聚合和手动聚合两种聚合方式,同时配置时,手动聚合的优先级高于自动聚合的优先级。
BGP路由表中创建的聚合路由的出接口为Null0接口,聚合后可以减少向BGP对等体发布的路由数目。在使用中应注意不要使这条聚合路由成为本设备的优选路由,否则会导致报文转发失败。如果聚合路由的子网掩码长度和被聚合的某一条具体路由完全相同,且聚合路由优先级高于具体路由,则聚合路由会成为优选路由,这种情况下需要通过修改路由优先级等方式,来确保优选的路由为具体路由。
配置自动聚合功能后,BGP将对通过import-route命令引入的IGP子网路由进行聚合,不再发布子网路由,而是发布聚合的自然网段的路由。
表1-13 配置路由自动聚合(IPv4)
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
bgp as-number |
- |
进入BGP-VPN实例视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图 |
address-family ipv4 [ unicast ] |
- |
|
配置对引入的子网路由进行自动聚合 |
summary automatic |
缺省情况下,不对引入的子网路由进行自动聚合 |
自动聚合是按照自然网段进行聚合,而且只能对IGP引入的子网路由进行聚合。
通过配置手动聚合,用户可以同时对从IGP路由协议引入的子网路由和用network命令发布的路由进行聚合,而且还可以根据需要定义聚合路由的子网掩码长度。
表1-14 配置路由手动聚合(IPv4)
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
bgp as-number |
- |
进入BGP-VPN实例视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图 |
address-family ipv4 [ unicast ] |
- |
|
在BGP路由表中创建一条聚合路由 |
aggregate ip-address { mask | mask-length } [ as-set | attribute-policy route-policy-name | detail-suppressed | origin-policy route-policy-name | suppress-policy route-policy-name ] * |
缺省情况下,不会进行路由聚合 |
缺省情况下,BGP发布BGP路由表中的最优路由,不管该路由在IP路由表中是否为最优路由。通过本配置可以保证BGP发送出去的路由是IP路由表中的最优路由,以减少BGP发送的路由数量。
表1-15 配置向所有对等体发布IP路由表中的最优路由
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入BGP视图 |
bgp as-number |
- |
配置向所有对等体发布IP路由表中的最优路由 |
advertise-rib-active |
缺省情况下,BGP向所有对等体发布BGP路由表中的最优路由 |
执行本配置后,设备将向指定对等体/对等体组发布一条下一跳地址为本地地址的缺省路由。
表1-16 配置向对等体/对等体组发送缺省路由(IPv4)
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
bgp as-number |
- |
进入BGP-VPN实例视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图 |
address-family ipv4 [ unicast ] |
- |
|
向对等体/对等体组发送缺省路由 |
peer { group-name | ip-address [ mask-length ] } default-route-advertise [ route-policy route-policy-name ] |
缺省情况下,不向对等体/对等体组发送缺省路由 |
通过本配置可以避免攻击者向路由器发送大量的BGP路由,对路由器进行攻击。
当路由器从指定对等体/对等体组接收的路由数量超过指定的最大值时,可以选择以下处理方式:
· 路由器中断与该对等体/对等体组的BGP会话。
· 路由器保持与该对等体/对等体组的BGP会话,可以继续接收路由,仅打印告警信息。
· 路由器中断与该对等体/对等体组的BGP会话,经过指定的时间后自动与对等体/对等体组重建会话。
执行本配置任务时,还可以指定路由器产生提示信息的阈值,即路由器接收的路由数量与配置的最大值的百分比达到指定的阈值时,路由器将产生提示信息。
表1-17 限制从BGP对等体/对等体组接收的路由数量(IPv4)
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
bgp as-number |
- |
进入BGP-VPN实例视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图 |
address-family ipv4 [ unicast ] |
- |
|
配置允许从对等体/对等体组接收的路由的最大数量 |
peer { group-name | ip-address [ mask-length ] } route-limit prefix-number [ { alert-only | discard | reconnect reconnect-time } | percentage-value ] * |
缺省情况下,不限制从对等体/对等体组接收的路由数量 |
配置BGP路由信息的发布/接收策略前,根据采取的策略,需要配置下列过滤器:
· 访问控制列表,详细配置过程请参见“ACL和QoS配置指导”中的“ACL”。
· 地址前缀列表,详细配置过程请参见“三层技术-IP路由配置指导”中的“路由策略”。
· 路由策略,详细配置过程请参见“三层技术-IP路由配置指导”中的“路由策略”。
· AS路径过滤列表,详细配置过程请参见“三层技术-IP路由配置指导”中的“路由策略”。
可以通过以下几种方式配置BGP路由信息的发布策略:
· 使用访问控制列表或地址前缀列表对向所有对等体发布的路由信息进行过滤。
· 向指定对等体或对等体组发布路由时,使用路由策略、访问控制列表、AS路径过滤列表或地址前缀列表对发布给该对等体或对等体组的路由信息进行过滤。
用户可以根据需求选择过滤策略。如果同时配置了几种过滤策略,则按照如下顺序过滤发布的路由信息:
· filter-policy export
· peer filter-policy export
· peer as-path-acl export
· peer prefix-list export
· peer route-policy export
只有通过前面的过滤策略,才能继续执行后面的过滤策略;只有通过所有配置的过滤策略后,路由信息才能被发布。
表1-18 配置BGP路由信息的发布策略(IPv4)
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
bgp as-number |
- |
进入BGP-VPN实例视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图 |
address-family ipv4 [ unicast ] |
- |
|
对向所有对等体发布的路由信息进行过滤 |
filter-policy { acl-number | prefix-list prefix-list-name } export [ direct | isis process-id | ospf process-id | rip process-id | static ] |
至少选其一 缺省情况下,不对发布的路由信息进行过滤 |
|
为对等体/对等体组设置基于路由策略的路由发布过滤策略 |
peer { group-name | ip-address [ mask-length ] } route-policy route-policy-name export |
||
为对等体/对等体组设置基于ACL的路由发布过滤策略 |
peer { group-name | ip-address [ mask-length ] } filter-policy acl-number export |
||
为对等体/对等体组设置基于AS路径过滤列表的路由发布过滤策略 |
peer { group-name | ip-address [ mask-length ] } as-path-acl as-path-acl-number export |
||
为对等体/对等体组设置基于IPv4地址前缀列表的路由发布过滤策略 |
peer { group-name | ip-address [ mask-length ] } prefix-list prefix-list-name export |
可以通过以下几种方式配置BGP路由信息的接收策略:
· 使用访问控制列表或地址前缀列表对从所有对等体接收的路由信息进行过滤。
· 从指定对等体或对等体组接收路由时,使用路由策略、访问控制列表、AS路径过滤列表或地址前缀列表对从该对等体或对等体组接收的路由信息进行过滤。
用户可以根据需求选择过滤策略。如果同时配置了几种过滤策略,则按照如下顺序过滤接收的路由:
· filter-policy import
· peer filter-policy import
· peer as-path-acl import
· peer prefix-list import
· peer route-policy import
只有通过前面的过滤策略,才能继续执行后面的过滤策略;只有通过所有配置的过滤策略后,路由信息才能被接收。
表1-19 配置BGP路由信息的接收策略(IPv4)
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
bgp as-number |
- |
进入BGP-VPN实例视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图 |
address-family ipv4 [ unicast ] |
- |
|
对从所有对等体接收的路由信息进行过滤 |
filter-policy { acl-number | prefix-list prefix-list-name } import |
至少选其一 缺省情况下,不对接收的路由信息进行过滤 |
|
为对等体/对等体组设置基于路由策略的路由接收过滤策略 |
peer { group-name | ip-address [ mask-length ] } route-policy route-policy-name import |
||
为对等体/对等体组设置基于ACL的路由接收过滤策略 |
peer { group-name | ip-address [ mask-length ] } filter-policy acl-number import |
||
为对等体/对等体组设置基于AS路径过滤列表的路由接收过滤策略 |
peer { group-name | ip-address [ mask-length ] } as-path-acl as-path-acl-number import |
||
为对等体/对等体组设置基于IPv4地址前缀列表的路由接收过滤策略 |
peer { group-name | ip-address [ mask-length ] } prefix-list prefix-list-name import |
通过配置当前设备在重启后延迟发布路由更新消息,可以保证在重启时BGP先引入其他邻居的所有路由信息,然后再优选并向其他设备发布,以减少设备重启造成的流量丢失。
表1-20 配置延迟发布
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入BGP视图 |
bgp as-number |
- |
使能BGP延迟发布功能 |
bgp update-delay on-startup { seconds | prefix-list prefix-list-name } |
缺省情况下,设备重启后立刻向BGP邻居发布路由更新消息 |
通过配置BGP路由衰减,可以抑制不稳定的路由信息,不允许这类路由参与路由优选。
表1-21 配置BGP路由衰减(IPv4)
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
bgp as-number |
- |
进入BGP-VPN实例视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图 |
address-family ipv4 [ unicast ] |
- |
|
配置BGP路由衰减 |
dampening [ half-life-reachable half-life-unreachable reuse suppress ceiling | route-policy route-policy-name ] * |
缺省情况下,没有配置BGP路由衰减 |
BGP具有很多路由属性,通过配置这些属性可以控制BGP路径的选择。
BGP选择路由时首先丢弃下一跳不可达的路由,其次优选Preferred-value值最大的路由。通过本配置,可以修改路由的Preferred-value,以便控制BGP路径的选择。
缺省情况下,从对等体/对等体组学到的路由的首选值为0,网络管理员可以为从某个对等体/对等体组接收的路由配置首选值,从而提高从指定对等体/对等体学到的路由的优先级。
表1-22 为接收路由分配首选值(IPv4)
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
bgp as-number |
- |
进入BGP-VPN实例视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图 |
address-family ipv4 [ unicast ] |
- |
|
为从对等体/对等体组接收的路由分配首选值 |
peer { group-name | ip-address [ mask-length ] } preferred-value value |
缺省情况下,从对等体/对等体组接收的路由的首选值为0 |
路由器上可能同时运行多个动态路由协议,存在各个路由协议之间路由信息共享和选择的问题。系统为每一种路由协议设置一个优先级,在不同协议发现同一条路由时,优先级高的路由将被优先选择。
用户可以通过preference命令修改EBGP路由、IBGP路由以及本地产生的BGP路由的优先级,或应用路由策略为通过匹配规则过滤的特定路由配置优先级,没有通过过滤的路由使用缺省优先级。
缺省情况下,EBGP路由的优先级低于本地产生的BGP路由的优先级。设备上存在到达某一目的网络的EBGP路由和本地产生的BGP路由时,不会选择EBGP路由。通过执行network short-cut命令将一条EBGP路由配置成short-cut,可以使得指定EBGP路由的优先级与本地产生的BGP路由的优先级相同,从而提高该EBGP路由成为最佳路由的可能性。
表1-23 配置BGP的路由优先级(IPv4)
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
bgp as-number |
- |
进入BGP-VPN实例视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图 |
address-family ipv4 [ unicast ] |
- |
|
配置BGP路由的优先级 |
preference { external-preference internal-preference local-preference | route-policy route-policy-name } |
缺省情况下,EBGP路由的优先级为255,IBGP路由的优先级为255,本地产生的BGP路由的优先级为130 |
|
提高接收到的指定EBGP路由的路由优先级 |
network ip-address [ mask | mask-length ] short-cut |
缺省情况下,接收到的EBGP路由的路由优先级为255 |
本地优先级用来判断流量离开AS时的最佳路由。当BGP路由器通过不同的IBGP对等体得到目的地址相同但下一跳不同的多条路由时,将优先选择本地优先级较高的路由。
用户可以通过本配置改变BGP路由器向IBGP对等体发送的路由本地优先级的缺省值。
表1-24 配置本地优先级的缺省值(IPv4)
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
bgp as-number |
- |
进入BGP-VPN实例视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图 |
address-family ipv4 [ unicast ] |
- |
|
配置本地优先级的缺省值 |
default local-preference value |
缺省情况下,本地优先级的缺省值为100 |
MED用来判断流量进入AS时的最佳路由。当一个BGP路由器通过不同的EBGP对等体得到目的地址相同但下一跳不同的多条路由时,在其它条件相同的情况下,将优先选择MED值较小者作为最佳路由。
表1-25 配置MED缺省值(IPv4)
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
bgp as-number |
- |
进入BGP-VPN实例视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图 |
address-family ipv4 [ unicast ] |
- |
|
配置MED的缺省值 |
default med med-value |
缺省情况下,MED的缺省值为0 |
缺省情况下,BGP只比较来自同一个AS的路由的MED属性值。
通过配置compare-different-as-med命令,可以强制BGP比较来自不同AS的路由的MED属性值。
表1-26 配置允许比较来自不同AS路由的MED属性值(IPv4)
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
bgp as-number |
- |
进入BGP-VPN实例视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图 |
address-family ipv4 [ unicast ] |
- |
|
配置允许比较来自不同AS路由的MED属性值 |
compare-different-as-med |
缺省情况下,不允许比较来自不同AS路由的MED属性值 |
缺省情况下,BGP选择最优路由时是将新的路由和当前BGP路由表中的最优路由进行比较,只要新的路由比当前BGP路由表中的最优路由更优,新的路由将成为最优路由,路由学习的顺序有可能会影响最优路由的选择结果。
图1-10 MED排序优选示意图(以IPv4为例)
如上图所示,Router D分别从Router A和Router B学习到了到达网段10.0.0.0的路由,由于Router B的Router ID值较小,因此,从Router B学来的路由被选为最优路由:
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 10.0.0.0 2.2.2.2 50 0 300e
* i 3.3.3.3 50 0 200e
当Router D再从Router C学习到到达10.0.0.0网段的路由时,它只和当前路由表的最优路由进行比较。由于Router C和Router B位于不同的AS,选择路由时不会比较MED值,而Router C的Router ID值更小,相对更优,它将成为最优路由。
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 10.0.0.0 1.1.1.1 60 0 200e
* i 10.0.0.0 2.2.2.2 50 0 300e
* i 3.3.3.3 50 0 200e
但是如果将这条路由与从Router A学习到的路由进行比较,那么由于两条路由来自同一个AS,且从Router C学习到的路由MED值更大,则从Router C学习到的路由应该视为无效路由。
在Router D上配置bestroute compare-med命令后,Router D学习到新的路由时,会首先按照路由来自的AS分组,对来自同一AS的路由根据MED值的大小进行优选,选出MED值最小的路由,然后再对优选出来的、来自不同AS的路由进行优选,从而避免路由优选结果的不确定性。配置对来自同一AS的路由进行MED排序优选后,Router D上的BGP路由表如下所示,从Router B学习到的到达10.0.0.0 网段的路由将成为最优路由。
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 10.0.0.0 2.2.2.2 50 0 300e
* i 3.3.3.3 50 0 200e
* i 1.1.1.1 60 0 200e
表1-27 配置对来自同一AS的路由进行MED排序优选(IPv4)
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
bgp as-number |
- |
进入BGP-VPN实例视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图 |
address-family ipv4 [ unicast ] |
- |
|
配置对来自同一AS的路由进行MED排序优选 |
bestroute compare-med |
缺省情况下,不会对来自同一AS的路由进行MED排序优选 |
表1-28 配置允许比较来自同一联盟不同子自治系统邻居路由的MED属性值(IPv4)
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
bgp as-number |
- |
进入BGP-VPN实例视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图 |
address-family ipv4 [ unicast ] |
- |
|
配置允许比较来自同一联盟不同子自治系统邻居路由的MED属性值 |
bestroute med-confederation |
缺省情况下,不比较来自同一联盟不同子自治系统邻居路由的MED属性值 |
只有AS_PATH里不包含联盟体外的自治系统编号时,才会比较来自同一联盟不同子自治系统邻居路由的MED属性值。例如,联盟中包含的子自治系统为65006、65007和65009。如果存在三条路由,它们的AS-PATH值分别为65006 65009、65007 65009和65008 65009,MED值分别为2、3、1,由于第三条路由包含了联盟体外的自治系统编号,因此在选择最优路由时第一条路由将成为最优路由。
缺省情况下,路由器向IBGP对等体/对等体组发布路由时,不将自身地址作为下一跳,但有的时候为了保证IBGP邻居能够找到下一跳,可以配置将自身地址作为下一跳。以下图为例,Router A与Router B建立EBGP邻居关系,Router B与Router C建立IBGP邻居关系,Router B在向Router C发布从Router A学到的BGP路由时,如果Router C上没有到达1.1.1.1/24的路由,可以在Router B上配置peer next-hop-local命令将3.1.1.1/24作为下一跳,这样,Router C就能找到下一跳。
图1-11 配置BGP NEXT_HOP属性应用组网图一
在一些比较特殊的组网环境中(即两个BGP连接在同一网段的广播网),路由器向EBGP对等体/对等体组发布路由时不会将自身地址作为下一跳,以下图为例:Router A与Router B建立EBGP邻居关系,Router B与Router C建立IBGP邻居关系,两个BGP连接都位于同一个广播网1.1.1.0/24中,Router B向Router A发布EBGP路由时不会将自身地址1.1.1.2/24作为下一跳,但如果用户有需要,也可以通过配置peer next-hop-local命令实现将自身地址1.1.1.2/24作为下一跳。
图1-12 配置BGP NEXT_HOP属性应用组网图二
表1-29 配置BGP的NEXT_HOP属性(IPv4)
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
bgp as-number |
- |
进入BGP-VPN实例视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图 |
address-family ipv4 [ unicast ] |
- |
|
配置向对等体/对等体组发布路由时,将下一跳属性修改为自身的地址 |
peer { group-name | ip-address [ mask-length ] } next-hop-local |
缺省情况下,向EBGP对等体/对等体组发布路由时,将下一跳属性修改为自身的地址;向IBGP对等体/对等体组发布路由时,不修改下一跳属性 |
如果配置了BGP负载分担,则不论是否配置了peer next-hop-local命令,本地路由器向IBGP对等体/对等体组发布路由时都先将下一跳地址改变为自身地址。
通常情况下,BGP会检查对等体发来的路由的AS_PATH属性,如果其中已存在本地AS号,则BGP会忽略此路由,以免形成路由环路。
但是,在某些特殊的组网环境下,需要允许本地AS号在接收路由的AS_PATH属性中出现,否则无法正确发布路由。通过本配置,可以允许本地AS号在所接收的路由的AS_PATH属性中出现,并可同时配置允许出现的次数。
表1-30 配置允许本地AS号出现的次数(IPv4)
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
bgp as-number |
- |
进入BGP-VPN实例视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图 |
address-family ipv4 [ unicast ] |
- |
|
配置对于从对等体/对等体组接收的路由,允许本地AS号在接收路由的AS_PATH属性中出现,并配置允许出现的次数 |
peer { group-name | ip-address [ mask-length ] } allow-as-loop [ number ] |
缺省情况下,不允许本地AS号在接收路由的AS_PATH属性中出现 |
路由器在选择最优路由时会优选AS路径最短的路由,通过如下配置可以禁止路由器将AS_PATH当作选路算法中的一个因素。
表1-31 禁止路由器将AS_PATH当作选路算法中的一个因素(IPv4)
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
bgp as-number |
- |
进入BGP-VPN实例视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图 |
address-family ipv4 [ unicast ] |
- |
|
禁止路由器将AS_PATH当作选路算法中的一个因素 |
bestroute as-path-neglect |
缺省情况下,路由器将AS_PATH当作选路算法中的一个因素 |
进行系统移植时,例如,Router A原来位于AS 2,现在将它移植到AS 3里,网络管理员需要在Router A的所有EBGP对等体上修改Router A所在的AS号。通过在Router A上为EBGP对等体/对等体组配置一个虚拟的本地自治系统号2,可以将本地真实的AS号3隐藏起来。在EBGP对等体看来Router A始终位于AS 2,EBGP对等体上的现有配置不需要改变,从而保证在系统移植过程中不中断现有的BGP服务。
表1-32 为对等体/对等体组指定一个虚拟的自治系统号(IPv4)
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
bgp as-number |
- |
进入BGP-VPN实例视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
为对等体/对等体组指定一个虚拟的本地自治系统号 |
peer { group-name | ip-address [ mask-length ] } fake-as as-number |
缺省情况下,没有为对等体/对等体组配置虚拟的本地自治系统号 本命令只适用于EBGP对等体和对等体组 |
本配置仅用于特定的组网环境。通常情况下,建议不要使用本配置,否则可能会引起路由环路。
表1-33 配置AS号替换功能(IPv4)
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
bgp as-number |
- |
进入BGP-VPN实例视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
配置用本地AS号替换AS_PATH属性中指定对等体/对等体组的AS号 |
peer { group-name | ip-address [ mask-length ] } substitute-as |
缺省情况下,不会用本地AS号替换AS_PATH属性中指定对等体/对等体组的AS号 |
私有AS号是内部使用的AS号,范围为64512~65535。私有AS号主要用于测试网络,一般情况下不需要在公共网络中传播。
通过本配置,可以指定如果向EBGP对等体/对等体组发送的BGP更新消息中AS_PATH属性只包括私有AS号,则删除私有AS号后,将BGP更新消息发送给对等体/对等体组。
表1-34 配置发送BGP更新消息时AS_PATH属性中不携带私有AS号(IPv4)
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
bgp as-number |
- |
进入BGP-VPN实例视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图 |
address-family ipv4 [ unicast ] |
- |
|
配置向指定EBGP对等体/对等体组发送BGP更新消息时只携带公有AS号,不携带私有AS号 |
peer { group-name | ip-address [ mask-length ] } public-as-only |
缺省情况下,向EBGP对等体/对等体组发送BGP更新消息时,既可以携带公有AS号,又可以携带私有AS号 本命令只适用于EBGP对等体和对等体组 |
缺省情况下,BGP会检查对等体发来的路由的AS_PATH属性。如果第一个AS号不是BGP邻居的AS号,则丢弃此路由。
通过配置ignore-first-as命令,可以忽略对EBGP路由第一个AS号的检测。
表1-35 配置EBGP不检测路由的第一个AS号
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入BGP视图 |
bgp as-number |
- |
配置不检测EBGP路由的第一个AS号 |
ignore-first-as |
缺省情况下,系统收到EBGP路由后,会检测路由的第一个AS号 |
当对等体间建立了BGP会话后,它们定时向对端发送Keepalive消息,以防止路由器认为BGP会话已中断。Keepalive消息的发送时间间隔称为存活时间间隔。
若路由器在设定的会话保持时间(Holdtime)内未收到对端的Keepalive消息或Update消息,则认为此BGP会话已中断,从而断开此BGP会话。
用户可以全局配置当前路由器上所有BGP会话的存活时间间隔与保持时间,也可以配置与指定对等体/对等体组建立的BGP会话的存活时间间隔和保持时间。如果同时配置了两者,则为指定对等体/对等体组配置的值具有较高的优先级。
存活时间间隔、会话保持时间的协商及计算方法如下:
· 如果当前路由器上配置的保持时间与对端设备(对等体)上配置的保持时间不一致,则数值较小者作为协商后的保持时间。协商的保持时间为0时,不向对等体发送Keepalive消息,与对等体之间的会话永远不会超时断开。
· 存活时间间隔为0,协商的保持时间不为0时,以协商的保持时间的三分之一作为存活时间间隔;存活时间间隔不为0时,将协商的保持时间的三分之一与配置的存活时间间隔比较,取最小值作为存活时间间隔。
表1-36 配置BGP会话的存活时间间隔与保持时间(IPv4)
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
bgp as-number |
- |
进入BGP-VPN实例视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
配置所有BGP会话的存活时间间隔和保持时间 |
timer keepalive keepalive hold holdtime |
二者选其一 缺省情况下,BGP会话的存活时间间隔为60秒,保持时间为180秒 配置timer命令后,不会影响已建立的BGP会话,只对新建立的会话生效 配置peer timer命令后,如果新配置的值与之前配置的值不同,会影响已建立的BGP会话:BGP会话会直接断开,再使用新参数重新建立会话 |
|
配置本地路由器与指定对等体/对等体组之间BGP会话的存活时间间隔和保持时间 |
peer { group-name | ip-address [ mask-length ] } timer keepalive keepalive hold holdtime |
BGP路由发生变化时,BGP路由器会发送Update消息通知对等体。如果同一路由频繁变化,BGP路由器会频繁发送Update消息更新路由,导致路由震荡。通过本配置指定向对等体/对等体组发布同一路由的时间间隔,可以避免每次路由变化都发送Update消息,避免路由震荡。
表1-37 配置发布同一路由的时间间隔(IPv4)
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
bgp as-number |
- |
进入BGP-VPN实例视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
配置向指定对等体/对等体组发布同一路由的时间间隔 |
peer { group-name | ip-address [ mask-length ] } route-update-interval interval |
缺省情况下,向IBGP对等体发布同一路由的时间间隔为15秒,向EBGP对等体发布同一路由的时间间隔为30秒 |
当前路由器要与另外一个路由器建立EBGP会话,它们之间必须具有直连的物理链路,如果不满足这一要求,则必须使用peer ebgp-max-hop命令允许它们经过多跳建立EBGP会话。
直连EBGP邻居使用非直连接口(包括Looback接口)建立BGP会话时,需要配置路由协议使两个接口所在的网段路由可达,并且需要配置peer ebgp-max-hop命令允许路由器经过多跳建立EBGP会话。
表1-38 配置允许同非直连邻居建立EBGP会话(IPv4)
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
bgp as-number |
- |
进入BGP-VPN实例视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
配置允许本地路由器同非直连网络上的邻居建立EBGP会话,同时指定允许的最大跳数 |
peer { group-name | ip-address [ mask-length ] } ebgp-max-hop [ hop-count ] |
缺省情况下,不允许同非直连网络上的邻居建立EBGP会话 |
如果没有使能本功能,则连接直连EBGP对等体的链路down后,本地路由器不会立即断开与EBGP对等体的会话,而是等待会话保持时间(Holdtime)超时后,才断开该会话。没有使能本功能时,链路震荡不会影响EBGP会话的状态。
如果使能了本功能,则连接直连EBGP对等体的链路down后,本地路由器会立即断开与EBGP对等体的会话,并重新与该对等体建立EBGP会话,从而实现快速发现链路故障,快速重建会话。
表1-39 使能直连EBGP会话快速复位功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入BGP视图 |
bgp as-number |
- |
使能直连EBGP会话快速复位功能 |
ebgp-interface-sensitive |
缺省情况下,直连EBGP会话快速复位功能处于使能状态 |
如果对端设备支持4字节AS号,请不要使能4字节AS号抑制功能,否则会导致BGP会话无法建立。
设备支持4字节的AS号,即AS号取值占用4字节,取值范围为1~4294967295。缺省情况下,设备在与对端设备建立BGP会话时,通过Open消息通告对端设备本端支持4字节的AS号。如果对端设备不支持4字节AS号(只支持2字节AS号),则会导致会话协商失败。此时,在本端与对端设备之间使能4字节AS号抑制功能,可以使得本端设备通过Open消息向对端设备谎称自己不支持4字节的AS号,从而确保本端和对端设备之间可以成功建立BGP会话。
表1-40 使能4字节AS号抑制功能(IPv4)
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
bgp as-number |
- |
进入BGP-VPN实例视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
使能4字节AS号抑制功能 |
peer { group-name | ip-address [ mask-length ] } capability-advertise suppress-4-byte-as |
缺省情况下,设备没有使能4字节AS号抑制功能 |
通过为BGP对等体配置BGP的MD5认证,可以在以下两方面提高BGP的安全性:
· 为BGP建立TCP连接时进行MD5认证,只有两台路由器配置的密钥相同时,才能建立TCP连接,从而避免与非法的BGP路由器建立TCP连接。
· 传递BGP报文时,对封装BGP报文的TCP报文段进行MD5运算,从而保证BGP报文不会被篡改。
表1-41 配置BGP的MD5认证(IPv4)
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
bgp as-number |
- |
进入BGP-VPN实例视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
配置BGP的MD5认证 |
peer { group-name | ip-address [ mask-length ] } password { cipher | simple } password |
缺省情况下,不进行BGP的MD5认证 |
通过改变BGP选路规则实现负载分担时,设备根据balance命令配置的进行BGP负载分担的路由条数,选择指定数目的路由进行负载分担,以提高链路利用率。
表1-42 配置BGP负载分担(IPv4)
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
bgp as-number |
- |
进入BGP-VPN实例视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图 |
address-family ipv4 [ unicast ] |
- |
|
配置进行BGP负载分担的路由条数 |
缺省情况下,不会进行BGP负载分担 |
配置balance as-path-neglect命令后,允许不同AS_PATH属性的路由形成等价路由。请根据您的网络状况谨慎使用balance as-path-neglect命令,以避免形成路由环路。
由于网络升级维护等原因,需要暂时断开与某个对等体/对等体组的BGP会话时,可以通过本配置禁止与该对等体/对等体组建立会话。当网络恢复后,通过执行undo peer ignore命令恢复与对等体/对等体组的会话。这样,网络管理员无需删除并重新进行对等体/对等体组相关配置,减少了网络维护的工作量。
表1-43 禁止与对等体/对等体组建立会话(IPv4)
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
bgp as-number |
- |
进入BGP-VPN实例视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
禁止与对等体/对等体组建立会话 |
peer { group-name | ip-address [ mask-length ] } ignore |
缺省情况下,允许与BGP对等体/对等体组建立会话 |
· 执行本配置后,只要本地设备和指定的对等体通过了GTSM检查,就允许在二者之间建立EBGP会话,不管二者之间的跳数是否超过peer ebgp-max-hop命令指定的跳数范围。
· 使用BGP GTSM功能时,要求本设备和对等体设备上同时配置本特性,指定的hop-count值可以不同,只要能够满足合法性检查即可。
GTSM(Generalized TTL Security Mechanism,通用TTL安全保护机制)是一种简单易行的、对基于IP协议的上层业务进行保护的安全机制。GTSM通过检查接收到的IP报文头中的TTL值是否在一个预先定义好的范围内,来判断IP报文是否合法,避免攻击者向网络设备发送大量有效的IP报文时对网络设备造成的CPU利用(CPU-utilization)等类型的攻击。
配置BGP GTSM功能时,用户可以指定本地设备到达某个对等体的最大跳数为hop-count,则从该对等体接收到的BGP报文的合法TTL范围为255-“hop-count”+1到255。只有来自该对等体的报文TTL值在该合法范围内时,才将报文上送CPU处理;否则,直接丢弃报文。另外,配置BGP GTSM功能后,设备会将发送报文的初始TTL设置为255。
对于直连EBGP对等体,GTSM可以提供最佳的保护效果;对于非直连EBGP或IBGP对等体,由于中间设备可能对TTL值进行篡改,GTSM的保护效果受到中间设备安全性的限制。
表1-44 配置BGP GTSM功能(IPv4单播/IPv4组播)
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
||
进入BGP-VPN实例视图 |
|||
为对等体/对等体组使能BGP报文的GTSM安全检测功能 |
peer { group-name | ip-address [ mask-length ] } ttl-security hops hop-count |
缺省情况下,BGP报文的GTSM安全检测功能处于关闭状态 |
BGP的选路策略改变(即影响BGP路由选择的配置,如路由首选值等,发生变化)后,为了使新的策略生效,必须复位BGP会话,即删除并重新建立BGP会话,以便重新发布路由信息,并应用新的策略对路由信息进行过滤。复位BGP会话时,会造成短暂的BGP会话中断。
通过BGP软复位,可以实现在不中断BGP会话的情况下,对BGP路由表进行更新,并应用新的选路策略。
BGP软复位的方法有以下三种:
· 通过Route-refresh功能实现BGP软复位:如果BGP的选路策略发生了变化,则本地路由器会向BGP对等体发送Route-refresh消息,收到此消息的对等体将其路由信息重新发给本地路由器,本地路由器根据新的路由策略对接收到的路由信息进行过滤。采用这种方式时,要求当前路由器和对等体都支持Route-refresh功能。
· 通过将所有路由更新信息保存在本地的方式实现BGP软复位:将从对等体接收的所有原始路由更新信息保存在本地,当选路策略发生改变后,对保存在本地的所有路由使用新的路由策略重新进行过滤。采用这种方式时,不要求当前路由器和对等体都支持Route-refresh功能,但是保存路由更新需要占用较多的内存资源。
· 手工软复位BGP会话:执行refresh bgp命令手工触发本地路由器将本地路由信息发送给BGP对等体或向BGP对等体发送Route-refresh消息,收到Route-refresh消息的对等体将其路由信息重新发给本地路由器,以便本地路由器根据新的路由策略对接收到的路由信息进行过滤。采用这种方式时,要求当前路由器和对等体都支持Route-refresh功能。
表1-45 通过Route-refresh功能实现BGP软复位(IPv4)
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
bgp as-number |
- |
进入BGP-VPN实例视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
使能本地路由器与指定对等体/对等体组的BGP路由刷新功能 |
peer { group-name | ip-address [ mask-length ] } capability-advertise route-refresh |
二者选其一 缺省情况下,BGP路由刷新功能处于使能状态 |
|
使能本地路由器与指定BGP对等体/对等体组的BGP路由刷新和多协议扩展功能 |
undo peer { group-name | ip-address [ mask-length ] } capability-advertise conventional |
表1-46 通过将所有路由更新信息保存在本地实现BGP软复位(IPv4)
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
bgp as-number |
- |
进入BGP-VPN实例视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图 |
address-family ipv4 [ unicast ] |
- |
|
保存所有来自指定对等体/对等体组的原始路由更新信息 |
peer { group-name | ip-address [ mask-length ] } keep-all-routes |
缺省情况下,不保存来自对等体/对等体组的原始路由更新信息 本命令只对执行该命令后接收到的路由生效 |
表1-47 手工软复位BGP会话(IPv4)
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
bgp as-number |
- |
进入BGP-VPN实例视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
使能本地路由器与指定对等体/对等体组的BGP路由刷新功能 |
peer { group-name | ip-address [ mask-length ] } capability-advertise route-refresh |
二者选其一 缺省情况下,BGP路由刷新功能处于使能状态 |
|
使能本地路由器与指定BGP对等体/对等体组的BGP路由刷新和多协议扩展功能 |
undo peer { group-name | ip-address [ mask-length ] } capability-advertise conventional |
||
退回用户视图 |
return |
- |
|
手工对BGP会话进行软复位 |
refresh bgp { ip-address | all | external | group group-name | internal } { export | import } ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] |
仅Release 1138P01及以上版本支持refresh bgp vpnv4命令 |
当系统进入二级内存门限告警状态后,BGP会周期性地选择一个EBGP对等体,断开与该对等体之间的BGP会话,直到系统内存恢复为止。用户可以通过本配置来避免在二级内存门限告警状态下,断开与指定EBGP对等体/对等体组之间的BGP会话,以达到对特定EBGP对等体/对等体组进行保护的目的。
内存告警门限的详细介绍,请参见“基础配置指导”中的“设备管理”。
表1-48 配置系统进入二级内存门限告警状态后不断开EBGP对等体(IPv4)
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
bgp as-number |
- |
进入BGP-VPN实例视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
配置系统进入二级内存门限告警状态后,不断开与指定EBGP对等体/对等体组之间的会话 |
peer { group-name | ip-address [ mask-length ] } low-memory-exempt |
缺省情况下,系统在二级内存门限告警状态下,会周期性地选择EBGP对等体,并断开与该对等体之间的BGP会话 |
在大规模BGP网络中,对等体的数目众多,配置和维护极为不便,可以根据组网需要,配置对等体组、团体、路由反射器或联盟,以降低管理难度和提高路由发布效率。对等体组的配置方法,请参见“1.3.4 配置BGP对等体组”。
缺省情况下,本地路由器不向对等体/对等体组发布团体属性和扩展团体属性。如果接收到的路由中携带团体属性或扩展团体属性,则本地路由器删除该团体属性或扩展团体属性后,再将路由发布给对等体/对等体组。
通过本配置可以允许本地路由器在向对等体发布路由时携带团体属性或扩展团体属性,以便根据团体属性或扩展团体属性对路由进行过滤和控制。本配置和路由策略配合使用,可以灵活地控制路由中携带的团体属性和扩展团体属性值,例如在路由中添加团体属性或扩展团体属性、修改路由中原有的团体属性或扩展团体属性值。路由策略的详细介绍,请参见“三层技术-IP路由配置指导”中的“路由策略”。
表1-49 配置BGP团体(IPv4)
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
bgp as-number |
- |
进入BGP-VPN实例视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图 |
address-family ipv4 [ unicast ] |
- |
|
配置向对等体/对等体组发布团体属性或扩展团体属性 |
配置向对等体/对等体组发布团体属性 |
peer { group-name | ip-address [ mask-length ] } advertise-community |
缺省情况下,不向对等体/对等体组发布团体属性和扩展团体属性 |
配置向对等体/对等体组发布扩展团体属性 |
peer { group-name | ip-address [ mask-length ] } advertise-ext-community |
||
(可选)对发布给对等体/对等体组的路由指定路由策略 |
peer { group-name | ip-address [ mask-length ] } route-policy route-policy-name export |
缺省情况下,不指定对等体/对等体组的路由策略 |
如果同一个AS内有多个BGP路由器,为了减少在同一AS内建立的IBGP连接数,可以把几个BGP路由器划分为一个集群,将其中的一台路由器配置为路由反射器,其它路由器作为客户机,通过路由反射器在客户机之间反射路由。
为了增加网络的可靠性和防止单点故障,可以在一个集群中配置一个以上的路由反射器,这时,网络管理员必须给位于相同集群中的每个路由反射器配置相同的集群ID,以避免路由环路。
表1-50 配置BGP路由反射器(IPv4)
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
bgp as-number |
- |
进入BGP-VPN实例视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图 |
address-family ipv4 [ unicast ] |
- |
|
配置本机作为路由反射器,对等体/对等体组作为路由反射器的客户机 |
peer { group-name | ip-address [ mask-length ] } reflect-client |
缺省情况下,没有配置路由反射器及其客户机 |
|
允许路由反射器在客户机之间反射路由 |
reflect between-clients |
缺省情况下,允许路由反射器在客户机之间反射路由 |
|
(可选)配置路由反射器的集群ID |
reflector cluster-id { cluster-id | ip-address } |
缺省情况下,每个路由反射器都使用自己的Router ID作为集群ID |
路由反射器从某个对等体接收到路由后,在反射该路由之前为其添加ORIGINATOR_ID属性,标识该路由在本AS内的起源。ORIGINATOR_ID属性的值为该对等体的Router ID。BGP路由器接收到路由后,将路由中的ORIGINATOR_ID属性值与本地的Router ID进行比较,如果二者相同则丢弃该路由,从而避免路由环路。
表1-51 配置忽略BGP路由的ORIGINATOR_ID属性(IPv4)
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
bgp as-number |
- |
进入BGP-VPN实例视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
配置忽略BGP路由的ORIGINATOR_ID属性 |
peer { group-name | ip-address [ mask-length ] } ignore-originatorid |
缺省情况下,BGP路由器不会忽略BGP路由的ORIGINATOR_ID属性 请谨慎使用本命令。如果无法确保执行本命令后网络中不会产生环路,请不要执行本命令 执行本命令后,BGP路由的CLUSTER_LIST属性也会被忽略 |
联盟是处理AS内部的IBGP网络连接激增的另一种方法,它将一个自治系统划分为若干个子自治系统,每个子自治系统内部的IBGP对等体建立全连接关系,子自治系统之间建立EBGP连接关系。
网络管理员将一个自治系统划分为若干个子自治系统后,如果路由器位于联盟中的某个子自治系统中,需要在路由器上做如下配置:
(1) 启动BGP,并指定该路由器所属的子自治系统号,配置方法请参见“1.3.1 启动BGP”;
(2) 配置联盟ID。在不属于联盟的BGP发言者看来,属于同一个联盟的多个子自治系统是一个整体,联盟ID就是标识联盟这一整体的自治系统号;
(3) 如果该路由器与该联盟的其它子自治系统建立EBGP邻居关系,需要在该路由器上指定该联盟体中除了自己还包含哪些子自治系统。
一个联盟最多可包括32个子自治系统,配置属于联盟的子自治系统时使用的as-number仅在联盟内部有效。
表1-52 配置BGP联盟
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入BGP视图 |
bgp as-number |
- |
配置联盟的ID |
confederation id as-number |
缺省情况下,未配置联盟的ID |
指定一个联盟中包含的子自治系统 |
confederation peer-as as-number-list |
缺省情况下,未指定属于联盟的子自治系统 |
如果其他路由器的联盟实现机制不同于RFC 3065标准,可以通过如下配置与未采用RFC 3065配置的AS联盟兼容。
表1-53 配置联盟兼容性
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入BGP视图 |
bgp as-number |
- |
配置设备可以与未遵循RFC 3065实现联盟的路由器互通 |
confederation nonstandard |
缺省情况下,设备不能与未遵循RFC 3065实现联盟的路由器互通 |
BGP GR(Graceful Restart,平滑重启)是一种在主备倒换或BGP协议重启时保证转发业务不中断的机制。GR有两个角色:
· GR Restarter:发生主备倒换或协议重启,且具有GR能力的设备。
· GR Helper:和GR Restarter具有邻居关系,协助完成GR流程的设备。GR Helper也具有GR能力。
设备既可以作为GR Restarter,又可以作为GR Helper。设备的角色由该设备在BGP GR过程中的作用决定。
BGP GR的工作过程为:
(1) GR Restarter和GR Helper通过Open消息交互GR能力。只有双方都具有GR能力时,建立起的BGP会话才具备GR能力。GR Restarter还会通过Open消息,将本端通过graceful-restart timer restart命令配置的对端等待重建BGP会话时间通告给GR Helper。
(2) 建立具备GR能力的BGP会话后,GR Restarter进行主备倒换或BGP协议重启时,GR Restarter不会删除RIB(Routing Information Base,路由信息库)和FIB(Forwarding Information Base,转发信息库)表项,仍然按照原有的转发表项转发报文,并启动RIB路由老化定时器(定时器的值由graceful-restart timer purge-time命令配置)。GR Helper发现GR Restarter进行主备倒换或BGP协议重启后,GR Helper不会删除从该GR Restarter学习到的路由,而是将这些路由标记为失效路由,仍按照这些路由转发报文,从而确保在GR Restarter进行主备倒换或BGP协议重启的过程中,报文转发不会中断。
(3) GR Restarter主备倒换或BGP协议重启完成后,它会重新与GR Helper建立BGP会话。如果在GR Restarter通告的BGP会话重建时间内没有成功建立BGP会话,则GR Helper会删除标记为失效的路由。
(4) 如果在GR Restarter通告的BGP会话重建时间内成功建立BGP会话,则GR Restarter和GR Helper在建立的BGP会话上进行路由信息交互,以便GR Restarter恢复路由信息、GR Helper根据学习到的路由删除路由的失效标记。
(5) BGP会话建立后,在GR Restarter和GR Helper上都会启动End-Of-RIB(路由信息库结束)标记等待定时器(定时器的值通过graceful-restart timer wait-for-rib命令配置),该定时器用来控制路由信息收敛的速度。如果定时器超时时没有完成路由信息的交互,则GR Restarter不再接收新的路由,根据已经学习到的BGP路由信息更新RIB表项,删除老化的RIB表项;GR Helper则删除标记为失效的路由。
(6) 如果在RIB路由老化定时器超时时没有完成路由信息的交互,则GR Restarter会强制退出GR过程,根据已经学习到的BGP路由信息更新RIB表项,删除老化的RIB表项。
· End-Of-RIB标记用来标识路由更新发送的结束。
· 本端配置的等待End-Of-RIB标记的时间不会通告给对端,只用来控制本端路由信息交互的时间,即GR Restarter上配置的时间只用来控制GR Restarter从GR Helper接收路由更新的时间,GR Helper上配置的时间只用来控制GR Helper从GR Restarter接收路由更新的时间。
在作为GR Restarter和GR Helper的设备上均需要进行以下配置。
表1-54 配置BGP GR
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入BGP视图 |
bgp as-number |
- |
使能BGP协议的GR能力 |
graceful-restart |
缺省情况下,BGP协议的GR能力处于关闭状态 |
配置对端等待重建BGP会话的时间 |
graceful-restart timer restart timer |
缺省情况下,对端等待重建BGP会话的时间为150秒 对端等待重建BGP会话的时间应小于Open消息中的Holdtime时间 |
配置本端等待End-Of-RIB标记的时间 |
graceful-restart timer wait-for-rib timer |
缺省情况下,本端等待End-Of-RIB标记的时间为180秒 |
配置BGP GR过程中等待通知RIB老化失效表项的时间 |
缺省情况下,BGP GR过程中等待通知RIB老化失效表项的时间为480秒 |
BGP NSR(Nonstop Routing,不间断路由)是一种通过在BGP协议主备进程之间备份必要的协议状态和数据(如BGP邻居信息和路由信息),使得BGP协议的主进程中断时,备份进程能够无缝地接管主进程的工作,从而确保对等体感知不到BGP协议中断,保持BGP路由,并保证转发不会中断的技术。
导致BGP主进程中断的事件包括以下几种:
· BGP主进程重启
· BGP主进程所在的主控板发生故障
· BGP主进程所在的主控板进行ISSU(In-Service Software Upgrade,不中断业务升级)
BGP NSR与BGP GR具有如下区别,请根据实际情况选择合适的方式确保数据转发不中断:
· 对设备要求不同:BGP协议的主进程和备进程运行在不同的主控板上,因此要运行BGP NSR功能,设备上必须有两个或两个以上的主控板。要运行BGP GR功能,设备上可以只有一个主控板。
· 对BGP对等体的要求不同:使用BGP NSR功能时,BGP对等体不会感知本地设备发生了BGP进程的异常重启或主备倒换等故障,不需要BGP对等体协助恢复BGP路由信息。BGP GR要求BGP对等体具有GR能力,并且在BGP会话中断恢复时,BGP对等体能够作为GR helper协助本地设备恢复BGP路由信息。
如果在设备上同时配置了BGP NSR和BGP GR功能,则二者的关系如下:
· BGP NSR优先级高于BGP GR,即BGP主进程中断时通过BGP NSR确保转发不中断,设备不会作为GR Restarter启动GR过程。
· GR Helper协助GR Restarter恢复重启前状态时,如果GR Helper发生了主备进程倒换,则即便GR Helper上配置了BGP NSR,也无法保证GR过程成功。
进入BGP视图 |
||
缺省情况下,BGP NSR功能处于关闭状态 |
开启BGP模块的告警功能后,当BGP的邻居状态变化时BGP会产生RFC 4273中规定的告警信息,该信息包含邻居地址、最近一次出现错误的错误码和错误子码、当前的邻居状态。生成的告警信息将发送到设备的SNMP模块,通过设置SNMP中告警信息的发送参数,来决定告警信息输出的相关属性。
有关告警信息的详细介绍,请参见“网络管理和监控配置指导”中的“SNMP”。
表1-56 开启告警功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
开启BGP模块的告警功能 |
snmp-agent trap enable bgp |
缺省情况下,BGP模块的告警功能处于开启状态 |
使能BGP日志记录功能后,BGP邻居关系建立以及断开时会生成日志信息,通过display bgp peer ipv4 unicast log-info命令可以查看记录的日志信息。生成的日志信息还将被发送到设备的信息中心,通过设置信息中心的参数,决定日志信息的输出规则(即是否允许输出以及输出方向)。
有关信息中心参数的配置请参见“网络管理和监控配置指导”中的“信息中心”。
表1-57 使能BGP日志功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入BGP视图 |
bgp as-number |
- |
全局使能BGP日志功能 |
log-peer-change |
缺省情况下,全局BGP日志功能处于使能状态 |
仅Release 1138P01及以上版本支持此特性。
使能BGP对应地址族的路由抖动日志记录功能后,当该地址族的路由发生抖动并满足日志输出条件时会生成路由抖动日志信息。生成的日志信息还将被发送到设备的信息中心,通过设置信息中心的参数,决定日志信息的输出规则(即是否允许输出以及输出方向)。
有关信息中心参数的配置请参见“网络管理和监控配置指导”中的“信息中心”。
表1-58 使能BGP的路由抖动日志记录功能(IPv4单播/IPv4组播)
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图 |
进入BGP IPv4单播地址族视图 |
bgp as-number |
- |
address-family ipv4 [ unicast ] |
|||
进入BGP-VPN IPv4单播地址族视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
address-family ipv4 [ unicast ] |
|||
使能BGP的路由抖动日志记录功能 |
log-route-flap monitor-time monitor-count [ log-count-limit | route-policy route-policy-name ] * |
缺省情况下,BGP的路由抖动日志记录功能处于关闭状态 |
配置BGP GR功能后,请慎用BGP与BFD联动功能。因为当链路故障时,系统可能还没来得及启用GR处理流程,BFD已经检测到链路故障了,从而导致GR失败。如果设备上同时配置了BGP GR和BGP BFD,则在BGP GR期间请勿去使能BGP BFD,否则可能导致GR失败。
BGP协议通过存活时间(Keepalive)定时器和保持时间(Holdtime)定时器来维护邻居关系。但这些定时器都是秒级的,而且根据协议规定,设置的保持时间应该至少为存活时间间隔的三倍。这样使得BGP邻居关系的检测比较慢,对于报文收发速度快的接口会导致大量报文丢失。通过配置BGP与BFD联动,可以使用BFD来检测本地路由器和BGP对等体之间的链路。当本地路由器和BGP对等体之间的链路出现故障时,BFD可以快速检测到该故障,从而加快BGP协议的收敛速度。有关BFD的介绍和详细配置,请参见“可靠性配置指导”中的“BFD”。
配置通过BFD检测本地路由器和指定BGP对等体之间的链路之前,需要先在本地路由器和指定BGP对等体之间建立BGP会话。
表1-59 配置BGP与BFD联动(IPv4)
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图或BGP-VPN实例视图 |
进入BGP视图 |
bgp as-number |
- |
进入BGP-VPN实例视图 |
bgp as-number |
||
ip vpn-instance vpn-instance-name |
|||
配置通过BFD检测本地路由器和指定BGP对等体之间的链路 |
peer ip-address [ mask-length ] bfd [ multi-hop | single-hop ] |
缺省情况下,不使用BFD检测本地路由器和BGP对等体之间的链路 |
当BGP网络中的链路或某台路由器发生故障时,需要通过故障链路或故障路由器传输才能到达目的地的报文将会丢失或产生路由环路,数据流量将会被中断。直到BGP根据新的网络拓扑路由收敛后,被中断的流量才能恢复正常的传输。
为了尽可能缩短网络故障导致的流量中断时间,网络管理员可以开启BGP快速重路由功能。
图1-13 BGP快速重路由功能示意图
如图1-13所示,在Router B上开启快速重路由功能后,BGP将为主路由生成备份下一跳。IPv4组网中BGP通过Echo方式的BFD会话检测主路由的下一跳是否可达。当Router B通过BFD检测到主路由的下一跳不可达后,BGP会使用备份下一跳替换失效下一跳,通过备份下一跳来指导报文的转发,从而大大缩短了流量中断时间。在使用备份下一跳指导报文转发的同时,BGP会重新进行路由优选,优选完毕后,使用新的最优路由来指导报文转发。
开启BGP快速重路由功能的方法有如下两种:
· 在BGP地址族视图下执行pic命令开启当前地址族的BGP快速重路由功能。采用这种方法时,BGP会为当前地址族的所有BGP路由自动计算备份下一跳,即只要从不同BGP对等体学习到了到达同一目的网络的路由,且这些路由不等价,就会生成主备两条路由。
· 在BGP地址族视图下执行fast-reroute route-policy命令指定快速重路由引用的路由策略,并在引用的路由策略中,通过apply fast-reroute backup-nexthop命令指定备份下一跳的地址。采用这种方式时,只有为主路由计算出的备份下一跳地址与指定的地址相同时,才会为其生成备份下一跳;否则,不会为主路由生成备份下一跳。在引用的路由策略中,还可以配置if-match子句,用来决定哪些路由可以进行快速重路由保护,BGP只会为通过if-match子句过滤的路由生成备份下一跳。
引用路由策略方式的优先级高于通过pic命令开启BGP快速重路由方式。
表1-60 配置BGP快速重路由(IPv4)
配置echo报文的源IP地址 |
缺省情况下,没有配置echo报文的源IP地址 echo报文的源IP地址用户可以任意指定。建议配置echo报文的源IP地址不属于该设备任何一个接口所在网段 |
|||
本命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“路由策略” |
||||
本命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“路由策略” |
||||
进入BGP视图 |
||||
(可选)配置通过Echo方式的BFD会话检测主路由的下一跳是否可达 |
缺省情况下,通过ARP检测主路由的下一跳是否可达 |
|||
进入BGP IPv4单播地址族视图 |
||||
开启当前地址族的BGP快速重路由功能 |
缺省情况下,BGP快速重路由功能处于关闭状态 在某些组网情况下,执行pic命令为所有BGP路由生成备份下一跳后,可能会导致路由环路,请谨慎使用本命令 |
|||
在当前地址族视图下指定BGP快速重路由引用的路由策略 |
缺省情况下,BGP快速重路由未引用任何路由策略 引用的路由策略中,只有apply fast-reroute backup-nexthop命令生效,其他apply子句不会生效 |
|||
在完成上述配置后,在任意视图下执行display命令可以显示配置后BGP的运行情况,通过查看显示信息验证配置的效果。
表1-61 BGP配置显示(IPv4)
操作 |
命令 |
显示BGP NSR的运行状态 |
|
显示BGP对等体组的信息 仅Release 1138P01及以上版本支持display bgp group vpnv4命令 |
display bgp group ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] [ group-name group-name ] display bgp group vpnv4 [ vpn-instance vpn-instance-name ] [ group-name group-name ] |
显示BGP对等体或对等体组的状态和统计信息(独立运行模式) 仅Release 1138P01及以上版本支持display bgp peer vpnv4 log-info命令 |
|
显示BGP对等体或对等体组的状态和统计信息(IRF模式) 仅Release 1138P01及以上版本支持display bgp peer vpnv4 log-info命令 |
display bgp peer vpnv4 [ vpn-instance vpn-instance-name ] [ ip-address mask-length | { ip-address | group-name group-name } log-info | [ [ ip-address ] verbose ] [ standby chassis chassis-number slot slot-number ] ] |
显示BGP IPv4单播路由信息(独立运行模式) |
display bgp routing-table ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] [ network-address [ { mask | mask-length } [ longest-match ] ] ] [ standby slot slot-number ] |
显示BGP IPv4单播路由信息(IRF模式) |
display bgp routing-table ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] [ network-address [ { mask | mask-length } [ longest-match ] ] ] [ standby chassis chassis-number slot slot-number ] |
显示BGP IPv4单播路由的通告信息(独立运行模式) |
display bgp routing-table ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] network-address [ mask | mask-length ] advertise-info [ standby slot slot-number ] |
显示BGP IPv4单播路由的通告信息(IRF模式) |
display bgp routing-table ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] network-address [ mask | mask-length ] advertise-info [ standby chassis chassis-number slot slot-number ] |
显示向指定对等体发布或者从指定对等体收到的BGP IPv4单播路由信息(独立运行模式) |
display bgp routing-table ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] peer ip-address { advertised-routes | received-routes } [ network-address [ mask | mask-length ] | statistic ] [ standby slot slot-number ] |
显示向指定对等体发布或者从指定对等体收到的BGP IPv4单播路由信息(IRF模式) |
display bgp routing-table ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] peer ip-address { advertised-routes | received-routes } [ network-address [ mask | mask-length ] | statistic ] [ standby chassis chassis-number slot slot-number ] |
显示BGP IPv4单播路由的统计信息(独立运行模式) |
display bgp routing-table ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] statistic [ standby slot slot-number ] |
显示BGP IPv4单播路由的统计信息(IRF模式) |
display bgp routing-table ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] statistic [ standby chassis chassis-number slot slot-number ] |
显示匹配指定AS路径过滤列表的BGP IPv4单播路由信息(独立运行模式) |
display bgp routing-table ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] as-path-acl as-path-acl-number [ standby slot slot-number ] |
显示匹配指定AS路径过滤列表的BGP IPv4单播路由信息(IRF模式) |
display bgp routing-table ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] as-path-acl as-path-acl-number [ standby chassis chassis-number slot slot-number ] |
显示匹配指定BGP团体列表的BGP IPv4单播路由信息(独立运行模式) |
display bgp routing-table ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] community-list { { basic-community-list-number | comm-list-name } [ whole-match ] | adv-community-list-number } [ standby slot slot-number ] |
显示匹配指定BGP团体列表的BGP IPv4单播路由信息(IRF模式) |
display bgp routing-table ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] community-list { { basic-community-list-number | comm-list-name } [ whole-match ] | adv-community-list-number } [ standby chassis chassis-number slot slot-number ] |
显示衰减的BGP IPv4单播路由信息 |
display bgp routing-table dampened ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] |
显示BGP IPv4单播路由的路由衰减参数 |
display bgp dampening parameter ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] |
显示BGP IPv4单播路由的震荡统计信息 |
display bgp routing-table flap-info ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] [ network-address [ { mask | mask-length } [ longest-match ] ] | as-path-acl as-path-acl-number ] |
显示通过network命令发布的路由信息和通过network short-cut命令配置的Short-cut路由信息 |
display bgp network ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] |
显示BGP的路由属性信息 |
display bgp paths [ as-regular-expression ] |
显示BGP打包组的相关信息 仅Release 1138P01及以上版本支持display bgp update-group vpnv4命令 |
display bgp update-group ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] [ ip-address ] display bgp update-group vpnv4 [ vpn-instance vpn-instance-name ] [ ip-address ] |
当BGP路由策略或协议发生变化后,如果需要通过复位BGP会话使新的配置生效,请在用户视图下进行下列配置。
操作 |
命令 |
复位所有BGP会话 |
reset bgp all |
复位指定地址族的BGP会话 仅Release 1138P01及以上版本支持reset bgp vpnv4命令 |
reset bgp { as-number | ip-address | all | external | group group-name | internal } ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] |
在用户视图下,执行reset命令可以清除BGP相关统计信息。
表1-63 清除BGP信息(IPv4)
操作 |
命令 |
清除BGP IPv4单播路由的衰减信息,并解除对BGP IPv4单播路由的抑制 |
reset bgp dampening ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] [ network-address [ mask | mask-length ] ] |
清除BGP IPv4单播路由的振荡统计信息 |
reset bgp flap-info ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] [ network-address [ mask | mask-length ] | as-path-acl as-path-acl-number | peer peer-address ] |
如图1-14所示,所有交换机均运行BGP协议。要求Switch A和Switch B之间建立EBGP连接,Switch B和Switch C之间建立IBGP连接,使得Switch C能够访问Switch A直连的8.1.1.0/24网段。
图1-14 BGP基本配置组网图
(1) 配置各接口的IP地址(略)
(2) 配置IBGP连接
· 为了防止端口状态不稳定引起路由震荡,本举例使用Loopback接口来创建IBGP对等体。
· 使用Loopback接口创建IBGP对等体时,因为Loopback接口不是两对等体实际连接的接口,所以,必须使用peer connect-interface命令将Loopback接口配置为BGP连接的源接口。
· 在AS 65009内部,使用OSPF协议,保证Switch B到Switch C的Loopback接口路由可达, Switch C到Switch B的Loopback接口路由可达。
# 配置Switch B。
<SwitchB> system-view
[SwitchB] bgp 65009
[SwitchB-bgp] router-id 2.2.2.2
[SwitchB-bgp] peer 3.3.3.3 as-number 65009
[SwitchB-bgp] peer 3.3.3.3 connect-interface loopback 0
[SwitchB-bgp] address-family ipv4 unicast
[SwitchB-bgp-ipv4] peer 3.3.3.3 enable
[SwitchB-bgp-ipv4] quit
[SwitchB-bgp] quit
[SwitchB] ospf 1
[SwitchB-ospf-1] area 0
[SwitchB-ospf-1-area-0.0.0.0] network 2.2.2.2 0.0.0.0
[SwitchB-ospf-1-area-0.0.0.0] network 9.1.1.1 0.0.0.255
[SwitchB-ospf-1-area-0.0.0.0] quit
[SwitchB-ospf-1] quit
# 配置Switch C。
<SwitchC> system-view
[SwitchC] bgp 65009
[SwitchC-bgp] router-id 3.3.3.3
[SwitchC-bgp] peer 2.2.2.2 as-number 65009
[SwitchC-bgp] peer 2.2.2.2 connect-interface loopback 0
[SwitchC-bgp] address-family ipv4 unicast
[SwitchC-bgp-ipv4] peer 2.2.2.2 enable
[SwitchC-bgp-ipv4] quit
[SwitchC-bgp] quit
[SwitchC] ospf 1
[SwitchC-ospf-1] area 0
[SwitchC-ospf-1-area-0.0.0.0] network 3.3.3.3 0.0.0.0
[SwitchC-ospf-1-area-0.0.0.0] network 9.1.1.0 0.0.0.255
[SwitchC-ospf-1-area-0.0.0.0] quit
[SwitchC-ospf-1] quit
[SwitchC] display bgp peer ipv4
BGP local router ID : 3.3.3.3
Local AS number : 65009
Total number of peers : 1 Peers in established state : 1
Peer AS MsgRcvd MsgSent OutQ PrefRcv Up/Down State
2.2.2.2 65009 2 2 0 0 00:00:13 Established
以上显示信息表明Switch B和Switch C之间的IBGP连接已经建立。
(3) 配置EBGP连接
· EBGP邻居关系的两台路由器(通常属于两个不同运营商),处于不同的AS域,对端的Loopback接口一般路由不可达,所以一般使用直连地址建立BGP邻居。
· 因为要求Switch C能够访问Switch A直连的8.1.1.0/24网段,所以,建立EBGP连接后,需要将8.1.1.0/24网段路由通告到BGP路由表中。
# 配置Switch A。
<SwitchA> system-view
[SwitchA] bgp 65008
[SwitchA-bgp] router-id 1.1.1.1
[SwitchA-bgp] peer 3.1.1.1 as-number 65009
[SwitchA-bgp] address-family ipv4 unicast
[SwitchA-bgp-ipv4] peer 3.1.1.1 enable
[SwitchA-bgp-ipv4] network 8.1.1.0 24
[SwitchA-bgp-ipv4] quit
[SwitchA-bgp] quit
# 配置Switch B。
[SwitchB] bgp 65009
[SwitchB-bgp] peer 3.1.1.2 as-number 65008
[SwitchB-bgp] address-family ipv4 unicast
[SwitchB-bgp-ipv4] peer 3.1.1.2 enable
[SwitchB-bgp-ipv4] quit
[SwitchB-bgp] quit
# 查看Switch B的BGP对等体的连接状态。
[SwitchB] display bgp peer ipv4
BGP local router ID : 2.2.2.2
Local AS number : 65009
Total number of peers : 2 Peers in established state : 2
Peer AS MsgRcvd MsgSent OutQ PrefRcv Up/Down State
3.3.3.3 65009 4 4 0 0 00:02:49 Established
3.1.1.2 65008 2 2 0 0 00:00:05 Established
可以看出,Switch B与Switch C、Switch B与Switch A之间的BGP连接均已建立。
# 查看Switch A的BGP路由表。
[SwitchA] display bgp routing-table ipv4
Total number of routes: 1
BGP local router ID is 1.1.1.1
Status codes: * - valid, > - best, d - damped, h - history,
s - suppressed, S - Stale, i - internal, e - external
Origin: i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
* > 8.1.1.0/24 8.1.1.1 0 0 i
# 显示Switch B的BGP路由表。
[SwitchB] display bgp routing-table ipv4
Total number of routes: 1
BGP local router ID is 2.2.2.2
Status codes: * - valid, > - best, d - damped, h - history,
s - suppressed, S - Stale, i - internal, e - external
Origin: i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
* >e 8.1.1.0/24 3.1.1.2 0 0 65008i
# 显示Switch C的BGP路由表。
[SwitchC] display bgp routing-table ipv4
Total number of routes: 1
BGP local router ID is 3.3.3.3
Status codes: * - valid, > - best, d - damped, h - history,
s - suppressed, S - Stale, i - internal, e - external
Origin: i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
i 8.1.1.0/24 3.1.1.2 0 100 0 65008i
从路由表可以看出,Switch A没有学到AS 65009内部的任何路由,Switch C虽然学到了AS 65008中的8.1.1.0的路由,但因为下一跳3.1.1.2不可达,所以也不是有效路由。
(4) 配置BGP引入直连路由
在Switch B上配置BGP引入直连路由,以便Switch A能够获取到网段9.1.1.0/24的路由,Switch C能够获取到网段3.1.1.0/24的路由。
# 配置Switch B。
[SwitchB] bgp 65009
[SwitchB-bgp] address-family ipv4 unicast
[SwitchB-bgp-ipv4] import-route direct
[SwitchB-bgp-ipv4] quit
[SwitchB-bgp] quit
# 显示Switch A的BGP路由表。
[SwitchA] display bgp routing-table ipv4
Total number of routes: 4
BGP local router ID is 1.1.1.1
Status codes: * - valid, > - best, d - damped, h - history,
s - suppressed, S - Stale, i - internal, e - external
Origin: i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
* >e 2.2.2.2/32 3.1.1.1 0 0 65009?
e 3.1.1.0/24 3.1.1.1 0 0 65009?
* > 8.1.1.0/24 8.1.1.1 0 0 i
* >e 9.1.1.0/24 3.1.1.1 0 0 65009?
以上显示信息表明,在Switch B上引入直连路由后,Switch A新增了到达2.2.2.2/32和9.1.1.0/24的两条路由。
# 显示Switch C的BGP路由表。
[SwitchC] display bgp routing-table ipv4
Total number of routes: 4
BGP local router ID is 3.3.3.3
Status codes: * - valid, > - best, d - damped, h - history,
s - suppressed, S - Stale, i - internal, e - external
Origin: i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
i 2.2.2.2/32 2.2.2.2 0 100 0 ?
* >i 3.1.1.0/24 2.2.2.2 0 100 0 ?
* >i 8.1.1.0/24 3.1.1.2 0 100 0 65008i
* >i 9.1.1.0/24 2.2.2.2 0 100 0 ?
以上显示信息表明,到8.1.1.0的路由变为有效路由,下一跳为Switch A的地址。
# 使用Ping进行验证。
[SwitchC] ping 8.1.1.1
Ping 8.1.1.1 (8.1.1.1): 56 data bytes, press CTRL_C to break
56 bytes from 8.1.1.1: icmp_seq=0 ttl=254 time=10.000 ms
56 bytes from 8.1.1.1: icmp_seq=1 ttl=254 time=4.000 ms
56 bytes from 8.1.1.1: icmp_seq=2 ttl=254 time=4.000 ms
56 bytes from 8.1.1.1: icmp_seq=3 ttl=254 time=3.000 ms
56 bytes from 8.1.1.1: icmp_seq=4 ttl=254 time=3.000 ms
--- Ping statistics for 8.1.1.1 ---
5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss
round-trip min/avg/max/stddev = 3.000/4.800/10.000/2.638 ms
公司A的所有设备在AS 65008内,公司B的所有设备在AS 65009内,AS 65008和AS 65009通过设备Switch A和Switch B相连。
现要求实现Switch A能够访问AS 65009内的网段9.1.2.0/24,Switch C能够访问AS 65008内的网段8.1.1.0/24。
图1-15 BGP与IGP交互配置组网图
(1) 配置各接口的IP地址(略)
(2) 配置OSPF
在AS 65009内配置OSPF,使得Switch B能获取到到9.1.2.0/24网段的路由。
# 配置Switch B。
<SwitchB> system-view
[SwitchB] ospf 1
[SwitchB-ospf-1] area 0
[SwitchB-ospf-1-area-0.0.0.0] network 2.2.2.2 0.0.0.0
[SwitchB-ospf-1-area-0.0.0.0] network 9.1.1.0 0.0.0.255
[SwitchB-ospf-1-area-0.0.0.0] quit
[SwitchB-ospf-1] quit
# 配置Switch C。
<SwitchC> system-view
[SwitchC] ospf 1
[SwitchC-ospf-1] import-route direct
[SwitchC-ospf-1] area 0
[SwitchC-ospf-1-area-0.0.0.0] network 9.1.1.0 0.0.0.255
[SwitchC-ospf-1-area-0.0.0.0] quit
[SwitchC-ospf-1] quit
(3) 配置EBGP连接
配置EBGP连接,并在Switch A上将8.1.1.0/24网段通告到BGP路由表中,以便Switch B获取到网段8.1.1.0/24的路由。
# 配置Switch A。
<SwitchA> system-view
[SwitchA] bgp 65008
[SwitchA-bgp] router-id 1.1.1.1
[SwitchA-bgp] peer 3.1.1.1 as-number 65009
[SwitchA-bgp] address-family ipv4 unicast
[SwitchA-bgp-ipv4] peer 3.1.1.1 enable
[SwitchA-bgp-ipv4] network 8.1.1.0 24
[SwitchA-bgp-ipv4] quit
[SwitchA-bgp] quit
# 配置Switch B。
[SwitchB] bgp 65009
[SwitchB-bgp] router-id 2.2.2.2
[SwitchB-bgp] peer 3.1.1.2 as-number 65008
[SwitchB-bgp] address-family ipv4 unicast
[SwitchB-bgp-ipv4] peer 3.1.1.2 enable
(4) 配置BGP与IGP交互
· 在Switch B上配置BGP引入OSPF路由,以便Switch A能够获取到到9.1.2.0/24网段的路由。
· 在Switch B上配置OSPF引入BGP路由,以便Switch C能够获取到到8.1.1.0/24网段的路由。
# 在Switch B上配置BGP和OSPF互相引入路由。
[SwitchB-bgp-ipv4] import-route ospf 1
[SwitchB-bgp-ipv4] quit
[SwitchB-bgp] quit
[SwitchB] ospf 1
[SwitchB-ospf-1] import-route bgp
[SwitchB-ospf-1] quit
# 查看Switch A的BGP路由表。
[SwitchA] display bgp routing-table ipv4
Total number of routes: 3
BGP local router ID is 1.1.1.1
Status codes: * - valid, > - best, d - damped, h - history,
s - suppressed, S - Stale, i - internal, e - external
Origin: i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
* >e 3.3.3.3/32 3.1.1.1 1 0 65009?
* > 8.1.1.0/24 8.1.1.1 0 0 i
* >e 9.1.2.0/24 3.1.1.1 1 0 65009?
# 查看SwitchC的OSPF路由表。
[SwitchC] display ospf routing
OSPF Process 1 with Router ID 3.3.3.3
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
9.1.1.0/24 1 Transit 9.1.1.2 3.3.3.3 0.0.0.0
2.2.2.2/32 1 Stub 9.1.1.1 2.2.2.2 0.0.0.0
Routing for ASEs
Destination Cost Type Tag NextHop AdvRouter
8.1.1.0/24 1 Type2 1 9.1.1.1 2.2.2.2
Total Nets: 3
Intra Area: 2 Inter Area: 0 ASE: 1 NSSA: 0
# 使用Ping进行验证。
[SwitchA] ping -a 8.1.1.1 9.1.2.1
Ping 9.1.2.1 (9.1.2.1) from 8.1.1.1: 56 data bytes, press CTRL_C to break
56 bytes from 9.1.2.1: icmp_seq=0 ttl=254 time=10.000 ms
56 bytes from 9.1.2.1: icmp_seq=1 ttl=254 time=12.000 ms
56 bytes from 9.1.2.1: icmp_seq=2 ttl=254 time=2.000 ms
56 bytes from 9.1.2.1: icmp_seq=3 ttl=254 time=7.000 ms
56 bytes from 9.1.2.1: icmp_seq=4 ttl=254 time=9.000 ms
--- Ping statistics for 9.1.2.1 ---
5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss
round-trip min/avg/max/stddev = 2.000/8.000/12.000/3.406 ms
[SwitchC] ping -a 9.1.2.1 8.1.1.1
Ping 8.1.1.1 (8.1.1.1) from 9.1.2.1: 56 data bytes, press CTRL_C to break
56 bytes from 8.1.1.1: icmp_seq=0 ttl=254 time=9.000 ms
56 bytes from 8.1.1.1: icmp_seq=1 ttl=254 time=4.000 ms
56 bytes from 8.1.1.1: icmp_seq=2 ttl=254 time=3.000 ms
56 bytes from 8.1.1.1: icmp_seq=3 ttl=254 time=3.000 ms
56 bytes from 8.1.1.1: icmp_seq=4 ttl=254 time=3.000 ms
--- Ping statistics for 8.1.1.1 ---
5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss
round-trip min/avg/max/stddev = 3.000/4.400/9.000/2.332 ms
通过在边界设备Switch C和外部网络设备Switch D之间建立EBGP连接,实现公司内部网络与外部网络的互通。
在公司内部,核心层设备Switch B与汇聚层设备Switch A之间配置静态路由,Switch B与Switch C之间配置OSPF,并在OSPF路由中引入静态路由,以实现公司内部网络的互通。
公司内部网络包括三个网段:192.168.64.0/24、192.168.74.0/24和192.168.99.0/24。在Switch C上配置路由聚合,将这三个网段的路由聚合为一条路由,以减少通过BGP发布的路由数量。
图1-16 BGP路由聚合组网图
(1) 配置各接口的IP地址(略)
(2) 在Switch A和Switch B之间配置静态路由
# 在Switch A上配置缺省路由,下一跳为Switch B。
<SwitchA> system-view
[SwitchA] ip route-static 0.0.0.0 0 192.168.212.1
# 在Switch B上配置静态路由,到达目的网络192.168.64.0/24、192.168.74.0/24和192.168.99.0/24的路由下一跳均为Switch A。
<SwitchB> system-view
[SwitchB] ip route-static 192.168.64.0 24 192.168.212.161
[SwitchB] ip route-static 192.168.74.0 24 192.168.212.161
[SwitchB] ip route-static 192.168.99.0 24 192.168.212.161
(3) 在Switch B和Switch C之间配置OSPF,并引入静态路由
# 在Switch B上配置OSPF发布本地网段路由,并引入静态路由。
[SwitchB] ospf
[SwitchB-ospf-1] area 0
[SwitchB-ospf-1-area-0.0.0.0] network 172.17.100.0 0.0.0.255
[SwitchB-ospf-1-area-0.0.0.0] quit
[SwitchB-ospf-1] import-route static
[SwitchB-ospf-1] quit
# 在Switch C上配置OSPF发布本地网段路由。
[SwitchC] ospf
[SwitchC-ospf-1] area 0
[SwitchC-ospf-1-area-0.0.0.0] network 172.17.100.0 0.0.0.255
[SwitchC-ospf-1-area-0.0.0.0] network 10.220.2.0 0.0.0.255
[SwitchC-ospf-1-area-0.0.0.0] quit
[SwitchC-ospf-1] quit
# 在Switch C上查看路由表信息,可以看到Switch C通过OSPF学习到了到达192.168.64.0/24、192.168.74.0/24和192.168.99.0/24网段的路由。
[SwitchC] display ip routing-table protocol ospf
Summary Count : 5
OSPF Routing table Status : <Active>
Summary Count : 3
Destination/Mask Proto Pre Cost NextHop Interface
192.168.64.0/24 OSPF 150 1 172.17.100.1 Vlan100
192.168.74.0/24 OSPF 150 1 172.17.100.1 Vlan100
192.168.99.0/24 OSPF 150 1 172.17.100.1 Vlan100
OSPF Routing table Status : <Inactive>
Summary Count : 2
Destination/Mask Proto Pre Cost NextHop Interface
10.220.2.0/24 OSPF 10 1 10.220.2.16 Vlan200
172.17.100.0/24 OSPF 10 1 172.17.100.2 Vlan100
(4) 在Switch C和Switch D之间配置BGP,并引入OSPF路由
# 在Switch C上配置Switch D为其EBGP对等体,并引入OSPF路由。
[SwitchC] bgp 65106
[SwitchC-bgp] router-id 3.3.3.3
[SwitchC-bgp] peer 10.220.2.217 as-number 64631
[SwitchC-bgp] address-family ipv4 unicast
[SwitchC-bgp-ipv4] peer 10.220.2.217 enable
[SwitchC-bgp-ipv4] import-route ospf
# 在Switch D上配置Switch C为其EBGP对等体。
[SwitchD] bgp 64631
[SwitchD-bgp] router-id 4.4.4.4
[SwitchD-bgp] peer 10.220.2.16 as-number 65106
[SwitchD-bgp] address-family ipv4 unicast
[SwitchD-bgp-ipv4] peer 10.220.2.16 enable
[SwitchD-bgp-ipv4] quit
[SwitchD-bgp] quit
# 在Switch D上查看路由表信息,可以看到Switch D通过BGP学习到了到达192.168.64.0/24、192.168.74.0/24和192.168.99.0/24三个网段的路由。
[SwitchD] display ip routing-table protocol bgp
Summary Count : 3
BGP Routing table Status : <Active>
Summary Count : 3
Destination/Mask Proto Pre Cost NextHop Interface
192.168.64.0/24 BGP 255 1 10.220.2.16 Vlan200
192.168.74.0/24 BGP 255 1 10.220.2.16 Vlan200
192.168.99.0/24 BGP 255 1 10.220.2.16 Vlan200
BGP Routing table Status : <Inactive>
Summary Count : 0
完成上述配置后,在Switch D上可以ping通192.168.64.0/24、192.168.74.0/24和192.168.99.0/24网段内的主机。
(5) 在Switch C上配置路由聚合
# 在Switch C上将路由192.168.64.0/24、192.168.74.0/24和192.168.99.0/24聚合为192.168.64.0/18,并抑制发布具体路由。
[SwitchC-bgp-ipv4] aggregate 192.168.64.0 18 detail-suppressed
[SwitchC-bgp-ipv4] quit
[SwitchC-bgp] quit
# 在Switch C上查看路由表信息,可以看到Switch C上产生了一条聚合路由192.168.64.0/18,该聚合路由的出接口为Null0。
[SwitchC] display ip routing-table | include 192.168
192.168.64.0/18 BGP 130 0 127.0.0.1 NULL0
192.168.64.0/24 OSPF 150 1 172.17.100.1 Vlan100
192.168.74.0/24 OSPF 150 1 172.17.100.1 Vlan100
192.168.99.0/24 OSPF 150 1 172.17.100.1 Vlan100
# 在Switch D上查看路由表信息,可以看到Switch D上到达公司内部三个网络的路由聚合为一条路由192.168.64.0/18。
[SwitchD] display ip routing-table protocol bgp
Summary Count : 1
BGP Routing table Status : <Active>
Summary Count : 1
Destination/Mask Proto Pre Cost NextHop Interface
192.168.64.0/18 BGP 255 0 10.220.2.16 Vlan200
BGP Routing table Status : <Inactive>
Summary Count : 0
完成上述配置后,成功实现了路由聚合。并且,在Switch D上可以ping通192.168.64.0/24、192.168.74.0/24和192.168.99.0/24网段内的主机。
所有交换机都配置BGP,Switch A在AS 65008中,Switch B和Switch C在AS 65009中。
Switch A与Switch B、Switch C之间运行EBGP,Switch B和Switch C之间运行IBGP。
在Switch A上配置负载分担的路由条数为2,以提高链路利用率。
图1-17 BGP负载分担配置组网图
(1) 配置各接口的IP地址(略)
(2) 配置BGP连接
· 在Switch A上与Switch B、Switch C分别建立EBGP连接,并将8.1.1.0/24网段的路由通告给Switch B和Switch C,以便Switch B和Switch C能够访问Switch A的内部网络。
· 在Switch B上与Switch A建立EBGP连接,与Switch C建立IBGP连接,并将9.1.1.0/24网段的路由通告给Switch A,以便Switch A能够通过Switch B访问内部网络。同时,在Switch B上配置一条到Switch C Loopback0接口的静态路由(也可以用OSPF等协议来实现),以便使用Loopback接口建立IBGP连接。
· 在Switch C上与Switch A建立EBGP连接,与Switch B建立IBGP连接,并将9.1.1.0/24网段的路由通告给Switch A,以便Switch A能够通过Switch C访问内部网络。同时,在Switch C上配置一条到Switch B Loopback0接口的静态路由(也可以用OSPF等协议来实现),以便使用Loopback接口建立IBGP连接。
# 配置Switch A。
<SwitchA> system-view
[SwitchA] bgp 65008
[SwitchA-bgp] router-id 1.1.1.1
[SwitchA-bgp] peer 3.1.1.1 as-number 65009
[SwitchA-bgp] peer 3.1.2.1 as-number 65009
[SwitchA-bgp] address-family ipv4 unicast
[SwitchA-bgp-ipv4] peer 3.1.1.1 enable
[SwitchA-bgp-ipv4] peer 3.1.2.1 enable
[SwitchA-bgp-ipv4] network 8.1.1.1 24
[SwitchA-bgp-ipv4] quit
[SwitchA-bgp] quit
# 配置Switch B。
<SwitchB> system-view
[SwitchB] bgp 65009
[SwitchB-bgp] router-id 2.2.2.2
[SwitchB-bgp] peer 3.1.1.2 as-number 65008
[SwitchB-bgp] peer 3.3.3.3 as-number 65009
[SwitchB-bgp] peer 3.3.3.3 connect-interface loopback 0
[SwitchB-bgp] address-family ipv4 unicast
[SwitchB-bgp-ipv4] peer 3.1.1.2 enable
[SwitchB-bgp-ipv4] peer 3.3.3.3 enable
[SwitchB-bgp-ipv4] network 9.1.1.0 24
[SwitchB-bgp-ipv4] quit
[SwitchB-bgp] quit
[SwitchB] ip route-static 3.3.3.3 32 9.1.1.2
# 配置Switch C。
<SwitchC> system-view
[SwitchC] bgp 65009
[SwitchC-bgp] router-id 3.3.3.3
[SwitchC-bgp] peer 3.1.2.2 as-number 65008
[SwitchC-bgp] peer 2.2.2.2 as-number 65009
[SwitchC-bgp] peer 2.2.2.2 connect-interface loopback 0
[SwitchC-bgp] address-family ipv4 unicast
[SwitchC-bgp-ipv4] peer 3.1.2.2 enable
[SwitchC-bgp-ipv4] peer 2.2.2.2 enable
[SwitchC-bgp-ipv4] network 9.1.1.0 24
[SwitchC-bgp-ipv4] quit
[SwitchC-bgp] quit
[SwitchC] ip route-static 2.2.2.2 32 9.1.1.1
# 查看Switch A的路由表。
[SwitchA] display bgp routing-table ipv4
Total number of routes: 3
BGP local router ID is 1.1.1.1
Status codes: * - valid, > - best, d - damped, h - history,
s - suppressed, S - Stale, i - internal, e - external
Origin: i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
* > 8.1.1.0/24 8.1.1.1 0 0 i
* >e 9.1.1.0/24 3.1.1.1 0 0 65009i
* e 3.1.2.1 0 0 65009i
· 从BGP路由表中可以看出,到目的地址9.1.1.0/24有两条有效路由,其中下一跳为3.1.1.1的路由前有标志“>”,表示它是当前有效的最优路由(因为Switch B的路由器ID要小一些);而下一跳为3.1.2.1的路由前有标志“*”,表示它是当前有效的路由,但不是最优的。
· 使用display ip routing-table命令查看IP路由表项,可以看出到达目的地址9.1.1.0/24的路由只有一条,下一跳地址为3.1.1.1,出接口为Vlan200。
(3) 配置负载分担
因为Switch A有两条路径到达AS 65009的内部网络,所以,可以在Switch A配置负载分担的路由条数为2,以提高链路利用率。
# 配置Switch A。
[SwitchA] bgp 65008
[SwitchA-bgp] address-family ipv4 unicast
[SwitchA-bgp-ipv4] balance 2
[SwitchA-bgp-ipv4] quit
[SwitchA-bgp] quit
# 查看Switch A的BGP路由表。
[SwitchA] display bgp routing-table ipv4
Total number of routes: 3
BGP local router ID is 1.1.1.1
Status codes: * - valid, > - best, d - damped, h - history,
s - suppressed, S - Stale, i - internal, e - external
Origin: i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
* > 8.1.1.0/24 8.1.1.1 0 0 i
* >e 9.1.1.0/24 3.1.1.1 0 0 65009i
* >e 3.1.2.1 0 0 65009i
· 从BGP路由表中可以看到,BGP路由9.1.1.0/24存在两个下一跳,分别是3.1.1.1和3.1.2.1,两条路由前都有标志“>”,表明它们都是当前有效的最优路由。
· 使用display ip routing-table命令查看IP路由表项,可以看出到达目的地址9.1.1.0/24的路由有两条,其中一条的下一跳地址为3.1.1.1,出接口为Vlan200;另一条的下一跳地址为3.1.2.1,出接口为Vlan300。
Switch B分别与Switch A、Switch C之间建立EBGP连接。
通过在Switch A上配置NO_EXPORT团体属性,使得AS 10发布到AS 20中的路由,不会再被AS 20发布到其他AS。
图1-18 BGP团体组网图
(1) 配置各接口的IP地址(略)
(2) 配置EBGP
# 配置Switch A。
<SwitchA> system-view
[SwitchA] bgp 10
[SwitchA-bgp] router-id 1.1.1.1
[SwitchA-bgp] peer 200.1.2.2 as-number 20
[SwitchA-bgp] address-family ipv4 unicast
[SwitchA-bgp-ipv4] peer 200.1.2.2 enable
[SwitchA-bgp-ipv4] network 9.1.1.0 255.255.255.0
[SwitchA-bgp] quit
# 配置Switch B。
<SwitchB> system-view
[SwitchB] bgp 20
[SwitchB-bgp] router-id 2.2.2.2
[SwitchB-bgp] peer 200.1.2.1 as-number 10
[SwitchB-bgp] peer 200.1.3.2 as-number 30
[SwitchB-bgp] address-family ipv4 unicast
[SwitchB-bgp-ipv4] peer 200.1.2.1 enable
[SwitchB-bgp-ipv4] peer 200.1.3.2 enable
[SwitchB-bgp-ipv4] quit
[SwitchB-bgp] quit
# 配置Switch C。
<SwitchC> system-view
[SwitchC] bgp 30
[SwitchC-bgp] router-id 3.3.3.3
[SwitchC-bgp] peer 200.1.3.1 as-number 20
[SwitchC-bgp] address-family ipv4 unicast
[SwitchC-bgp-ipv4] peer 200.1.3.1 enable
[SwitchC-bgp-ipv4] quit
[SwitchC-bgp] quit
# 查看Switch B的路由表。
[SwitchB] display bgp routing-table ipv4 9.1.1.0
BGP local router ID: 2.2.2.2
Local AS number: 20
Paths: 1 available, 1 best
BGP routing table information of 9.1.1.0/24:
From : 200.1.2.1 (1.1.1.1)
Relay nexthop : 200.1.2.1
Original nexthop: 200.1.2.1
OutLabel : NULL
AS-path : 10
Origin : igp
Attribute value : pref-val 0
State : valid, external, best,
# 查看Switch B的路由发送信息。
[SwitchB] display bgp routing-table ipv4 9.1.1.0 advertise-info
BGP local router ID: 2.2.2.2
Local AS number: 20
Paths: 1 best
BGP routing table information of 9.1.1.0/24:
Advertised to peers (1 in total):
200.1.3.2
可以看出,Switch B能够把到达目的地址9.1.1.0/24的路由通过BGP发布出去。
# 查看Switch C的BGP路由表。
[SwitchC] display bgp routing-table ipv4
Total number of routes: 1
BGP local router ID is 3.3.3.3
Status codes: * - valid, > - best, d - dampened, h - history,
s - suppressed, S - stale, i - internal, e - external
Origin: i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
* >e 9.1.1.0/24 200.1.3.1 0 20 10i
可以看出,Switch C从Switch B那里学到了目的地址为9.1.1.0/24的路由。
(3) 配置BGP团体属性
# 配置路由策略。
[SwitchA] route-policy comm_policy permit node 0
[SwitchA-route-policy-comm_policy-0] apply community no-export
[SwitchA-route-policy-comm_policy-0] quit
# 应用路由策略。
[SwitchA] bgp 10
[SwitchA-bgp] address-family ipv4 unicast
[SwitchA-bgp-ipv4] peer 200.1.2.2 route-policy comm_policy export
[SwitchA-bgp-ipv4] peer 200.1.2.2 advertise-community
# 查看Switch B的路由表。
[SwitchB] display bgp routing-table ipv4 9.1.1.0
BGP local router ID: 2.2.2.2
Local AS number: 20
Paths: 1 available, 1 best
BGP routing table information of 9.1.1.0/24:
From : 200.1.2.1 (1.1.1.1)
Relay nexthop : 200.1.2.1
Original nexthop: 200.1.2.1
OutLabel : NULL
Community : No-Export
AS-path : 10
Origin : igp
Attribute value : pref-val 0
State : valid, external, best,
# 查看Switch B的路由发送信息。
[SwitchB] display bgp routing-table ipv4 9.1.1.0 advertise-info
BGP local router ID: 2.2.2.2
Local AS number: 20
Paths: 1 best
BGP routing table information of 9.1.1.0/24:
Not advertised to any peers yet
# 查看Switch C的BGP路由表。
[SwitchC] display bgp routing-table ipv4
Total number of routes: 0
在Switch B的BGP路由表中可以看到配置的团体属性,Switch B不会通过BGP将到达目的地址9.1.1.0/24的路由发布出去。
所有交换机运行BGP协议,Switch A与Switch B建立EBGP连接,Switch C与Switch B和Switch D之间建立IBGP连接。
Switch C作为路由反射器,Switch B和Switch D为Switch C的客户机。
Switch D能够通过Switch C学到路由20.0.0.0/8。
图1-19 配置BGP路由反射器的组网图
(1) 配置各接口的IP地址(略)
(2) 配置BGP连接
# 配置Switch A。
<SwitchA> system-view
[SwitchA] bgp 100
[SwitchA-bgp] router-id 1.1.1.1
[SwitchA-bgp] peer 192.1.1.2 as-number 200
[SwitchA-bgp] address-family ipv4 unicast
[SwitchA-bgp-ipv4] peer 192.1.1.2 enable
# 通告20.0.0.0/8网段路由到BGP路由表中。
[SwitchA-bgp-ipv4] network 20.0.0.0
[SwitchA-bgp-ipv4] quit
[SwitchA-bgp] quit
# 配置Switch B。
<SwitchB> system-view
[SwitchB] bgp 200
[SwitchB-bgp] router-id 2.2.2.2
[SwitchB-bgp] peer 192.1.1.1 as-number 100
[SwitchB-bgp] peer 193.1.1.1 as-number 200
[SwitchB-bgp] address-family ipv4 unicast
[SwitchB-bgp-ipv4] peer 192.1.1.1 enable
[SwitchB-bgp-ipv4] peer 193.1.1.1 enable
[SwitchB-bgp-ipv4] peer 193.1.1.1 next-hop-local
[SwitchB-bgp-ipv4] quit
[SwitchB-bgp] quit
# 配置Switch C。
<SwitchC> system-view
[SwitchC] bgp 200
[SwitchC-bgp] router-id 3.3.3.3
[SwitchC-bgp] peer 193.1.1.2 as-number 200
[SwitchC-bgp] peer 194.1.1.2 as-number 200
[SwitchC-bgp] address-family ipv4 unicast
[SwitchC-bgp-ipv4] peer 193.1.1.2 enable
[SwitchC-bgp-ipv4] peer 194.1.1.2 enable
[SwitchC-bgp-ipv4] quit
[SwitchC-bgp] quit
# 配置Switch D。
<SwitchD> system-view
[SwitchD] bgp 200
[SwitchD-bgp] router-id 4.4.4.4
[SwitchD-bgp] peer 194.1.1.1 as-number 200
[SwitchD-bgp] address-family ipv4 unicast
[SwitchD-bgp-ipv4] peer 194.1.1.1 enable
[SwitchD-bgp-ipv4] quit
[SwitchD-bgp] quit
(3) 配置路由反射器
# 配置Switch C。
[SwitchC] bgp 200
[SwitchC-bgp] address-family ipv4 unicast
[SwitchC-bgp-ipv4] peer 193.1.1.2 reflect-client
[SwitchC-bgp-ipv4] peer 194.1.1.2 reflect-client
[SwitchC-bgp-ipv4] quit
[SwitchC-bgp] quit
# 查看Switch B的BGP路由表。
[SwitchB] display bgp routing-table ipv4
Total number of routes: 1
BGP local router ID is 2.2.2.2
Status codes: * - valid, > - best, d - damped, h - history,
s - suppressed, S - Stale, i - internal, e - external
Origin: i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
* >e 20.0.0.0 192.1.1.1 0 0 100i
# 查看Switch D的BGP路由表。
[SwitchD] display bgp routing-table ipv4
Total number of routes: 1
BGP local router ID is 4.4.4.4
Status codes: * - valid, > - best, d - damped, h - history,
s - suppressed, S - Stale, i - internal, e - external
Origin: i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
i 20.0.0.0 193.1.1.2 0 100 0 100i
可以看出,Switch D从Switch C已经学到了20.0.0.0/8路由。
AS 200中有多台BGP交换机,为了减少IBGP的连接数,现将他们划分为3个子自治系统:AS 65001、AS 65002和AS 65003。其中AS 65001内的三台交换机建立IBGP全连接。
图1-20 配置联盟组网图
设备 |
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
Switch A |
Vlan-int100 |
200.1.1.1/24 |
Switch D |
Vlan-int200 |
10.1.5.1/24 |
|
Vlan-int200 |
10.1.1.1/24 |
|
Vlan-int400 |
10.1.3.2/24 |
|
Vlan-int300 |
10.1.2.1/24 |
Switch E |
Vlan-int200 |
10.1.5.2/24 |
|
Vlan-int400 |
10.1.3.1/24 |
|
Vlan-int500 |
10.1.4.2/24 |
|
Vlan-int500 |
10.1.4.1/24 |
Switch F |
Vlan-int100 |
200.1.1.2/24 |
Switch B |
Vlan-int200 |
10.1.1.2/24 |
|
Vlan-int600 |
9.1.1.1/24 |
Switch C |
Vlan-int300 |
10.1.2.2/24 |
|
(1) 配置各接口的IP地址(略)
(2) 配置BGP联盟
# 配置Switch A。
<SwitchA> system-view
[SwitchA] bgp 65001
[SwitchA-bgp] router-id 1.1.1.1
[SwitchA-bgp] confederation id 200
[SwitchA-bgp] confederation peer-as 65002 65003
[SwitchA-bgp] peer 10.1.1.2 as-number 65002
[SwitchA-bgp] peer 10.1.2.2 as-number 65003
[SwitchA-bgp] address-family ipv4 unicast
[SwitchA-bgp-ipv4] peer 10.1.1.2 enable
[SwitchA-bgp-ipv4] peer 10.1.2.2 enable
[SwitchA-bgp-ipv4] peer 10.1.1.2 next-hop-local
[SwitchA-bgp-ipv4] peer 10.1.2.2 next-hop-local
[SwitchA-bgp-ipv4] quit
[SwitchA-bgp] quit
# 配置Switch B。
<SwitchB> system-view
[SwitchB] bgp 65002
[SwitchB-bgp] router-id 2.2.2.2
[SwitchB-bgp] confederation id 200
[SwitchB-bgp] confederation peer-as 65001 65003
[SwitchB-bgp] peer 10.1.1.1 as-number 65001
[SwitchB-bgp] address-family ipv4 unicast
[SwitchB-bgp-ipv4] peer 10.1.1.1 enable
[SwitchB-bgp-ipv4] quit
[SwitchB-bgp] quit
# 配置Switch C。
<SwitchC> system-view
[SwitchC] bgp 65003
[SwitchC-bgp] router-id 3.3.3.3
[SwitchC-bgp] confederation id 200
[SwitchC-bgp] confederation peer-as 65001 65002
[SwitchC-bgp] peer 10.1.2.1 as-number 65001
[SwitchC-bgp] address-family ipv4 unicast
[SwitchC-bgp-ipv4] peer 10.1.2.1 enable
[SwitchC-bgp-ipv4] quit
[SwitchC-bgp] quit
(3) 配置AS 65001内的IBGP连接
# 配置Switch A。
[SwitchA] bgp 65001
[SwitchA-bgp] peer 10.1.3.2 as-number 65001
[SwitchA-bgp] peer 10.1.4.2 as-number 65001
[SwitchA-bgp] address-family ipv4 unicast
[SwitchA-bgp-ipv4] peer 10.1.3.2 enable
[SwitchA-bgp-ipv4] peer 10.1.4.2 enable
[SwitchA-bgp-ipv4] peer 10.1.3.2 next-hop-local
[SwitchA-bgp-ipv4] peer 10.1.4.2 next-hop-local
[SwitchA-bgp-ipv4] quit
[SwitchA-bgp] quit
# 配置Switch D。
<SwitchD> system-view
[SwitchD] bgp 65001
[SwitchD-bgp] router-id 4.4.4.4
[SwitchD-bgp] confederation id 200
[SwitchD-bgp] peer 10.1.3.1 as-number 65001
[SwitchD-bgp] peer 10.1.5.2 as-number 65001
[SwitchD-bgp] address-family ipv4 unicast
[SwitchD-bgp-ipv4] peer 10.1.3.1 enable
[SwitchD-bgp-ipv4] peer 10.1.5.2 enable
[SwitchD-bgp-ipv4] quit
[SwitchD-bgp] quit
# 配置Switch E。
<SwitchE> system-view
[SwitchE] bgp 65001
[SwitchE-bgp] router-id 5.5.5.5
[SwitchE-bgp] confederation id 200
[SwitchE-bgp] peer 10.1.4.1 as-number 65001
[SwitchE-bgp] peer 10.1.5.1 as-number 65001
[SwitchE-bgp] address-family ipv4 unicast
[SwitchE-bgp-ipv4] peer 10.1.4.1 enable
[SwitchE-bgp-ipv4] peer 10.1.5.1 enable
[SwitchE-bgp-ipv4] quit
[SwitchE-bgp] quit
(4) 配置AS 100和AS 200之间的EBGP连接
# 配置Switch A。
[SwitchA] bgp 65001
[SwitchA-bgp] peer 200.1.1.2 as-number 100
[SwitchA-bgp] address-family ipv4 unicast
[SwitchA-bgp-ipv4] peer 200.1.1.2 enable
[SwitchA-bgp-ipv4] quit
[SwitchA-bgp] quit
# 配置Switch F。
<SwitchF> system-view
[SwitchF] bgp 100
[SwitchF-bgp] router-id 6.6.6.6
[SwitchF-bgp] peer 200.1.1.1 as-number 200
[SwitchF-bgp] address-family ipv4 unicast
[SwitchF-bgp-ipv4] peer 200.1.1.1 enable
[SwitchF-bgp-ipv4] network 9.1.1.0 255.255.255.0
[SwitchF-bgp-ipv4] quit
[SwitchF-bgp] quit
# 查看Switch B的BGP路由表。Switch C的BGP路由表与此类似。
[SwitchB] display bgp routing-table ipv4
Total number of routes: 1
BGP local router ID is 2.2.2.2
Status codes: * - valid, > - best, d - damped, h - history,
s - suppressed, S - Stale, i - internal, e - external
Origin: i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
* >i 9.1.1.0/24 10.1.1.1 0 100 0 (65001)
100i
[SwitchB] display bgp routing-table ipv4 9.1.1.0
BGP local router ID: 2.2.2.2
Local AS number: 65002
Paths: 1 available, 1 best
BGP routing table information of 9.1.1.0/24:
From : 10.1.1.1 (1.1.1.1)
Relay nexthop : 10.1.1.1
Original nexthop: 10.1.1.1
OutLabel : NULL
AS-path : (65001) 100
Origin : igp
Attribute value : MED 0, localpref 100, pref-val 0, pre 255
State : valid, external-confed, best,
# 查看Switch D的BGP路由表。
[SwitchD] display bgp routing-table ipv4
Total number of routes: 1
BGP local router ID is 4.4.4.4
Status codes: * - valid, > - best, d - damped, h - history,
s - suppressed, S - Stale, i - internal, e - external
Origin: i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
* >i 9.1.1.0/24 10.1.3.1 0 100 0 100i
[SwitchD] display bgp routing-table ipv4 9.1.1.0
BGP local router ID: 4.4.4.4
Local AS number: 65001
Paths: 1 available, 1 best
BGP routing table information of 9.1.1.0/24:
From : 10.1.3.1 (1.1.1.1)
Relay nexthop : 10.1.3.1
Original nexthop: 10.1.3.1
OutLabel : NULL
AS-path : 100
Origin : igp
Attribute value : MED 0, localpref 100, pref-val 0, pre 255
State : valid, internal-confed, best,
通过以上显示信息可以看出:
· Switch F只需要和Switch A建立EBGP连接,而不需要和Switch B、Switch C建立连接,同样可以通过联盟将路由信息传递给Switch B和Switch C。
· Switch B和Switch D在同一个联盟里,但是属于不同的子自治系统,它们都是通过Switch A来获取外部路由信息,生成的BGP路由表项也是一致的,等效于在同一个自治系统内,但是又不需要物理上全连接。
所有路由器都运行BGP协议。Switch A与Switch B和Switch C之间运行EBGP;Switch D与Switch B和Switch C之间运行IBGP。
AS 200中运行OSPF协议。
配置路由策略,使得Switch D优选从Switch C学到的1.0.0.0/8路由。
图1-21 配置BGP路径选择的组网图
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
|
Switch A |
Vlan-int101 |
1.0.0.1/8 |
Switch D |
Vlan-int400 |
195.1.1.1/24 |
|
Vlan-int100 |
192.1.1.1/24 |
|
Vlan-int300 |
194.1.1.1/24 |
|
Vlan-int200 |
193.1.1.1/24 |
Switch C |
Vlan-int400 |
195.1.1.2/24 |
Switch B |
Vlan-int100 |
192.1.1.2/24 |
|
Vlan-int200 |
193.1.1.2/24 |
|
Vlan-int300 |
194.1.1.2/24 |
|
(1) 配置各接口的IP地址(略)
(2) 配置Switch B、Switch C和Switch D之间运行OSPF协议
# 配置Switch B。
<SwitchB> system-view
[SwitchB] ospf
[SwitchB-ospf] area 0
[SwitchB-ospf-1-area-0.0.0.0] network 192.1.1.0 0.0.0.255
[SwitchB-ospf-1-area-0.0.0.0] network 194.1.1.0 0.0.0.255
[SwitchB-ospf-1-area-0.0.0.0] quit
[SwitchB-ospf-1] quit
# 配置Switch C。
<SwitchC> system-view
[SwitchC] ospf
[SwitchC-ospf] area 0
[SwitchC-ospf-1-area-0.0.0.0] network 193.1.1.0 0.0.0.255
[SwitchC-ospf-1-area-0.0.0.0] network 195.1.1.0 0.0.0.255
[SwitchC-ospf-1-area-0.0.0.0] quit
[SwitchC-ospf-1] quit
# 配置Switch D。
<SwitchD> system-view
[SwitchD] ospf
[SwitchD-ospf] area 0
[SwitchD-ospf-1-area-0.0.0.0] network 194.1.1.0 0.0.0.255
[SwitchD-ospf-1-area-0.0.0.0] network 195.1.1.0 0.0.0.255
[SwitchD-ospf-1-area-0.0.0.0] quit
[SwitchD-ospf-1] quit
(3) 配置BGP连接
# 配置Switch A。
<SwitchA> system-view
[SwitchA] bgp 100
[SwitchA-bgp] peer 192.1.1.2 as-number 200
[SwitchA-bgp] peer 193.1.1.2 as-number 200
[SwitchA-bgp] address-family ipv4 unicast
[SwitchA-bgp-ipv4] peer 192.1.1.2 enable
[SwitchA-bgp-ipv4] peer 193.1.1.2 enable
# 将1.0.0.0/8网段通告到Switch A的BGP路由表中。
[SwitchA-bgp-ipv4] network 1.0.0.0 8
[SwitchA-bgp-ipv4] quit
[SwitchA-bgp] quit
# 配置Switch B。
[SwitchB] bgp 200
[SwitchB-bgp] peer 192.1.1.1 as-number 100
[SwitchB-bgp] peer 194.1.1.1 as-number 200
[SwitchB-bgp] address-family ipv4 unicast
[SwitchB-bgp-ipv4] peer 192.1.1.1 enable
[SwitchB-bgp-ipv4] peer 194.1.1.1 enable
[SwitchB-bgp-ipv4] quit
[SwitchB-bgp] quit
# 配置Switch C。
[SwitchC] bgp 200
[SwitchC-bgp] peer 193.1.1.1 as-number 100
[SwitchC-bgp] peer 195.1.1.1 as-number 200
[SwitchC-bgp] address-family ipv4 unicast
[SwitchC-bgp-ipv4] peer 193.1.1.1 enable
[SwitchC-bgp-ipv4] peer 195.1.1.1 enable
[SwitchC-bgp-ipv4] quit
[SwitchC-bgp] quit
# 配置Switch D。
[SwitchD] bgp 200
[SwitchD-bgp] peer 194.1.1.2 as-number 200
[SwitchD-bgp] peer 195.1.1.2 as-number 200
[SwitchD-bgp] address-family ipv4 unicast
[SwitchD-bgp-ipv4] peer 194.1.1.2 enable
[SwitchD-bgp-ipv4] peer 195.1.1.2 enable
[SwitchD-bgp-ipv4] quit
[SwitchD-bgp] quit
(4) 通过配置1.0.0.0/8路由的不同属性值,使得Switch D优选从Switch C学到的路由。
· 方法一:在Switch A上对发布给对等体192.1.1.2的1.0.0.0/8路由配置较高的MED属性值,使得Switch D优选从Switch C学到的路由。
# 定义编号为2000的ACL,允许路由1.0.0.0/8通过。
[SwitchA] acl number 2000
[SwitchA-acl-basic-2000] rule permit source 1.0.0.0 0.255.255.255
[SwitchA-acl-basic-2000] quit
# 定义两个Route-policy,一个名为apply_med_50,为路由1.0.0.0/8设置MED属性值为50;另一个名为apply_med_100,为路由1.0.0.0/8设置MED属性值为100。
[SwitchA] route-policy apply_med_50 permit node 10
[SwitchA-route-policy-apply_med_50-10] if-match ip address acl 2000
[SwitchA-route-policy-apply_med_50-10] apply cost 50
[SwitchA-route-policy-apply_med_50-10] quit
[SwitchA] route-policy apply_med_100 permit node 10
[SwitchA-route-policy-apply_med_100-10] if-match ip address acl 2000
[SwitchA-route-policy-apply_med_100-10] apply cost 100
[SwitchA-route-policy-apply_med_100-10] quit
# 对发布给对等体193.1.1.2(Switch C)的路由应用名为apply_med_50的Route-policy,对发布给对等体192.1.1.2(Switch B)的路由应用名为apply_med_100的Route-policy。
[SwitchA] bgp 100
[SwitchA-bgp] address-family ipv4 unicast
[SwitchA-bgp-ipv4] peer 193.1.1.2 route-policy apply_med_50 export
[SwitchA-bgp-ipv4] peer 192.1.1.2 route-policy apply_med_100 export
[SwitchA-bgp-ipv4] quit
[SwitchA-bgp] quit
# 查看Switch D的BGP路由表。
[SwitchD] display bgp routing-table ipv4
Total number of routes: 2
BGP local router ID is 195.1.1.1
Status codes: * - valid, > - best, d - dampened, h - history,
s - suppressed, S - stale, i - internal, e - external
Origin: i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
* >i 1.0.0.0 193.1.1.1 50 100 0 100i
* i 192.1.1.1 100 100 0 100i
可以看到,Switch D从Switch C学到1.0.0.0/8的路由是最优的。
· 方法二:在Switch B和Switch C上分别对1.0.0.0/8路由配置不同的本地优先级,使得Switch D优选从Switch C学到的路由。
# 在Switch C上定义编号为2000的ACL,允许1.0.0.0/8路由通过。
[SwitchC] acl number 2000
[SwitchC-acl-basic-2000] rule permit source 1.0.0.0 0.255.255.255
[SwitchC-acl-basic-2000] quit
# 在Switch C上定义名为localpref的Route-policy,设置路由1.0.0.0/8的本地优先级为200(缺省的本地优先级为100)。
[SwitchC] route-policy localpref permit node 10
[SwitchC-route-policy-localpref-10] if-match ip address acl 2000
[SwitchC-route-policy-localpref-10] apply local-preference 200
[SwitchC-route-policy-localpref-10] quit
# 为从BGP对等体193.1.1.1的路由应用名为localpref的Route-policy。
[SwitchC] bgp 200
[SwitchC-bgp] address-family ipv4 unicast
[SwitchC-bgp-ipv4] peer 193.1.1.1 route-policy localpref import
[SwitchC-bgp-ipv4] quit
[SwitchC-bgp] quit
# 查看Switch D的BGP路由表。
[SwitchD] display bgp routing-table ipv4
Total number of routes: 2
BGP local router ID is 195.1.1.1
Status codes: * - valid, > - best, d - dampened, h - history,
s - suppressed, S - stale, i - internal, e - external
Origin: i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
* >i 1.0.0.0 193.1.1.1 200 0 100i
* i 192.1.1.1 100 0 100i
可以看到,Switch D从Switch C学到1.0.0.0/8的路由是最优的。
如图1-22所示,所有交换机均运行BGP协议,Switch A和Switch B之间建立EBGP连接,Switch B和Switch C之间建立IBGP连接。现要求实现即便Switch B发生主备倒换,也不会影响Switch A和Switch C之间正在进行的数据传输。
图1-22 BGP GR配置组网图
(1) Switch A的配置
# 配置各接口的IP地址(略)。
# 配置Switch A与Switch B的EBGP连接。
<SwitchA> system-view
[SwitchA] bgp 65008
[SwitchA-bgp] router-id 1.1.1.1
[SwitchA-bgp] peer 200.1.1.1 as-number 65009
# 使能BGP GR功能。
[SwitchA-bgp] graceful-restart
# 将8.0.0.0/8网段路由通告到BGP路由表中。
[SwitchA-bgp] address-family ipv4
[SwitchA-bgp-ipv4] network 8.0.0.0
# 使能与Switch B交换BGP IPv4单播路由的能力。
[SwitchA-bgp-ipv4] peer 200.1.1.1 enable
(2) Switch B的配置
# 配置各接口的IP地址(略)。
# 配置Switch B与Switch A的EBGP连接。
<SwitchB> system-view
[SwitchB] bgp 65009
[SwitchB-bgp] router-id 2.2.2.2
[SwitchB-bgp] peer 200.1.1.2 as-number 65008
# 配置Switch B与Switch C的IBGP连接。
[SwitchB-bgp] peer 9.1.1.2 as-number 65009
# 使能BGP GR功能。
[SwitchB-bgp] graceful-restart
# 将200.1.1.0/24和9.1.1.0/24网段路由通告到BGP路由表中。
[SwitchB-bgp] address-family ipv4
[SwitchB-bgp-ipv4] network 200.1.1.0 24
[SwitchB-bgp-ipv4] network 9.1.1.0 24
# 使能与Switch A、Switch C交换BGP IPv4单播路由的能力。
[SwitchB-bgp-ipv4] peer 200.1.1.2 enable
[SwitchB-bgp-ipv4] peer 9.1.1.2 enable
(3) Switch C的配置
# 配置各接口的IP地址(略)。
# 配置Switch C与Switch B的IBGP连接。
<SwitchC> system-view
[SwitchC] bgp 65009
[SwitchC-bgp] router-id 3.3.3.3
[SwitchC-bgp] peer 9.1.1.1 as-number 65009
# 使能BGP GR功能。
[SwitchC-bgp] graceful-restart
# 使能与Switch B交换BGP IPv4单播路由的能力。
[SwitchC-bgp-ipv4] peer 9.1.1.1 enable
在Switch A上ping Switch C,同时在Switch B上触发主备倒换,可以发现在整个倒换过程中Switch A都可以ping通Switch C。
· 在AS 200内使用OSPF作为IGP协议,实现AS内的互通。
· Switch A与Switch C之间建立两条IBGP连接。当Switch A与Switch C之间的两条路径均连通时,Switch C与1.1.1.0/24之间的报文使用Switch A<->Switch B<->Switch C这条路径转发;当Switch A<->Switch B<->Switch C这条路径发生故障时,BFD能够快速检测并通告BGP协议,使得Switch A<->Switch D<->Switch C这条路径能够迅速生效。
图1-23 配置BGP与BFD联动组网图
设备 |
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
Switch A |
Vlan-int100 |
3.0.1.1/24 |
Switch C |
Vlan-int101 |
3.0.2.2/24 |
|
Vlan-int200 |
2.0.1.1/24 |
|
Vlan-int201 |
2.0.2.2/24 |
Switch B |
Vlan-int100 |
3.0.1.2/24 |
Switch D |
Vlan-int200 |
2.0.1.2/24 |
|
Vlan-int101 |
3.0.2.1/24 |
|
Vlan-int201 |
2.0.2.1/24 |
(1) 配置各接口的IP地址(略)
(2) 配置OSPF,保证Switch A和Switch C之间路由可达(略)
(3) Switch A上的BGP配置
# 配置Switch A和Switch C建立两条IBGP连接。
<SwitchA> system-view
[SwitchA] bgp 200
[SwitchA-bgp] peer 3.0.2.2 as-number 200
[SwitchA-bgp] peer 2.0.2.2 as-number 200
[SwitchA-bgp] address-family ipv4 unicast
[SwitchA-bgp-ipv4] peer 3.0.2.2 enable
[SwitchA-bgp-ipv4] peer 2.0.2.2 enable
[SwitchA-bgp-ipv4] quit
[SwitchA-bgp] quit
# 配置当Switch A与Switch C之间的两条路径均连通时,Switch C与1.1.1.0/24之间的报文使用Switch A<->Switch B<->Switch C这条路径转发。(在Switch A上对发布给对等体2.0.2.2的1.1.1.0/24路由配置较高的MED属性值)
· 定义编号为2000的ACL,允许路由1.1.1.0/24通过。
[SwitchA] acl number 2000
[SwitchA-acl-basic-2000] rule permit source 1.1.1.0 0.0.0.255
[SwitchA-acl-basic-2000] quit
· 定义两个Route-policy,一个名为apply_med_50,为路由1.1.1.0/24设置MED属性值为50;另一个名为apply_med_100,为路由1.1.1.0/24设置MED属性值为100。
[SwitchA] route-policy apply_med_50 permit node 10
[SwitchA-route-policy-apply_med_50-10] if-match ip address acl 2000
[SwitchA-route-policy-apply_med_50-10] apply cost 50
[SwitchA-route-policy-apply_med_50-10] quit
[SwitchA] route-policy apply_med_100 permit node 10
[SwitchA-route-policy-apply_med_100-10] if-match ip address acl 2000
[SwitchA-route-policy-apply_med_100-10] apply cost 100
[SwitchA-route-policy-apply_med_100-10] quit
· 对发布给对等体3.0.2.2的路由应用名为apply_med_50的Route-policy,对发布给对等体2.0.2.2的路由应用名为apply_med_100的Route-policy。
[SwitchA] bgp 200
[SwitchA-bgp] address-family ipv4 unicast
[SwitchA-bgp-ipv4] peer 3.0.2.2 route-policy apply_med_50 export
[SwitchA-bgp-ipv4] peer 2.0.2.2 route-policy apply_med_100 export
[SwitchA-bgp-ipv4] quit
# 配置当Switch A<->Switch B<->Switch C这条路径发生故障时,BFD能够快速检测并通告BGP协议,使得Switch A<->Switch D<->Switch C这条路径能够迅速生效。
[SwitchA-bgp] peer 3.0.2.2 bfd
[SwitchA-bgp] quit
(4) Switch C上的BGP配置。
# 配置Switch A和Switch C建立两条IBGP连接。
<SwitchC> system-view
[SwitchC] bgp 200
[SwitchC-bgp] peer 3.0.1.1 as-number 200
[SwitchC-bgp] peer 2.0.1.1 as-number 200
[SwitchC-bgp] address-family ipv4 unicast
[SwitchC-bgp-ipv4] peer 3.0.1.1 enable
[SwitchC-bgp-ipv4] peer 2.0.1.1 enable
[SwitchC-bgp-ipv4] quit
# 配置当Switch A<->Switch B<->Switch C这条路径发生故障时,BFD能够快速检测并通告BGP协议,使得Switch A<->Switch D<->Switch C这条路径能够迅速生效。
[SwitchC-bgp] peer 3.0.1.1 bfd
[SwitchC-bgp] quit
[SwitchC] quit
下面以Switch C为例,Switch A和Switch C类似,不再赘述。
# 显示Switch C的BFD信息。
<SwitchC> display bfd session verbose
Total Session Num: 1 Up Session Num: 1 Init Mode: Active
IPv4 Session Working Under Ctrl Mode:
Local Discr: 513 Remote Discr: 513
Source IP: 3.0.2.2 Destination IP: 3.0.1.1
Session State: Up Interface: N/A
Min Tx Inter: 500ms Act Tx Inter: 500ms
Min Rx Inter: 500ms Detect Inter: 2500ms
Rx Count: 135 Tx Count: 135
Connect Type: Indirect Running Up for: 00:00:58
Hold Time: 2457ms Auth mode: None
Detect Mode: Async Slot: 0
Protocol: BGP
Diag Info: No Diagnostic
以上显示信息表明:Switch A和Switch C之间已经建立了BFD连接,而且BFD协议运行正常。
# 在Switch C上查看BGP邻居信息,可以看出Switch A和Switch C之间建立两条BGP连接,且均处于Established状态。
<SwitchC> display bgp peer ipv4
BGP local router ID: 3.3.3.3
Local AS number: 200
Total number of peers: 2 Peers in established state: 2
Peer AS MsgRcvd MsgSent OutQ PrefRcv Up/Down State
2.0.1.1 200 4 5 0 0 00:01:55 Established
3.0.1.1 200 4 5 0 0 00:01:52 Established
# 在Switch C上查看1.1.1.0/24的路由信息,可以看出Switch C通过Switch A<->Switch B<->Switch C这条路径与1.1.1.0/24网段通信。
<SwitchC> display ip routing-table 1.1.1.0 24 verbose
Summary Count : 1
Destination: 1.1.1.0/24
Protocol: BGP Process ID: 0
SubProtID: 0x1 Age: 00h00m09s
Cost: 50 Preference: 255
Tag: 0 State: Active Adv
OrigTblID: 0x1 OrigVrf: default-vrf
TableID: 0x2 OrigAs: 0
NBRID: 0x15000001 LastAs: 0
AttrID: 0x1 Neighbor: 3.0.1.1
Flags: 0x10060 OrigNextHop: 3.0.1.1
Label: NULL RealNextHop: 3.0.2.1
BkLabel: NULL BkNextHop: N/A
Tunnel ID: Invalid Interface: Vlan-interface101
BkTunnel ID: Invalid BkInterface: N/A
# Switch A和Switch B之间的链路发生故障后,在Switch C上查看1.1.1.0/24的路由信息,可以看出Switch C通过Switch A<->Switch D<->Switch C这条路径与1.1.1.0/24网段通信。
<SwitchC> display ip routing-table 1.1.1.0 24 verbose
Summary Count : 1
Destination: 1.1.1.0/24
Protocol: BGP Process ID: 0
SubProtID: 0x1 Age: 00h03m08s
Cost: 100 Preference: 255
Tag: 0 State: Active Adv
OrigTblID: 0x1 OrigVrf: default-vrf
TableID: 0x2 OrigAs: 0
NBRID: 0x15000000 LastAs: 0
AttrID: 0x0 Neighbor: 2.0.1.1
Flags: 0x10060 OrigNextHop: 2.0.1.1
Label: NULL RealNextHop: 2.0.2.1
BkLabel: NULL BkNextHop: N/A
Tunnel ID: Invalid Interface: Vlan-interface201
BkTunnel ID: Invalid BkInterface: N/A
如图1-24所示,Switch A、Switch B、Switch C和Switch D通过BGP协议实现网络互连。要求链路B正常时,Switch A和Switch D之间的流量通过链路B转发;链路B出现故障时,流量可以快速切换到链路A上。
图1-24 配置BGP快速重路由组网图
(1) 配置各接口的IP地址(略)
(2) 在AS 200内配置OSPF,发布接口地址所在网段的路由(包括Loopback接口),确保Switch B、Switch C和Switch D之间路由可达(略)
# 配置Switch A分别与Switch B和Switch C建立EBGP会话,并配置通过BGP发布路由1.1.1.1/32。
[SwitchA] bgp 100
[SwitchA-bgp] router-id 1.1.1.1
[SwitchA-bgp] peer 10.1.1.2 as-number 200
[SwitchA-bgp] peer 30.1.1.3 as-number 200
[SwitchA-bgp] address-family ipv4 unicast
[SwitchA-bgp-ipv4] peer 10.1.1.2 enable
[SwitchA-bgp-ipv4] peer 30.1.1.3 enable
[SwitchA-bgp-ipv4] network 1.1.1.1 32
# 配置Switch B与Switch A建立EBGP会话,与Switch D建立IBGP会话。
[SwitchB] bgp 200
[SwitchB-bgp] router-id 2.2.2.2
[SwitchB-bgp] peer 10.1.1.1 as-number 100
[SwitchB-bgp] peer 4.4.4.4 as-number 200
[SwitchB-bgp] peer 4.4.4.4 connect-interface loopback 0
[SwitchB-bgp] address-family ipv4 unicast
[SwitchB-bgp-ipv4] peer 10.1.1.1 enable
[SwitchB-bgp-ipv4] peer 4.4.4.4 enable
[SwitchB-bgp-ipv4] peer 4.4.4.4 next-hop-local
[SwitchB-bgp-ipv4] quit
[SwitchB-bgp] quit
# 配置Switch C与Switch A建立EBGP会话,与Switch D建立IBGP会话。
[SwitchC] bgp 200
[SwitchC-bgp] router-id 3.3.3.3
[SwitchC-bgp] peer 30.1.1.1 as-number 100
[SwitchC-bgp] peer 4.4.4.4 as-number 200
[SwitchC-bgp] peer 4.4.4.4 connect-interface loopback 0
[SwitchC-bgp] address-family ipv4 unicast
[SwitchC-bgp-ipv4] peer 30.1.1.1 enable
[SwitchC-bgp-ipv4] peer 4.4.4.4 enable
[SwitchC-bgp-ipv4] peer 4.4.4.4 next-hop-local
[SwitchC-bgp-ipv4] quit
[SwitchC-bgp] quit
# 配置Switch D分别与Switch B和Switch C建立IBGP会话,并配置BGP发布路由4.4.4.4/32。
[SwitchD] bgp 200
[SwitchD-bgp] router-id 4.4.4.4
[SwitchD-bgp] peer 2.2.2.2 as-number 200
[SwitchD-bgp] peer 2.2.2.2 connect-interface loopback 0
[SwitchD-bgp] peer 3.3.3.3 as-number 200
[SwitchD-bgp] peer 3.3.3.3 connect-interface loopback 0
[SwitchD-bgp] address-family ipv4 unicast
[SwitchD-bgp-ipv4] peer 2.2.2.2 enable
[SwitchD-bgp-ipv4] peer 3.3.3.3 enable
[SwitchD-bgp-ipv4] network 4.4.4.4 32
(4) 修改路由的首选值,使得Switch A和Switch D之间的流量优先通过链路B转发
# 在Switch A上配置从Switch B接收到的路由的首选值为100。
[SwitchA-bgp-ipv4] peer 10.1.1.2 preferred-value 100
[SwitchA-bgp-ipv4] quit
[SwitchA-bgp] quit
# 在Switch D上配置从Switch B接收到的路由的首选值为100。
[SwitchD-bgp-ipv4] peer 2.2.2.2 preferred-value 100
[SwitchD-bgp-ipv4] quit
[SwitchD-bgp] quit
(5) 配置BGP快速重路由
# 配置Switch A:配置BFD echo报文的源IP地址为11.1.1.1;创建路由策略frr,为路由4.4.4.4/32指定备份下一跳的地址为30.1.1.3(对等体Switch C的地址);在BGP IPv4单播地址族下应用该路由策略。
[SwitchA] bfd echo-source-ip 11.1.1.1
[SwitchA] ip prefix-list abc index 10 permit 4.4.4.4 32
[SwitchA] route-policy frr permit node 10
[SwitchA-route-policy] if-match ip address prefix-list abc
[SwitchA-route-policy] apply fast-reroute backup-nexthop 30.1.1.3
[SwitchA-route-policy] quit
[SwitchA] bgp 100
[SwitchA-bgp] address-family ipv4 unicast
[SwitchA-bgp-ipv4] fast-reroute route-policy frr
[SwitchA-bgp-ipv4] quit
[SwitchA-bgp] quit
# 配置Switch D:配置BFD echo报文的源IP地址为44.1.1.1;创建路由策略frr,为路由1.1.1.1/32指定备份下一跳的地址为3.3.3.3(对等体Switch C的地址);在BGP IPv4单播地址族下应用该路由策略。
[SwitchD] bfd echo-source-ip 44.1.1.1
[SwitchD] ip prefix-list abc index 10 permit 1.1.1.1 32
[SwitchD] route-policy frr permit node 10
[SwitchD-route-policy] if-match ip address prefix-list abc
[SwitchD-route-policy] apply fast-reroute backup-nexthop 3.3.3.3
[SwitchD-route-policy] quit
[SwitchD] bgp 200
[SwitchD-bgp] address-family ipv4 unicast
[SwitchD-bgp-ipv4] fast-reroute route-policy frr
[SwitchD-bgp-ipv4] quit
[SwitchD-bgp] quit
# 在Switch A上查看4.4.4.4/32路由,可以看到备份下一跳信息。
[SwitchA] display ip routing-table 4.4.4.4 32 verbose
Summary Count : 1
Destination: 4.4.4.4/32
Protocol: BGP Process ID: 0
SubProtID: 0x2 Age: 00h01m52s
Cost: 0 Preference: 255
IpPre: N/A QosLocalID: N/A
Tag: 0 State: Active Adv
OrigTblID: 0x0 OrigVrf: default-vrf
TableID: 0x2 OrigAs: 200
NibID: 0x15000003 LastAs: 200
AttrID: 0x5 Neighbor: 10.1.1.2
Flags: 0x10060 OrigNextHop: 10.1.1.2
Label: NULL RealNextHop: 10.1.1.2
BkLabel: NULL BkNextHop: 30.1.1.3
Tunnel ID: Invalid Interface: Vlan-interface 100
BkTunnel ID: Invalid BkInterface: Vlan-interface 200
FtnIndex: 0x0
# 在Switch D上查看1.1.1.1/32路由,可以看到备份下一跳信息。
[SwitchD] display ip routing-table 1.1.1.1 32 verbose
Summary Count : 1
Destination: 1.1.1.1/32
Protocol: BGP Process ID: 0
SubProtID: 0x1 Age: 00h00m36s
Cost: 0 Preference: 255
IpPre: N/A QosLocalID: N/A
Tag: 0 State: Active Adv
OrigTblID: 0x0 OrigVrf: default-vrf
TableID: 0x2 OrigAs: 100
NibID: 0x15000003 LastAs: 100
AttrID: 0x1 Neighbor: 2.2.2.2
Flags: 0x10060 OrigNextHop: 2.2.2.2
Label: NULL RealNextHop: 20.1.1.2
BkLabel: NULL BkNextHop: 40.1.1.3
Tunnel ID: Invalid Interface: Vlan-interface 101
BkTunnel ID: Invalid BkInterface: Vlan-interface 201
FtnIndex: 0x0
使用display bgp peer ipv4 unicast命令查看BGP对等体的信息,发现与对端的连接无法进入Established状态。
BGP邻居的建立需要能够使用179端口建立TCP会话,以及能够正确交换Open消息。
(1) 执行display current-configuration命令查看当前配置,检查邻居的AS号配置是否正确。
(2) 执行display bgp peer ipv4 unicast命令检查邻居的IP地址是否正确。
(3) 如果使用Loopback接口,检查是否配置了peer connect-interface命令。
(4) 如果是物理上非直连的EBGP邻居,检查是否配置了peer ebgp-max-hop命令。
(5) 检查路由表中是否存在到邻居的可用路由。
(6) 使用ping命令检查链路是否畅通。
(7) 使用display tcp verbose命令检查TCP连接是否正常。
(8) 检查是否配置了禁止TCP端口179的ACL。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!