07-BGP配置
本章节下载: 07-BGP配置 (3.77 MB)
目 录
2.1 搭建基本BGP网络配置任务简介(IPv4单播/IPv4组播)
2.2 搭建基本BGP网络配置任务简介(IPv6单播/IPv6组播)
2.4.8 配置BGP IPv4单播路由和BGP IPv4单播标签路由的引入功能
3.4.2 配置忽略BGP路由的ORIGINATOR_ID属性
3.4.3 配置不同VPN间转发路由时清除BGP路由的反射相关属性
4.5.5 配置允许比较来自同一联盟不同子自治系统邻居路由的MED属性值
4.7.2 配置BGP在选择最优路由时忽略AS_PATH属性
4.7.5 配置发送BGP更新消息时删除或替换AS_PATH属性的私有AS号
4.9 配置BGP在选择最优路由时忽略IGP Metric的比较
4.12.3 配置BGP路由的下一跳为隧道或IP地址时影响路由优选
5.2.1 开启BGP在新建TCP连接时的Path MTU探测功能
5.2.2 配置建立BGP TCP连接时使用的TCP最大报文段长度
5.5 配置系统进入二级内存门限告警状态后不断开EBGP对等体
5.8.3 禁止与指定对等体/对等体组建立会话(IPv4对等体)
5.8.4 禁止与指定对等体/对等体组建立会话(IPv6对等体)
5.9.2 通过Route-refresh功能实现BGP软复位(IPv4对等体)
5.9.3 通过Route-refresh功能实现BGP软复位(IPv6对等体)
5.9.4 通过将所有路由更新信息保存在本地实现BGP软复位
5.9.7 手工软复位BGP会话(IPv4单播/IPv4组播)
5.9.8 手工软复位BGP会话(IPv6单播/IPv6组播)
5.15 配置BGP路由进行下一跳路由迭代查找时采用最长匹配方式
5.17 配置不检查来自指定对等体/对等体组的EBGP路由的下一跳地址
5.25 配置关闭MPLS Local Ifnet隧道自动创建功能
6.6.5 配置向对等体/对等体组发送BGP RPKI验证结果
7.4.2 通过引用路由策略的方式开启BGP快速重路由功能(IPv4单播)
7.4.3 通过引用路由策略的方式开启BGP快速重路由功能(IPv6单播)
7.4.4 通过pic命令开启BGP快速重路由(IPv4单播)
7.4.5 通过pic命令开启BGP快速重路由(IPv6单播)
7.4.6 配置BGP快速重路由通过BFD会话检测主路由的下一跳是否可达
8.4.4 配置BGP LS信息的AS号和Router ID
8.4.6 手工软复位BGP LS或BGP-VPN LS地址族下的BGP会话
BGP(Border Gateway Protocol,边界网关协议)是一种既可以用于不同AS(Autonomous System,自治系统)之间,又可以用于同一AS内部的动态路由协议。当BGP运行于同一AS内部时,被称为IBGP(Internal BGP);当BGP运行于不同AS之间时,称为EBGP(External BGP)。AS是拥有同一选路策略,属于同一技术管理部门的一组路由器。当前使用的BGP版本是BGP-4。
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。
根据对等体的IP地址类型,可以将对等体分为以下两种:
· IPv4对等体:通过IPv4地址创建的对等体。
· IPv6对等体:通过IPv6地址创建的对等体。
BGP定义了以下几种消息类型:
· Open:TCP连接建立后发送的第一个消息,用于在BGP对等体之间建立会话。
· Update:用于在对等体之间交换路由信息。一条Update消息可以发布具有相同路径属性的多条可达路由,也可以同时撤销多条不可达路由。
· Keepalive:BGP周期性地向对等体发送Keepalive消息,以保持会话的有效性。
· Route-refresh:用来要求对等体重新发送指定地址族的路由信息。
· Notification:当BGP检测到错误状态时,就向对等体发出Notification消息,之后BGP会话会立即中断。
BGP在会话建立过程中共具有六种状态,会话两端设备的BGP所处状态迁移过程如图1-1所示。
图1-1 BGP有限状态机变化过程
此状态是BGP的初始状态,在此状态下,BGP拒绝任何连接请求。只有收到Start事件时,设备才给BGP分配资源,并尝试进行TCP连接、转入Connect状态。
在其他的五种状态下,如果发生了TCP连接断开、报文错误、配置触发关闭连接或收到Notification消息等错误事件,BGP都会转入Idle状态。
在此状态下,BGP启动Connect Retry定时器,等待TCP完成连接:
· 如果在Connect Retry定时器超时前成功建立TCP连接,则BGP关闭Connect Retry定时器,向对等体发送Open消息,并转入OpenSent状态。
· 如果在Connect Retry定时器超时前建立TCP连接失败,则BGP转入Active状态。
· 如果Connect Retry定时器超时,BGP仍未收到对端的连接响应,则BGP重置Connect Retry定时器,再次尝试与对等体建立TCP连接,并保持Connect状态。
在此状态下,BGP不断尝试建立TCP连接:
· 如果TCP连接建立成功,则BGP关闭Connect Retry定时器,向对等体发送Open消息,并转入OpenSent状态。
· 如果TCP连接建立失败,则BGP重置Connect Retry定时器并保持Active状态。
· 如果Connect Retry定时器超时,BGP仍未收到对端的连接响应,则BGP重置Connect Retry定时器,并转入Connect状态。
在此状态下,BGP等待来自对等体的Open消息,并对Open消息中的BGP版本号、AS号等信息进行检查:
· 如果收到的Open消息正确,则BGP向对等体发送Keepalive消息,并转入OpenConfirm状态。
· 如果收到的Open消息错误,则BGP向对等体发送Notification消息,并转入Idle状态。
在此状态下如果TCP连接断开,则BGP重置Connect Retry定时器,并转入Active状态,重新尝试TCP连接的建立。
在此状态下,BGP等待Keepalive或Notification消息。如果BGP收到Keepalive消息,则转入Established状态,如果收到Notification消息,则转入Idle状态。
在此状态下,BGP可以和对等体交互Update、Keepalive、Route-refresh以及Notification消息:
· 收到正确的Update消息或Keepalive消息时,BGP保持Established状态。
· 收到错误的Update消息或Keepalive消息时,BGP向对等体发送Notification消息并转入Idle状态。
· Route-refresh消息不影响BGP状态。
· 收到Notification消息时,BGP转入Idle状态。
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-2所示,离本地AS最近的相邻AS号排在前面,其他AS号按顺序依次排列。
· AS_SET:AS号只是经过的AS的简单罗列,没有顺序要求。
AS_PATH属性具有如下用途:
· 避免路由环路的形成:缺省情况下,如果BGP路由器接收到的路由的AS_PATH属性中已经包含了本地的AS号,则BGP路由器认为出现路由环路,不会接受该路由。
· 影响路由的选择:在其他因素相同的情况下,BGP会优先选择路径较短的路由。比如在图1-2中,AS 50中的BGP路由器会选择经过AS 40的路径作为到目的地址8.0.0.0的最优路由。用户可以使用路由策略来人为地增加AS路径的长度,以便更为灵活地控制BGP路径的选择。路由策略的详细介绍,请参见“三层技术-IP路由配置指导”中的“路由策略”。
· 对路由进行过滤:通过配置AS路径过滤列表,可以针对AS_PATH属性中所包含的AS号来对路由进行过滤。AS路径过滤列表的详细介绍,请参见“三层技术-IP路由配置指导”中的“路由策略”。
BGP的NEXT_HOP属性取值不一定是邻居路由器的IP地址。如图1-3所示,NEXT_HOP属性取值情况分为几种:
· BGP发言者把自己产生的路由发给所有邻居时,将该路由信息的NEXT_HOP属性设置为自己与对端连接的接口地址;
· BGP发言者把接收到的路由发送给EBGP对等体时,将该路由信息的NEXT_HOP属性设置为自己与对端连接的接口地址;
· BGP发言者把从EBGP邻居得到的路由发给IBGP邻居时,并不改变该路由信息的NEXT_HOP属性。如果配置了负载分担,等价路由被发给IBGP邻居时则会修改NEXT_HOP属性。关于“负载分担”的概念请参见“1.8 BGP负载分担”。
MED属性仅在相邻两个AS之间交换,收到此属性的AS不会再将其通告给其它AS。
MED属性相当于IGP使用的度量值(metric),它用于判断流量进入AS时的最佳路由。当一个BGP路由器通过不同的EBGP对等体得到目的地址相同但下一跳不同的多条路由时,在其它条件相同的情况下,将优先选择MED值较小者作为最佳路由。如图1-4所示,从AS 10到AS 20的流量将选择Router B作为入口。
图1-4 MED属性
通常情况下,BGP只比较来自同一个AS的路由的MED属性值。在某些特殊的应用中,用户也可以通过配置compare-different-as-med命令,强制BGP比较来自不同AS的路由的MED属性值。
LOCAL_PREF属性仅在IBGP对等体之间交换,不通告给其他AS。它表明BGP路由器的优先级。
LOCAL_PREF属性用于判断流量离开AS时的最佳路由。当BGP路由器通过不同的IBGP对等体得到目的地址相同但下一跳不同的多条路由时,将优先选择LOCAL_PREF属性值较高的路由。如图1-5所示,从AS 20到AS 10的流量将选择Router C作为出口。
BGP将具有相同特征的路由归为一组,称为一个团体,通过在路由中携带团体属性标识路由所属的团体。团体没有物理上的边界,不同AS的路由可以属于同一个团体。
根据需要,一条路由可以携带一个或多个团体属性值(每个团体属性值用一个四字节的整数表示)。接收到该路由的路由器可以通过比较团体属性值对路由作出适当的处理(比如决定是否发布该路由、在什么范围发布等),而不需要匹配复杂的过滤规则(如ACL),从而简化路由策略的应用和降低维护管理的难度。
公认的团体属性有:
· INTERNET:缺省情况下,所有的路由都属于INTERNET团体。具有此属性的路由可以被通告给所有的BGP对等体。
· NO_EXPORT:具有此属性的路由在收到后,不能被发布到本地AS之外。如果使用了联盟,则不能被发布到联盟之外,但可以发布给联盟中的其他子AS(关于联盟的定义请参见“1.9 7. 联盟”)。
· NO_ADVERTISE:具有此属性的路由被接收后,不能被通告给任何其他的BGP对等体。
· NO_EXPORT_SUBCONFED:具有此属性的路由被接收后,不能被发布到本地AS之外,也不能发布到联盟中的其他子AS。
除了公认的团体属性外,用户还可以使用团体属性列表自定义团体属性,以便更为灵活地控制路由策略。
团体属性仅能表示2字节的AS号,为了更加灵活地使用团体属性,BGP定义了一种新的格式的团体属性:Large团体属性。Large团体属性值长度为12字节,格式为Global Administration:LocalData1:LocalData2,每个字段均为4字节。用户可以自定义每个字段的含义,例如可以通过指定Large团体属性值使其代表ME:ACTION:YOU,或ASN:Function:Parameter。
Large团体属性可以完整地表示2字节或者4字节的AS号,且包含两个4字节的LocalData属性标识,使管理员可以更加灵活地应用策略、控制路由的发布和接收。Large团体属性可以和团体属性一起使用,作为对团体属性的补充。
随着团体属性的应用日益广泛,原有四字节的团体属性无法满足用户的需求。因此,BGP定义了新的路由属性——扩展团体属性。扩展团体属性与团体属性有如下不同:
· 扩展团体属性为八字节,提供了更多的属性值。
· 扩展团体属性可以划分类型。在不同的组网应用中,可以使用不同类型的扩展团体属性对路由进行过滤和控制。与不区分类型、统一使用同一个属性值空间的团体属性相比,扩展团体属性的配置和管理更为简单。
目前,设备支持的扩展团体属性有VPN Target属性、链路带宽属性、Color属性和SoO(Site of Origin,源站点)属性。VPN Target属性的详细介绍,请参见“MPLS配置指导”中的“MPLS L3VPN”。Color属性的详细介绍,请参见“三层技术-IP路由命令参考”中的“路由策略”。
链路带宽属性用来标识与EBGP建立邻居的接口带宽,该链路带宽属性会随着路由的发布传递给IBGP邻居。
SoO扩展团体属性用来标识路由的原始站点。路由器不会将带有SoO属性的路由发布给该SoO标识的站点,确保来自某个站点的路由不会再被发布到该站点,从而避免路由环路。在AS路径信息丢失时,可以通过SoO属性来避免发生环路。
SoO属性有五种格式:
· 16位自治系统号:32位用户自定义数,例如:101:3。
· 32位IP地址:16位用户自定义数,例如:192.168.122.15:1。
· 32位自治系统号:16位用户自定义数,其中的自治系统号最小值为65536。例如:65536:1。
· 32位IP地址/IPv4地址掩码:16位用户自定义数,例如:192.168.122.15/24:1。
· 32位自治系统号的点分方式:16位用户自定义数,例如:65535.65535:1。
BGP团体属性用来携带BGP路由中的附加信息,以实现简化的路由策略。由于BGP团体属性4字节长度的限制,BGP引入了许多新的属性来提供类似团体属性的功能,如Large团体属性、扩展团体属性等。这些属性都具有固定的长度,依旧无法满足日益增长的需求;并且这些属性均具有其独特的格式,想要处理这些属性,设备必须能够识别这些属性,提高了网络部署的难度,不利于网络的扩展。
团体容器属性可以用来解决上述问题。团体容器属性提供了一种类似团体属性功能的“通用化”解决方案,其作为类团体属性的“容器”,允许携带多种多样的类团体属性,并通过“团体容器公共头+类团体属性”的结构进行组织。类团体属性在团体容器属性中被称为团体容器,团体容器均为可变长度,不同的团体容器可以定义不同的属性值以实现不同的功能。除了协议标准中已经定义的团体容器外,用户还可以自行定义新的团体容器,以满足不断增长的需求,设备无需具有识别特定团体容器的能力即可转发团体容器属性。
目前,我司设备无法主动在BGP路由中添加团体容器属性,只能识别其他厂商设备向我司设备发送的BGP路由中携带的团体容器属性并转发该路由,且仅支持团体容器类型为Wide的团体容器属性、Wide团体容器定义的属性值仅能为“Download To FIB”。“Download To FIB”表示Flowspec路由不通知QoS模块执行相应的QoS策略,而是以匹配规则中的目的地址为IP路由的目的地址、以执行动作中的重定向下一跳为IP路由的下一跳地址,在IPv4/IPv6路由表中生成一条路由。如果不存在目的地址匹配规则或重定向下一跳动作,则不生成路由。通过使用“Download To FIB”,在Flowspec路由器无法通过其他方式获得路由信息时,控制器可以借助Flowspec路由的下发来实现IP路由信息的下发,并通过该路由信息指导流量的转发。
通过“Download To FIB”生成的路由所在的路由表取决于Flowspec路由的地址族,具体情况如表1-1所示。
表1-1 根据Flowspec路由生成的IP路由所在的路由表
Flowspec路由的地址族 |
生成的IP路由所在的路由表 |
BGP IPv4 Flowspec地址族 |
公网IPv4路由表 |
BGP IPv6 Flowspec地址族 |
公网IPv6路由表 |
BGP-VPN IPv4 Flowspec地址族 |
对应VPN实例的IPv4路由表 |
BGP-VPN IPv6 Flowspec地址族 |
对应VPN实例的IPv6路由表 |
BGP VPNv4 Flowspec地址族 |
Flowspec路由RD对应的VPN实例的IPv4路由表 |
BGP VPNv6 Flowspec地址族 |
Flowspec路由RD对应的VPN实例的IPv6路由表 |
有关Flowspec路由及Flowspec地址族的详细介绍,请参见“ACL和QoS配置指导”中的“Flowspec”。
目前,BGP选择路由的过程为:
(1) 丢弃下一跳(NEXT_HOP)不可达的路由;
(2) 优选首选值(Preferred-value)最大的路由;
(3) 优选本地优先级(LOCAL_PREF)最高的路由;
(4) 在BGP实例的VPN实例内,根据bestroute encap-type命令的配置优选SRv6封装或MPLS封装的路由;在BGP实例的公网实例内,本规则不生效;
(5) 依次选择network命令生成的路由、import-route命令引入的路由、聚合路由;
(6) 优选携带AIGP属性的路由,AIGP属性值越小优先级越高;
(7) 优选AS路径(AS_PATH)最短的路由;
(8) 依次选择ORIGIN类型为IGP、EGP、Incomplete的路由;
(9) 优选MED值最小的路由;
(10) 依次选择从EBGP、联盟EBGP、联盟IBGP、IBGP学来的路由;
(11) 优选到达下一跳的IGP路由的Metric值最小的路由;
(12) 优选迭代深度值小的路由;
(13) 如果当前的最优路由为EBGP路由,则BGP路由器收到来自不同的EBGP邻居的路由后,不会改变最优路由;
(14) 优选Router ID最小的路由器发布的路由。如果路由包含RR属性,那么在路由选择过程中,就用ORIGINATOR_ID来替代Router ID;
(15) 优选CLUSTER_LIST长度最短的路由;
(16) 优选IP地址最小的对等体发布的路由。
· CLUSTER_ID为路由反射器的集群ID,CLUSTER_LIST由CLUSTER_ID序列组成,路由反射器将自己的CLUSTER_ID加入CLUSTER_LIST中。若路由反射器收到路由中的CLUSTER_LIST包含自己的CLUSTER_ID,则丢弃该路由,从而避免集群内发生环路。
· 如果配置了负载分担,并且有多条到达同一目的地的路由,则根据配置的路由条数选择多条路由进行负载分担。
· 有关bestroute encap-type命令的详细参考,请参见“Segment Routing命令参考”中的“SRv6 TE Policy”。
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.6 BGP的选路规则”中的规则选择路由,当路由同时满足如下条件时,即在这些路由间进行负载分担:
· ORIGIN属性、LOCAL_PREF属性、AIGP属性和MED属性完全相同。
· AS_PATH属性满足如下要求:
¡ 只要配置了balance as-path-neglect命令,则AS_PATH属性可以不同。
¡ 如果配置了balance as-path-relax命令,但未配置balance as-path-neglect命令,则AS_PATH属性内容不同但长度相同的路由之间能够形成BGP负载分担。
¡ 如果未配置balance as-path-neglect和balance as-path-relax命令,则要求AS_PATH属性也必须相同。
· 到达路由下一跳的IGP路由的Metric值满足如下要求:
¡ 若未配置bestroute igp-metric-ignore命令和balance igp-metric-ignore命令,则到达路由下一跳的IGP路由的Metric值必须相同。
¡ 配置了bestroute igp-metric-ignore命令或balance igp-metric-ignore命令后,到达路由下一跳的IGP路由的Metric值不同也能形成BGP负载分担。
· 同为标签路由(具有对应MPLS标签值的路由)或同为非标签路由。
图1-6 BGP负载分担示意图
在图1-6中,Router A和Router B是Router C的IBGP对等体。当Router D和Router E同时向Router C通告到达同一目的地的路由时,如果用户在Router C上配置了进行负载分担的BGP路由条数为2,则当这两条路由满足负载分担条件时,Router C就把这两条路由同时加入到转发表中,实现BGP路由的负载分担。Router C只向Router A和Router B转发一次该路由,该路由的属性按照如下方法确定:
· 如果未配置balance as-path-neglect和balance as-path-relax命令,形成负载分担的路由的AS_PATH属性相同,则发布路由的AS_PATH属性就为该值;如果配置了balance as-path-neglect或balance as-path-relax命令,形成负载分担的路由的AS_PATH属性不同,则发布路由的AS_PATH属性为最佳路由的AS_PATH属性。
· NEXT_HOP属性改变为Router C的地址,而不是原来的EBGP对等体地址。
· 其它的BGP路由属性为最佳路由的属性。
BGP负载分担特性适用于EBGP、IBGP以及联盟之间。
在大规模BGP网络中,对等体的数目众多,路由表庞大,配置和维护极为不便。通过如下方法,可以降低管理难度,提高路由发布效率。
在大规模的网络中,BGP路由表十分庞大,使用路由聚合(Routes Aggregation)可以大大减小BGP路由表的规模。
路由聚合实际上是将多条路由合并的过程。这样BGP在向对等体通告路由时,可以只通告聚合后的路由,而不是将所有的具体路由都通告出去。
目前系统支持自动聚合和手动聚合方式。使用后者还可以控制聚合路由的属性,以及决定是否发布具体路由。
路由发生变化时,路由协议会向邻居发布路由更新,收到路由更新的路由器需要重新计算路由并修改路由表。如果发生路由震荡,即路由不稳定,路由表中的某条路由反复消失和重现,则会消耗大量的带宽资源和CPU资源,严重时会影响到网络的正常工作。
在多数情况下,BGP协议都应用于复杂的网络环境中,路由变化十分频繁。为了防止持续的路由震荡带来的不利影响,BGP使用衰减来抑制不稳定的路由。
BGP衰减使用惩罚值来衡量一条路由的稳定性,惩罚值越高说明路由越不稳定。如图1-7所示,路由每次从可达状态变为不可达状态,或者可达路由的属性每次发生变化时,BGP给此路由增加一定的惩罚值(系统固定为1000,不可修改)。当惩罚值超过抑制阈值时,此路由被抑制,不参与路由选择。惩罚值达到设置的上限后,不再继续增加。
发生震荡的路由如果没有再次震荡,则路由的惩罚值会逐渐减少。每经过一段时间,惩罚值便会减少一半,这个时间称为半衰期(Half-life)。当惩罚值低于再使用阈值时,此路由变为可用路由,参与路由选择。
图1-7 BGP路由衰减示意图
在大规模BGP网络中,对等体的数量很多,其中很多对等体具有相同的策略,在配置时会重复使用一些命令。此时,将这些对等体加入一个对等体组,可以简化配置。
对等体组是具有某些相同属性的对等体的集合。当一个对等体加入对等体组时,此对等体将获得与所在对等体组相同的配置。当对等体组的配置改变时,组内成员的配置也相应改变。
在大规模的网络中,如果通过地址前缀列表、ACL、AS_PATH等实现对路由的控制,不仅配置复杂,而且不方便维护。利用团体属性、Large团体属性和扩展团体属性,可以提高路由策略配置的灵活度,简化路由策略的管理,从而降低维护管理的难度。团体属性、Large团体属性和扩展团体属性的介绍请参见“1.5 BGP的路由属性”。
为保证IBGP对等体之间的连通性,需要在IBGP对等体之间建立全连接关系。假设在一个AS内部有n台路由器,那么应该建立的IBGP连接数就为n(n-1)/2。当IBGP对等体数目很多时,对网络资源和CPU资源的消耗都很大。
利用路由反射可以解决这一问题。在一个AS内,其中一台路由器作为RR(Route Reflector,路由反射器),作为客户机(Client)的路由器与路由反射器之间建立IBGP连接。路由反射器从客户机接收到路由后,将其传递(反射)给所有其他的客户机,从而保证客户机之间不需要建立BGP连接,就可以学习到彼此的路由。
既不是路由反射器也不是客户机的BGP路由器被称为非客户机(Non-client)。非客户机与路由反射器之间,以及所有的非客户机之间仍然必须建立全连接关系。其示意图如图1-8所示。
路由反射器及其客户机形成了一个集群。通常情况下,一个集群中只有一个路由反射器,该反射器的Router ID就作为集群ID,用于识别该群。如图1-9所示,为了提高网络的可靠性、避免单点故障,一个集群中可以设置多个路由反射器。此时,集群中所有路由反射器上都需要配置相同的集群ID,以便集群具有统一的标识,避免路由环路的产生。
如果配置了路由反射器后,由于组网需要在路由反射器的客户机之间又建立了全连接,则客户机之间可以直接交换路由信息,客户机到客户机之间的路由反射是没有必要的。此时,不需要修改网络配置或改变网络拓扑,只需在路由反射器上通过相关命令禁止其在客户机之间反射路由,就可以避免路由反射,减少占用的带宽资源。
禁止客户机之间的路由反射后,客户机到非客户机之间的路由仍然可以被反射。
在某些特殊组网中,需要在不同AS域中的边界设备间建立EBGP对等体的全连接关系。当对等体数目很多时,全连接对网络资源和设备性能的消耗很大。
利用Route Server功能可以解决这一问题。如图1-10所示,配置一台设备作为Route Server,需要建立全连接的边界设备与Route Server建立对等体,这些边界设备将作为Route Server的客户机。Route Server设备向客户机发送路由时,不修改路由的AS_Path、Next_Hop和MED属性,使客户机之间不需要建立EBGP全连接也能学习到彼此的路由,客户机之间的流量转发也不需要经过Route Server设备。
图1-10 Route Server功能示意图
联盟(Confederation)是处理自治系统内部的IBGP网络连接激增的另一种方法,它将一个自治系统划分为若干个子自治系统,每个子自治系统内部的IBGP对等体建立全连接关系,子自治系统之间建立联盟内部EBGP连接关系。其示意图如图1-11所示。
在不属于联盟的BGP发言者看来,属于同一个联盟的多个子自治系统是一个整体,外界不需要了解内部的子自治系统情况,联盟ID就是标识联盟这一整体的自治系统号,如上图中的AS 200就是联盟ID。
联盟的缺陷是从非联盟方案向联盟方案转变时,要求路由器重新进行配置,逻辑拓扑也要改变。
在大型BGP网络中,路由反射器和联盟可以被同时使用。
BGP-4只能传递IPv4单播的路由信息,不能传递其它网络层协议(如IPv6等)的路由信息。
为了提供对多种网络层协议的支持,IETF对BGP-4进行了扩展,形成MP-BGP(Multiprotocol Border Gateway Protocol,多协议边界网关协议)。MP-BGP可以为多种网络层协议传递路由信息。
· IPv6单播
通过MP-BGP发布和维护IPv6单播路由前缀信息。
· IPv4组播/IPv6组播
组播路由协议PIM(Protocol Independent Multicast,协议无关组播)根据单播静态路由或者任意单播路由协议(包括RIP、OSPF、IS-IS、BGP等)所生成的单播路由表进行RPF(Reverse Path Forwarding,逆向路径转发)检查,以创建组播路由表项,从而进行组播报文的转发。组播转发路径与单播转发路径是一致的。但是,在某些情况下,组播网络拓扑和单播网络拓扑有可能不同;有些用户希望组播转发路径不同于单播转发路径,以便分别对组播流量和单播流量进行管理和控制。
MP-BGP对IPv4组播/IPv6组播的扩展,称为MBGP(Multicast BGP,组播BGP),它通过MP-BGP传递用于RPF检查的路由信息,并将该信息保存在独立的组播BGP路由表中,以实现单播转发和组播转发的隔离,使得组播转发路径可以不同于单播转发路径。
有关组播、PIM和RPF检查的详细介绍,请参见“IP组播配置指导”。
· VPNv4/VPNv6
通过MP-BGP发布和维护VPNv4/VPNv6路由前缀信息,详细介绍请参见“MPLS配置指导”中的“MPLS L3VPN”和“IPv6 MPLS L3VPN”。
· 带标签的IPv4单播/IPv6单播
通过MP-BGP发布和维护IPv4单播/IPv6单播路由前缀的同时,还发布为该路由前缀分配的MPLS标签。带标签的IPv4单播路由主要应用于MPLS L3VPN的跨域VPN-OptionC组网中;带标签的IPv6单播路由主要应用于6PE和MPLS L3VPN的跨域VPN-OptionC组网中。跨域VPN-OptionC组网的详细介绍,请参见“MPLS配置指导”中的“MPLS L3VPN”。
可通过如下两种方式发布带标签的IPv4单播路由:
¡ 在BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图下使能交换带标签路由能力。
¡ 创建BGP IPv4单播标签地址族或BGP-VPN IPv4单播标签地址族,并在该地址族下进行路由的转发和发布。
这两种方式的效果相同,需要注意的是:
¡ 这两种方式不能同时配置,即BGP IPv4单播地址族视图下使能交换带标签路由功能与创建BGP IPv4单播标签地址族互斥;BGP-VPN IPv4单播地址族视图下使能交换带标签路由功能与创建BGP-VPN IPv4单播标签地址族互斥。
¡ BGP IPv4单播标签地址族/BGP-VPN IPv4单播标签地址族中的BGP路由只有在配置了BGP IPv4单播路由和BGP IPv4单播标签路由的引入功能后,才能添加到IP路由表中,BGP IPv4单播地址族/BGP-VPN IPv4单播地址族中的带标签IPv4路由能够自动添加到IP路由表中。
¡ 设备需要具有MPLS标签分配能力,才能为BGP IPv4单播标签地址族/BGP-VPN IPv4单播标签地址族中的BGP路由分配标签,并发布这些路由。否则,设备不会向对等体发布BGP IPv4单播标签路由。具体配置请参见“MPLS配置指导”。
目前,设备仅支持通过在BGP IPv6单播地址族视图或BGP-VPN IPv6单播地址族视图下使能交换带标签路由能力,来发布带标签的IPv6单播路由。
· L2VPN
通过MP-BGP发布和维护标签块信息和远端邻居信息,详细介绍请参见“MPLS配置指导”中的“MPLS L2VPN”和“VPLS”。
· IPv4 MDT
通过MP-BGP发布和维护包含PE地址及PE所在的Default-group等信息的MDT信息,以便组播VPN根据MDT信息在公网上建立以PE为根(即组播源)的Default-MDT。详细介绍请参见“IP组播配置指导”中的“组播VPN”。
· MVPN
通过MP-BGP发布和维护MVPN路由信息。在组播VPN的RSVP-TE模式中,设备根据MVPN路由信息建立相容性隧道和选择性隧道,详细介绍请参见“IP组播配置指导”中的“组播VPN”。
· EVPN
通过MP-BGP发布和维护EVPN路由信息,以实现自动发现VTEP、自动建立和关联VXLAN隧道、通告MAC地址和ARP信息。详细介绍请参见“EVPN配置指导”中的“EVPN”。
路由信息中与网络层协议相关的关键信息包括路由前缀和下一跳地址。BGP-4通过Update消息中的NLRI(Network Layer Reachability Information,网络层可达性信息)字段携带可达路由的前缀信息,Withdrawn Routes字段携带不可达路由的前缀信息,NEXT_HOP属性携带下一跳地址信息。NLRI字段、Withdrawn Routes字段和NEXT_HOP属性不易于扩展,无法携带多种网络层协议的信息。
为实现对多种网络层协议的支持,MP-BGP定义了两个新的路径属性:
· MP_REACH_NLRI(Multiprotocol Reachable NLRI,多协议可达NLRI):用于携带多种网络层协议的可达路由前缀及下一跳地址信息,以便向邻居发布该路由。
· MP_UNREACH_NLRI(Multiprotocol Unreachable NLRI,多协议不可达NLRI):用于携带多种网络层协议的不可达路由前缀信息,以便撤销该路由。
MP-BGP通过上述两个路径属性传递不同网络层协议的可达路由和不可达路由信息。不支持MP-BGP的BGP发言者接收到带有这两个属性的Update消息后,忽略这两个属性,不把它们传递给其它邻居。
MP-BGP采用地址族(Address Family)和子地址族(Subsequent Address Family)来区分MP_REACH_NLRI属性、MP_UNREACH_NLRI属性中携带路由信息所属的网络层协议。例如,如果MP_REACH_NLRI属性中AFI(Address Family Identifier,地址族标识符)为2、SAFI(Subsequent Address Family Identifier,子地址族标识符)为1,则表示该属性中携带的是IPv6单播路由信息。关于地址族的一些取值可以参考RFC 1700。
MP-BGP支持IPvX(X可以为4或6)对等体之间交互IPv4和IPv6路由,即IPv4对等体之间除了交互IPv4路由以外还可以交互IPv6路由,IPv6对等体之间除了交互IPv6路由以外还可以交互IPv4路由:
· IPv6路由的下一跳为IPv4地址时,MP-BGP将此IPv4地址映射为IPv6地址封装在Update报文的Next-Hop属性中。此时,需要配置路由策略,将IPv6路由的下一跳地址修改为对端设备的IPv6地址,否则无法正常进行路由迭代。
· IPv4路由的下一跳为IPv6地址时,需要BGP会话协商支持扩展IPv6下一跳能力,将IPv4 NLRI封装在MP_REACH_NLRI属性中。此时,需要配置路由策略,将IPv4路由的下一跳地址修改为对端设备的IPv4地址,否则无法正常进行路由迭代。
图1-12 MP-BGP支持BGP IPvX会话承载IPv4和IPv6路由
以图1-12为例,Device B和Device C之间仅建立BGP IPv6会话,Device A和DeviceB、Device C和Device D之间同时建立BGP IPv4和BGP IPv6会话,Device A和Device D可以学习到对方的IPv4和IPv6路由并且两个地址族下的流量都能正常互通。当Device C收到Device B发布的IPv4路由时,下一跳为Device B的IPv6地址,需要在Device C上配置路由策略将这类路由的下一跳属性修改为Device B上出接口Port A的IPv4地址10.1.1.1/24,反之同理。
一台BGP路由器上可以同时启动多个BGP进程,每个BGP进程对应一个BGP实例。BGP为不同的BGP实例维护独立的路由表。
BGP对BGP多实例具有如下要求:
· 一个BGP实例下可以创建多个公网地址族,但不同BGP实例下不能创建相同的公网地址族(IPv4单播地址族、IPv6单播地址族、VPNv4地址族、VPNv6地址族、VPNv4 Flowspec地址族、VPNv6 Flowspec地址族、IPv4 RT-Filter地址族、IPv4 SR Policy地址族以及IPv6 SR Policy地址族除外)。
· 一个BGP实例下可以创建多个VPN实例,每个VPN实例下可以创建多个地址族,但不同BGP实例下不能创建相同的VPN实例。
· 不能通过公网内的不同BGP实例与相同地址的对等体建立BGP会话。
· IPv4组播与IPv6组播地址族同时配置时,只能配置在一个BGP实例下。
· 不同BGP实例对应的AS号可以相同,不同BGP实例的实例名称不能相同。
设备为BGP定义了多种视图,分别用来管理不同BGP实例、不同地址族及不同VPN实例的路由信息。BGP支持VPN多实例,可以为不同的VPN实例维护独立的路由表。
大多数BGP配置命令可以在多个视图下执行,不同视图下命令的作用范围有所不同,详细介绍如表1-2所示。
表1-2 BGP相关视图介绍
视图名称 |
进入视图方法 |
说明 |
BGP实例视图 |
执行bgp命令时,可以通过instance参数指定BGP实例名称,以便进入指定BGP实例的视图,该视图下有些配置对指定BGP实例的公网和所有VPN实例内所有地址族的路由和对等体生效(如联盟、GR、日志功能的配置等),有些配置只对指定BGP实例的公网内所有地址族的路由和对等体生效 |
|
BGP IPv4单播地址族视图 |
该视图下的配置对指定BGP实例的公网内的IPv4单播路由和对等体生效 |
|
BGP IPv6单播地址族视图 |
该视图下的配置对指定BGP实例的公网内的IPv6单播路由和对等体生效 |
|
BGP IPv4单播标签地址族视图 |
该视图下的配置对指定BGP实例的公网内的IPv4单播标签路由和对等体生效 |
|
BGP IPv4组播地址族视图 |
该视图下的配置对指定BGP实例的IPv4组播路由和对等体生效 |
|
BGP IPv6组播地址族视图 |
该视图下的配置对指定BGP实例的IPv6组播路由和对等体生效 |
|
BGP VPNv4地址族视图 |
该视图下的配置对指定BGP实例的VPNv4路由和对等体生效 BGP VPNv4地址族视图的配置请参见“MPLS配置指导”中的“MPLS L3VPN” |
|
BGP VPNv6地址族视图 |
该视图下的配置对指定BGP实例的VPNv6路由和对等体生效 BGP VPNv6地址族视图的配置请参见“MPLS配置指导”中的“IPv6 MPLS L3VPN” |
|
BGP L2VPN地址族视图 |
该视图下的配置对指定BGP实例的L2VPN对等体和L2VPN信息生效 BGP L2VPN地址族视图的配置请参见“MPLS配置指导”中的“MPLS L2VPN”和“VPLS” |
|
BGP EVPN地址族视图 |
该视图下的配置对指定BGP实例的EVPN路由和对等体生效 BGP EVPN地址族的配置请参见“EVPN配置指导”中的“EVPN” |
|
BGP-VPN实例视图 |
该视图下的配置对指定BGP实例的指定VPN实例内所有地址族的路由和对等体生效 VPN实例的详细介绍,请参见“MPLS配置指导”中的“MPLS L3VPN” |
|
BGP-VPN IPv4单播地址族视图 |
该视图下的配置对指定BGP实例的指定VPN实例内的IPv4单播路由和对等体生效 VPN实例的详细介绍,请参见“MPLS配置指导”中的“MPLS L3VPN” |
|
BGP-VPN IPv6单播地址族视图 |
该视图下的配置对指定BGP实例的指定VPN实例内的IPv6单播路由和对等体生效 VPN实例的详细介绍,请参见“MPLS配置指导”中的“MPLS L3VPN” |
|
BGP-VPN IPv4单播标签地址族视图 |
该视图下的配置对指定BGP实例的指定VPN实例内的IPv4单播标签路由和对等体生效 |
|
BGP-VPN VPNv4地址族视图 |
该视图下的配置对指定BGP实例的指定VPN实例内的VPNv4路由和对等体生效 BGP-VPN VPNv4地址族视图的配置请参见“MPLS配置指导”中的“MPLS L3VPN” |
|
BGP MDT地址族视图 |
该视图下的配置对指定BGP实例的MDT路由和对等体生效 BGP MDT地址族的配置请参见“IP组播配置指导”中的“组播VPN” |
|
BGP IPv4 MVPN地址族视图 |
该视图下的配置对指定BGP实例的MVPN路由和对等体生效 BGP IPv4 MVPN地址族的配置请参见“IP组播配置指导”中的“组播VPN” |
|
BGP IPv6 MVPN地址族视图 |
该视图下的配置对指定BGP实例的IPv6 MVPN路由和对等体生效 BGP IPv6 MVPN地址族的配置请参见“IP组播配置指导”中的“组播VPN” |
|
BGP LS地址族视图 |
该视图下的配置对指定BGP实例的公网LS信息和对等体生效 |
|
BGP-VPN LS地址族视图 |
该视图下的配置对指定BGP实例的私网LS信息和对等体生效 |
|
BGP IPv4 RT-Filter地址族视图 |
该视图下的配置对指定BGP实例的IPv4 RT-Filter路由和对等体生效 BGP IPv4 RT-Filter地址族视图的配置请参见“MPLS配置指导”中的“MPLS L3VPN” |
|
BGP IPv4 SR Policy地址族视图 |
该视图下的配置对指定BGP实例的IPv4 SR Policy路由和对等体生效 BGP IPv4 SR Policy地址族视图的配置请参见“Segment Routing配置指导”中的“SR-MPLS TE Policy” |
|
BGP IPv6 SR Policy地址族视图 |
该视图下的配置对指定BGP实例的IPv6 SR Policy路由和对等体生效 BGP IPv6 SR Policy地址族视图的配置请参见“Segment Routing配置指导”中的“SRv6 TE Policy” |
与BGP相关的协议规范有:
· RFC 1700:ASSIGNED NUMBERS
· RFC 1997:BGP Communities Attribute
· RFC 2439:BGP Route Flap Damping
· RFC 2545:Use of BGP-4 Multiprotocol Extensions for IPv6 Inter-Domain Routing
· RFC 2918:Route Refresh Capability for BGP-4
· RFC 3107:Carrying Label Information in BGP-4
· RFC 4271:A Border Gateway Protocol 4 (BGP-4)
· RFC 4275:BGP-4 MIB Implementation Survey
· RFC 4277:Experience with the BGP-4 Protocol
· RFC 4360:BGP Extended Communities Attribute
· RFC 4364:BGP/MPLS IP Virtual Private Networks (VPNs)
· RFC 4382:MPLS/BGP Layer 3 Virtual Private Network (VPN) Management
· RFC 4451:BGP MULTI_EXIT_DISC (MED) Considerations
· RFC 4456:BGP Route Reflection: An Alternative to Full Mesh Internal BGP
· RFC 4486:Subcodes for BGP Cease Notification Message
· RFC 4659:BGP-MPLS IP Virtual Private Network (VPN) Extension for IPv6 VPN
· RFC 4684:Constrained Route Distribution for Border Gateway Protocol/MultiProtocol Label Switching (BGP/MPLS) Internet Protocol (IP) Virtual Private Networks (VPNs)
· RFC 4724:Graceful Restart Mechanism for BGP
· RFC 4760:Multiprotocol Extensions for BGP-4
· RFC 4781:Graceful Restart Mechanism for BGP with MPLS
· RFC 5004:Avoid BGP Best Path Transitions from One External to Another
· RFC 5065:Autonomous System Confederations for BGP
· RFC 5082:The Generalized TTL Security Mechanism (GTSM)
· RFC 5291:Outbound Route Filtering Capability for BGP-4
· RFC 5292:Address-Prefix-Based Outbound Route Filter for BGP-4
· RFC 5492:Capabilities Advertisement with BGP-4
· RFC 5549:Advertising IPv4 Network Layer Reachability Information with an IPv6 Next Hop
· RFC 5668:4-Octet AS Specific BGP Extended Community
· RFC 6037:Cisco Systems' Solution for Multicast in BGP MPLS IP VPNs
· RFC 6198:Requirements for the Graceful Shutdown of BGP Sessions
· RFC 6368:Internal BGP as the Provider/Customer Edge Protocol for BGP/MPLS IP
· RFC 6513:Multicast in MPLS/BGP IP VPNs
· RFC 6514:BGP Encodings and Procedures for Multicast in MPLS/BGP IP VPNs
· RFC 6515:IPv4 and IPv6 Infrastructure Addresses in BGP Updates for Multicast VPN
· RFC 6608:Subcodes for BGP Finite State Machine Error
· RFC 6624:Layer 2 Virtual Private Networks Using BGP for Auto-Discovery and Signaling
· RFC 6793:BGP Support for Four-Octet Autonomous System (AS) Number Space
· RFC 6811:BGP Prefix Origin Validation
· RFC 7311:The Accumulated IGP Metric Attribute for BGP
· RFC 7432:BGP MPLS-Based Ethernet VPN
· RFC 7752:North-Bound Distribution of Link-State and Traffic Engineering (TE) Information Using BGP
· RFC 7854:BGP Monitoring Protocol (BMP)
· RFC 7911:Advertisement of Multiple Paths in BGP
· RFC 7947:Internet Exchange BGP Route Server
· RFC 8277:Using BGP to Bind MPLS Labels to Address Prefixes
IPv4单播/IPv4组播的BGP配置任务如下:
(1) 配置BGP基本功能
a. 启动BGP
b. 手工创建BGP对等体
c. 动态创建BGP对等体
d. 配置IBGP对等体组
在大规模的BGP网络中可通过配置BGP对等体组简化配置。
e. 配置EBGP对等体组
在大规模的BGP网络中可通过配置BGP对等体组简化配置。
f. (可选)配置建立TCP连接使用的源地址
配置BGP发布本地网段路由和配置BGP引入IGP路由协议的路由用于控制BGP路由信息的生成,请至少选择其中一项任务进行配置。
¡ (可选)配置BGP引入公网或VPN实例下的路由
¡ (可选)配置BGP路由聚合
¡ (可选)配置发布IP路由表中的最优路由
IPv4组播不支持配置发布IP路由表中的最优路由。
¡ (可选)配置向对等体/对等体组发送缺省路由
¡ (可选)限制从BGP对等体/对等体组接收的路由数量
¡ (可选)配置BGP IPv4单播路由和BGP IPv4单播标签路由的引入功能
¡ (可选)配置优先发送缺省路由的撤销消息
¡ (可选)配置优先发送指定路由的撤销消息
¡ (可选)配置BGP路由信息的发布策略
¡ (可选)配置BGP新增路由发布速率
仅对IPv4单播路由生效。
¡ (可选)配置BGP路由信息的接收策略
¡ (可选)配置BGP更新消息延迟发布
¡ (可选)配置设备启动时为BGP路由应用启动策略
¡ (可选)配置SoO属性
¡ (可选)配置链路带宽属性
(3) (可选)配置BGP定时器
(4) (可选)配置BGP日志和告警功能
IPv6单播/IPv6组播的BGP配置任务如下:
(1) 配置BGP基本功能
a. 启动BGP
b. 手工创建BGP对等体
c. 动态创建BGP对等体
d. 配置IBGP对等体组
在大规模的BGP网络中可通过配置BGP对等体组简化配置。
e. 配置EBGP对等体组
在大规模的BGP网络中可通过配置BGP对等体组简化配置。
f. (可选)配置建立TCP连接使用的源地址
配置BGP发布本地网段路由和配置BGP引入IGP路由协议的路由用于控制BGPl路由信息的生成,请至少选择其中一项任务进行配置。
¡ (可选)配置BGP路由聚合
¡ (可选)配置发布IP路由表中的最优路由
IPv6组播不支持配置发布IP路由表中的最优路由。
¡ (可选)配置向对等体/对等体组发送缺省路由
¡ (可选)限制从BGP对等体/对等体组接收的路由数量
¡ (可选)配置优先发送缺省路由的撤销消息
¡ (可选)配置优先发送指定路由的撤销消息
¡ (可选)配置BGP路由信息的发布策略
¡ (可选)配置BGP新增路由发布速率
仅对IPv6单播路由生效。
¡ (可选)配置BGP路由信息的接收策略
¡ (可选)配置BGP更新消息延迟发布
¡ (可选)配置设备启动时为BGP路由应用启动策略
¡ (可选)配置SoO属性
¡ (可选)配置链路带宽属性
(3) (可选)配置BGP定时器
(4) (可选)配置BGP日志和告警功能
如果要在BGP实例下运行BGP协议,则必须为BGP实例指定Router ID。Router ID用来在一个自治系统中唯一的标识一台路由器。
· 用户可以在启动BGP实例进入BGP实例视图后指定该实例的Router ID。不同BGP实例的Router ID可以相同。配置时,必须保证自治系统中任意两台路由器的Router ID都不相同。通常的做法是将路由器的Router 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) 进入系统视图。
system-view
(2) 配置全局Router ID。
router id router-id
缺省情况下,未配置全局Router ID。
如果未配置全局Router ID,则按照下面的规则进行选择:
¡ 如果存在配置IP地址的Loopback接口,则选择Loopback接口地址中最大的作为Router ID。
¡ 如果所有Loopback接口都未配置IP地址,则从其他接口的IP地址中选择最大的作为Router ID(不考虑接口的up/down状态)。
(3) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
缺省情况下,没有运行BGP,不存在BGP实例。
(4) (可选)为指定的BGP实例配置路由器的Router ID。
router-id router-id
缺省情况下,未配置BGP路由器在BGP实例内的Router ID,此时BGP路由器的Router ID为系统视图下通过router id命令配置的全局Router ID。
(5) (可选)进入BGP-VPN实例视图。
ip vpn-instance vpn-instance-name
进入BGP-VPN实例视图时,指定的VPN实例必须已经创建,且VPN实例内必须配置RD(Route Distinguisher,路由标识符)。
(6) (可选)为指定的VPN实例配置路由器的Router ID。
router-id { router-id | auto-select }
缺省情况下,未配置BGP路由器在VPN实例内的Router ID。
如果在BGP实例视图下执行了router-id命令,则BGP路由器在VPN实例内的Router ID为该命令配置的Router ID;否则,为系统视图下由router id命令配置的全局Router ID。
当通过IPv6链路本地地址创建对等体或向对等体组中添加指定的对等体时,必须使用直连接口建立对等关系,且必须通过peer connect-interface命令将本地直连出接口指定为建立TCP连接使用的源接口。
配置IPv6对等体交互IPv4单播路由或IPv4对等体交互IPv6路由时,必须配置路由策略修改从对等体收到路由的下一跳:将从对等体收到的IPv4路由的下一跳修改为对端出接口的IPv4地址,IPv6路由的下一跳修改为对端出接口的IPv6地址,否则转发时不能迭代出正确的下一跳。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 创建IPv4 BGP对等体,并指定对等体的AS号。
peer ipv4-address as-number as-number
(4) (可选)配置对等体的描述信息。
peer ipv4-address description text
缺省情况下,对等体没有描述信息。
(5) 创建BGP IPv4单播地址族或BGP-VPN IPv4单播地址族,并进入相应地址族视图。
address-family ipv4 [ unicast ]
(6) 允许本地路由器与指定对等体交换IPv4单播路由信息。
peer ipv4-address enable
缺省情况下,本地路由器不能与对等体交换IPv4单播路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 创建IPv4 BGP对等体,并指定对等体的AS号。
peer ipv4-address as-number as-number
(4) (可选)配置对等体的描述信息。
peer ipv4-address description text
缺省情况下,对等体没有描述信息。
(5) 创建BGP IPv6单播地址族,并进入相应地址族视图。
address-family ipv6 [ unicast ]
(6) 允许本地路由器与指定对等体交换IPv6单播路由信息。
peer ipv4-address enable
缺省情况下,本地路由器不能与对等体交换IPv6单播路由信息。
(7) 为IPv4对等体设置基于路由策略的路由修改下一跳策略。
peer ipv4-address route-policy route-policy-name import
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 创建IPv6 BGP对等体,并指定对等体的AS号。
peer ipv6-address as-number as-number
(4) (可选)配置对等体的描述信息。
peer ipv6-address description text
缺省情况下,对等体没有描述信息。
(5) 创建BGP IPv6单播地址族或BGP-VPN IPv6单播地址族,并进入相应地址族视图。
address-family ipv6 [ unicast ]
(6) 允许本地路由器与指定对等体交换IPv6单播路由信息。
peer ipv6-address enable
缺省情况下,本地路由器不能与对等体/对等体组交换IPv6单播路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 创建IPv6 BGP对等体,并指定对等体的AS号。
peer ipv6-address as-number as-number
(4) (可选)配置对等体的描述信息。
peer ipv6-address description text
缺省情况下,对等体没有描述信息。
(5) 创建BGP IPv4单播地址族,并进入相应地址族视图。
address-family ipv4 [ unicast ]
(6) 允许本地路由器与指定对等体交换IPv4单播路由信息。
peer ipv6-address enable
缺省情况下,本地路由器不能与对等体交换IPv4单播路由信息。
(7) 为IPv6对等体设置基于路由策略的路由修改下一跳策略。
peer ipv6-address route-policy route-policy-name import
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 创建IPv4 BGP对等体,并指定对等体的AS号。
peer ipv4-address as-number as-number
(4) (可选)配置对等体的描述信息。
peer ipv4-address mask-length description text
缺省情况下,动态对等体没有描述信息。
(5) 创建BGP IPv4单播标签地址族或BGP-VPN IPv4单播标签地址族,并进入相应地址族视图。
address-family ipv4 labeled-unicast
(6) 允许本地路由器与指定对等体交换IPv4单播标签路由信息。
peer ipv4-address enable
缺省情况下,本地路由器不能与对等体交换IPv4单播标签路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 创建IPv4 BGP对等体,并指定对等体的AS号。
peer ipv4-address as-number as-number
(4) (可选)配置对等体的描述信息。
peer ipv4-address description text
缺省情况下,对等体没有描述信息。
(5) 创建BGP IPv4组播地址族,并进入BGP IPv4组播地址族视图。
address-family ipv4 multicast
(6) 允许本地路由器与指定对等体交换用于RPF检查的IPv4单播路由信息。
peer ipv4-address enable
缺省情况下,本地路由器不能与对等体交换用于RPF检查的IPv4单播路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 创建IPv4 BGP对等体,并指定对等体的AS号。
peer ipv4-address as-number as-number
(4) (可选)配置对等体的描述信息。
peer ipv4-address description text
缺省情况下,对等体没有描述信息。
(5) 创建BGP IPv6组播地址族,并进入BGP IPv6组播地址族视图。
address-family ipv6 multicast
(6) 允许本地路由器与指定对等体交换用于RPF检查的IPv6单播路由信息。
peer ipv4-address enable
缺省情况下,本地路由器不能与对等体交换用于RPF检查的IPv6单播路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 创建IPv6 BGP对等体,并指定对等体的AS号。
peer ipv6-address as-number as-number
(4) (可选)配置对等体的描述信息。
peer ipv6-address description text
缺省情况下,对等体没有描述信息。
(5) 创建BGP IPv4组播地址族,并进入BGP IPv4组播地址族视图。
address-family ipv4 multicast
(6) 允许本地路由器与指定对等体交换用于RPF检查的IPv4单播路由信息。
peer ipv6-address enable
缺省情况下,本地路由器不能与对等体/对等体组交换用于RPF检查的IPv4单播路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 创建IPv6 BGP对等体,并指定对等体的AS号。
peer ipv6-address as-number as-number
(4) (可选)配置对等体的描述信息。
peer ipv6-address description text
缺省情况下,对等体没有描述信息。
(5) 创建BGP IPv6组播地址族,并进入BGP IPv6组播地址族视图。
address-family ipv6 multicast
(6) 允许本地路由器与指定对等体交换用于RPF检查的IPv6单播路由信息。
peer ipv6-address enable
缺省情况下,本地路由器不能与对等体/对等体组交换用于RPF检查的IPv6单播路由信息。
设备需要和大量的邻居建立对等体关系时,如果逐个配置对等体关系,则配置工作量大,新增或者删除对等体的维护、升级工作难度较大,且容易出错。
如果设备的邻居位于同一个网段内,则可以通过BGP动态对等体功能简化配置。在设备上简单地配置一个网段地址内的邻居作为动态对等体,就可以接受来自该网段内的所有邻居的连接请求,并与其建立对等体关系。只有当邻居发起连接请求时,本地才会维护与该邻居的对等体关系;否则,不维护对等体关系。BGP动态对等体功能既简化了配置,又大大降低了维护和升级成本。
配置动态对等体时,设备和邻居只能有一端配置网段地址,另一端必须配置实际IP地址。
当通过IPv6链路本地地址创建对等体或向对等体组中添加指定的对等体时,必须使用直连接口建立对等关系,且必须通过peer connect-interface命令将本地直连出接口指定为建立TCP连接使用的源接口。
配置IPv6对等体交互IPv4单播路由或IPv4对等体交互IPv6路由时,必须配置路由策略修改从对等体收到路由的下一跳:将从对等体收到的IPv4路由的下一跳修改为对端出接口的IPv4地址,IPv6路由的下一跳修改为对端出接口的IPv6地址,否则转发时不能迭代出正确的下一跳。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 创建IPv4 BGP动态对等体,并指定对等体的AS号。
peer ipv4-address mask-length as-number as-number
(4) (可选)配置对等体的描述信息。
peer ipv4-address mask-length description text
缺省情况下,动态对等体没有描述信息。
(5) 创建BGP IPv4单播地址族或BGP-VPN IPv4单播地址族,并进入相应地址族视图。
address-family ipv4 [ unicast ]
(6) 允许本地路由器与指定动态对等体交换IPv4单播路由信息。
peer ipv4-address mask-length enable
缺省情况下,本地路由器不能与动态对等体交换IPv4单播路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图
bgp as-number [ instance instance-name ]
(3) 创建IPv4 BGP动态对等体,并指定对等体的AS号。
peer ipv4-address mask-length as-number as-number
(4) (可选)配置对等体的描述信息。
peer ipv4-address mask-length description text
缺省情况下,动态对等体没有描述信息。
(5) 创建BGP IPv6单播地址族,并进入相应地址族视图。
address-family ipv6 [ unicast ]
(6) 允许本地路由器与指定对等体交换IPv6单播路由信息。
peer ipv4-address mask-length enable
缺省情况下,本地路由器不能与动态对等体交换IPv6单播路由信息。
(7) 为BGP IPv4动态对等体设置基于路由策略的路由修改下一跳策略。
peer ipv4-address mask-length route-policy route-policy-name import
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 创建IPv6 BGP动态对等体,并指定对等体的AS号。
peer ipv6-address prefix-length as-number as-number
(4) (可选)配置动态对等体的描述信息。
peer ipv6-address prefix-length description text
缺省情况下,动态对等体没有描述信息。
(5) 创建BGP IPv6单播地址族或BGP-VPN IPv6单播地址族,并进入相应地址族视图。
address-family ipv6 [ unicast ]
(6) 允许本地路由器与指定动态对等体交换IPv6单播路由信息。
peer ipv6-address prefix-length enable
缺省情况下,本地路由器不能与动态对等体交换IPv6单播路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 创建IPv6 BGP动态对等体,并指定对等体的AS号。
peer ipv6-address prefix-length as-number as-number
(4) (可选)配置动态对等体的描述信息。
peer ipv6-address prefix-length description text
缺省情况下,动态对等体没有描述信息。
(5) 创建BGP IPv4单播地址族,并进入相应地址族视图。
address-family ipv4 [ unicast ]
(6) 允许本地路由器与指定对等体交换IPv4单播路由信息。
peer ipv6-address prefix-length enable
缺省情况下,本地路由器不能与动态对等体交换IPv4单播路由信息。
(7) 为BGP IPv6动态对等体设置基于路由策略的路由修改下一跳策略。
peer ipv6-address prefix-length route-policy route-policy-name import
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 创建IPv4 BGP动态对等体,并指定对等体的AS号。
peer ipv4-address mask-length as-number as-number
(4) (可选)配置对等体的描述信息。
peer ipv4-address mask-length description text
缺省情况下,动态对等体没有描述信息。
(5) 创建BGP IPv4单播标签地址族或BGP-VPN IPv4单播标签地址族,并进入相应地址族视图。
address-family ipv4 labeled-unicast
(6) 允许本地路由器与指定动态对等体交换IPv4单播标签路由信息。
peer ipv4-address mask-length enable
缺省情况下,本地路由器不能与动态对等体交换IPv4单播标签路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 创建IPv4 BGP动态对等体,并指定对等体的AS号。
peer ipv4-address mask-length as-number as-number
(4) (可选)配置动态对等体的描述信息。
peer ipv4-address mask-length description text
缺省情况下,对等体没有描述信息。
(5) 创建BGP IPv4组播地址族,并进入BGP IPv4组播地址族视图。
address-family ipv4 multicast
(6) 允许本地路由器与指定动态对等体交换用于RPF检查的IPv4单播路由信息。
peer ipv4-address mask-length enable
缺省情况下,本地路由器不能与动态对等体交换用于RPF检查的IPv4单播路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 创建IPv4 BGP动态对等体,并指定对等体的AS号。
peer ipv4-address mask-length as-number as-number
(4) (可选)配置动态对等体的描述信息。
peer ipv4-address mask-length description text
缺省情况下,对等体没有描述信息。
(5) 创建BGP IPv6组播地址族,并进入BGP IPv6组播地址族视图。
address-family ipv6 multicast
(6) 允许本地路由器与指定动态对等体交换用于RPF检查的IPv6单播路由信息。
peer ipv4-address mask-length enable
缺省情况下,本地路由器不能与动态对等体交换用于RPF检查的IPv6单播路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 创建IPv6 BGP动态对等体,并指定动态对等体的AS号。
peer ipv6-address prefix-length as-number as-number
(4) (可选)配置动态对等体的描述信息。
peer ipv6-address prefix-length description text
缺省情况下,对等体没有描述信息。
(5) 创建BGP IPv4组播地址族,并进入BGP IPv4组播地址族视图。
address-family ipv4 multicast
(6) 允许本地路由器与指定动态对等体交换用于RPF检查的IPv4单播路由信息。
peer ipv6-address prefix-length enable
缺省情况下,本地路由器不能与动态对等体/对等体组交换用于RPF检查的IPv4单播路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 创建IPv6 BGP动态对等体,并指定动态对等体的AS号。
peer ipv6-address prefix-length as-number as-number
(4) (可选)配置动态对等体的描述信息。
peer ipv6-address prefix-length description text
缺省情况下,对等体没有描述信息。
(5) 创建BGP IPv6组播地址族,并进入BGP IPv6组播地址族视图。
address-family ipv6 multicast
(6) 允许本地路由器与指定动态对等体交换用于RPF检查的IPv6单播路由信息。
peer ipv6-address prefix-length enable
缺省情况下,本地路由器不能与动态对等体/对等体组交换用于RPF检查的IPv6单播路由信息。
IBGP对等体组是指对等体组中的对等体与当前路由器位于同一AS。
创建IBGP对等体组后,系统在将对等体加入IBGP对等体组时,会自动在BGP实例视图下创建该对等体,并设置其AS号为本地AS号。
当通过IPv6链路本地地址创建对等体或向对等体组中添加指定的对等体时,必须使用直连接口建立对等关系,且必须通过peer connect-interface命令将本地直连出接口指定为建立TCP连接使用的源接口。
配置IPv6对等体交互IPv4单播路由或IPv4对等体交互IPv6路由时,必须配置路由策略修改从对等体收到路由的下一跳:将从对等体收到的IPv4路由的下一跳修改为对端出接口的IPv4地址,IPv6路由的下一跳修改为对端出接口的IPv6地址,否则转发时不能迭代出正确的下一跳。
如果分别对对等体组和对等体组中的对等体进行了某项BGP配置,则以最后一次配置为准。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number[ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 创建IBGP对等体组。
group group-name [ internal ]
(4) 向对等体组中添加指定的IPv4 BGP对等体。
peer ipv4-address [ mask-length ] group group-name [ as-number as-number ]
as-number as-number参数可选可不选,如果选择则必须和本地的AS号一致。
(5) (可选)配置对等体组的描述信息。
peer group-name description text
缺省情况下,对等体组没有描述信息。
(6) 创建BGP IPv4单播地址族或BGP-VPN IPv4单播地址族,并进入相应地址族视图。
address-family ipv4 [ unicast ]
(7) 允许本地路由器与指定对等体组中的对等体交换IPv4单播路由信息。
peer group-name enable
缺省情况下,本地路由器不能与对等体交换IPv4单播路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 创建IBGP对等体组。
group group-name [ internal ]
(4) 向对等体组中添加指定的IPv4 BGP对等体。
peer ipv4-address [ mask-length ] group group-name [ as-number as-number ]
as-number as-number参数可选可不选,如果选择则必须和本地的AS号一致。
(5) (可选)配置对等体组的描述信息。
peer group-name description text
缺省情况下,对等体组没有描述信息。
(6) 创建BGP IPv6单播地址族,并进入相应地址族视图。
address-family ipv6 [ unicast ]
允许本地路由器与指定对等体组中的对等体交换IPv6单播路由信息。
(7) peer group-name enable
缺省情况下,本地路由器不能与对等体交换IPv6单播路由信息。
(8) 为BGP IPv4对等体组设置基于路由策略的路由修改下一跳策略。
peer group-name route-policy route-policy-name import
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number[ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 创建IBGP对等体组。
group group-name [ internal ]
(4) 向对等体组中添加指定的IPv4 BGP对等体。
peer ipv4-address [ mask-length ] group group-name [ as-number as-number ]
as-number as-number参数可选可不选,如果选择则必须和本地的AS号一致。
(5) (可选)配置对等体组的描述信息。
peer group-name description text
缺省情况下,对等体组没有描述信息。
(6) 创建BGP IPv4单播标签地址族或BGP-VPN IPv4单播标签地址族,并进入相应地址族视图。
address-family ipv4 labeled-unicast
(7) 允许本地路由器与指定对等体组中的对等体交换IPv4单播标签路由信息。
peer group-name enable
缺省情况下,本地路由器不能与对等体交换IPv4单播标签路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 创建IBGP对等体组。
group group-name [ internal ]
(4) 向对等体组中添加指定的IPv4 BGP对等体。
peer ipv4-address [ mask-length ] group group-name [ as-number as-number ]
as-number as-number参数可选可不选,如果选择则必须和本地的AS号一致。
(5) (可选)配置对等体组的描述信息。
peer group-name description text
缺省情况下,对等体组没有描述信息。
(6) 创建BGP IPv4组播地址族,并进入BGP IPv4组播地址族视图。
address-family ipv4 multicast
(7) 允许本地路由器与指定对等体组中的对等体交换用于RPF检查的IPv4单播路由信息。
peer group-name enable
缺省情况下,本地路由器不能与对等体交换用于RPF检查的IPv4单播路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 创建IBGP对等体组。
group group-name [ internal ]
(4) 向对等体组中添加指定的IPv4 BGP对等体。
peer ipv4-address [ mask-length ] group group-name [ as-number as-number ]
as-number as-number参数可选可不选,如果选择则必须和本地的AS号一致。
(5) (可选)配置对等体组的描述信息。
peer group-name description text
缺省情况下,对等体组没有描述信息。
(6) 创建BGP IPv6组播地址族,并进入BGP IPv6组播地址族视图。
address-family ipv6 multicast
(7) 允许本地路由器与指定对等体组中的对等体交换用于RPF检查的IPv6单播路由信息。
peer group-name enable
缺省情况下,本地路由器不能与对等体交换用于RPF检查的IPv6单播路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 创建IBGP对等体组。
group group-name [ internal ]
(4) 向对等体组中添加指定的IPv6 BGP对等体。
peer ipv6-address [ prefix-length ] group group-name [ as-number as-number ]
as-number as-number参数可选可不选,如果选择则必须和本地的AS号一致。
(5) (可选)配置对等体组的描述信息。
peer group-name description text
缺省情况下,对等体组没有描述信息。
(6) 创建BGP IPv6单播地址族或BGP-VPN IPv6单播地址族,并进入相应地址族视图。
address-family ipv6 [ unicast ]
(7) 允许本地路由器与指定对等体组中的对等体交换IPv6单播路由信息。
peer group-name enable
缺省情况下,本地路由器不能与对等体交换IPv6单播路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 创建IBGP对等体组。
group group-name [ internal ]
(4) 向对等体组中添加指定的IPv6 BGP对等体。
peer ipv6-address [ prefix-length ] group group-name [ as-number as-number ]
as-number as-number参数可选可不选,如果选择则必须和本地的AS号一致。
(5) (可选)配置对等体组的描述信息。
peer group-name description text
缺省情况下,对等体组没有描述信息。
(6) 创建BGP IPv4单播地址族,并进入相应地址族视图。
address-family ipv4 [ unicast ]
(7) 允许本地路由器与指定对等体组中的对等体交换IPv4单播路由信息。
peer group-name enable
缺省情况下,本地路由器不能与对等体交换IPv4单播路由信息。
(8) 为BGP IPv6对等体组设置基于路由策略的路由修改下一跳策略。
peer group-name route-policy route-policy-name import
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 创建IBGP对等体组。
group group-name [ internal ]
(4) 向对等体组中添加指定的IPv6 BGP对等体。
peer ipv6-address [ prefix-length ] group group-name [ as-number as-number ]
as-number as-number参数可选可不选,如果选择则必须和本地的AS号一致。
(5) (可选)配置对等体组的描述信息。
peer group-name description text
缺省情况下,对等体组没有描述信息。
(6) 创建BGP IPv4组播地址族,并进入BGP IPv4组播地址族视图。
address-family ipv4 multicast
(7) 允许本地路由器与指定对等体组中的对等体交换用于RPF检查的IPv4单播路由信息。
peer group-name enable
缺省情况下,本地路由器不能与对等体交换用于RPF检查的IPv4单播路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 创建IBGP对等体组。
group group-name [ internal ]
(4) 向对等体组中添加指定的IPv6 BGP对等体。
peer ipv6-address [ prefix-length ] group group-name [ as-number as-number ]
as-number as-number参数可选可不选,如果选择则必须和本地的AS号一致。
(5) (可选)配置对等体组的描述信息。
peer group-name description text
缺省情况下,对等体组没有描述信息。
(6) 创建BGP IPv6组播地址族,并进入BGP IPv6组播地址族视图。
address-family ipv6 multicast
(7) 允许本地路由器与指定对等体组中的对等体交换用于RPF检查的IPv6单播路由信息。
peer group-name enable
缺省情况下,本地路由器不能与对等体交换用于RPF检查的IPv6单播路由信息。
EBGP对等体组是指对等体组中的对等体与当前路由器位于不同AS。
根据对等体组中的对等体是否属于同一个外部AS,EBGP对等体组又可以分为纯EBGP对等体组和混合EBGP对等体组。如果对等体组中的对等体属于同一个外部AS,该对等体组就是纯EBGP对等体组;如果对等体组中的对等体属于不同外部AS,该对等体组就是混合EBGP对等体组。
用户有三种方式配置EBGP对等体组:
· 第一种方式是创建对等体组后,先指定对等体组的AS号,再将对等体加入到对等体组中,该方式下加入的对等体具有相同的AS号,均为对等体组的AS号。对等体加入对等体组之前可以配置AS号,且为对等体配置的AS号必须与对等体组的AS号相同。
· 第二种方式是创建对等体组后,先配置对等体的AS号,再将对等体加入对等体组中。该方式下,对等体组中对等体的AS号可以相同也可以不同。
· 第三种方式是创建对等体组后,将对等体加入对等体组的同时指定AS号。该方式下,对等体组中对等体的AS号可以相同也可以不同。
配置IPv6对等体交互IPv4单播路由或IPv4对等体交互IPv6路由时,必须配置路由策略修改从对等体收到路由的下一跳:将从对等体收到的IPv4路由的下一跳修改为对端出接口的IPv4地址,IPv6路由的下一跳修改为对端出接口的IPv6地址,否则转发时不能迭代出正确的下一跳。
如果分别对对等体组和对等体组中的对等体进行了某项BGP配置,则以最后一次配置为准。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 创建EBGP对等体组。
group group-name external
(4) 指定对等体组的AS号。
peer group-name as-number as-number
缺省情况下,未指定对等体组的AS号。
如果对等体组中已经存在对等体,则不能改变该对等体组的AS号,也不能使用undo命令删除已指定的AS号。
(5) 向对等体组中添加指定的IPv4 BGP对等体。
peer ipv4-address [ mask-length ] group group-name [ as-number as-number ]
as-number as-number参数可选可不选,如果选择则必须和peer group-name as-number as-number命令中配置的一致。
(6) (可选)配置对等体组的描述信息。
peer group-name description text
缺省情况下,对等体组没有描述信息。
(7) 创建BGP IPv4单播地址族或BGP-VPN IPv4单播地址族,并进入相应地址族视图。
address-family ipv4 [ unicast ]
(8) 允许本地路由器与指定对等体组中的对等体交换IPv4单播路由信息。
peer group-name enable
缺省情况下,本地路由器不能与对等体交换IPv4单播路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 创建EBGP对等体组。
group group-name external
(4) 创建IPv4 BGP对等体,并指定对等体的AS号。
peer ipv4-address [ mask-length ] as-number as-number
(5) 向对等体组中添加指定的IPv4 BGP对等体。
peer ipv4-address [ mask-length ] group group-name [ as-number as-number ]
as-number as-number参数可选可不选,如果选择则必须和peer ipv4-address [ mask-length ] as-number as-number命令中配置的一致。
(6) (可选)配置对等体组的描述信息。
peer group-name description text
缺省情况下,对等体组没有描述信息。
(7) 创建BGP IPv4单播地址族或BGP-VPN IPv4单播地址族,并进入相应地址族视图。
address-family ipv4 [ unicast ]
(8) 允许本地路由器与指定对等体组中的对等体交换IPv4单播路由信息。
peer group-name enable
缺省情况下,本地路由器不能与对等体交换IPv4单播路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 创建EBGP对等体组。
group group-name external
(4) 向对等体组中添加指定的对等体。
peer ipv4-address [ mask-length ] group group-name as-number as-number
(5) (可选)配置对等体组的描述信息。
peer group-name description text
缺省情况下,对等体组没有描述信息。
(6) 创建BGP IPv4单播地址族或BGP-VPN IPv4单播地址族,并进入相应地址族视图。
address-family ipv4 [ unicast ]
(7) 允许本地路由器与指定对等体组中的对等体交换IPv4单播路由信息。
peer group-name enable
缺省情况下,本地路由器不能与对等体交换IPv4单播路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 创建EBGP对等体组。
group group-name external
(4) 指定对等体组的AS号。
peer group-name as-number as-number
缺省情况下,未指定对等体组的AS号。
如果对等体组中已经存在对等体,则不能改变该对等体组的AS号,也不能使用undo命令删除已指定的AS号。
(5) 向对等体组中添加指定的IPv4 BGP对等体。
peer ipv4-address [ mask-length ] group group-name [ as-number as-number ]
as-number as-number参数可选可不选,如果选择则必须和peer group-name as-number as-number命令中配置的一致。
(6) (可选)配置对等体组的描述信息。
peer group-name description text
缺省情况下,对等体组没有描述信息。
(7) 创建BGP IPv4单播标签地址族或BGP-VPN IPv4单播标签地址族,并进入相应地址族视图。
address-family ipv4 labeled-unicast
(8) 允许本地路由器与指定对等体组中的对等体交换IPv4单播标签路由信息。
peer group-name enable
缺省情况下,本地路由器不能与对等体交换IPv4单播标签路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 创建EBGP对等体组。
group group-name external
(4) 创建IPv4 BGP对等体,并指定对等体的AS号。
peer ipv4-address [ mask-length ] as-number as-number
(5) 向对等体组中添加指定的IPv4 BGP对等体。
peer ipv4-address [ mask-length ] group group-name [ as-number as-number ]
as-number as-number参数可选可不选,如果选择则必须和peer ipv4-address [ mask-length ] as-number as-number命令中配置的一致。
(6) (可选)配置对等体组的描述信息。
peer group-name description text
缺省情况下,对等体组没有描述信息。
(7) 创建BGP IPv4单播标签地址族或BGP-VPN IPv4单播标签地址族,并进入相应地址族视图。
address-family ipv4 labeled-unicast
(8) 允许本地路由器与指定对等体组中的对等体交换IPv4单播标签路由信息。
peer group-name enable
缺省情况下,本地路由器不能与对等体交换IPv4单播标签路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 创建EBGP对等体组。
group group-name external
(4) 向对等体组中添加指定的对等体。
peer ipv4-address [ mask-length ] group group-name as-number as-number
(5) (可选)配置对等体组的描述信息。
peer group-name description text
缺省情况下,对等体组没有描述信息。
(6) 创建BGP IPv4单播标签地址族或BGP-VPN IPv4单播标签地址族,并进入相应地址族视图。
address-family ipv4 labeled-unicast
(7) 允许本地路由器与指定对等体组中的对等体交换IPv4单播标签路由信息。
peer group-name enable
缺省情况下,本地路由器不能与对等体交换IPv4单播标签路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 创建EBGP对等体组。
group group-name external
(4) 指定对等体组的AS号。
peer group-name as-number as-number
缺省情况下,未指定对等体组的AS号。
如果对等体组中已经存在对等体,则不能改变该对等体组的AS号,也不能使用undo命令删除已指定的AS号。
(5) 向对等体组中添加指定的IPv4 BGP对等体。
peer ipv4-address [ mask-length ] group group-name [ as-number as-number ]
as-number as-number参数可选可不选,如果选择则必须和peer group-name as-number as-number命令中配置的一致。
(6) (可选)配置对等体组的描述信息。
peer group-name description text
缺省情况下,对等体组没有描述信息。
(7) 创建BGP IPv6单播地址族,并进入相应地址族视图。
address-family ipv6 [ unicast ]
(8) 允许本地路由器与指定对等体组中的对等体交换IPv6单播路由信息。
peer group-name enable
缺省情况下,本地路由器不能与对等体交换IPv6单播路由信息。
(9) 为BGP IPv4对等体组设置基于路由策略的路由修改下一跳策略。
peer group-name route-policy route-policy-name import
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 创建EBGP对等体组。
group group-name external
(4) 创建IPv4 BGP对等体,并指定对等体的AS号。
peer ipv4-address [ mask-length ] as-number as-number
(5) 向对等体组中添加指定的IPv4 BGP对等体。
peer ipv4-address [ mask-length ] group group-name [ as-number as-number ]
as-number as-number参数可选可不选,如果选择则必须和peer ipv4-address [ mask-length ] as-number as-number命令中配置的一致。
(6) (可选)配置对等体组的描述信息。
peer group-name description text
缺省情况下,对等体组没有描述信息。
(7) 创建BGP IPv6单播地址族,并进入相应地址族视图。
address-family ipv6 [ unicast ]
(8) 允许本地路由器与指定对等体组中的对等体交换IPv6单播路由信息。
peer group-name enable
缺省情况下,本地路由器不能与对等体交换IPv6单播路由信息。
(9) 为BGP IPv4对等体组设置基于路由策略的路由修改下一跳策略。
peer group-name route-policy route-policy-name import
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 创建EBGP对等体组。
group group-name external
(4) 向对等体组中添加指定的对等体。
peer ipv4-address [ mask-length ] group group-name as-number as-number
(5) (可选)配置对等体组的描述信息。
peer group-name description text
缺省情况下,对等体组没有描述信息。
(6) 创建BGP IPv6单播地址族,并进入相应地址族视图。
address-family ipv6 [ unicast ]
(7) 允许本地路由器与指定对等体组中的对等体交换IPv6单播路由信息。
peer group-name enable
缺省情况下,本地路由器不能与对等体交换IPv6单播路由信息。
(8) 为BGP IPv4对等体组设置基于路由策略的路由修改下一跳策略。
peer group-name route-policy route-policy-name import
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 创建EBGP对等体组。
group group-name external
(4) 指定对等体组的AS号。
peer group-name as-number as-number
缺省情况下,未指定对等体组的AS号。
如果对等体组中已经存在对等体,则不能改变该对等体组的AS号,也不能使用undo命令删除已指定的AS号。
(5) 向对等体组中添加指定的IPv4 BGP对等体。
peer ipv4-address [ mask-length ] group group-name [ as-number as-number ]
as-number as-number参数可选可不选,如果选择则必须和peer group-name as-number as-number命令中配置的一致。
(6) (可选)配置对等体组的描述信息。
peer group-name description text
缺省情况下,对等体组没有描述信息。
(7) 创建BGP IPv4组播地址族,并进入BGP IPv4组播地址族视图。
address-family ipv4 multicast
(8) 允许本地路由器与指定对等体组中的对等体交换用于RPF检查的IPv4单播路由信息。
peer group-name enable
缺省情况下,本地路由器不能与对等体交换用于RPF检查的IPv4单播路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 创建EBGP对等体组。
group group-name external
(4) 创建IPv4 BGP对等体,并指定对等体的AS号。
peer ipv4-address [ mask-length ] as-number as-number
(5) 向对等体组中添加指定的IPv4 BGP对等体。
peer ipv4-address [ mask-length ] group group-name [ as-number as-number ]
as-number as-number参数可选可不选,如果选择则必须和peer ipv4-address [ mask-length ] as-number as-number命令中配置的一致。
(6) (可选)配置对等体组的描述信息。
peer group-name description text
缺省情况下,对等体组没有描述信息。
(7) 创建BGP IPv4组播地址族,并进入BGP IPv4组播地址族视图。
address-family ipv4 multicast
(8) 允许本地路由器与指定对等体组中的对等体交换用于RPF检查的IPv4单播路由信息。
peer group-name enable
缺省情况下,本地路由器不能与对等体交换用于RPF检查的IPv4单播路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 创建EBGP对等体组。
group group-name external
(4) 向对等体组中添加指定的对等体。
peer ipv4-address [ mask-length ] group group-name as-number as-number
(5) (可选)配置对等体组的描述信息。
peer group-name description text
缺省情况下,对等体组没有描述信息。
(6) 创建BGP IPv4组播地址族,并进入BGP IPv4组播地址族视图。
address-family ipv4 multicast
(7) 允许本地路由器与指定对等体组中的对等体交换用于RPF检查的IPv4单播路由信息。
peer group-name enable
缺省情况下,本地路由器不能与对等体交换用于RPF检查的IPv4单播路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 创建EBGP对等体组。
group group-name external
(4) 指定对等体组的AS号。
peer group-name as-number as-number
缺省情况下,未指定对等体组的AS号。
如果对等体组中已经存在对等体,则不能改变该对等体组的AS号,也不能使用undo命令删除已指定的AS号。
(5) 向对等体组中添加指定的IPv4 BGP对等体。
peer ipv4-address [ mask-length ] group group-name [ as-number as-number ]
as-number as-number参数可选可不选,如果选择则必须和peer group-name as-number as-number命令中配置的一致。
(6) (可选)配置对等体组的描述信息。
peer group-name description text
缺省情况下,对等体组没有描述信息。
(7) 创建BGP IPv6组播地址族,并进入BGP IPv6组播地址族视图。
address-family ipv6 multicast
(8) 允许本地路由器与指定对等体组中的对等体交换用于RPF检查的IPv6单播路由信息。
peer group-name enable
缺省情况下,本地路由器不能与对等体交换用于RPF检查的IPv6单播路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 创建EBGP对等体组。
group group-name external
(4) 创建IPv4 BGP对等体,并指定对等体的AS号。
peer ipv4-address [ mask-length ] as-number as-number
(5) 向对等体组中添加指定的IPv4 BGP对等体。
peer ipv4-address [ mask-length ] group group-name [ as-number as-number ]
as-number as-number参数可选可不选,如果选择则必须和peer ipv4-address [ mask-length ] as-number as-number命令中配置的一致。
(6) (可选)配置对等体组的描述信息。
peer group-name description text
缺省情况下,对等体组没有描述信息。
(7) 创建BGP IPv6组播地址族,并进入BGP IPv6组播地址族视图。
address-family ipv6 multicast
(8) 允许本地路由器与指定对等体组中的对等体交换用于RPF检查的IPv6单播路由信息。
peer group-name enable
缺省情况下,本地路由器不能与对等体交换用于RPF检查的IPv6单播路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 创建EBGP对等体组。
group group-name external
(4) 向对等体组中添加指定的对等体。
peer ipv4-address [ mask-length ] group group-name as-number as-number
(5) (可选)配置对等体组的描述信息。
peer group-name description text
缺省情况下,对等体组没有描述信息。
(6) 创建BGP IPv6组播地址族,并进入BGP IPv6组播地址族视图。
address-family ipv6 multicast
(7) 允许本地路由器与指定对等体组中的对等体交换用于RPF检查的IPv6单播路由信息。
peer group-name enable
缺省情况下,本地路由器不能与对等体交换用于RPF检查的IPv6单播路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 创建EBGP对等体组。
group group-name external
(4) 指定对等体组的AS号。
peer group-name as-number as-number
缺省情况下,未指定对等体组的AS号。
如果对等体组中已经存在对等体,则不能改变该对等体组的AS号,也不能使用undo命令删除已指定的AS号。
(5) 向对等体组中添加指定的IPv6 BGP对等体。
peer ipv6-address [ prefix-length ] group group-name [ as-number as-number ]
as-number as-number参数可选可不选,如果选择则必须和peer group-name as-number as-number命令中配置的一致。
(6) (可选)配置对等体组的描述信息。
peer group-name description text
缺省情况下,对等体组没有描述信息。
(7) 创建BGP IPv6单播地址族或BGP-VPN IPv6单播地址族,并进入相应地址族视图。
address-family ipv6 [ unicast ]
(8) 允许本地路由器与指定对等体组中的对等体交换IPv6单播路由信息。
peer group-name enable
缺省情况下,本地路由器不能与对等体交换IPv6单播路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 创建EBGP对等体组。
group group-name external
(4) 创建IPv6 BGP对等体,并指定对等体的AS号。
peer ipv6-address [ prefix-length ] as-number as-number
(5) 向对等体组中添加指定的IPv6 BGP对等体。
peer ipv6-address [ prefix-length ] group group-name [ as-number as-number ]
as-number as-number参数可选可不选,如果选择则必须和peer ipv6-address [ prefix-length ] as-number as-number命令中配置的一致。
(6) (可选)配置对等体组的描述信息。
peer group-name description text
缺省情况下,对等体组没有描述信息。
(7) 创建BGP IPv6单播地址族或BGP-VPN IPv6单播地址族,并进入相应地址族视图。
address-family ipv6 [ unicast ]
(8) 允许本地路由器与指定对等体组中的对等体交换IPv6单播路由信息。
peer group-name enable
缺省情况下,本地路由器不能与对等体交换IPv6单播路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 创建EBGP对等体组。
group group-name external
(4) 向对等体组中添加指定的IPv6 BGP对等体。
peer ipv6-address [ prefix-length ] group group-name as-number as-number
(5) (可选)配置对等体组的描述信息。
peer group-name description text
缺省情况下,对等体组没有描述信息。
(6) 创建BGP IPv6单播地址族或BGP-VPN IPv6单播地址族,并进入相应地址族视图。
address-family ipv6 [ unicast ]
(7) 允许本地路由器与指定对等体组中的对等体交换IPv6单播路由信息。
peer group-name enable
缺省情况下,本地路由器不能与对等体交换IPv6单播路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 创建EBGP对等体组。
group group-name external
(4) 指定对等体组的AS号。
peer group-name as-number as-number
缺省情况下,未指定对等体组的AS号。
如果对等体组中已经存在对等体,则不能改变该对等体组的AS号,也不能使用undo命令删除已指定的AS号。
(5) 向对等体组中添加指定的IPv6 BGP对等体。
peer ipv6-address [ prefix-length ] group group-name [ as-number as-number ]
as-number as-number参数可选可不选,如果选择则必须和peer group-name as-number as-number命令中配置的一致。
(6) (可选)配置对等体组的描述信息。
peer group-name description text
缺省情况下,对等体组没有描述信息。
(7) 创建BGP IPv4单播地址族,并进入相应地址族视图。
address-family ipv4 [ unicast ]
(8) 允许本地路由器与指定对等体组中的对等体交换IPv4单播路由信息。
peer group-name enable
缺省情况下,本地路由器不能与对等体交换IPv4单播路由信息。
(9) 为BGP IPv6对等体组设置基于路由策略的路由修改下一跳策略。
peer group-name route-policy route-policy-name import
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 创建EBGP对等体组。
group group-name external
(4) 创建IPv6 BGP对等体,并指定对等体的AS号。
peer ipv6-address [ prefix-length ] as-number as-number
(5) 向对等体组中添加指定的IPv6 BGP对等体。
peer ipv6-address [ prefix-length ] group group-name [ as-number as-number ]
as-number as-number参数可选可不选,如果选择则必须和peer ipv6-address [ prefix-length ] as-number as-number命令中配置的一致。
(6) (可选)配置对等体组的描述信息。
peer group-name description text
缺省情况下,对等体组没有描述信息。
(7) 创建BGP IPv4单播地址族,并进入相应地址族视图。
address-family ipv4 [ unicast ]
(8) 允许本地路由器与指定对等体组中的对等体交换IPv4单播路由信息。
peer group-name enable
缺省情况下,本地路由器不能与对等体交换IPv4单播路由信息。
(9) 为BGP IPv6对等体组设置基于路由策略的路由修改下一跳策略。
peer group-name route-policy route-policy-name import
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 创建EBGP对等体组。
group group-name external
(4) 向对等体组中添加指定的IPv6 BGP对等体。
peer ipv6-address [ prefix-length ] group group-name as-number as-number
(5) (可选)配置对等体组的描述信息。
peer group-name description text
缺省情况下,对等体组没有描述信息。
(6) 创建BGP IPv4单播地址族,并进入相应地址族视图。
address-family ipv4 [ unicast ]
(7) 允许本地路由器与指定对等体组中的对等体交换IPv4单播路由信息。
peer group-name enable
缺省情况下,本地路由器不能与对等体交换IPv4单播路由信息。
(8) 为BGP IPv6对等体组设置基于路由策略的路由修改下一跳策略。
peer group-name route-policy route-policy-name import
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 创建EBGP对等体组。
group group-name external
(4) 指定对等体组的AS号。
peer group-name as-number as-number
缺省情况下,未指定对等体组的AS号。
如果对等体组中已经存在对等体,则不能改变该对等体组的AS号,也不能使用undo命令删除已指定的AS号。
(5) 向对等体组中添加指定的IPv6 BGP对等体。
peer ipv6-address [ prefix-length ] group group-name [ as-number as-number ]
as-number as-number参数可选可不选,如果选择则必须和peer group-name as-number as-number命令中配置的一致。
(6) (可选)配置对等体组的描述信息。
peer group-name description text
缺省情况下,对等体组没有描述信息。
(7) 创建BGP IPv4组播地址族,并进入BGP IPv4组播地址族视图。
address-family ipv4 multicast
(8) 允许本地路由器与指定对等体组中的对等体交换用于RPF检查的IPv4单播路由信息。
peer group-name enable
缺省情况下,本地路由器不能与对等体交换用于RPF检查的IPv4单播路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 创建EBGP对等体组。
group group-name external
(4) 创建IPv6 BGP对等体,并指定对等体的AS号。
peer ipv6-address [ prefix-length ] as-number as-number
(5) 向对等体组中添加指定的IPv6 BGP对等体。
peer ipv6-address [ prefix-length ] group group-name [ as-number as-number ]
as-number as-number参数可选可不选,如果选择则必须和peer ipv6-address [ prefix-length ] as-number as-number命令中配置的一致。
(6) (可选)配置对等体组的描述信息。
peer group-name description text
缺省情况下,对等体组没有描述信息。
(7) 创建BGP IPv4组播地址族,并进入BGP IPv4组播地址族视图。
address-family ipv4 multicast
(8) 允许本地路由器与指定对等体组中的对等体交换用于RPF检查的IPv4单播路由信息。
peer group-name enable
缺省情况下,本地路由器不能与对等体交换用于RPF检查的IPv4单播路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 创建EBGP对等体组。
group group-name external
(4) 向对等体组中添加指定的IPv6 BGP对等体。
peer ipv6-address [ prefix-length ] group group-name as-number as-number
(5) (可选)配置对等体组的描述信息。
peer group-name description text
缺省情况下,对等体组没有描述信息。
(6) 创建BGP IPv4组播地址族,并进入BGP IPv4组播地址族视图。
address-family ipv4 multicast
(7) 允许本地路由器与指定对等体组中的对等体交换用于RPF检查的IPv4单播路由信息。
peer group-name enable
缺省情况下,本地路由器不能与对等体交换用于RPF检查的IPv4单播路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 创建EBGP对等体组。
group group-name external
(4) 指定对等体组的AS号。
peer group-name as-number as-number
缺省情况下,未指定对等体组的AS号。
如果对等体组中已经存在对等体,则不能改变该对等体组的AS号,也不能使用undo命令删除已指定的AS号。
(5) 向对等体组中添加指定的IPv6 BGP对等体。
peer ipv6-address [ prefix-length ] group group-name [ as-number as-number ]
as-number as-number参数可选可不选,如果选择则必须和peer group-name as-number as-number命令中配置的一致。
(6) (可选)配置对等体组的描述信息。
peer group-name description text
缺省情况下,对等体组没有描述信息。
(7) 创建BGP IPv6组播地址族,并进入BGP IPv6组播地址族视图。
address-family ipv6 multicast
(8) 允许本地路由器与指定对等体组中的对等体交换用于RPF检查的IPv6单播路由信息。
peer group-name enable
缺省情况下,本地路由器不能与对等体交换用于RPF检查的IPv6单播路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 创建EBGP对等体组。
group group-name external
(4) 创建IPv6 BGP对等体,并指定对等体的AS号。
peer ipv6-address [ prefix-length ] as-number as-number
(5) 向对等体组中添加指定的IPv6 BGP对等体。
peer ipv6-address [ prefix-length ] group group-name [ as-number as-number ]
as-number as-number参数可选可不选,如果选择则必须和peer ipv6-address [ prefix-length ] as-number as-number命令中配置的一致。
(6) (可选)配置对等体组的描述信息。
peer group-name description text
缺省情况下,对等体组没有描述信息。
(7) 创建BGP IPv6组播地址族,并进入BGP IPv6组播地址族视图。
address-family ipv6 multicast
(8) 允许本地路由器与指定对等体组中的对等体交换用于RPF检查的IPv6单播路由信息。
peer group-name enable
缺省情况下,本地路由器不能与对等体交换用于RPF检查的IPv6单播路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 创建EBGP对等体组。
group group-name external
(4) 向对等体组中添加指定的IPv6 BGP对等体。
peer ipv6-address [ prefix-length ] group group-name as-number as-number
(5) (可选)配置对等体组的描述信息。
peer group-name description text
缺省情况下,对等体组没有描述信息。
(6) 创建BGP IPv6组播地址族,并进入BGP IPv6组播地址族视图。
address-family ipv6 multicast
(7) 允许本地路由器与指定对等体组中的对等体交换用于RPF检查的IPv6单播路由信息。
peer group-name enable
缺省情况下,本地路由器不能与对等体交换用于RPF检查的IPv6单播路由信息。
BGP使用TCP作为其传输层协议。在如下场合需要通过本配置指定建立TCP连接使用的源地址或源接口(即采用指定源接口的IP地址/IPv6地址与对等体/对等体组建立TCP连接):
· 当指定对等体的IP地址/IPv6地址不是本地路由器与对等体之间直连接口的IP地址/IPv6地址时,需要在对等体上通过本配置指定建立TCP连接的源接口为对等体IP地址/IPv6地址所在的接口或者指定TCP连接的源地址为对等体IP地址/IPv6地址。
· 当通过IPv6链路本地地址创建对等体或向对等体组中添加指定的对等体时,必须使用直连接口建立对等关系,且必须通过peer connect-interface命令将本地直连出接口指定为建立TCP连接使用的源接口。
· 当建立BGP会话的路由器之间存在冗余链路时,如果路由器上的一个接口发生故障,链路状态变为down,建立TCP连接的源地址可能会随之发生变化,导致BGP需要重新建立TCP连接,造成网络震荡。为了避免该情况的发生,建议网络管理员将建立TCP连接所使用的源地址配置为Loopback接口的地址,或将源接口配置为Loopback接口,以提高TCP连接的可靠性和稳定性。
· 当BGP对等体之间同时建立多条BGP会话时,如果没有明确指定建立TCP连接的源地址,可能会导致根据最优路由选择TCP连接源地址错误,并影响BGP会话的建立。如果多条BGP会话基于不同接口的IP地址建立,则建议用户在配置BGP对等体时,通过配置源接口或源地址明确指定每个BGP会话的TCP连接源地址;如果多条BGP会话基于同一接口的不同IP地址建立,则建议用户通过配置源地址,明确指定每个BGP会话的TCP连接源地址。
· 当BGP会话的TCP连接源地址被其他接口借用时,需要使用peer connect-interface命令指定建立TCP连接使用的源接口为被借用地址的接口,BGP会话才能正确响应相关接口的状态变化。
对于IBGP邻居,如果通过peer connect-interface命令指定的接口为物理接口,则当该接口发生故障、链路状态变为down时,IBGP邻居关系会立即断开,从而加快路由收敛。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 指定与IPv4对等体/对等体组创建BGP会话时建立TCP连接使用的源地址或源接口。
¡ 指定与IPv4对等体/对等体组创建BGP会话时建立TCP连接使用的源地址。
peer { group-name | ipv4-address [ mask-length ] } source-address source-ipv4-address
¡ 指定与IPv4对等体/对等体组创建BGP会话时建立TCP连接使用的源接口。
peer { group-name | ipv4-address [ mask-length ] } connect-interface interface-type interface-number
缺省情况下,BGP使用到达BGP对等体的最佳路由出接口的主IPv4地址与对等体/对等体组建立TCP连接。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 指定与IPv6对等体/对等体组创建BGP会话时建立TCP连接使用的源地址或源接口。
¡ 指定与IPv6对等体/对等体组创建BGP会话时建立TCP连接使用的源地址。
peer { group-name | ipv6-address [ prefix-length ] } source-address source-ipv6-address
¡ 指定与IPv6对等体/对等体组创建BGP会话时建立TCP连接使用的源接口。
peer { group-name | ipv6-address [ prefix-length ] } connect-interface interface-type interface-number
缺省情况下,BGP使用到达BGP对等体的最佳路由出接口的IPv6地址与对等体/对等体组建立TCP连接。
通过本配置可以将本地路由表中指定网段的路由添加到BGP路由表中,以便通过BGP发布该网段路由。通过该种方式发布的路由的ORIGIN属性为IGP。网络管理员还可以通过使用路由策略更为灵活地控制所发布的路由。
本配置中指定的网段路由必须存在于本地的IP路由表中,且处于Active状态,否则无法将该网段路由添加到BGP路由表中。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv4单播地址族视图、BGP-VPN IPv4单播地址族视图、BGP IPv4组播地址族视图、BGP IPv4单播标签地址族视图或BGP-VPN IPv4单播标签地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv4组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 multicast
¡ 请依次执行以下命令进入BGP IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 labeled-unicast
¡ 请依次执行以下命令进入BGP-VPN IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 labeled-unicast
(3) 配置BGP发布的本地网段路由。
network ipv4-address [ mask-length | mask ] [ route-policy route-policy-name ]
缺省情况下,BGP不发布本地的网段路由。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv6单播地址族视图、BGP-VPN IPv6单播地址族视图或BGP IPv6组播地址族视图。
¡ 请依次执行以下命令进入BGP IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv6组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 multicast
(3) 配置BGP发布的本地网段路由。
network ipv6-address prefix-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 ipv6 routing-table protocol命令来查看。这两条命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“IP路由基础”。
针对同一协议进程重复执行import-route命令引入路由时,最后一次执行的命令生效。若要引入同一协议进程时不覆盖已存在配置,则可以通过import-route-append命令附加引入IGP路由。针对同一协议进程同时配置import-route与import-route-append命令时:
· 通过任意一条命令中路由策略过滤的路由将被引入到BGP路由表中,若引入的路由同时通过了两条命令中路由策略的过滤,则在被引入到BGP路由表中时,两条命令指定的路由策略包含的Apply子句在不冲突的情况下同时生效,否则仅import-route-append命令指定的路由策略中的Apply子句生效。
· 如果均指定了引入路由的MED度量值,以import-route-append命令的配置为准。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv4单播地址族视图、BGP-VPN IPv4单播地址族视图、BGP IPv4组播地址族视图、BGP IPv4单播标签地址族视图或BGP-VPN IPv4单播标签地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv4组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 multicast
¡ 请依次执行以下命令进入BGP IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 labeled-unicast
¡ 请依次执行以下命令进入BGP-VPN IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 labeled-unicast
(3) 将IGP路由协议的路由信息引入到BGP路由表中。
¡ 引入IS-IS、OSPF、RIP协议的路由。
import-route { isis | ospf | rip } [ { process-id | all-processes } [ allow-direct | med med-value | route-policy route-policy-name ] * ]
¡ 引入直连或静态路由。
import-route { direct | static | unr } [ med med-value | route-policy route-policy-name ] *
¡ 引入EIGRP协议的路由。
import-route eigrp [ { eigrp-as | all-as } [ allow-direct | med med-value | route-policy route-policy-name ] * ]
缺省情况下,BGP不会引入IGP路由协议的路由信息。
(4) (可选)以附加的方式将IGP路由协议的路由信息引入到BGP路由表中。
¡ 引入IS-IS、OSPF、RIP协议的路由。
import-route-append { isis | ospf | rip } [ { process-id | all-processes } [ allow-direct | med med-value | route-policy route-policy-name ] * ]
¡ 引入直连或静态路由。
import-route-append { direct | static | unr } [ med med-value | route-policy route-policy-name ] *
¡ 引入EIGRP协议的路由。
import-route-append eigrp [ { eigrp-as | all-as } [ allow-direct | med med-value | route-policy route-policy-name ] * ]
缺省情况下,BGP不会引入IGP路由协议的路由信息。
(5) (可选)引入所有目的地址相同的路由。
import-route multipath
缺省情况下,BGP仅引入最优路由到BGP路由表中。
BGP IPv4组播地址族视图、BGP IPv4单播标签地址族视图和BGP-VPN IPv4单播标签地址族视图不支持本命令。
本命令仅对同一地址族下配置import-route或import-route-append命令后引入的路由生效。
(6) (可选)允许将缺省路由引入到BGP路由表中。
default-route imported
缺省情况下,BGP不允许将缺省路由引入到BGP路由表中。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv6单播地址族视图、BGP-VPN IPv6单播地址族视图或BGP IPv6组播地址族视图。
¡ 请依次执行以下命令进入BGP IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv6组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 multicast
(3) 将IGP路由协议的路由信息引入到IPv6 BGP路由表中。
¡ 引入IS-ISv6、OSPFv3、RIPng协议的路由。
import-route { isisv6 | ospfv3 | ripng } [ { process-id | all-processes } [ allow-direct | med med-value | route-policy route-policy-name ] * ]
¡ 引入直连或静态路由。
import-route { direct | static | unr } [ med med-value | route-policy route-policy-name ] *
缺省情况下,BGP不会引入IGP路由协议的路由信息。
(4) (可选)以附加的方式将IGP路由协议的路由信息引入到BGP路由表中。
¡ 引入IS-ISv6、OSPFv3、RIPng协议的路由。
import-route-append { isisv6 | ospfv3 | ripng } [ { process-id | all-processes } [ allow-direct | med med-value | route-policy route-policy-name ] * ]
¡ 引入直连或静态路由。
import-route-append { direct | static | unr } [ med med-value | route-policy route-policy-name ] *
缺省情况下,BGP不会引入IGP路由协议的路由信息。
(5) (可选)引入所有目的地址相同的路由。
import-route multipath
BGP IPv6组播地址族视图不支持本命令。
缺省情况下,BGP仅引入最优路由到BGP路由表中。
本命令仅对同一地址族下配置import-route或import-route-append命令后引入的路由生效。
(6) (可选)允许将缺省路由引入到IPv6 BGP路由表中。
default-route imported
缺省情况下,BGP不允许将缺省路由引入到IPv6 BGP路由表中。
通过本配置可以将公网或VPN实例发布的本地网段路由添加到BGP路由表中,以便通过BGP发布该网段路由。通过该种方式发布的路由的ORIGIN属性为IGP。
本配置中network命令指定的网段路由必须存在于公网或VPN实例的路由表中,且处于Active状态,BGP协议才能通过import-route local-aggregate命令引入该路由,并对外发布。
(1) 进入系统视图。
system-view
(2) 进入公网实例IPv4地址族视图或VPN实例IPv4地址族视图。
¡ 请依次执行以下命令进入公网实例IPv4地址族视图。
ip public-instance
address-family ipv4
¡ 请依次执行以下命令进入VPN实例IPv4地址族视图。
ip vpn-instance vpn-instance-name
address-family ipv4
(3) 配置公网或VPN实例发布的本地网段路由。
network ipv4-address [ mask-length | mask ]
缺省情况下,公网或者VPN实例不发布本地的网段路由。
有关本命令的详细介绍,请参见“MPLS命令参考”中的“MPLS L3VPN”。
(4) 依次执行以下命令退回系统视图。
a. quit
b. quit
(5) 进入BGP IPv4单播地址族视图、BGP-VPN IPv4单播地址族视图、BGP IPv4组播地址族、BGP IPv4单播标签地址族视图或BGP-VPN IPv4单播标签地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv4组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 multicast
¡ 请依次执行以下命令进入BGP IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 labeled-unicast
¡ 请依次执行以下命令进入BGP-VPN IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 labeled-unicast
(6) 配置BGP引入公网或者VPN实例发布的本地网段路由。
import-route local-aggregate [ route-policy route-policy-name ]
缺省情况下,BGP不会引入公网或VPN实例发布的本地网段路由。
在中型或大型BGP网络中,在向对等体发布路由信息时,可以配置路由聚合,减少发布的路由数量,并减小路由表的规模。IPv4 BGP支持自动聚合和手动聚合两种聚合方式,同时配置时,手动聚合的优先级高于自动聚合的优先级。IPv6 BGP只支持手动聚合。
配置自动聚合功能后,BGP将对通过import-route命令引入的IGP子网路由进行聚合,不再发布子网路由,而是发布聚合的自然网段的路由。
自动聚合是按照自然网段进行聚合,而且只能对IGP引入的子网路由进行聚合。通过配置手动聚合,用户可以同时对从IGP路由协议引入的子网路由和用network命令发布的路由进行聚合,而且还可以根据需要定义聚合路由的子网掩码长度。
BGP路由表中创建的聚合路由的出接口为Null0接口,聚合后可以减少向BGP对等体发布的路由数目。在使用中应注意不要使这条聚合路由成为本设备的优选路由,否则会导致报文转发失败。如果聚合路由的子网掩码长度和被聚合的某一条具体路由完全相同,且聚合路由优先级高于具体路由,则聚合路由会成为优选路由,这种情况下需要通过修改路由优先级等方式,来确保优选的路由为具体路由。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv4单播地址族视图、BGP-VPN IPv4单播地址族视图或BGP IPv4组播地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv4组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 multicast
(3) 配置对引入的子网路由进行自动聚合。
summary automatic
缺省情况下,不对引入的子网路由进行自动聚合。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv4单播地址族视图、BGP-VPN IPv4单播地址族视图或BGP IPv4组播地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv4组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 multicast
(3) 在BGP路由表中创建一条聚合路由。
aggregate ipv4-address { mask-length | mask } [ as-set | attribute-policy route-policy-name | detail-suppressed | origin-policy route-policy-name | suppress-policy route-policy-name ] *
缺省情况下,未配置聚合路由。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv6单播地址族视图、BGP-VPN IPv6单播地址族视图或BGP IPv6组播地址族视图。
¡ 请依次执行以下命令进入BGP IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv6组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 multicast
(3) 在IPv6 BGP路由表中创建一条聚合路由。
aggregate ipv6-address prefix-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) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 全局配置发布IP路由表中的最优路由。
advertise-rib-active
缺省情况下,BGP发布BGP路由表中的最优路由。
(4) 进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图。
¡ 请执行以下命令进入BGP IPv4单播地址族视图。
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
(5) 在指定地址族视图下,配置发布IP路由表中的最优路由。
advertise-rib-active
缺省情况下,与BGP实例视图下的配置保持一致。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 全局配置发布IPv6路由表中的最优路由。
advertise-rib-active
缺省情况下,BGP发布BGP路由表中的最优路由。
(4) 进入BGP IPv6单播地址族视图或BGP-VPN IPv6单播地址族视图。
¡ 进入BGP IPv6单播地址族视图。
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
(5) 在指定地址族视图下,配置发布IPv6路由表中的最优路由。
advertise-rib-active
缺省情况下,与BGP实例视图下的配置保持一致。
执行本配置后,设备将向指定对等体/对等体组发布一条下一跳地址为本地地址的缺省路由。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv4单播地址族视图、BGP-VPN IPv4单播地址族视图、BGP IPv4组播地址族视图、BGP IPv4单播标签地址族视图或BGP-VPN IPv4单播标签地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv4组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 multicast
¡ 请依次执行以下命令进入BGP IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 labeled-unicast
¡ 请依次执行以下命令进入BGP-VPN IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 labeled-unicast
(3) 向对等体/对等体组发送缺省路由。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } default-route-advertise [ route-policy route-policy-name ] [ conditional-policy route-policy-name ]
缺省情况下,不向对等体/对等体组发送缺省路由。
BGP IPv4单播标签地址族视图和BGP-VPN IPv4单播标签地址族视图下不支持IPv6参数。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv6单播地址族视图、BGP-VPN IPv6单播地址族视图或BGP IPv6组播地址族视图。
¡ 请依次执行以下命令进入BGP IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv6组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 multicast
(3) 向对等体/对等体组发送缺省路由。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } default-route-advertise [ route-policy route-policy-name ] [ conditional-policy route-policy-name ]
缺省情况下,不向对等体/对等体组发送缺省路由。
通过本配置可以避免攻击者向路由器发送大量的BGP路由,对路由器进行攻击。
当路由器从指定对等体/对等体组接收的路由数量超过指定的最大值时,可以选择以下处理方式:
· 路由器中断与该对等体/对等体组的BGP会话,不再尝试重建会话。
· 路由器保持与该对等体/对等体组的BGP会话,可以继续接收路由,仅打印日志信息。
· 路由器保持与该对等体/对等体组的BGP会话,丢弃超出限制的路由,并打印日志信息。
· 路由器中断与该对等体/对等体组的BGP会话,经过指定的时间后自动与对等体/对等体组重建会话。
执行本配置任务时,还可以指定路由器产生日志信息的阈值,即路由器接收的路由数量与配置的最大值的百分比达到指定的阈值时,路由器将产生日志信息。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv4单播地址族视图、BGP-VPN IPv4单播地址族视图、BGP IPv4组播地址族视图、BGP IPv4单播标签地址族视图或BGP-VPN IPv4单播标签地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv4组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 multicast
¡ 请依次执行以下命令进入BGP IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 labeled-unicast
¡ 请依次执行以下命令进入BGP-VPN IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 labeled-unicast
(3) 配置允许从对等体/对等体组接收的路由的最大数量。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } route-limit prefix-number [ { alert-only | discard | reconnect reconnect-time } | percentage-value ] *
缺省情况下,不限制从对等体/对等体组接收的路由数量。
BGP IPv4单播标签地址族视图和BGP-VPN IPv4单播标签地址族视图下不支持IPv6参数。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv6单播地址族视图、BGP-VPN IPv6单播地址族视图或BGP IPv6组播地址族视图。
¡ 请依次执行以下命令进入BGP IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv6组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 multicast
(3) 配置允许从对等体/对等体组接收的路由的最大数量。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } route-limit prefix-number [ { alert-only | discard | reconnect reconnect-time } | percentage-value ] *
缺省情况下,不限制从对等体/对等体组接收的路由数量。
通过配置本功能,可以实现BGP IPv4单播标签路由和BGP IPv4单播路由之间的互引,以及不同VPN实例之间的BGP IPv4单播标签路由或BGP IPv4单播路由的互引,从而使不同的VPN站点间的用户可以进行互访或访问公网。
在MPLS L3VPN网络的Option C跨域场景中,通过BGP IPv4单播标签地址族下的会话来交换带标签IPv4路由的设备上,需要配置本功能将BGP IPv4单播标签路由引入到BGP IPv4单播路由表中,以便将其他AS的网段路由信息添加到本地公网IP路由表中,从而实现PE之间跨域建立多跳MP-EBGP会话。有关Option C跨域场景的详细介绍,请参见“MPLS配置指导”中的“MPLS L3VPN”。
配置本功能时如果通过ACL过滤引入的路由,则ACL规则中的源IPv4地址用于匹配BGP路由的目的地址,ACL中的其它的匹配规则不生效。如果引用的ACL中无匹配源IPv4地址的规则,则表示不对引入的路由进行过滤。
在当前地址族中引入其他VPN实例的BGP IPv4单播标签路由或BGP IPv4单播路由时,需要该VPN实例已经创建BGP IPv4单播标签地址族或BGP IPv4单播地址族,否则本功能无法配置。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv4单播地址族视图、BGP-VPN IPv4单播地址族视图、BGP IPv4单播标签地址族视图或BGP-VPN IPv4单播标签地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 labeled-unicast
¡ 请依次执行以下命令进入BGP-VPN IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 labeled-unicast
(3) 配置BGP IPv4单播路由和BGP IPv4单播标签路由的引入功能。
import-rib { public | vpn-instance vpn-instance-name } [ labeled-unicast ] [ valid-route ] [ route-policy route-policy-name | filter-policy { ipv4-acl-number | name ipv4-acl-name | prefix-list ipv4-prefix-list-name } ]
缺省情况下,BGP IPv4单播标签路由和BGP IPv4单播路由之间,公网实例与VPN实例之间的BGP IPv4单播标签路由或BGP IPv4单播路由无法互引;不同VPN实例之间的BGP IPv4单播标签路由无法互引;Route Target属性匹配的不同VPN实例之间的BGP IPv4单播路由可以互引。
BGP路由器向对等体发送路由撤销消息时,不会优先发送缺省路由的撤销消息。当BGP邻居关系断开时,无法保证优先撤销缺省路由,如果需要撤销的路由数量较多,那么较长时间后才能撤销缺省路由,造成流量中断时间较长。通过配置本功能,BGP路由器会优先发送缺省路由的撤销消息,在BGP邻居关系断开时,最大限度地减少流量中断时间。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 配置优先发送缺省路由的撤销消息。
default-route update-first
缺省情况下,不优先发送缺省路由的撤销消息。
当BGP路由器需要撤销大量路由时,撤销所有的路由会耗费一定时间,导致有些流量不能快速切换到有效路径。对于某些重要的、不希望长时间中断的流量,可以通过本配置,确保BGP路由器优先发送这些路由的撤销消息,以便将指定流量快速地切换到有效路径上,最大限度地减少流量中断时间。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv4单播地址族视图、BGP-VPN IPv4单播地址族视图、BGP IPv4组播地址族视图、BGP IPv4单播标签地址族视图或BGP-VPN IPv4单播标签地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv4组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 multicast
¡ 请依次执行以下命令进入BGP IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 labeled-unicast
¡ 请依次执行以下命令进入BGP-VPN IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 labeled-unicast
(3) 配置优先发送指定路由的撤销消息。
update-first route-policy route-policy-name
缺省情况下,不支持优先发送指定路由的撤销消息。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv6单播地址族视图、BGP-VPN IPv6单播地址族视图或BGP IPv6组播地址族视图。
¡ 请依次执行以下命令进入BGP IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv6组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 multicast
(3) 配置优先发送指定路由的撤销消息。
update-first route-policy route-policy-name
可以通过以下几种方式配置BGP路由信息的发布策略:
· 使用访问控制列表或地址前缀列表对向所有对等体发布的路由信息进行过滤。
· 向指定对等体或对等体组发布路由时,使用路由策略、条件通告策略(存在策略和不存在策略)、访问控制列表、AS路径过滤列表或地址前缀列表对发布给该对等体或对等体组的路由信息进行过滤。
用户可以根据需求选择过滤策略。如果同时配置了几种过滤策略,则按照如下顺序过滤发布的路由信息:
· peer prefix-list export
· peer filter-policy export
· peer as-path-acl export
· filter-policy export
· peer advertise-policy exist-policy
· peer advertise-policy non-exist-policy
· peer route-policy export
只有通过前面的过滤策略,才能继续执行后面的过滤策略;只有通过所有配置的过滤策略后,路由信息才能被发布。
配置BGP路由信息的发布/接收策略前,根据采取的策略,需要配置下列过滤器:
· 访问控制列表,详细配置过程请参见“ACL和QoS配置指导”中的“ACL”。
· 地址前缀列表,详细配置过程请参见“三层技术-IP路由配置指导”中的“路由策略”。
· 路由策略,详细配置过程请参见“三层技术-IP路由配置指导”中的“路由策略”。
· AS路径过滤列表,详细配置过程请参见“三层技术-IP路由配置指导”中的“路由策略”。
使用了ACL、前缀列表以及路由策略过滤器来应用BGP路由的发布/接收策略时,三者具有以下特征:
· 在过滤策略指定了以上三种过滤器时,如果指定的是不存在的过滤器,则所有BGP路由均可以通过该过滤策略的过滤。
· 过滤策略通过ACL或者前缀列表进行过滤时(例如配置filter-policy export命令时指定通过ACL或前缀列表匹配BGP路由信息):
¡ BGP路由只有能够通过ACL或前缀列表permit动作的匹配,该路由才能通过过滤策略的过滤。即如果一个过滤策略指定的是全部为deny动作的ACL或前缀列表,那么所有BGP路由均无法通过该过滤策略的过滤。
¡ ACL按照配置顺序进行匹配时,设备根据规则编号从小到大的顺序进行匹配;前缀列表按照表项索引号从小到大的顺序进行匹配。在该匹配顺序下,路由匹配到了一个ACL规则或者前缀列表的表项后,就不会继续再往下匹配。所以在配置多个规则/表项的ACL/前缀列表时,请尽量将先匹配的规则/表项的匹配范围设置为较小一些,以免后匹配的规则/表项不生效。
¡ 指定高级ACL作为过滤器时,rule [ rule-id ] permit ip source sour-addr sour-wildcard destination dest-addr dest-wildcard中的source sour-addr sour-wildcard用来匹配路由的目的网络地址,destination dest-addr dest-wildcard用来匹配路由的掩码。需要注意的是,需要指定路由掩码的点分十进制格式,例如,如果需要匹配3.3.3.0/24的路由,指定的规则应为rule [ rule-id ] permit ip source 3.3.3.0 0.0.0.255 destination 255.255.255.0 0.0.0.255。
· 使用路由策略作为过滤器时:
¡ BGP路由只有能够通过路由策略的permit模式节点的匹配,才能通过过滤策略的过滤。
¡ 路由策略按照节点序号从小到大的顺序进行匹配。在该匹配顺序下,路由匹配到了一个节点后,就不会继续往下进行匹配(配置了continue子句的情况除外)。
¡ 如果路由策略中通过if-match命令指定了ACL或前缀列表,则BGP路由需要先通过ACL或前缀列表permit动作的匹配,再通过路由策略permit模式节点的匹配,才能通过过滤策略的过滤。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv4单播地址族视图、BGP-VPN IPv4单播地址族视图、BGP IPv4组播地址族视图、BGP IPv4单播标签地址族视图或BGP-VPN IPv4单播标签地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv4组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 multicast
¡ 请依次执行以下命令进入BGP IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 labeled-unicast
¡ 请依次执行以下命令进入BGP-VPN IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 labeled-unicast
(3) 配置BGP路由信息的发布策略。请至少选择其中一项进行配置。
¡ 对向所有对等体发布的路由信息进行过滤。
filter-policy { ipv4-acl-number | name ipv4-acl-name | prefix-list ipv4-prefix-list-name } export [ direct | isis process-id | ospf process-id | rip process-id | static | unr ]
¡ 通过存在策略对BGP发布路由进行控制。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise-policy advertise-policy-name exist-policy exist-policy-name
本命令仅支持在BGP IPv4单播地址族视图下配置。
¡ 通过不存在策略对BGP发布路由进行控制。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise-policy advertise-policy-name non-exist-policy non-exist-policy-name
本命令仅支持在BGP IPv4单播地址族视图下配置。
¡ 为对等体/对等体组设置基于路由策略的路由发布过滤策略。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } route-policy route-policy-name export
¡ 为对等体/对等体组设置基于ACL的路由发布过滤策略。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } filter-policy { ipv4-acl-number | name ipv4-acl-name } export
¡ 为对等体/对等体组设置基于AS路径过滤列表的路由发布过滤策略。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } as-path-acl { as-path-acl-number| as-path-acl-name } export
¡ 为对等体/对等体组设置基于IPv4地址前缀列表的路由发布过滤策略。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } prefix-list ipv4-prefix-list-name export
缺省情况下,不对发布的路由信息进行过滤。
BGP IPv4单播标签地址族视图和BGP-VPN IPv4单播标签地址族视图下不支持IPv6参数。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv6单播地址族视图、BGP-VPN IPv6单播地址族视图或BGP IPv6组播地址族视图。
¡ 请依次执行以下命令进入BGP IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv6组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 multicast
(3) 配置BGP路由信息的发布策略。请至少选择其中一项进行配置。
¡ 对向所有IPv6 BGP对等体发布的路由信息进行过滤。
filter-policy { ipv6-acl-number | name ipv6-acl-name | prefix-list ipv6-prefix-list-name } export [ direct | isisv6 process-id | ospfv3 process-id | ripng process-id | static | unr ]
¡ 通过存在策略对BGP发布路由进行控制。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise-policy advertise-policy-name exist-policy exist-policy-name
本命令仅支持在BGP IPv6单播地址族视图下配置。
¡ 通过不存在策略对BGP发布路由进行控制。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise-policy advertise-policy-name non-exist-policy non-exist-policy-name
本命令仅支持在BGP IPv6单播地址族视图下配置。
¡ 为对等体/对等体组设置基于路由策略的路由发布过滤策略。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } route-policy route-policy-name export
¡ 为对等体/对等体组设置基于ACL的路由发布过滤策略。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } filter-policy { ipv6-acl-number | name ipv6-acl-name } export
¡ 为对等体/对等体组设置基于AS路径过滤列表的路由发布过滤策略。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } as-path-acl { as-path-acl-number | as-path-acl-name } export
¡ 为对等体/对等体组设置基于IPv6地址前缀列表的路由发布过滤策略。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } prefix-list ipv6-prefix-list-name export
缺省情况下,不对发布的路由信息进行过滤。
网络中新增路由数量较大时,如果在短时间内发布大量路由,可能会导致BGP对等体已接收到新增路由并添加对应的转发表项,本地设备上的转发表项却尚未添加,从而导致流量转发失败。通过本功能合理地配置BGP发送新增路由的速率可以避免上述情况发生。
请根据设备的性能合理配置BGP发送新增路由的速率,如果设备的性能较高,可以将BGP发送新增路由的速率适当调大;如果设备的性能一般,建议将BGP发送新增路由的速率适当调小。
当网络发生震荡时,建议不要将BGP新增路由发布速率配置为0或过小,否则可能会导致失效路由无法及时撤销。
目前,仅支持对新增IPv4单播和IPv6单播路由的发送速率进行限制。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 配置BGP新增路由发布速率。
route-rate-limit rate
缺省情况下,不限制BGP发送新增路由的发布速率。
可以通过以下几种方式配置BGP路由信息的接收策略:
· 使用访问控制列表或地址前缀列表对从所有对等体接收的路由信息进行过滤。
· 从指定对等体或对等体组接收路由时,使用路由策略、访问控制列表、AS路径过滤列表或地址前缀列表对从该对等体或对等体组接收的路由信息进行过滤。
用户可以根据需求选择过滤策略。如果同时配置了几种过滤策略,则按照如下顺序过滤接收的路由:
· peer filter-policy import
· peer prefix-list import
· peer as-path-acl import
· filter-policy import
· peer route-policy import
只有通过前面的过滤策略,才能继续执行后面的过滤策略;只有通过所有配置的过滤策略后,路由信息才能被接收。
配置BGP路由信息的发布/接收策略前,根据采取的策略,需要配置下列过滤器:
· 访问控制列表,详细配置过程请参见“ACL和QoS配置指导”中的“ACL”。
· 地址前缀列表,详细配置过程请参见“三层技术-IP路由配置指导”中的“路由策略”。
· 路由策略,详细配置过程请参见“三层技术-IP路由配置指导”中的“路由策略”。
· AS路径过滤列表,详细配置过程请参见“三层技术-IP路由配置指导”中的“路由策略”。
使用了ACL、前缀列表以及路由策略过滤器来应用BGP路由的发布/接收策略时,三者具有以下特征:
· 在过滤策略指定了以上三种过滤器时,如果指定的是不存在的过滤器,则所有BGP路由均可以通过该过滤策略的过滤。
· 过滤策略通过ACL或者前缀列表进行过滤时(例如配置filter-policy export命令时指定通过ACL或前缀列表匹配BGP路由信息):
¡ BGP路由只有能够通过ACL或前缀列表permit动作的匹配,该路由才能通过过滤策略的过滤。即如果一个过滤策略指定的是全部为deny动作的ACL或前缀列表,那么所有BGP路由均无法通过该过滤策略的过滤。
¡ ACL按照配置顺序进行匹配时,设备根据规则编号从小到大的顺序进行匹配;前缀列表按照表项索引号从小到大的顺序进行匹配。在该匹配顺序下,路由匹配到了一个ACL规则或者前缀列表的表项后,就不会继续再往下匹配。所以在配置多个规则/表项的ACL/前缀列表时,请尽量将先匹配的规则/表项的匹配范围设置为较小一些,以免后匹配的规则/表项不生效。
¡ 指定高级ACL作为过滤器时,rule [ rule-id ] permit ip source sour-addr sour-wildcard destination dest-addr dest-wildcard中的source sour-addr sour-wildcard用来匹配路由的目的网络地址,destination dest-addr dest-wildcard用来匹配路由的掩码。需要注意的是,需要指定路由掩码的点分十进制格式,例如,如果需要匹配3.3.3.0/24的路由,指定的规则应为rule [ rule-id ] permit ip source 3.3.3.0 0.0.0.255 destination 255.255.255.0 0.0.0.255。
· 使用路由策略作为过滤器时:
¡ BGP路由只有能够通过路由策略的permit模式节点的匹配,才能通过过滤策略的过滤。
¡ 路由策略按照节点序号从小到大的顺序进行匹配。在该匹配顺序下,路由匹配到了一个节点后,就不会继续往下进行匹配(配置了continue子句的情况除外)。
¡ 如果路由策略中通过if-match命令指定了ACL或前缀列表,则BGP路由需要先通过ACL或前缀列表permit动作的匹配,再通过路由策略permit模式节点的匹配,才能通过过滤策略的过滤。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv4单播地址族视图、BGP-VPN IPv4单播地址族视图、BGP IPv4组播地址族视图、BGP IPv4单播标签地址族视图或BGP-VPN IPv4单播标签地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv4组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 multicast
¡ 请依次执行以下命令进入BGP IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 labeled-unicast
¡ 请依次执行以下命令进入BGP-VPN IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 labeled-unicast
(3) 配置BGP路由信息的接收策略。请至少选择其中一项进行配置。
¡ 对从所有对等体接收的路由信息进行过滤。
filter-policy { ipv4-acl-number | name ipv4-acl-name | prefix-list ipv4-prefix-list-name } import
¡ 为对等体/对等体组设置基于路由策略的路由接收过滤策略。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } route-policy route-policy-name import
¡ 为对等体/对等体组设置基于ACL的路由接收过滤策略。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } filter-policy { ipv4-acl-number | name ipv4-acl-name } ipv4-acl-number import
¡ 为对等体/对等体组设置基于AS路径过滤列表的路由接收过滤策略。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } as-path-acl { as-path-acl-number | as-path-acl-name } import
¡ 为对等体/对等体组设置基于IPv4地址前缀列表的路由接收过滤策略。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } prefix-list ipv4-prefix-list-name import
缺省情况下,不对接收的路由信息进行过滤。
BGP IPv4单播标签地址族视图和BGP-VPN IPv4单播标签地址族视图下不支持IPv6参数。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv6单播地址族视图、BGP-VPN IPv6单播地址族视图或BGP IPv6组播地址族视图。
¡ 请依次执行以下命令进入BGP IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv6组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 multicast
(3) 配置BGP路由信息的接收策略。请至少选择其中一项进行配置。
¡ 对从所有IPv6 BGP对等体接收的路由信息进行过滤。
filter-policy { ipv6-acl-number | name ipv6-acl-name | prefix-list ipv6-prefix-list-name } import
¡ 为对等体/对等体组设置基于路由策略的路由接收过滤策略。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } route-policy route-policy-name import
¡ 为对等体/对等体组设置基于ACL的路由接收过滤策略。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } filter-policy { ipv6-acl-number | name ipv6-acl-name } import
¡ 为对等体/对等体组设置基于AS路径过滤列表的路由接收过滤策略。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } as-path-acl { as-path-acl-number | as-path-acl-name } import
¡ 为对等体/对等体组设置基于IPv6地址前缀列表的路由接收过滤策略。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } prefix-list ipv6-prefix-list-name import
缺省情况下,不对接收的路由信息进行过滤。
配置了本功能时,在经过了重启且BGP进程恢复后,设备不能立刻向邻居发布更新消息,而是在一段延迟时间之后才能发送。这段延迟时间的作用是,设备重启后可以等待路由接收完成并优选后再向其他设备发布,以避免设备重启后路由信息不全,就发布给其他设备导致流量丢失的情况。
配置本功能后,如果需要部分路由前缀不受延迟发布控制,可以使用前缀列表进行控制,通过前缀列表过滤的路由不受延迟发布的影响。
对于BGP EVPN路由,路由更新消息延迟发布功能仅对IP前缀路由以及携带了IP路由信息的MAC/IP发布路由生效,无法对其他类型的BGP EVPN路由生效。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 配置设备重启且BGP进程恢复后,经过一段延迟时间才能发送更新消息。
bgp update-delay on-startup seconds
缺省情况下,设备重启且BGP进程恢复后,立刻向Established状态的BGP邻居发布路由更新消息。
(4) (可选)配置通过前缀列表控制BGP更新消息延迟发布。
bgp update-delay on-startup prefix-list ipv4-prefix-list-name
缺省情况下,未配置通过前缀列表控制BGP更新消息延迟发布。
设备在启动时,通过为BGP路由应用启动策略,修改发送的BGP路由的属性值,使得接收端优选其他设备发送的路由,可以减少设备重启造成的流量丢失。
如图2-1所示,Router B重启过程中,在路由没有完全收敛之前对外发布路由更新消息,可能会导致Router A通过Router B去往目的地的流量丢失。配置本功能后,在RouterB重启过程中,发送应用通过命令bgp policy on-startup med配置的MED属性值的路由更新消息,即修改路由更新消息中携带的属性值,使RouterA优选RouterC作为去往目的地的路由,从而减少设备重启造成的流量丢失。
图2-1 设备启动时为BGP路由应用启动策略示意图
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 配置设备在重启后发送应用启动策略的路由更新消息的时间。
bgp apply-policy on-startup duration seconds
缺省情况下,设备重启后发布未应用启动策略的路由更新消息。
(4) 配置启动策略中的MED值。
bgp policy on-startup med med-value
缺省情况下,启动策略中的MED值为4294967295。
为BGP对等体/对等体组配置SoO属性后,从该BGP对等体/对等体组接收路由时设备会为路由增加SoO属性,并且向该BGP对等体/对等体组发布路由时设备会检查路由的SoO属性,如果路由中携带的SoO属性与为对等体/对等体组配置的SoO属性相同,则不会将该路由发布给对等体/对等体组,从而避免路由环路。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv4单播地址族视图、BGP-VPN IPv4单播地址族视图、BGP IPv4组播地址族视图、BGP IPv4单播标签地址族视图或BGP-VPN IPv4单播标签地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv4组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 multicast
¡ 请依次执行以下命令进入BGP IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 labeled-unicast
¡ 请依次执行以下命令进入BGP-VPN IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 labeled-unicast
(3) 为BGP对等体/对等体组配置SoO属性。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } soo site-of-origin
缺省情况下,没有为BGP对等体/对等体组配置SoO属性。
BGP IPv4单播标签地址族视图和BGP-VPN IPv4单播标签地址族视图下不支持IPv6参数。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv6单播地址族视图、BGP-VPN IPv6单播地址族视图或BGP IPv6组播地址族视图。
¡ 请依次执行以下命令进入BGP IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv6组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 multicast
(3) 为BGP对等体/对等体组配置SoO属性。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } soo site-of-origin
缺省情况下,没有为BGP对等体/对等体组配置SoO属性。
为EBGP对等体/对等体组配置链路带宽属性后,从该EBGP对等体/对等体组接收路由时设备会为路由增加链路带宽属性,带宽值为与该直连EBGP建立邻居的接口带宽。该路由在传递给其他IBGP邻居时,将携带此链路带宽属性,设备可以根据路由携带的链路带宽属性对路由进行过滤。
本功能仅对直连EBGP对等体/对等体组生效,如果指定的对等体/对等体组由直连EBGP邻居变为非直连EBGP邻居,则从该邻居接收到的路由时,不再添加链路带宽属性。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv4单播地址族视图、BGP-VPN IPv4单播地址族视图或BGP IPv4组播地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv4组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 multicast
(3) 为BGP对等体/对等体组配置链路带宽属性。
peer { group-name | ipv4-address [ mask-length ] } bandwidth
缺省情况下,没有为对等体/对等体组配置链路带宽属性。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv6单播地址族视图、BGP-VPN IPv6单播地址族视图或BGP IPv6组播地址族视图。
¡ 请依次执行以下命令进入BGP IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv6组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 multicast
(3) 为BGP对等体/对等体组配置链路带宽属性。
peer { group-name | ipv6-address [ prefix-length ] } bandwidth
缺省情况下,没有为对等体/对等体组配置链路带宽属性。
当对等体间建立了BGP会话后,它们定时向对端发送Keepalive消息,以防止路由器认为BGP会话已中断。Keepalive消息的发送时间间隔称为存活时间间隔。
若路由器在设定的会话保持时间(Holdtime)内未收到对端的Keepalive消息或Update消息,则认为此BGP会话已中断,从而断开此BGP会话。
用户可以全局配置当前路由器上所有BGP会话的存活时间间隔与保持时间,也可以配置与指定对等体/对等体组建立的BGP会话的存活时间间隔和保持时间。如果同时配置了两者,则为指定对等体/对等体组配置的值具有较高的优先级。
存活时间间隔、会话保持时间的协商及计算方法如下:
· 如果当前路由器上配置的保持时间与对端设备(对等体)上配置的保持时间不一致,则数值较小者作为协商后的保持时间。协商的保持时间为0时,不向对等体发送Keepalive消息,与对等体之间的会话永远不会超时断开。
· 存活时间间隔不为0时,将协商的保持时间的三分之一与配置的存活时间间隔比较,取最小值作为存活时间间隔。
配置的保持时间必须大于或等于存活时间的三倍。
本功能可以针对所有BGP会话配置,或仅针对特定的对等体/对等体组配置。对于特定的对等体/对等体组,与设备间BGP会话的存活时间间隔和保持时间以peer timer命令的配置为准,如果设备未指定该对等体/对等体组配置过peer timer命令,则采用timer命令的配置。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置BGP会话的存活时间间隔和保持时间。请至少选择其中一项进行配置。
¡ 配置所有BGP会话的存活时间间隔和保持时间。
timer keepalive keepalive hold holdtime
配置本命令后,不会影响已建立的BGP会话,只对新建立的会话生效。
¡ 配置本地路由器与指定对等体/对等体组之间BGP会话的存活时间间隔和保持时间。
peer { group-name | ipv4-address [ mask-length ] } timer keepalive keepalive hold holdtime
缺省情况下,BGP会话的存活时间间隔为60秒,保持时间为180秒。
配置timer或peer timer命令后,不会马上断开会话,而是等到其他条件触发会话重建(如复位BGP会话)时,再以配置的保持时间协商建立会话。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置BGP会话的存活时间间隔和保持时间。请至少选择其中一项进行配置。
¡ 配置所有BGP会话的存活时间间隔和保持时间。
timer keepalive keepalive hold holdtime
配置本命令后,不会影响已建立的BGP会话,只对新建立的会话生效。
¡ 配置本地路由器与指定IPv6 BGP对等体/对等体组之间BGP会话的存活时间间隔和保持时间。
peer { group-name | ipv6-address [ prefix-length ] } timer keepalive keepalive hold holdtime
缺省情况下,BGP会话的存活时间间隔为60秒,保持时间为180秒。
配置timer或peer timer命令后,不会马上断开会话,而是等到其他条件触发会话重建(如复位BGP会话)时,再以配置的保持时间协商建立会话。
通过配置本功能可以控制重新建立BGP会话的速度:
· 当邻居关系建立失败,可以将定时器时间间隔的值调小,从而加快BGP会话建立的速度,便于路由快速收敛。
· 当邻居关系震荡时,可以将定时器时间间隔的值调大,从而减轻路由震荡。
配置本地路由器与指定对等体/对等体组之间重新建立BGP会话的时间间隔比配置本地路由器与所有对等体之间重新建立BGP会话的时间间隔的优先级高。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置本地路由器与对等体之间重新建立BGP会话的时间间隔。请选择其中一项进行配置。
¡ 配置本地路由器与所有对等体之间重新建立BGP会话的时间间隔。
timer connect-retry retry-time
¡ 配置本地路由器与指定对等体/对等体组之间重新建立BGP会话的时间间隔。
peer { group-name | ipv4-address [ mask-length ] } timer connect-retry retry-time
缺省情况下,本地路由器与对等体/对等体组之间重新建立BGP会话的时间间隔为32秒。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置本地路由器与对等体之间重新建立BGP会话的时间间隔。请选择其中一项进行配置。
¡ 配置本地路由器与所有对等体之间重新建立BGP会话的时间间隔。
timer connect-retry retry-time
¡ 配置本地路由器与指定IPv6 BGP对等体/对等体组之间重新建立BGP会话的时间间隔。
peer { group-name | ipv6-address [ prefix-length ] } timer connect-retry retry-time
缺省情况下,本地路由器与对等体/对等体组之间重新建立BGP会话的时间间隔为32秒。
BGP路由发生变化时,BGP路由器会发送Update消息通知对等体。如果同一路由频繁变化,BGP路由器会频繁发送Update消息更新路由,导致路由震荡。通过本配置指定向对等体/对等体组发布同一路由的更新时间间隔,可以避免每次路由变化都发送Update消息,避免路由震荡。对于需要撤销的路由,BGP路由器会立即向邻居发送路由撤销消息,不受本配置的控制。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图:
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置向指定对等体/对等体组发布同一路由的时间间隔。
peer { group-name | ipv4-address [ mask-length ] } route-update-interval interval
缺省情况下,向IBGP对等体发布同一路由的时间间隔为15秒,向EBGP对等体发布同一路由的时间间隔为30秒。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置向指定IPv6 BGP对等体/对等体组发布同一路由的时间间隔。
peer { group-name | ipv6-address [ prefix-length ] } route-update-interval interval
缺省情况下,向IBGP对等体发布同一路由的时间间隔为15秒,向EBGP对等体发布同一路由的时间间隔为30秒。
BGP会话首次建立、对等体切换所属打包组以及本地设备接收到对等体发送的Route-refresh消息等情况下,设备会将本端所有的BGP路由信息发送给相关对等体。这些路由信息称为Refresh路由。Refresh路由延迟发布定时器在设备首次需要向某一对等体发送Refresh路由时启动计时,在此期间,设备需向任意对等体发送的Refresh路由都将被延迟至计时器超时后统一按打包组进行发送。通过本功能配置适当的Refresh路由发送延迟时间,使尽可能多的Refresh路由统一按打包组进行发送,避免设备对同一条路由反复进行打包,以达到提升打包效率,节省系统资源的目的。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 配置Refresh路由的延迟发布时间。
refresh delay delay-value
缺省情况下,设备向BGP对等体发布Refresh路由的延迟时间为5秒。
本地标签是指本地设备通过VPNv4路由、VPNv6路由、带标签的IPv4单播路由或带标签的IPv6单播路由分配给其他BGP对等体的MPLS标签。为路由分配的本地标签发生变化时,如果立即删除本地标签,则BGP对等体可能尚未收到新的标签,仍然采用旧的标签转发报文,从而导致流量中断。为了避免上述情况发生,BGP需要延迟一段时间再删除本地标签。通过本配置可以调整本地标签的延迟删除时间。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 配置删除本地标签的延迟时间。
retain local-label retain-time
缺省情况下,删除本地标签的延迟时间为60秒。
全局使能BGP日志记录功能,并使能与指定对等体/对等体组之间BGP会话的日志记录功能后,与该对等体/对等体组之间的BGP会话建立以及断开时会生成日志信息,通过display bgp peer ipv4 unicast log-info命令或display bgp peer ipv6 unicast log-info命令可以查看记录的日志信息。生成的日志信息还将被发送到设备的信息中心,通过设置信息中心的参数,决定日志信息的输出规则(即是否允许输出以及输出方向)。
有关信息中心参数的配置请参见“网络管理和监控配置指导”中的“信息中心”。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 全局使能BGP日志记录功能。
log-peer-change
缺省情况下,全局BGP日志记录功能处于开启状态。
(4) (可选)进入BGP-VPN实例视图。
ip vpn-instance vpn-instance-name
(5) 使能与指定对等体/对等体组之间BGP会话的日志记录功能。
peer { group-name | ipv4-address [ mask-length ] } log-change
缺省情况下,与所有对等体/对等体组之间BGP会话的日志记录功能均处于开启状态。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 全局使能BGP日志记录功能。
log-peer-change
缺省情况下,全局BGP日志记录功能处于开启状态。
(4) (可选)进入BGP-VPN实例视图。
ip vpn-instance vpn-instance-name
(5) 使能与指定对等体/对等体组之间BGP会话的日志记录功能。
peer { group-name | ipv6-address [ prefix-length ] } log-change
缺省情况下,与所有对等体/对等体组之间BGP会话的日志记录功能均处于开启状态。
使能BGP对应地址族的路由抖动日志记录功能后,当该地址族的路由发生抖动并满足日志输出条件时会生成路由抖动日志信息。生成的日志信息还将被发送到设备的信息中心,通过设置信息中心的参数,决定日志信息的输出规则(即是否允许输出以及输出方向)。
有关信息中心参数的配置请参见“网络管理和监控配置指导”中的“信息中心”。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv4单播地址族视图、BGP-VPN IPv4单播地址族视图、BGP IPv4组播地址族视图、BGP IPv4单播标签地址族视图或BGP-VPN IPv4单播标签地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv4组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 multicast
¡ 请依次执行以下命令进入BGP IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 labeled-unicast
¡ 请依次执行以下命令进入BGP-VPN IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 labeled-unicast
(3) 使能BGP的路由抖动日志记录功能。
log-route-flap monitor-time monitor-count [ route-policy route-policy-name ] [ log-count-limit ]
缺省情况下,BGP的路由抖动日志记录功能处于关闭状态。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv6单播地址族视图、BGP-VPN IPv6单播地址族视图或BGP IPv6组播地址族视图。
¡ 请依次执行以下命令进入BGP IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv6组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 multicast
(3) 使能BGP的路由抖动日志记录功能。
log-route-flap monitor-time monitor-count [ route-policy route-policy-name ] [ log-count-limit ]
缺省情况下,BGP的路由抖动日志记录功能处于关闭状态。
开启BGP模块的告警功能后,当BGP会话的状态变化时BGP会产生RFC 4273中规定的告警信息,该信息包含邻居地址、最近一次出现错误的错误码和错误子码、当前的邻居状态。生成的告警信息将发送到设备的SNMP模块,通过设置SNMP中告警信息的发送参数,来决定告警信息输出的相关属性。
通过MIB(Management Information Base,管理信息库)节点对BGP进行管理时,BGP无法获知被管理的节点属于哪个BGP实例。为不同的BGP实例配置不同的SNMP上下文可以解决上述问题。
设备接收到SNMP报文后,根据报文中携带的上下文(对于SNMPv3)或团体名称(对于SNMPv1/v2c),判断如何进行处理:
· 对于SNMPv3报文:
¡ 如果报文中不携带上下文,且没有为default实例配置SNMP上下文,则对BGP default实例的MIB节点进行相应处理。
¡ 如果报文中携带上下文,设备上存在对应的SNMP上下文(通过系统视图下的snmp-agent context命令创建),且该上下文与为某一个BGP实例配置的上下文相同,则对该BGP实例的MIB节点进行相应处理。
¡ 其他情况下,不允许对任何MIB节点进行处理。
· 对于SNMPv1/v2c报文:
¡ 如果设备上没有通过系统视图下的snmp-agent community-map命令将报文中的团体名映射为SNMP上下文,且没有为default实例配置SNMP上下文,则对BGP default实例的MIB节点进行相应处理。
¡ 如果设备上将团体名映射为SNMP上下文,设备上存在对应的SNMP上下文,且该上下文与为某一个BGP实例配置的上下文相同,则对该BGP实例的MIB节点进行相应处理。
¡ 其他情况下,不允许对任何MIB节点进行处理。
有关告警信息的详细和SNMP上下文和团体名的详细介绍,请参见“网络管理和监控配置指导”中的“SNMP”。
(1) 进入系统视图。
system-view
(2) 开启BGP模块的告警功能。
snmp-agent trap enable bgp [ instance instance-name ] [ peer-addrfamily-routeexceed | peer-addrfamily-routeexceed-clear | peer-addrfamily-routethreshold-clear | peer-addrfamily-routethreshold-exceed | peer-backward-transition | peer-established | peer-routeexceed | peer-routeexceed-clear | peer-routethreshold-clear | peer-routethreshold-exceed | peer-rpkisession-roaexceed | peer-rpkisession-roaexceed-clear | vrfroutenum-threshold-exceed | vrfroutenum-threshold-clear ] *
缺省情况下,BGP模块的告警功能处于开启状态。
(3) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(4) 配置BGP实例的SNMP上下文。
snmp context-name context-name
缺省情况下,未配置BGP实例的SNMP上下文。
在完成上述配置后,在任意视图下执行display命令可以显示配置后BGP的运行情况,通过查看显示信息验证配置的效果。
表2-1 搭建基本BGP网络配置显示(IPv4单播)
操作 |
命令 |
显示BGP IPv4单播对等体组的信息 |
display bgp [ instance instance-name ] group ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] [ group-name group-name ] |
显示BGP IPv4单播地址族下的对等体或对等体组的状态和统计信息 |
display bgp [ instance instance-name ] peer ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] [ ipv4-address mask-length | { ipv4-address | group-name group-name } log-info | [ ipv4-address ] verbose ] display bgp [ instance instance-name ] peer ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] [ ipv6-address prefix-length | ipv6-address log-info | [ ipv6-address ] verbose ] display bgp [ instance instance-name ] peer ipv4 [ unicast ] vpn-instance-all [ verbose ] |
显示BGP IPv4单播路由信息 |
display bgp [ instance instance-name ] routing-table ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] [ ipv4-address [ mask-length | mask ][ longest-match ] | ipv4-address [ mask-length | mask ] advertise-info | as-path-acl { as-path-acl-number | as-path-acl-name } | as-path-regular-expression regular-expression | [ statistics ] { community [ community-number&<1-32> | aa:nn&<1-32> ] [ internet | no-advertise | no-export | no-export-subconfed ] [ whole-match ] | community-list { { basic-community-list-number | comm-list-name } [ whole-match ] | adv-community-list-number } } | peer { ipv4-address | ipv6-address } { advertised-routes | received-routes } [ ipv4-address [ mask-length | mask ] [ verbose ] | statistics ] | statistics ] display bgp [ instance instance-name ] routing-table ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] [ ipv4-address [ mask-length | mask ] ] [ statistics ] { large-community [ aa:bb:cc&<1-32> ] | large-community-list { basic-large-community-list-number | adv-large-community-list-number | large-comm-list-name } } [ whole-match ] display bgp [ instance instance-name ] routing-table ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] peer { ipv4-address | ipv6-address } { accepted-routes | not-accepted-routes } |
显示BGP IPv4单播路由的震荡统计信息 |
display bgp [ instance instance-name ] routing-table flap-info ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] [ ipv4-address [ { mask-length | mask } [ longest-match ] ] | as-path-acl { as-path-acl-number | as-path-acl-name } ] |
显示BGP对等体和BGP路由的汇总信息 |
display bgp [ instance instance-name ] ipv4 vpn-instance vpn-instance-name summary |
显示BGP邻居断开的原因 |
display bgp [ instance instance-name ] troubleshooting [ event-count ] [ reverse ] |
显示BGP IPv4单播地址族下打包组的相关信息 |
display bgp [ instance instance-name ] update-group ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] [ ipv4-address ] display bgp [ instance instance-name ] update-group ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] [ ipv6-address ] |
显示所有BGP实例的信息 |
display bgp instance-info |
显示通过network命令发布的路由信息和通过network short-cut命令配置的Short-cut路由信息 |
display bgp [ instance instance-name ] network ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] |
表2-2 搭建基本BGP网络配置显示(IPv6单播)
操作 |
命令 |
显示BGP IPv6单播对等体组的信息 |
display bgp [ instance instance-name ] group ipv6 [ unicast ] [ vpn-instance vpn-instance-name ] [ group-name group-name ] |
显示BGP IPv6单播地址族下的对等体或对等体组的状态和统计信息 |
display bgp [ instance instance-name ] peer ipv6 [ unicast ] [ vpn-instance vpn-instance-name ] [ ipv6-address prefix-length | { ipv6-address | group-name group-name } log-info | [ ipv6-address ] verbose ] display bgp [ instance instance-name ] peer ipv6 [ unicast ] [ vpn-instance vpn-instance-name ] [ ipv4-address mask-length | ipv4-address log-info | [ ipv4-address ] verbose ] display bgp [ instance instance-name ] peer ipv6 [ unicast ] vpn-instance-all [ verbose ] |
显示BGP IPv6单播路由信息 |
display bgp [ instance instance-name ] routing-table ipv6 [ unicast ] [ vpn-instance vpn-instance-name ] [ ipv6-address prefix-length [ advertise-info ] | as-path-acl { as-path-acl-number | as-path-acl-name } | as-path-regular-expression regular-expression | [ statistics ] { community [ community-number&<1-32> | aa:nn&<1-32> ] [ internet | no-advertise | no-export | no-export-subconfed ] [ whole-match ] | community-list { { basic-community-list-number | comm-list-name } [ whole-match ] | adv-community-list-number } } | peer { ipv4-address | ipv6-address } { advertised-routes | received-routes } [ ipv6-address prefix-length [ verbose ] | statistics ] | statistics ] display bgp [ instance instance-name ] routing-table ipv6 [ unicast ] [ vpn-instance vpn-instance-name ] [ ipv6-address prefix-length ] [ statistics ] { large-community [ aa:bb:cc&<1-32> ] | large-community-list { basic-large-comm-list-number | adv-large-comm-list-number | large-comm-list-name } } [ whole-match ] display bgp [ instance instance-name ] routing-table ipv6 [ unicast ] [ vpn-instance vpn-instance-name ] peer { ipv4-address | ipv6-address } { accepted-routes | not-accepted-routes } |
显示BGP IPv6单播路由的震荡统计信息 |
display bgp [ instance instance-name ] routing-table flap-info ipv6 [ unicast ] [ vpn-instance vpn-instance-name ] [ ipv6-address prefix-length | as-path-acl { as-path-acl-number | as-path-acl-name } ] |
显示BGP对等体和BGP路由的汇总信息 |
display bgp [ instance instance-name ] ipv6 vpn-instance vpn-instance-name summary |
显示BGP邻居断开的原因 |
display bgp [ instance instance-name ] troubleshooting [ event-count ] [ reverse ] |
显示BGP IPv6单播地址族下打包组的相关信息 |
display bgp [ instance instance-name ] update-group ipv6 [ unicast ] [ ipv4-address | ipv6-address ] display bgp [ instance instance-name ] update-group ipv6 [ unicast ] [ vpn-instance vpn-instance-name ] [ ipv4-address ] |
显示所有BGP实例的信息 |
display bgp instance-info |
显示通过network命令发布的路由信息和通过network short-cut命令配置的Short-cut路由信息 |
display bgp [ instance instance-name ] network ipv6 [ unicast ] [ vpn-instance vpn-instance-name ] |
表2-3 搭建基本BGP网络配置显示(IPv4单播标签)
操作 |
命令 |
显示BGP IPv4单播标签地址族下的对等体或对等体组的状态和统计信息 |
display bgp [ instance instance-name ] peer ipv4 labeled-unicast [ vpn-instance vpn-instance-name ] [ ipv4-address mask-length | { ipv4-address | group-name group-name } log-info | [ ipv4-address ] verbose ] display bgp [ instance instance-name ] peer ipv4 labeled-unicast vpn-instance-all [ verbose ] |
显示BGP IPv4单播标签路由信息 |
display bgp [ instance instance-name ] routing-table ipv4 labeled-unicast [ vpn-instance vpn-instance-name ] [ ipv4-address [ mask-length | mask ][ longest-match ] | ipv4-address [ mask-length | mask ] advertise-info | as-path-acl { as-path-acl-number | as-path-acl-name } | [ statistics ] { community [ community-number&<1-32> | aa:nn&<1-32> ] [ internet | no-advertise | no-export | no-export-subconfed ] [ whole-match ] | community-list { { basic-community-list-number | comm-list-name } [ whole-match ] | adv-community-list-number } } | peer ipv4-address { advertised-routes | received-routes } [ ipv4-address [ mask-length | mask ] [ verbose ] | statistics ] | statistics ] display bgp [ instance instance-name ] routing-table ipv4 labeled-unicast [ vpn-instance vpn-instance-name ] peer ipv4-address { accepted-routes | not-accepted-routes } |
显示BGP IPv4单播标签路由的震荡统计信息 |
display bgp [ instance instance-name ] routing-table flap-info ipv4 labeled-unicast [ vpn-instance vpn-instance-name ] [ ipv4-address [ { mask-length | mask } [ longest-match ] ] | as-path-acl { as-path-acl-number | as-path-acl-name } ] |
显示BGP IPv4单播标签路由的入标签信息 |
display bgp [ instance instance-name ] routing-table ipv4 [ vpn-instance vpn-instance-name ] labeled-unicast inlabel |
显示BGP IPv4单播标签路由的出标签信息 |
display bgp [ instance instance-name ] routing-table ipv4 [ vpn-instance vpn-instance-name ] labeled-unicast outlabel |
显示BGP IPv4单播标签对等体组的信息 |
display bgp [ instance instance-name ] group ipv4 labeled-unicast [ vpn-instance vpn-instance-name ] [ group-name group-name ] |
显示BGP IPv4单播标签地址族下打包组的相关信息 |
display bgp [ instance instance-name ] update-group ipv4 labeled-unicast [ vpn-instance vpn-instance-name ] [ ipv4-address ] |
显示通过network命令发布的路由信息和通过network short-cut命令配置的Short-cut路由信息 |
display bgp [ instance instance-name ] network ipv4 labeled-unicast [ vpn-instance vpn-instance-name ] |
表2-4 搭建基本BGP网络配置显示(IPv4组播)
操作 |
命令 |
显示BGP IPv4组播对等体组的信息 |
display bgp [ instance instance-name ] group ipv4 multicast [ group-name group-name ] |
显示BGP IPv4组播对等体或对等体组的状态和统计信息 |
display bgp [ instance instance-name ] peer ipv4 multicast [ ipv4-address mask-length | { ipv4-address | group-name group-name } log-info | [ ipv4-address ] verbose ] display bgp [ instance instance-name ] peer ipv4 multicast [ ipv6-address prefix-length | ipv6-address log-info | [ ipv6-address ] verbose ] |
显示BGP IPv4组播路由信息 |
display bgp [ instance instance-name ] routing-table ipv4 multicast [ ipv4-address [ mask-length | mask ][ longest-match ] | ipv4-address [ mask-length | mask ] advertise-info | as-path-acl { as-path-acl-number | as-path-acl-name } | as-path-regular-expression regular-expression | [ statistics ] { community [ community-number&<1-32> | aa:nn&<1-32> ] [ internet | no-advertise | no-export | no-export-subconfed ] [ whole-match ] | community-list { { basic-community-list-number | comm-list-name } [ whole-match ] | adv-community-list-number } } | peer { ipv4-address | ipv6-address } { advertised-routes | received-routes } [ ipv4-address [ mask-length | mask ] [ verbose ] | statistics ] | statistics ] display bgp [ instance instance-name ] routing-table ipv4 multicast [ ipv4-address [ mask-length | mask ] ] [ statistics ] { large-community [ aa:bb:cc&<1-32> ] | large-community-list { basic-large-comm-list-number | adv-large-comm-list-number | large-comm-list-name } } [ whole-match ] display bgp [ instance instance-name ] routing-table ipv4 multicast peer { ipv4-address | ipv6-address } { accepted-routes | not-accepted-routes } |
显示BGP IPv4组播路由的震荡统计信息 |
display bgp [ instance instance-name ] routing-table flap-info ipv4 multicast [ ipv4-address [ { mask-length | mask } [ longest-match ] ] | as-path-acl { as-path-acl-number | as-path-acl-name } ] |
显示BGP的路由属性信息 |
display bgp [ instance instance-name ] paths [ as-regular-expression ] |
显示BGP邻居断开的原因 |
display bgp [ instance instance-name ] troubleshooting [ event-count ] [ reverse ] |
显示BGP IPv4组播地址族下打包组的相关信息 |
display bgp [ instance instance-name ] update-group ipv4 multicast [ ipv4-address ] display bgp [ instance instance-name ] update-group ipv4 multicast [ ipv6-address ] |
显示所有BGP实例的信息 |
display bgp instance-info |
显示通过network命令发布的路由信息和通过network short-cut命令配置的Short-cut路由信息 |
display bgp [ instance instance-name ] network ipv4 multicast |
表2-5 搭建基本BGP网络配置显示(IPv6组播)
操作 |
命令 |
显示BGP IPv6组播对等体组的信息 |
display bgp [ instance instance-name ] group ipv6 multicast [ group-name group-name ] |
显示BGP IPv6组播对等体或对等体组的状态和统计信息 |
display bgp [ instance instance-name ] peer ipv6 multicast [ ipv6-address prefix-length | { ipv6-address | group-name group-name } log-info | [ ipv6-address ] verbose ] display bgp [ instance instance-name ] peer ipv6 multicast [ ipv4-address mask-length | { ipv4-address | group-name group-name } log-info | [ ipv4-address ] verbose ] |
显示BGP IPv6组播路由信息 |
display bgp [ instance instance-name ] routing-table ipv6 multicast [ ipv6-address prefix-length [ advertise-info ] | as-path-acl { as-path-acl-number | as-path-acl-name } | as-path-regular-expression regular-expression | [ statistics ] { community [ community-number&<1-32> | aa:nn&<1-32> ] [ internet | no-advertise | no-export | no-export-subconfed ] [ whole-match ] | community-list { { basic-community-list-number | comm-list-name } [ whole-match ] | adv-community-list-number } } | peer { ipv4-address | ipv6-address } { advertised-routes | received-routes } [ ipv6-address prefix-length [ verbose ] | statistics ] | statistics ] display bgp [ instance instance-name ] routing-table ipv6 multicast [ ipv6-address prefix-length ] [ statistics ] { large-community [ aa:bb:cc&<1-32> ] | large-community-list { basic-large-comm-list-number | adv-large-comm-list-number | large-comm-list-name } } [ whole-match ] display bgp [ instance instance-name ] routing-table ipv6 multicast peer { ipv4-address | ipv6-address } { accepted-routes | not-accepted-routes } |
显示BGP IPv6组播路由的震荡统计信息 |
display bgp [ instance instance-name ] routing-table flap-info ipv6 multicast [ ipv6-address prefix-length | as-path-acl { as-path-acl-number | as-path-acl-name } ] |
显示BGP的路由属性信息 |
display bgp [ instance instance-name ] paths [ as-regular-expression ] |
显示BGP邻居断开的原因 |
display bgp [ instance instance-name ] troubleshooting [ event-count ] [ reverse ] |
显示BGP IPv6组播地址族下打包组的相关信息 |
display bgp [ instance instance-name ] update-group ipv6 multicast [ ipv6-address ] display bgp [ instance instance-name ] update-group ipv6 multicast [ ipv4-address ] |
显示所有BGP实例的信息 |
display bgp instance-info |
显示通过network命令发布的路由信息和通过network short-cut命令配置的Short-cut路由信息 |
display bgp [ instance instance-name ] network ipv6 multicast |
当BGP路由策略或协议发生变化后,如果需要通过复位BGP会话使新的配置生效,请在用户视图下进行下列配置。
复位BGP会话时,会造成短暂的BGP会话中断。
表2-6 复位BGP会话
操作 |
命令 |
复位所有BGP会话 |
reset bgp [ instance instance-name ] all |
复位IPv4单播地址族下的BGP会话 |
reset bgp [ instance instance-name ] { as-number | ipv4-address [ mask-length ] | all | external | group group-name | internal } ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] reset bgp ipv6-address [ mask-length ] ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] |
复位IPv6单播地址族下的BGP会话 |
reset bgp [ instance instance-name ] { as-number | ipv6-address [ prefix-length ] | all | external | group group-name | internal } ipv6 [ unicast ] [ vpn-instance vpn-instance-name ] reset bgp ipv4-address [ mask-length ] ipv6 [ unicast ] [ vpn-instance vpn-instance-name ] |
复位IPv4单播标签地址族下的BGP会话 |
reset bgp [ instance instance-name ] { as-number | ipv4-address [ mask-length ] | all | external | group group-name | internal } ipv4 labeled-unicast [ vpn-instance vpn-instance-name ] |
复位IPv4组播地址族下的BGP会话 |
reset bgp [ instance instance-name ] { as-number | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] | all | external | group group-name | internal } ipv4 multicast |
复位IPv6组播地址族下的BGP会话 |
reset bgp [ instance instance-name ] { as-number | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] | all | external | group group-name | internal } ipv6 multicast |
在用户视图下,执行reset命令可以清除BGP相关统计信息。
表2-7 清除BGP信息
操作 |
命令 |
清除BGP IPv4单播路由的震荡统计信息 |
reset bgp [ instance instance-name ] flap-info ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] [ ipv4-address [ mask-length | mask ] | as-path-acl { as-path-acl-number | as-path-acl-name } | peer { ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } ] |
清除BGP IPv6单播路由的震荡统计信息 |
reset bgp [ instance instance-name ] flap-info ipv6 [ unicast ] [ vpn-instance vpn-instance-name ] [ ipv6-address prefix-length | as-path-acl { as-path-acl-number | as-path-acl-name } | peer { ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } ] |
清除BGP IPv4单播标签路由的震荡统计信息 |
reset bgp [ instance instance-name ] flap-info ipv4 labeled-unicast [ vpn-instance vpn-instance-name ] [ ipv4-address [ mask-length | mask ] | as-path-acl { as-path-acl-number | as-path-acl-name } | peer ipv4-address [ mask-length ] ] |
清除BGP IPv4组播路由的震荡统计信息 |
reset bgp [ instance instance-name ] flap-info ipv4 multicast [ ipv4-address [ mask-length | mask ] | as-path-acl { as-path-acl-number | as-path-acl-name } | peer { ipv4-address [ mask-length ] | ipv6-address [ prefix -length ] } ] |
清除BGP IPv6组播路由的震荡统计信息 |
reset bgp [ instance instance-name ] flap-info ipv6 multicast [ ipv6-address prefix-length | as-path-acl { as-path-acl-number | as-path-acl-name } | peer { ipv4-address [ mask-length ] | ipv6-address [ prefix -length ] } ] |
如图2-2所示,所有路由器均运行BGP协议。要求Router A和Router B之间建立EBGP连接,Router B和Router C之间建立IBGP连接,使得Router C能够访问Router A直连的8.1.1.0/24网段。
图2-2 BGP基本配置组网图
(1) 配置各接口的IP地址(略)
(2) 配置IBGP连接
¡ 为了防止端口状态不稳定引起路由震荡,本举例使用Loopback接口来创建IBGP对等体。
¡ 使用Loopback接口创建IBGP对等体时,因为Loopback接口不是两对等体实际连接的接口,所以,必须使用peer connect-interface命令将Loopback接口配置为BGP连接的源接口。
¡ 在AS 65009内部,使用OSPF协议,保证Router B到Router C的Loopback接口路由可达。
# 配置Router B。
<RouterB> system-view
[RouterB] bgp 65009
[RouterB-bgp-default] router-id 2.2.2.2
[RouterB-bgp-default] peer 3.3.3.3 as-number 65009
[RouterB-bgp-default] peer 3.3.3.3 connect-interface loopback 0
[RouterB-bgp-default] address-family ipv4 unicast
[RouterB-bgp-default-ipv4] peer 3.3.3.3 enable
[RouterB-bgp-default-ipv4] quit
[RouterB-bgp-default] quit
[RouterB] ospf 1
[RouterB-ospf-1] area 0
[RouterB-ospf-1-area-0.0.0.0] network 2.2.2.2 0.0.0.0
[RouterB-ospf-1-area-0.0.0.0] network 9.1.1.0 0.0.0.255
[RouterB-ospf-1-area-0.0.0.0] quit
[RouterB-ospf-1] quit
# 配置Router C。
<RouterC> system-view
[RouterC] bgp 65009
[RouterC-bgp-default] router-id 3.3.3.3
[RouterC-bgp-default] peer 2.2.2.2 as-number 65009
[RouterC-bgp-default] peer 2.2.2.2 connect-interface loopback 0
[RouterC-bgp-default] address-family ipv4 unicast
[RouterC-bgp-default-ipv4] peer 2.2.2.2 enable
[RouterC-bgp-default-ipv4] quit
[RouterC-bgp-default] quit
[RouterC] ospf 1
[RouterC-ospf-1] area 0
[RouterC-ospf-1-area-0.0.0.0] network 3.3.3.3 0.0.0.0
[RouterC-ospf-1-area-0.0.0.0] network 9.1.1.0 0.0.0.255
[RouterC-ospf-1-area-0.0.0.0] quit
[RouterC-ospf-1] quit
[RouterC] 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
* - Dynamically created peer
Peer AS MsgRcvd MsgSent OutQ PrefRcv Up/Down State
2.2.2.2 65009 7 10 0 0 00:06:09 Established
以上显示信息表明Router B和Router C之间的IBGP连接已经建立。
(3) 配置EBGP连接
¡ EBGP邻居关系的两台路由器(通常属于两个不同运营商),处于不同的AS域,对端的Loopback接口一般路由不可达,所以一般使用直连地址建立EBGP邻居。
¡ 因为要求Router C能够访问Router A直连的8.1.1.0/24网段,所以,建立EBGP连接后,需要将8.1.1.0/24网段路由通告到BGP路由表中。
# 配置Router A。
<RouterA> system-view
[RouterA] bgp 65008
[RouterA-bgp-default] router-id 1.1.1.1
[RouterA-bgp-default] peer 3.1.1.1 as-number 65009
[RouterA-bgp-default] address-family ipv4 unicast
[RouterA-bgp-default-ipv4] peer 3.1.1.1 enable
[RouterA-bgp-default-ipv4] network 8.1.1.0 24
[RouterA-bgp-default-ipv4] quit
[RouterA-bgp-default] quit
# 配置Router B。
[RouterB] bgp 65009
[RouterB-bgp-default] peer 3.1.1.2 as-number 65008
[RouterB-bgp-default] address-family ipv4 unicast
[RouterB-bgp-default-ipv4] peer 3.1.1.2 enable
[RouterB-bgp-default-ipv4] quit
[RouterB-bgp-default] quit
# 查看Router B的BGP对等体的连接状态。
[RouterB] 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
* - Dynamically created peer
Peer AS MsgRcvd MsgSent OutQ PrefRcv Up/Down State
3.3.3.3 65009 12 10 0 3 00:09:16 Established
3.1.1.2 65008 3 3 0 1 00:00:08 Established
可以看出,Router B与Router C、Router B与Router A之间的BGP连接均已建立。
# 查看Router A的BGP路由表。
[RouterA] display bgp routing-table ipv4
Total number of routes: 1
BGP local router ID is 1.1.1.1
Status codes: * - valid, > - best, d - dampened, h - history
s - suppressed, S - stale, i - internal, e - external
a - additional-path
Origin: i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
* > 8.1.1.0/24 8.1.1.1 0 32768 i
# 显示Router B的BGP路由表。
[RouterB] display bgp routing-table ipv4
Total number of routes: 1
BGP local router ID is 2.2.2.2
Status codes: * - valid, > - best, d - dampened, h - history
s - suppressed, S - stale, i - internal, e - external
a - additional-path
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
# 显示Router C的BGP路由表。
[RouterC] 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
a - additional-path
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
从路由表可以看出,Router A没有学到AS 65009内部的任何路由,Router C虽然学到了AS 65008中的8.1.1.0的路由,但因为下一跳3.1.1.2不可达,所以也不是有效路由。
(4) 配置BGP引入直连路由
在Router B上配置BGP引入直连路由,以便Router A能够获取到网段9.1.1.0/24的路由,Router C能够获取到网段3.1.1.0/24的路由。
# 配置Router B。
[RouterB] bgp 65009
[RouterB-bgp-default] address-family ipv4 unicast
[RouterB-bgp-default-ipv4] import-route direct
[RouterB-bgp-default-ipv4] quit
[RouterB-bgp-default] quit
# 显示Router A的BGP路由表。
[RouterA] display bgp routing-table ipv4
Total number of routes: 4
BGP local router ID is 1.1.1.1
Status codes: * - valid, > - best, d - dampened, h - history
s - suppressed, S - stale, i - internal, e - external
a - additional-path
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 32768 i
* >e 9.1.1.0/24 3.1.1.1 0 0 65009?
以上显示信息表明,在Router B上引入直连路由后,Router A新增了到达2.2.2.2/32和9.1.1.0/24的两条路由。
# 显示Router C的BGP路由表。
[RouterC] display bgp routing-table ipv4
Total number of routes: 4
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
a - additional-path
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的路由变为有效路由,下一跳为Router A的地址。
# 使用Ping进行验证。
[RouterC] 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=255 time=5.311 ms
56 bytes from 8.1.1.1: icmp_seq=1 ttl=255 time=1.719 ms
56 bytes from 8.1.1.1: icmp_seq=2 ttl=255 time=1.502 ms
56 bytes from 8.1.1.1: icmp_seq=3 ttl=255 time=1.809 ms
56 bytes from 8.1.1.1: icmp_seq=4 ttl=255 time=1.701 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/std-dev = 1.502/2.048/5.311/1.455 ms
如图2-3所示,公司A的所有设备在AS 65008内,公司B的所有设备在AS 65009内,AS 65008和AS 65009通过设备Router A和Router B相连。
现要求实现Router A能够访问AS 65009内的网段9.1.2.0/24,Router C能够访问AS 65008内的网段8.1.1.0/24。
图2-3 BGP与IGP交互配置组网图
(1) 配置各接口的IP地址(略)
(2) 配置OSPF
在AS 65009内配置OSPF,使得Router B能获取到到9.1.2.0/24网段的路由。
# 配置Router B。
<RouterB> system-view
[RouterB] ospf 1
[RouterB-ospf-1] area 0
[RouterB-ospf-1-area-0.0.0.0] network 2.2.2.2 0.0.0.0
[RouterB-ospf-1-area-0.0.0.0] network 9.1.1.0 0.0.0.255
[RouterB-ospf-1-area-0.0.0.0] quit
[RouterB-ospf-1] quit
# 配置Router C。
<RouterC> system-view
[RouterC] ospf 1
[RouterC-ospf-1] import-route direct
[RouterC-ospf-1] area 0
[RouterC-ospf-1-area-0.0.0.0] network 9.1.1.0 0.0.0.255
[RouterC-ospf-1-area-0.0.0.0] quit
[RouterC-ospf-1] quit
(3) 配置EBGP连接
配置EBGP连接,并在Router A上将8.1.1.0/24网段通告到BGP路由表中,以便Router B获取到网段8.1.1.0/24的路由。
# 配置Router A。
<RouterA> system-view
[RouterA] bgp 65008
[RouterA-bgp-default] router-id 1.1.1.1
[RouterA-bgp-default] peer 3.1.1.1 as-number 65009
[RouterA-bgp-default] address-family ipv4 unicast
[RouterA-bgp-default-ipv4] peer 3.1.1.1 enable
[RouterA-bgp-default-ipv4] network 8.1.1.0 24
[RouterA-bgp-default-ipv4] quit
[RouterA-bgp-default] quit
# 配置Router B。
[RouterB] bgp 65009
[RouterB-bgp-default] router-id 2.2.2.2
[RouterB-bgp-default] peer 3.1.1.2 as-number 65008
[RouterB-bgp-default] address-family ipv4 unicast
[RouterB-bgp-default-ipv4] peer 3.1.1.2 enable
(4) 配置BGP与IGP交互
¡ 在Router B上配置BGP引入OSPF路由,以便Router A能够获取到到9.1.2.0/24网段的路由。
¡ 在Router B上配置OSPF引入BGP路由,以便Router C能够获取到到8.1.1.0/24网段的路由。
# 在Router B上配置BGP和OSPF互相引入路由。
[RouterB-bgp-default-ipv4] import-route ospf 1
[RouterB-bgp-default-ipv4] quit
[RouterB-bgp-default] quit
[RouterB] ospf 1
[RouterB-ospf-1] import-route bgp
[RouterB-ospf-1] quit
# 查看Router A的BGP路由表。
[RouterA] display bgp routing-table ipv4
Total number of routes: 3
BGP local router ID is 1.1.1.1
Status codes: * - valid, > - best, d - dampened, h - history
s - suppressed, S - stale, i - internal, e - external
a - additional-path
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 32768 i
* >e 9.1.2.0/24 3.1.1.1 1 0 65009?
# 查看Router C的OSPF路由表。
[RouterC] display ospf routing
OSPF Process 1 with Router ID 3.3.3.3
Routing Table
Topology base (MTID 0)
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进行验证。
[RouterA] 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/std-dev = 2.000/8.000/12.000/3.406 ms
[RouterC] 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/std-dev = 3.000/4.400/9.000/2.332 ms
所有路由器均运行BGP协议。Router A需要分别与Router B、Router C和Router D建立IBGP连接。在Router A上配置BGP动态对等体,以简化配置。
配置Router A作为路由反射器,在Router B、Router C和Router D之间反射路由。
图2-4 BGP动态对等体配置组网图
(1) 配置各接口的IP地址(略)
(2) 配置IBGP连接
# 在Router A上配置BGP动态对等体。
<RouterA> system-view
[RouterA] bgp 200
[RouterA-bgp-default] router-id 1.1.1.1
[RouterA-bgp-default] peer 10.1.0.0 16 as-number 200
[RouterA-bgp-default] address-family ipv4
[RouterA-bgp-default-ipv4] peer 10.1.0.0 16 enable
# 在Router B上配置与Router A建立IBGP连接。
<RouterB> system-view
[RouterB] bgp 200
[RouterB-bgp-default] router-id 2.2.2.2
[RouterB-bgp-default] peer 10.1.1.1 as-number 200
[RouterB-bgp-default] address-family ipv4
[RouterB-bgp-default-ipv4] peer 10.1.1.1 enable
# 在Router C上配置与Router A建立IBGP连接。
<RouterC> system-view
[RouterC] bgp 200
[RouterC-bgp-default] router-id 3.3.3.3
[RouterC-bgp-default] peer 10.1.2.1 as-number 200
[RouterC-bgp-default] address-family ipv4
[RouterC-bgp-default-ipv4] peer 10.1.2.1 enable
# 在Router D上配置与Router A建立IBGP连接。
<RouterD> system-view
[RouterD] bgp 200
[RouterD-bgp-default] router-id 4.4.4.4
[RouterD-bgp-default] peer 10.1.3.1 as-number 200
[RouterD-bgp-default] address-family ipv4
[RouterD-bgp-default-ipv4] peer 10.1.3.1 enable
# 查看Router A的BGP对等体的连接状态。
[RouterA] display bgp peer ipv4
BGP local router ID : 1.1.1.1
Local AS number : 200
Total number of peers : 3 Peers in established state : 3
* - Dynamically created peer
Peer AS MsgRcvd MsgSent OutQ PrefRcv Up/Down State
*10.1.1.2 200 7 10 0 0 00:06:09 Established
*10.1.2.2 200 7 10 0 0 00:06:09 Established
*10.1.3.2 200 7 10 0 0 00:06:09 Established
以上显示信息表明Router A与Router B、Router C和Router D之间的IBGP连接已经建立。
(3) 配置路由反射器
# 配置Router A作为路由反射器,将网段10.1.0.0/16中的对等体作为路由反射的客户机。
[RouterA-bgp-default-ipv4] peer 10.1.0.0 16 reflect-client
(4) 配置发布网段路由
# 在Router C上配置发布网段路由9.1.1.0/24。
[RouterC-bgp-default-ipv4] network 9.1.1.0 24
# 在Router A、Router B和Router D上查看BGP路由表,可以看到均已学习到路由9.1.1.0/24。以Router A为例:
[RouterA-bgp-default] display bgp routing-table ipv4
Total Number of Routes: 1
BGP Local router ID is 1.1.1.1
Status codes: * - valid, > - best, d - dampened, h - history
s - suppressed, S - stale, i - internal, e - external
a - additional-path
Origin: i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
* i 9.1.1.0/24 10.1.2.2 0 100 0 ?
通过在边界设备Router C和外部网络设备Router D之间建立EBGP连接,实现公司内部网络与外部网络的互通。
在公司内部,核心层设备Router B与汇聚层设备Router A之间配置静态路由,Router B与Router C之间配置OSPF,并在OSPF路由中引入静态路由,以实现公司内部网络的互通。
公司内部网络包括三个网段:192.168.64.0/24、192.168.74.0/24和192.168.99.0/24。在Router C上配置路由聚合,将这三个网段的路由聚合为一条路由,以减少通过BGP发布的路由数量。
图2-5 BGP路由聚合组网图
(1) 配置各接口的IP地址(略)
(2) 在Router A和Router B之间配置静态路由
# 在Router A上配置缺省路由,下一跳为Router B。
<RouterA> system-view
[RouterA] ip route-static 0.0.0.0 0 192.168.212.1
# 在Router B上配置静态路由,到达目的网络192.168.64.0/24、192.168.74.0/24和192.168.99.0/24的路由下一跳均为Router A。
<RouterB> system-view
[RouterB] ip route-static 192.168.64.0 24 192.168.212.161
[RouterB] ip route-static 192.168.74.0 24 192.168.212.161
[RouterB] ip route-static 192.168.99.0 24 192.168.212.161
(3) 在Router B和Router C之间配置OSPF,并引入静态路由
# 在Router B上配置OSPF发布本地网段路由,并引入静态路由。
[RouterB] ospf
[RouterB-ospf-1] area 0
[RouterB-ospf-1-area-0.0.0.0] network 172.17.100.0 0.0.0.255
[RouterB-ospf-1-area-0.0.0.0] quit
[RouterB-ospf-1] import-route static
[RouterB-ospf-1] quit
# 在Router C上配置OSPF发布本地网段路由。
[RouterC] ospf
[RouterC-ospf-1] area 0
[RouterC-ospf-1-area-0.0.0.0] network 172.17.100.0 0.0.0.255
[RouterC-ospf-1-area-0.0.0.0] network 10.220.2.0 0.0.0.255
[RouterC-ospf-1-area-0.0.0.0] quit
[RouterC-ospf-1] quit
# 在Router C上查看路由表信息,可以看到Router C通过OSPF学习到了到达192.168.64.0/24、192.168.74.0/24和192.168.99.0/24网段的路由。
[RouterC] 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 O_ASE2 150 1 172.17.100.1 XGE3/1/1
192.168.74.0/24 O_ASE2 150 1 172.17.100.1 XGE3/1/1
192.168.99.0/24 O_ASE2 150 1 172.17.100.1 XGE3/1/1
OSPF Routing table status : <Inactive>
Summary count : 2
Destination/Mask Proto Pre Cost NextHop Interface
10.220.2.0/24 O_INTRA 10 1 10.220.2.16 XGE3/1/2
172.17.100.0/24 O_INTRA 10 1 172.17.100.2 XGE3/1/1
(4) 在Router C和Router D之间配置BGP,并引入OSPF路由
# 在Router C上配置Router D为其EBGP对等体,并引入OSPF路由。
[RouterC] bgp 65106
[RouterC-bgp-default] router-id 3.3.3.3
[RouterC-bgp-default] peer 10.220.2.217 as-number 64631
[RouterC-bgp-default] address-family ipv4 unicast
[RouterC-bgp-default-ipv4] peer 10.220.2.217 enable
[RouterC-bgp-default-ipv4] import-route ospf
# 在Router D上配置Router C为其EBGP对等体。
[RouterD] bgp 64631
[RouterD-bgp-default] router-id 4.4.4.4
[RouterD-bgp-default] peer 10.220.2.16 as-number 65106
[RouterD-bgp-default] address-family ipv4 unicast
[RouterD-bgp-default-ipv4] peer 10.220.2.16 enable
[RouterD-bgp-default-ipv4] quit
[RouterD-bgp-default] quit
# 在Router D上查看路由表信息,可以看到Router D通过BGP学习到了到达192.168.64.0/24、192.168.74.0/24和192.168.99.0/24三个网段的路由。
[RouterD] 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 XGE3/1/1
192.168.74.0/24 BGP 255 1 10.220.2.16 XGE3/1/1
192.168.99.0/24 BGP 255 1 10.220.2.16 XGE3/1/1
BGP Routing table status : <Inactive>
Summary count : 0
完成上述配置后,在Router D上可以ping通192.168.64.0/24、192.168.74.0/24和192.168.99.0/24网段内的主机。
(5) 在Router C上配置路由聚合
# 在Router C上将路由192.168.64.0/24、192.168.74.0/24和192.168.99.0/24聚合为192.168.64.0/18,并抑制发布具体路由。
[RouterC-bgp-default-ipv4] aggregate 192.168.64.0 18 detail-suppressed
[RouterC-bgp-default-ipv4] quit
[RouterC-bgp-default] quit
# 在Router C上查看路由表信息,可以看到Router C上产生了一条聚合路由192.168.64.0/18,该聚合路由的出接口为Null0。
[RouterC] 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 O_ASE2 150 1 172.17.100.1 XGE3/1/1
192.168.74.0/24 O_ASE2 150 1 172.17.100.1 XGE3/1/1
192.168.99.0/24 O_ASE2 150 1 172.17.100.1 XGE3/1/1
# 在Router D上查看路由表信息,可以看到Router D上到达公司内部三个网络的路由聚合为一条路由192.168.64.0/18。
[RouterD] 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 XGE3/1/1
BGP Routing table status : <Inactive>
Summary count : 0
完成上述配置后,成功实现了路由聚合。并且,在Router D上可以ping通192.168.64.0/24、192.168.74.0/24和192.168.99.0/24网段内的主机。
· 网络中存在两个自治系统:PIM-SM 1属于AS 100,PIM-SM 2属于AS 200。各AS内部采用OSPF交换路由信息,AS之间采用MBGP交换用于RPF检查的IPv4单播路由信息。
· 组播源属于AS 100内的PIM-SM 1,接收者则属于AS 200内的PIM-SM 2。
· 将Router A和Router B各自的Loopback0接口分别配置为各自PIM-SM域的C-BSR和C-RP。
· 在Router A与Router B之间通过MBGP建立MSDP(Multicast Source Discovery Protocol,组播源发现协议)对等体关系。
图2-6 MBGP配置组网图
设备 |
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
Source |
- |
10.110.1.100/24 |
Router C |
XGE3/1/1 |
10.110.2.1/24 |
Router A |
XGE3/1/1 |
10.110.1.1/24 |
|
XGE3/1/2 |
192.168.2.2/24 |
|
XGE3/1/2 |
192.168.1.1/24 |
|
XGE3/1/3 |
192.168.4.1/24 |
|
Loop0 |
1.1.1.1/32 |
|
Loop0 |
3.3.3.3/32 |
Router B |
XGE3/1/1 |
192.168.1.2/24 |
Router D |
XGE3/1/1 |
192.168.3.2/24 |
|
XGE3/1/2 |
192.168.3.1/24 |
|
XGE3/1/2 |
192.168.4.2/24 |
|
XGE3/1/3 |
192.168.2.1/24 |
|
Loop0 |
4.4.4.4/32 |
|
Loop0 |
2.2.2.2/32 |
|
(1) 配置各路由器接口的IP地址和单播路由协议
¡ 请按照图2-6配置各接口的IP地址和子网掩码,具体配置过程略。
¡ 配置AS 200内的各路由器之间采用OSPF路由协议交换路由信息(AS内各路由器使用的OSPF进程号为1),确保各AS内部在网络层互通,能学到彼此Loopback接口的路由,具体配置过程略。
(2) 使能IP组播路由,使能PIM-SM和IGMP,并配置BSR的服务边界
# 在Router A上使能IP组播路由,在各接口上使能PIM-SM。
<RouterA> system-view
[RouterA] multicast routing
[RouterA-mrib] quit
[RouterA] interface ten-gigabitethernet 3/1/1
[RouterA-Ten-GigabitEthernet3/1/1] pim sm
[RouterA-Ten-GigabitEthernet3/1/1] quit
[RouterA] interface ten-gigabitethernet 3/1/2
[RouterA-Ten-GigabitEthernet3/1/2] pim sm
[RouterA-Ten-GigabitEthernet3/1/2] quit
Router B和Router D上的配置与Router A相似,配置过程略。
# 在Router C上使能IP组播路由,在各接口上使能PIM-SM,并在主机侧接口Ten-GigabitEthernet3/1/1上使能IGMP。
<RouterC> system-view
[RouterC] multicast routing
[RouterC-mrib] quit
[RouterC] interface ten-gigabitethernet 3/1/2
[RouterC-Ten-GigabitEthernet3/1/2] pim sm
[RouterC-Ten-GigabitEthernet3/1/2] quit
[RouterC] interface ten-gigabitethernet 3/1/3
[RouterC-Ten-GigabitEthernet3/1/3] pim sm
[RouterC-Ten-GigabitEthernet3/1/3] quit
[RouterC] interface ten-gigabitethernet 3/1/1
[RouterC-Ten-GigabitEthernet3/1/1] pim sm
[RouterC-Ten-GigabitEthernet3/1/1] igmp enable
[RouterC-Ten-GigabitEthernet3/1/1] quit
# 在Router A上配置BSR的服务边界。
[RouterA] interface ten-gigabitethernet 3/1/2
[RouterA-Ten-GigabitEthernet3/1/2] pim bsr-boundary
[RouterA-Ten-GigabitEthernet3/1/2] quit
# 在Router B上配置BSR的服务边界。
[RouterB] interface ten-gigabitethernet 3/1/1
[RouterB-Ten-GigabitEthernet3/1/1] pim bsr-boundary
[RouterB-Ten-GigabitEthernet3/1/1] quit
(3) 配置Loopback0接口和C-BSR、C-RP的位置
# 在Router A上配置Loopback0接口和C-BSR、C-RP的位置。
[RouterA] interface loopback 0
[RouterA-LoopBack0] ip address 1.1.1.1 32
[RouterA-LoopBack0] pim sm
[RouterA-LoopBack0] quit
[RouterA] pim
[RouterA-pim] c-bsr 1.1.1.1
[RouterA-pim] c-rp 1.1.1.1
[RouterA-pim] quit
# 在Router B上配置Loopback0接口和C-BSR、C-RP的位置。
[RouterB] interface loopback 0
[RouterB-LoopBack0] ip address 2.2.2.2 32
[RouterB-LoopBack0] pim sm
[RouterB-LoopBack0] quit
[RouterB] pim
[RouterB-pim] c-bsr 2.2.2.2
[RouterB-pim] c-rp 2.2.2.2
[RouterB-pim] quit
(4) 配置BGP协议,建立BGP IPv4组播对等体,并引入路由
# 在Router A上配置其与Router B建立EBGP会话,使能Router A与Router B交换用于RPF检查的IPv4单播路由的能力,并引入直连路由。
[RouterA] bgp 100
[RouterA-bgp-default] router-id 1.1.1.1
[RouterA-bgp-default] peer 192.168.1.2 as-number 200
[RouterA-bgp-default] address-family ipv4 multicast
[RouterA-bgp-default-mul-ipv4] peer 192.168.1.2 enable
[RouterA-bgp-default-mul-ipv4] import-route direct
[RouterA-bgp-default-mul-ipv4] quit
[RouterA-bgp-default] quit
# 在Router B上配置其与Router A建立EBGP会话,使能Router A与Router B交换用于RPF检查的IPv4单播路由的能力,并引入OSPF路由。
[RouterB] bgp 200
[RouterB-bgp-default] router-id 2.2.2.2
[RouterB-bgp-default] peer 192.168.1.1 as-number 100
[RouterB-bgp-default] address-family ipv4 multicast
[RouterB-bgp-default-mul-ipv4] peer 192.168.1.1 enable
[RouterB-bgp-default-mul-ipv4] import-route ospf 1
[RouterB-bgp-default-mul-ipv4] quit
[RouterB-bgp-default] quit
(5) 配置MSDP对等体
# 在Router A上配置MSDP对等体。
[RouterA] msdp
[RouterA-msdp] peer 192.168.1.2 connect-interface ten-gigabitethernet 3/1/2
[RouterA-msdp] quit
# 在Router B上配置MSDP对等体。
[RouterB] msdp
[RouterB-msdp] peer 192.168.1.1 connect-interface ten-gigabitethernet 3/1/1
[RouterB-msdp] quit
# 执行display bgp peer ipv4 multicast命令查看BGP IPv4组播对等体。以Router B为例:
[RouterB] display bgp peer ipv4 multicast
BGP local router ID : 2.2.2.2
Local AS number : 200
Total number of peers : 1 Peers in established state : 1
Peer AS MsgRcvd MsgSent OutQ PrefRcv Up/Down State
192.168.1.1 100 56 56 0 0 00:40:54 Established
# 执行display msdp brief命令查看路由器之间MSDP对等体的建立情况。以Router B为例:
[RouterB] display msdp brief
Configured Established Listen Connect Shutdown Disabled
1 1 0 0 0 0
Peer address State Up/Down time AS SA count Reset count
192.168.1.1 Established 00:07:17 100 1 0
如图2-7所示,所有路由器均运行IPv6 BGP协议。Router A位于AS 65008;Router B和Router C位于AS 65009。要求Router A和Router B之间建立EBGP连接,Router B和Router C之间建立IBGP连接,使得Router C能够访问Router A直连的50::/64网段。
图2-7 IPv6 BGP基本配置组网图
(1) 配置各接口的IPv6地址及Loopback接口的IPv4地址(略)
(2) 配置IBGP连接
# 配置Router B。
<RouterB> system-view
[RouterB] bgp 65009
[RouterB-bgp-default] router-id 2.2.2.2
[RouterB-bgp-default] peer 9::2 as-number 65009
[RouterB-bgp-default] address-family ipv6
[RouterB-bgp-default-ipv6] peer 9::2 enable
[RouterB-bgp-default-ipv6] quit
# 配置Router C。
<RouterC> system-view
[RouterC] bgp 65009
[RouterC-bgp-default] router-id 3.3.3.3
[RouterC-bgp-default] peer 9::1 as-number 65009
[RouterC-bgp-default] address-family ipv6
[RouterC-bgp-default-ipv6] peer 9::1 enable
(3) 配置EBGP连接
# 配置Router A。
<RouterA> system-view
[RouterA] bgp 65008
[RouterA-bgp-default] router-id 1.1.1.1
[RouterA-bgp-default] peer 10::1 as-number 65009
[RouterA-bgp-default] address-family ipv6
[RouterA-bgp-default-ipv6] peer 10::1 enable
# 配置Router B。
[RouterB-bgp-default] peer 10::2 as-number 65008
[RouterB-bgp-default] address-family ipv6
[RouterB-bgp-default-ipv6] peer 10::2 enable
(4) 配置通过IPv6 BGP发布的网段路由
# 配置Router A。
[RouterA-bgp-default-ipv6] network 10:: 64
[RouterA-bgp-default-ipv6] network 50:: 64
[RouterA-bgp-default-ipv6] quit
[RouterA-bgp-default] quit
# 配置Router B。
[RouterB-bgp-default-ipv6] network 10:: 64
[RouterB-bgp-default-ipv6] network 9:: 64
[RouterB-bgp-default-ipv6] quit
[RouterB-bgp-default] quit
# 配置Router C。
[RouterC-bgp-default-ipv6] network 9:: 64
[RouterC-bgp-default-ipv6] quit
[RouterC-bgp-default] quit
# 在Router B上查看IPv6 BGP对等体的信息。可以看出,Router A和Router B之间建立了EBGP连接,Router B和Router C之间建立了IBGP连接。
[RouterB] display bgp peer ipv6
BGP local router ID: 2.2.2.2
Local AS number: 65009
Total number of peers: 2 Peers in established state: 2
* - Dynamically created peer
Peer AS MsgRcvd MsgSent OutQ PrefRcv Up/Down State
9::2 65009 41 43 0 1 00:29:00 Established
10::2 65008 38 38 0 2 00:27:20 Established
# 在Router A上查看IPv6 BGP路由表信息。可以看出,Router A学习到了AS 65009内的路由信息。
[RouterA] display bgp routing-table ipv6
Total number of routes: 4
BGP local router ID is 1.1.1.1
Status codes: * - valid, > - best, d - dampened, h - history
s - suppressed, S - stale, i - internal, e - external
a - additional-path
Origin: i - IGP, e - EGP, ? - incomplete
* >e Network : 9:: PrefixLen : 64
NextHop : 10::1 LocPrf :
PrefVal : 0 OutLabel : NULL
MED : 0
Path/Ogn: 65009i
* > Network : 10:: PrefixLen : 64
NextHop : :: LocPrf :
PrefVal : 32768 OutLabel : NULL
MED : 0
Path/Ogn: i
* e Network : 10:: PrefixLen : 64
NextHop : 10::1 LocPrf :
PrefVal : 0 OutLabel : NULL
MED : 0
Path/Ogn: 65009i
* > Network : 50:: PrefixLen : 64
NextHop : :: LocPrf :
PrefVal : 32768 OutLabel : NULL
MED : 0
Path/Ogn: i
# 在Router C上查看IPv6 BGP路由表信息。可以看出,Router C学习到了到达50::/64网段的路由。
[RouterC] display bgp routing-table ipv6
Total number of routes: 4
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
a - additional-path
Origin: i - IGP, e - EGP, ? - incomplete
* > Network : 9:: PrefixLen : 64
NextHop : :: LocPrf :
PrefVal : 32768 OutLabel : NULL
MED : 0
Path/Ogn: i
* i Network : 9:: PrefixLen : 64
NextHop : 9::1 LocPrf : 100
PrefVal : 0 OutLabel : NULL
MED : 0
Path/Ogn: i
* >i Network : 10:: PrefixLen : 64
NextHop : 9::1 LocPrf : 100
PrefVal : 0 OutLabel : NULL
MED : 0
Path/Ogn: i
* >i Network : 50:: PrefixLen : 64
NextHop : 10::2 LocPrf : 100
PrefVal : 0 OutLabel : NULL
MED : 0
Path/Ogn: 65008i
# 在Router C上可以ping通50::/64网段内的主机。(略)
· 网络中存在两个自治系统:IPv6 PIM-SM 1属于AS 100,IPv6 PIM-SM 2属于AS 200。各AS内部采用OSPFv3交换路由信息,AS之间采用IPv6 MBGP交换用于RPF检查的IPv6单播路由信息。
· IPv6组播源属于AS 100内的IPv6 PIM-SM 1,接收者则属于AS 200内的IPv6 PIM-SM 2。
· 在Router A 和Router B上使能Anycast-RP功能。
图2-8 IPv6 MBGP配置组网图
设备 |
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
Source |
- |
1002::100/64 |
Router B |
XGE3/1/1 |
1001::2/64 |
Router A |
XGE3/1/1 |
1002::1/64 |
|
XGE3/1/2 |
2002::1/64 |
|
XGE3/1/2 |
1001::1/64 |
|
XGE3/1/3 |
2001::1/64 |
|
Loop0 |
1:1::1/128 |
|
Loop0 |
1:1::1/128 |
|
Loop1 |
1:1::2/128 |
|
Loop1 |
2:2::2/128 |
Router C |
XGE3/1/1 |
3002::1/64 |
Router D |
XGE3/1/1 |
2002::2/64 |
|
XGE3/1/2 |
2001::2/64 |
|
XGE3/1/2 |
3001::2/64 |
|
XGE3/1/3 |
3001::1/64 |
|
|
|
(1) 配置IPv6地址和IPv6单播路由协议
· 按照图2-8配置各接口的IPv6地址和前缀长度,具体配置过程略。
· 配置AS 200内的各路由器之间采用OSPFv3路由协议交换路由信息(AS内各路由器使用的OSPFv3进程号为1),确保各AS内部在网络层互通,具体配置过程略。
(2) 使能IPv6组播路由,使能IPv6 PIM-SM和MLD,并配置BSR的服务边界
# 在Router A上使能IPv6组播路由,在各接口上使能IPv6 PIM-SM。
<RouterA> system-view
[RouterA] ipv6 multicast routing
[RouterA-mrib6] quit
[RouterA] interface ten-gigabitethernet 3/1/1
[RouterA-Ten-GigabitEthernet3/1/1] ipv6 pim sm
[RouterA-Ten-GigabitEthernet3/1/1] quit
[RouterA] interface ten-gigabitethernet 3/1/2
[RouterA-Ten-GigabitEthernet3/1/2] ipv6 pim sm
[RouterA-Ten-GigabitEthernet3/1/2] quit
[RouterA] interface loopback 0
[RouterA-LoopBack0] ipv6 pim sm
[RouterA-LoopBack0] quit
Router B和Router D上的配置与Router A相似,配置过程略。
# 在Router C上使能IPv6组播路由,在各接口上使能IPv6 PIM-SM,并在主机侧接口Ten-GigabitEthernet3/1/1上使能MLD。
<RouterC> system-view
[RouterC] ipv6 multicast routing
[RouterC-mrib6] quit
[RouterC] interface ten-gigabitethernet 3/1/2
[RouterC-Ten-GigabitEthernet3/1/2] ipv6 pim sm
[RouterC-Ten-GigabitEthernet3/1/2] quit
[RouterC] interface ten-gigabitethernet 3/1/3
[RouterC-Ten-GigabitEthernet3/1/3] ipv6 pim sm
[RouterC-Ten-GigabitEthernet3/1/3] quit
[RouterC] interface ten-gigabitethernet 3/1/1
[RouterC-Ten-GigabitEthernet3/1/1] ipv6 pim sm
[RouterC-Ten-GigabitEthernet3/1/1] mld enable
[RouterC-Ten-GigabitEthernet3/1/1] quit
# 在Router A上配置BSR的服务边界。
[RouterA] interface ten-gigabitethernet 3/1/2
[RouterA-Ten-GigabitEthernet3/1/2] ipv6 pim bsr-boundary
[RouterA-Ten-GigabitEthernet3/1/2] quit
# 在Router B上配置BSR的服务边界。
[RouterB] interface ten-gigabitethernet 3/1/1
[RouterB-Ten-GigabitEthernet3/1/1] ipv6 pim bsr-boundary
[RouterB-Ten-GigabitEthernet3/1/1] quit
(3) 使能Anycast-RP功能,并指定C-BSR和C-RP
# 配置Router A。
[RouterA] ipv6 pim
[RouterA-pim6] anycast-rp 1:1::1 1:1::2
[RouterA-pim6] anycast-rp 1:1::1 2:2::2
[RouterA-pim6] c-bsr 1:1::1
[RouterA-pim6] c-rp 1:1::1
[RouterA-pim6] quit
# 配置Router B。
[RouterB] ipv6 pim
[RouterB-pim6] anycast-rp 1:1::1 1:1::2
[RouterB-pim6] anycast-rp 1:1::1 2:2::2
[RouterB-pim6] c-bsr 1:1::1
[RouterB-pim6] c-rp 1:1::1
[RouterB-pim6] quit
(4) 配置BGP协议,建立BGP IPv6组播对等体,并引入路由
# 在Router A上配置其与Router B建立EBGP会话,使能Router A与Router B交换用于RPF检查的IPv6单播路由的能力,并引入直连路由。
[RouterA] bgp 100
[RouterA-bgp-default] router-id 1.1.1.1
[RouterA-bgp-default] peer 1001::2 as-number 200
[RouterA-bgp-default] address-family ipv6 multicast
[RouterA-bgp-default-mul-ipv6] peer 1001::2 enable
[RouterA-bgp-default-mul-ipv6] import-route direct
[RouterA-bgp-default-mul-ipv6] quit
# 在Router B上配置其与Router A建立EBGP会话,使能Router A与Router B交换用于RPF检查的IPv6单播路由的能力,并引入OSPFv3路由。
[RouterB] bgp 200
[RouterB-bgp-default] router-id 2.2.2.2
[RouterB-bgp-default] peer 1001::1 as-number 100
[RouterB-bgp-default] address-family ipv6 multicast
[RouterB-bgp-default-mul-ipv6] peer 1001::1 enable
[RouterB-bgp-default-mul-ipv6] import-route ospfv3 1
[RouterB-bgp-default-mul-ipv6] quit
(5) 在Router A和Router B之间建立BGP IPv6单播对等体,并引入路由,以便在不同域的两个RP之间转发注册报文
# 在Router A上使能与Router B交换IPv6单播路由的能力,并引入直连路由。
[RouterA-bgp-default] address-family ipv6 unicast
[RouterA-bgp-default-ipv6] peer 1001::2 enable
[RouterA-bgp-default-ipv6] import-route direct
[RouterA-bgp-default-ipv6] quit
[RouterA-bgp-default] quit
# 在Router B上使能与Router A交换IPv6单播路由的能力,并引入直连路由。
[RouterB-bgp-default] address-family ipv6 unicast
[RouterB-bgp-default-ipv6] peer 1001::1 enable
[RouterB-bgp-default-ipv6] import-route direct
[RouterB-bgp-default-ipv6] quit
[RouterB-bgp-default] quit
# 执行display bgp peer ipv6 multicast命令查看BGP IPv6组播对等体。以Router B为例:
[RouterB] display bgp peer ipv6 multicast
BGP local router ID : 2.2.2.2
Local AS number : 200
Total number of peers : 3 Peers in established state : 3
Peer AS MsgRcvd MsgSent OutQ PrefRcv Up/Down State
1001::1 100 56 56 0 0 00:40:54 Established
# 执行display ipv6 multicast rpf-info命令查看组播源的RPF信息。以Router B为例:
[RouterB] display ipv6 multicast rpf-info 1002::1
RPF information about source 1002::1:
RPF interface: XGE3/1/1, RPF neighbor: 1001::1
Referenced prefix/prefix length: 1002::/64
Referenced route type: mbgp
Route selection rule: preference-preferred
Load splitting rule: disable
使用display bgp peer ipv4 unicast命令或display bgp peer ipv6 unicast命令查看BGP对等体的信息,发现与对端的连接无法进入Established状态。
BGP邻居的建立需要能够使用179端口建立TCP会话,以及能够正确交换Open消息。
(1) 执行display current-configuration命令查看当前配置,检查邻居的AS号配置是否正确。
(2) 执行display bgp peer ipv4 unicast命令或display bgp peer ipv6 unicast命令检查邻居的IP地址/IPv6地址是否正确。
(3) 如果使用Loopback接口,检查是否配置了peer connect-interface命令。
(4) 如果是物理上非直连的EBGP邻居,检查是否配置了peer ebgp-max-hop命令。
(5) 如果配置了peer ttl-security hops命令,请检查对端是否也配置了该命令,且保证双方配置的hop-count不小于两台设备实际需要经过的跳数。
(6) 检查路由表中是否存在到邻居的可用路由。
(7) 使用ping命令检查链路是否畅通。
(8) 使用display tcp verbose命令或display ipv6 tcp verbose命令检查TCP连接是否正常。
(9) 检查是否配置了禁止TCP端口179的ACL。
大规模BGP网络配置任务如下:
· 配置BGP团体
· 配置BGP联盟
¡ (可选)配置联盟兼容性
通过配置BGP路由衰减,可以抑制不稳定的路由信息,不允许这类路由参与路由选择。缺省情况下,设备会对BGP路由衰减进行信息记录,用户可以根据路由衰减的信息记录,了解路由发生衰减或恢复可用时的相关信息。
本配置只对EBGP路由生效,对IBGP路由无效。
配置本功能后,EBGP邻居down了之后,来自该邻居的路由不会被删除,而是进行路由衰减。
主备倒换后,BGP路由的衰减过程和衰减信息会被重置,设备需要重新计算BGP路由的衰减机制。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv4单播地址族视图、BGP-VPN IPv4单播地址族视图、BGP IPv4组播地址族视图、BGP IPv4单播标签地址族视图或BGP-VPN IPv4单播标签地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv4组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 multicast
¡ 请依次执行以下命令进入BGP IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 labeled-unicast
¡ 请依次执行以下命令进入BGP-VPN IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 labeled-unicast
(3) 配置BGP路由衰减。
dampening [ half-life-reachable half-life-unreachable reuse suppress ceiling | route-policy route-policy-name ] *
缺省情况下,未配置BGP路由衰减。
(4) (可选)配置BGP路由衰减信息记录的最大数目。
a. 退回BGP实例视图。
- 在BGP-VPN IPv4单播地址族视图或BGP-VPN IPv4单播标签地址族视图下,请依次执行以下命令。
quit
quit
- 在BGP IPv4单播地址族视图、BGP IPv4组播地址族视图或BGP IPv4单播标签地址族视图下,退回BGP实例视图。
quit
b. 配置BGP路由衰减信息记录的最大数目。
dampening-log size size-number
缺省情况下,BGP路由衰减信息记录的最大数目为1000条。
配置BGP路由衰减信息记录的最大数目为0时,表示BGP不记录路由衰减信息。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv6单播地址族视图、BGP-VPN IPv6单播地址族视图或BGP IPv6组播地址族视图。
¡ 请依次执行以下命令进入BGP IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv6组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 multicast
(3) 配置IPv6 BGP路由衰减。
dampening [ half-life-reachable half-life-unreachable reuse suppress ceiling | route-policy route-policy-name ] *
缺省情况下,未配置IPv6 BGP路由衰减。
(4) (可选)配置BGP路由衰减信息记录的最大数目。
a. 退回BGP实例视图。
- 在BGP-VPN IPv6单播地址族视图下,请依次执行以下命令退回BGP实例视图。
quit
quit
- 在BGP IPv6单播地址族视图或BGP IPv6组播地址族视图下,退回BGP实例视图。
quit
b. 配置BGP路由衰减信息记录的最大数目。
dampening-log size size-number
缺省情况下,BGP路由衰减信息记录的最大数目为1000条。
配置BGP路由衰减信息记录的最大数目为0时,表示BGP不记录路由衰减信息。
缺省情况下,本地路由器不向对等体/对等体组发布团体属性、扩展团体属性和Large团体属性。如果接收到的路由中携带团体属性、扩展团体属性或Large团体属性,则本地路由器删除该团体属性、扩展团体属性或Large团体属性后,再将路由发布给对等体/对等体组。
通过本配置可以允许本地路由器在向对等体发布路由时携带团体属性、扩展团体属性或Large团体属性,以便根据团体属性、扩展团体属性或Large团体属性对路由进行过滤和控制。本配置和路由策略配合使用,可以灵活地控制路由中携带的团体属性、扩展团体属性或Large团体属性值,例如在路由中添加团体属性、扩展团体属性或Large团体属性、修改路由中原有的团体属性、扩展团体属性或Large团体属性值。路由策略的详细介绍,请参见“三层技术-IP路由配置指导”中的“路由策略”。
(1) 进入系统视图。
system-view
(2) 创建路由策略,并进入该路由策略视图。
route-policy route-policy-name { deny | permit } node node-number
有关本命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“路由策略”。
(3) (可选)配置if-match子句。BGP路由只有能够被允许模式的路由策略节点匹配,才能够被添加或修改团体属性。
有关if-match子句的详细配置,请参见“三层技术-IP路由配置指导”中的“路由策略”。
(4) 配置BGP路由的团体属性、扩展团体属性和Large团体属性。
¡ 配置BGP路由的团体属性。
apply community { none | additive | { community-number&<1-32> | aa:nn&<1-32> | internet | no-advertise | no-export | no-export-subconfed } * [ additive ] }
¡ 删除BGP路由的团体属性。
apply comm-list { comm-list-number | comm-list-name } delete
¡ 配置BGP路由的链路带宽扩展团体属性或Route Target扩展团体属性。
apply extcommunity { bandwidth link-bandwidth-value | { rt route-target }&<1-32> } [ additive ]
¡ 配置BGP路由的Color扩展团体属性。
apply extcommunity color color [ additive ]
¡ 配置BGP路由的SoO扩展团体属性。
apply extcommunity soo site-of-origin&<1-32> [ additive ]
¡ 配置BGP路由的Large团体属性。
apply large-community { aa:bb:cc&<1-8> [ additive ] | additive | none }
¡ 删除BGP路由的Large团体属性。
apply large-comm-list { large-comm-list-number | large-comm-list-name } delete
有关本步骤命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“路由策略”。
(5) 退回系统视图。
quit
(6) 进入BGP IPv4单播地址族视图、BGP-VPN IPv4单播地址族视图、BGP IPv4组播地址族视图、BGP IPv4单播标签地址族视图或BGP-VPN IPv4单播标签地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv4组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 multicast
¡ 请依次执行以下命令进入BGP IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 labeled-unicast
¡ 请依次执行以下命令进入BGP-VPN IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 labeled-unicast
(7) 配置向对等体/对等体组发布团体属性。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise-community
缺省情况下,不向对等体/对等体组发布团体属性。
BGP IPv4组播地址族视图下不支持IPv6参数。
(8) 配置向对等体/对等体组发布扩展团体属性。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise-ext-community
缺省情况下,不向对等体/对等体组发布扩展团体属性。
BGP IPv4组播地址族视图下不支持IPv6参数。
(9) 配置向对等体/对等体组发布Large团体属性。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise-large-community
缺省情况下,不向对等体/对等体组发布Large团体属性。
BGP IPv4单播标签地址族视图和BGP-VPN IPv4单播标签地址族视图下不支持IPv6参数。
(10) 对发布给对等体/对等体组的路由指定路由策略。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } route-policy route-policy-name export
缺省情况下,不指定对等体/对等体组的路由策略。
(1) 进入系统视图。
system-view
(2) 创建路由策略,并进入该路由策略视图。
route-policy route-policy-name { deny | permit } node node-number
有关本命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“路由策略”。
(3) (可选)配置if-match子句。BGP路由只有能够被允许模式的路由策略节点匹配,才能够被添加或修改团体属性。
有关if-match子句的详细配置,请参见“三层技术-IP路由配置指导”中的“路由策略”。
(4) 配置BGP路由的团体属性、扩展团体属性和Large团体属性。
¡ 配置BGP路由的团体属性。
apply community { none | additive | { community-number&<1-32> | aa:nn&<1-32> | internet | no-advertise | no-export | no-export-subconfed } * [ additive ] }
¡ 删除BGP路由的团体属性。
apply comm-list { comm-list-number | comm-list-name } delete
¡ 配置BGP路由的链路带宽扩展团体属性或Route Target扩展团体属性。
apply extcommunity { bandwidth link-bandwidth-value | { rt route-target }&<1-32> } [ additive ]
¡ 配置BGP路由的Color扩展团体属性。
apply extcommunity color color [ additive ]
¡ 配置BGP路由的SoO扩展团体属性。
apply extcommunity soo site-of-origin&<1-32> [ additive ]
¡ 配置BGP路由的Large团体属性。
apply large-community { aa:bb:cc&<1-8> [ additive ] | additive | none }
¡ 删除BGP路由的Large团体属性。
apply large-comm-list { large-comm-list-number | large-comm-list-name } delete
有关本步骤命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“路由策略”。
(5) 退回系统视图。
quit
(6) 进入BGP IPv6单播地址族视图、BGP-VPN IPv6单播地址族视图或BGP IPv6组播地址族视图。
¡ 请依次执行以下命令进入BGP IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv6组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 multicast
(7) 配置向对等体/对等体组发布团体属性。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise-community
缺省情况下,不向IPv6 BGP对等体/对等体组发布团体属性。
BGP IPv6组播地址族视图下不支持IPv4参数。
(8) 配置向对等体/对等体组发布扩展团体属性。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise-ext-community
缺省情况下,不向IPv6 BGP对等体/对等体组发布扩展团体属性。
BGP IPv6组播地址族视图下不支持IPv4参数。
(9) 配置向对等体/对等体组发布Large团体属性。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise-large-community
缺省情况下,不向IPv6 BGP对等体/对等体组发布Large团体属性。
BGP IPv6组播地址族视图下不支持IPv4参数。
(10) 对发布给IPv6 BGP对等体/对等体组的路由指定路由策略。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } route-policy route-policy-name export
缺省情况下,不指定对等体/对等体组的路由策略。
如果同一个AS内有多个BGP路由器,为了减少在同一AS内建立的IBGP连接数,可以将一台BGP路由器配置为路由反射器,其他路由器作为前者的客户机,使反射器和它的客户机组成为一个集群。集群内部通过路由反射器在客户机之间反射路由,各客户机之间不需要建立BGP连接即可交换路由信息。
为了增加网络的可靠性和防止单点故障,可以在一个集群中配置一个以上的路由反射器,这时,网络管理员必须给位于相同集群中的每个路由反射器配置相同的集群ID,以避免路由环路。
当一台路由反射器可能连接网络中的多个集群时,可以为不同对等体/对等体组指定集群ID,以便对路由反射进行更精细控制。
BGP路由反射功能仅需在作为反射器的设备上进行配置,其他设备不需要感知本机在反射功能中作为客户机或是非客户机。
设备被配置为路由反射器后,发布路由的规则如下:
· 将从IBGP对等体中非客户机设备收到的路由,发布给本反射器的所有客户机;
· 将从IBGP对等体中客户机收到的路由,发布给本反射器所有的非客户机和客户机;
· 将从所有EBGP对等体收到的路由,发布给本反射器所有的非客户机和客户机。
针同一个对等体/对等体组同时配置reflector cluster-id和peer cluster-id命令,则以peer cluster-id命令为准。如果未配置peer cluster-id命令为对等体/对等体组指定集群ID,则该对等体/对等体组的集群ID以reflector cluster-id命令的配置为准。
为了防止路由循环,缺省情况下,路由反射器在反射路由时不允许修改任何BGP路由属性。但在某些特殊场景下,网络管理员需要对网络流量进行重新规划时,需要修改BGP路由的属性,此时可以配置reflect change-path-attribute命令,允许路由反射器在反射BGP路由时修改路由的属性。配置reflect change-path-attribute命令后,可以通过peer route-policy export命令修改发布路由的路由属性,在peer route-policy export命令指定的路由策略中,可以通过apply命令生效的路由属性修改包括:
· 通过apply origin命令修改路由的源属性。
· 通过apply ip-address next-hop或apply ipv6 next-hop命令修改路由的下一跳属性。
· 通过apply cost命令修改路由的MED属性。
· 通过apply local-preference命令修改路由的本地优先级属性。
· 通过apply community命令为路由添加、修改团体属性。如需向BGP对等体发布携带团体属性的路由,需要执行peer advertise-community命令开启向对等体发布携带团体属性路由的能力。
· 通过apply comm-list delete命令删除路由携带的团体属性。
· 通过apply extcommunity命令为路由添加、修改扩展团体属性中的链路带宽属性或Route Target属性。如需向BGP对等体发布携带扩展团体属性的路由,需要执行peer advertise-ext-community命令开启向对等体发布携带扩展团体属性路由的能力。
· 通过apply extcommunity color命令为路由添加、修改Color扩展团体属性。
· 通过apply extcommunity soo命令为路由添加、修改SoO扩展团体属性。
· 通过apply large-community命令为路由添加、修改Large团体属性。如需向BGP对等体发布携带Large团体属性的路由,需要执行peer advertise-large-community命令开启向对等体发布携带Large团体属性路由的能力。
· 通过apply large-comm-list delete命令为路由删除Large团体属性。
· 通过apply aigp命令为路由添加、修改AIGP属性。如需向BGP对等体发布携带AIGP属性的路由,需要执行peer aigp命令开启向对等体发布携带AIGP属性路由的能力。
有关上述apply命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“路由策略”。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 为对等体/对等体组配置路由反射器的集群ID。
peer { group-name | ipv4-address [ mask-length ] } cluster-id cluster-id
缺省情况下,没有为对等体/对等体组配置路由反射器的集群ID。
(4) 进入BGP IPv4单播地址族视图、BGP-VPN IPv4单播地址族视图、BGP IPv4组播地址族视图、BGP IPv4单播标签地址族视图或BGP-VPN IPv4单播标签地址族视图。
¡ 进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图。
address-family ipv4 [ unicast ]
¡ 进入BGP IPv4组播地址族视图。
address-family ipv4 multicast
仅BGP实例视图下支持本配置。
¡ 进入BGP IPv4单播标签地址族视图或BGP-VPN IPv4单播标签地址族视图。
address-family ipv4 labeled-unicast
(5) 配置本机作为路由反射器,对等体/对等体组作为路由反射器的客户机。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } reflect-client
缺省情况下,未配置路由反射器及其客户机。
BGP IPv4单播标签地址族视图和BGP-VPN IPv4单播标签地址族视图下不支持IPv6参数。
BGP IPv6组播地址族视图下不支持IPv4参数。
(6) (可选)允许路由反射器在客户机之间反射路由。
reflect between-clients
缺省情况下,允许路由反射器在客户机之间反射路由。
(7) (可选)配置路由反射器的集群ID。
reflector cluster-id { cluster-id | ipv4-address }
缺省情况下,每个路由反射器都使用自己的Router ID作为集群ID。
(8) (可选)允许路由反射器反射路由时修改路由属性。
reflect change-path-attribute
缺省情况下,不允许路由反射器反射路由时修改路由属性。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 为对等体/对等体组配置路由反射器的集群ID。
peer { group-name | ipv6-address [ prefix-length ] } cluster-id cluster-id
缺省情况下,没有为对等体/对等体组配置路由反射器的集群ID。
(4) 进入BGP IPv6单播地址族视图或BGP IPv6组播地址族视图。
¡ 进入BGP IPv6单播地址族视图。
address-family ipv6 [ unicast ]
¡ 进入BGP IPv6组播地址族视图。
address-family ipv6 multicast
仅BGP实例视图下支持本配置。
(5) 配置本机作为路由反射器,对等体/对等体组作为路由反射器的客户机。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } reflect-client
缺省情况下,未配置路由反射器及其客户机。
(6) (可选)允许路由反射器在客户机之间反射路由。
reflect between-clients
缺省情况下,允许路由反射器在客户机之间反射路由。
(7) (可选)配置路由反射器的集群ID。
reflector cluster-id { cluster-id | ipv4-address }
缺省情况下,每个路由反射器都使用自己的Router ID作为集群ID。
(8) (可选)允许路由反射器反射路由时修改路由属性。
reflect change-path-attribute
缺省情况下,不允许路由反射器反射路由时修改路由属性。
路由反射器从某个对等体接收到路由后,在反射该路由之前为其添加ORIGINATOR_ID属性,标识该路由在本AS内的起源。ORIGINATOR_ID属性的值为该对等体的Router ID。BGP路由器接收到路由后,将路由中的ORIGINATOR_ID属性值与本地的Router ID进行比较,如果二者相同则丢弃该路由,从而避免路由环路。
在某些特殊的组网中(如防火墙组网),如果需要接收ORIGINATOR_ID属性值与本地Router ID相同的路由,则需要通过本配置忽略BGP路由的ORIGINATOR_ID属性。
请谨慎使用本命令。如果无法确保执行本命令后网络中不会产生环路,请不要执行本命令。
执行本命令后,BGP路由的CLUSTER_LIST属性也会被忽略。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置忽略BGP路由的ORIGINATOR_ID属性。
peer { group-name | ipv4-address [ mask-length ] } ignore-originatorid
缺省情况下,BGP路由器不会忽略BGP路由的ORIGINATOR_ID属性。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置忽略BGP路由的ORIGINATOR_ID属性。
peer { group-name | ipv6-address [ prefix-length ] } ignore-originatorid
缺省情况下,BGP路由器不会忽略BGP路由的ORIGINATOR_ID属性。
在路由反射器组网中,BGP通过比较路由的CLUSTER_LIST和ORIGINATOR_ID属性来避免环路,当CLUSTER_LIST属性中包含本地的CLUSTER_ID或ORIGINATOR_ID属性与本地相同时,则丢弃该路由。在部分特殊组网中,路由可能会在公网与VPN、不同VPN之间转发,此时路由携带的原始网络(公网或VPN网络)中的反射相关路由属性无意义。通过配置本命令,可以使得BGP路由器在公网与VPN实例、不同VPN实例之间转发路由前,清除BGP路由的CLUSTER_LIST和ORIGINATOR_ID属性,从而避免反射相关属性引起预期外的流量丢失。
配置本功能后,设备将向所有对等体/对等体组重新发送所有地址族下的全部路由。
请谨慎使用本功能。如果无法确保配置本功能后网络中不会产生环路,请不要配置本功能。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 配置路由来源和发送邻居不属于同一个VPN实例时,发送前清除BGP路由的CLUSTER_LIST和ORIGINATOR_ID属性。
advertise-between-vrf clear-reflect-attributes
缺省情况下,设备发送路由前不会清除BGP路由的CLUSTER_LIST和ORIGINATOR_ID属性。
在某些特殊组网中,需要在不同AS域中的边界设备间建立EBGP对等体的全连接关系。当对等体数目很多时,全连接对网络资源和设备性能的消耗很大。为了解决上述问题,配置一台设备作为Route Server,需要建立全连接的边界设备与Route Server建立对等体,这些边界设备将作为Route Server的客户机。Route Server向客户机发送路由时,不修改路由的AS_Path、Next_Hop和MED属性,使客户机之间不需要建立EBGP全连接也能学习到彼此的路由,客户机之间的流量转发也不需要经过Route Server。
在本机上配置Route Server功能后,向指定对等体发送的报文中不会携带自己的AS号,因此对端设备上需要配置peer ignore-first-as命令,不检查从指定EBGP对等体发来的更新消息中AS_Path属性的第一个AS号,否则邻居关系无法正常建立。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
(3) 在本机上开启Route Server功能,配置对等体/对等体组作为Route Server的客户机。
peer { group-name | ipv4-address [ mask-length ] } route-server-client
缺省情况下,未配置Route Server功能及其客户机。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv6单播地址族视图或BGP-VPN IPv6单播地址族视图。
¡ 请依次执行以下命令进入BGP IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
(3) 在本机上开启Route Server功能,配置对等体/对等体组作为Route Server的客户机。
peer { group-name | ipv6-address [ prefix-length ] } route-server-client
缺省情况下,未配置Route Server功能及其客户机。
联盟是处理AS内部的IBGP网络连接激增的另一种方法,它将一个自治系统划分为若干个子自治系统,每个子自治系统内部的IBGP对等体建立全连接关系,子自治系统之间建立EBGP连接关系。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 配置联盟的ID。
confederation id as-number
缺省情况下,未配置联盟的ID。
在不属于联盟的BGP发言者看来,属于同一个联盟的多个子自治系统是一个整体,联盟ID就是标识联盟这一整体的自治系统号。
(4) 配置联盟中的子自治系统。
confederation peer-as as-number-list
缺省情况下,未配置联盟中的子自治系统。一个联盟最多可包括32个子自治系统,配置属于联盟的子自治系统时使用的as-number仅在联盟内部有效。
如果路由器与联盟中的其它子自治系统建立EBGP邻居关系,需要在该路由器上指定该联盟体中除了自己还包含哪些子自治系统。
如果其他路由器的联盟实现机制不同于RFC 3065标准,可以通过如下配置与未采用RFC 3065配置的AS联盟兼容。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 配置设备可以与未遵循RFC 3065实现联盟的路由器互通。
confederation nonstandard
缺省情况下,设备不能与未遵循RFC 3065实现联盟的路由器互通。
在完成上述配置后,在任意视图下执行display命令可以显示配置后BGP的运行情况,通过查看显示信息验证配置的效果。
表3-1 大规模BGP网络配置显示(IPv4单播)
操作 |
命令 |
显示BGP IPv4单播对等体组的信息 |
display bgp [ instance instance-name ] group ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] [ group-name group-name ] |
显示BGP IPv4单播地址族下的对等体或对等体组的状态和统计信息 |
display bgp [ instance instance-name ] peer ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] [ ipv4-address mask-length | { ipv4-address | group-name group-name } log-info | [ ipv4-address ] verbose ] display bgp [ instance instance-name ] peer ipv4 [ unicast ] [ ipv6-address prefix-length | ipv6-address log-info | [ ipv6-address ] verbose ] |
显示BGP IPv4单播路由的震荡统计信息 |
display bgp [ instance instance-name ] routing-table flap-info ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] [ ipv4-address [ { mask-length | mask } [ longest-match ] ] | as-path-acl { as-path-acl-number | as-path-acl-name } ] |
显示衰减的BGP IPv4单播路由信息 |
display bgp [ instance instance-name ] routing-table dampened ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] |
显示BGP IPv4单播路由的路由衰减参数 |
display bgp [ instance instance-name ] dampening parameter ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] |
清除BGP IPv4单播路由的衰减信息,并解除对BGP路由的抑制 |
reset bgp [ instance instance-name ] dampening ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] [ ipv4-address [ mask-length | mask ] ] |
表3-2 大规模BGP网络配置显示(IPv6单播)
操作 |
命令 |
显示BGP IPv6单播对等体组的信息 |
display bgp [ instance instance-name ] group ipv6 [ unicast ] [ vpn-instance vpn-instance-name ] [ group-name group-name ] |
显示BGP IPv6单播地址族下的对等体或对等体组的状态和统计信息 |
display bgp [ instance instance-name ] peer ipv6 [ unicast ] [ vpn-instance vpn-instance-name ] [ ipv6-address prefix-length | { ipv6-address | group-name group-name } log-info | [ ipv6-address ] verbose ] display bgp [ instance instance-name ] peer ipv6 [ unicast ] [ ipv4-address mask-length | ipv4-address log-info | [ ipv4-address ] verbose ] |
显示BGP IPv6单播路由的震荡统计信息 |
display bgp [ instance instance-name ] routing-table flap-info ipv6 [ unicast ] [ vpn-instance vpn-instance-name ] [ ipv6-address prefix-length | as-path-acl { as-path-acl-number | as-path-acl-name } ] |
显示衰减的BGP IPv6单播路由信息 |
display bgp [ instance instance-name ] routing-table dampened ipv6 [ unicast ] [ vpn-instance vpn-instance-name ] |
显示BGP IPv6单播路由的路由衰减参数 |
display bgp [ instance instance-name ] dampening parameter ipv6 [ unicast ] [ vpn-instance vpn-instance-name ] |
清除BGP IPv6单播路由的衰减信息,并解除对BGP路由的抑制 |
reset bgp [ instance instance-name ] dampening ipv6 [ unicast ] [ vpn-instance vpn-instance-name ] [ ipv6-address prefix-length ] |
表3-3 大规模BGP网络配置显示(IPv4单播标签)
操作 |
命令 |
显示BGP IPv4单播标签对等体组的信息 |
display bgp [ instance instance-name ] group ipv4 labeled-unicast [ vpn-instance vpn-instance-name ] [ group-name group-name ] |
显示BGP IPv4单播标签地址族下的对等体或对等体组的状态和统计信息 |
display bgp [ instance instance-name ] peer ipv4 labeled-unicast [ vpn-instance vpn-instance-name ] [ ipv4-address mask-length | { ipv4-address | group-name group-name } log-info | [ ipv4-address ] verbose ] display bgp [ instance instance-name ] peer ipv4 labeled-unicast vpn-instance-all [ verbose ] |
显示BGP IPv4单播标签路由的震荡统计信息 |
display bgp [ instance instance-name ] routing-table flap-info ipv4 labeled-unicast [ vpn-instance vpn-instance-name ] [ ipv4-address [ { mask-length | mask } [ longest-match ] ] | as-path-acl { as-path-acl-number | as-path-acl-name } ] |
显示BGP IPv4单播标签路由的路由衰减参数 |
display bgp [ instance instance-name ] dampening parameter ipv4 labeled-unicast [ vpn-instance vpn-instance-name ] |
清除BGP IPv4单播标签路由的衰减信息,并解除对BGP路由的抑制 |
reset bgp [ instance instance-name ] dampening ipv4 labeled-unicast [ vpn-instance vpn-instance-name ] [ ipv4-address [ mask-length | mask ] ] |
表3-4 大规模BGP网络配置显示(IPv4组播)
操作 |
命令 |
显示BGP IPv4组播对等体组的信息 |
display bgp [ instance instance-name ] group ipv4 multicast [ group-name group-name ] |
显示BGP IPv4组播对等体或对等体组的状态和统计信息 |
display bgp [ instance instance-name ] peer ipv4 multicast [ ipv4-address mask-length | { ipv4-address | group-name group-name } log-info | [ ipv4-address ] verbose ] display bgp [ instance instance-name ] peer ipv4 multicast [ ipv6-address prefix-length | ipv6-address log-info | [ ipv6-address ] verbose ] |
显示BGP IPv4组播路由的震荡统计信息 |
display bgp [ instance instance-name ] routing-table flap-info ipv4 multicast [ ipv4-address [ { mask-length | mask } [ longest-match ] ] | as-path-acl { as-path-acl-number | as-path-acl-name } ] |
显示衰减的BGP IPv4组播路由信息 |
display bgp [ instance instance-name ] routing-table dampened ipv4 multicast |
显示BGP IPv4组播路由的路由衰减参数 |
display bgp [ instance instance-name ] dampening parameter ipv4 multicast |
清除BGP IPv4组播路由的衰减信息,并解除对BGP路由的抑制 |
reset bgp [ instance instance-name ] dampening ipv4 multicast [ ipv4-address [ mask-length | mask ] ] |
表3-5 大规模BGP网络配置显示(IPv6组播)
操作 |
命令 |
显示BGP IPv6组播对等体组的信息 |
display bgp [ instance instance-name ] group ipv6 multicast [ group-name group-name ] |
显示BGP IPv6组播对等体或对等体组的状态和统计信息 |
display bgp [ instance instance-name ] peer ipv6 multicast [ ipv6-address prefix-length | { ipv6-address | group-name group-name } log-info | [ ipv6-address ] verbose ] display bgp [ instance instance-name ] peer ipv6 multicast [ ipv4-address mask-length | { ipv4-address | group-name group-name } log-info | [ ipv4-address ] verbose ] |
显示BGP IPv6组播路由的震荡统计信息 |
display bgp [ instance instance-name ] routing-table flap-info ipv6 multicast [ ipv6-address prefix-length | as-path-acl { as-path-acl-number | as-path-acl-name } ] |
显示衰减的BGP IPv6组播路由信息 |
display bgp [ instance instance-name ] routing-table dampened ipv6 multicast |
显示BGP IPv6组播路由的路由衰减参数 |
display bgp [ instance instance-name ] dampening parameter ipv6 multicast |
清除BGP IPv6组播路由的衰减信息,并解除对BGP路由的抑制 |
reset bgp [ instance instance-name ] dampening ipv6 multicast [ ipv6-address prefix-length ] |
表3-6 BGP路由衰减信息记录配置显示
操作 |
命令 |
显示BGP路由衰减的信息记录 |
display bgp [ instance instance-name ] dampening-log [ reverse ] |
清除BGP路由衰减的信息记录 |
reset bgp [ instance instance-name ] dampening-log |
Router B分别与Router A、Router C之间建立EBGP连接。
通过在Router A上配置NO_EXPORT团体属性,使得AS 10发布到AS 20中的路由,不会再被AS 20发布到其他AS。
图3-1 BGP团体组网图
(1) 配置各接口的IP地址(略)
(2) 配置EBGP
# 配置Router A。
<RouterA> system-view
[RouterA] bgp 10
[RouterA-bgp-default] router-id 1.1.1.1
[RouterA-bgp-default] peer 200.1.2.2 as-number 20
[RouterA-bgp-default] address-family ipv4 unicast
[RouterA-bgp-default-ipv4] peer 200.1.2.2 enable
[RouterA-bgp-default-ipv4] network 9.1.1.0 255.255.255.0
[RouterA-bgp-default-ipv4] quit
[RouterA-bgp-default] quit
# 配置Router B。
<RouterB> system-view
[RouterB] bgp 20
[RouterB-bgp-default] router-id 2.2.2.2
[RouterB-bgp-default] peer 200.1.2.1 as-number 10
[RouterB-bgp-default] peer 200.1.3.2 as-number 30
[RouterB-bgp-default] address-family ipv4 unicast
[RouterB-bgp-default-ipv4] peer 200.1.2.1 enable
[RouterB-bgp-default-ipv4] peer 200.1.3.2 enable
[RouterB-bgp-default-ipv4] quit
[RouterB-bgp-default] quit
# 配置Router C。
<RouterC> system-view
[RouterC] bgp 30
[RouterC-bgp-default] router-id 3.3.3.3
[RouterC-bgp-default] peer 200.1.3.1 as-number 20
[RouterC-bgp-default] address-family ipv4 unicast
[RouterC-bgp-default-ipv4] peer 200.1.3.1 enable
[RouterC-bgp-default-ipv4] quit
[RouterC-bgp-default] quit
# 查看Router B的路由表。
[RouterB] 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)
Rely nexthop : 200.1.2.1
Original nexthop: 200.1.2.1
Out interface : Ten-GigabitEthernet3/1/1
Route age : 01h43m31s
OutLabel : NULL
RxPathID : 0x0
TxPathID : 0x0
AS-path : 10
Origin : igp
Attribute value : MED 0, pref-val 0
State : valid, external, best
IP precedence : N/A
QoS local ID : N/A
Traffic index : N/A
Tunnel policy : NULL
Rely tunnel IDs : N/A
# 查看Router B的路由发送信息。
[RouterB] 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(TxPathID:0):
Advertised to peers (1 in total):
200.1.3.2
可以看出,Router B能够把到达目的地址9.1.1.0/24的路由通过BGP发布出去。
# 查看Router C的BGP路由表。
[RouterC] 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
a - additional-path
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
可以看出,Router C从Router B那里学到了目的地址为9.1.1.0/24的路由。
(3) 配置BGP团体属性
# 配置路由策略。
[RouterA] route-policy comm_policy permit node 0
[RouterA-route-policy-comm_policy-0] apply community no-export
[RouterA-route-policy-comm_policy-0] quit
# 应用路由策略。
[RouterA] bgp 10
[RouterA-bgp-default] address-family ipv4 unicast
[RouterA-bgp-default-ipv4] peer 200.1.2.2 route-policy comm_policy export
[RouterA-bgp-default-ipv4] peer 200.1.2.2 advertise-community
# 查看Router B的路由表。
[RouterB] 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)
Rely nexthop : 200.1.2.1
Original nexthop: 200.1.2.1
Out interface : Ten-GigabitEthernet3/1/1
Route age : 01h43m31s
OutLabel : NULL
Community : No-Export
RxPathID : 0x0
TxPathID : 0x0
AS-path : 10
Origin : igp
Attribute value : MED 0, pref-val 0
State : valid, external, best
IP precedence : N/A
QoS local ID : N/A
Traffic index : N/A
Tunnel policy : NULL
Rely tunnel IDs : N/A
# 查看Router B的路由发送信息。
[RouterB] 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(TxPathID:0):
Not advertised to any peers yet
# 查看Router C的BGP路由表。
[RouterC] display bgp routing-table ipv4
Total number of routes: 0
在Router B的BGP路由表中可以看到配置的团体属性,Router B不会通过BGP将到达目的地址9.1.1.0/24的路由发布出去。
所有路由器运行BGP协议,Router A与Router B建立EBGP连接,Router C与Router B和Router D之间建立IBGP连接。
Router C作为路由反射器,Router B和Router D为Router C的客户机。
Router D能够通过Router C学到路由20.0.0.0/8。
图3-2 配置BGP路由反射器的组网图
(1) 配置各接口的IP地址,并在AS 200内配置OSPF(略)
(2) 配置BGP连接
# 配置Router A。
<RouterA> system-view
[RouterA] bgp 100
[RouterA-bgp-default] router-id 1.1.1.1
[RouterA-bgp-default] peer 192.1.1.2 as-number 200
[RouterA-bgp-default] address-family ipv4 unicast
[RouterA-bgp-default-ipv4] peer 192.1.1.2 enable
# 通告20.0.0.0/8网段路由到BGP路由表中。
[RouterA-bgp-default-ipv4] network 20.0.0.0
[RouterA-bgp-default-ipv4] quit
[RouterA-bgp-default] quit
# 配置Router B。
<RouterB> system-view
[RouterB] bgp 200
[RouterB-bgp-default] router-id 2.2.2.2
[RouterB-bgp-default] peer 192.1.1.1 as-number 100
[RouterB-bgp-default] peer 193.1.1.1 as-number 200
[RouterB-bgp-default] address-family ipv4 unicast
[RouterB-bgp-default-ipv4] peer 192.1.1.1 enable
[RouterB-bgp-default-ipv4] peer 193.1.1.1 enable
[RouterB-bgp-default-ipv4] peer 193.1.1.1 next-hop-local
[RouterB-bgp-default-ipv4] quit
[RouterB-bgp-default] quit
# 配置Router C。
<RouterC> system-view
[RouterC] bgp 200
[RouterC-bgp-default] router-id 3.3.3.3
[RouterC-bgp-default] peer 193.1.1.2 as-number 200
[RouterC-bgp-default] peer 194.1.1.2 as-number 200
[RouterC-bgp-default] address-family ipv4 unicast
[RouterC-bgp-default-ipv4] peer 193.1.1.2 enable
[RouterC-bgp-default-ipv4] peer 194.1.1.2 enable
[RouterC-bgp-default-ipv4] quit
[RouterC-bgp-default] quit
# 配置Router D。
<RouterD> system-view
[RouterD] bgp 200
[RouterD-bgp-default] router-id 4.4.4.4
[RouterD-bgp-default] peer 194.1.1.1 as-number 200
[RouterD-bgp-default] address-family ipv4 unicast
[RouterD-bgp-default-ipv4] peer 194.1.1.1 enable
[RouterD-bgp-default-ipv4] quit
[RouterD-bgp-default] quit
(3) 配置路由反射器
# 配置Router C。
[RouterC] bgp 200
[RouterC-bgp-default] address-family ipv4 unicast
[RouterC-bgp-default-ipv4] peer 193.1.1.2 reflect-client
[RouterC-bgp-default-ipv4] peer 194.1.1.2 reflect-client
[RouterC-bgp-default-ipv4] quit
[RouterC-bgp-default] quit
# 查看Router B的BGP路由表。
[RouterB] display bgp routing-table ipv4
Total number of routes: 1
BGP local router ID is 2.2.2.2
Status codes: * - valid, > - best, d - dampened, h - history
s - suppressed, S - stale, i - internal, e - external
a - additional-path
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
# 查看Router D的BGP路由表。
[RouterD] display bgp routing-table ipv4
Total number of routes: 1
BGP local router ID is 4.4.4.4
Status codes: * - valid, > - best, d - dampened, h - history
s - suppressed, S - stale, i - internal, e - external
a - additional-path
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
可以看出,Router D从Router C已经学到了20.0.0.0/8路由。
AS 200中有多台BGP路由器,为了减少IBGP的连接数,现将他们划分为3个子自治系统:AS 65001、AS 65002和AS 65003。其中AS 65001内的三台路由器建立IBGP全连接。
图3-3 配置联盟组网图
设备 |
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
Router A |
XGE3/1/1 |
10.1.2.1/24 |
Router D |
XGE3/1/1 |
10.1.5.1/24 |
|
XGE3/1/2 |
10.1.3.1/24 |
|
XGE3/1/2 |
10.1.3.2/24 |
|
XGE3/1/3 |
10.1.4.1/24 |
Router E |
XGE3/1/1 |
10.1.5.2/24 |
|
XGE3/1/4 |
200.1.1.1/24 |
|
XGE3/1/2 |
10.1.4.2/24 |
|
XGE3/1/5 |
10.1.1.1/24 |
Router F |
XGE3/1/1 |
9.1.1.1/24 |
Router B |
XGE3/1/1 |
10.1.1.2/24 |
|
XGE3/1/2 |
200.1.1.2/24 |
Router C |
XGE3/1/1 |
10.1.2.2/24 |
|
(1) 配置各接口的IP地址(略)
(2) 配置BGP联盟
# 配置Router A。
<RouterA> system-view
[RouterA] bgp 65001
[RouterA-bgp-default] router-id 1.1.1.1
[RouterA-bgp-default] confederation id 200
[RouterA-bgp-default] confederation peer-as 65002 65003
[RouterA-bgp-default] peer 10.1.1.2 as-number 65002
[RouterA-bgp-default] peer 10.1.2.2 as-number 65003
[RouterA-bgp-default] address-family ipv4 unicast
[RouterA-bgp-default-ipv4] peer 10.1.1.2 enable
[RouterA-bgp-default-ipv4] peer 10.1.2.2 enable
[RouterA-bgp-default-ipv4] peer 10.1.1.2 next-hop-local
[RouterA-bgp-default-ipv4] peer 10.1.2.2 next-hop-local
[RouterA-bgp-default-ipv4] quit
[RouterA-bgp-default] quit
# 配置Router B。
<RouterB> system-view
[RouterB] bgp 65002
[RouterB-bgp-default] router-id 2.2.2.2
[RouterB-bgp-default] confederation id 200
[RouterB-bgp-default] confederation peer-as 65001 65003
[RouterB-bgp-default] peer 10.1.1.1 as-number 65001
[RouterB-bgp-default] address-family ipv4 unicast
[RouterB-bgp-default-ipv4] peer 10.1.1.1 enable
[RouterB-bgp-default-ipv4] quit
[RouterB-bgp-default] quit
# 配置Router C。
<RouterC> system-view
[RouterC] bgp 65003
[RouterC-bgp-default] router-id 3.3.3.3
[RouterC-bgp-default] confederation id 200
[RouterC-bgp-default] confederation peer-as 65001 65002
[RouterC-bgp-default] peer 10.1.2.1 as-number 65001
[RouterC-bgp-default] address-family ipv4 unicast
[RouterC-bgp-default-ipv4] peer 10.1.2.1 enable
[RouterC-bgp-default-ipv4] quit
[RouterC-bgp-default] quit
(3) 配置AS 65001内的IBGP连接
# 配置Router A。
[RouterA] bgp 65001
[RouterA-bgp-default] peer 10.1.3.2 as-number 65001
[RouterA-bgp-default] peer 10.1.4.2 as-number 65001
[RouterA-bgp-default] address-family ipv4 unicast
[RouterA-bgp-default-ipv4] peer 10.1.3.2 enable
[RouterA-bgp-default-ipv4] peer 10.1.4.2 enable
[RouterA-bgp-default-ipv4] peer 10.1.3.2 next-hop-local
[RouterA-bgp-default-ipv4] peer 10.1.4.2 next-hop-local
[RouterA-bgp-default-ipv4] quit
[RouterA-bgp-default] quit
# 配置Router D。
<RouterD> system-view
[RouterD] bgp 65001
[RouterD-bgp-default] router-id 4.4.4.4
[RouterD-bgp-default] confederation id 200
[RouterD-bgp-default] peer 10.1.3.1 as-number 65001
[RouterD-bgp-default] peer 10.1.5.2 as-number 65001
[RouterD-bgp-default] address-family ipv4 unicast
[RouterD-bgp-default-ipv4] peer 10.1.3.1 enable
[RouterD-bgp-default-ipv4] peer 10.1.5.2 enable
[RouterD-bgp-default-ipv4] quit
[RouterD-bgp-default] quit
# 配置Router E。
<RouterE> system-view
[RouterE] bgp 65001
[RouterE-bgp-default] router-id 5.5.5.5
[RouterE-bgp-default] confederation id 200
[RouterE-bgp-default] peer 10.1.4.1 as-number 65001
[RouterE-bgp-default] peer 10.1.5.1 as-number 65001
[RouterE-bgp-default] address-family ipv4 unicast
[RouterE-bgp-default-ipv4] peer 10.1.4.1 enable
[RouterE-bgp-default-ipv4] peer 10.1.5.1 enable
[RouterE-bgp-default-ipv4] quit
[RouterE-bgp-default] quit
(4) 配置AS 100和AS 200之间的EBGP连接
# 配置Router A。
[RouterA] bgp 65001
[RouterA-bgp-default] peer 200.1.1.2 as-number 100
[RouterA-bgp-default] address-family ipv4 unicast
[RouterA-bgp-default-ipv4] peer 200.1.1.2 enable
[RouterA-bgp-default-ipv4] quit
[RouterA-bgp-default] quit
# 配置Router F。
<RouterF> system-view
[RouterF] bgp 100
[RouterF-bgp-default] router-id 6.6.6.6
[RouterF-bgp-default] peer 200.1.1.1 as-number 200
[RouterF-bgp-default] address-family ipv4 unicast
[RouterF-bgp-default-ipv4] peer 200.1.1.1 enable
[RouterF-bgp-default-ipv4] network 9.1.1.0 255.255.255.0
[RouterF-bgp-default-ipv4] quit
[RouterF-bgp-default] quit
# 查看Router B的BGP路由表。Router C的BGP路由表与此类似。
[RouterB] display bgp routing-table ipv4
Total number of routes: 1
BGP local router ID is 2.2.2.2
Status codes: * - valid, > - best, d - dampened, h - history
s - suppressed, S - stale, i - internal, e - external
a - additional-path
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
[RouterB] 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)
Rely nexthop : 10.1.1.1
Original nexthop: 10.1.1.1
Out interface : Ten-GigabitEthernet3/1/1
Route age : 01h22m43s
OutLabel : NULL
RxPathID : 0x0
TxPathID : 0x0
AS-path : (65001) 100
Origin : igp
Attribute value : MED 0, localpref 100, pref-val 0, pre 255
State : valid, external-confed, best
IP precedence : N/A
QoS local ID : N/A
Traffic index : N/A
# 查看Router D的BGP路由表。
[RouterD] display bgp routing-table ipv4
Total number of routes: 1
BGP local router ID is 4.4.4.4
Status codes: * - valid, > - best, d - dampened, h - history
s - suppressed, S - stale, i - internal, e - external
a - additional-path
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
[RouterD] 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)
Rely nexthop : 10.1.3.1
Original nexthop: 10.1.3.1
Out interface : Ten-GigabitEthernet3/1/2
Route age : 01h43m32s
OutLabel : NULL
RxPathID : 0x0
TxPathID : 0x0
AS-path : 100
Origin : igp
Attribute value : MED 0, localpref 100, pref-val 0, pre 255
State : valid, internal-confed, best
IP precedence : N/A
QoS local ID : N/A
Traffic index : N/A
通过以上显示信息可以看出:
· Router F只需要和Router A建立EBGP连接,而不需要和Router B、Router C建立连接,同样可以通过联盟将路由信息传递给Router B和Router C。
· Router B和Router D在同一个联盟里,但是属于不同的子自治系统,它们都是通过Router A来获取外部路由信息,生成的BGP路由表项也是一致的,等效于在同一个自治系统内,但是又不需要物理上全连接。
BGP具有很多路由属性,通过配置这些属性可以控制BGP路径的选择。
控制BGP路径选择的配置任务如下:
(1) 为接收路由分配首选值
(2) 配置BGP的路由优先级
(3) 配置本地优先级的缺省值
(4) 配置MED属性
¡ 配置MED缺省值
¡ 配置允许比较来自同一联盟不同子自治系统邻居路由的MED属性值
(5) 配置NEXT_HOP属性
(6) 配置AS_PATH属性
¡ 配置发送BGP更新消息时删除或替换AS_PATH属性的私有AS号
(7) 提高邻居路由参与优选时的优先级
(8) 配置BGP在选择最优路由时忽略IGP Metric的比较
(9) 配置AIGP属性
(11) 配置下一跳隧道影响路由优选
BGP选择路由时首先丢弃下一跳不可达的路由,其次优选Preferred-value值最大的路由。通过本配置,可以修改路由的Preferred-value,以便控制BGP路径的选择。
缺省情况下,从对等体/对等体组学到的路由的首选值为0,网络管理员可以为从某个对等体/对等体组接收的路由配置首选值,从而提高从指定对等体/对等体组学到的路由的优先级。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv4单播地址族视图、BGP-VPN IPv4单播地址族视图、BGP IPv4组播地址族视图、BGP IPv4单播标签地址族视图或BGP-VPN IPv4单播标签地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv4组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 multicast
¡ 请依次执行以下命令进入BGP IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 labeled-unicast
¡ 请依次执行以下命令进入BGP-VPN IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 labeled-unicast
(3) 为从对等体/对等体组接收的路由分配首选值。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } preferred-value value
缺省情况下,从对等体/对等体组接收的路由的首选值为0。
BGP IPv4单播标签地址族视图和BGP-VPN IPv4单播标签地址族视图下不支持IPv6参数。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv6单播地址族视图、BGP-VPN IPv6单播地址族视图或BGP IPv6组播地址族视图。
¡ 请依次执行以下命令进入BGP IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv6组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 multicast
(3) 为从IPv6 BGP对等体/对等体组接收的路由分配首选值。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } preferred-value value
缺省情况下,从IPv6 BGP对等体/对等体组接收的路由的首选值为0。
路由器上可能同时运行多个动态路由协议,存在各个路由协议之间路由信息共享和选择的问题。系统为每一种路由协议设置一个优先级,在不同协议发现同一条路由时,优先级高的路由将被优先选择。路由的优先级数值越小表明路由的优先级越高。
用户可以通过preference命令修改EBGP路由、IBGP路由以及本地产生的BGP路由的优先级,或应用路由策略为通过匹配规则过滤的特定路由配置优先级,没有通过过滤的路由使用缺省优先级。
缺省情况下,EBGP路由的优先级低于本地产生的BGP路由的优先级。设备上存在到达某一目的网络的EBGP路由和本地产生的BGP路由时,不会选择EBGP路由。通过执行network short-cut命令将一条EBGP路由配置成short-cut,可以使得指定EBGP路由的优先级与本地产生的BGP路由的优先级相同,从而提高该EBGP路由成为最佳路由的可能性。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv4单播地址族视图、BGP-VPN IPv4单播地址族视图或BGP IPv4组播地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv4组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 multicast
(3) 配置BGP路由的优先级。
preference { external-preference internal-preference local-preference | route-policy route-policy-name }
缺省情况下,EBGP路由的优先级为255,IBGP路由的优先级为255,本地产生的BGP路由的优先级为130。
(4) (可选)提高接收到的指定EBGP路由的路由优先级。
network ipv4-address [ mask-length | mask ] short-cut
缺省情况下,接收到的EBGP路由的路由优先级为255。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv6单播地址族视图、BGP-VPN IPv6单播地址族视图或BGP IPv6组播地址族视图。
¡ 请依次执行以下命令进入BGP IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv6组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 multicast
(3) 配置BGP路由的优先级。
preference { external-preference internal-preference local-preference | route-policy route-policy-name }
缺省情况下,EBGP路由的优先级为255,IBGP路由的优先级为255,本地产生的BGP路由的优先级为130。
(4) (可选)提高接收到的指定EBGP路由的路由优先级。
network ipv6-address prefix-length short-cut
缺省情况下,接收到的EBGP路由的路由优先级为255。
本地优先级用来判断流量离开AS时的最佳路由。当BGP路由器通过不同的IBGP对等体得到目的地址相同但下一跳不同的多条路由时,将优先选择本地优先级较高的路由。
用户可以通过本配置改变BGP路由器向IBGP对等体发送的路由本地优先级的缺省值。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv4单播地址族视图、BGP-VPN IPv4单播地址族视图、BGP IPv4组播地址族视图、BGP IPv4单播标签地址族视图或BGP-VPN IPv4单播标签地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv4组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 multicast
¡ 请依次执行以下命令进入BGP IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 labeled-unicast
¡ 请依次执行以下命令进入BGP-VPN IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 labeled-unicast
(3) 配置本地优先级的缺省值。
default local-preference value
缺省情况下,本地优先级的缺省值为100。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv6单播地址族视图、BGP-VPN IPv6单播地址族视图或BGP IPv6组播地址族视图。
¡ 请依次执行以下命令进入BGP IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv6组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 multicast
(3) 配置本地优先级的缺省值。
default local-preference value
缺省情况下,本地优先级的缺省值为100。
MED用来判断流量进入AS时的最佳路由。当一个BGP路由器通过不同的EBGP对等体得到目的地址相同但下一跳不同的多条路由时,在其它条件相同的情况下,将优先选择MED属性值较小者作为最佳路由。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv4单播地址族视图、BGP-VPN IPv4单播地址族视图、BGP IPv4组播地址族视图、BGP IPv4单播标签地址族视图或BGP-VPN IPv4单播标签地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv4组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 multicast
¡ 请依次执行以下命令进入BGP IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 labeled-unicast
¡ 请依次执行以下命令进入BGP-VPN IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 labeled-unicast
(3) 配置MED的缺省值。
default med med-value
缺省情况下,MED的缺省值为0。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv6单播地址族视图、BGP-VPN IPv6单播地址族视图或BGP IPv6组播地址族视图。
¡ 请依次执行以下命令进入BGP IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv6组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 multicast
(3) 配置MED的缺省值。
default med med-value
缺省情况下,MED的缺省值为0。
缺省情况下,BGP只比较来自同一个AS的路由的MED属性值。通过配置本功能,可以强制BGP比较来自不同AS的路由的MED属性值。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置允许比较来自不同AS路由的MED属性值。
compare-different-as-med
缺省情况下,不允许比较来自不同AS路由的MED属性值,只比较来自同一个AS的路由的MED属性值。
缺省情况下,BGP选择最优路由时是将新的路由和当前BGP路由表中的最优路由进行比较,只要新的路由比当前BGP路由表中的最优路由更优,新的路由将成为最优路由,路由学习的顺序有可能会影响最优路由的选择结果。
图4-1 MED排序优选示意图(以IPv4为例)
如图4-1所示,Device D和Device A、Device B、Device C之间建立非直连EBGP邻居,通过OSPF学习到邻居地址1.1.1.1/32、2.2.2.2/32、3.3.3.3/32(设置不同的开销值)。在Device D上查看IP路由表信息:
Destination/Mask Proto Pre Cost NextHop Interface
1.1.1.1/32 O_INTRA 10 10 11.1.1.2 Interface D1
2.2.2.2/32 O_INTRA 10 20 12.1.1.2 Interface D2
3.3.3.3/32 O_INTRA 10 30 13.1.1.2 Interface D3
当Device D分别从Device A和Device B学习到到达网段10.0.0.0的路由时,由于来自Device B的路由的下一跳Metric值(即下一跳在IP路由表中的Cost值)较小,因此,从Device B学来的路由被选为最优路由。在Device D上查看BGP路由表信息:
Network NextHop MED LocPrf PrefVal Path/Ogn
*>e 10.0.0.0 2.2.2.2 50 0 300 400e
* e 3.3.3.3 50 0 200 400e
当Device D再从Device C学习到到达10.0.0.0网段的路由时,它只和当前路由表的最优路由进行比较。由于Device C和Device B位于不同的AS,选择路由时不会比较MED值,而来自Device C的路由的下一跳Metric值更小,相对更优,它将成为最优路由。在Device D上查看BGP路由表信息:
Network NextHop MED LocPrf PrefVal Path/Ogn
*>e 10.0.0.0 1.1.1.1 60 0 200 400e
* e 10.0.0.0 2.2.2.2 50 0 300 400e
* e 3.3.3.3 50 0 200 400e
但是如果将这条路由与从Device A学习到的路由进行比较,那么由于两条路由来自同一个AS,且从Device C学习到的路由MED值更大,则从Device C学习到的路由应该视为无效路由。
在Device D上配置bestroute compare-med命令后,Device D学习到新的路由时,会首先按照路由来自的AS分组,对来自同一AS的路由根据MED值的大小进行优选,选出MED值最小的路由,然后再对优选出来的、来自不同AS的路由进行优选,从而避免路由优选结果的不确定性。配置对来自同一AS的路由进行MED排序优选后,从Device B学习到的到达10.0.0.0 网段的路由将成为最优路由。在Device D上查看BGP路由表信息:
Network NextHop MED LocPrf PrefVal Path/Ogn
*>e 10.0.0.0 2.2.2.2 50 0 300 400e
* e 3.3.3.3 50 0 200 400e
* e 1.1.1.1 60 0 200 400e
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN 实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置对来自同一AS的路由进行MED排序优选。
bestroute compare-med
缺省情况下,不会对来自同一AS的路由进行MED排序优选。
只有AS_PATH里不包含联盟体外的自治系统编号时,才会比较来自同一联盟不同子自治系统邻居路由的MED属性值。例如,联盟中包含的子自治系统为65006、65007和65009。如果存在三条路由,它们的AS-PATH值分别为65006 65009、65007 65009和65008 65009,MED值分别为2、3、1,由于第三条路由包含了联盟体外的自治系统编号,因此在选择最优路由时第一条路由将成为最优路由。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图 。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置允许比较来自同一联盟不同子自治系统邻居路由的MED属性值。
bestroute med-confederation
缺省情况下,不比较来自同一联盟不同子自治系统邻居路由的MED属性值。
缺省情况下,路由器向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就能找到下一跳。
图4-2 配置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作为下一跳。
图4-3 配置BGP NEXT_HOP属性应用组网图二
如果配置了BGP负载分担,则不论是否配置了peer next-hop-local命令,本地路由器向IBGP对等体/对等体组发布路由时都先将下一跳地址改变为自身地址。
对于同一个对等体/对等体组,不能同时配置将下一跳属性修改为自身的地址功能和不修改下一跳属性功能。
缺省情况下,本地路由器向IBGP对等体/对等体组发布单播标签路由时会将下一跳地址改变为自身地址,只有作为路由反射器时,才不会将自身地址作为下一跳。请根据实际情况,在本地路由器作为路由反射器且需要修改下一跳地址时,配置本功能。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv4单播地址族视图、BGP-VPN IPv4单播地址族视图、BGP IPv4组播地址族视图、BGP IPv4单播标签地址族视图或BGP-VPN IPv4单播标签地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv4组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 multicast
¡ 请依次执行以下命令进入BGP IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 labeled-unicast
¡ 请依次执行以下命令进入BGP-VPN IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 labeled-unicast
(3) 配置向对等体/对等体组发布路由时,将下一跳属性修改为自身的地址。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } next-hop-local
缺省情况下,设备向EBGP对等体发布路由时,如果建立的是直连EBGP会话,且路由的下一跳与建立EBGP会话使用的直连接口在同一网段,则不修改路由的下一跳属性;其他情况下,都将下一跳属性修改为自身的地址。设备向IBGP对等体/对等体组发布路由时,不修改下一跳属性。设备向IBGP对等体发送形成了等价的BGP路由时,修改其中最优路由的下一跳地址为本地地址。
BGP IPv4单播标签地址族视图和BGP-VPN IPv4单播标签地址族视图下不支持IPv6参数。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv6单播地址族视图、BGP-VPN IPv6单播地址族视图或BGP IPv6组播地址族视图。
¡ 请依次执行以下命令进入BGP IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv6组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 multicast
(3) 配置向对等体/对等体组发布路由时,将下一跳属性修改为自身的地址。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } next-hop-local
缺省情况下,设备向EBGP对等体发布路由时,如果建立的是直连EBGP会话,且路由的下一跳与建立EBGP会话使用的直连接口在同一网段,则不修改路由的下一跳属性;其他情况下,都将下一跳属性修改为自身的地址。设备向IBGP对等体/对等体组发布路由时,不修改下一跳属性。设备向IBGP对等体发送形成了等价的BGP路由时,修改其中最优路由的下一跳地址为本地地址。
在多AS域组网场景下,需要设备跨AS域传递路由的时候不修改路由的下一跳属性。以图4-4为例,分属两个不同AS的接入网PE设备PE 1和PE 2之间有端对端的公网IP业务,且通过IPv4/IPv6地址族传递BGP路由,此时需要两台PE上的BGP路由的下一跳均为对端PE,以实现端对端的业务调度。
接入网的PE设备均与骨干网的PE设备建立EBGP邻居,并通过骨干网设备传递路由。这种情况下,骨干网PE设备将BGP路由通过EBGP发送给PE 1或PE 2设备时会修改路由下一跳,导致接入网PE收到BGP路由的下一跳不为对端PE。要避免这种情况,需要在骨干网PE设备上配置peer next-hop-invariable命令,使其将路由传递出骨干网AS域时候不修改路由的下一跳属性。
对于同一个对等体/对等体组,不能同时配置将下一跳属性修改为自身的地址功能和不修改下一跳属性功能。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv4单播地址族视图、BGP IPv4单播标签地址族视图或BGP-VPN IPv4单播标签地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 labeled-unicast
¡ 请依次执行以下命令进入BGP-VPN IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 labeled-unicast
(3) 配置向EBGP对等体/对等体组发布路由时,不修改路由的下一跳属性。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } next-hop-invariable
缺省情况下,向EBGP对等体/对等体组发布路由时,将下一跳属性修改为自身的地址;向IBGP对等体/对等体组发布路由时,不修改下一跳属性。
BGP IPv4单播标签地址族视图和BGP-VPN IPv4单播标签地址族视图下不支持IPv6参数。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP IPv6单播地址族视图。
address-family ipv6 [ unicast ]
(4) 配置向EBGP对等体/对等体组发布路由时,不修改路由的下一跳属性。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } next-hop-invariable
缺省情况下,向EBGP对等体/对等体组发布路由时,将下一跳属性修改为自身的地址;向IBGP对等体/对等体组发布路由时,不修改下一跳属性。
通常情况下,BGP会检查对等体发来的路由的AS_PATH属性,如果其中已存在本地AS号,则BGP会忽略此路由,以免形成路由环路。
但是,在某些特殊的组网环境下(如MPLS L3VPN的Hub&Spoke组网),需要允许本地AS号在接收路由的AS_PATH属性中出现,否则无法正确发布路由。通过本配置,可以允许本地AS号在所接收的路由的AS_PATH属性中出现,并可同时配置允许出现的次数。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv4单播地址族视图、BGP-VPN IPv4单播地址族视图、BGP IPv4组播地址族视图、BGP IPv4单播标签地址族视图或BGP-VPN IPv4单播标签地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv4组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 multicast
¡ 请依次执行以下命令进入BGP IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 labeled-unicast
¡ 请依次执行以下命令进入BGP-VPN IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 labeled-unicast
(3) 配置允许本地AS号在对等体/对等体组接收路由的AS_PATH属性中出现,并配置允许出现的次数。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } allow-as-loop [ number ]
缺省情况下,不允许本地AS号在接收路由的AS_PATH属性中出现。
BGP IPv4单播标签地址族视图和BGP-VPN IPv4单播标签地址族视图下不支持IPv6参数。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv6单播地址族视图、BGP-VPN IPv6单播地址族视图或BGP IPv6组播地址族视图。
¡ 请依次执行以下命令进入BGP IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv6组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 multicast
(3) 配置允许本地AS号在对等体/对等体组接收路由的AS_PATH属性中出现,并配置允许出现的次数。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } allow-as-loop [ number ]
缺省情况下,不允许本地AS号在接收路由的AS_PATH属性中出现。
路由器在选择最优路由时会优选AS路径最短的路由,通过如下配置BGP在选择最优路由时会忽略AS_PATH属性。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置BGP在选择最优路由时忽略AS_PATH属性。
bestroute as-path-neglect
缺省情况下,BGP将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对等体上的配置。
配置虚拟AS号的同时,还可以指定如下参数:
· dual-as:允许本地路由器通过真实AS号或虚拟AS号与对端建立连接。指定dual-as参数后,本地路由器将交替使用真实AS号和虚拟AS号尝试与对端建立连接,直至连接成功建立:
¡ 首次尝试建立连接时,优先使用真实AS号;
¡ 连接断开后尝试重新建立连接时,优先使用断开前的AS号。
· prepend-fake-as:从指定对等体接收路由时在AS_Path列表中增加虚拟AS号。
· prepend-global-as:向指定对等体发送路由时在AS_Path列表中增加真实AS号。
仅在设备使用虚拟AS号与对等体建立会话时,prepend-fake-as和prepend-global-as参数的配置才会生效。
只能为EBGP对等体和对等组配置peer fake-as命令。通过peer fake-as命令指定的虚拟本地自治系统号可以与对等体的AS号相同,此时:
· 如果使用虚拟AS号成功建立BGP连接,则认为对等体为IBGP对等体;如果使用真实AS号成功建立BGP,则认为对等体为EBGP对等体。
· 仅IBGP对等体支持的功能、仅EBGP对等体支持的功能均可以为该对等体配置,但仅与成功建立的对等体连接类型匹配的配置会生效。
· 执行peer fake-as命令将as-number参数修改为与peer as-number命令指定的as-number参数不同或执行undo peer fake-as命令后,设备会自动清除此对等体上所有仅对IBGP对等体生效的配置。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 为对等体/对等体组指定一个虚拟的本地自治系统号。
peer { group-name | ipv4-address [ mask-length ] } fake-as as-number [ dual-as | prepend-fake-as | prepend-global-as ] *
缺省情况下,对等体/对等体组未配置虚拟的本地自治系统号。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 为对等体/对等体组指定一个虚拟的本地自治系统号。
peer { group-name | ipv6-address [ prefix-length ] } fake-as as-number [ dual-as | prepend-fake-as | prepend-global-as ] *
缺省情况下,对等体/对等体组未配置虚拟的本地自治系统号。
在MPLS L3VPN中,如果PE和CE之间运行EBGP,由于BGP使用AS号检测路由环路,为保证路由信息的正确发送,需要为物理位置不同的站点分配不同的AS号。
如果物理位置不同的CE复用相同的AS号,则需要在PE上配置BGP的AS号替换功能。当PE向指定对等体(CE)发布路由时,如果路由的AS_PATH中存在CE所在的AS号,则PE将该AS号替换成PE的AS号后,再发布该路由,以保证私网路由能够正确发布。
图4-5 BGP AS号替换应用示意图(以IPv4为例)
如图4-5所示,CE 1和CE 2都使用AS号800,在PE 2上使能针对CE 2的AS号替换功能。当CE 1发来的Update信息从PE 2发布给CE 2时,PE 2发现AS_PATH中存在与CE 2相同的AS号800,就把它替换为自己的AS号100。如果需要完全的连接性,PE 1上也需要做类似的配置。
本配置仅用于特定的组网环境。通常情况下,建议不要使用本配置,否则可能会引起路由环路。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置用本地AS号替换AS_PATH属性中指定对等体/对等体组的AS号。
peer { group-name | ipv4-address [ mask-length ] } substitute-as
缺省情况下,不会用本地AS号替换AS_PATH属性中指定对等体/对等体组的AS号。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置用本地AS号替换AS_PATH属性中指定对等体/对等体组的AS号。
peer { group-name | ipv6-address [ prefix-length ] } substitute-as
缺省情况下,不会用本地AS号替换AS_PATH属性中指定对等体/对等体组的AS号。
私有AS号是内部使用的AS号,范围为64512~65535。私有AS号主要用于测试网络,一般情况下不需要在公共网络中传播。
可以通过peer public-as-only命令,配置向EBGP对等体发送BGP更新消息时删除或替换AS_PATH属性的私有AS号。执行该命令后,设备将按照下列规则对AS_PATH属性中的私有AS号进行删除或替换:
· 如果配置peer public-as-only命令时未指定force和limited参数,则AS_PATH属性中私有AS号的删除或替换原则如下。
¡ 如果向EBGP对等体/对等体组发送的BGP更新消息中AS_PATH属性只包括私有AS号,则删除私有AS号后,将BGP更新消息发送给对等体/对等体组。
¡ 如果AS_PATH属性中同时带有公有AS号和私有AS号,则本功能不生效,即不删除私有AS号,直接将BGP更新消息发送给对等体/对等体组。
¡ 如果AS_PATH属性中包括对等体/对等体组的AS号,则本功能不生效,即不删除私有AS号,直接将BGP更新消息发送给对等体/对等体组。
· 如果配置peer public-as-only命令时指定了force或limited参数,则AS_PATH属性中私有AS号的删除或替换原则如下。
¡ 配置了force参数时:
参数 |
使用说明 |
replace |
如果配置了replace参数,则强制将AS_Path属性中的私有AS号替换为本地AS号;如果未配置replace参数,则强制删除AS_Path属性中的私有AS号 |
include-peer-as |
如果配置了include-peer-as参数,则本功能指定的对等体/对等体组的AS号为私有AS号时,强制删除或替换AS_Path属性中的该AS号;如果未配置include-peer-as参数,则本功能指定的对等体/对等体组的AS号为私有AS号时,保留AS_Path属性中的该AS号 |
keep-local-as |
keep-local-as参数无法配合replace参数使用,即如需配置keep-local-as参数,只能对AS_Path属性中的AS号进行删除操作。如果配置了keep-local-as参数,则在删除AS_Path属性中的私有AS号时,保留其中的本地AS号;如果未配置keep-local-as参数,则按照其他参数的规则进行私有AS号的替换或删除 |
¡ 配置了limited参数时:
参数 |
使用说明 |
replace |
如果配置了replace参数,则从AS_Path属性的左边开始替换私有AS号为本地AS号,遇到本地或公有AS号时停止替换;如果未配置replace参数,则从AS_Path属性的左边开始删除私有AS号,遇到本地或公有AS号时停止删除 |
include-peer-as |
如果配置了include-peer-as参数,则本功能指定的对等体/对等体组的AS号为私有AS号时,从AS_Path属性的左边开始,删除或替换AS_Path属性中的该AS号,遇到本地或公有AS号时停止删除或替换。如果未配置include-peer-as参数,则本功能指定的对等体/对等体组的AS号为私有AS号时,保留AS_Path属性中的该AS号 |
本命令只适用于EBGP对等体和对等体组。
修改AS_Path属性,可能会引发路由环路,请谨慎使用本功能。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv4单播地址族视图、BGP-VPN IPv4单播地址族视图、BGP IPv4组播地址族视图、BGP IPv4单播标签地址族视图或BGP-VPN IPv4单播标签地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv4组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 multicast
¡ 请依次执行以下命令进入BGP IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 labeled-unicast
¡ 请依次执行以下命令进入BGP-VPN IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 labeled-unicast
(3) 配置向指定EBGP对等体/对等体组发送BGP更新消息时删除私有AS号或将私有AS号替换为本地AS号。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } public-as-only [ { force | limited } [ replace ] [ include-peer-as ] ]
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } public-as-only [ force [ include-peer-as ] ] keep-local-as
缺省情况下,向EBGP对等体/对等体组发送BGP更新消息时,不会删除或替换AS_PATH属性中的私有AS号,即可以同时携带公有AS号和私有AS号。
BGP IPv4单播标签地址族视图和BGP-VPN IPv4单播标签地址族视图下不支持IPv6参数。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv6单播地址族视图、BGP-VPN IPv6单播地址族视图或BGP IPv6组播地址族视图。
¡ 请依次执行以下命令进入BGP IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv6组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 multicast
(3) 配置向指定EBGP对等体/对等体组发送BGP更新消息时删除私有AS号或将私有AS号替换为本地AS号。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } public-as-only [ { force | limited } [ replace ] [ include-peer-as ] ]
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } public-as-only [ force [ include-peer-as ] ] keep-local-as
缺省情况下,向EBGP对等体/对等体组发送BGP更新消息时,不会删除或替换AS_PATH属性中的私有AS号,即可以同时携带公有AS号和私有AS号。
缺省情况下,从EBGP邻居学到路由后,会检测路由的第一个AS号。如果此AS号不是EBGP对等体的AS号,且不是私有AS号,则断开与该对等体的BGP会话。
通过本配置,可以忽略对EBGP路由第一个AS号的检测。
用户可以全局配置不检测从任意EBGP邻居收到路由的第一个AS号,也可以配置不检测从指定EBGP邻居收到路由的第一个AS号。对于一个BGP会话而言,只要通过任意一种方式配置不检测第一个AS号,则设备不会检测从该EBGP邻居收到路由的第一个AS号。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 配置不检测EBGP路由的第一个AS号。
ignore-first-as
缺省情况下,从EBGP邻居学到路由后,会检测路由的第一个AS号。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置不检测从指定对等体/对等体组收到的EBGP路由的第一个AS号。
peer { group-name | ipv4-address [ mask-length ] } ignore-first-as
缺省情况下,从EBGP邻居学到路由后,会检测路由的第一个AS号。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置不检测从指定对等体/对等体组收到的EBGP路由的第一个AS号。
peer { group-name | ipv6-address [ prefix-length ] } ignore-first-as
缺省情况下,从EBGP邻居学到路由后,会检测路由的第一个AS号。
本功能用来配置BGP根据AS_Path属性中的AS号数量对BGP路由进行过滤,配置本功能后:
· 如果接收到的BGP路由中AS号数量超过配置的上限值,则该路由不会添加到BGP路由表中。
· 如果已发布的BGP路由中AS号数量超过配置的上限值,则发送Update消息撤销该路由。
配置本功能前已经接收到的路由不受本功能影响;本地聚合路由不受本功能影响。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 配置根据AS号数量对BGP路由进行过滤。
as-path-limit [ as-numbers ]
缺省情况下,BGP不根据BGP路由AS_Path属性中的AS号数量对BGP路由进行过滤。
缺省情况下,BGP不为指定对等体/对等体组设置对等体高优先级,按照“1.6 BGP的选路规则”进行路由优选。执行本配置后,从配置中指定的对等体/对等体组、其他对等体/对等体组学习到相同前缀的路由时,优选从本配置指定的对等体/对等体组学习到路由。该选路规则应用于“依次选择从EBGP、联盟EBGP、联盟IBGP、IBGP学来的路由”之后,“优选IGP Metric值最小的路由”之前。
本功能仅对当前地址族下学习到的BGP路由优选生效,这些路由加入到其他实例或地址族的BGP路由表后,是否被优选不受本功能的影响。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv4单播地址族视图、BGP-VPN IPv4单播地址族视图、BGP IPv4组播地址族视图、BGP IPv4单播标签地址族视图或BGP-VPN IPv4单播标签地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv4组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 multicast
¡ 请依次执行以下命令进入BGP IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 labeled-unicast
¡ 请依次执行以下命令进入BGP-VPN IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 labeled-unicast
(3) 为指定对等体/对等体组设置高优先级,路由选路时优选从该对等体/对等体组学习到的路由。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } high-priority
缺省情况下,BGP不为指定对等体/对等体组设置高优先级,选路规则不发生变化。
BGP IPv4单播标签地址族视图和BGP-VPN IPv4单播标签地址族视图下不支持IPv6参数。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv6单播地址族视图、BGP-VPN IPv6单播地址族视图或BGP IPv6组播地址族视图。
¡ 请依次执行以下命令进入BGP IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv6组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 multicast
(3) 为指定对等体/对等体组设置高优先级,路由选路时优选从该对等体/对等体组学习到的路由。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } high-priority
缺省情况下,BGP不为指定对等体/对等体组设置高优先级,选路规则不发生变化。
从多个邻居收到多条相同前缀但不同路径的路由时,BGP需要选择到达该前缀的最佳路由来指导报文转发。缺省情况下,BGP会比较到达这些路由下一跳的IGP路由的Metric值,并优选IGP Metric值最小的路由。
配置了本功能后,BGP在选择最优路由时忽略IGP Metric的比较。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置BGP在选择最优路由时忽略到达路由下一跳的IGP路由的Metric值的比较。
bestroute igp-metric-ignore
缺省情况下,BGP将IGP Metric作为选择最优路由的一个条件。
通常情况下,同一个管理部门管理的、运行同一种IGP协议的AS的集合称为AIGP(Accumulated Interior Gateway Protocol Metric,累加内部网关协议度量属性)管理域。通过在AIGP管理域内配置BGP路由的AIGP属性,可以使得BGP在发布路由时携带AIGP属性,转发路径上的IGP Metric值将在BGP路由的AIGP属性中累加并传递。在同一个AIGP管理域中,BGP可以优选Metric值最小的路径进行转发,保证了在同一个AIGP管理域内路由的选择结果更加符合实际的网络状况。
如果BGP路由器上配置了peer aigp命令,则该设备可以从指定的对等体/对等体组接收或向该对等体/对等体组发布携带AIGP属性的BGP路由。如果未配置peer aigp命令,则当设备从指定的对等体/对等体组接收到携带AIGP属性的路由时,会忽略该属性;向该对等体/对等体组发布路由时也不会携带AIGP属性。
当传递携带AIGP属性的BGP路由时,如果接收设备将路由的下一跳修改为自身的地址,则该设备需要将BGP路由的AIGP属性与到达该路由的原始下一跳的IGP Metric值相加后作为新的属性发布;如果接收设备不修改路由的下一跳,则发布的AIGP属性值不会改变。
根据AIGP属性进行路由优选时遵循如下规则:
· 携带AIGP属性的路由优先级高于没有该属性的路由。
· 如果参与优选的路由都携带AIGP属性,则将BGP路由中的AIGP值与转发路径上到达下一跳的IGP Metric求和,选择该计算值最小的路径进行转发。
当BGP为路由添加AIGP属性后,如果AIGP属性发生变化,则BGP会向邻居发送Update报文更新路由信息。
建议不要在AIGP管理域的边界设备上配置peer aigp命令向AIGP管理域外的路由器发布AIGP属性。
BGP路由器向对等体发布路由时,如果该路由未携带AIGP属性,当仅配置peer aigp命令时,发送路由不会携带AIGP属性;当配置了peer aigp命令,且通过配置apply aigp命令为路由添加AIGP属性后,发布路由会携带AIGP属性。关于apply aigp命令的详细介绍,请参见“三层技术-IP路由配置指导”中的“路由策略”。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv4单播地址族视图、BGP-VPN IPv4单播地址族视图、BGP IPv4单播标签地址族视图或BGP-VPN IPv4单播标签地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 labeled-unicast
¡ 请依次执行以下命令进入BGP-VPN IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 labeled-unicast
(3) 配置为对等体/对等体组配置AIGP属性。
peer { group-name | ipv4-address [ mask-length ] } aigp
缺省情况下,没有为BGP对等体/对等体组配置AIGP属性。
(4) (可选)配置将AIGP属性值拷贝到MED属性中发送给对等体/对等体组。
peer { group-name | ipv4-address [ mask-length ] } aigp send med
缺省情况下,AIGP属性值不会拷贝到MED属性中发送给对等体/对等体组。
当邻居设备不支持AIGP功能时,可以在本端使用该命令,将路由信息中AIGP属性的累加Metric值放到MED属性中发送给邻居。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv6单播地址族视图或BGP-VPN IPv6单播地址族视图。
¡ 请依次执行以下命令进入BGP IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
(3) 配置为对等体/对等体组配置AIGP属性。
peer { group-name | ipv6-address [ prefix-length ] } aigp
缺省情况下,没有为BGP对等体/对等体组配置AIGP属性。
(4) (可选)配置将AIGP属性值拷贝到MED属性中发送给对等体/对等体组。
peer { group-name | ipv6-address [ prefix-length ] } aigp send med
缺省情况下,AIGP属性值不会拷贝到MED属性中发送给对等体/对等体组。
当邻居设备不支持AIGP功能时,可以在本端使用该命令,将路由信息中AIGP属性的累加Metric值放到MED属性中发送给邻居。
BGP路由器在选择最优路由时会优选Router ID最小的路由器发布的路由。执行本配置后,BGP在选择最优路由时会忽略Router ID的比较。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置BGP在选择最优路由时忽略Router ID。
bestroute router-id-ignore
缺省情况下,BGP在选择最优路由时会优选Router ID最小的路由器发布的路由。
BGP路由的下一跳可以是如下类型的隧道:
· 标签转发路径LSP或MPLS TE隧道
· 通过GRE、VXLAN等方式建立的Tunnel接口
· SR-MPLS TE Policy或SRv6 TE Policy
BGP路由的下一跳隧道通过隧道ID唯一标识。用户可以通过display bgp routing-table命令详细显示信息中的Rely tunnel IDs字段查看BGP路由的下一跳隧道。
缺省情况下,只有迭代出下一跳IP地址的BGP路由可以参与路由优选。在一些场景中,BGP路由无法迭代出下一跳IP地址,仅存在下一跳隧道。此时,这些BGP路由将会被视为不可达路由。配置本功能后,BGP路由只要存在下一跳隧道,就可以参与选路。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置BGP路由仅存在下一跳隧道时仍可参与选路。
bestroute nexthop-resolved tunnel
缺省情况下,只有迭代出下一跳IP地址的BGP路由可以参与路由优选。
缺省情况下,BGP路由的下一跳类型不影响路由优选。配置本功能后,BGP会根据路由的下一跳类型,优选下一跳为隧道或IP地址的路由。
BGP路由无法迭代出下一跳IP地址时,不能参与选路。如果BGP路由仅存在下一跳隧道,则即使配置了本功能,该路由仍然无法参与路由优选。如需该路由参与优选,则需要配置bestroute nexthop-resolved tunnel命令。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置BGP路由的下一跳为隧道或IP地址时影响路由优选。
bestroute nexthop-type { ip | tunnel } [ preferred ]
缺省情况下,BGP路由的下一跳类型不影响路由优选。
指定了preferred参数后,本命令配置的选路规则优于“优选本地优先级(LOCAL_PREF)最高的路由”,在“优选首选值(Preferred-value)最大的路由”规则之后进行优选。如果未指定preferred参数,则本命令配置的选路规则优于“优选Router ID最小的路由器发布的路由”,在“如果当前的最优路由为EBGP路由,则BGP路由器收到来自不同的EBGP邻居的路由后,不会改变最优路由”规则之后进行优选。
在完成上述配置后,在任意视图下执行display命令可以显示配置后BGP的运行情况,通过查看显示信息验证配置的效果。
表4-1 控制BGP路径的选择配置显示(IPv4单播)
操作 |
命令 |
显示BGP的路由属性信息 |
display bgp [ instance instance-name ] paths [ as-regular-expression ] |
表4-2 控制BGP路径的选择配置显示(IPv6单播)
操作 |
命令 |
显示BGP的路由属性信息 |
display bgp [ instance instance-name ] paths [ as-regular-expression ] |
表4-3 控制BGP路径的选择配置显示(IPv4组播)
操作 |
命令 |
显示BGP的路由属性信息 |
display bgp [ instance instance-name ] paths [ as-regular-expression ] |
表4-4 控制BGP路径的选择配置显示(IPv6组播)
操作 |
命令 |
显示BGP的路由属性信息 |
display bgp [ instance instance-name ] paths [ as-regular-expression ] |
所有路由器都运行BGP协议。Router A与Router B和Router C之间运行EBGP;Router D与Router B和Router C之间运行IBGP。
AS 200中运行OSPF协议。
配置路由策略,使得Router D优选从Router C学到的1.0.0.0/8路由。
图4-6 配置BGP路径选择的组网图
设备 |
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
Router A |
XGE3/1/1 |
1.0.0.1/8 |
Router D |
XGE3/1/1 |
195.1.1.1/24 |
|
XGE3/1/2 |
192.1.1.1/24 |
|
XGE3/1/2 |
194.1.1.1/24 |
|
XGE3/1/3 |
193.1.1.1/24 |
Router C |
XGE3/1/1 |
193.1.1.2/24 |
Router B |
XGE3/1/1 |
192.1.1.2/24 |
|
XGE3/1/2 |
195.1.1.2/24 |
|
XGE3/1/2 |
194.1.1.2/24 |
|
(1) 配置各接口的IP地址(略)
(2) 配置Router B、Router C和Router D之间运行OSPF协议
# 配置Router B。
<RouterB> system-view
[RouterB] ospf
[RouterB-ospf] area 0
[RouterB-ospf-1-area-0.0.0.0] network 192.1.1.0 0.0.0.255
[RouterB-ospf-1-area-0.0.0.0] network 194.1.1.0 0.0.0.255
[RouterB-ospf-1-area-0.0.0.0] quit
[RouterB-ospf-1] quit
# 配置Router C。
<RouterC> system-view
[RouterC] ospf
[RouterC-ospf] area 0
[RouterC-ospf-1-area-0.0.0.0] network 193.1.1.0 0.0.0.255
[RouterC-ospf-1-area-0.0.0.0] network 195.1.1.0 0.0.0.255
[RouterC-ospf-1-area-0.0.0.0] quit
[RouterC-ospf-1] quit
# 配置Router D。
<RouterD> system-view
[RouterD] ospf
[RouterD-ospf] area 0
[RouterD-ospf-1-area-0.0.0.0] network 194.1.1.0 0.0.0.255
[RouterD-ospf-1-area-0.0.0.0] network 195.1.1.0 0.0.0.255
[RouterD-ospf-1-area-0.0.0.0] quit
[RouterD-ospf-1] quit
(3) 配置BGP连接
# 配置Router A。
<RouterA> system-view
[RouterA] bgp 100
[RouterA-bgp-default] peer 192.1.1.2 as-number 200
[RouterA-bgp-default] peer 193.1.1.2 as-number 200
[RouterA-bgp-default] address-family ipv4 unicast
[RouterA-bgp-default-ipv4] peer 192.1.1.2 enable
[RouterA-bgp-default-ipv4] peer 193.1.1.2 enable
# 将1.0.0.0/8网段通告到Router A的BGP路由表中。
[RouterA-bgp-default-ipv4] network 1.0.0.0 8
[RouterA-bgp-default-ipv4] quit
[RouterA-bgp-default] quit
# 配置Router B。
[RouterB] bgp 200
[RouterB-bgp-default] peer 192.1.1.1 as-number 100
[RouterB-bgp-default] peer 194.1.1.1 as-number 200
[RouterB-bgp-default] address-family ipv4 unicast
[RouterB-bgp-default-ipv4] peer 192.1.1.1 enable
[RouterB-bgp-default-ipv4] peer 194.1.1.1 enable
[RouterB-bgp-default-ipv4] quit
[RouterB-bgp-default] quit
# 配置Router C。
[RouterC] bgp 200
[RouterC-bgp-default] peer 193.1.1.1 as-number 100
[RouterC-bgp-default] peer 195.1.1.1 as-number 200
[RouterC-bgp-default] address-family ipv4 unicast
[RouterC-bgp-default-ipv4] peer 193.1.1.1 enable
[RouterC-bgp-default-ipv4] peer 195.1.1.1 enable
[RouterC-bgp-default-ipv4] quit
[RouterC-bgp-default] quit
# 配置Router D。
[RouterD] bgp 200
[RouterD-bgp-default] peer 194.1.1.2 as-number 200
[RouterD-bgp-default] peer 195.1.1.2 as-number 200
[RouterD-bgp-default] address-family ipv4 unicast
[RouterD-bgp-default-ipv4] peer 194.1.1.2 enable
[RouterD-bgp-default-ipv4] peer 195.1.1.2 enable
[RouterD-bgp-default-ipv4] quit
[RouterD-bgp-default] quit
(4) 通过配置本地优先级,使得Router D优选从Router C学到的路由。
# 在Router C上定义编号为2000的IPv4基本ACL,允许1.0.0.0/8路由通过。
[RouterC] acl basic 2000
[RouterC-acl-ipv4-basic-2000] rule permit source 1.0.0.0 0.255.255.255
[RouterC-acl-ipv4-basic-2000] quit
# 在Router C上定义名为localpref的Route-policy,设置路由1.0.0.0/8的本地优先级为200(缺省的本地优先级为100)。
[RouterC] route-policy localpref permit node 10
[RouterC-route-policy-localpref-10] if-match ip address acl 2000
[RouterC-route-policy-localpref-10] apply local-preference 200
[RouterC-route-policy-localpref-10] quit
# 为从BGP对等体193.1.1.1的路由应用名为localpref的Route-policy。
[RouterC] bgp 200
[RouterC-bgp-default] address-family ipv4 unicast
[RouterC-bgp-default-ipv4] peer 193.1.1.1 route-policy localpref import
[RouterC-bgp-default-ipv4] quit
[RouterC-bgp-default] quit
# 查看Router D的BGP路由表。
[RouterD] 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
a - additional-path
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
可以看到,Router D从Router C学到1.0.0.0/8的路由是最优的。
Router A、Router C和Router D建立IBGP邻居关系,其中Router C为路由反射器。Router A、Router B和Router D建立OSPF邻居关系。Router D通过OSPF和BGP同时发布IPv4单播路由9.9.9.9/32,Router A收到后,通过修改来自BGP的9.9.9.9/32路由的优先级,从而使得Router A在IP路由表中优选来自BGP的路由9.9.9.9/32。
图4-7 修改BGP路由优先级配置举例组网图
(1) 配置各接口的IP地址(略)
(2) 配置Router A
# 配置OSPF协议。
[RouterA] ospf 1
[RouterA-ospf-1] area 0.0.0.0
[RouterA-ospf-1] quit
# 将接口IP发布到OSPF协议。
[RouterA] interface ten-gigabitethernet 3/1/1
[RouterA-Ten-GigabitEthernet3/1/1] ospf 1 area 0.0.0.0
[RouterA-Ten-GigabitEthernet3/1/1] quit
# 配置BGP协议。
[RouterA] bgp 10
[RouterA-bgp-default] peer 13.1.1.3 as-number 10
[RouterA-bgp-default] address-family ipv4 unicast
[RouterA-bgp-default-ipv4] peer 13.1.1.3 enable
[RouterA-bgp-default-ipv4] quit
[RouterA-bgp-default] quit
(3) 配置Router B
# 配置OSPF协议。
[RouterB] ospf 1
[RouterB-ospf-1] area 0.0.0.0
[RouterB-ospf-1] quit
# 将接口IP发布到OSPF协议。
[RouterB] interface ten-gigabitethernet 3/1/1
[RouterB-Ten-GigabitEthernet3/1/1] ospf 1 area 0.0.0.0
[RouterB-Ten-GigabitEthernet3/1/1] quit
[RouterB] interface ten-gigabitethernet 3/1/2
[RouterB-Ten-GigabitEthernet3/1/2] ospf 1 area 0.0.0.0
[RouterB-Ten-GigabitEthernet3/1/2] quit
(4) 配置Router C
# 配置BGP协议。
[RouterC] bgp 10
[RouterC-bgp-default] peer 13.1.1.1 as-number 10
[RouterC-bgp-default] peer 34.1.1.4 as-number 10
[RouterC-bgp-default] address-family ipv4 unicast
[RouterC-bgp-default-ipv4] peer 13.1.1.1 enable
[RouterC-bgp-default-ipv4] peer 13.1.1.1 reflect-client
[RouterC-bgp-default-ipv4] peer 13.1.1.1 next-hop-local
[RouterC-bgp-default-ipv4] peer 34.1.1.4 enable
[RouterC-bgp-default-ipv4] peer 34.1.1.4 reflect-client
[RouterC-bgp-default-ipv4] peer 34.1.1.4 next-hop-local
[RouterC-bgp-default-ipv4] reflect change-path-attribute
[RouterC-bgp-default-ipv4] quit
[RouterC-bgp-default] quit
(5) 配置Router D
# 配置OSPF协议。
[RouterD] ospf 1
[RouterD-ospf-1] area 0.0.0.0
[RouterD-ospf-1] quit
# 将接口IP发布到IGP协议。
[RouterD] interface LoopBack1
[RouterD-LoopBack1] ip address 9.9.9.9 255.255.255.255
[RouterD-LoopBack1] ospf 1 area 0.0.0.0
[RouterD-LoopBack1] quit
[RouterD] interface ten-gigabitethernet 3/1/1
[RouterD-Ten-GigabitEthernet3/1/1] ospf 1 area 0.0.0.0
[RouterD-Ten-GigabitEthernet3/1/1] quit
# 配置BGP协议。
[RouterD] bgp 10
[RouterD-bgp-default] peer 34.1.1.3 as-number 10
[RouterD-bgp-default] address-family ipv4 unicast
[RouterD-bgp-default-ipv4] network 9.9.9.9 255.255.255.255
[RouterD-bgp-default-ipv4] peer 34.1.1.3 enable
[RouterD-bgp-default-ipv4] quit
[RouterD-bgp-default] quit
(6) 配置修改Router A收到的BGP路由在IP路由表中的优先级
# 在Router A上,查看IP路由表中9.9.9.9/32的详细信息。
[RouterA] displey ip routing-table 9.9.9.9 verbose
Summary count : 2
Destination: 9.9.9.9/32
Protocol: O_INTRA
Process ID: 1
SubProtID: 0x1 Age: 06h34m02s
FlushedAge: 00h01m35s
Cost: 2 Preference: 10
IpPre: N/A QosLocalID: N/A
Tag: 0 State: Active Adv
OrigTblID: 0x2 OrigVrf: default-vrf
TableID: 0x2 OrigAs: 0
NibID: 0x13000002 LastAs: 0
AttrID: 0xffffffffffffffff
BkAttrID: 0xffffffffffffffff Neighbor: 0.0.0.0
Flags: 0x10041 OrigNextHop: 12.1.1.2
Label: NULL RealNextHop: 12.1.1.2
BkLabel: NULL BkNextHop: N/A
SRLabel: NULL Interface: Ten-GigabitEthernet3/1/1
BkSRLabel: NULL BkInterface: N/A
Tunnel ID: Invalid IPInterface: Ten-GigabitEthernet3/1/1
BkTunnel ID: Invalid BkIPInterface: N/A
InLabel: NULL ColorInterface: N/A
SIDIndex: NULL BkColorInterface: N/A
FtnIndex: 0x0 TunnelInterface: N/A
TrafficIndex: N/A BkTunnelInterface: N/A
Connector: 0.0.0.0 PathID: 0x0
UserID: 0xffffffff SRTunnelID: Invalid
SID Type: N/A NID: Invalid
FlushNID: Invalid BkNID: Invalid
BkFlushNID: Invalid StatFlags: 0x0
SID: N/A
BkSID: N/A
CommBlockLen: 0 Priority: Medium
MemberPort: N/A ExtFlags: 0x0
UCMIndex: 0x0 UserVLAN: 65535
UCMMTU: 0 BrasHash: 0
SessionID: 0 UserGroupID: 0
IsoGroupID: 0 BkIsoGroupID: 0
Destination: 9.9.9.9/32
Protocol: BGP instance default
Process ID: 0
SubProtID: 0x1 Age: 00h01m35s
FlushedAge: 06h23m44s
Cost: 0 Preference: 255
IpPre: N/A QosLocalID: N/A
Tag: 0 State: Inactive Adv
OrigTblID: 0x2 OrigVrf: default-vrf
TableID: 0x2 OrigAs: 10
NibID: 0x16000001 LastAs: 10
AttrID: 0x0
BkAttrID: 0xffffffffffffffff Neighbor: 3.3.3.3
Flags: 0x60 OrigNextHop: 4.4.4.4
Label: NULL RealNextHop: 13.1.1.3
BkLabel: NULL BkNextHop: N/A
SRLabel: NULL Interface: Ten-GigabitEthernet3/1/2
BkSRLabel: NULL BkInterface: N/A
Tunnel ID: Invalid IPInterface: Ten-GigabitEthernet3/1/2
BkTunnel ID: Invalid BkIPInterface: N/A
InLabel: NULL ColorInterface: N/A
SIDIndex: NULL BkColorInterface: N/A
FtnIndex: 0x0 TunnelInterface: N/A
TrafficIndex: N/A BkTunnelInterface: N/A
Connector: N/A PathID: 0x0
UserID: 0xffffffff SRTunnelID: Invalid
SID Type: N/A NID: Invalid
FlushNID: Invalid BkNID: Invalid
BkFlushNID: Invalid StatFlags: 0x0
SID: N/A
BkSID: N/A
CommBlockLen: 0 Priority: Low
MemberPort: N/A ExtFlags: 0x0
UCMIndex: 0x0 UserVLAN: 65535
UCMMTU: 0 BrasHash: 0
SessionID: 0 UserGroupID: 0
IsoGroupID: 256 BkIsoGroupID: 256
可以看到,IP路由表中存在两条9.9.9.9/32路由,但由于来自OSPF协议的路由优先级为10,来自BGP协议的路由优先级为255,因此只有来自OSPF协议的路由为激活状态。
# 在Device A上配置ACL和路由策略,使得路由策略匹配前缀为9.9.9.9/32的路由,并为其设置在IP路由表中的路由优先级为5。
[RouterA] acl basic 2077
[RouterA-acl-ipv4-basic-2077] rule 5 permit source 9.9.9.9 0
[RouterA-acl-ipv4-basic-2077] quit
[RouterA] route-policy change-preference permit node 10
[RouterA-route-policy-change-preference-10] if-match ip address acl 2077
[RouterA-route-policy-change-preference-10] apply preference 5
[RouterA-route-policy-change-preference-10] quit
# 在Router A上配置BGP协议通过应用路由策略将收到的路由9.9.9.9/32的优先级修改为5。
[RouterA] bgp 10
[RouterA-bgp-default] address-family ipv4 unicast
[RouterA-bgp-default-ipv4] preference route-policy change-preference
[RouterA-bgp-default-ipv4] quit
[RouterA-bgp-default] quit
# 在Device A上,查看IP路由表中9.9.9.9/32的详细信息。
[RouterA] displey ip routing-table 9.9.9.9 verbose
Summary count : 2
Destination: 9.9.9.9/32
Protocol: BGP instance default
Process ID: 0
SubProtID: 0x1 Age: 00h00m08s
FlushedAge: 00h00m08s
Cost: 0 Preference: 5
IpPre: N/A QosLocalID: N/A
Tag: 0 State: Active Adv
OrigTblID: 0x2 OrigVrf: default-vrf
TableID: 0x2 OrigAs: 10
NibID: 0x16000001 LastAs: 10
AttrID: 0x0
BkAttrID: 0xffffffffffffffff Neighbor: 3.3.3.3
Flags: 0x10060 OrigNextHop: 4.4.4.4
Label: NULL RealNextHop: 13.1.1.3
BkLabel: NULL BkNextHop: N/A
SRLabel: NULL Interface: Ten-GigabitEthernet3/1/2
BkSRLabel: NULL BkInterface: N/A
Tunnel ID: Invalid IPInterface: Ten-GigabitEthernet3/1/2
BkTunnel ID: Invalid BkIPInterface: N/A
InLabel: NULL ColorInterface: N/A
SIDIndex: NULL BkColorInterface: N/A
FtnIndex: 0x0 TunnelInterface: N/A
TrafficIndex: N/A BkTunnelInterface: N/A
Connector: N/A PathID: 0x0
UserID: 0xffffffff SRTunnelID: Invalid
SID Type: N/A NID: Invalid
FlushNID: Invalid BkNID: Invalid
BkFlushNID: Invalid StatFlags: 0x0
SID: N/A
BkSID: N/A
CommBlockLen: 0 Priority: Low
MemberPort: N/A ExtFlags: 0x0
UCMIndex: 0x0 UserVLAN: 65535
UCMMTU: 0 BrasHash: 0
SessionID: 0 UserGroupID: 0
IsoGroupID: 256 BkIsoGroupID: 256
Destination: 9.9.9.9/32
Protocol: O_INTRA
Process ID: 1
SubProtID: 0x1 Age: 06h54m06s
FlushedAge: 00h21m39s
Cost: 2 Preference: 10
IpPre: N/A QosLocalID: N/A
Tag: 0 State: Inactive Adv
OrigTblID: 0x2 OrigVrf: default-vrf
TableID: 0x2 OrigAs: 0
NibID: 0x13000002 LastAs: 0
AttrID: 0xffffffffffffffff
BkAttrID: 0xffffffffffffffff Neighbor: 0.0.0.0
Flags: 0x41 OrigNextHop: 12.1.1.2
Label: NULL RealNextHop: 12.1.1.2
BkLabel: NULL BkNextHop: N/A
SRLabel: NULL Interface: Ten-GigabitEthernet3/1/1
BkSRLabel: NULL BkInterface: N/A
Tunnel ID: Invalid IPInterface: Ten-GigabitEthernet3/1/1
BkTunnel ID: Invalid BkIPInterface: N/A
InLabel: NULL ColorInterface: N/A
SIDIndex: NULL BkColorInterface: N/A
FtnIndex: 0x0 TunnelInterface: N/A
TrafficIndex: N/A BkTunnelInterface: N/A
Connector: 0.0.0.0 PathID: 0x0
UserID: 0xffffffff SRTunnelID: Invalid
SID Type: N/A NID: Invalid
FlushNID: Invalid BkNID: Invalid
BkFlushNID: Invalid StatFlags: 0x0
SID: N/A
BkSID: N/A
CommBlockLen: 0 Priority: Medium
MemberPort: N/A ExtFlags: 0x0
UCMIndex: 0x0 UserVLAN: 65535
UCMMTU: 0 BrasHash: 0
SessionID: 0 UserGroupID: 0
IsoGroupID: 0 BkIsoGroupID: 0
可以看到,来自BGP协议的路由优先级被修改为了5,因此来自BGP协议的路由更优,成为激活路由。
调整和优化BGP网络配置任务如下:
· 调整和优化EBGP会话的建立与复位
· 调整BGP会话的建立、中断与软复位
¡ 配置BGP软复位
· 配置BGP可以优选和发布多条相同前缀路由
· 调整BGP路由的下一跳迭代
· 配置不检查来自指定对等体/对等体组的EBGP路由的下一跳地址
· 调整BGP路由下发到IP路由表时的规则
· 调整标签分配方式与路由优选规则
¡ 配置标签申请方式
· 配置关闭MPLS Local Ifnet隧道自动创建功能
为了避免设备与BGP对等体之间进行BGP报文交互时,BGP报文被中间节点分片,可开启BGP建立TCP连接时的Path MTU探测功能。配置本功能后,BGP会话在新建TCP连接时,会通过探测机制确定本地设备与BGP对等体之间的Path MTU,并依据Path MTU(TCP路径上从源端到目的端的最小MTU)设定TCP分段长度,最大限度利用网络资源。有关Path MTU探测功能的详细介绍,请参见“三层技术-IP业务配置指导”中的“IP性能优化”。
本功能可全局配置或指定对等体进行配置。全局配置时,本功能仅对通过IPv4地址建立的TCP连接生效。对于同一个对等体,若同时配置了以上两种方式,则以指定对等体下的配置为准。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 开启BGP建立TCP连接时的Path MTU探测功能。
path-mtu-discovery enable
缺省情况下,BGP建立TCP连接时的Path MTU探测功能处于关闭状态。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 开启BGP与指定对等体建立TCP连接时的Path MTU探测功能。
peer ipv4-address [ mask-length ] path-mtu-discovery enable
缺省情况下,BGP与指定对等体建立TCP连接时的Path MTU探测功能处于关闭状态。
BGP对等体之间往往需要经过多跳建立TCP连接。由于源端到目的端不同设备的MTU不同,中间节点转发BGP报文时可能需要重新进行分片,导致频繁封装解封装数据包,降低了转发效率。为了避免上述情况,可通过本功能配置本地设备与指定对等体/对等体组建立TCP连接时所使用的TCP MSS值,以达到TCP报文在源端分段后,不再被中间节点分片的目的,进而提高网络性能。有关TCP最大报文段长度(Max Segment Size,MSS)的详细介绍,请参见“三层技术-IP业务配置指导”中的“IP性能优化”。
配置本功能后,设备与指定对等体/对等体组建立BGP TCP连接时,TCP最大报文段长度为以下MSS中的最小值:
· 与BGP对等体建立TCP连接的接口上,通过接口上发送IPv4报文的MTU值(由ip mtu命令配置)计算得到的MSS值。
· 与BGP对等体建立TCP连接的接口上,通过tcp mss命令配置的接口MSS值。
· 配置tcp path-mtu-discovery命令开启TCP连接的Path MTU探测功能后,根据探测机制确定的Path MTU计算得到的MSS值。
· 配置path-mtu-discovery enable命令或peer path-mtu-discovery enable命令,开启BGP与对等体建立TCP连接时的Path MTU探测功能后,根据探测机制确定的Path MTU计算得到的MSS值。
· 本功能配置的设备与指定对等体/对等体组之间建立BGP TCP连接时所使用的MSS值。(如果未配置本功能,则TCP MSS值为上述几项中的最小值)
根据MTU值(接口MTU或Path MTU)计算MSS值的方法为:MSS=MTU值-IP头部长度-TCP头部长度。有关MTU和MSS的详细介绍,请参见“三层技术-IP业务配置指导”中的“IP性能优化”。
配置本功能可能会导致已经建立的BGP会话断开后重新建立,请谨慎配置本命令。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置设备与指定对等体/对等体组之间建立BGP TCP连接时所使用的TCP最大报文段长度。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } tcp-mss mss-value
缺省情况下,未指定设备与指定对等体/对等体组建立TCP连接时所使用的TCP最大报文段长度。
当前路由器要与另外一个路由器建立EBGP会话,它们之间必须具有直连的物理链路,且必须使用直连接口建立会话。如果不满足这一要求,则必须使用peer ebgp-max-hop命令允许它们经过多跳建立EBGP会话。
配置BGP GTSM功能后,只要本地设备和指定的对等体通过了GTSM检查,就允许在二者之间建立EBGP会话,不管二者之间的跳数是否超过peer ebgp-max-hop命令指定的跳数范围。
建议不要指定直连EBGP对等体/对等体组配置peer ebgp-max-hop命令,否则可能导致BGP路由无法正常迭代。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置允许本地路由器同非直连网络上的邻居建立EBGP会话,同时指定允许的最大跳数。
peer { group-name | ipv4-address [ mask-length ] } ebgp-max-hop [ hop-count ]
缺省情况下,不允许同非直连网络上的邻居建立EBGP会话。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置允许本地路由器同非直连网络上的邻居建立EBGP会话,同时指定允许的最大跳数。
peer { group-name | ipv6-address [ prefix-length ] } ebgp-max-hop [ hop-count ]
缺省情况下,不允许同非直连网络上的邻居建立EBGP会话。
未使能直连EBGP会话快速复位功能时,连接直连EBGP对等体的链路down后,本地路由器不会立即断开与EBGP对等体的会话,而是等待会话保持时间(Holdtime)超时后,才断开该会话。此时链路震荡不会影响EBGP会话的状态。
使能直连EBGP会话快速复位功能后,连接直连EBGP对等体的链路down时,本地路由器会立即断开与EBGP对等体的会话,并重新与该对等体建立EBGP会话,从而实现快速发现链路故障并重建会话。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 使能直连EBGP会话快速复位功能。
ebgp-interface-sensitive
缺省情况下,直连EBGP会话快速复位功能处于使能状态。
当系统进入二级内存门限告警状态后,BGP会周期性地选择一个EBGP对等体,断开与该对等体之间的BGP会话,直到系统内存恢复为止。用户可以通过本配置来避免在二级内存门限告警状态下,断开与指定EBGP对等体/对等体组之间的BGP会话,以达到对特定EBGP对等体/对等体组进行保护的目的。
内存告警门限的详细介绍,请参见“基础配置指导”中的“设备管理”。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置系统进入二级内存门限告警状态后,不断开与指定EBGP对等体/对等体组之间的会话。
peer { group-name | ipv4-address [ mask-length ] } low-memory-exempt
缺省情况下,系统在二级内存门限告警状态下,会周期性地选择一个EBGP对等体,并断开与该对等体之间的BGP会话。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置系统进入二级内存门限告警状态后,不断开与指定EBGP对等体/对等体组之间的会话。
peer { group-name | ipv6-address [ prefix-length ] } low-memory-exempt
缺省情况下,系统在二级内存门限告警状态下,会周期性地选择一个EBGP对等体,并断开与该对等体之间的BGP会话。
BGP ORF(Outbound Route Filtering,输出路由过滤)功能是指将ORF信息(本地的路由接收策略信息)通过Route-refresh消息发送给对等体,当对等体需要向本地发送Update更新消息时,不仅要利用对等体上的路由策略对路由进行过滤,还需要利用接收到的路由接收策略对路由进行过滤,只有通过策略过滤的路由信息才会发给本地,以达到减少BGP邻居间Update更新消息的交互,节省网络资源的目的。
使能BGP ORF能力后,本地和BGP对等体会通过Open消息协商ORF能力(即收发的消息里是否允许携带ORF信息,如果允许携带,是否可以携带非标准的ORF信息),当协商完毕并成功建立BGP会话后,可以通过特殊的Route-refresh消息交互ORF信息。
本地和BGP对等体都需要执行本配置,且需要保证一端能够发送携带ORF信息的Route-refresh报文,另一端能够接收携带ORF信息的Route-refresh报文,才能保证ORF能力协商成功。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv4单播地址族视图、BGP-VPN IPv4单播地址族视图或BGP IPv4组播地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv4组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 multicast
(3) 开启BGP邻居协商的ORF能力。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } capability-advertise orf prefix-list { both | receive | send }
缺省情况下,BGP邻居协商的ORF能力处于关闭状态。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv6单播地址族视图、BGP-VPN IPv6单播地址族视图或BGP IPv6组播地址族视图。
¡ 请依次执行以下命令进入BGP IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv6组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 multicast
(3) 开启BGP邻居协商的ORF能力。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } capability-advertise orf prefix-list { both | receive | send }
缺省情况下,BGP邻居协商的ORF能力处于关闭状态。
和采用非标准ORF的友商设备互通时需要执行本配置。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 开启BGP邻居协商的非标准ORF能力。
peer { group-name | ip-address [ mask-length ] | ipv6-address [ prefix-length ] } capability-advertise orf non-standard
缺省情况下,BGP邻居协商的非标准ORF能力处于关闭状态。
设备支持4字节的AS号,即AS号取值占用4字节,取值范围为1~4294967295。缺省情况下,设备在与对端设备建立BGP会话时,通过Open消息通告对端设备本端支持4字节的AS号。如果对端设备不支持4字节AS号(只支持2字节AS号),则会导致会话协商失败。此时,在本端与对端设备之间使能4字节AS号抑制功能,可以使得本端设备通过Open消息向对端设备谎称自己不支持4字节的AS号,从而确保本端和对端设备之间可以成功建立BGP会话。
如果对端设备支持4字节AS号,请不要使能4字节AS号抑制功能,否则会导致BGP会话无法建立。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 使能4字节AS号抑制功能。
peer { group-name | ipv4-address [ mask-length ] } capability-advertise suppress-4-byte-as
缺省情况下, 4字节AS号抑制功能处于关闭状态。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 使能4字节AS号抑制功能。
peer { group-name | ipv6-address [ prefix-length ] } capability-advertise suppress-4-byte-as
缺省情况下,4字节AS号抑制功能处于关闭状态。
由于网络升级维护等原因,需要暂时断开与对等体/对等体组的BGP会话时,可以通过本配置禁止与对等体/对等体组建立会话。当网络恢复后,取消本配置以恢复与对等体/对等体组的会话。这样,网络管理员无需删除并重新进行对等体/对等体组相关配置,减少了网络维护的工作量。
设备可以通过以下两种方式禁止与对等体/对等体组建立会话:
· 仅禁止与指定对等体/对等体组建立会话。
· 禁止与所有对等体建立会话。
执行本配置时,如果可以指定了graceful参数,则设备会启动等待邻居关系断开定时器,并重新发布路由信息。不同方式下,发布的路由信息有所不同:
· 仅禁止与指定对等体/对等体组建立会话:
¡ 向指定的对等体/对等体组发送本设备上全部的路由。
¡ 向其他的IBGP对等体/对等体组发送来自指定对等体/对等体组的路由。
· 禁止与所有对等体建立会话:向所有对等体/对等体组重新发送本设备上全部的路由。
执行本配置还可以配置这些路由的属性,以降低重新发布路由的优先级,使得邻居路由器优选从其他邻居学到的路由,从而避免当定时器超时、邻居关系断开时造成流量的中断。
如果同时配置ignore all-peers和peer ignore命令,则针对同一对等体/对等体组,以peer ignore命令的配置为准。
如果本设备和对等体/对等体组的会话已经建立,则执行ignore all-peers或peer ignore命令后,会断开BGP会话,并且清除所有相关路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 禁止与对等体/对等体组建立会话。
peer { group-name | ipv4-address [ mask-length ] } ignore [ graceful graceful-time { community { community-number | aa:nn } | local-preference preference | med med } * ]
缺省情况下,允许与BGP对等体/对等体组建立会话。
如果本设备和对等体的会话已经建立,则执行本命令后,会停止该会话,并且清除所有相关路由信息;如果本设备和对等体组的会话已经建立,则执行本命令后,会终止与对等体组内所有对等体之间的会话,并且清除所有相关路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 禁止与IPv6 BGP对等体/对等体组建立会话。
peer { group-name | ipv6-address [ prefix-length ] } ignore [ graceful graceful-time { community { community-number | aa:nn } | local-preference preference | med med } * ]
缺省情况下,允许与BGP对等体/对等体组建立会话。
如果本设备和对等体的会话已经建立,则执行本命令后,会停止该会话,并且清除所有相关路由信息;如果本设备和对等体组的会话已经建立,则执行本命令后,会终止与对等体组内所有对等体之间的会话,并且清除所有相关路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 禁止与所有对等体/对等体组建立会话。
ignore all-peers [ graceful graceful-time { community { community-number | aa:nn } | local-preference preference | med med } * ]
缺省情况下,允许与BGP对等体/对等体组建立会话。
如果本设备和对等体/对等体组的会话已经建立,则执行本命令后,会断开本设备和对等体/对等体组的会话,并且清除所有路由信息。
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) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 通过Route-refresh功能实现BGP软复位。请选择其中一项进行配置。
¡ 使能本地路由器与指定对等体/对等体组的BGP路由刷新功能。
peer { group-name | ipv4-address [ mask-length ] } capability-advertise route-refresh
¡ 使能本地路由器与指定BGP对等体/对等体组的BGP路由刷新、多协议扩展和4字节AS号功能。
undo peer { group-name | ipv4-address [ mask-length ] } capability-advertise conventional
缺省情况下,BGP路由刷新、多协议扩展和4字节AS号功能处于使能状态。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 通过Route-refresh功能实现BGP软复位。请选择其中一项进行配置。
¡ 使能本地路由器与指定IPv6 BGP对等体/对等体组的BGP路由刷新功能。
peer { group-name | ipv6-address [ prefix-length ] } capability-advertise route-refresh
¡ 使能本地路由器与指定IPv6 BGP对等体/对等体组的BGP路由刷新、多协议扩展和4字节AS号功能。
undo peer { group-name | ipv6-address [ prefix-length ] } capability-advertise conventional
缺省情况下,BGP路由刷新、多协议扩展和4字节AS号功能处于使能状态。
将从对等体收到的原始路由信息保存在本地的配置方式分为以下两种:
· 全局配置方式:在BGP实例视图下配置keep-all-routes命令后,设备将保存来自任意对等体的所有原始路由更新信息。
· 为对等体/对等体组配置保存指定地址族路由:在地址族下为对等体/对等体组配置peer keep-all-routes后,设备将保存从该对等体/对等体组收到的指定地址族原始路由更新信息。
本功能仅对开启功能后接收到的路由生效。
BGP实例视图下的keep-all-routes命令优先级最高,开启后设备将保存来自任意对等体的所有原始路由更新信息,在地址族视图下对某一对等体配置undo peer keep-all-routes,无法关闭指定对等体/对等体组的保存所有原始路由信息功能。如仅需对部分对等体/对等体组开启保存所有原始路由信息功能,请在对应地址族视图下为指定对等体配置peer keep-all-routes命令,并且确保BGP实例视图下未配置keep-all-routes命令。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 保存从任意对等体收到的原始路由更新信息。
keep-all-routes
缺省情况下,不保存来自对等体的原始路由更新信息。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv4单播地址族视图、BGP-VPN IPv4单播地址族视图、BGP IPv4组播地址族视图、BGP IPv4单播标签地址族视图或BGP-VPN IPv4单播标签地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv4组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 multicast
¡ 请依次执行以下命令进入BGP IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 labeled-unicast
¡ 请依次执行以下命令进入BGP-VPN IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 labeled-unicast
(3) 保存所有来自指定对等体/对等体组的原始路由更新信息。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } keep-all-routes
缺省情况下,不保存来自对等体/对等体组的原始路由更新信息。
BGP IPv4单播标签地址族视图和BGP-VPN IPv4单播标签地址族视图下不支持IPv6参数。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv6单播地址族视图、BGP-VPN IPv6单播地址族视图或BGP IPv6组播地址族视图。
¡ 请依次执行以下命令进入BGP IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv6组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 multicast
(3) 保存所有来自指定BGP对等体/对等体组的原始路由更新信息。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } keep-all-routes
缺省情况下,不保存来自对等体/对等体组的原始路由更新信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置Route-refresh功能。请选择其中一项进行配置。
¡ 使能本地路由器与指定对等体/对等体组的BGP路由刷新功能。
peer { group-name | ipv4-address [ mask-length ] } capability-advertise route-refresh
¡ 使能本地路由器与指定BGP对等体/对等体组的BGP路由刷新、多协议扩展和4字节AS号功能。
undo peer { group-name | ipv4-address [ mask-length ] } capability-advertise conventional
缺省情况下,BGP路由刷新、多协议扩展和4字节AS号功能处于使能状态。
(4) 依次执行以下命令退回用户视图。
a. quit
b. quit
(5) 手工对BGP会话进行软复位。请选择其中一项进行配置。
¡ 手工软复位IPv4地址族下的BGP IPv4会话。
refresh bgp [ instance instance-name ] { ipv4-address [ mask-length ] | all | external | group group-name | internal } { export | import } ipv4 [ multicast | [ labeled-unicast | unicast ] [ vpn-instance vpn-instance-name ] ]
¡ 手工软复位IPv4地址族下的BGP IPv6会话。
refresh bgp [ instance instance-name ] ipv6-address [ prefix-length ] { export | import } ipv4 [ multicast | [ unicast ] [ vpn-instance vpn-instance-name ] ]
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置Route-refresh功能。请选择其中一项进行配置。
¡ 使能本地路由器与IPv6 BGP指定对等体/对等体组的BGP路由刷新功能。
peer { group-name | ipv6-address [ prefix-length ] } capability-advertise route-refresh
¡ 使能本地路由器与指定IPv6 BGP对等体/对等体组的BGP路由刷新、多协议扩展和4字节AS号功能。
undo peer { group-name | ipv6-address [ prefix-length ] } capability-advertise conventional
缺省情况下,BGP路由刷新、多协议扩展和4字节AS号功能处于使能状态。
(4) 依次执行以下命令退回用户视图。
a. quit
b. quit
(5) 手工对BGP会话进行软复位。请选择其中一项进行配置。
¡ 手工软复位IPv6地址族下的BGP IPv6会话。
refresh bgp [ instance instance-name ] { ipv6-address [ prefix-length ] | all | external | group group-name | internal } { export | import } ipv6 [ multicast | [ unicast ] [ vpn-instance vpn-instance-name ] ]
¡ 手工软复位IPv6地址族下的BGP IPv4会话。
refresh bgp [ instance instance-name ] ipv4-address [ mask-length ] { export | import } ipv6 [ multicast | [ unicast ] [ vpn-instance vpn-instance-name ] ]
通过改变BGP选路规则实现负载分担时,设备根据balance命令配置的进行BGP负载分担的路由条数,选择指定数目的路由进行负载分担,以提高链路利用率。
配置balance igp-metric-ignore和bestroute igp-metric-ignore中任一命令均可使BGP在选择负载分担的路由时忽略IGP Metric值。两条命令的不同点在于:
· balance igp-metric-ignore命令仅用于负载分担。BGP路由发布时的最优路由选择不受此命令的影响。BGP向外发布路由时仍会按照选路规则比较IGP Metric值,以选出最优的路由。
· bestroute igp-metric-ignore命令不仅用于负载分担,还用于BGP路由发布时的最优路由选择。执行本命令后,BGP选择负载分担路由、向外发布路由时,均会忽略路由的IGP Metric值。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) (可选)配置BGP在选择最优路由时忽略IGP Metric的比较。
bestroute igp-metric-ignore
缺省情况下,BGP在选择最优路由时会比较这些路由下一跳的IGP路由的Metric值,并优选IGP Metric值最小的路由。
下一跳IGP Metric不相同的BGP路由之间无法形成负载分担。配置本命令使得不同路由的下一跳IGP Metric不同时能够形成BGP负载分担。
(4) 退回系统视图。
¡ 在BGP实例视图下退回系统视图。
quit
¡ 在BGP-VPN实例视图下请依次执行以下命令退回系统视图。
quit
quit
(5) 进入BGP IPv4单播地址族视图、BGP-VPN IPv4单播地址族视图、BGP IPv4组播地址族视图、BGP IPv4单播标签地址族视图或BGP-VPN IPv4单播标签地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv4组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 multicast
¡ 请依次执行以下命令进入BGP IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 labeled-unicast
¡ 请依次执行以下命令进入BGP-VPN IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 labeled-unicast
(6) 配置进行BGP负载分担的路由条数。
balance [ ebgp | eibgp | ibgp ] number
缺省情况下,不会进行BGP负载分担。
(7) (可选)配置不同AS_PATH属性的路由能够形成BGP负载分担。
balance as-path-neglect
缺省情况下,不同AS_PATH属性的路由之间不能形成BGP负载分担。
(8) (可选)配置AS_PATH属性内容不同但长度相同的路由之间能够形成BGP负载分担。
balance as-path-relax [ ebgp | ibgp ]
缺省情况下,AS_PATH属性内容不同但长度相同的路由之间不能形成BGP负载分担。
(9) (可选)配置到达路由下一跳的IGP路由的Metric值不同的BGP路由之间能够形成BGP负载分担。
balance igp-metric-ignore
缺省情况下,到达路由下一跳的IGP路由的Metric值不同的BGP路由之间不能形成负载分担。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) (可选)配置BGP在选择最优路由时忽略IGP Metric的比较。
bestroute igp-metric-ignore
缺省情况下,BGP在选择最优路由时会比较这些路由下一跳的IGP路由的Metric值,并优选IGP Metric值最小的路由。
下一跳IGP Metric不相同的BGP路由之间无法形成负载分担。配置本命令使得不同路由的下一跳IGP Metric不同时能够形成BGP负载分担。
(4) 退回系统视图。
¡ 在BGP实例视图下退回系统视图。
quit
¡ 在BGP-VPN实例视图下请依次执行以下命令退回系统视图。
quit
quit
(5) 进入BGP IPv6单播地址族视图、BGP-VPN IPv6单播地址族视图或BGP IPv6组播地址族视图。
¡ 请依次执行以下命令进入BGP IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv6组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 multicast
(6) 配置进行BGP负载分担的路由条数。
balance [ ebgp | eibgp | ibgp ] number
缺省情况下,不会进行BGP负载分担。
(7) (可选)配置不同AS_PATH属性的路由能够形成BGP负载分担。
balance as-path-neglect
缺省情况下,不同AS_PATH属性的路由之间不能形成BGP负载分担。
(8) (可选)配置AS_PATH属性内容不同但长度相同的路由之间能够形成BGP负载分担。
balance as-path-relax
缺省情况下,AS_PATH属性内容不同但长度相同的路由之间不能形成BGP负载分担。
(9) (可选)配置到达路由下一跳的IGP路由的Metric值不同的BGP路由之间能够形成BGP负载分担。
balance igp-metric-ignore
缺省情况下,到达路由下一跳的IGP路由的Metric值不同的BGP路由之间不能形成负载分担。
在大规模的网络中,路由反射器通常可以接收到同一前缀的多条BGP路由,但是在缺省情况下,BGP只发布一条最优路由。如果最优路由所在路径出现网络故障,数据流量将会被中断,直到BGP根据新的网络拓扑路由收敛后,被中断的流量才能恢复正常的传输。
为了解决上述问题,可以在路由反射器上配置Add-Path(Additional Paths)功能。部署该功能后,设备可以同时发布多条相同前缀的路由给对等体。对等体接收到相同前缀的多条BGP路由后,即可为到达同一目的网络形成多条链路,这些链路之间既可以通过balance命令形成负载分担,也可以按照BGP路由的优选规则形成备份,在一条链路出现故障时将流量快速切换到其他链路上,从而提高了数据传输的可靠性。
Add-Path能力包括接收和发送两种。为了让对等体间的Add-Path能力协商成功,必须一端使能接收能力,另一端使能发送能力。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv4单播地址族视图、BGP-VPN IPv4单播地址族视图、BGP IPv4单播标签地址族视图或BGP-VPN IPv4单播标签地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 labeled-unicast
¡ 请依次执行以下命令进入BGP-VPN IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 labeled-unicast
(3) 配置Add-Path功能。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } additional-paths { receive | send } *
缺省情况下,未配置Add-Path功能。
BGP IPv4单播标签地址族视图和BGP-VPN IPv4单播标签地址族视图下不支持IPv6参数。
(4) 配置向指定对等体/对等体组发送的Add-Path优选路由的最大条数。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise additional-paths best number
缺省情况下,向指定对等体/对等体组发送的Add-Path优选路由的最大条数为1。
BGP IPv4单播标签地址族视图和BGP-VPN IPv4单播标签地址族视图下不支持IPv6参数。
(5) 配置Add-Path优选路由的最大条数。
additional-paths select-best best-number
缺省情况下,Add-Path优选路由的最大条数为1。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv6单播地址族视图或BGP-VPN IPv6单播地址族视图。
¡ 请依次执行以下命令进入BGP IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
(3) 配置Add-Path功能。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } additional-paths { receive | send } *
缺省情况下,未配置Add-Path功能。
(4) 配置向指定对等体/对等体组发送的Add-Path优选路由的最大条数。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise additional-paths best number
缺省情况下,向指定对等体/对等体组发送的Add-Path优选路由的最大条数为1。
(5) 配置Add-Path优选路由的最大条数。
additional-paths select-best best-number
缺省情况下,Add-Path优选路由的最大条数为1。
如图5-1所示,设备之间均通过BGP协议互通,Device A与Device D之间存在两条路径,当Device D和Device B之间的链路不通时,流量切换到备份路径上转发,之后若主用路径恢复正常,流量将切回主用路径。这种情况下,当主用链路恢复正常时,Device B会向Device A发送Update消息更新路由,Device A收到路由后触发路由优选,将流量切换到主用路径上进行转发,此时Device B可能未完成FIB转发表项的刷新,导致流量丢失。通过在Device A上开启延迟路由优选功能可以在触发路由优选时延迟一段时间再进行重新选路,避免切换路径时由于表项未完成刷新导致的流量丢失现象。
配置本功能时,需要注意:
· 仅路由变化后存在多条相同前缀的有效路由时路由优选才会延迟。
· 将路由优选延迟时间修改为非0值时,正在等待延迟路由优选时间的路由不受影响,仍采用延迟开始时的时间;将路由优选延迟时间修改为0时,正在等待延迟路由优选时间的路由会立即进行优选。
以下情况需要进行路由优选时不受路由优选延迟时间影响,仍会立即进行路由优选:
· 本地的配置发生变化引起路由变化。
· 撤销路由引起路由变化。
· 路由变化后去往某一目的只有一条路由。
· BGP发生主备进程倒换时。
· 存在多条等价路由的情况下,选中路由发生变化。
· 配置了FRR情况下仅存在最优路由和次优路由。
· 引入的路由触发路由优选。
· 最优路由下一跳发生变化且存在正在等待延迟优选时间的相同前缀路由。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv4单播地址族视图、BGP-VPN IPv4单播地址族视图、BGP IPv4组播地址族视图、BGP IPv4单播标签地址族视图或BGP-VPN IPv4单播标签地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv4组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 multicast
¡ 请依次执行以下命令进入BGP IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 labeled-unicast
¡ 请依次执行以下命令进入BGP-VPN IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 labeled-unicast
(3) 配置BGP路由延迟优选时间。
route-select delay delay-value
缺省情况下,延迟时间为0秒,即路由优选不延迟。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv6单播地址族视图、BGP-VPN IPv6单播地址族视图或BGP IPv6组播地址族视图。
¡ 请依次执行以下命令进入BGP IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv6组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 multicast
(3) 配置BGP路由延迟优选时间。
route-select delay delay-value
缺省情况下,延迟时间为0秒,即路由优选不延迟。
路由迭代变化可以分为以下两种:
· 紧急路由迭代变化:路由迭代变化后路由是否可达也发生变化,如由于网络故障,BGP路由无法正确迭代出下一跳路由或隧道,导致流量中断。
· 非紧急路由迭代变化:迭代路由或依赖路由发生变化,但路由是否可达未变化,如BGP路由迭代出的接口或隧道发生了变化,但流量仍可以正确转发。
当BGP路由的迭代路由或依赖路由频繁变化时,开启本功能为下一跳路由的变化配置延迟响应时间,可以减少不必要的重新选路和Update消息的发送,从而避免路由变化时流量大量丢失的问题。
本功能仅适用于到达同一目的地有多条链路的场景。当去往某一目的地的链路唯一时,如果配置本功能,则在链路故障后会造成更大的流量损失。
请根据实际组网配置适当的延迟响应时间。配置时间过短可能由于路由未收敛完成,导致BGP依然进行了不必要的重新选路和Update消息的发送;配置时间过长可能造成不必要的流量损失。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv4单播地址族视图、BGP-VPN IPv4单播地址族视图、BGP IPv4组播地址族视图、BGP IPv4单播标签地址族视图或BGP-VPN IPv4单播标签地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv4组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 multicast
¡ 请依次执行以下命令进入BGP IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 labeled-unicast
¡ 请依次执行以下命令进入BGP-VPN IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 labeled-unicast
(3) 开启下一跳路由迭代变化延迟响应功能。
nexthop recursive-lookup [ non-critical-event ] delay [ delay-value ]
缺省情况下,下一跳路由迭代变化延迟响应功能处于关闭状态。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv6单播地址族视图、BGP-VPN IPv6单播地址族视图或BGP IPv6组播地址族视图。
¡ 请依次执行以下命令进入BGP IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv6组播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 multicast
(3) 开启下一跳路由迭代变化延迟响应功能。
nexthop recursive-lookup [ non-critical-event ] delay [ delay-value ]
缺省情况下,下一跳路由迭代变化延迟响应功能处于关闭状态。
BGP路由的下一跳迭代到的依赖路由或者隧道发生变化时,会触发该BGP路由重新进行迭代。在频繁震荡的网络中,BGP路由可能会反复进行路由迭代,导致设备的CPU占用率居高不下。为了解决上述问题,可以配置本功能,使得BGP路由在进行下一跳路由迭代时先等待一段时间,一段时间过后再产生迭代的结果,从而降低BGP路由进行下一跳迭代的频率,减轻设备CPU的运行压力。
配置了抑制时间后,BGP路由进行多次迭代的流程如图5-2所示。
图5-2 BGP路由迭代抑制流程图
配置了抑制时间时,BGP路由开始进行迭代后,需要等待一段抑制时间,抑制时间结束后才能得到迭代结果,该迭代结果为抑制时间T内设备为BGP路由计算出的后一个下一跳迭代路由。BGP得到路由迭代结果并在BGP路由表中更新该结果后,如果BGP路由迭代的结果又发生了变化,则会重新进行路由迭代流程。
如果配置本命令时,指定了最大抑制时间,则表明BGP采用动态的方式对路由迭代进行抑制。在该方式中,如果BGP路由迭代的结果持续变化,则BGP对路由迭代的抑制时间会越来越长,直到抑制时间达到配置的最大时间;如果BGP路由迭代的结果不再变化,则抑制时间会回落。
采用动态方式时,抑制时间T的计算方式如下:
· BGP路由开始第一次路由迭代(即BGP路由迭代的计数次数N=1)时,抑制时间T为配置的minimum-interval的值。
· BGP路由在开始第N次(N不小于2)下一跳路由迭代时,抑制时间T=minimum-interval+incremental-interval×[2^(N-2)]。T的最大值为配置的maximum-interval的值。
· 如果连续三次BGP路由迭代的抑制时间都为maximum-interval的值,则下一次该路由进行路由迭代时,抑制时间T为minimum-interval的值,并恢复BGP路由迭代的计数次数N值为1。
· 如果在两倍的maximum-interval值的时间内,BGP路由的迭代结果都没有变化,则下一次该路由进行迭代时,抑制时间T为minimum-interval的值,并恢复BGP路由迭代的计数次数N值为1。
多次执行nexthop recursive-lookup restrain命令携带不同的参数或为参数配置不同的值时,可以修改BGP路由迭代的抑制时间参数。但是修改后的配置不会立即生效,而是等到本次BGP路由迭代结果更新后,下一次开始为BGP路由计算下一跳迭代路由时才生效。
请根据BGP路由下一跳所在的实例来判断在哪个视图下配置nexthop recursive-lookup restrain命令。如果BGP路由下一跳处在公网,想要让该BGP路由延迟迭代时,需要在BGP实例视图下配置nexthop recursive-lookup restrain命令;如果BGP路由下一跳处在VPN实例中,则需要在该VPN实例对应的BGP-VPN实例视图下配置nexthop recursive-lookup restrain命令。查看BGP路由下一跳所在实例的方法是:
(1) 执行display ip routing-table verbose命令或display ipv6 routing-table verbose命令,查找BGP路由对应的IP/IPv6路由中的“NibID”字段。
(2) 根据“NibID”字段,执行display rib nib或display ipv6 rib nib命令,查找指定下一跳信息中的“VrfNthp”字段。“VrfNthp”字段表示路由下一跳所在的VPN实例索引,该索引对应的实例即为BGP路由下一跳所在实例。
有关display ip routing-table verbose、display ipv6 routing-table verbose、display rib nib和display ipv6 rib nib命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“IP路由基础”。
同时执行nexthop recursive-lookup restrain命令和nexthop recursive-lookup delay命令时,BGP路由开始迭代后,需要等待以上两者配置的抑制时间之和的时间,迭代后的BGP路由才能指导流量转发。
如果同时配置了nexthop recursive-lookup restrain命令和RIB IPv4地址族视图下的nexthop recursive-lookup restrain命令,则BGP路由的下一跳迭代到IPv4路由时,等待的抑制时间为以上两者配置的抑制时间之和。如果同时配置了本命令和RIB IPv6地址族视图下的nexthop recursive-lookup restrain命令,则BGP路由的下一跳迭代到IPv6路由时,等待的抑制时间为以上两者配置的抑制时间之和。
有关RIB IPv4/IPv6地址族视图下nexthop recursive-lookup restrain命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“IP路由基础”。
本功能会导致BGP路由迭代的效率降低、路由收敛速度变慢,请根据网络的实际情况判断是否需要配置本命令,以及配置的抑制时间参数。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置BGP路由迭代的抑制功能。
nexthop recursive-lookup restrain { maximum-interval [ minimum-interval [ incremental-interval ] ] | millisecond interval }
缺省情况下,不对BGP路由迭代进行抑制。
配置的minimum-interval和incremental-interval的时长不能大于maximum-interval的时长。
缺省情况下,从对等体接收到的BGP路由进行下一跳路由迭代时,优先在直连路由中查找依赖路由。仅未查找到匹配的直连路由时,才会在所有路由协议产生的路由中按照最长匹配方式进行查找。此机制可能会引发如下问题:设备的直连路由所在子网包含BGP路由的下一跳地址时,BGP路由会迭代下一跳至该直连路由,此时设备认为下一跳地址为本地直连,直接使用BGP路由表中的下一跳作为FIB表中的真实下一跳,导致匹配该BGP路由的报文转发失败,造成网络流量中断。
以图5-3为例,Device B与Device A和Device C分别建立IBGP会话,并作为路由反射器将Device C在BGP中发布的8.0.0.0/24路由发布给Device A。三台设备在创建BGP会话时均使用LoopBack接口作为建立TCP连接使用的源接口。Device A与Device B直连接口的IPv4地址所在网段为3.3.0.0/16。
在路由的下一跳属性未被改变的情况下,Device A上BGP路由8.0.0.0/24的下一跳为3.3.3.3。该BGP路由进行下一跳迭代时,由于查找到了包含下一跳3.3.3.3网段的直连路由3.3.0.0/16,Device A认为下一跳3.3.3.3为设备上的直连路由,将3.3.3.3直接作为FIB表中去往目的网段8.0.0.0/24的真实下一跳,导致去往8.0.0.0/24网段的三层流量转发失败。
图5-3 直连路由包含BGP路由的下一跳时路由迭代错误示意图
通过配置本功能,可以使从对等体接收到的BGP路由迭代下一跳时,直接在所有路由协议产生的路由中按照最长匹配方式查找依赖路由,以保证查找到的依赖路由可达。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
(3) 配置BGP路由进行下一跳路由迭代查找时采用最长匹配方式。
nexthop recursive-lookup longest-match [ route-policy route-policy-name ]
缺省情况下,未配置下一跳路由迭代查找时采用最长匹配方式。
未指定route-policy route-policy-name参数或该参数指定的路由策略不存在时,所有从对等体接收到的BGP路由进行下一跳路由迭代查找时都采用最长匹配方式。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv6单播地址族视图或BGP-VPN IPv6单播地址族视图。
¡ 请依次执行以下命令进入BGP IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
(3) 配置BGP路由进行下一跳路由迭代查找时采用最长匹配方式。
nexthop recursive-lookup longest-match [ route-policy route-policy-name ]
缺省情况下,未配置下一跳路由迭代查找时采用最长匹配方式。
未指定route-policy route-policy-name参数或该参数指定的路由策略不存在时,所有从对等体接收到的BGP路由进行下一跳路由迭代查找时都采用最长匹配方式。
用户访问网络时,如果报文在转发路径上均采用IP转发,则运营商网络中的设备需要学习大量的路由。通过本功能在用户接入设备上配置允许非标签公网BGP路由迭代到LSP隧道,或允许公网BGP路由迭代到SRv6 TE Policy隧道,使用户报文通过标签转发方式在运营商网络中转发,运营商设备不再需要用户网络的路由,从而减轻设备的负担,节约设备上的资源。
缺省情况下,非标签公网BGP路由只能根据IP转发迭代到出接口和下一跳地址,不会迭代到LSP隧道;未配置segment-routing ipv6 traffic-engineering命令时,携带SRv6 SID的公网BGP路由也不会迭代到SRv6 TE Policy隧道。配置了unicast-route recursive-lookup tunnel命令后,非标签公网BGP路由可以迭代到LSP隧道;同时配置了unicast-route recursive-lookup tunnel命令以及sr-policy steering policy-based命令后,公网BGP路由可以迭代到SRv6 TE Policy隧道,无论是否携带SRv6 SID。迭代隧道失败后,才按照IP转发迭代到出接口和下一跳。
IPv6非标签公网BGP路由迭代IPv4隧道时,作为Egress节点的隧道对端设备需要为倒数第二跳分配非空标签,否则会导致流量转发不通。有关倒数第二跳弹出功能的详细介绍,请参见“MPLS配置指导”中的“MPLS基础”。
只要配置了以下两种情况之一,携带SRv6 SID的公网BGP路由就可以迭代到SRv6 TE Policy隧道:
· 配置了unicast-route recursive-lookup tunnel和sr-policy steering policy-based命令
· 配置了segment-routing ipv6 traffic-engineering命令。
segment-routing ipv6 traffic-engineering命令的详细介绍,请参见“Segment Routing命令参考”中的“SRv6 VPN”;sr-policy steering命令的详细介绍,请参见“Segment Routing命令参考”中的“SRv6 TE Policy”。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP IPv4单播地址族视图。
address-family ipv4 [ unicast ]
(4) 配置允许非标签公网BGP路由迭代到LSP隧道,或允许公网BGP路由迭代到SRv6 TE Policy隧道。
unicast-route recursive-lookup tunnel [ prefix-list ipv4-prefix-list-name ] [ tunnel-policy tunnel-policy-name ]
缺省情况下,非标签公网BGP路由只能迭代到出接口和下一跳,不会迭代到LSP隧道;携带SRv6 SID的公网BGP路由无法迭代到SRv6 TE Policy;不携带SRv6 SID但携带Color扩展团体属性的公网BGP路由可以根据Color引流迭代到SRv6 TE Policy。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP IPv6单播地址族视图。
address-family ipv6 [ unicast ]
(4) 配置允许非标签公网BGP路由迭代到LSP隧道,或允许公网BGP路由迭代到SRv6 TE Policy隧道。
unicast-route recursive-lookup tunnel [ prefix-list ipv6-prefix-list-name ] [ tunnel-policy tunnel-policy-name ]
缺省情况下,非标签公网BGP路由只能迭代到出接口和下一跳,不会迭代到LSP隧道;携带SRv6 SID的公网BGP路由无法迭代到SRv6 TE Policy;不携带SRv6 SID但携带Color扩展团体属性的公网BGP路由可以根据Color引流迭代到SRv6 TE Policy。
缺省情况下,设备会检查从直连EBGP对等体/对等体组学习到的路由的下一跳地址是否属于本地直连网段。如果下一跳地址不属于本地直连网段,则该EBGP路由被认为不合法,无法加入到BGP路由表中。设备不检查从非直连EBGP对等体/对等体组学习到的路由的下一跳地址。
配置本功能后,本地设备会向指定对等体/对等体组发送Route-refresh消息请求重新发送路由信息。设备收到来自指定对等体/对等体组的EBGP路由后,不会检查路由的下一跳地址是否属于本地直连网段。本功能可以解决某些组网下EBGP对等体/对等体组发布的路由下一跳地址不属于本地直连网段时,本地设备无法学习到相应路由的问题。
执行peer ebgp-nexthop-check ignore命令后,若再执行undo peer ebgp-nexthop-check ignore命令取消配置,则设备会遍历从指定对等体/对等体组收到的所有BGP路由,删除下一跳地址不符合条件的路由,并按照BGP路由的发布规则将更新路由发布给其他对等体/对等体组。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置不检查来自指定对等体/对等体组的EBGP路由的下一跳地址。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } ebgp-nexthop-check ignore
缺省情况下,设备会检查来自指定对等体/对等体组的EBGP路由的下一跳地址。
通过配置本功能,可以抑制BGP邻居状态频繁切换,减少BGP报文的发送和CPU及带宽资源的占用,降低设备负担。
配置本功能后,如果BGP会话在短时间内反复up/down,则每次BGP会话启动时保持在Idle状态的时间都将被延长,达到所配置的Idle状态最长保持时间后该时间不再继续增长;当此BGP会话保持Established状态时间大于等于配置的抑制回退时间时,下次BGP会话启动的Idle保持时间将重置为初始值。
请根据实际组网配置适当的Idle状态最长保持时间和抑制回退时间,Idle状态最长保持时间过短可能起不到抑制作用,过长可能导致BGP邻居长时间不能建立连接。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置邻居震荡抑制功能。
peer { group-name | ipv4-address | ipv6-address } flap-dampen [ max-idle-time max-time | min-established-time min-time ]*
缺省情况下,对等体/对等体组的邻居震荡抑制功能处于关闭状态。
DSCP(Differentiated Services Code Point,差分服务编码点)携带在IP报文中的ToS字段,用来体现报文自身的优先等级,决定报文传输的优先程度。通过配置本功能,可以对BGP发送协议报文的DSCP优先级进行设置。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置BGP发送协议报文的DSCP优先级。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } dscp dscp-value
缺省情况下,BGP发送协议报文的DSCP优先级为48。
开启BGP次优路由下刷RIB功能后,当BGP路由表中最优路由为通过network命令生成或import-route命令引入的路由,次优路由为从BGP对等体收到的路由时,次优路由会下刷到RIB表项中。在某些组网情况下,执行本命令下刷到达同一目的网络次优路由到RIB后,当最优路由发生故障时,系统可以快速切换到次优路由。例如,设备有一条到达1.1.1.0/24网络的静态路由,其优先级高于BGP路由,BGP本地引入该静态路由同时从对等体收到到达该网段的路由,执行本命令BGP将从对等体收到的路由作为次优路由下刷到RIB,这时如果开启协议间的FRR功能,当静态路由发生故障时,本地引入的静态路由不可达,系统可以快速切换到BGP次优路由,从而大大缩短了流量中断时间。
协议间FRR功能的详细介绍,请参见“三层技术-IP路由配置指导”中的“IP路由基础”。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 开启BGP次优路由下刷RIB功能。
flush suboptimal-route
缺省情况下,BGP次优路由下刷RIB功能处于关闭状态,即只有BGP最优路由可以下刷到RIB。
本功能可以应用在以下场景:
· 在MPLS L3VPN组网中,PE设备的BGP路由表中会存在大量的私网路由。缺省情况下,优选后的私网路由将全部被下发到IP路由表中,但部分路由对于PE设备转发无意义,如不需要和其他Site互通的设备对应的路由。通过配置本命令,可以禁止不需要指导转发的路由下发到IP路由表,以提高转发性能。
· 在路由反射器上配置本功能,禁止路由反射器上的BGP路由下发到IP路由表,可以使得路由反射器仅用于发布和接收路由,而不进行业务流量转发,以节省路由反射器上的系统资源。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
(3) 配置BGP路由禁止下发到IP路由表中。
routing-table bgp-rib-only [ route-policy route-policy-name ]
缺省情况下,BGP将最优路由下发到IP路由表中。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv6单播地址族视图或BGP-VPN IPv6单播地址族视图。
¡ 请依次执行以下命令进入BGP IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
(3) 配置BGP路由禁止下发到IP路由表中。
routing-table bgp-rib-only [ route-policy route-policy-name ]
缺省情况下,BGP将最优路由下发到IP路由表中。
BGP可以通过以下三种方式为私网路由申请标签:
· 为每条路由申请一个标签:采用这种方式时,路由条目和标签一一对应。
· 为每个下一跳申请一个标签:当按照每条路由申请标签方式需要申请的标签数量大于设备支持的最大标签数目时,通过采用此方式,可以减少申请的标签数量。
· 为每个VPN实例申请一个标签:当存在大量需要申请标签的路由,并且采用下一跳申请标签的方式申请的标签数量仍然超过设备支持的最大标签数目时,可以采用此方式。
为每条路由或者每个下一跳申请标签方式可以与vpn popgo命令配合使用,以实现报文根据标签查找出接口转发报文;为每个VPN实例申请标签方式与vpn popgo命令互斥,采用该方式时,只能根据标签查找FIB转发报文。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 配置标签申请方式。
label-allocation-mode { per-prefix | per-vrf }
缺省情况下,BGP按照每个下一跳分配一个标签的方式申请标签。
改变标签分配方式将重新下刷所有BGP路由,会导致业务的短暂中断,请慎重使用。
通过配置本功能,带隧道信息的标签路由才能参与路由优选。不带隧道信息的标签路由不能参与路由优选,即无法成为最优路由。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 配置带隧道信息的标签路由才能参与路由优选。
labeled-route ignore-no-tunnel
缺省情况下,不带隧道信息的标签路由可以参与路由优选。
如图5-4所示,Device C上配置了静态路由10.1.1.0/24和10.1.1.0/30,这两条路由的下一跳分别为Device A和Device B。Device C仅将路由10.1.1.0/24引入到BGP,为该路由分配标签后,将其发布给Device D。Device C和Device D间建立了到达10.1.1.0/24的BGP LSP。
缺省情况下,Device C从Device D收到发往10.1.1.0~10.1.1.3的数据报文后,首先将BGP LSP的标签弹出,然后根据FIB表查找出接口。Device C将会按照10.1.1.0/30路由进行转发,即转发至Device B,导致Device A无法收到从Device D发过来的上述数据报文。
在Device C上配置BGP POPGO功能可以解决上述问题。配置本功能后,Device C在向Device D发送路由10.1.1.0/24时会将为这条路由分配的标签与路由出接口的对应关系记录在ILM表中。当本端设备收到从BGP LSP发来的、封装标签的数据报文后,根据标签值在ILM表中查找到对应的出接口,并在弹出标签后将数据报文从该出接口转发出去,确保转发正确。
图5-4 BGP POPGO应用场景示意图
(1) 进入系统视图。
system-view
(2) 进入BGP IPv4单播地址族视图或BGP IPv4单播标签地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 labeled-unicast
(3) 配置BGP LSP的Egress节点从BGP LSP收到报文时根据标签查找ILM表进行转发。
apply-label per-route pop-go
缺省情况下,BGP LSP的Egress节点从BGP LSP收到报文时根据FIB表转发。
MPLS Local Ifnet隧道是一条BGP用来转发EBGP MPLS流量的空隧道,只能指导直连EBGP对等体间的流量转发,不能指导非直连EBGP对等体间的流量转发。
如果MP-EBGP对等体之间的隧道出现故障,流量会迭代到MPLS Local Ifnet隧道,而不会通过FRR功能将流量切换至备份隧道上,这样会导致非直连MP-EBGP对等体间出现流量中断。为了避免这个问题,可以通过配置本命令关闭非直连MP-EBGP对等体间的MPLS Local Ifnet隧道自动创建功能。
· 关闭与对等体/对等体组之间的MPLS Local Ifnet隧道自动创建功能后,已经建立的MPLS Local Ifnet隧道将被删除。
· 本功能也能够禁止直连MP-EBGP间自动创建MPLS Local Ifnet隧道,建议您在配置本功能前,完全了解其对网络产生的影响。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置关闭与指定EBGP对等体/对等体组间的MPLS Local Ifnet隧道自动创建功能。
peer { group name | ipv4-address [ mask-length ] } mpls-local-ifnet disable
缺省情况下,MPLS Local Ifnet隧道自动创建功能处于开启状态,MP-EBGP对等体间交换了带标签路由和VPNv4路由后将自动建立MPLS Local Ifnet 隧道。
如图5-5所示的MPLS L3VPN组网中,PE 2通过BGP学习CE 2所在站点的私网路由。CE 2在发送BGP私网路由前,通过在BGP路由中添加Route Target属性的方式标识某一类路由,以便在ASBR 1上根据私网路由的RT属性对路由进行过滤。缺省情况下,PE 2在收到CE 2发布的私网路由后,将使用本地的RT属性替换BGP路由中原有的RT属性再向外发布,导致ASBR 1收到的VPNv4路由中,仅包含PE 2添加的RT属性,无法根据CE 2添加的RT属性来进行路由过滤。为了满足类似场景下保留BGP私网路由中Route Target属性的需求,可在PE设备上配置Route Target属性叠加功能,使PE收到CE发布的BGP私网路由后,直接在原路由的RT属性中添加本地的RT。
图5-5 Route Target属性叠加功能应用场景示意图
执行本配置时,如果同时配置了路由策略,且路由策略中存在未指定additive参数的apply extcommunity rt子句,则最终携带的扩展团体属性以路由策略中的配置为准。
(1) 进入系统视图。
system-view
(2) 进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置允许设备在接收到BGP私网路由后,将本地VPN实例的RT扩展团体属性直接附加到BGP路由当前的扩展团体属性列表中。
extcommunity vpn-target additive
缺省情况下,设备接收到BGP私网路由后,使用本地VPN实例的RT扩展团体属性替换路由中已有的RT扩展团体属性。
邻居地址不可达检测功能用来为BGP协议快速检测链路故障。配置本功能后,BGP会对指定对等体(或对等体组内所有对等体)的IP地址进行不可达检测。如果检测到IP地址不可达,则断开与该对等体的BGP会话。
以下两种情况下,BGP会认为对等体不可达:
· 在对应公网实例或VPN实例的路由表中,对等体的IP地址没有匹配的路由。
· 在对应公网实例或VPN实例的路由表中,对等体的IP地址匹配到的路由是出接口为NULL0的黑洞路由。
配置本功能时如果未携带delay delay-time参数,则检测到IP地址不可达时,BGP会立刻断开与对等体的BGP会话。
根据实际情况,灵活配置断开会话的延迟时间,可以提高网络的稳定性:
· 网络中的流量闪断时,IGP路由将产生震荡。此时,依靠IGP路由建立的IBGP会话也会产生震荡。建议为IBGP对等体/对等体组配置的延迟时间大于IGP路由的收敛时间,以避免流量闪断造成的BGP会话震荡。
· 本地路由器作为BGP GR Helper,通过本命令检测GR Restarter的可达性时,为GR Restarter配置的延迟时间要大于GR Restarter通告的BGP会话重建时间加上GR Helper上配置的等待重建额外时间,否则会导致BGP会话断开,设备退出GR过程。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 对指定对等体/对等体组开启邻居地址不可达检测功能。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } tracking [ delay delay-time ]
缺省情况下,邻居地址不可达检测功能处于关闭状态。
执行本命令时,如果指定的IPv6地址是链路本地地址,则本命令不生效。
缺省情况下,通过显示命令查看BGP信息时,其中的4字节AS号显示为整数形式。4字节AS号的整数形式字符串较长。为了简化显示,配置本功能后,通过显示命令查看BGP信息时,其中的4字节AS号将显示为点分形式,更易于用户查看。
4字节AS号的点分形式为X.Y,与整数形式的4字节AS号的对应关系为:整数形式的4字节AS号=X×65536+Y,Y的取值范围为0~65535,点分形式AS号的取值范围为0.1~65535.65535。例如,点分形式的4字节AS号2.1,对应的整数形式为2×65536+1=131073。
配置本功能后,AS路径过滤列表将只能匹配点分形式的4字节AS号,无法再匹配整数形式的4字节AS号。此时,如果BGP引用的路由过滤策略中设置了匹配整数形式AS号的AS过滤列表,则需要将AS路径过滤列表修改为匹配点分形式的AS号,以免BGP路由过滤策略失效,导致网络故障。
系统配置文件中的4字节AS号始终保持配置时的形式,不会受本功能的影响。
(1) 进入系统视图。
system-view
(2) 配置采用点分形式显示4字节AS号。
as-notation dotted
缺省情况下,设备采用整数形式显示4字节AS号。
在完成上述配置后,在任意视图下执行display命令可以显示配置后BGP的运行情况,通过查看显示信息验证配置的效果。
表5-1 调整和优化BGP网络配置显示(IPv4单播)
操作 |
命令 |
显示邻居收到的ORF消息中的前缀信息 |
display bgp [ instance instance-name ] peer ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] ipv4-address received prefix-list display bgp [ instance instance-name ] peer ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] ipv6-address received prefix-list |
表5-2 调整和优化BGP网络配置显示(IPv6单播)
操作 |
命令 |
显示邻居收到的ORF消息中的前缀信息 |
display bgp [ instance instance-name ] peer ipv6 [ unicast ] [ vpn-instance vpn-instance-name ] ipv6-address received prefix-list display bgp [ instance instance-name ] peer ipv6 [ unicast ] [ vpn-instance vpn-instance-name ] ipv4-address received prefix-list |
表5-3 调整和优化BGP网络配置显示(IPv4组播)
操作 |
命令 |
显示邻居收到的ORF消息中的前缀信息 |
display bgp [ instance instance-name ] peer ipv4 multicast { ipv4-address | ipv6-address } received prefix-list |
表5-4 调整和优化BGP网络配置显示(IPv6组播)
操作 |
命令 |
显示邻居收到的ORF消息中的前缀信息 |
display bgp [ instance instance-name ] peer ipv6 multicast { ipv4-address | ipv6-address } received prefix-list |
当BGP路由策略或协议发生变化后,如果需要通过复位BGP会话使新的配置生效,请在用户视图下进行下列配置。
复位BGP会话时,会造成短暂的BGP会话中断。
表5-5 复位BGP会话
操作 |
命令 |
复位所有BGP会话 |
reset bgp [ instance instance-name ] all |
复位IPv4单播地址族下的BGP会话 |
reset bgp [ instance instance-name ] { as-number | ipv4-address [ mask-length ] | all | external | group group-name | internal } ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] reset bgp [ instance instance-name ] ipv6-address [ prefix-length ] ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] |
复位IPv6单播地址族下的BGP会话 |
reset bgp [ instance instance-name ] { as-number | ipv6-address [ prefix-length ] | all | external | group group-name | internal } ipv6 [ unicast ] [ vpn-instance vpn-instance-name ] reset bgp ipv4-address [ mask-length ] ipv6 [ unicast ] [ vpn-instance vpn-instance-name ] |
复位IPv4单播标签地址族下的BGP会话 |
reset bgp [ instance instance-name ] { as-number | ipv4-address [ mask-length ] | all | external | group group-name | internal } ipv4 labeled-unicast [ vpn-instance vpn-instance-name ] |
复位IPv4组播地址族下的BGP会话 |
reset bgp [ instance instance-name ] { as-number | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] | all | external | group group-name | internal } ipv4 multicast |
复位IPv6组播地址族下的BGP会话 |
reset bgp [ instance instance-name ] { as-number | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] | all | external | group group-name | internal } ipv6 multicast |
所有路由器都配置BGP,Router A在AS 65008中,Router B和Router C在AS 65009中。
Router A与Router B、Router C之间运行EBGP,Router B和Router C之间运行IBGP。
在Router A上配置负载分担的路由条数为2,以提高链路利用率。
图5-6 BGP负载分担配置组网图
(1) 配置各接口的IP地址(略)
(2) 配置BGP连接
¡ 在Router A上与Router B、Router C分别建立EBGP连接,并将8.1.1.0/24网段的路由通告给Router B和Router C,以便Router B和Router C能够访问Router A的内部网络。
¡ 在Router B上与Router A建立EBGP连接,与Router C建立IBGP连接,并将9.1.1.0/24网段的路由通告给Router A,以便Router A能够通过Router B访问内部网络。同时,在Router B上配置一条到Router C Loopback0接口的静态路由(也可以用OSPF等协议来实现),以便使用Loopback接口建立IBGP连接。
¡ 在Router C上与Router A建立EBGP连接,与Router B建立IBGP连接,并将9.1.1.0/24网段的路由通告给Router A,以便Router A能够通过Router C访问内部网络。同时,在Router C上配置一条到Router B Loopback0接口的静态路由(也可以用OSPF等协议来实现),以便使用Loopback接口建立IBGP连接。
# 配置Router A。
<RouterA> system-view
[RouterA] bgp 65008
[RouterA-bgp-default] router-id 1.1.1.1
[RouterA-bgp-default] peer 3.1.1.1 as-number 65009
[RouterA-bgp-default] peer 3.1.2.1 as-number 65009
[RouterA-bgp-default] address-family ipv4 unicast
[RouterA-bgp-default-ipv4] peer 3.1.1.1 enable
[RouterA-bgp-default-ipv4] peer 3.1.2.1 enable
[RouterA-bgp-default-ipv4] network 8.1.1.0 24
[RouterA-bgp-default-ipv4] quit
[RouterA-bgp-default] quit
# 配置Router B。
<RouterB> system-view
[RouterB] bgp 65009
[RouterB-bgp-default] router-id 2.2.2.2
[RouterB-bgp-default] peer 3.1.1.2 as-number 65008
[RouterB-bgp-default] peer 3.3.3.3 as-number 65009
[RouterB-bgp-default] peer 3.3.3.3 connect-interface loopback 0
[RouterB-bgp-default] address-family ipv4 unicast
[RouterB-bgp-default-ipv4] peer 3.1.1.2 enable
[RouterB-bgp-default-ipv4] peer 3.3.3.3 enable
[RouterB-bgp-default-ipv4] network 9.1.1.0 24
[RouterB-bgp-default-ipv4] quit
[RouterB-bgp-default] quit
[RouterB] ip route-static 3.3.3.3 32 9.1.1.2
# 配置Router C。
<RouterC> system-view
[RouterC] bgp 65009
[RouterC-bgp-default] router-id 3.3.3.3
[RouterC-bgp-default] peer 3.1.2.2 as-number 65008
[RouterC-bgp-default] peer 2.2.2.2 as-number 65009
[RouterC-bgp-default] peer 2.2.2.2 connect-interface loopback 0
[RouterC-bgp-default] address-family ipv4 unicast
[RouterC-bgp-default-ipv4] peer 3.1.2.2 enable
[RouterC-bgp-default-ipv4] peer 2.2.2.2 enable
[RouterC-bgp-default-ipv4] network 9.1.1.0 24
[RouterC-bgp-default-ipv4] quit
[RouterC-bgp-default] quit
[RouterC] ip route-static 2.2.2.2 32 9.1.1.1
# 查看Router A的路由表。
[RouterA] display bgp routing-table ipv4
Total number of routes: 3
BGP local router ID is 1.1.1.1
Status codes: * - valid, > - best, d - dampened, h - history
s - suppressed, S - stale, i - internal, e - external
a - additional-path
Origin: i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
* > 8.1.1.0/24 8.1.1.1 0 32768 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的路由前有标志“>”,表示它是当前有效的最优路由(因为Router B的路由器ID要小一些);而下一跳为3.1.2.1的路由前有标志“*”,表示它是当前有效的路由,但不是最优的。
¡ 使用display ip routing-table命令查看IP路由表项,可以看出到达目的地址9.1.1.0/24的路由只有一条,下一跳地址为3.1.1.1,出接口为Ten-GigabitEthernet3/1/2。
(3) 配置负载分担
因为Router A有两条路径到达AS 65009的内部网络,所以,可以在Router A配置负载分担的路由条数为2,以提高链路利用率。
# 配置Router A。
[RouterA] bgp 65008
[RouterA-bgp-default] address-family ipv4 unicast
[RouterA-bgp-default-ipv4] balance 2
[RouterA-bgp-default-ipv4] quit
[RouterA-bgp-default] quit
# 查看Router A的BGP路由表。
[RouterA] display bgp routing-table ipv4
Total number of routes: 3
BGP local router ID is 1.1.1.1
Status codes: * - valid, > - best, d - dampened, h - history
s - suppressed, S - stale, i - internal, e - external
a - additional-path
Origin: i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
* > 8.1.1.0/24 8.1.1.1 0 32768 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,出接口为Ten-GigabitEthernet3/1/2;另一条的下一跳地址为3.1.2.1,出接口为Ten-GigabitEthernet3/1/3。
所有路由器运行BGP协议,Router A与Router B和Router C建立EBGP连接,Router B、Router C和Router D之间建立IBGP连接,Route D与Route E建立IBGP连接。
Router D作为路由反射器,Router E为Router D的客户机。
配置Add-Path功能,使Router E通过Router D学到Router B和Router C转发的前缀相同下一跳不同的路由信息。
图5-7 BGP Add-Path配置组网图
设备 |
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
Router A |
XGE3/1/1 |
10.1.1.1/24 |
Router D |
XGE3/1/1 |
30.1.1.1/24 |
|
XGE3/1/2 |
20.1.1.1/24 |
|
XGE3/1/2 |
40.1.1.1/24 |
Router B |
XGE3/1/1 |
10.1.1.2/24 |
|
XGE3/1/3 |
50.1.1.1/24 |
|
XGE3/1/2 |
30.1.1.2/24 |
Router E |
XGE3/1/1 |
50.1.1.2/24 |
Router C |
XGE3/1/1 |
20.1.1.2/24 |
|
|
|
|
XGE3/1/2 |
40.1.1.2/24 |
|
|
|
(1) 配置各接口的IP地址。
(2) 配置BGP连接
# 配置Router A。
<RouterA> system-view
[RouterA] bgp 10
[RouterA-bgp-default] peer 10.1.1.2 as-number 20
[RouterA-bgp-default] peer 20.1.1.2 as-number 20
[RouterA-bgp-default] address-family ipv4 unicast
[RouterA-bgp-default-ipv4] peer 10.1.1.2 enable
[RouterA-bgp-default-ipv4] peer 20.1.1.2 enable
# 配置Router B。
<RouterB> system-view
[RouterB] bgp 20
[RouterB-bgp-default] peer 10.1.1.1 as-number 10
[RouterB-bgp-default] peer 30.1.1.1 as-number 20
[RouterB-bgp-default] address-family ipv4 unicast
[RouterB-bgp-default-ipv4] peer 10.1.1.1 enable
[RouterB-bgp-default-ipv4] peer 30.1.1.1 enable
# 配置Router C。
<RouterC> system-view
[RouterC] bgp 20
[RouterC-bgp-default] peer 20.1.1.1 as-number 10
[RouterC-bgp-default] peer 40.1.1.1 as-number 20
[RouterC-bgp-default] address-family ipv4 unicast
[RouterC-bgp-default-ipv4] peer 20.1.1.1 enable
[RouterC-bgp-default-ipv4] peer 40.1.1.1 enable
# 配置Router D。
<RouterD> system-view
[RouterD] bgp 20
[RouterD-bgp-default] peer 30.1.1.2 as-number 20
[RouterD-bgp-default] peer 40.1.1.2 as-number 20
[RouterD-bgp-default] peer 50.1.1.2 as-number 20
[RouterD-bgp-default] address-family ipv4 unicast
[RouterD-bgp-default-ipv4] peer 30.1.1.2 enable
[RouterD-bgp-default-ipv4] peer 40.1.1.2 enable
[RouterD-bgp-default-ipv4] peer 50.1.1.2 enable
# 配置Router E。
<RouterE> system-view
[RouterE] bgp 20
[RouterE-bgp-default] peer 50.1.1.1 as-number 20
[RouterE-bgp-default] address-family ipv4 unicast
[RouterE-bgp-default-ipv4] peer 50.1.1.1 enable
(3) 配置发布本地路由
# 配置Router A发布本地10.1.1.0 24的路由信息
[RouterA-bgp-default-ipv4] network 10.1.1.0 24
(4) 将下一跳的属性修改成自身的地址
# 配置Router B。
[RouterB-bgp-default-ipv4] peer 30.1.1.1 next-hop-local
# 配置Router C。
[RouterC-bgp-default-ipv4] peer 40.1.1.1 next-hop-local
(5) 配置路由反射器
# 配置Router D。
[RouterD-bgp-default-ipv4] peer 50.1.1.2 reflect-client
(6) 配置Add-Path
# 配置Router D使能Add-Path发送能力,配置Add-Path优选路由的最大条数为2,配置向对等体50.1.1.2发送Add-Path优选路由的最大条数为2。
[RouterD-bgp-default-ipv4] peer 50.1.1.2 additional-paths send
[RouterD-bgp-default-ipv4] additional-paths select-best 2
[RouterD-bgp-default-ipv4] peer 50.1.1.2 advertise additional-paths best 2
# 配置Router E使能Add-Path接收能力。
[RouterE-bgp-default-ipv4] peer 50.1.1.1 additional-paths receive
# 查看Router E的BGP路由信息。
[Router E] display bgp routing-table ipv4
Total number of routes: 2
BGP local router ID is 50.1.1.2
Status codes: * - valid, > - best, d - dampened, h - history
s - suppressed, S - stale, i - internal, e - external
a - additional-path
Origin: i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
i 10.1.1.0/24 30.1.1.2 0 100 0 10i
i 40.1.1.2 0 100 0 10i
可以看到从Router D学到的两条前缀相同下一跳不同的路由信息。
BGP安全功能配置任务如下:
通过为BGP对等体配置BGP的MD5认证,可以在以下两方面提高BGP的安全性:
· 为BGP建立TCP连接时进行MD5认证,只有两台路由器配置的密钥相同时,才能建立TCP连接,从而避免与非法的BGP路由器建立TCP连接。
· 传递BGP报文时,对封装BGP报文的TCP报文段进行MD5运算,从而保证BGP报文不会被篡改。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图:
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图:
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置BGP的MD5认证。
peer { group-name | ipv4-address [ mask-length ] } password { cipher | simple } password
缺省情况下,不进行BGP的MD5认证。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置BGP的MD5认证。
peer { group-name | ipv6-address [ prefix-length ] } password { cipher | simple } password
缺省情况下,不进行BGP的MD5认证。
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的保护效果受到中间设备安全性的限制。
执行本配置后,只要本地设备和指定的对等体通过了GTSM检查,就允许在二者之间建立EBGP会话,不管二者之间的跳数是否超过peer ebgp-max-hop命令指定的跳数范围。
使用BGP GTSM功能时,要求本设备和对等体设备上同时配置本特性,指定的hop-count值可以不同,只要能够满足合法性检查即可。
修改最大跳数会清空GSTM丢弃报文数量的统计信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 使能对等体/对等体组的BGP GTSM功能。
peer { group-name | ipv4-address [ mask-length ] } ttl-security hops hop-count
缺省情况下,BGP GTSM功能处于关闭状态。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 使能对等体/对等体组的BGP GTSM功能。
peer { group-name | ipv6-address [ prefix-length ] } ttl-security hops hop-count
缺省情况下,BGP GTSM功能处于关闭状态。
配置keychain认证可以提高TCP连接的安全性。为了保证正常建立TCP连接、正常交互BGP消息,BGP对等体两端必须同时配置keychain认证,且两端使用的keychain需要满足如下条件:
· 同一时间内使用的key的标识符相同。
· 相同标识符的key的认证算法和认证密钥必须一致。
关于keychain的介绍和配置,请参见“安全配置指导”中的“keychain”。
对于keychain认证算法和key的标识符的范围,BGP的支持情况如下:
· BGP支持HMAC-MD5、MD5、HMAC-SHA-256、HMAC-SM3和SM3认证算法,通过authentication-algorithm命令进行配置。
· BGP仅支持标识符取值范围为0~63的key,通过key命令进行配置。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置BGP的keychain认证。
peer { group-name | ipv4-address [ mask-length ] } keychain keychain-name
缺省情况下,不进行BGP的keychain认证。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置BGP的keychain认证。
peer { group-name | ipv6-address [ prefix-length ] } keychain keychain-name
缺省情况下,不进行BGP的keychain认证。
为了避免路由信息外泄或者非法者对设备进行恶意攻击,可以利用IPsec安全隧道对IPv6 BGP报文进行保护。通过IPsec提供的数据机密性、完整性、数据源认证等功能,确保IPv6 BGP报文不会被侦听或恶意篡改,并避免非法者构造IPv6 BGP报文对设备进行攻击。
在互为IPv6 BGP邻居的两台设备上都配置通过IPsec保护IPv6 BGP报文后,一端设备在发送IPv6 BGP报文时通过IPsec对报文进行加封装,另一端设备接收到报文后,通过IPsec对报文进行解封装。如果解封装成功,则接收该报文,正常建立IPv6 BGP对等体关系或学习IPv6 BGP路由;如果设备接收到不受IPsec保护的IPv6 BGP报文,或IPv6 BGP报文解封装失败,则会丢弃该报文。
(1) 进入系统视图。
system-view
(2) 配置IPsec安全提议和手工方式的IPsec安全框架。
配置方法请参见“安全配置指导”中的“IPsec”。
(3) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(4) 为IPv6 BGP对等体/对等体组应用IPsec安全框架。
peer { group-name | ipv6-address [ prefix-length ] } ipsec-profile profile-name
缺省情况下,IPv6 BGP对等体/对等体组没有应用IPsec安全框架。
应用的安全框架必须是手工方式的IPsec安全框架。
BGP路由中的AS_PATH属性记录了某条路由从本地到某个IP地址(网段)所要经过的所有AS号。其中,该IP地址(网段)所处的AS称为源AS。如果源AS号错误会导致无法到达指定IP地址(网段)甚至网络瘫痪。使用BGP RPKI(Resource Public Key Infrastructure,资源公钥基础设施)功能,设备在收到BGP路由的时候,会验证源AS是否合法,并根据验证结果来决定是否使用该BGP路由以及是否发布该路由。
路由器通过TCP协议与RPKI服务器建立连接。TCP连接建立后,路由器从RPKI服务器获取ROA信息。
路由器会根据刷新时间间隔检测与RPKI服务器的连接关系,如果在响应时间内没有收到服务器的回应,路由器与RPKI服务器的连接断开。
与RPKI服务器的连接断开后(不包括用户执行shutdown命令关闭接口引起的连接断开),路由器会尝试与RPKI服务器重新建立连接,并将从该服务器获得的ROA信息置为老化状态,路由器将执行如下操作:
· 如果老化时间内,路由器重新与RPKI服务器建立连接,则解除ROA信息的老化状态。
· 如果直到老化时间超时,路由器与RPKI服务器仍然无法重新建立连接,则删除该ROA信息。
通常,在RPKI服务器上,储存的ROA信息量十分巨大,为了防止设备从RPKI服务器接收大量ROA而消耗过多的系统资源,可以设置允许从指定RPKI服务器收到的ROA数量。
ROA信息的老化时间建议大于BGP RPKI服务器的响应等待时间。
RPKI连接建立后,会一直处于通信状态,并周期更新ROA信息。如果需要暂时断开某个RPKI连接,请在BGP RPKI服务器视图下执行undo port命令。
执行undo rpki命令后,BGP RPKI视图下的所有配置都会被删除。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 开启BGP RPKI功能,并进入BGP RPKI视图
rpki
(4) 配置BGP RPKI服务器地址,并进入BGP RPKI服务器视图。
server [ vpn-instance vpn-instance-name ] tcp { ipv4-address | ipv6-address }
缺省情况下,未配置BGP RPKI的服务器地址。
(5) 配置BGP RPKI服务端口号。
port port-number
缺省情况下,未配置BGP RPKI服务端口。
只有配置与BGP RPKI服务器连接的TCP端口,才能与RPKI服务器建立连接,且本地配置的端口号必须与BGP RPKI服务器上使用的端口号保持一致。
(6) (可选)指定RPKI连接中使用的MD5认证密码。
passwords { cipher | simple } string
缺省情况下,BGP RPKI服务器不进行MD5的认证。
使用MD5认证时,认证密码必须与RPKI服务器上的认证密码保持一致。MD5认证既可以确保路由器与合法的BGP RPKI服务器建立连接,也可以确保BGP RPKI报文不会被篡改。
(7) (可选)配置RPKI连接的检测周期。
refresh-time refresh-time
缺省情况下,RPKI连接的检测周期为600秒。
本功能用于检测路由器与RPKI服务器的连接状态。
(8) (可选)配置等待BGP RPKI服务器的响应时间。
response-time response-time
缺省情况下,等待BGP RPKI服务器响应时间为30秒。
(9) (可选)配置ROA信息的老化时间。
purge-time purge-time
缺省情况下,ROA信息的老化时间为60秒。
(10) (可选)设置允许从指定RPKI服务器收到的ROA数量。
rpki-limit limit [ alert-only | discard | reconnect reconnect-time ]
缺省情况下,不限制从RPKI服务器接收的ROA数量。
配置本功能后,设备收到BGP路由时,会对IP地址(网段)和源AS号进行RPKI验证。验证结果有三种:Not-found、Valid和Invalid。同时满足以下三个条件则验证结果为Valid,不满足条件(1)则验证结果为Not-found,满足条件(1)但不满足条件(2)或(3)则验证结果为Invalid。
(1) ROA数据库中至少存在一条包含该BGP路由前缀的表项。
(2) 该BGP路由前缀的掩码长度小于或等于ROA数据库中所有表项的最大掩码长度。
(3) ROA数据库表项中的AS号和收到的路由的源AS号相同。
配置本功能后,设备将使用本地验证的结果作为RPKI验证结果;未配置本功能时,将使用BGP路由报文中的RPKI验证结果。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP RPKI视图。
rpki
(4) 开启BGP RPKI验证功能。
check-origin-validation
缺省情况下,BGP RPKI验证功能处于关闭状态。
RPKI验证结果的优先级从高到低依次为Valid、Not found、Invalid。
配置本功能后,RPKI验证结果将参与路由优选。BGP选择路由时首先丢弃下一跳不可达的路由,其次按照RPKI验证结果进行路由优选,即对于去往同一个IP地址(网段)的多条BGP路由,选择RPKI验证结果优先级最高的路由为最优路由。如果RPKI验证结果相同,则根据“1.6 BGP的选路规则”中的规则选择路由。
无RPKI验证结果的路由在与有验证结果的路由共同参与路由优选时,按Not-found验证结果处理。
用户可以使用路由策略设置BGP RPKI验证结果的匹配条件,从而灵活控制路由的发布与接收。关于路由策略的详细介绍,请参见“三层技术-IP路由配置指导”中的“路由策略”。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
(3) 配置BGP RPKI验证结果参与路由优选。
bestroute origin-as-validation [ allow-invalid ]
缺省情况下,BGP RPKI验证结果不参与路由优选。
未配置allow-invalid参数时,验证结果为Invalid的路由不参与路由优选。如果希望验证结果为Invalid的路由参与路由优选,可以配置allow-invalid参数。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv6单播地址族视图或BGP-VPN IPv6单播地址族视图。
¡ 请依次执行以下命令进入BGP IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
(3) 配置BGP RPKI验证结果参与路由优选。
bestroute origin-as-validation [ allow-invalid ]
缺省情况下,BGP RPKI验证结果不参与路由优选。
未配置allow-invalid参数时,验证结果为Invalid的路由不参与路由优选。如果希望验证结果为Invalid的路由参与路由优选,可以配置allow-invalid参数。
BGP RPKI验证结果以扩展团体属性的方式传递,配置本条命令前必先配置向对等体/对等体组发布扩展团体属性且RPKI正确配置。未配置向对等体/对等体组发布扩展团体属性,此配置不生效。
目前,设备仅支持向IBGP对等体/对等体组发送BGP RPKI验证结果。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
(3) 配置向对等体/对等体组发布扩展团体属性。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise-ext-community
缺省情况下,不向对等体/对等体组发布扩展团体属性。
(4) 配置向对等体/对等体组发送BGP RPKI验证结果。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise origin-as-validation
缺省情况下,不会向对等体/对等体组发送BGP RPKI验证结果。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv6单播地址族视图或BGP-VPN IPv6单播地址族视图。
¡ 请依次执行以下命令进入BGP IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
(3) 配置向对等体/对等体组发布扩展团体属性。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise-ext-community
缺省情况下,不向对等体/对等体组发布扩展团体属性。
(4) 配置向对等体/对等体组发送BGP RPKI验证结果。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise origin-as-validation
缺省情况下,不会向对等体/对等体组发送BGP RPKI验证结果。
在用户视图下执行以下命令复位BGP RPKI连接。
reset bgp [ instance instance-name ] rpki server [ vpn-instance vpn-instance-name ] tcp { ipv4 address | ipv6 address }
配置本命令后,设备将删除并重新建立指定的BGP RPKI会话,会造成BGP RPKI会话短暂中断。
在完成上述配置后,在任意视图下执行display命令可以显示配置后BGP安全功能的运行情况,通过查看显示信息验证配置的效果。
表6-1 BGP RPKI功能配置显示(IPv4单播)
操作 |
命令 |
显示与RPKI服务器连接的相关信息 |
display bgp [ instance instance-name ] rpki server [ [ vpn-instance vpn-instance-name ] ipv4-address ] |
显示从RPKI服务器获得的ROA信息 |
display bgp [ instance instance-name ] rpki table ipv4 [ ipv4-address min min-length max max-length ] |
表6-2 BGP RPKI功能配置显示(IPv6单播)
操作 |
命令 |
显示与RPKI服务器连接的相关信息 |
display bgp [ instance instance-name ] rpki server [ [ vpn-instance vpn-instance-name ] ipv6-address ] |
显示从RPKI服务器获得的ROA信息 |
display bgp [ instance instance-name ] rpki table ipv6 [ ipv6-address min min-length max max-length |
表6-3 BGP GTSM功能配置显示
操作 |
命令 |
显示GTSM丢弃报文数量的统计信息 |
(独立运行模式) display ttl-security statistics [ slot slot-number [ cpu cpu-number ] ] (IRF模式) display ttl-security statistics [ chassis chassis-number slot slot-number [ cpu cpu-number ] ] |
在用户视图下,执行reset命令可以清除BGP安全功能相关统计信息。
表6-4 清除BGP GTSM功能信息
操作 |
命令 |
清除GTSM丢弃报文数量的统计信息 |
(独立运行模式) reset ttl-security statistics [ slot slot-number [ cpu cpu-number ] ] (IRF模式) reset ttl-security statistics [ chassis chassis-number slot slot-number [ cpu cpu-number ] ] |
· 所有路由器运行BGP协议,Router A与RPKI服务器建立连接。Router A与Router B建立IBGP连接。
· Router A将BGP RPKI验证结果发送给Router B。
· 配置路由策略,使得Router B对收到的BGP RPKI验证结果设置匹配条件,控制路由的接收。
图6-1 BGP RPKI配置组网图
(1) 配置各接口的IP地址,在Router A和Router B上配置BGP,建立IBGP邻居,配置过程略
(2) 配置Router A与RPKI服务器建立连接
<RouterA> system-view
[RouterA] bgp 100
[RouterA-bgp-default] rpki
[RouterA-bgp-default-rpki] server tcp 1.1.1.2
[RouterA-bgp-default-rpki-server] port 1234
[RouterA-bgp-default-rpki-server] quit
(3) 在Router A上开启BGP RPKI验证
[RouterA-bgp-default-rpki] check-origin-validation
[RouterA-bgp-default-rpki] quit
(4) 在Router A上配置BGP RPKI验证结果参与路由优选
[RouterA-bgp-default] address-family ipv4
[RouterA-bgp-default-ipv4] bestroute origin-as-validation
(5) 在Router A上配置向对等体1.2.3.2发送BGP RPKI验证结果
[RouterA-bgp-default-ipv4] peer 1.2.3.2 advertise-ext-community
[RouterA-bgp-default-ipv4] peer 1.2.3.2 advertise origin-as-validation
[RouterA-bgp-default-ipv4] quit
[RouterA-bgp-default] quit
(6) 在Router B上对收到的BGP RPKI验证结果设置匹配条件,仅接收验证结果为Valid的路由
# 配置路由策略。
<RouterB> system-view
[RouterB] route-policy rpki_policy permit node 0
[RouterB-route-policy-rpki_policy-0] if-match rpki valid
[RouterB-route-policy-rpki_policy-0] quit
# 应用路由策略。
[RouterB] bgp 100
[RouterB-bgp-default] address-family ipv4
[RouterB-bgp-default-ipv4] peer 1.2.3.1 route-policy rpki_policy import
# 查看Router A与RPKI服务器的连接信息,可以看到Router A与RPKI服务器已经建立连接。
[RouterA] display bgp rpki server
Server VPN-index Port State Time ROAs(IPv4/IPv6)
1.1.1.2 0 1234 Establish 00:04:43 5/4
# 查看从RPKI服务器获取的ROA信息,可以看到已经获得ROA信息。
[RouterA] display bgp rpki table ipv4
Total number of entries: 5
Status codes: S - stale, U - used
Network Mask-range Origin-AS Server Status
1.2.3.4 8-24 100 1.1.1.2 U
2.2.3.6 8-32 100 1.1.1.2 U
2.2.3.6 10-24 4294967295 1.1.1.2 U
2.2.3.9 20-24 4294967295 1.1.1.2 U
3.2.3.5 8-26 200 1.1.1.2 U
# 查看Router A上BGP RPKI验证结果。
[RouterA] display bgp routing-table ipv4 1.2.3.0
BGP local router ID: 2.2.2.2
Local AS number: 100
Paths: 1 available, 1 best
BGP routing table information of 1.2.3.0/24:
Imported route.
Original nexthop: 0.0.0.0
Out interface : Ten-GigabitEthernet3/1/1
Route age : 01h28m30s
OutLabel : NULL
RxPathID : 0x0
TxPathID : 0x0
Org-validation : Valid
AS-path : (null)
Origin : incomplete
Attribute value : MED 0, pref-val 32768
State : valid, local, best
IP precedence : N/A
QoS local ID : N/A
Traffic index : N/A
Tunnel policy : NULL
Rely tunnel IDs : N/A
1.2.3.0/24在ROA数据库中的Network为1.2.3.4,Mask-range为8-24的地址前缀范围内,且AS和路由的源AS号相匹配,因此验证结果为Valid。
# 查看Router B上到达目的网络1.2.3.0的BGP IPv4单播路由的详细信息。
[RouterB] display bgp routing-table ipv4 1.2.3.0
RR-client route.
From : 1.2.3.1 (192.168.56.22)
Rely nexthop : 1.2.3.1
Original nexthop: 1.2.3.1
Out interface : Ten-GigabitEthernet3/1/1
Route age : 01h28m33s
OutLabel : NULL
Ext-Community : <Origin Valid State: Valid >
RxPathID : 0x0
TxPathID : 0x0
Org-validation : Valid
AS-path : (null)
Origin : incomplete
Attribute value : MED 0, localpref 100, pref-val 0
State : valid, internal, best
IP precedence : N/A
QoS local ID : N/A
Traffic index : N/A
Tunnel policy : NULL
Rely tunnel IDs : N/A
由于Router B仅允许BGP RPKI验证结果为Valid的路由信息通过,因此可以看到到达目的网络1.2.3.0的BGP IPv4单播路由的信息。该路由信息中的扩展团体属性包含了BGP RPKI验证结果。
· Router A、Router B和Router C三台路由器之间运行IPv6 BGP交互路由信息。Router A和Router B之间建立IBGP连接,Router B和Router C之间建立EBGP连接。
· 为了提高安全性,配置通过IPsec对IPv6 BGP报文进行保护。
图6-2 通过IPsec保护IPv6 BGP报文组网图
(1) 配置各接口的IPv6地址(略)
(2) 配置IBGP连接
# 配置Router A。
<RouterA> system-view
[RouterA] bgp 65008
[RouterA-bgp-default] router-id 1.1.1.1
[RouterA-bgp-default] group ibgp internal
[RouterA-bgp-default] peer 1::2 group ibgp
[RouterA-bgp-default] address-family ipv6 unicast
[RouterA-bgp-default-ipv6] peer ibgp enable
[RouterA-bgp-default-ipv6] quit
[RouterA-bgp-default] quit
# 配置Router B。
<RouterB> system-view
[RouterB] bgp 65008
[RouterB-bgp-default] router-id 2.2.2.2
[RouterB-bgp-default] group ibgp internal
[RouterB-bgp-default] peer 1::1 group ibgp
[RouterB-bgp-default] address-family ipv6 unicast
[RouterB-bgp-default-ipv6] peer ibgp enable
[RouterB-bgp-default-ipv6] quit
(3) 配置EBGP连接
# 配置Router C。
<RouterC> system-view
[RouterC] bgp 65009
[RouterC-bgp-default] router-id 3.3.3.3
[RouterC-bgp-default] group ebgp external
[RouterC-bgp-default] peer 3::1 as-number 65008
[RouterC-bgp-default] peer 3::1 group ebgp
[RouterC-bgp-default] address-family ipv6 unicast
[RouterC-bgp-default-ipv6] peer ebgp enable
[RouterC-bgp-default-ipv6] quit
[RouterC-bgp-default] quit
# 配置Router B。
[RouterB-bgp-default] group ebgp external
[RouterB-bgp-default] peer 3::2 as-number 65009
[RouterB-bgp-default] peer 3::2 group ebgp
[RouterB-bgp-default] address-family ipv6 unicast
[RouterB-bgp-default-ipv6] peer ebgp enable
[RouterB-bgp-default-ipv6] quit
[RouterB-bgp-default] quit
(4) 配置IPsec安全提议和安全框架
# 配置Router A。创建名为tran1的安全提议,报文封装形式采用传输模式,安全协议采用ESP协议。创建手工方式的安全框架policy001,配置SPI和密钥。
[RouterA] ipsec transform-set tran1
[RouterA-ipsec-transform-set-tran1] encapsulation-mode transport
[RouterA-ipsec-transform-set-tran1] esp encryption-algorithm des
[RouterA-ipsec-transform-set-tran1] esp authentication-algorithm sha1
[RouterA-ipsec-transform-set-tran1] quit
[RouterA] ipsec profile policy001 manual
[RouterA-ipsec-profile-policy001-manual] transform-set tran1
[RouterA-ipsec-profile-policy001-manual] sa spi outbound esp 12345
[RouterA-ipsec-profile-policy001-manual] sa spi inbound esp 12345
[RouterA-ipsec-profile-policy001-manual] sa string-key outbound esp simple abcdefg
[RouterA-ipsec-profile-policy001-manual] sa string-key inbound esp simple abcdefg
[RouterA-ipsec-profile-policy001-manual] quit
# 配置Router B。创建名为tran1的安全提议,报文封装形式采用传输模式,安全协议采用ESP协议;创建手工方式的安全框架policy001,配置SPI和密钥。创建名为tran2的安全提议,报文封装形式采用传输模式,安全协议采用ESP协议;创建手工方式的安全框架policy002,配置SPI和密钥。
[RouterB] ipsec transform-set tran1
[RouterB-ipsec-transform-set-tran1] encapsulation-mode transport
[RouterB-ipsec-transform-set-tran1] esp encryption-algorithm des
[RouterB-ipsec-transform-set-tran1] esp authentication-algorithm sha1
[RouterB-ipsec-transform-set-tran1] quit
[RouterB] ipsec profile policy001 manual
[RouterB-ipsec-profile-policy001-manual] transform-set tran1
[RouterB-ipsec-profile-policy001-manual] sa spi outbound esp 12345
[RouterB-ipsec-profile-policy001-manual] sa spi inbound esp 12345
[RouterB-ipsec-profile-policy001-manual] sa string-key outbound esp simple abcdefg
[RouterB-ipsec-profile-policy001-manual] sa string-key inbound esp simple abcdefg
[RouterB-ipsec-profile-policy001-manual] quit
[RouterB] ipsec transform-set tran2
[RouterB-ipsec-transform-set-tran2] encapsulation-mode transport
[RouterB-ipsec-transform-set-tran2] esp encryption-algorithm des
[RouterB-ipsec-transform-set-tran2] esp authentication-algorithm sha1
[RouterB-ipsec-transform-set-tran2] quit
[RouterB] ipsec profile policy002 manual
[RouterB-ipsec-profile-policy002-manual] transform-set tran2
[RouterB-ipsec-profile-policy002-manual] sa spi outbound esp 54321
[RouterB-ipsec-profile-policy002-manual] sa spi inbound esp 54321
[RouterB-ipsec-profile-policy002-manual] sa string-key outbound esp simple gfedcba
[RouterB-ipsec-profile-policy002-manual] sa string-key inbound esp simple gfedcba
[RouterB-ipsec-profile-policy002-manual] quit
# 配置Router C。创建名为tran2的安全提议,报文封装形式采用传输模式,安全协议采用ESP协议。创建手工方式的安全框架policy002,配置SPI和密钥。
[RouterC] ipsec transform-set tran2
[RouterC-ipsec-transform-set-tran2] encapsulation-mode transport
[RouterC-ipsec-transform-set-tran2] esp encryption-algorithm des
[RouterC-ipsec-transform-set-tran2] esp authentication-algorithm sha1
[RouterC-ipsec-transform-set-tran2] quit
[RouterC] ipsec profile policy002 manual
[RouterC-ipsec-profile-policy002-manual] transform-set tran2
[RouterC-ipsec-profile-policy002-manual] sa spi outbound esp 54321
[RouterC-ipsec-profile-policy002-manual] sa spi inbound esp 54321
[RouterC-ipsec-profile-policy002-manual] sa string-key outbound esp simple gfedcba
[RouterC-ipsec-profile-policy002-manual] sa string-key inbound esp simple gfedcba
[RouterC-ipsec-profile-policy002-manual] quit
(5) 配置通过IPsec保护Router A和Router B之间的IPv6 BGP报文
# 配置Router A。
[RouterA] bgp 65008
[RouterA-bgp-default] peer 1::2 ipsec-profile policy001
[RouterA-bgp-default] quit
# 配置Router B。
[RouterB] bgp 65008
[RouterB-bgp-default] peer 1::1 ipsec-profile policy001
[RouterB-bgp-default] quit
(6) 配置通过IPsec保护Router B和Router C之间的IPv6 BGP报文
# 配置Router C。
[RouterC] bgp 65009
[RouterC-bgp-default] peer ebgp ipsec-profile policy002
[RouterC-bgp-default] quit
# 配置Router B。
[RouterB] bgp 65008
[RouterB-bgp-default] peer ebgp ipsec-profile policy002
[RouterB-bgp-default] quit
# 在Router B上显示IPv6 BGP对等体的详细信息。可以看出完成上述配置后IBGP、EBGP对等体能够正常建立,且发送和接收的IPv6 BGP报文都经过加密。
[RouterB] display bgp peer ipv6 verbose
Peer: 1::1 Local: 2.2.2.2
Type: IBGP link
BGP version 4, remote router ID 1.1.1.1
Update group ID: 0
BGP current state: Established, Up for 00h05m54s
BGP current event: KATimerExpired
BGP last state: OpenConfirm
Port: Local - 24896 Remote - 179
Configured: Active Hold Time: 180 sec Keepalive Time: 60 sec
Received : Active Hold Time: 180 sec
Negotiated: Active Hold Time: 180 sec Keepalive Time: 60 sec
Peer optional capabilities:
Peer supports BGP multi-protocol extension
Peer supports BGP route refresh capability
Peer supports BGP route AS4 capability
Address family IPv6 Unicast: advertised and received
InQ updates: 0, OutQ updates: 0
NLRI statistics:
Rcvd: UnReach NLRI 0, Reach NLRI 0
Sent: UnReach NLRI 0, Reach NLRI 3
Message statistics:
Msg type Last rcvd time/ Current rcvd count/ History rcvd count/
Last sent time Current sent count History sent count
Open 18:59:15-2013.4.24 1 1
18:59:15-2013.4.24 1 2
Update - 0 0
18:59:16-2013.4.24 1 1
Notification - 0 0
18:59:15-2013.4.24 0 1
Keepalive 18:59:15-2013.4.24 1 1
18:59:15-2013.4.24 1 1
RouteRefresh - 0 0
- 0 0
Total - 2 2
- 3 5
Maximum allowed prefix number: 4294967295
Threshold: 75%
Authentication type configured: None
Minimum time between advertisements is 15 seconds
Optional capabilities:
Multi-protocol extended capability has been enabled
Route refresh capability has been enabled
Peer preferred value: 0
IPsec profile name: policy001
Site-of-Origin: Not specified
Routing policy configured:
No routing policy is configured
Peer: 3::2 Local: 2.2.2.2
Type: EBGP link
BGP version 4, remote router ID 3.3.3.3
Update group ID: 0
BGP current state: Established, Up for 00h05m00s
BGP current event: KATimerExpired
BGP last state: OpenConfirm
Port: Local - 24897 Remote - 179
Configured: Active Hold Time: 180 sec Keepalive Time: 60 sec
Received : Active Hold Time: 180 sec
Negotiated: Active Hold Time: 180 sec Keepalive Time: 60 sec
Peer optional capabilities:
Peer supports BGP multi-protocol extension
Peer supports BGP route refresh capability
Peer supports BGP route AS4 capability
Address family IPv6 Unicast: advertised and received
InQ updates: 0, OutQ updates: 0
NLRI statistics:
Rcvd: UnReach NLRI 0, Reach NLRI 0
Sent: UnReach NLRI 0, Reach NLRI 3
Message statistics:
Msg type Last rcvd time/ Current rcvd count/ History rcvd count/
Last sent time Current sent count History sent count
Open 18:59:15-2013.4.24 1 1
18:59:15-2013.4.24 1 2
Update - 0 0
18:59:16-2013.4.24 1 1
Notification - 0 0
18:59:15-2013.4.24 0 1
Keepalive 18:59:15-2013.4.24 1 1
18:59:15-2013.4.24 1 1
RouteRefresh - 0 0
- 0 0
Total - 2 2
- 3 5
Maximum allowed prefix number: 4294967295
Threshold: 75%
Authentication type configured: None
Minimum time between advertisements is 30 seconds
Optional capabilities:
Multi-protocol extended capability has been enabled
Route refresh capability has been enabled
Peer preferred value: 0
IPsec profile name: policy002
Site-of-Origin: Not specified
Routing policy configured:
No routing policy is configured
· 所有路由器运行BGP协议,Router A与RPKI服务器建立连接。Router A与Router B建立IBGP连接。
· Router A将BGP RPKI验证结果发送给Router B。
· 配置路由策略,使得Router B对收到的BGP RPKI验证结果设置匹配条件,控制路由的接收。
图6-3 BGP RPKI配置组网图
(1) 配置各接口的IP地址,在Router A和Router B上配置BGP,建立IBGP邻居,配置过程略
(2) 配置Router A与RPKI服务器建立连接。
<RouterA> system-view
[RouterA] bgp 100
[RouterA-bgp-default] rpki
[RouterA-bgp-default-rpki] server tcp 1::2
[RouterA-bgp-default-rpki-server] port 1234
[RouterA-bgp-default-rpki-server] quit
(3) 在Router A上开启BGP RPKI验证。
[RouterA-bgp-default-rpki] check-origin-validation
[RouterA-bgp-default-rpki] quit
(4) 在Router A上配置BGP RPKI验证结果参与路由优选。
[RouterA-bgp-default] address-family ipv6
[RouterA-bgp-default-ipv6] bestroute origin-as-validation
(5) 在Router A上配置向对等体2001::2发送BGP RPKI验证结果。
[RouterA-bgp-default-ipv6] peer 2001::2 advertise-ext-community
[RouterA-bgp-default-ipv6] peer 2001::2 advertise origin-as-validation
[RouterA-bgp-default-ipv6] quit
[RouterA-bgp-default] quit
(6) 在Router B上对收到的BGP RPKI验证结果设置匹配条件,仅接收验证结果为Valid的路由
# 配置路由策略。
<RouterB> system-view
[RouterB] route-policy rpki_policy permit node 0
[RouterB-route-policy-rpki_policy-0] if-match rpki valid
# 应用路由策略。
[RouterB] bgp 100
[RouterB-bgp-default] address-family ipv6
[RouterB-bgp-default-ipv6] peer 2001::1 route-policy rpki_policy import
# 查看Router A与RPKI服务器的连接信息,可以看到Router A与RPKI服务器已经建立连接。
[RouterA] display bgp rpki server
Server VPN-index Port State Time ROAs(IPv4/IPv6)
1::2 0 1234 Establish 00:04:43 5/5
# 查看从RPKI服务器获取的ROA信息,可以看到已经获得ROA信息。
[RouterA] display bgp rpki table ipv6
Total number of entries: 5
Status codes: S - stale, U - used
Network Mask-range Origin-AS Server Status
2001:4860:: 32-32 100 1::2 U
2404:6800:: 32-32 100 1::2 U
2607:F8B0:: 28-28 4294967295 1::2 U
2A03:ACE0:: 40-40 4294967295 1::2 U
2001::1 64-64 200 1::2 U
# 查看Router A上BGP RPKI验证结果。
[RouterA] display bgp routing-table ipv6 2001::1 64
BGP local router ID: 2.2.2.2
Local AS number: 100
Paths: 1 available, 1 best
BGP routing table information of 2001::1/64:
Imported route.
Original nexthop: 0.0.0.0
Out interface : Ten-GigabitEthernet3/1/1
Route age : 01h13m20s
OutLabel : NULL
RxPathID : 0x0
TxPathID : 0x0
Org-validation : Valid
AS-path : (null)
Origin : incomplete
Attribute value : MED 0, pref-val 32768
State : valid, local, best
IP precedence : N/A
QoS local ID : N/A
Tunnel policy : NULL
Rely tunnel IDs : N/A
2001::1/64在ROA数据库中的Network为2001::1,Mask-range为64-64的地址前缀范围内,且AS和路由的源AS号相匹配,因此验证结果为Valid。
# 查看Router B上到达目的网络2001::1的BGP IPv6单播路由的详细信息。
[RouterB] display bgp routing-table ipv6 2001::1 64
RR-client route.
From : 2001::1 64 (192.168.56.22)
Rely nexthop : 2001::1
Original nexthop: 2001::1
Out interface : Ten-GigabitEthernet3/1/1
Route age : 01h13m22s
OutLabel : NULL
Ext-Community : <Origin Valid State: Valid >
RxPathID : 0x0
TxPathID : 0x0
Org-validation : Invalid
AS-path : (null)
Origin : incomplete
Attribute value : MED 0, localpref 100, pref-val 0
State : valid, internal, best
IP precedence : N/A
QoS local ID : N/A
Traffic index : N/A
Tunnel policy : NULL
Rely tunnel IDs : N/A
由于Router B仅允许BGP RPKI验证结果为Valid的路由信息通过,因此可以看到到达目的网络2001::1的BGP IPv6单播路由的信息。该路由信息中的扩展团体属性包含了BGP RPKI验证结果。
提高BGP网络的可靠性配置任务如下:
· 配置BGP GR
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会话重建时间加上GR Helper上配置的等待重建额外时间(额外时间通过peer graceful-restart timer restart extra命令配置)内没有成功建立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表项。
在TCP连接断开、保持时间超时或BGP会话允许交换路由的地址族发生变化时,BGP会话需要断开并重新建立,造成业务流量转发中断。开启设备通过GR方式复位BGP会话功能后,在TCP连接断开、保持时间超时和BGP会话允许交换路由的地址族发生变化时,设备采用BGP GR方式进行BGP会话重建,仍按照已有的路由信息转发报文,从而避免对流量转发造成影响。
BGP GR完成后,向外发布路由信息的规则如下:
· 如果这些路由信息还依赖于其他模块(例如将OSPF路由引入到BGP路由时,BGP路由依赖于OSPF路由;标签路由依赖于MPLS等),则BGP需要收到这些周边模块发送的GR完成的通知后,才能向外发布路由,以免发布的路由错误或不可达,导致流量丢失。周边模块异常时,将无法向BGP发送GR完成的通知。BGP等待周边模块完成GR的时间具有一定的限制。在该限定时间内,如果BGP收到了周边模块发送的GR完成的通知,BGP会取消计时并发送路由;否则BGP将不再等待,立即发布路由,避免周边模块的异常导致BGP功能异常。
· 如果这些路由信息不依赖于其他模块,则BGP会立即向外发送路由。
End-Of-RIB标记用来标识路由更新发送的结束。
本端配置的等待End-Of-RIB标记的时间不会通告给对端,只用来控制本端路由信息交互的时间,即GR Restarter上配置的时间只用来控制GR Restarter从GR Helper接收路由更新的时间,GR Helper上配置的时间只用来控制GR Helper从GR Restarter接收路由更新的时间。
由于设备在GR过程中的角色不可预知,建议在作为GR Restarter和GR Helper的设备上均进行本配置。
当路由信息的数量较大且存在依赖于其他协议的路由信息,同时依赖的其他协议的GR配置正确时,如果BGP在限定时间内未收到周边模块发送的GR完成的通知,那么BGP将不再等待,立即发布路由。这种情况下建议将等待其他协议完成GR的最长时间调大,尽可能地保证BGP和其他协议都完成GR后再向其他设备发布BGP路由。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 使能BGP协议的GR能力。
graceful-restart
缺省情况下,BGP协议的GR能力处于关闭状态。
开启和关闭BGP协议的GR能力时,设备都会重新建立所有的BGP会话。
(4) (可选)配置对端等待重建BGP会话的时间。
graceful-restart timer restart timer
缺省情况下,对端等待重建BGP会话的时间为150秒。
对端等待重建BGP会话的时间应小于Open消息中的Holdtime时间。
(5) (可选)配置BGP GR过程中本端作为GR Helper时等待对等体/对等体组重建BGP会话的额外时间。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } graceful-restart timer restart extra { time | no-limit }
缺省情况下,本端作为GR Helper时等待对等体/对等体组重建BGP会话的额外时间为0秒。
(6) (可选)配置本端等待End-Of-RIB标记的时间。
graceful-restart timer wait-for-rib timer
缺省情况下,本端等待End-Of-RIB标记的时间为600秒。
(7) (可选)配置BGP GR过程中等待通知RIB老化失效表项的时间。
graceful-restart timer purge-time timer
缺省情况下,BGP GR过程中等待通知RIB老化失效表项的时间为480秒。
(8) (可选)配置BGP GR完成后等待其他协议完成GR或NSR的最长时间。
bgp update-delay wait-other-protocol seconds
缺省情况下,BGP GR完成后等待周边其他协议完成GR的最长时间为300秒。
(9) (可选)开启设备通过GR方式复位BGP会话功能。
graceful-restart peer-reset [ all ]
缺省情况下,设备以GR方式复位BGP会话功能处于关闭状态。
BGP协议通过存活时间(Keepalive)定时器和保持时间(Holdtime)定时器来维护邻居关系。但这些定时器都是秒级的,而且根据协议规定,设置的保持时间应该至少为存活时间间隔的三倍。这样使得BGP邻居关系的检测比较慢,对于报文收发速度快的接口会导致大量报文丢失。通过配置BGP与BFD联动,可以使用BFD来检测本地路由器和BGP对等体之间的链路。当本地路由器和BGP对等体之间的链路出现故障时,BFD可以快速检测到该故障,从而加快BGP协议的收敛速度。有关BFD的介绍和详细配置,请参见“可靠性配置指导”中的“BFD”。
配置通过BFD检测本地路由器和指定BGP对等体/对等体组之间的链路之前,需要先在本地路由器和指定BGP对等体/对等体组之间建立BGP会话。
在我司设备上(本地路由器)指定采用控制报文方式的BFD会话检测链路时,如果BGP对等体为其他厂商设备,需要满足下列条件:
· 本地路由器与其他厂商发送的BFD报文的UDP目的端口号必须相同。
· 如果其他厂商设备发送的BFD报文的TTL值小于255,则本地路由器发送的BFD报文的TTL值也要小于255;如果其他厂商设备发送BFD报文的TTL值等于255,本地路由器发送的BFD报文的TTL值也要等于255。
通过执行peer bfd命令时指定compatible参数,可以实现我司设备与其他厂商的设备建立BFD会话。表7-1为执行peer bfd命令时,在不同BGP会话场景、不同的参数配置下,我司发送的BFD报文的UDP目的端口号和TTL值,请根据实际情况选择peer bfd命令需要指定的参数。
表7-1 peer bfd命令多参数配置组合效果表
multi-hop和single-hop参数是否指定 |
compatible参数是否指定 |
与对等体建立直连IBGP会话的场景 |
与对等体建立非直连IBGP会话的场景 |
与对等体建立直连EBGP会话的场景 |
与对等体建立非直连EBGP会话的场景 |
N |
N |
· UDP目的端口号:4784 · TTL值:64 |
· UDP目的端口号:4784 · TTL值:64 |
· UDP目的端口号:3784 · TTL值:255 |
· UDP目的端口号:4784 · TTL值:64 |
N |
Y |
· UDP目的端口号:4784 · TTL值:255 |
· UDP目的端口号:4784 · TTL值:255 |
· UDP目的端口号:3784 · TTL值:64 |
· UDP目的端口号:4784 · TTL值:255 |
指定single-hop |
N |
· UDP目的端口号:3784 · TTL值:255 |
· UDP目的端口号:3784 · TTL值:255 |
· UDP目的端口号:3784 · TTL值:255 |
· UDP目的端口号:3784 · TTL值:255 |
指定single-hop |
Y |
· UDP目的端口号:3784 · TTL值:64 |
· UDP目的端口号:3784 · TTL值:64 |
· UDP目的端口号:3784 · TTL值:64 |
· UDP目的端口号:3784 · TTL值:64 |
指定multi-hop |
N |
· UDP目的端口号:4784 · TTL值:64 |
· UDP目的端口号:4784 · TTL值:64 |
· UDP目的端口号:4784 · TTL值:64 |
· UDP目的端口号:4784 · TTL值:64 |
指定multi-hop |
Y |
· UDP目的端口号:4784 · TTL值:255 |
· UDP目的端口号:4784 · TTL值:255 |
· UDP目的端口号:4784 · TTL值:255 |
· UDP目的端口号:4784 · TTL值:255 |
通过本功能配置echo报文方式的BFD检测时,需要注意:
· echo报文方式的BFD会话只能用于检测与直连对等体之间的链路状态。
· 通过LoopBack接口建立的BGP会话无法通过echo报文方式检测对等体之间的链路。
· 需要配置bfd echo-source-ip或bfd echo-source-ipv6命令为echo报文指定源地址,否则本端无法建立BFD会话。
通过链路本地地址建立的BGP会话只能通过控制报文方式的单跳BFD会话检测对等体之间的链路。
在我司设备上(本地路由器)指定采用控制报文方式的BFD会话检测链路时,如果BGP对等体为我司设备,则本地路由器和BGP对等体采用的BFD检测方式(单跳或多跳)必须相同,否则无法建立BFD会话。
配置peer bfd命令时如果指定了compatible参数,则也会影响到与BGP共用BFD会话的其他业务,建议不要配置其他业务与BGP共用同一BFD会话。
配置BGP GR功能后,请慎用BGP与BFD联动功能。因为当链路故障时,系统可能还没来得及启用GR处理流程,BFD已经检测到链路故障了,从而导致GR失败。如果设备上同时配置了BGP GR和BGP BFD,则在BGP GR期间请勿去使能BGP BFD,否则可能导致GR失败。
为指定对等体/对等体组配置BFD检测参数(BFD检测时间倍数、接收/发送BFD控制报文的时间间隔)时,需要注意:
· 对等体在加入对等体组时将同步所加入对等体组的BFD检测参数配置。
· 配置对等体组的BFD检测参数时,相应配置将同步给组内所有的对等体。
· 如果对同一个对等体/对等体组的某项BFD检测参数多次进行配置,则以最后一次的配置为准。
· 对于一个对等体的一项BFD检测参数而言,总是以最后一次的配置为准,无论该配置是通过直接配置获得还是同步对等体组的配置获得。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置通过BFD检测本地路由器和指定BGP对等体/对等体组之间的链路。
peer { group-name | ipv4-address [ mask-length ] } bfd [ echo | [ multi-hop | single-hop ] [ compatible ] ]
缺省情况下,不使用BFD检测本地路由器和BGP对等体/对等体组之间的链路。
(4) (可选)配置指定对等体/对等体组的BFD检测参数。
peer { group-name | ipv4-address [ mask-length ] } bfd parameters { detect-multiplier detect-multiplier | min-receive-interval min-receive-interval | min-transmit-interval min-transmit-interval } *
缺省情况下,未配置对等体/对等体组的BFD检测参数。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置通过BFD检测本地路由器和指定IPv6 BGP对等体/对等体组之间的链路。
peer { group-name | ipv6-address [ prefix-length ] } bfd [ echo | [ multi-hop | single-hop ] [ compatible ] ]
缺省情况下,不使用BFD检测本地路由器和IPv6 BGP对等体/对等体组之间的链路。
(4) (可选)配置指定对等体/对等体组的BFD检测参数。
peer { group-name | ipv6-address [ prefix-length ] } bfd parameters { detect-multiplier detect-multiplier | min-receive-interval min-receive-interval | min-transmit-interval min-transmit-interval } *
缺省情况下,未对指定对等体/对等体组配置BFD检测参数。
当BGP网络中的链路或某台路由器发生故障时,需要通过故障链路或故障路由器传输才能到达目的地的报文将会丢失或产生路由环路,数据流量将会被中断。直到BGP根据新的网络拓扑路由收敛后,被中断的流量才能恢复正常的传输。
为了尽可能缩短网络故障导致的流量中断时间,网络管理员可以开启BGP快速重路由功能。
图7-1 BGP快速重路由功能示意图
如图7-1所示,在Router B上开启快速重路由功能后,BGP将为主路由生成备份下一跳。IPv4组网中BGP通过ARP或Echo方式的BFD会话检测主路由的下一跳是否可达,IPv6组网中BGP通过ND(Neighbor Discovery,邻居发现)协议检测主路由的下一跳是否可达。当Router B检测到主路由的下一跳不可达后,BGP会使用备份下一跳替换失效下一跳,通过备份下一跳来指导报文的转发,从而大大缩短了流量中断时间。在使用备份下一跳指导报文转发的同时,BGP会重新进行路由优选,优选完毕后,使用新的最优路由来指导报文转发。
开启BGP快速重路由功能的方法有如下两种:
· 在BGP地址族视图下执行pic命令开启当前地址族的BGP快速重路由功能。采用这种方法时,BGP会为当前地址族的所有BGP路由自动计算备份下一跳,即只要从不同BGP对等体学习到了到达同一目的网络的路由,且这些路由不等价,就会生成主备两条路由。
· 在BGP地址族视图下执行fast-reroute route-policy命令指定快速重路由引用的路由策略,并在引用的路由策略中,通过apply [ ipv6 ] fast-reroute backup-nexthop命令指定备份下一跳的地址。采用这种方式时,只有为主路由计算出的备份下一跳地址与指定的地址相同时,才会为其生成备份下一跳;否则,不会为主路由生成备份下一跳。在引用的路由策略中,还可以配置if-match子句,用来决定哪些路由可以进行快速重路由保护,BGP只会为通过if-match子句过滤的路由生成备份下一跳。
引用路由策略方式的优先级高于通过pic命令开启BGP快速重路由方式。
IPv4单播路由和IPv6单播路由支持BGP快速重路由功能;IPv4组播路由和IPv6组播路由不支持BGP快速重路由功能。
(1) 进入系统视图。
system-view
(2) 配置echo报文的源IP地址。
bfd echo-source-ip ipv4-address
缺省情况下,未配置echo报文的源IP地址。
通过Echo方式的BFD会话检测主路由的下一跳是否可达时,必须执行本配置。
echo报文的源IP地址用户可以任意指定。建议配置echo报文的源IP地址不属于该设备任何一个接口所在网段。
本命令的详细介绍,请参见“可靠性命令参考”中的“BFD”。
(3) 创建路由策略,并进入路由策略视图。
route-policy route-policy-name permit node node-number
本命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“路由策略”。
(4) 配置快速重路由的备份下一跳地址。
apply fast-reroute backup-nexthop ipv4-address
缺省情况下,未指定快速重路由的备份下一跳地址。
本命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“路由策略”。
(5) 退回系统视图。
quit
(6) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(7) 进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图。
¡ 进入BGP IPv4单播地址族视图。
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
(8) 在当前地址族视图下指定BGP快速重路由引用的路由策略。
fast-reroute route-policy route-policy-name
缺省情况下,BGP快速重路由未引用任何路由策略。
引用的路由策略中,只有apply fast-reroute backup-nexthop和apply ipv6 fast-reroute backup-nexthop命令生效,其他apply子句不会生效。
(1) 进入系统视图。
system-view
(2) 创建路由策略,并进入路由策略视图。
route-policy route-policy-name permit node node-number
本命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“路由策略”。
(3) 配置快速重路由的备份下一跳地址。
apply ipv6 fast-reroute backup-nexthop ipv6-address
缺省情况下,未指定快速重路由的备份下一跳地址。
本命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“路由策略”。
(4) 退回系统视图。
quit
(5) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(6) 进入BGP IPv6单播地址族视图或BGP-VPN IPv6单播地址族视图。
address-family ipv6 [ unicast ]
(7) 在当前地址族视图下指定BGP快速重路由引用的路由策略。
fast-reroute route-policy route-policy-name
缺省情况下,BGP快速重路由未引用任何路由策略。
引用的路由策略中,只有apply fast-reroute backup-nexthop和apply ipv6 fast-reroute backup-nexthop命令生效,其他apply子句不会生效。
在某些组网情况下,执行pic命令为所有BGP路由生成备份下一跳后,可能会导致路由环路,请谨慎使用本功能。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv4单播地址族视图、BGP-VPN IPv4单播地址族视图、BGP IPv4单播标签地址族视图或BGP-VPN IPv4单播标签地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 labeled-unicast
¡ 请依次执行以下命令进入BGP-VPN IPv4单播标签地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 labeled-unicast
(3) 开启BGP快速重路由功能。
pic
缺省情况下,BGP快速重路由功能处于关闭状态。
在某些组网情况下,执行pic命令为所有BGP路由生成备份下一跳后,可能会导致路由环路,请谨慎使用本功能。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 进入BGP IPv6单播地址族视图或BGP-VPN IPv6单播地址族视图。
address-family ipv6 [ unicast ]
(4) 开启BGP快速重路由功能。
pic
缺省情况下,BGP快速重路由功能处于关闭状态。
缺省情况下,BGP快速重路由通过ARP检测主路由的下一跳是否可达,该方式对于快速重路由的主链路失效检测较慢,业务流量可能无法及时切换到备用路径上,导致流量丢失。配置本功能后,设备会自动创建一个协议类型为IPFRR的BFD会话,通过该BFD会话对主路由的下一跳检测,以提高主路由下一跳失效时,流量切换到备路由下一跳上的收敛速度。
只有存在已经生成了备份下一跳的主路由时,本功能才会生效并自动创建BFD会话。
由于BGP暂不支持为负载分担路由计算备份下一跳,本功能无法为等价路由作为主路由的场景提供通过BFD会话检测功能。如需通过BFD会话检测BGP等价路由的下一跳可达性,请配置primary-path-detect bfd protocol-ecmp bgp或primary-path-detect bfd protocol-ecmp bgp4+命令。有关上述两条命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“IP路由基础”。
通过控制报文方式的BFD会话检测主路由的下一跳是否可达时,由于控制报文方式的BFD会话需要两端进行协商才能成功建立,如需设备成功使用控制报文方式的BFD会话来检测主链路的下一跳,可以通过以下两种方式进行配置:
· 在主链路的对端设备上也执行primary-path-detect bfd命令。此方式适用于主链路两端设备均配置快速重路由功能的场景。
· 在主链路的对端设备上手工创建一个静态BFD会话,该静态BFD会话指定的会话源IP地址为本端自动创建的BFD会话的会话目的IP地址、会话目的IP地址为本端自动创建的BFD会话的源IP地址、远端标识符为本端自动创建的BFD会话的本地标识符。
使用echo方式的BFD会话检测主路由的下一跳是否可达时,仅需要在本地路由器上配置本功能。
其他业务模块在通过BFD会话检测主路由的下一跳是否可达时,也会自动创建BFD会话(如RIB、OSPF、IS-IS等)。如果其他协议创建的自动BFD会话检测的链路与BGP主路由下一跳所在的链路相同,则BGP不会重复自动创建同类型的BFD会话,而是复用其他协议的BFD会话。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 配置BGP快速重路由通过BFD会话检测主路由的下一跳是否可达。
primary-path-detect bfd { ctrl | echo }
缺省情况下,BGP快速重路由通过ARP检测主路由的下一跳是否可达。
在如图7-2所示的MPLS网络中,CE 2双归接入PE 2和PE 3,PE 2和PE 3同时将CE 2站点的私网路由通过BGP协议发布给PE 1。通常情况下,PE 1只会优选来自一台对端PE设备的BGP路由。两端PE之间存在多条公网隧道时(如图,PE 1和PE 2之间存在PE 1-P 1-PE 2与PE 1-P 2-PE 2两条路径),由于BGP路由只能迭代到一条隧道上,PE 1去往CE 2站点的私网流量在公网隧道中传输时只会选择一条公网隧道转发,无法充分地利用公网的链路资源。
图7-2 双归属CE实现快速重路由组网图
在PE 1上配置本功能后,BGP路由即可以同时迭代到多条隧道上。本功能配合快速重路由功能使用时,例如CE 1与CE 2站点间的私网流量在“PE 1——PE 2”和“PE 1——PE 3”的路径间快速切换,PE 1去往CE 2的私网流量将会在主路由迭代到的所有公网隧道上进行负载分担转发(如图7-3中的绿色路径);只有在主路由迭代到的所有公网隧道均不可用时,PE 1去往CE 2的私网流量才会快速切换到备份路由迭代到的所有公网隧道上进行负载分担转发(如图7-3中的红色路径)。
图7-3 双归属CE实现快速重路由的多隧道负载分担组网图
本功能需要通过select-seq load-balance-number命令来实现,在BGP VPNv4/VPNv6或BGP EVPN地址族视图下应用关联了select-seq load-balance-number命令的隧道迭代器后,BGP VPNv4/VPNv6或BGP EVPN路由即可以同时迭代到多条隧道上。可以迭代到的隧道类型以及可以实现负载分担的隧道数目均由select-seq load-balance-number命令的配置决定。有关select-seq load-balance-number命令的详细介绍,请参见“MPLS命令参考”中的“隧道策略”。
在select-seq load-balance-number命令中指定的SRv6类型的隧道对本功能不生效,不能够被BGP路由迭代为负载分担隧道。
设备无需进行任何配置,BGP路由就能够迭代到多条负载分担隧道上,形成负载分担的隧道按照select-seq load-balance-number命令的缺省优先级顺序进行选择。
(1) 进入系统视图。
system-view
(2) 创建隧道策略,并进入隧道策略视图。
tunnel-policy tunnel-policy-name [ default ]
(3) 配置隧道的选择顺序和负载分担的隧道数目。
select-seq [ strict ] { cr-lsp | flex-algo-lsp | gre | lsp | sr-lsp | sr-policy | srv6-policy | srv6-policy-group } * load-balance-number number
缺省情况下,选择的隧道类型优先级依次是LSP、GRE、CRLSP、SRLSP、SR-MPLS TE Policy、SRv6 TE Policy、SRv6 TE Policy组、通过Flex-Algo算法计算的LSP,负载分担的隧道数目与设备型号有关,请以设备实际情况为准。
(4) 退回系统视图。
quit
(5) 进入隧道迭代器视图。
tunnel-selector tunnel-selector-name { deny | permit } node node-number
(6) 配置隧道迭代器应用的隧道策略。
apply tunnel-policy tunnel-policy-name
缺省情况下,未配置隧道迭代器应用的隧道策略。
(7) 退回系统视图。
quit
(8) 进入BGP VPNv4地址族视图、BGP VPNv6地址族视图或BGP EVPN地址族视图。
¡ 请依次执行以下命令进入BGP VPNv4地址族视图。
bgp as-number [ instance instance-name ]
address-family vpnv4
¡ 请依次执行以下命令进入BGP VPNv6地址族视图。
bgp as-number [ instance instance-name ]
address-family vpnv6
¡ 请依次执行以下命令进入BGP EVPN地址族视图。
bgp as-number [ instance instance-name ]
address-family l2vpn evpn
(9) 应用隧道迭代器。
apply tunnel-selector tunnel-selector-name [ all ]
缺省情况下,BGP EVPN、BGP VPNv4以及BGP VPNv6路由未应用隧道迭代器。
在BGP VPNv4地址族视图和BGP VPNv6地址族视图下不支持指定all参数。
(10) 退回BGP实例视图。
quit
(11) (可选)进入BGP IPv4单播地址族视图、BGP-VPN IPv4单播地址族视图、BGP IPv6单播地址族视图、BGP-VPN IPv6单播地址族视图或EVPN地址族视图。
¡ 进入BGP IPv4单播地址族视图。
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
¡ 进入BGP IPv6单播地址族视图。
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
¡ 进入BGP EVPN地址族视图。
address-family l2vpn evpn
(12) (可选)开启当前地址族的快速重路由功能。
pic
缺省情况下,快速重路由功能处于关闭状态。
在如图7-4所示的组网中,CE 1和CE 2单归接入MPLS骨干网中,PE 1和PE 2之间通过BGP协议交互CE 1和CE 2站点内的私网路由信息。两端PE之间存在多条公网隧道时(如图,PE 1和PE 2之间存在PE 1-P 1-PE 2与PE 1-P 2-PE 2两条路径),由于BGP路由只能迭代到一条隧道上,PE设备去往对端CE站点的私网流量在公网隧道中传输时只会选择一条公网隧道转发,在公网隧道发生故障时,私网流量只能通过端到端的路由收敛来完成路径的切换,可靠性较低。
配置本功能后,BGP路由将可以迭代到主备两条不同类型的隧道,并在主备隧道间形成路径的快速切换。主隧道可用时,匹配到BGP路由的流量从主隧道转发(如图中红色路径);主隧道发生故障时,匹配到BGP路由的流量可以快速切换到备隧道上转发(如图中绿色路径),以避免流量转发长时间中断。
图7-4 单归属CE实现主备隧道快速切换组网图
配置本功能后,为BGP路由迭代的主备两条隧道类型不同,且主备隧道均不能由多条隧道形成负载分担,仅为单条隧道。
配置本功能后,设备会根据select-seq load-balance-number命令配置的隧道选择顺序选择主备隧道的类型。例如,如果在隧道策略视图配置了select-seq sr-lsp cr-lsp load-balance-number命令,并且在BGP IPv4单播地址族视图下应用使用了该隧道策略的隧道迭代器,则BGP IPv4单播路由如果可以迭代到主备隧道,其中的主隧道为SRLSP隧道,备隧道为CRLSP隧道。
有关select-seq load-balance-number命令以及隧道策略的详细介绍,请参见“MPLS命令参考”中的“隧道策略”。
如果select-seq load-balance-number命令在配置时只指定了一种隧道类型,则BGP路由无法迭代到主备隧道。select-seq load-balance-number命令仅cr-lsp和sr-lsp参数对本命令生效,即BGP路由仅能将CRLSP和SRLSP两类隧道迭代为主备隧道。
select-seq load-balance-number命令中的load-balance-number number参数对本功能不生效。
如果为地址族应用隧道迭代器时,隧道迭代器应用的隧道策略未配置过select-seq load-balance-number命令,则按照select-seq load-balance-number命令的缺省优选顺序选择主备隧道的类型。即BGP路由迭代到的主隧道为CRLSP隧道,备隧道为SRLSP隧道。
在地址族视图下配置了nexthop recursive-lookup tunnel-backup命令后,该地址族中的BGP路由就只能迭代到主备隧道,不能迭代到负载分担隧道。
本功能不支持将BGP路由迭代到跨AS域的公网隧道,且无法为携带标签的BGP路由迭代主备隧道,所以不支持在Opion B、Option C跨域组网中配置本功能。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
(3) 配置BGP路由可以迭代到主备隧道。
nexthop recursive-lookup tunnel-backup [ evpn ]
缺省情况下,BGP路由不能迭代到主备隧道。
仅BGP-VPN IPv4单播地址族视图支持evpn参数。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv6单播地址族视图或BGP-VPN IPv6单播地址族视图。
¡ 请依次执行以下命令进入BGP IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
(3) 配置BGP路由可以迭代到主备隧道。
nexthop recursive-lookup tunnel-backup [ evpn ]
缺省情况下,BGP路由不能迭代到主备隧道。
仅BGP-VPN IPv6单播地址族视图支持evpn参数。
当用户需要对某台设备上的BGP进程进行调试或升级等维护操作时,可以使用BGP isolate功能或BGP shutdown功能,将该设备上的BGP进程从当前网络中移除。网络中的其他设备重新计算路由,不会再通过该设备转发流量,从而降低设备维护对网络的影响,提高网络的可靠性。
BGP isolate功能和BGP shutdown功能使得网络管理员在进行网络设备维护时,无需删除并重新进行对等体/对等体组相关配置,减少了网络维护的工作量。完成设备维护后,网络管理员可以关闭BGP isolate功能和BGP shutdown功能,以使该设备重新投入使用。
本功能可以将BGP进程从网络中隔离出来,具体工作机制如下:
(1) 开启BGP isolate功能的设备撤销发布给邻居的BGP路由(本设备直连路由除外),同时保留所有从邻居学习到的BGP路由。
(2) 远端邻居收到路由撤销消息后,重新进行路由优选并更新FIB表。在此期间,远端邻居仍然可以通过BGP isolate设备发布的BGP路由转发流量。
(3) 远端邻居删除所有BGP isolate设备发布的BGP路由并完成FIB表项更新后,除目的地为BGP isolate设备的流量外,其他流量不再经过BGP isolate设备。此时,BGP isolate设备完全从当前组网中隔离出来,可以对该设备上的BGP协议进行升级等处理。
(4) 对BGP isolate设备的维护结束后,关闭BGP isolate功能可让该设备重新加入网络。设备重新加入网络后,BGP路由的发布和学习机制如下:
¡ 设备重新向邻居发布路由。
¡ 设备隔离前保留了从邻居学习到的路由。如果设备隔离后没有对BGP协议进行重启等操作,则无需重新进行路由学习;否则,设备重新加入网络后需要重新进行路由学习。
设备进行GR或NSR期间,建议用户不要使用BGP isolate功能,否则无法保证执行操作后的结果与预期结果一致。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 配置BGP isolate功能,将设备的BGP协议从当前组网中隔离出来。
isolate enable
缺省情况下,未配置BGP协议隔离功能。
(4) 完成设备维护后,使设备的BGP重新加入网络。
undo isolate enable
本功能通过暂时断开与所有对等体/对等体组的BGP会话,来实现BGP进程的移除。完成设备维护后,通过取消本功能可以恢复与所有对等体/对等体组的BGP会话。
如果本设备和对等体/对等体组的会话已经建立,则配置本功能后,会断开本设备和对等体/对等体组的会话,并清除所有路由信息。
同时配置本功能和禁止与对等体/对等体组建立会话功能时,若任一功能禁止了与对等体/对等体组建立会话,则设备不能与相应的对等体/对等体组建立BGP会话。禁止与对等体/对等体组建立会话功能的详细介绍,请参见“5.8 禁止与对等体/对等体组建立会话”。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 配置BGP shutdown功能,禁止与所有对等体/对等体组建立会话。
shutdown process
缺省情况下,设备允许与所有BGP对等体/对等体组建立会话。
(4) 完成设备维护后,使设备的BGP重新加入网络。
undo shutdown process
在完成上述配置后,在任意视图下执行display命令可以显示配置后BGP的运行情况,通过查看显示信息验证配置的效果。
表7-2 提高BGP网络的可靠性配置显示(IPv4单播)
操作 |
命令 |
显示BGP NSR的运行状态 |
display bgp [ instance instance-name ] non-stop-routing status |
表7-3 提高BGP网络的可靠性配置显示(IPv6单播)
操作 |
命令 |
显示BGP NSR的运行状态 |
display bgp [ instance instance-name ] non-stop-routing status |
表7-4 提高BGP网络的可靠性配置显示(IPv4组播)
操作 |
命令 |
显示BGP NSR的运行状态 |
display bgp [ instance instance-name ] non-stop-routing status |
表7-5 提高BGP网络的可靠性配置显示(IPv6组播)
操作 |
命令 |
显示BGP NSR的运行状态 |
display bgp [ instance instance-name ] non-stop-routing status |
如图7-5所示,所有路由器均运行BGP协议,Router A和Router B之间建立EBGP连接,Router B和Router C之间建立IBGP连接。现要求实现即便Router B发生主备倒换,也不会影响Router A和Router C之间正在进行的数据传输。
图7-5 BGP GR配置组网图
(1) Router A的配置
# 配置各接口的IP地址(略)。
# 配置Router A与Router B的EBGP连接。
<RouterA> system-view
[RouterA] bgp 65008
[RouterA-bgp-default] router-id 1.1.1.1
[RouterA-bgp-default] peer 200.1.1.1 as-number 65009
# 使能BGP GR功能。
[RouterA-bgp-default] graceful-restart
# 将8.0.0.0/8网段路由通告到IPv4 BGP路由表中。
[RouterA-bgp-default] address-family ipv4
[RouterA-bgp-default-ipv4] network 8.0.0.0
# 使能与Router B交换BGP IPv4单播路由的能力。
[RouterA-bgp-default-ipv4] peer 200.1.1.1 enable
(2) Router B的配置
# 配置各接口的IP地址(略)。
# 配置Router B与Router A的EBGP连接。
<RouterB> system-view
[RouterB] bgp 65009
[RouterB-bgp-default] router-id 2.2.2.2
[RouterB-bgp-default] peer 200.1.1.2 as-number 65008
# 配置Router B与Router C的IBGP连接。
[RouterB-bgp-default] peer 9.1.1.2 as-number 65009
# 使能BGP GR功能。
[RouterB-bgp-default] graceful-restart
# 将200.1.1.0/24和9.1.1.0/24网段路由通告到IPv4 BGP路由表中。
[RouterB-bgp-default] address-family ipv4
[RouterB-bgp-default-ipv4] network 200.1.1.0 24
[RouterB-bgp-default-ipv4] network 9.1.1.0 24
# 使能与Router A、Router C交换BGP IPv4单播路由的能力。
[RouterB-bgp-default-ipv4] peer 200.1.1.2 enable
[RouterB-bgp-default-ipv4] peer 9.1.1.2 enable
(3) Router C的配置
# 配置各接口的IP地址(略)。
# 配置Router C与Router B的IBGP连接。
<RouterC> system-view
[RouterC] bgp 65009
[RouterC-bgp-default] router-id 3.3.3.3
[RouterC-bgp-default] peer 9.1.1.1 as-number 65009
# 使能BGP GR功能。
[RouterC-bgp-default] graceful-restart
# 使能与Router B交换BGP IPv4单播路由的能力。
[RouterC-bgp-default] address-family ipv4
[RouterC-bgp-default-ipv4] peer 9.1.1.1 enable
在Router A上ping Router C,同时在Router B上触发主备倒换,可以发现在整个倒换过程中Router A都可以ping通Router C。
· 在AS 200内使用OSPF作为IGP协议,实现AS内的互通。
· Router A与Router C之间建立两条IBGP连接。当Router A与Router C之间的两条路径均连通时,Router C与1.1.1.0/24之间的报文使用Router A<->Router B<->Router C这条路径转发;当Router A<->Router B<->Router C这条路径发生故障时,BFD能够快速检测并通告BGP协议,使得Router A<->Router D<->Router C这条路径能够迅速生效。
图7-6 配置BGP与BFD联动组网图
(1) 配置各接口的IP地址(略)
(2) 配置OSPF,保证Router A和Router C之间路由可达(略)
(3) Router A上的BGP配置
# 配置Router A和Router C建立两条IBGP连接。
<RouterA> system-view
[RouterA] bgp 200
[RouterA-bgp-default] peer 3.0.2.2 as-number 200
[RouterA-bgp-default] peer 2.0.2.2 as-number 200
[RouterA-bgp-default] address-family ipv4 unicast
[RouterA-bgp-default-ipv4] peer 3.0.2.2 enable
[RouterA-bgp-default-ipv4] peer 2.0.2.2 enable
[RouterA-bgp-default-ipv4] quit
# 配置当Router A与Router C之间的两条路径均连通时,Router C与1.1.1.0/24之间的报文使用Router A<->Router B<->Router C这条路径转发。(在Router A上对发布给对等体2.0.2.2的1.1.1.0/24路由配置较高的MED属性值)
¡ 定义编号为2000的IPv4基本ACL,允许路由1.1.1.0/24通过。
[RouterA] acl basic 2000
[RouterA-acl-ipv4-basic-2000] rule permit source 1.1.1.0 0.0.0.255
[RouterA-acl-ipv4-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。
[RouterA] route-policy apply_med_50 permit node 10
[RouterA-route-policy-apply_med_50-10] if-match ip address acl 2000
[RouterA-route-policy-apply_med_50-10] apply cost 50
[RouterA-route-policy-apply_med_50-10] quit
[RouterA] route-policy apply_med_100 permit node 10
[RouterA-route-policy-apply_med_100-10] if-match ip address acl 2000
[RouterA-route-policy-apply_med_100-10] apply cost 100
[RouterA-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。
[RouterA] bgp 200
[RouterA-bgp-default] address-family ipv4 unicast
[RouterA-bgp-default-ipv4] peer 3.0.2.2 route-policy apply_med_50 export
[RouterA-bgp-default-ipv4] peer 2.0.2.2 route-policy apply_med_100 export
[RouterA-bgp-default-ipv4] quit
# 配置当Router A<->Router B<->Router C这条路径发生故障时,BFD能够快速检测并通告BGP协议,使得Router A<->Router D<->Router C这条路径能够迅速生效。
[RouterA-bgp-default] peer 3.0.2.2 bfd
[RouterA-bgp-default] quit
(4) Router C上的BGP配置。
# 配置Router A和Router C建立两条IBGP连接。
<RouterC> system-view
[RouterC] bgp 200
[RouterC-bgp-default] peer 3.0.1.1 as-number 200
[RouterC-bgp-default] peer 2.0.1.1 as-number 200
[RouterC-bgp-default] address-family ipv4 unicast
[RouterC-bgp-default-ipv4] peer 3.0.1.1 enable
[RouterC-bgp-default-ipv4] peer 2.0.1.1 enable
[RouterC-bgp-default-ipv4] quit
# 配置当Router A<->Router B<->Router C这条路径发生故障时,BFD能够快速检测并通告BGP协议,使得Router A<->Router D<->Router C这条路径能够迅速生效。
[RouterC-bgp-default] peer 3.0.1.1 bfd
[RouterC-bgp-default] quit
[RouterC] quit
下面以Router C为例,Router A和Router C类似,不再赘述。
# 显示Router C的BFD信息。
<RouterC> display bfd session verbose
Total sessions: 1 Up sessions: 1 Init mode: Active
IPv4 session working in control packet mode:
Local discr: 513 Remote discr: 513
Source IP: 3.0.2.2 Destination IP: 3.0.1.1
Destination port: 4784 Session state: Up
Interface: N/A
Min Tx interval: 500ms Actual Tx Interval: 500ms
Min Rx interval: 500ms Detection time: 2500ms
Rx count: 135 Tx count: 135
Connect type: Indirect Up duration: 00:00:20
Hold time: 2457ms Auth mode: None
Detection mode: Async Slot: 0
Protocol: BGP
Version:1
Diag info: No Diagnostic
Hardware mode: Disable
以上显示信息表明:Router A和Router C之间已经建立了BFD连接,而且BFD协议运行正常。
# 在Router C上查看BGP邻居信息,可以看出Router A和Router C之间建立两条BGP连接,且均处于Established状态。
<RouterC> 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
* - Dynamically created peer
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
# 在Router C上查看1.1.1.0/24的路由信息,可以看出Router C通过Router A<->Router B<->Router C这条路径与1.1.1.0/24网段通信。
<RouterC> 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
FlushedAge: 12h24m47s
Cost: 50 Preference: 255
IpPre: N/A QosLocalID: N/A
Tag: 0 State: Active Adv
OrigTblID: 0x1 OrigVrf: default-vrf
TableID: 0x2 OrigAs: 0
NibID: 0x15000001 LastAs: 0
AttrID: 0x1
BkAttrID: 0xffffffff Neighbor: 3.0.1.1
Flags: 0x10060 OrigNextHop: 3.0.1.1
Label: NULL RealNextHop: 3.0.2.1
BkLabel: NULL BkNextHop: N/A
SRLabel: NULL Interface: Ten-GigabitEthernet3/1/1
BkSRLabel: NULL BkInterface: N/A
Tunnel ID: Invalid IPInterface: N/A
BkTunnel ID: Invalid BkIPInterface: N/A
InLabel: NULL ColorInterface: N/A
SIDIndex: NULL BkColorInterface: N/A
FtnIndex: 0x0 TunnelInterface: N/A
TrafficIndex: N/A BkTunnelInterface: N/A
Connector: N/A PathID: 0x0
UserID: 0x0 SRTunnelID: Invalid
SID Type: N/A NID: Invalid
FlushNID: Invalid BkNID: Invalid
BkFlushNID: Invalid StatFlags: 0x0
SID: N/A
BkSID: N/A
CommBlockLen: 0 Priority: Critical
MemberPort: N/A
# Router A和Router B之间的链路发生故障后,在Router C上查看1.1.1.0/24的路由信息,可以看出Router C通过Router A<->Router D<->Router C这条路径与1.1.1.0/24网段通信。
<RouterC> 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
FlushedAge: 12h26m45s
Cost: 100 Preference: 255
IpPre: N/A QosLocalID: N/A
Tag: 0 State: Active Adv
OrigTblID: 0x1 OrigVrf: default-vrf
TableID: 0x2 OrigAs: 0
NibID: 0x15000000 LastAs: 0
AttrID: 0x0
BkAttrID: 0xffffffff Neighbor: 2.0.1.1
Flags: 0x10060 OrigNextHop: 2.0.1.1
Label: NULL RealNextHop: 2.0.2.1
BkLabel: NULL BkNextHop: N/A
SRLabel: NULL Interface: Ten-GigabitEthernet3/1/2
BkSRLabel: NULL BkInterface: N/A
Tunnel ID: Invalid IPInterface: N/A
BkTunnel ID: Invalid BkIPInterface: N/A
InLabel: NULL ColorInterface: N/A
SIDIndex: NULL BkColorInterface: N/A
FtnIndex: 0x0 TunnelInterface: N/A
TrafficIndex: N/A BkTunnelInterface: N/A
Connector: N/A PathID: 0x0
UserID: 0x0 SRTunnelID: Invalid
SID Type: N/A NID: Invalid
FlushNID: Invalid BkNID: Invalid
BkFlushNID: Invalid StatFlags: 0x0
SID: N/A
BkSID: N/A
CommBlockLen: 0 Priority: Critical
MemberPort: N/A
如图7-7所示,Router A、Router B、Router C和Router D通过BGP协议实现网络互连。要求链路B正常时,Router A和Router D之间的流量通过链路B转发;链路B出现故障时,流量可以快速切换到链路A上。
图7-7 配置BGP快速重路由组网图
(1) 配置各接口的IP地址(略)
(2) 在AS 200内配置OSPF,发布接口地址所在网段的路由(包括Loopback接口),确保Router B、Router C和Router D之间路由可达(略)
(3) 配置BGP连接
# 配置Router A分别与Router B和Router C建立EBGP会话,并配置通过BGP发布路由1.1.1.1/32。
<RouterA> system-view
[RouterA] bgp 100
[RouterA-bgp-default] router-id 1.1.1.1
[RouterA-bgp-default] peer 10.1.1.2 as-number 200
[RouterA-bgp-default] peer 30.1.1.3 as-number 200
[RouterA-bgp-default] address-family ipv4 unicast
[RouterA-bgp-default-ipv4] peer 10.1.1.2 enable
[RouterA-bgp-default-ipv4] peer 30.1.1.3 enable
[RouterA-bgp-default-ipv4] network 1.1.1.1 32
# 配置Router B与Router A建立EBGP会话,与Router D建立IBGP会话。
<RouterB> system-view
[RouterB] bgp 200
[RouterB-bgp-default] router-id 2.2.2.2
[RouterB-bgp-default] peer 10.1.1.1 as-number 100
[RouterB-bgp-default] peer 4.4.4.4 as-number 200
[RouterB-bgp-default] peer 4.4.4.4 connect-interface loopback 0
[RouterB-bgp-default] address-family ipv4 unicast
[RouterB-bgp-default-ipv4] peer 10.1.1.1 enable
[RouterB-bgp-default-ipv4] peer 4.4.4.4 enable
[RouterB-bgp-default-ipv4] peer 4.4.4.4 next-hop-local
[RouterB-bgp-default-ipv4] quit
[RouterB-bgp-default] quit
# 配置Router C与Router A建立EBGP会话,与Router D建立IBGP会话。
<RouterC> system-view
[RouterC] bgp 200
[RouterC-bgp-default] router-id 3.3.3.3
[RouterC-bgp-default] peer 30.1.1.1 as-number 100
[RouterC-bgp-default] peer 4.4.4.4 as-number 200
[RouterC-bgp-default] peer 4.4.4.4 connect-interface loopback 0
[RouterC-bgp-default] address-family ipv4 unicast
[RouterC-bgp-default-ipv4] peer 30.1.1.1 enable
[RouterC-bgp-default-ipv4] peer 4.4.4.4 enable
[RouterC-bgp-default-ipv4] peer 4.4.4.4 next-hop-local
[RouterC-bgp-default-ipv4] quit
[RouterC-bgp-default] quit
# 配置Router D分别与Router B和Router C建立IBGP会话,并配置BGP发布路由4.4.4.4/32。
<RouterD> system-view
[RouterD] bgp 200
[RouterD-bgp-default] router-id 4.4.4.4
[RouterD-bgp-default] peer 2.2.2.2 as-number 200
[RouterD-bgp-default] peer 2.2.2.2 connect-interface loopback 0
[RouterD-bgp-default] peer 3.3.3.3 as-number 200
[RouterD-bgp-default] peer 3.3.3.3 connect-interface loopback 0
[RouterD-bgp-default] address-family ipv4 unicast
[RouterD-bgp-default-ipv4] peer 2.2.2.2 enable
[RouterD-bgp-default-ipv4] peer 3.3.3.3 enable
[RouterD-bgp-default-ipv4] network 4.4.4.4 32
(4) 修改路由的首选值,使得Router A和Router D之间的流量优先通过链路B转发
# 在Router A上配置从Router B接收到的路由的首选值为100。
[RouterA-bgp-default-ipv4] peer 10.1.1.2 preferred-value 100
[RouterA-bgp-default-ipv4] quit
[RouterA-bgp-default] quit
# 在Router D上配置从Router B接收到的路由的首选值为100。
[RouterD-bgp-default-ipv4] peer 2.2.2.2 preferred-value 100
[RouterD-bgp-default-ipv4] quit
[RouterD-bgp-default] quit
(5) 配置BGP快速重路由
# 配置Router A:配置通过Echo方式的BFD会话检测主路由的下一跳是否可达,并配置BFD echo报文的源IP地址为11.1.1.1;创建路由策略frr,为路由4.4.4.4/32指定备份下一跳的地址为30.1.1.3(对等体Router C的地址);在BGP IPv4单播地址族下应用该路由策略。
[RouterA] bfd echo-source-ip 11.1.1.1
[RouterA] ip prefix-list abc index 10 permit 4.4.4.4 32
[RouterA] route-policy frr permit node 10
[RouterA-route-policy] if-match ip address prefix-list abc
[RouterA-route-policy] apply fast-reroute backup-nexthop 30.1.1.3
[RouterA-route-policy] quit
[RouterA] bgp 100
[RouterA-bgp-default] primary-path-detect bfd echo
[RouterA-bgp-default] address-family ipv4 unicast
[RouterA-bgp-default-ipv4] fast-reroute route-policy frr
[RouterA-bgp-default-ipv4] quit
[RouterA-bgp-default] quit
# 配置Router D:配置通过Echo方式的BFD会话检测主路由的下一跳是否可达,并配置BFD echo报文的源IP地址为44.1.1.1;创建路由策略frr,为路由1.1.1.1/32指定备份下一跳的地址为3.3.3.3(对等体Router C的地址);在BGP IPv4单播地址族下应用该路由策略。
[RouterD] bfd echo-source-ip 44.1.1.1
[RouterD] ip prefix-list abc index 10 permit 1.1.1.1 32
[RouterD] route-policy frr permit node 10
[RouterD-route-policy] if-match ip address prefix-list abc
[RouterD-route-policy] apply fast-reroute backup-nexthop 3.3.3.3
[RouterD-route-policy] quit
[RouterD] bgp 200
[RouterD-bgp-default] primary-path-detect bfd echo
[RouterD-bgp-default] address-family ipv4 unicast
[RouterD-bgp-default-ipv4] fast-reroute route-policy frr
[RouterD-bgp-default-ipv4] quit
[RouterD-bgp-default] quit
# 在Router A上查看4.4.4.4/32路由,可以看到备份下一跳信息。
[RouterA] 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
FlushedAge: 13h26m47s
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
BkAttrID: 0x6 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
SRLabel: NULL Interface: Ten-GigabitEthernet3/1/1
BkSRLabel: NULL BkInterface: Ten-GigabitEthernet3/1/2
Tunnel ID: Invalid IPInterface: InLoopBack0
BkTunnel ID: Invalid BkIPInterface: N/A
InLabel: NULL ColorInterface: N/A
SIDIndex: NULL BkColorInterface: N/A
FtnIndex: 0x0 TunnelInterface: N/A
TrafficIndex: N/A BkTunnelInterface: N/A
Connector: N/A PathID: 0x0
UserID: 0x0 SRTunnelID: Invalid
SID Type: N/A NID: Invalid
FlushNID: Invalid BkNID: Invalid
BkFlushNID: Invalid StatFlags: 0x0
SID: N/A
BkSID: N/A
CommBlockLen: 0 Priority: Critical
MemberPort: N/A
# 在Router D上查看1.1.1.1/32路由,可以看到备份下一跳信息。
[RouterD] 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
FlushedAge: 13h28m49s
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
BkAttrID: 0x3 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
SRLabel: NULL Interface: Ten-GigabitEthernet3/1/1
BkSRLabel: NULL BkInterface: Ten-GigabitEthernet3/1/2
Tunnel ID: Invalid IPInterface: InLoopBack0
BkTunnel ID: Invalid BkIPInterface: N/A
InLabel: NULL ColorInterface: N/A
SIDIndex: NULL BkColorInterface: N/A
FtnIndex: 0x0 TunnelInterface: N/A
TrafficIndex: N/A BkTunnelInterface: N/A
Connector: N/A PathID: 0x0
UserID: 0x0 SRTunnelID: Invalid
SID Type: N/A NID: Invalid
FlushNID: Invalid BkNID: Invalid
BkFlushNID: Invalid StatFlags: 0x0
SID: N/A
BkSID: N/A
CommBlockLen: 0 Priority: Critical
MemberPort: N/A
· 在AS 200内使用OSPFv3作为IGP协议,实现AS内的互通。
· Router A与Router C之间建立两条IBGP连接。当Router A与Router C之间的两条路径均连通时,Router C与1200::0/64之间的报文使用Router A<->Router B<->Router C这条路径转发;当Router A<->Router B<->Router C这条路径发生故障时,BFD能够快速检测并通告IPv6 BGP协议,使得Router A<->Router D<->Router C这条路径能够迅速生效。
图7-8 IPv6 BGP与BFD联动配置组网图
(1) 配置各接口的IPv6地址(略)
(2) 配置OSPFv3,保证Router A和Router C之间路由可达(略)
(3) Router A上的IPv6 BGP配置
# 配置Router A和Router C建立两条IBGP连接。
<RouterA> system-view
[RouterA] bgp 200
[RouterA-bgp-default] router-id 1.1.1.1
[RouterA-bgp-default] peer 2002::2 as-number 200
[RouterA-bgp-default] peer 3002::2 as-number 200
[RouterA-bgp-default] address-family ipv6
[RouterA-bgp-default-ipv6] peer 2002::2 enable
[RouterA-bgp-default-ipv6] peer 3002::2 enable
[RouterA-bgp-default-ipv6] quit
# 配置当Router A与Router C之间的两条路径均连通时,Router C与1200::0/64之间的报文使用Router A<->Router B<->Router C这条路径转发。(在Router A上对发布给对等体2002::2的1200::0/64路由配置较高的MED属性值)
¡ 定义编号为2000的IPv6基本ACL,允许路由1200::0/64通过。
[RouterA] acl ipv6 basic 2000
[RouterA-acl-ipv6-basic-2000] rule permit source 1200:: 64
[RouterA-acl-ipv6-basic-2000] quit
¡ 定义两个Route-policy,一个名为apply_med_50,为路由1200::0/64设置MED属性值为50;另一个名为apply_med_100,为路由1200::0/64设置MED属性值为100。
[RouterA] route-policy apply_med_50 permit node 10
[RouterA-route-policy-apply_med_50-10] if-match ipv6 address acl 2000
[RouterA-route-policy-apply_med_50-10] apply cost 50
[RouterA-route-policy-apply_med_50-10] quit
[RouterA] route-policy apply_med_100 permit node 10
[RouterA-route-policy-apply_med_100-10] if-match ipv6 address acl 2000
[RouterA-route-policy-apply_med_100-10] apply cost 100
[RouterA-route-policy-apply_med_100-10] quit
¡ 对发布给对等体3002::2的路由应用名为apply_med_50的Route-policy,对发布给对等体2002::2的路由应用名为apply_med_100的Route-policy。
[RouterA] bgp 200
[RouterA-bgp-default] address-family ipv6 unicast
[RouterA-bgp-default-ipv6] peer 3002::2 route-policy apply_med_50 export
[RouterA-bgp-default-ipv6] peer 2002::2 route-policy apply_med_100 export
[RouterA-bgp-default-ipv6] quit
# 配置通过BFD检测Router A<->Router B<->Router C这条路径,当该路径出现故障时,BFD能够快速检测到并通告IPv6 BGP协议,使得Router A<->Router D<->Router C这条路径能够迅速生效。
[RouterA-bgp-default] peer 3002::2 bfd
[RouterA-bgp-default] quit
(4) Router C上的IPv6 BGP配置。
# 配置Router A和Router C建立两条IBGP连接。
<RouterC> system-view
[RouterC] bgp 200
[RouterC-bgp-default] router-id 3.3.3.3
[RouterC-bgp-default] peer 3001::1 as-number 200
[RouterC-bgp-default] peer 2001::1 as-number 200
[RouterC-bgp-default] address-family ipv6
[RouterC-bgp-default-ipv6] peer 3001::1 enable
[RouterC-bgp-default-ipv6] peer 2001::1 enable
[RouterC-bgp-default-ipv6] quit
# 配置通过BFD检测Router A<->Router B<->Router C这条路径,当该路径出现故障时,BFD能够快速检测到,并通告IPv6 BGP协议,使得Router A<->Router D<->Router C这条路径能够迅速生效。
[RouterC-bgp-default] peer 3001::1 bfd
[RouterC-bgp-default] quit
[RouterC] quit
下面以Router C为例,Router A与此类似,不再赘述。
# 显示Router C的BFD信息。可以看出,Router A和Router C之间已经建立了BFD会话,而且BFD协议运行正常。
<RouterC> display bfd session verbose
Total sessions: 1 Up sessions: 1 Init mode: Active
IPv6 session working in control packet mode:
Local discr: 513 Remote discr: 513
Source IP: 3002::2 Destination IP: 3001::1
Destination port: 4784 Session state: Up
Interface: N/A
Min Tx interval: 500ms Actual Tx interval: 500ms
Min Rx interval: 500ms Detection time: 2500ms
Rx count: 13 Tx count: 14
Connection type: Indirect Up duration: 00:00:05
Hold time: 2243ms Auth mode: None
Detection mode: Async Slot: 0
Protocol: BGP4+
Version: 1
Diag info: No Diagnostic
Hardware mode: Disable
# 在Router C上查看BGP邻居信息。可以看出,Router A和Router C之间建立两条BGP连接,且均处于Established状态。
<RouterC> display bgp peer ipv6
BGP local router ID: 3.3.3.3
Local AS number: 200
Total number of peers: 2 Peers in established state: 2
* - Dynamically created peer
Peer AS MsgRcvd MsgSent OutQ PrefRcv Up/Down State
2001::1 200 8 8 0 0 00:04:45 Established
3001::1 200 5 4 0 0 00:01:53 Established
# 在Router C上查看1200::0/64的路由信息,可以看出Router C通过Router A<->Router B<->Router C这条路径与1200::0/64网段通信。
<RouterC> display ipv6 routing-table 1200::0 64 verbose
Summary count : 1
Destination: 1200::/64
Protocol: BGP4+
Process ID: 0
SubProtID: 0x1 Age: 00h01m07s
FlushedAge: 14h22m43s
Cost: 50 Preference: 255
IpPre: N/A QosLocalID: N/A
Tag: 0 State: Active Adv
OrigTblID: 0x1 OrigVrf: default-vrf
TableID: 0xa OrigAs: 0
NibID: 0x25000001 LastAs: 0
AttrID: 0x1
BkAttrID: 0xffffffff Neighbor: 3001::1
Flags: 0x10060 OrigNextHop: 3001::1
Label: NULL RealNextHop: FE80::20C:29FF:FE4A:3873
BkLabel: NULL BkNextHop: N/A
SRLabel: NULL Interface: Ten-GigabitEthernet3/1/1
BkSRLabel: NULL BkInterface: N/A
Tunnel ID: Invalid IPInterface: N/A
BkTunnel ID: Invalid BkIPInterface: N/A
InLabel: NULL ColorInterface: N/A
SIDIndex: NULL BkColorInterface: N/A
FtnIndex: 0x0 TunnelInterface: N/A
TrafficIndex: N/A BkTunnelInterface: N/A
Connector: N/A PathID: 0x0
UserID: 0x0 SRTunnelID: Invalid
SID Type: N/A NID: Invalid
FlushNID: Invalid BkNID: Invalid
BkFlushNID: Invalid StatFlags: 0x0
SID: N/A
BkSID: N/A
CommBlockLen: 0 Priority: Critical
MemberPort: N/A
# Router A<->Router B<->Router C这条路径发生故障后,在Router C上查看1200::0/64的路由信息,可以看出Router C通过Router A<->Router D<->Router C这条路径转发报文。
<RouterC> display ipv6 routing-table 1200::0 64 verbose
Summary count : 1
Destination: 1200::/64
Protocol: BGP4+
Process ID: 0
SubProtID: 0x1 Age: 00h00m57s
FlushedAge: 14h26m44s
Cost: 100 Preference: 255
IpPre: N/A QosLocalID: N/A
Tag: 0 State: Active Adv
OrigTblID: 0x1 OrigVrf: default-vrf
TableID: 0xa OrigAs: 0
NibID: 0x25000000 LastAs: 0
AttrID: 0x0
BkAttrID: 0xffffffff Neighbor: 2001::1
Flags: 0x10060 OrigNextHop: 2001::1
Label: NULL RealNextHop: FE80::20C:29FF:FE40:715
BkLabel: NULL BkNextHop: N/A
SRLabel: NULL Interface: Ten-GigabitEthernet3/1/2
BkSRLabel: NULL BkInterface: N/A
Tunnel ID: Invalid IPInterface: N/A
BkTunnel ID: Invalid BkIPInterface: N/A
InLabel: NULL ColorInterface: N/A
SIDIndex: NULL BkColorInterface: N/A
FtnIndex: 0x0 TunnelInterface: N/A
TrafficIndex: N/A BkTunnelInterface: N/A
Connector: N/A PathID: 0x0
UserID: 0x0 SRTunnelID: Invalid
SID Type: N/A NID: Invalid
FlushNID: Invalid BkNID: Invalid
BkFlushNID: Invalid StatFlags: 0x0
SID: N/A
BkSID: N/A
CommBlockLen: 0 Priority: Critical
MemberPort: N/A
如图7-9所示,Router A、Router B、Router C和Router D通过BGP协议实现网络互连。要求链路B正常时,Router A和Router D之间的流量通过链路B转发;链路B出现故障时,流量可以快速切换到链路A上。
图7-9 配置BGP快速重路由
(1) 配置各接口的IP地址(略)
(2) 在AS 200内配置OSPFv3,发布接口地址所在网段的路由,确保Router B、Router C和Router D之间IPv6路由可达(略)
(3) 配置BGP连接
# 配置Router A分别与Router B和Router C建立EBGP会话,并配置通过BGP发布路由1::/64。
<RouterA> system-view
[RouterA] bgp 100
[RouterA] router-id 1.1.1.1
[RouterA-bgp-default] peer 3001::2 as-number 200
[RouterA-bgp-default] peer 2001::2 as-number 200
[RouterA-bgp-default] address-family ipv6 unicast
[RouterA-bgp-default-ipv6] peer 3001::2 enable
[RouterA-bgp-default-ipv6] peer 2001::2 enable
[RouterA-bgp-default-ipv6] network 1:: 64
[RouterA-bgp-default-ipv6] quit
[RouterA-bgp-default] quit
# 配置Router B与Router A建立EBGP会话,与Router D建立IBGP会话。
<RouterB> system-view
[RouterB] bgp 200
[RouterB] router-id 2.2.2.2
[RouterB-bgp-default] peer 3001::1 as-number 100
[RouterB-bgp-default] peer 3002::2 as-number 200
[RouterB-bgp-default] address-family ipv6 unicast
[RouterB-bgp-default-ipv6] peer 3001::1 enable
[RouterB-bgp-default-ipv6] peer 3002::2 enable
[RouterB-bgp-default-ipv6] peer 3002::2 next-hop-local
[RouterB-bgp-default-ipv6] quit
[RouterB-bgp-default] quit
# 配置Router C与Router A建立EBGP会话,与Router D建立IBGP会话。
<RouterC> system-view
[RouterC] bgp 200
[RouterC] router-id 3.3.3.3
[RouterC-bgp-default] peer 2001::1 as-number 100
[RouterC-bgp-default] peer 2002::2 as-number 200
[RouterC-bgp-default] address-family ipv6 unicast
[RouterC-bgp-default-ipv6] peer 2001::1 enable
[RouterC-bgp-default-ipv6] peer 2002::2 enable
[RouterC-bgp-default-ipv6] peer 2002::2 next-hop-local
[RouterC-bgp-default-ipv6] quit
[RouterC-bgp-default] quit
# 配置Router D分别与Router B和Router C建立IBGP会话,并配置BGP发布路由4::/64。
<RouterD> system-view
[RouterD] bgp 200
[RouterD-bgp-default] peer 3002::1 as-number 200
[RouterD-bgp-default] peer 2002::1 as-number 200
[RouterD-bgp-default] address-family ipv6 unicast
[RouterD-bgp-default-ipv6] peer 3002::1 enable
[RouterD-bgp-default-ipv6] peer 2002::1 enable
[RouterD-bgp-default-ipv6] network 4:: 64
[RouterD-bgp-default-ipv6] quit
[RouterD-bgp-default] quit
(4) 修改路由的首选值,使得Router A和Router D之间的流量优先通过链路B转发
# 在Router A上配置从Router B接收到的路由的首选值为100。
[RouterA-bgp-default-ipv6] peer 3001::2 preferred-value 100
[RouterA-bgp-default-ipv6] quit
[RouterA-bgp-default] quit
# 在Router D上配置从Router B接收到的路由的首选值为100。
[RouterD-bgp-default-ipv6] peer 3002::1 preferred-value 100
[RouterD-bgp-default-ipv6] quit
[RouterD-bgp-default] quit
(5) 配置BGP快速重路由
# 配置Router A:创建路由策略frr,为路由4::/64指定备份下一跳的地址为2001::2(对等体Router C的地址);在BGP IPv6单播地址族下应用该路由策略。
[RouterA] ipv6 prefix-list abc index 10 permit 4:: 64
[RouterA] route-policy frr permit node 10
[RouterA-route-policy] if-match ipv6 address prefix-list abc
[RouterA-route-policy] apply ipv6 fast-reroute backup-nexthop 2001::2
[RouterA-route-policy] quit
[RouterA] bgp 100
[RouterA-bgp-default] address-family ipv6 unicast
[RouterA-bgp-default-ipv6] fast-reroute route-policy frr
[RouterA-bgp-default-ipv6] quit
[RouterA-bgp-default] quit
# 配置Router D:创建路由策略frr,为路由1::/64指定备份下一跳的地址为2002::1(对等体Router C的地址);在BGP IPv6单播地址族下应用该路由策略。
<RouterD> system-view
[RouterD] ipv6 prefix-list abc index 10 permit 1:: 64
[RouterD] route-policy frr permit node 10
[RouterD-route-policy] if-match ipv6 address prefix-list abc
[RouterD-route-policy] apply ipv6 fast-reroute backup-nexthop 2002::1
[RouterD-route-policy] quit
[RouterD] bgp 200
[RouterD-bgp-default] address-family ipv6 unicast
[RouterD-bgp-default-ipv6] fast-reroute route-policy frr
[RouterD-bgp-default-ipv6] quit
[RouterD-bgp-default] quit
# 在Router A上查看4::/64路由,可以看到备份下一跳信息。
[RouterA] display ipv6 routing-table 4:: 64 verbose
Summary count : 1
Destination: 4::/64
Protocol: BGP4+ Process ID: 0
SubProtID: 0x2 Age: 00h00m58s
FlushedAge: 13h22m44s
Cost: 0 Preference: 255
IpPre: N/A QosLocalID: N/A
Tag: 0 State: Active Adv
OrigTblID: 0x0 OrigVrf: default-vrf
TableID: 0xa OrigAs: 200
NibID: 0x25000003 LastAs: 200
AttrID: 0x3
BkAttrID: 0x4 Neighbor: 3001::2
Flags: 0x10060 OrigNextHop: 3001::2
Label: NULL RealNextHop: 3001::2
BkLabel: NULL BkNextHop: 2001::2
SRLabel: NULL Interface: Ten-GigabitEthernet3/1/1
BkSRLabel: NULL BkInterface: Ten-GigabitEthernet3/1/2
Tunnel ID: Invalid IPInterface: N/A
BkTunnel ID: Invalid BkIPInterface: N/A
InLabel: NULL ColorInterface: N/A
SIDIndex: NULL BkColorInterface: N/A
FtnIndex: 0x0 TunnelInterface: N/A
TrafficIndex: N/A BkTunnelInterface: N/A
Connector: N/A PathID: 0x0
UserID: 0x0 SRTunnelID: Invalid
SID Type: N/A NID: Invalid
FlushNID: Invalid BkNID: Invalid
BkFlushNID: Invalid StatFlags: 0x0
SID: N/A
BkSID: N/A
CommBlockLen: 0 Priority: Critical
MemberPort: N/A
# 在Router D上查看1::/64路由,可以看到备份下一跳信息。
[RouterD] display ipv6 routing-table 1:: 64 verbose
Summary count : 1
Destination: 1::/64
Protocol: BGP4+ Process ID: 0
SubProtID: 0x1 Age: 00h03m24s
FlushedAge: 13h26m33s
Cost: 0 Preference: 255
IpPre: N/A QosLocalID: N/A
Tag: 0 State: Active Adv
OrigTblID: 0x0 OrigVrf: default-vrf
TableID: 0xa OrigAs: 100
NibID: 0x25000003 LastAs: 100
AttrID: 0x4
BkAttrID: 0x5 Neighbor: 3002::1
Flags: 0x10060 OrigNextHop: 3002::1
Label: NULL RealNextHop: 3002::1
BkLabel: NULL BkNextHop: 2002::1
SRLabel: NULL Interface: Ten-GigabitEthernet3/1/1
BkSRLabel: NULL BkInterface: Ten-GigabitEthernet3/1/2
Tunnel ID: Invalid IPInterface: N/A
BkTunnel ID: Invalid BkIPInterface: N/A
InLabel: NULL ColorInterface: N/A
SIDIndex: NULL BkColorInterface: N/A
FtnIndex: 0x0 TunnelInterface: N/A
TrafficIndex: N/A BkTunnelInterface: N/A
Connector: N/A PathID: 0x0
UserID: 0x0 SRTunnelID: Invalid
SID Type: N/A NID: Invalid
FlushNID: Invalid BkNID: Invalid
BkFlushNID: Invalid StatFlags: 0x0
SID: N/A
BkSID: N/A
CommBlockLen: 0 Priority: Critical
MemberPort: N/A
BGP扩展功能配置任务如下:
· 配置BGP LS
¡ (可选)配置BGP LS路由反射功能
¡ (可选)配置BGP LS信息的AS号和Router ID
¡ (可选)提高邻居路由参与优选时的优先级
¡ (可选)手工软复位BGP LS或BGP-VPN LS地址族下的BGP会话
· 配置6PE
¡ (可选)配置6PE Add-Path相关功能
¡ (可选)控制6PE的路径选择
¡ (可选)控制6PE路由的发布与接收
¡ (可选)调整和优化6PE
¡ (可选)配置6PE路由反射功能
¡ (可选)复位BGP 6PE连接
BGP策略计费功能利用BGP丰富的路由属性(如下一跳、团体属性、AS_PATH等),对IP流量进行分类,为同一类的流量分配相同的流量索引值,进而基于流量索引值对该类流量进行统计。
BGP策略计费对IP流量的分类统计方式有如下两种:
· 基于源IP地址:采用该方式时,设备根据报文的源IP地址查找源IP地址对应的路由,获取路由的流量索引值,根据该流量索引值判断报文所属的流量,并进行统计。该方式用来对特定源发送的流量进行统计。
· 基于目的IP地址:采用该方式时,设备根据报文的目的IP地址查找对应的路由,获取路由的流量索引值,根据该流量索引值判断报文所属的流量,并进行统计。该方式用来对发往特定目的的流量进行统计。
本功能与快速转发功能互斥:
· 采用基于源IP地址的方式时,所有流量都不能进行快速转发。
· 采用基于目的IP地址的方式时,如果为路由设置了流量索引值,则匹配该路由的流量不能进行快速转发。
本功能仅在下表所列单板上配置生效。
表8-1 单板信息一览表
单板类型 |
单板丝印 |
CEPC单板 |
CEPC-XP4LX、CEPC-XP24LX、CEPC-XP48RX、CEPC-CP4RX、CEPC-CP4RXA、CEPC-CP4RX-L、CEPC-CQ8L、CEPC-CQ8LA、CEPC-CQ8L1A、CEPC-CQ8L3A、CEPC-CQ16L1 |
CSPEX单板 |
CSPEX-1304X、CSPEX-1404X、CSPEX-1502X、CSPEX-1504X、CSPEX-1504XA、CSPEX-1602X、CSPEX-1602XA、CSPEX-1804X、CSPEX-1512X、CSPEX-1612X、CSPEX-1812X、CSPEX-1502XA、CSPEX-1802X、CSPEX-1802XA、CSPEX-1812X-E、CSPEX-2304X-G、CSPEX-2612XA、CSPEX-2612X3A |
SPE单板 |
RX-SPE200、RX-SPE200-E |
设备上同时配置BGP策略计费功能和QPPB功能时,若分别指定source和destination,以BGP策略计费功能配置的IP流量分类统计规则为准。
在下表所列单板的多个接口上使能出方向的BGP策略计费功能时,接口上的配置必须保持一致,仅支持配置同时基于源IP地址对IP流量进行分类统计或同时基于目的IP地址对IP流量进行分类统计,不支持配置部分接口基于源IP地址对IP流量进行分类统计,部分接口基于目的IP地址对IP流量进行分类统计。
单板类型 |
单板丝印 |
CEPC单板 |
CEPC-XP4LX、CEPC-XP24LX、CEPC-XP48RX、CEPC-CP4RX、CEPC-CP4RXA、CEPC-CP4RX-L |
CSPEX单板 |
CSPEX-1304X、CSPEX-1404X、CSPEX-1502X、CSPEX-1504X、CSPEX-1504XA、CSPEX-1602X、CSPEX-1602XA、CSPEX-1804X、CSPEX-1512X、CSPEX-1612X、CSPEX-1812X |
SPE单板 |
RX-SPE200 |
(1) 进入系统视图。
system-view
(2) 设置流量索引值。
a. 配置路由策略,在路由策略中通过apply traffic-index命令为满足过滤条件的路由设置流量索引值。apply traffic-index命令的详细介绍请参见“三层技术-IP路由命令参考”中的“路由策略”。
b. 配置BGP路由引用路由策略,使得BGP路由的流量索引值为路由策略中设置的值。执行network、import-route、aggregate、peer route-policy、peer default-route-advertise命令时,可以指定BGP路由引用的路由策略。
(3) 进入接口视图。
interface interface-type interface-number
(4) 在接口上开启BGP策略计费功能。
bgp-policy accounting { input | output } * [ source ]
缺省情况下,接口上的BGP策略计费功能处于关闭状态。
指定source参数时,表示基于源IP地址对IP流量进行分类统计。如果未指定本参数,则表示基于目的IP地址对IP流量进行分类统计。
BGP协议只能记录BGP会话和BGP路由的当前状态,无法直接收集到会话状态变化和路由更新的过程,通过配置BMP(BGP Monitoring Protocol,BGP监控协议)特性,监控服务器可以对网络中设备上BGP会话的运行状态进行实时监控,包括对等体关系的建立与解除、路由信息等,以方便网络管理员更加细致地了解BGP运行状况。
· BMP使用TCP作为其传输层协议,可靠性高。
· BMP不是路由协议,只是BGP路由协议的一个扩展功能,工作机制简单,目的明确(收集特定的信息)。
· BMP所有的配置均在作为客户端的设备上完成,部署难度低。
· BMP的协议报文仅需由客户端向监控端单向发送,客户端不需要从监控端获取任何协议报文,对现有网络影响小。
BMP中的角色分为三种:
· 客户端:配置BMP功能的设备,通过在客户端上配置监控服务器的地址和监听端口号来建立与监控服务器的TCP连接。一个客户端可以连接多个监控服务器。
· 监控端:监控服务器。
· 监控对等体:与客户端建立BGP会话的对等体。
如图8-1所示,Device A、Device B和Device C两两之间建立BGP会话,Device B上配置BMP功能对其BGP运行状态以及路由变化进行监控。在此组网中,服务器设备为监控端,Device B为客户端,与Device B建立BGP会话的Device A和Device C为监控对等体。
图8-1 BMP中的角色
BMP定义了以下消息类型:
· Initiation消息:TCP连接(BMP会话)建立以后发送的第一个消息,用于向监控服务器告知客户端设备的软件版本、制造商等信息。
· Termination消息:用于告知监控服务器TCP连接(BMP会话)断开的原因,客户端发出Termination消息后不再通过此连接向监控服务器发送任何消息,并主动断开此TCP连接(BMP会话)。
· Peer Up Notification消息:用于向监控服务器发送客户端与监控对等体间的BGP会话信息,包含每个BGP会话的Open报文中交换的信息和TCP连接信息。BMP的TCP连接建立后,BMP会为客户端与监控对等体间每一个处于Established状态的BGP会话发送一次Peer Up Notification消息。
· Peer Down Notification消息:当客户端与监控对等体间的某个BGP会话由Established状态变为其他状态时,使用Peer Down Notification消息告知监控服务器BGP会话断开以及断开的原因。
· Stats Reports消息:用于向监控服务器发送客户端运行BGP协议时的统计信息,如由于AS_PATH属性重复而被丢弃的路由数量、从领居收到的路由数量、收到的重复Up消息的数量等。
· Route Monitoring消息:用于向监控服务器发送客户端与监控对等体交互的BGP路由信息,包括客户端上初始的BGP路由信息以及后续更新或撤销的路由信息。
监控端与客户端之间的TCP连接(BMP会话)成功建立后:
(1) 客户端首先向监控端发送Initiation消息,通告本机信息。
(2) 客户端向监控端发送Peer Up Notification消息和Route Monitoring消息,通告初始监控对等体状态与路由信息。
(3) 经过步骤(1)和(2)完成初始化后开始监控,客户端根据BGP会话状态的变化和路由的更新按需持续地向监控端发送Peer Up Notification消息、Peer Down Notification消息、Route Monitoring消息和Stats Reports消息。
(4) 当监控需要结束时,客户端向监控端发送Termination消息,并主动断开TCP连接(BMP会话)。
部署BMP功能时,需要在作为监控客户端的设备上完成以下配置:
(2) 配置监控对等体
(3) 配置向监控服务器发送路由信息
(4) 配置向监控服务器发送统计信息
(1) 进入系统视图。
system-view
(2) 创建BGP监控服务器,并进入BMP Server视图。
bmp server server-number
(3) 配置监控服务器的IP地址和端口号。
server address { ipv4-address | ipv6-address } port port-number
缺省情况下,未配置监控服务器的连接地址和端口号。
(4) (可选)配置监控服务器所属的VPN实例。
server vpn-instance vpn-instance-name
缺省情况下,未指定监控服务其所属的VPN实例,监控服务器位于公网中。
(5) (可选)配置本地设备与监控服务器之间TCP连接的源接口。
server connect-interface interface-type interface-number
缺省情况下,BGP根据监控服务器的地址类型,选择到达监控服务器的最佳路由出接口的主IPv4地址或IPv6地址建立TCP连接。
在同一个BMP Server视图下,当源接口所关联的VPN与server vpn-instance命令指定的VPN不一致时,本命令不生效。
(6) (可选)配置本地设备与监控服务器之间TCP连接的源地址。
server source-address { ipv4-address | ipv6-address }
缺省情况下,BGP根据监控服务器的地址类型,选择到达监控服务器的最佳路由出接口的主IPv4地址或IPv6地址建立TCP连接。
在同一个BMP Server视图下,同时配置本命令和server connect-interface命令时,以本命令的配置为准。
(7) (可选)配置本地设备与监控服务器建立TCP连接时使用的认证方式和认证密钥。
server password { keychain keychain-name | md5 { cipher | simple } string }
缺省情况下,本地设备与监控服务器建立TCP连接时不进行认证。
可以通过如下三种方式指定监控对等体:
· 通过peer bmp server命令指定对特定对等体/对等体组进行监控。
· 通过bmp server monitor current-instance命令指定对BGP实例下所有对等体进行监控。
· 通过bmp server monitor all-vpn-instance命令指定对所有BGP-VPN实例下的全部对等体进行监控。
以上三种方式可以同时使用,BGP为对等体/对等体组选择监控服务器的优先级顺序由高低到依次为:
(1) BGP实例视图/BGP-VPN实例视图下peer bmp server命令配置的BMP监控服务器;
(2) BGP实例视图/BGP-VPN实例视图下bmp server monitor current-instance命令配置的BMP监控服务器;
(3) BGP实例视图bmp server monitor all-vpn-instance命令配置的BMP监控服务器(仅对BGP-VPN实例中的对等体生效)。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN 实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN 实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置BMP Server监控对等体/对等体组。请至少选择其中一项进行配置。
¡ 配置BMP Server监控指定对等体/对等体组。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } bmp server server-number-list
缺省情况下,未配置BMP Server监控对等体/对等体组。
¡ 允许指定BMP Server监控当前实例中所有BGP对等体的运行状态。
bmp server server-number monitor current-instance
缺省情况下,禁止BMP Server监控当前实例中任何BGP对等体的运行状态。
¡ 允许指定BMP Server监控所有BGP-VPN实例中所有BGP对等体的运行状态。
bmp server server-number monitor all-vpn-instance
缺省情况下,禁止BMP Server监控所有BGP-VPN实例中所有BGP对等体的运行状态。
BGP-VPN实例下不支持本命令。
向监控服务器发送路由信息时,可以通过多种方式指定发送给监控服务器的路由类型。对于本地设备与每个监控对等体/对等体组交换的路由信息,BGP选择发送路由类型的优先级顺序由高低到依次为:
(1) BGP实例视图/BGP-VPN实例视图下peer route-mode命令配置的发送路由类型;
(2) BGP实例视图/BGP-VPN实例视图下bmp server monitor current-instance route-mode命令配置的发送路由类型;
(3) BGP实例视图下bmp server monitor all-vpn-instance route-mode命令配置的发送路由类型(仅对BGP-VPN实例中的对等体生效);
(4) BMP Server视图下route-mode adj-rib-in/route-mode adj-rib-out命令配置的发送路由类型。
对于本地设备的BGP路由信息,可以通过route-mode loc-rib命令向监控服务器发送BGP优选后的最优路由信息。
(1) 进入系统视图。
system-view
(2) 进入BMP Server视图。
bmp server server-number
(3) 全局配置发送给监控服务器的路由信息,请至少选择其中一项进行配置。
¡ 配置将本地设备发送给所有监控对等体/对等体组的路由信息发送给监控服务器。
route-mode adj-rib-out [ pre-policy | post-policy | both ]
缺省情况下,不会将本地设备发送给所有监控对等体/对等体组的路由信息发送给监控服务器。
¡ 配置将本地设备从所有监控对等体/对等体组接收的路由信息发送给监控服务器
route-mode adj-rib-in [ pre-policy | post-policy | both ]
缺省情况下,本地设备将从所有监控对等体/对等体组接收的路由策略过滤前的路由信息发送给监控服务器。
¡ 配置向监控服务器发送BGP优选后的路由信息。
route-mode loc-rib
缺省情况下,不向监控服务器发送BGP优选后的最优路由信息。
本功能配置后会先向监控服务器发送一次BGP所有的路由,之后路由更新时,仅向监控服务器发送BGP优选后的最优更新路由信息。
(4) 退回系统视图。
quit
(5) 进入BGP实例视图或BGP-VPN 实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN 实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(6) 配置将本地设备与指定监控对等体/对等体组之间交换的路由信息发送给监控服务器。请至少选择其中一项进行配置。
¡ 配置将本地设备与指定监控对等体/对等体组之间交换的路由信息发送给监控服务器。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } route-mode { adj-rib-in { pre-policy | post-policy | both } | adj-rib-out { pre-policy | post-policy | both } } *
¡ 配置将当前实例下本地设备与监控对等体/对等体组之间交换的路由信息发送给监控服务器。
bmp server server-number monitor current-instance route-mode { adj-rib-in { pre-policy | post-policy | both } | adj-rib-out { pre-policy | post-policy | both } } *
¡ 配置将所有BGP-VPN实例下本地设备与所有监控对等体/对等体组之间交换的路由信息发送给监控服务器。
bmp server server-number monitor all-vpn-instance route-mode { adj-rib-in { pre-policy | post-policy | both } | adj-rib-out { pre-policy | post-policy | both } } *
BGP-VPN实例下不支持本命令。
缺省情况下,未配置将监控对等体/对等体组之间交换的路由信息发送给监控服务器,此时是否发送路由信息受BMP Server视图下的route-mode adj-rib-in和route-mode adj-rib-out命令控制。
(7) (可选)配置将本地设备的路由轨迹信息发送给监控服务器。
bmp-route-trace { ip-prefix-list ipv4-prefix-list-name | ipv6-prefix-list ipv6-prefix-list-name } [ rd-list rd-list-number ]
缺省情况下,本地设备不发送路由轨迹信息给监控服务器。
本功能仅支持在BGP实例视图下配置。
配置本功能后,BMP客户端向监控服务器发送Peer Up Notification/Peer Down Notification消息时将携带Adj-RIB-In/Adj-RIB-Out标记以及pre-policy/post-policy标记。这些模式标记的含义为:
· Adj-RIB-In:表示客户端将从监控对等体接收的路由信息发送给监控服务器。
· Adj-RIB-Out:表示客户端将发往监控对等体的路由信息发送给监控服务器。
· pre-policy:表示客户端将路由策略过滤前的路由信息发送给监控服务器。
· post-policy:表示客户端将路由策略过滤后的路由信息发送给监控服务器。
配置本功能后,缺省情况下,BMP客户端向监控服务器发送从监控对等体接收的路由策略过滤前的路由信息。此时,Peer Up Notification/Peer Up Notification消息携带的标记为Adj-RIB-In和pre-policy。此时:
· 如果通过route-mode adj-rib-in、route-mode adj-rib-out或者peer route-mode命令新增了发布路由信息给监控服务器的模式,则会触发BMP客户端向监控服务器发送携带新的模式标记的Peer Up Notification消息。
· 如果通过route-mode adj-rib-in、route-mode adj-rib-out或者peer route-mode命令删除了发布路由信息给监控服务器的模式,则会触发BMP客户端向监控服务器发送携带新的模式标记的Peer Down Notification消息。
例如,执行了route-mode adj-rib-out pre-policy命令后,再执行route-mode adj-rib-out post-policy命令,此时设备发送路由策略过滤后的路由信息给监控服务器。上述过程视为删除了pre-policy模式,并新增了post-policy模式,既会触发BMP客户端向监控服务器发送携带新的模式标记的Peer Up Notification消息,又会触发发送携带新的模式标记的Peer Down Notification消息。
(1) 进入系统视图。
system-view
(2) 进入BMP Server视图。
bmp server server-number
(3) 配置BMP客户端向监控服务器发送消息时携带模式标记,请至少选择一项进行配置。
¡ 配置BMP客户端向监控服务器发送Peer Up Notification消息时携带模式标记。
pu-monitor-mode enable
¡ 配置BMP客户端向监控服务器发送Peer Down Notification消息时携带模式标记。
pd-monitor-mode enable
缺省情况下,BMP客户端向监控服务器发送Peer Up Notification/Peer Up Notification消息时不携带模式标记。
BMP对BGP运行过程中发生的各类事件进行统计,统计信息通过Stats Reports消息向监控服务器发送,本功能用于配置向监控服务器发送Stats Reports消息的周期。
(1) 进入系统视图。
system-view
(2) 创建BGP监控服务器,并进入BMP Server视图。
bmp server server-number
(3) 配置发送统计信息的周期。
statistics-interval value
缺省情况下,不向监控服务器发送统计信息。
BGP LS(Link State,链路状态)功能可以进行跨域和跨AS的LSDB(Link State DataBase,链路状态数据库)、TEDB(TE DataBase,流量工程数据库)信息发布。设备把收集到的链路状态信息发送给控制器,实现了业务与流量的端到端管理和调度,还可以满足需要链路状态信息的各种应用需求。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 指定LS对等体/对等体组的AS号。
peer { { ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } | group-name } as-number as-number
缺省情况下,未指定LS对等体/对等体组的AS号。
(4) 创建并进入BGP LS地址族视图或BGP-VPN LS地址族视图。
¡ 进入BGP LS地址族视图。
address-family link-state
¡ 进入BGP-VPN LS地址族视图。
address-family link-state vpn
(5) 使能本地路由器与对等体/对等体组交换LS信息的能力。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } enable
缺省情况下,本地路由器不能与对等体/对等体组交换LS信息。
(6) (可选)设置允许从指定对等体/对等体组收到的路由数量。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } route-limit prefix-number [ { alert-only | discard | reconnect reconnect-time } | percentage-value ] *
缺省情况下,不限制从对等体/对等体组接收的路由数量。
(7) (可选)配置BGP LS路由延迟优选时间。
route-select delay delay-value
缺省情况下,延迟时间为0秒,即路由优选不延迟。
(8) (可选)开启下一跳路由迭代变化延迟响应功能。
nexthop recursive-lookup [ non-critical-event ] delay [ delay-value ]
缺省情况下,下一跳路由迭代变化延迟响应功能处于关闭状态。
(9) (可选)为对等体/对等体组设置基于路由策略的路由发布过滤策略。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } route-policy route-policy-name export
(10) (可选)为对等体/对等体组设置基于路由策略的路由接收过滤策略。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } route-policy route-policy-name import
通常在同一个AS内,为了减少IBGP连接数,可以把几个BGP路由器划分为一个集群,将其中的一台路由器配置为路由反射器,其它路由器作为客户机,通过路由反射器在客户机之间反射路由。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP LS地址族视图或BGP-VPN LS地址族视图。
¡ 进入BGP LS地址族视图。
address-family link-state
¡ 进入BGP-VPN LS地址族视图。
address-family link-state vpn
(4) 配置BGP LS路由反射功能。
¡ 配置本机作为路由反射器,对等体/对等体组作为路由反射器的客户机。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } reflect-client
缺省情况下,未配置路由反射器及其客户机。
¡ (可选)允许路由反射器在客户机之间反射路由。
reflect between-clients
缺省情况下,允许路由反射器在客户机之间反射路由。
配置本命令后,可减少同一AS内IBGP的连接数。
¡ (可选)配置路由反射器的集群ID。
reflector cluster-id { cluster-id | ipv4-address }
缺省情况下,每个路由反射器都使用自己的Router ID作为集群ID。
在通过BGP协议收集LS信息时,可能出现以下情况:
· 在同一个AS域中的两台设备把相同的LS信息发送给控制器时,由于Router ID标识的不同,会被认为是不同的LS信息,无法合并进行路径计算。
· 在不同AS域中的两台设备在完成LS信息的收集后,控制器需要整体考虑两个AS域的网络拓扑情况进行流量调度,但此时LS信息中的AS号不同,无法合并进行路径计算。
通过本配置可以手工指定BGP LS信息中的AS号与Router ID,从而避免上述问题,使控制器进行路径计算时可以使用完整的拓扑信息。
在BGP LS地址族下配置本功能后,对BGP LS地址族和BGP-VPN LS地址族均生效。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP LS地址族视图。
address-family link-state
(4) 配置BGP LS信息的AS号和Router ID。
domain-distinguisher as-number:router-id
缺省情况下,使用本BGP进程的AS号和Router ID。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP LS地址族视图或BGP-VPN LS地址族视图。
¡ 进入BGP LS地址族视图。
address-family link-state
¡ 进入BGP-VPN LS地址族视图。
address-family link-state vpn
(4) 为指定对等体/对等体组设置高优先级,路由选路时优选从该对等体/对等体组学习到的路由。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } high-priority
缺省情况下,BGP不为指定对等体/对等体组设置高优先级,选路规则不发生变化。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图
bgp as-number [ instance instance-name ]
(3) 配置Route-refresh功能。请选择其中一项进行配置。
¡ 使能本地路由器与指定对等体/对等体组的BGP路由刷新功能。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } capability-advertise route-refresh
¡ 使能本地路由器与指定BGP对等体/对等体组的BGP路由刷新、多协议扩展和4字节AS号功能。
undo peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } capability-advertise conventional
缺省情况下,BGP路由刷新、多协议扩展和4字节AS号功能处于使能状态。
(4) 手工对BGP LS或BGP-VPN LS地址族下的BGP会话进行软复位。
a. 退回系统视图。
quit
b. 退回用户视图。
quit
c. 手工对BGP LS地址族下的BGP会话进行软复位。
refresh bgp [ instance instance-name ] { ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] | all | external | group group-name | internal } { export | import } link-state
d. 手工对BGP-VPN LS地址族下的BGP会话进行软复位。
refresh bgp [ instance instance-name ] { ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] | all | external | group group-name | internal } { export | import } link-state vpn
如图8-2所示,6PE(IPv6 Provider Edge,IPv6供应商边缘)是一种过渡技术,它采用MPLS(Multiprotocol Label Switching,多协议标签交换)技术实现通过IPv4骨干网连接隔离的IPv6用户网络。当ISP希望在自己原有的IPv4/MPLS骨干网的基础上,为用户网络提供IPv6流量转发能力时,可以采用6PE技术方便地达到该目的。
图8-2 6PE组网图
6PE的主要思想是:
· 6PE设备从CE(Customer Edge,用户网络边缘)设备接收到用户网络的IPv6路由信息后,为该路由信息分配标签,通过MP-BGP会话将带有标签的IPv6路由信息发布给对端的6PE设备。对端6PE设备将接收到的IPv6路由信息扩散到本地连接的用户网络。从而,实现IPv6用户网络之间的路由信息发布。
· 为了隐藏IPv6报文、使得IPv4骨干网中的设备能够转发IPv6用户网络的报文,在IPv4骨干网络中需要建立公网隧道。公网隧道可以是GRE隧道、MPLS LSP、MPLS TE隧道等。
· 6PE设备转发IPv6报文时,先为IPv6报文封装IPv6路由信息对应的标签(内层标签),再为其封装公网隧道对应的标签(外层标签)。骨干网中的设备根据外层标签转发报文,意识不到该报文为IPv6报文。对端6PE设备接收到报文后,删除内层和外层标签,将原始的IPv6报文转发到本地连接的用户网络。
MPLS、MPLS TE、CE设备、P(Provider,服务提供商网络)设备的详细介绍,请参见“MPLS配置指导”。GRE的详细介绍,请参见“三层技术-IP业务配置指导”中的“GRE”。
为了实现IPv6路由信息的交互,CE和6PE之间可以配置IPv6静态路由、运行IPv6 IGP协议或IPv6 BGP协议。
6PE组网环境中,需要进行如下配置:
· 在IPv4骨干网上建立公网隧道。具体配置请参见“三层技术-IP业务配置指导”中的“GRE”或“MPLS配置指导”。
· 在6PE设备上配置MPLS基本能力。具体配置请参见“MPLS配置指导”中的“MPLS基础”。
· 在6PE设备上配置BGP相关功能,以便通过BGP会话发布带有标签的IPv6路由信息。本文只介绍6PE设备上的BGP相关配置。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 指定6PE对等体/对等体组的AS号。
peer { group-name | ipv4-address [ mask-length ] } as-number as-number
缺省情况下,未指定6PE对等体/对等体组的AS号。
(4) 进入BGP IPv6单播地址族视图。
address-family ipv6 [ unicast ]
(5) 使能本地路由器与6PE对等体/对等体组交换IPv6单播路由信息的能力。
peer { group-name | ipv4-address [ mask-length ] } enable
缺省情况下,本地路由器不能与6PE对等体/对等体组交换IPv6单播路由信息。
(6) 使能与6PE对等体/对等体组交换带标签IPv6路由的能力。
peer { group-name | ipv4-address [ mask-length ] } label-route-capability
缺省情况下,不具有与6PE对等体/对等体组交换带标签IPv6路由的能力。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP IPv6单播地址族视图。
address-family ipv6 [ unicast ]
(4) 为6PE对等体/对等体组配置Add-Path功能。
peer { group-name | ipv4-address [ mask-length ] } additional-paths { receive | send } *
缺省情况下,没有为6PE对等体/对等体组配置Add-Path功能。
(5) 配置向6PE对等体/对等体组发送的Add-Path优选路由的最大条数。
peer { group-name | ipv4-address [ mask-length ] } advertise additional-paths best number
缺省情况下,不向6PE对等体/对等体组发送Add-Path优选路由。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP IPv6单播地址族视图。
address-family ipv6 [ unicast ]
(4) 配置向6PE对等体/对等体组发布团体属性。
peer { group-name | ipv4-address [ mask-length ] } advertise-community
缺省情况下,不向6PE对等体/对等体组发布团体属性。
(5) 配置向6PE对等体/对等体组发布扩展团体属性。
peer { group-name | ipv4-address [ mask-length ] } advertise-ext-community
缺省情况下,不向6PE对等体/对等体组发布扩展团体属性。
(6) 配置向6PE对等体/对等体组发布Large团体属性。
peer { group-name | ipv4-address [ mask-length ] } advertise-large-community
缺省情况下,不向6PE对等体/对等体组发布Large团体属性。
(7) 配置向指定6PE对等体/对等体组发送BGP更新消息时删除私有AS号或将私有AS号替换为本地AS号。
peer { group-name | ipv4-address [ mask-length ] } public-as-only [ { force | limited } [ replace ] [ include-peer-as ] ]
peer { group-name | ipv4-address [ mask-length ] } public-as-only [ force [ include-peer-as ] ] keep-local-as
缺省情况下,向6PE对等体/对等体组发送BGP更新消息时,不会删除或替换AS_PATH属性中的私有AS号,即可以同时携带公有AS号和私有AS号。
(8) 为从指定6PE对等体/对等体组接收的路由分配首选值。
peer { group-name | ipv4-address [ mask-length ] } preferred-value value
缺省情况下,从6PE对等体/对等体组接收的路由的首选值为0。
(9) 为指定6PE对等体/对等体组设置高优先级,路由选路时优选从该对等体/对等体组学习到的路由。
peer { group-name | ipv4-address [ mask-length ] } high-priority
缺省情况下,BGP不为指定对等体/对等体组设置高优先级,选路规则不发生变化。
(10) 为6PE对等体/对等体组配置链路带宽属性。
peer { group-name | ipv6-address [ prefix-length ] } bandwidth
缺省情况下,没有为6PE对等体/对等体组配置链路带宽属性。
(11) 为指定对等体/对等体组配置AIGP属性。
peer { group-name | ipv4-address [ mask-length ] } aigp
缺省情况下,没有为BGP对等体/对等体组配置AIGP属性。
(12) 配置将AIGP属性值拷贝到MED属性中发送给对等体/对等体组。
peer { group-name | ipv4-address [ mask-length ] } aigp send med
缺省情况下,AIGP属性值不会拷贝到MED属性中发送给对等体/对等体组。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP IPv6单播地址族视图。
address-family ipv6 [ unicast ]
(4) 配置向6PE对等体/对等体组发送缺省路由。
peer { group-name | ipv4-address [ mask-length ] } default-route-advertise [ route-policy route-policy-name ] [ conditional-policy route-policy-name ]
缺省情况下,不向6PE对等体/对等体组发送缺省路由。
(5) 配置路由过滤策略。
¡ 为6PE对等体/对等体组配置基于AS路径过滤列表的路由过滤策略。
peer { group-name | ipv4-address [ mask-length ] } as-path-acl { as-path-acl-number | as-path-acl-name } { export | import }
缺省情况下,没有为6PE对等体/对等体组配置基于AS路径过滤列表的路由接收过滤策略。
¡ 为6PE对等体/对等体组配置基于IPv6 ACL的过滤策略。
peer { group-name | ipv4-address [ mask-length ] } filter-policy { ipv6-acl-number | name ipv6-acl-name }{ export | import }
缺省情况下,没有为6PE对等体/对等体组配置基于IPv6 ACL的过滤策略。
¡ 为6PE对等体/对等体组配置基于IPv6地址前缀列表的路由过滤策略。
peer { group-name | ipv4-address [ mask-length ] } prefix-list ipv6-prefix-list-name { export | import }
缺省情况下,没有为6PE对等体/对等体组配置基于IPv6前缀列表的路由过滤策略。
¡ 为6PE对等体/对等体组设置基于路由策略的路由过滤策略。
peer { group-name | ipv4-address [ mask-length ] } route-policy route-policy-name { export | import }
缺省情况下,没有为6PE对等体/对等体组配置基于路由策略的路由过滤策略。
(6) 保存所有来自指定6PE对等体/对等体组的原始路由更新信息。
peer { group-name | ipv4-address [ mask-length ] } keep-all-routes
缺省情况下,不保存来自6PE对等体/对等体组的原始路由更新信息。
(7) 配置允许从6PE对等体/对等体组接收的路由的最大数量。
peer { group-name | ipv4-address [ mask-length ] } route-limit prefix-number [ { alert-only | discard | reconnect reconnect-time } | percentage-value ] *
缺省情况下,不限制从6PE对等体/对等体组接收的路由数量。
(8) 为BGP对等体/对等体组配置SoO属性。
peer { group-name | ipv4-address [ mask-length ] } soo site-of-origin
缺省情况下,没有为BGP对等体/对等体组配置SoO属性。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP IPv6单播地址族视图。
address-family ipv6 [ unicast ]
(4) 配置对于从6PE对等体/对等体组接收的路由,允许本地AS号在接收路由的AS_PATH属性中出现,并配置允许出现的次数。
peer { group-name | ipv4-address [ mask-length ] } allow-as-loop [ number ]
缺省情况下,不允许本地AS号在接收路由的AS_PATH属性中出现。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP IPv6单播地址族视图。
address-family ipv6 [ unicast ]
(4) 配置本机作为路由反射器,对等体/对等体组作为路由反射器的客户机
peer { group-name | ipv4-address [ mask-length ] } reflect-client
缺省情况下,未配置路由反射器及其客户机。
在用户视图下执行以下命令复位BGP 6PE连接。请选择其中一项进行配置。
· 软复位指定的BGP 6PE连接。
refresh bgp [ instance instance-name ] ipv4-address [ mask-length ] { export | import } ipv6 [ unicast ]
· 复位指定的BGP 6PE连接。
reset bgp [ instance instance-name ] ipv4-address [ mask-length ] ipv6 [ unicast ]
复位BGP会话时,会造成短暂的BGP会话中断。
在完成上述配置后,在任意视图下执行display命令可以显示配置后BGP的运行情况,通过查看显示信息验证配置的效果。
表8-3 BGP扩展功能配置显示(IPv4单播)
操作 |
命令 |
显示IPv4流量的BGP策略计费信息 |
display bgp-policy ip statistics { input | output } [ interface interface-type interface-number ] |
显示BGP监控服务器的信息 |
display bgp [ instance instance-name ] bmp server server-number |
显示指定BGP实例下指定BMP Server监控的BGP对等体信息 |
display bgp [ instance instance-name ] bmp server server-number monitor-peer all display bgp [ instance instance-name ] bmp server server-number monitor-peer [ vpn-instance vpn-instance-name ] ipv4 { ipv4-address | ipv6-address } |
显示BGP路由轨迹信息 |
display bgp [ instance instance-name ] route-trace { ipv4-address { mask-length | mask } | ipv6-address prefix-length } [ route-distinguisher route-distinguisher ] |
表8-4 BGP扩展功能配置显示(IPv6单播)
操作 |
命令 |
显示IPv6流量的BGP策略计费信息 |
display bgp-policy ipv6 statistics { input | output } [ interface interface-type interface-number ] |
显示BGP对等体或对等体组的状态和统计信息 |
display bgp [ instance instance-name ] peer ipv6 [ unicast ] [ ipv4-address mask-length | ipv4-address log-info | [ ipv4-address ] verbose ] |
显示BGP IPv6单播路由信息 |
display bgp [ instance instance-name ] routing-table ipv6 [ unicast ] peer ipv4-address { advertised-routes | received-routes } [ ipv6-address prefix-length | statistics ] |
显示BGP监控服务器的信息 |
display bgp [ instance instance-name ] bmp server server-number |
显示指定BGP实例下指定BMP Server监控的BGP对等体信息 |
display bgp [ instance instance-name ] bmp server server-number monitor-peer all display bgp [ instance instance-name ] bmp server server-number monitor-peer [ vpn-instance vpn-instance-name ] ipv6 { ipv4-address | ipv6-address } |
显示BGP IPv6单播路由的入标签信息 |
display bgp routing-table ipv6 unicast inlabel |
显示BGP IPv6单播路由的出标签信息 |
display bgp routing-table ipv6 unicast outlabel |
表8-5 BGP扩展功能配置显示(IPv4组播)
操作 |
命令 |
显示BGP监控服务器的信息 |
display bgp [ instance instance-name ] bmp server server-number |
表8-6 BGP扩展功能配置显示(LS地址族)
操作 |
命令 |
显示BGP LS对等体组的信息 |
display bgp [ instance instance-name ] group link-state [ vpn ] [ group-name group-name ] |
显示BGP LS地址族信息 |
display bgp [ instance instance-name ] link-state [ vpn [ route-distinguisher route-distinguisher ] ] ls-prefix [ advertise-info ] display bgp [ instance instance-name ] link-state [ vpn [ route-distinguisher route-distinguisher ] ] [ peer { ipv4-address | ipv6-address } { advertised | received } ] [ statistics ] [ type { node | link | ipv4-prefix | ipv6-prefix | te-policy | srv6-sid } ] display bgp [ instance instance-name ] link-state [ vpn [ route-distinguisher route-distinguisher ] ] [ ls-prefix [ advertise-info ] | peer { ipv4-address | ipv6-address } { advertised | received } [ statistics ] | statistics ] display bgp [ instance instance-name ] link-state [ color color-value end-point { ipv4 ipv4-address | ipv6 ipv6-address } ] |
显示BGP LS对等体或对等体组的信息 |
display bgp [ instance instance-name ] peer link-state [ vpn ] [ ipv4-address mask-length | ipv6-address prefix-length | { ipv4-address | ipv6-address | group-name group-name } log-info | [ ipv4-address | ipv6-address ] verbose ] |
显示BGP LS地址族的打包组信息 |
display bgp [ instance instance-name ] update-group [ vpn ] link-state [ ipv4-address | ipv6-address ] |
显示描述IPv4可达前缀的BGP LS路由的SR-MPLS前缀SID信息 |
display bgp [ instance instance-name ] link-state [ vpn [ route-distinguisher route-distinguisher ] ] [ peer { ipv4-address | ipv6-address } { advertised | received } ] ls-prefix prefix-sid |
显示描述SR-MPLS TE Policy/SRv6 TE Policy信息的BGP LS路由的SID列表信息 |
display bgp [ instance instance-name ] link-state [ peer { ipv4-address | ipv6-address } { received | advertised } ] ls-prefix segment-list |
显示描述LS节点信息的BGP LS路由的算法信息 |
display bgp [ instance instance-name ] link-state [ vpn [ route-distinguisher route-distinguisher ] ] [ peer { ipv4-address | ipv6-address } { received | advertised } ] ls-prefix sr-algorithm |
显示描述LS节点信息的BGP LS路由的灵活算法定义 |
display bgp [ instance instance-name ] link-state [ vpn [ route-distinguisher route-distinguisher ] ] [ peer { ipv4-address | ipv6-address } { received | advertised } ] ls-prefix flexible-algorithm-definition |
表8-7 BGP扩展功能配置显示(VPNv4地址族)
操作 |
命令 |
显示指定BGP实例下指定BMP Server监控的BGP对等体信息 |
display bgp [ instance instance-name ] bmp server server-number monitor-peer all display bgp [ instance instance-name ] server server-number monitor-peer vpnv4 { ipv4-address | ipv6-address } display bgp [ instance instance-name ] bmp server server-number monitor-peer vpn-instance vpn-instance-name vpnv4 ipv4-address |
表8-8 BGP扩展功能配置显示(VPNv6地址族)
操作 |
命令 |
显示指定BGP实例下指定BMP Server监控的BGP对等体信息 |
display bgp [ instance instance-name ] bmp server server-number monitor-peer all display bgp [ instance instance-name ] bmp server server-number monitor-peer vpnv6 { ipv4-address | ipv6-address } |
表8-9 BGP扩展功能配置显示(EVPN地址族)
操作 |
命令 |
显示指定BGP实例下指定BMP Server监控的BGP对等体信息 |
display bgp [ instance instance-name ] bmp server server-number monitor-peer all display bgp [ instance instance-name ] bmp server server-number monitor-peer l2vpn evpn { ipv4-address | ipv6-address } |
当BGP路由策略或协议发生变化后,如果需要通过复位BGP会话使新的配置生效,请在用户视图下进行下列配置。
复位BGP会话时,会造成短暂的BGP会话中断。
表8-10 复位BGP会话
操作 |
命令 |
复位LS地址族下的BGP会话 |
reset bgp [ instance instance-name ] { as-number | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] | all | external | group group-name | internal } link-state [ vpn ] |
在用户视图下,执行reset命令可以清除BGP相关统计信息。
表8-11 清除BGP信息
操作 |
命令 |
复位BMP server连接并清除相关统计信息 |
reset bgp [ instance instance-name ] bmp server { server-number | all } |
清除BMP监控服务器记录的报文统计信息 |
reset bgp [ instance instance-name ] bmp server server-number statistics |
清除BGP策略计费信息 |
reset bgp-policy { ip | ipv6 } statistics [ input | output ] [ interface interface-type interface-number ] |
· 所有路由器运行BGP协议,Router A与Router B建立IBGP连接,Router B分别与Router C和Router D建立IBGP连接。
· Router B作为路由反射器,Router A为Router B的客户机。
· Router A能够通过Router B学到Router C和Router D发布的LS信息。
图8-3 BGP LS配置组网图
(1) 配置各接口的IP地址,在Router C和Router D上配置OSPF
(2) 配置BGP连接
# 配置Router A。
<RouterA> system-view
[RouterA] bgp 100
[RouterA-bgp-default] peer 192.1.1.2 as-number 100
[RouterA-bgp-default] address-family link-state
[RouterA-bgp-default-ls] peer 192.1.1.2 enable
[RouterA-bgp-default-ls] quit
[RouterA-bgp-default] quit
# 配置Router B。
<RouterB> system-view
[RouterB] bgp 100
[RouterB-bgp-default] peer 192.1.1.1 as-number 100
[RouterB-bgp-default] peer 193.1.1.1 as-number 100
[RouterB-bgp-default] peer 194.1.1.1 as-number 100
[RouterB-bgp-default] address-family link-state
[RouterB-bgp-default-ls] peer 192.1.1.1 enable
[RouterB-bgp-default-ls] peer 193.1.1.1 enable
[RouterB-bgp-default-ls] peer 194.1.1.1 enable
[RouterB-bgp-default-ls] quit
[RouterB-bgp-default] quit
# 配置Router C。
<RouterC> system-view
[RouterC] bgp 100
[RouterC-bgp-default] peer 193.1.1.2 as-number 100
[RouterC-bgp-default] address-family link-state
[RouterC-bgp-default-ls] peer 193.1.1.2 enable
[RouterC-bgp-default-ls] quit
[RouterC-bgp-default] quit
[RouterC] ospf
[RouterC-ospf-1] distribute bgp-ls
[RouterC-ospf-1] area 0
[RouterC-ospf-1-area-0.0.0.0] network 0.0.0.0 0.0.0.0
[RouterC-ospf-1-area-0.0.0.0] quit
[RouterC-ospf-1] quit
# 配置Router D。
<RouterD> system-view
[RouterD] bgp 100
[RouterD-bgp-default] peer 194.1.1.2 as-number 100
[RouterD-bgp-default] address-family link-state
[RouterD-bgp-default-ls] peer 194.1.1.2 enable
[RouterD-bgp-default-ls] quit
[RouterD-bgp-default] quit
[RouterD] ospf
[RouterD-ospf-1] distribute bgp-ls
[RouterD-ospf-1] area 0
[RouterD-ospf-1-area-0.0.0.0] network 0.0.0.0 0.0.0.0
[RouterD-ospf-1-area-0.0.0.0] quit
[RouterD-ospf-1] quit
(3) 配置路由反射器
# 配置Router B。
[RouterB] bgp 100
[RouterB-bgp-default] address-family link-state
[RouterB-bgp-default-ls] peer 192.1.1.1 reflect-client
[RouterB-bgp-default-ls] quit
[RouterB-bgp-default] quit
# 查看Router A的LS信息。
[RouterA] display bgp link-state
Total number of routes: 4
BGP local router ID is 192.1.1.1
Status codes: * - valid, > - best, d - dampened, h - history,
s - suppressed, S - stale, i - internal, e - external
a - additional-path
Origin: i - IGP, e - EGP, ? - incomplete
Prefix codes: E link, V node, T4 IPv4 route, T6 IPv6 route, SD SRv6 SID desc
u/U unknown,
I Identifier, N local node, R remote node, L link, P prefix,
L1/L2 ISIS level-1/level-2, O OSPF, O3 OSPFv3,
D direct, S static, B BGP, SS SRv6 SID,
a area-ID, l link-ID, t topology-ID, s ISO-ID,
c confed-ID/ASN, b bgp-identifier, r router-ID,
i if-address, n peer-address, o OSPF Route-type, p IP-prefix
d designated router address/interface, ID Link Descriptor Identifer
i Network : [V][O][I0x0][N[c100][b193.1.1.1][a0.0.0.0][r193.1.1.1]]/376
NextHop : 193.1.1.1 LocPrf : 100
PrefVal : 0 OutLabel : NULL
MED :
Path/Ogn: i
i Network : [V][O][I0x0][N[c100][b194.1.1.1][a0.0.0.0][r194.1.1.1]]/376
NextHop : 194.1.1.1 LocPrf : 100
PrefVal : 0 OutLabel : NULL
MED :
Path/Ogn: i
i Network : [T4][O][I0x0][N[c100][b193.1.1.1][a0.0.0.0][r193.1.1.1]][P[o0x1][p193.1.1.0/24]]/480
NextHop : 193.1.1.1 LocPrf : 100
PrefVal : 0 OutLabel : NULL
MED :
Path/Ogn: i
i Network : [T4][O][I0x0][N[c100][b194.1.1.1][a0.0.0.0][r194.1.1.1]][P[o0x1][p194.1.1.0/24]]/480
NextHop : 194.1.1.1 LocPrf : 100
PrefVal : 0 OutLabel : NULL
MED :
Path/Ogn: i
可以看出,Router A从Router C和Router D 学到了LS信息。
通过配置6PE实现利用MPLS技术跨越运营商的IPv4网络连接隔离的两个IPv6用户网络。其中:
· 运营商网络内部采用OSPF作为IGP路由协议。
· PE 1和PE 2为运营商网络的边缘设备,PE 1和PE 2之间建立IPv4 IBGP连接。
· CE 1和CE 2为IPv6用户网络的边缘设备,用户网络通过该设备接入运营商网络。
· CE与PE之间配置IPv6静态路由,以指导IPv6报文的转发。
图8-4 6PE配置组网图
(1) 配置各接口的IPv6地址及IPv4地址(略)
(2) 配置PE 1
# 全局使能LDP能力,并配置LSP触发策略。
<PE1> system-view
[PE1] mpls lsr-id 2.2.2.2
[PE1] mpls ldp
[PE1-ldp] lsp-trigger all
[PE1-ldp] quit
# 在接口Ten-GigabitEthernet3/1/2上使能MPLS和LDP能力。
[PE1] interface ten-gigabitethernet 3/1/2
[PE1-Ten-GigabitEthernet3/1/2] mpls enable
[PE1-Ten-GigabitEthernet3/1/2] mpls ldp enable
[PE1-Ten-GigabitEthernet3/1/2] quit
# 配置IBGP,使能对等体的6PE能力,并引入IPv6的直连和静态路由。
[PE1] bgp 65100
[PE1-bgp-default] router-id 2.2.2.2
[PE1-bgp-default] peer 3.3.3.3 as-number 65100
[PE1-bgp-default] peer 3.3.3.3 connect-interface loopback 0
[PE1-bgp-default] address-family ipv6
[PE1-bgp-default-ipv6] import-route direct
[PE1-bgp-default-ipv6] import-route static
[PE1-bgp-default-ipv6] peer 3.3.3.3 enable
[PE1-bgp-default-ipv6] peer 3.3.3.3 label-route-capability
[PE1-bgp-default-ipv6] quit
[PE1-bgp-default] quit
# 配置到CE 1的静态路由。
[PE1] ipv6 route-static 1::1 128 10::1
# 配置OSPF,实现运营商网络内部互通。
[PE1] ospf
[PE1-ospf-1] area 0
[PE1-ospf-1-area-0.0.0.0] network 2.2.2.2 0.0.0.0
[PE1-ospf-1-area-0.0.0.0] network 1.1.0.0 0.0.255.255
[PE1-ospf-1-area-0.0.0.0] quit
[PE1-ospf-1] quit
(3) 配置PE 2
# 全局使能LDP能力,并配置LSP触发策略。
<PE2> system-view
[PE2] mpls lsr-id 3.3.3.3
[PE2] mpls ldp
[PE2-mpls-ldp] lsp-trigger all
[PE2-mpls-ldp] quit
# 在接口Ten-GigabitEthernet3/1/2上使能MPLS和LDP能力。
[PE2] interface ten-gigabitethernet 3/1/2
[PE2-Ten-GigabitEthernet3/1/2] mpls enable
[PE2-Ten-GigabitEthernet3/1/2] mpls ldp enable
[PE2-Ten-GigabitEthernet3/1/2] quit
# 配置IBGP,使能对等体的6PE能力,并引入IPv6的直连和静态路由。
[PE2] bgp 65100
[PE2-bgp-default] router-id 3.3.3.3
[PE2-bgp-default] peer 2.2.2.2 as-number 65100
[PE2-bgp-default] peer 2.2.2.2 connect-interface loopback 0
[PE2-bgp-default] address-family ipv6
[PE2-bgp-default-ipv6] import-route direct
[PE2-bgp-default-ipv6] import-route static
[PE2-bgp-default-ipv6] peer 2.2.2.2 enable
[PE2-bgp-default-ipv6] peer 2.2.2.2 label-route-capability
[PE2-bgp-default-ipv6] quit
[PE2-bgp-default] quit
# 配置到CE 2的静态路由。
[PE2] ipv6 route-static 4::4 128 20::1
# 配置OSPF,实现运营商内部互通。
[PE2] ospf
[PE2-ospf-1] area 0
[PE2-ospf-1-area-0.0.0.0] network 3.3.3.3 0.0.0.0
[PE2-ospf-1-area-0.0.0.0] network 1.1.0.0 0.0.255.255
[PE2-ospf-1-area-0.0.0.0] quit
[PE2-ospf-1] quit
(4) 配置CE 1
# 配置静态路由,缺省下一跳为PE 1。
<CE1> system-view
[CE1] ipv6 route-static :: 0 10::2
(5) 配置CE 2
# 配置静态路由,缺省下一跳为PE 2。
<CE2> system-view
[CE2] ipv6 route-static :: 0 20::2
# 显示PE 1上的IPv6 BGP路由信息。可以看到PE 1上存在到达两个IPv6用户网络的路由。
[PE1] display bgp routing-table ipv6
Total number of routes: 5
BGP local router ID is 2.2.2.2
Status codes: * - valid, > - best, d - dampened, h - history
s - suppressed, S - stale, i - internal, e - external
a - additional-path
Origin: i - IGP, e - EGP, ? - incomplete
* > Network : 1::1 PrefixLen : 128
NextHop : 10::1 LocPrf :
PrefVal : 32768 OutLabel : NULL
MED : 0
Path/Ogn: ?
* >i Network : 4::4 PrefixLen : 128
NextHop : ::FFFF:3.3.3.3 LocPrf : 100
PrefVal : 0 OutLabel : 1279
MED : 0
Path/Ogn: ?
* > Network : 10:: PrefixLen : 64
NextHop : :: LocPrf :
PrefVal : 32768 OutLabel : NULL
MED : 0
Path/Ogn: ?
* > Network : 10::2 PrefixLen : 128
NextHop : ::1 LocPrf :
PrefVal : 32768 OutLabel : NULL
MED : 0
Path/Ogn: ?
* >i Network : 20:: PrefixLen : 64
NextHop : ::FFFF:3.3.3.3 LocPrf : 100
PrefVal : 0 OutLabel : 1278
MED : 0
Path/Ogn: ?
# CE 1可以ping通CE 2的IPv6地址(Loopback接口地址4::4)。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!