• 产品与解决方案
  • 行业解决方案
  • 服务
  • 支持
  • 合作伙伴
  • 关于我们

06-三层技术-IP路由配置指导

目录

05-BGP基础配置

本章节下载 05-BGP基础配置  (1.67 MB)

05-BGP基础配置

  录

1 BGP概述

1.1 BGP的特点

1.2 BGP发言者和BGP对等

1.3 BGP的消息类型

1.4 BGP的有限状态机

1.5 BGP的路由属性

1.6 BGP的选路规则

1.7 BGP发布路由的策略

1.8 BGP负载分担

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

1.10 MP-BGP

1.11 BGP多进程

1.12 BGP相关视图介绍

1.13 协议规范

2 搭建基本BGP网络

2.1 BGP的License要求

2.2 BGP配置限制和指导

2.3 搭建基本BGP网络配置任务简介(IPv4单播)

2.4 搭建基本BGP网络配置任务简介(IPv6单播)

2.5 配置BGP基本功能

2.5.1 启动BGP

2.5.2 手工创建BGP对等体

2.5.3 动态创建BGP对等体

2.5.4 配置IBGP对等体组

2.5.5 配置EBGP对等体组

2.5.6 配置建立TCP连接使用的源地址

2.6 生成BGP路由信息

2.6.1 配置BGP发布本地网段路由

2.6.2 配置BGP引入IGP路由协议的路由

2.6.3 配置BGP路由聚合

2.6.4 配置向对等体/对等体组发送缺省路由

2.7 控制BGP路由信息的发布

2.7.1 配置发布IP路由表中的最优路由

2.7.2 配置优先发送缺省路由的撤销消息

2.7.3 配置优先发送指定路由的撤销消息

2.7.4 配置BGP路由信息的发布策略

2.7.5 配置BGP根据EBGP路由的第一个AS号过滤发布对象

2.7.6 配置BGP新增路由发布速率

2.7.7 配置设备重启后延迟发布BGP路由更新消息

2.7.8 抑制发布同一路由的频率

2.7.9 配置抑制发送撤销路由功能

2.7.10 配置BGP路由延迟发布功能

2.7.11 配置设备启动时为BGP路由应用启动策略

2.7.12 配置BGP会话的发送缓冲区大小

2.8 配置BGP Update消息发送参数

2.8.1 功能简介

2.8.2 配置限制和指导

2.8.3 配置BGP会话发送Update消息的时间间隔和每次发送Update消息的最大数目

2.8.4 配置BGP会话Update消息发送队列参数

2.9 控制BGP路由信息的接收

2.9.1 限制从BGP对等体/对等体组接收的路由数量

2.9.2 配置BGP路由信息的接收策略

2.9.3 配置SoO属性

2.9.4 配置链路带宽属性

2.10 配置BGP定时器

2.10.1 配置BGP会话的存活时间间隔与保持时间

2.10.2 配置重新建立BGP会话的时间间隔

2.11 配置BGP日志和告警功能

2.11.1 使能BGP日志功能

2.11.2 使能BGP的路由抖动日志记录功能

2.11.3 配置BGP网管功能

2.12 搭建基本BGP网络显示和维护

2.12.1 显示BGP配置及运行状况(IPv4单播)

2.12.2 显示BGP配置及运行状况(IPv6单播)

2.12.3 复位BGP会话

2.12.4 显示和清除BGP路由震荡统计信息

2.13 搭建基本IPv4 BGP网络典型配置举例

2.13.1 BGP基本配置

2.13.2 BGP与IGP交互配置

2.13.3 BGP动态对等体配置

2.13.4 BGP路由聚合配置

2.14 搭建基本IPv6 BGP网络典型配置举例

2.14.1 IPv6 BGP基本配置

2.15 BGP常见错误配置举例

2.15.1 连接无法进入Established状态

3 大规模BGP网络

3.1 大规模BGP网络的配置任务简介

3.2 配置BGP路由衰减

3.3 配置BGP团体

3.4 配置BGP路由反射

3.4.1 配置BGP路由反射器

3.4.2 配置忽略BGP路由的ORIGINATOR_ID属性

3.5 配置BGP联盟

3.5.1 功能简介

3.5.2 BGP联盟基本配置

3.5.3 配置联盟兼容

3.6 大规模BGP网络显示和维护

3.6.1 显示BGP配置及运行状况(IPv4单播)

3.6.2 显示BGP配置及运行状况(IPv6单播)

3.6.3 显示和清除BGP路由震荡统计信息

3.7 配置大规模BGP网络典型配置举例

3.7.1 BGP团体配置

3.7.2 BGP路由反射器配置

3.7.3 BGP联盟配置

4 控制BGP路径的选择

4.1 控制BGP路径的选择配置任务简介

4.2 配置BGP的路由优先级

4.3 配置NEXT_HOP属性

4.3.1 配置将下一跳属性修改为自身的地址

4.3.2 配置不修改下一跳属性

4.3.3 配置向IPv6 BGP对等体发布路由时下一跳信息只携带全球单播地址

4.4 为接收路由分配首选值

4.5 配置本地优先级的缺省值

4.6 配置AS_PATH属性

4.6.1 允许本地AS号出现的次数

4.6.2 配置BGP在选择最优路由时忽略AS_PATH属性

4.6.3 为对等体/对等体组指定一个虚拟的自治系统号

4.6.4 配置AS号替换功能

4.6.5 配置发送BGP更新消息时AS_PATH属性中不携带私有AS号

4.6.6 配置不检测EBGP路由的第一个AS号

4.6.7 配置BGP根据AS号数量过滤路由

4.7 配置MED属性

4.7.1 功能简介

4.7.2 配置MED缺省值

4.7.3 配置允许比较来自不同AS路由的MED属性值

4.7.4 配置对来自同一AS的路由进行MED排序优选

4.7.5 配置允许比较来自同一联盟不同子自治系统邻居路由的MED属性值

4.7.6 配置BGP选路时综合考虑MED值与到达路由下一跳的IGP Metric值

4.8 配置将发送给邻居的BGP路由调整为最低优先级

4.8.1 配置邻居状态由Down变为Up后发送最低优先级路由

4.8.2 配置设备重启后发送最低优先级路由

4.8.3 恢复发送正常优先级的路由

4.9 配置AIGP属性

4.10 配置BGP在选择最优路由时忽略IGP Metric的比较

4.11 配置BGP在选择最优路由时忽略Router ID

4.12 控制BGP路径的选择显示和维护

4.13 控制BGP路径的选择典型配置举例

4.13.1 BGP路径选择配置

 


1 BGP概述

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

1.1  BGP的特点

BGP具有如下特点:

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

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

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

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

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

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

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

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

1.2  BGP发言者和BGP对等体

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

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

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

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

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

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

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

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

1.3  BGP的消息类型

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

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

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

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

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

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

1.4  BGP的有限状态机

BGP在会话建立过程中共具有六种状态,会话两端设备的BGP所处状态迁移过程如图1-1所示。

图1-1 BGP有限状态机变化过程

 

Idle

此状态是BGP的初始状态,在此状态下,BGP拒绝任何连接请求。只有收到Start事件时,设备才给BGP分配资源,并尝试进行TCP连接、转入Connect状态。

在其他的五种状态下,如果发生了TCP连接断开、报文错误、配置触发关闭连接或收到Notification消息等错误事件,BGP都会转入Idle状态。

Connect

在此状态下,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状态。

Active

在此状态下,BGP不断尝试建立TCP连接:

·     如果TCP连接建立成功,则BGP关闭Connect Retry定时器,向对等体发送Open消息,并转入OpenSent状态。

·     如果TCP连接建立失败,则BGP重置Connect Retry定时器并保持Active状态。

·     如果Connect Retry定时器超时,BGP仍未收到对端的连接响应,则BGP重置Connect Retry定时器,并转入Connect状态。

OpenSent

在此状态下,BGP等待来自对等体的Open消息,并对Open消息中的BGP版本号、AS号等信息进行检查:

·     如果收到的Open消息正确,则BGP向对等体发送Keepalive消息,并转入OpenConfirm状态。

·     如果收到的Open消息错误,则BGP向对等体发送Notification消息,并转入Idle状态。

在此状态下如果TCP连接断开,则BGP重置Connect Retry定时器,并转入Active状态,重新尝试TCP连接的建立。

OpenConfirm

在此状态下,BGP等待Keepalive或Notification消息。如果BGP收到Keepalive消息,则转入Established状态,如果收到Notification消息,则转入Idle状态。

Established

在此状态下,BGP可以和对等体交互Update、Keepalive、Route-refresh以及Notification消息:

·     收到正确的Update消息或Keepalive消息时,BGP保持Established状态。

·     收到错误的Update消息或Keepalive消息时,BGP向对等体发送Notification消息并转入Idle状态。

·     Route-refresh消息不影响BGP状态。

·     收到Notification消息时,BGP转入Idle状态。

1.5  BGP的路由属性

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

1. 源(ORIGIN)属性

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

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

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

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

2. AS路径(AS_PATH)属性

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

AS_PATH属性有以下两种类型:

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

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

图1-2 AS_PATH属性

 

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路由配置指导”中的“路由策略”。

3. 下一跳(NEXT_HOP)属性

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负载分担”。

图1-3 NEXT_HOP属性

 

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

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

MED属性相当于IGP使用的度量值(metrics),它用于判断流量进入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属性值。

5. 本地优先(LOCAL_PREF)属性

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

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

图1-5 LOCAL_PREF属性

 

6. 团体(COMMUNITY)属性

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

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

公认的团体属性有:

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

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

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

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

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

7. 扩展团体属性

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

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

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

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

链路带宽属性用来标识与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。

1.6  BGP的选路规则

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

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

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

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

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

(5)     优选携带AIGP属性的路由,AIGP属性值越小优先级越高;

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

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

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

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

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

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

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

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

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

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

说明

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

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

 

1.7  BGP发布路由的策略

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

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

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

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

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

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

1.8  BGP负载分担

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

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

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

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

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

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

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

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

·     IGP(如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-neglectbalance as-path-relax命令,则要求AS_PATH属性也必须相同。

·     路由下一跳的IGP路由的Metric值满足如下要求:

¡     若未配置bestroute igp-metric-ignore命令,则路由下一跳的IGP的Metric值必须相同。

¡     配置了bestroute igp-metric-ignore命令后,不同路由下一跳的IGP Metric值不同也能形成BGP负载分担。

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

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

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

说明

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

 

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

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

1. 路由聚合

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

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

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

2. 路由衰减

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

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

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

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

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

 

3. 对等体组

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

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

4. 团体

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

5. 路由反射器

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

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

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

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

 

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

图1-9 多路由反射器

 

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

说明

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

 

6. 联盟

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

图1-10 联盟示意图

 

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

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

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

1.10  MP-BGP

1. MP-BGP支持的协议

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

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

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

2. MP-BGP的扩展属性

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

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

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

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

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

3. 地址族

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

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

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

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

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

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

 

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

1.11  BGP多进程

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

1.12  BGP相关视图介绍

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

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

表1-1 BGP相关视图介绍

视图名称

进入视图方法

说明

BGP实例视图

<Sysname> system-view

[Sysname] bgp 100 instance abc

[Sysname-bgp-abc]

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

BGP IPv4单播地址族视图

<Sysname> system-view

[Sysname] bgp 100 instance abc

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

[Sysname-bgp-abc-ipv4]

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

BGP IPv6单播地址族视图

<Sysname> system-view

[Sysname] bgp 100 instance abc

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

[Sysname-bgp-abc-ipv6]

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

BGP LS地址族视图

<Sysname> system-view

[Sysname] bgp 100 instance abc

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

[Sysname-bgp-abc-ls]

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

 

1.13  协议规范

与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 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 4451:BGP MULTI_EXIT_DISC (MED) Consideration

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

·     RFC 4486:Subcodes for BGP Cease Notification Message

·     RFC 4724:Graceful Restart Mechanism for BGP

·     RFC 4760:Multiprotocol Extensions for BGP-4

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

·     RFC 5065:Autonomous System Confederations for BGP

·     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 6198:Requirements for the Graceful Shutdown of BGP Sessions

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

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

·     RFC 7911:Advertisement of Multiple Paths in BGP

 

 


2 搭建基本BGP网络

2.1  BGP的License要求

通过安装License,可以增加处于Established状态的BGP对等体的最大数目,也可以增加设备支持的BGP路由数目。有关License的详细介绍,请参见“基础配置指导”中的“License管理”。

2.2  BGP配置限制和指导

BGP对BGP实例具有如下要求:

·     一个BGP实例下可以创建多个公网地址族,但不同BGP实例下不能创建相同的公网地址族(公网IPv4单播地址族和公网IPv6单播地址族除外)。

·     BGP不同实例的相同地址族不能配置相同地址的邻居。

·     不同BGP实例对应的AS号可以相同,不同BGP实例的实例名称不能相同。

2.3  搭建基本BGP网络配置任务简介(IPv4单播)

IPv4单播的BGP配置任务如下:

(1)     配置BGP基本功能

a.     启动BGP

b.     手工创建BGP对等体

c.     动态创建BGP对等体

d.     配置IBGP对等体组

在大规模的BGP网络中可通过配置BGP对等体组简化配置。

e.     配置EBGP对等体组

在大规模的BGP网络中可通过配置BGP对等体组简化配置。

f.     (可选)配置建立TCP连接使用的源地址

(2)     生成BGP路由信息

请至少选择其中一项任务进行配置:

¡     配置BGP发布本地网段路由

¡     配置BGP引入IGP路由协议的路由

¡     (可选)配置BGP路由聚合

¡     (可选)配置向对等体/对等体组发送缺省路由

(3)     (可选)控制BGP路由信息的发布

¡     配置发布IP路由表中的最优路由

¡     配置优先发送缺省路由的撤销消息

¡     配置优先发送指定路由的撤销消息

¡     配置BGP路由信息的发布策略

¡     配置BGP根据EBGP路由的第一个AS号过滤发布对象

¡     配置BGP新增路由发布速率

¡     配置设备重启后延迟发布BGP路由更新消息

¡     抑制发布同一路由的频率

¡     配置抑制发送撤销路由功能

¡     配置BGP路由延迟发布功能

¡     配置设备启动时为BGP路由应用启动策略

¡     配置BGP会话的发送缓冲区大小

(4)     (可选)配置BGP Update消息发送参数

(5)     (可选)控制BGP路由信息的接收

¡     限制从BGP对等体/对等体组接收的路由数量

¡     配置BGP路由信息的接收策略

¡     配置SoO属性

¡     配置链路带宽属性

(6)     (可选)配置BGP定时器

¡     配置BGP会话的存活时间间隔与保持时间

¡     配置重新建立BGP会话的时间间隔

(7)     (可选)配置BGP日志和告警功能

¡     使能BGP日志功能

¡     使能BGP的路由抖动日志记录功能

¡     配置BGP网管功能

2.4  搭建基本BGP网络配置任务简介(IPv6单播)

IPv6单播的BGP配置任务如下:

(1)     配置BGP基本功能

a.     启动BGP

b.     手工创建BGP对等体

c.     动态创建BGP对等体

d.     配置IBGP对等体组

在大规模的BGP网络中可通过配置BGP对等体组简化配置。

e.     配置EBGP对等体组

在大规模的BGP网络中可通过配置BGP对等体组简化配置。

f.     (可选)配置建立TCP连接使用的源地址

(2)     生成BGP路由信息

请至少选择其中一项任务进行配置:

¡     配置BGP发布本地网段路由

¡     配置BGP引入IGP路由协议的路由

¡     (可选)配置BGP路由聚合

¡     (可选)配置向对等体/对等体组发送缺省路由

(3)     (可选)控制BGP路由信息的发布

¡     配置发布IP路由表中的最优路由

¡     配置优先发送缺省路由的撤销消息

¡     配置优先发送指定路由的撤销消息

¡     配置BGP路由信息的发布策略

¡     配置BGP根据EBGP路由的第一个AS号过滤发布对象

¡     配置BGP新增路由发布速率

¡     配置设备重启后延迟发布BGP路由更新消息

¡     抑制发布同一路由的频率

¡     配置抑制发送撤销路由功能

¡     配置BGP路由延迟发布功能

¡     配置设备启动时为BGP路由应用启动策略

¡     配置BGP会话的发送缓冲区大小

(4)     (可选)配置BGP Update消息发送参数

(5)     (可选)控制BGP路由信息的接收

¡     限制从BGP对等体/对等体组接收的路由数量

¡     配置BGP路由信息的接收策略

¡     配置SoO属性

¡     配置链路带宽属性

(6)     (可选)配置BGP定时器

¡     配置BGP会话的存活时间间隔与保持时间

¡     配置重新建立BGP会话的时间间隔

(7)     (可选)配置BGP日志和告警功能

¡     使能BGP日志功能

¡     使能BGP的路由抖动日志记录功能

¡     配置BGP网管功能

2.5  配置BGP基本功能

2.5.1  启动BGP

1. 配置限制和指导

如果要在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。

2. 配置步骤

(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,为系统视图下通过router id命令配置的全局Router ID。

2.5.2  手工创建BGP对等体

1. 配置限制和指导

当通过IPv6链路本地地址创建对等体或向对等体组中添加指定的对等体时,必须使用直连接口建立对等关系,且必须通过peer connect-interface命令将本地直连出接口指定为建立TCP连接使用的源接口。

配置IPv6对等体交互IPv4单播路由或IPv4对等体交互IPv6路由时,必须配置路由策略修改从对等体收到路由的下一跳:将从对等体收到的IPv4路由的下一跳修改为对端出接口的IPv4地址,IPv6路由的下一跳修改为对端出接口的IPv6地址,否则转发时不能迭代出正确的下一跳。

2. 配置步骤(配置IPv4对等体交互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单播地址族,并进入相应地址族视图。

address-family ipv4 [ unicast ]

(6)     允许本地路由器与指定对等体交换IPv4单播路由信息。

peer ipv4-address enable

缺省情况下,本地路由器不能与对等体交换IPv4单播路由信息。

3. 配置步骤(配置IPv4对等体交互IPv6单播路由)

(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

4. 配置步骤(配置IPv6对等体交互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 IPv6单播地址族,并进入相应地址族视图。

address-family ipv6 [ unicast ]

(6)     允许本地路由器与指定对等体交换IPv6单播路由信息。

peer ipv6-address enable

缺省情况下,本地路由器不能与对等体/对等体组交换IPv6单播路由信息。

5. 配置步骤(配置IPv6对等体交互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 IPv4单播地址族,并进入相应地址族视图。

address-family ipv4 [ unicast ]

(6)     允许本地路由器与指定对等体交换IPv4单播路由信息。

peer ipv6-address enable

缺省情况下,本地路由器不能与对等体交换IPv4单播路由信息。

(7)     为IPv6对等体设置基于路由策略的路由修改下一跳策略。

peer ipv6-address route-policy route-policy-name import

2.5.3  动态创建BGP对等体

1. 功能简介

设备需要和大量的邻居建立对等体关系时,如果逐个配置对等体关系,则配置工作量大,新增或者删除对等体的维护、升级工作难度较大,且容易出错。

如果设备的邻居位于同一个网段内,则可以通过BGP动态对等体功能简化配置。在设备上简单地配置一个网段地址内的邻居作为动态对等体,就可以接受来自该网段内的所有邻居的连接请求,并与其建立对等体关系。只有当邻居发起连接请求时,本地才会维护与该邻居的对等体关系;否则,不维护对等体关系。BGP动态对等体功能既简化了配置,又大大降低了维护和升级成本。

2. 配置限制和指导

配置动态对等体时,设备和邻居只能有一端配置网段地址,另一端必须配置实际IP地址。

当通过IPv6链路本地地址创建对等体或向对等体组中添加指定的对等体时,必须使用直连接口建立对等关系,且必须通过peer connect-interface命令将本地直连出接口指定为建立TCP连接使用的源接口。

配置IPv6对等体交互IPv4单播路由或IPv4对等体交互IPv6路由时,必须配置路由策略修改从对等体收到路由的下一跳:将从对等体收到的IPv4路由的下一跳修改为对端出接口的IPv4地址,IPv6路由的下一跳修改为对端出接口的IPv6地址,否则转发时不能迭代出正确的下一跳。

3. 配置步骤(配置IPv4动态对等体交互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单播地址族,并进入相应地址族视图。

address-family ipv4 [ unicast ]

(6)     允许本地路由器与指定动态对等体交换IPv4单播路由信息。

peer ipv4-address mask-length enable

缺省情况下,本地路由器不能与动态对等体交换IPv4单播路由信息。

4. 配置步骤(配置IPv4动态对等体交互IPv6单播路由)

(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

5. 配置步骤(配置IPv6动态对等体交互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 IPv6单播地址族,并进入相应地址族视图。

address-family ipv6 [ unicast ]

(6)     允许本地路由器与指定动态对等体交换IPv6单播路由信息。

peer ipv6-address prefix-length enable

缺省情况下,本地路由器不能与动态对等体交换IPv6单播路由信息。

6. 配置步骤(配置IPv6动态对等体交互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 IPv4单播地址族,并进入相应地址族视图。

address-family ipv4 [ unicast ]

(6)     允许本地路由器与指定对等体交换IPv4单播路由信息。

peer ipv6-address prefix-length enable

缺省情况下,本地路由器不能与动态对等体交换IPv4单播路由信息。

(7)     为BGP IPv6动态对等体设置基于路由策略的路由修改下一跳策略。

peer ipv6-address mask-length route-policy route-policy-name import

2.5.4  配置IBGP对等体组

1. 功能简介

IBGP对等体组是指对等体组中的对等体与当前路由器位于同一AS。

创建IBGP对等体组后,系统在将对等体加入IBGP对等体组时,会自动在BGP实例视图下创建该对等体,并设置其AS号为本地AS号。

2. 配置限制和指导

当通过IPv6链路本地地址创建对等体或向对等体组中添加指定的对等体时,必须使用直连接口建立对等关系,且必须通过peer connect-interface命令将本地直连出接口指定为建立TCP连接使用的源接口。

配置IPv6对等体交互IPv4单播路由或IPv4对等体交互IPv6路由时,必须配置路由策略修改从对等体收到路由的下一跳:将从对等体收到的IPv4路由的下一跳修改为对端出接口的IPv4地址,IPv6路由的下一跳修改为对端出接口的IPv6地址,否则转发时不能迭代出正确的下一跳。

如果分别对对等体组和对等体组中的对等体进行了某项BGP配置,则以最后一次配置为准。

3. 配置步骤(配置IPv4对等体交互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单播地址族,并进入相应地址族视图。

address-family ipv4 [ unicast ]

(7)     允许本地路由器与指定对等体组中的对等体交换IPv4单播路由信息。

peer group-name enable

缺省情况下,本地路由器不能与对等体交换IPv4单播路由信息。

4. 配置步骤(配置IPv4对等体交互IPv6单播路由)

(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

5. 配置步骤(配置IPv6对等体交互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 IPv6单播地址族,并进入相应地址族视图。

address-family ipv6 [ unicast ]

(7)     允许本地路由器与指定对等体组中的对等体交换IPv6单播路由信息。

peer group-name enable

缺省情况下,本地路由器不能与对等体交换IPv6单播路由信息。

6. 配置步骤(配置IPv6对等体交互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 IPv4单播地址族,并进入相应地址族视图。

address-family ipv4 [ unicast ]

(7)     允许本地路由器与指定对等体组中的对等体交换IPv4单播路由信息。

peer group-name enable

缺省情况下,本地路由器不能与对等体交换IPv4单播路由信息。

(8)     为BGP IPv6对等体组设置基于路由策略的路由修改下一跳策略。

peer group-name route-policy route-policy-name import

2.5.5  配置EBGP对等体组

1. 功能简介

EBGP对等体组是指对等体组中的对等体与当前路由器位于不同AS。

根据对等体组中的对等体是否属于同一个外部AS,EBGP对等体组又可以分为纯EBGP对等体组和混合EBGP对等体组。如果对等体组中的对等体属于同一个外部AS,该对等体组就是纯EBGP对等体组;如果对等体组中的对等体属于不同外部AS,该对等体组就是混合EBGP对等体组。

2. 配置限制和指导

用户有三种方式配置EBGP对等体组:

·     第一种方式是创建对等体组后,先指定对等体组的AS号,再将对等体加入到对等体组中,该方式下加入的对等体具有相同的AS号,均为对等体组的AS号。对等体加入对等体组之前可以配置AS号,且为对等体配置的AS号必须与对等体组的AS号相同。

·     第二种方式是创建对等体组后,先配置对等体的AS号,再将对等体加入对等体组中。该方式下,对等体组中对等体的AS号可以相同也可以不同。

·     第三种方式是创建对等体组后,将对等体加入对等体组的同时指定AS号。该方式下,对等体组中对等体的AS号可以相同也可以不同。

配置IPv6对等体交互IPv4单播路由或IPv4对等体交互IPv6路由时,必须配置路由策略修改从对等体收到路由的下一跳:将从对等体收到的IPv4路由的下一跳修改为对端出接口的IPv4地址,IPv6路由的下一跳修改为对端出接口的IPv6地址,否则转发时不能迭代出正确的下一跳。

如果分别对对等体组和对等体组中的对等体进行了某项BGP配置,则以最后一次配置为准。

3. 配置EBGP对等体组方式一(配置IPv4对等体交互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 IPv4单播地址族,并进入相应地址族视图。

address-family ipv4 [ unicast ]

(8)     允许本地路由器与指定对等体组中的对等体交换IPv4单播路由信息。

peer group-name enable

缺省情况下,本地路由器不能与对等体交换IPv4单播路由信息。

4. 配置EBGP对等体组方式二(配置IPv4对等体交互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单播地址族,并进入相应地址族视图。

address-family ipv4 [ unicast ]

(8)     允许本地路由器与指定对等体组中的对等体交换IPv4单播路由信息。

peer group-name enable

缺省情况下,本地路由器不能与对等体交换IPv4单播路由信息。

5. 配置EBGP对等体组方式三(配置IPv4对等体交互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单播地址族,并进入相应地址族视图。

address-family ipv4 [ unicast ]

(7)     允许本地路由器与指定对等体组中的对等体交换IPv4单播路由信息。

peer group-name enable

缺省情况下,本地路由器不能与对等体交换IPv4单播路由信息。

6. 配置EBGP对等体组方式一(配置IPv4对等体交互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)     向对等体组中添加指定的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

7. 配置EBGP对等体组方式二(配置IPv4对等体交互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单播地址族,并进入相应地址族视图。

address-family ipv6 [ unicast ]

(8)     允许本地路由器与指定对等体组中的对等体交换IPv6单播路由信息。

peer group-name enable

缺省情况下,本地路由器不能与对等体交换IPv6单播路由信息。

(9)     为BGP IPv4对等体组设置基于路由策略的路由修改下一跳策略。

peer group-name route-policy route-policy-name import

8. 配置EBGP对等体组方式三(配置IPv4对等体交互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单播地址族,并进入相应地址族视图。

address-family ipv6 [ unicast ]

(7)     允许本地路由器与指定对等体组中的对等体交换IPv6单播路由信息。

peer group-name enable

缺省情况下,本地路由器不能与对等体交换IPv6单播路由信息。

(8)     为BGP IPv4对等体组设置基于路由策略的路由修改下一跳策略。

peer group-name route-policy route-policy-name import

9. 配置EBGP对等体组方式一(配置IPv6对等体交互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 IPv6单播地址族,并进入相应地址族视图。

address-family ipv6 [ unicast ]

(8)     允许本地路由器与指定对等体组中的对等体交换IPv6单播路由信息。

peer group-name enable

缺省情况下,本地路由器不能与对等体交换IPv6单播路由信息。

10. 配置EBGP对等体组方式二(配置IPv6对等体交互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单播地址族,并进入相应地址族视图。

address-family ipv6 [ unicast ]

(8)     允许本地路由器与指定对等体组中的对等体交换IPv6单播路由信息。

peer group-name enable

缺省情况下,本地路由器不能与对等体交换IPv6单播路由信息。

11. 配置EBGP对等体组方式三(配置IPv6对等体交互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单播地址族,并进入相应地址族视图。

address-family ipv6 [ unicast ]

(7)     允许本地路由器与指定对等体组中的对等体交换IPv6单播路由信息。

peer group-name enable

缺省情况下,本地路由器不能与对等体交换IPv6单播路由信息。

12. 配置EBGP对等体组方式一(配置IPv6对等体交互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 IPv4单播地址族,并进入相应地址族视图。

address-family ipv4 [ unicast ]

(8)     允许本地路由器与指定对等体组中的对等体交换IPv4单播路由信息。

peer group-name enable

缺省情况下,本地路由器不能与对等体交换IPv4单播路由信息。

(9)     为BGP IPv6对等体组设置基于路由策略的路由修改下一跳策略。

peer group-name route-policy route-policy-name import

13. 配置EBGP对等体组方式二(配置IPv6对等体交互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单播地址族,并进入相应地址族视图。

address-family ipv4 [ unicast ]

(8)     允许本地路由器与指定对等体组中的对等体交换IPv4单播路由信息。

peer group-name enable

缺省情况下,本地路由器不能与对等体交换IPv4单播路由信息。

(9)     为BGP IPv6对等体组设置基于路由策略的路由修改下一跳策略。

peer group-name route-policy route-policy-name import

14. 配置EBGP对等体组方式三(配置IPv6对等体交互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单播地址族,并进入相应地址族视图。

address-family ipv4 [ unicast ]

(7)     允许本地路由器与指定对等体组中的对等体交换IPv4单播路由信息。

peer group-name enable

缺省情况下,本地路由器不能与对等体交换IPv4单播路由信息。

(8)     为BGP IPv6对等体组设置基于路由策略的路由修改下一跳策略。

peer group-name route-policy route-policy-name import

2.5.6  配置建立TCP连接使用的源地址

1. 功能简介

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连接源地址。

2. 配置限制和指导

对于IBGP邻居,如果通过peer connect-interface命令指定的接口为物理接口,则当该接口发生故障、链路状态变为down时,IBGP邻居关系会立即断开,从而加快路由收敛。

3. 配置步骤(IPv4对等体)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance 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连接。

4. 配置步骤(IPv6对等体)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance 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连接。

2.6  生成BGP路由信息

2.6.1  配置BGP发布本地网段路由

1. 功能简介

通过本配置可以将本地路由表中指定网段的路由添加到BGP路由表中,以便通过BGP发布该网段路由。通过该种方式发布的路由的ORIGIN属性为IGP。网络管理员还可以通过使用路由策略更为灵活地控制所发布的路由。

本配置中指定的网段路由必须存在于本地的IP路由表中,且处于Active状态,否则无法将该网段路由添加到BGP路由表中。

2. 配置步骤(IPv4单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv4单播地址族视图。

address-family ipv4 [ unicast ]

(4)     配置BGP发布的本地网段路由。

network ipv4-address [ mask-length | mask ] [ route-policy route-policy-name ]

缺省情况下,BGP不发布本地的网段路由。

3. 配置步骤(IPv6单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv6单播地址族视图。

address-family ipv6 [ unicast ]

(4)     配置BGP发布的本地网段路由。

network ipv6-address prefix-length [ route-policy route-policy-name ]

缺省情况下,BGP不发布本地的网段路由。

2.6.2  配置BGP引入IGP路由协议的路由

1. 功能简介

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-routeimport-route-append命令时:

·     通过任意一条命令中路由策略过滤的路由将被引入到BGP路由表中,若引入的路由同时通过了两条命令中路由策略的过滤,则在被引入到BGP路由表中时,两条命令指定的路由策略包含的Apply子句在不冲突的情况下同时生效,否则仅import-route-append命令指定的路由策略中的Apply子句生效。

·     如果均指定了引入路由的MED度量值,以import-route-append命令的配置为准。

2. 配置步骤(IPv4单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv4单播地址族视图。

address-family ipv4 [ unicast ]

(4)     将IGP路由协议的路由信息引入到BGP路由表中。

¡     引入OSPF协议的路由。

import-route ospf [ { process-id | all-processes } [ allow-direct | med med-value | route-policy route-policy-name ] * ]

¡     引入直连或静态路由。

import-route { direct | static } [ med med-value | route-policy route-policy-name ] *

缺省情况下,BGP不会引入IGP路由协议的路由信息。

(5)     (可选)以附加的方式将IGP路由协议的路由信息引入到BGP路由表中。

¡     引入OSPF协议的路由。

import-route-append ospf [ { process-id | all-processes } [ allow-direct | med med-value | route-policy route-policy-name ] * ]

¡     引入直连或静态路由。

import-route-append { direct | static } [ med med-value | route-policy route-policy-name ] *

缺省情况下,BGP不会引入IGP路由协议的路由信息。

(6)     (可选)允许将缺省路由引入到BGP路由表中。

default-route imported

缺省情况下,BGP不允许将缺省路由引入到BGP路由表中。

3. 配置步骤(IPv6单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv6单播地址族视图。

address-family ipv6 [ unicast ]

(4)     将IGP路由协议的路由信息引入到IPv6 BGP路由表中。

¡     引入OSPFv3协议的路由。

import-route ospfv3 [ { process-id | all-processes } [ allow-direct | med med-value | route-policy route-policy-name ] * ]

¡     引入直连或静态路由。

import-route { direct | static } [ med med-value | route-policy route-policy-name ] *

缺省情况下,BGP不会引入IGP路由协议的路由信息。

(5)     (可选)以附加的方式将IGP路由协议的路由信息引入到BGP路由表中。

¡     引入OSPFv3协议的路由。

import-route-append ospfv3 [ { process-id | all-processes } [ allow-direct | med med-value | route-policy route-policy-name ] * ]

¡     引入直连或静态路由。

import-route-append { direct | static } [ med med-value | route-policy route-policy-name ] *

缺省情况下,BGP不会引入IGP路由协议的路由信息。

(6)     (可选)允许将缺省路由引入到IPv6 BGP路由表中。

default-route imported

缺省情况下,BGP不允许将缺省路由引入到IPv6 BGP路由表中。

2.6.3  配置BGP路由聚合

1. 功能简介

在中型或大型BGP网络中,在向对等体发布路由信息时,可以配置路由聚合,减少发布的路由数量,并减小路由表的规模。IPv4 BGP支持自动聚合和手动聚合两种聚合方式,同时配置时,手动聚合的优先级高于自动聚合的优先级。IPv6 BGP只支持手动聚合。

配置自动聚合功能后,BGP将对通过import-route命令引入的IGP子网路由进行聚合,不再发布子网路由,而是发布聚合的自然网段的路由。

自动聚合是按照自然网段进行聚合,而且只能对IGP引入的子网路由进行聚合。通过配置手动聚合,用户可以同时对从IGP路由协议引入的子网路由和用network命令发布的路由进行聚合,而且还可以根据需要定义聚合路由的子网掩码长度。

2. 配置限制和指导

BGP路由表中创建的聚合路由的出接口为Null0接口,聚合后可以减少向BGP对等体发布的路由数目。在使用中应注意不要使这条聚合路由成为本设备的优选路由,否则会导致报文转发失败。如果聚合路由的子网掩码长度和被聚合的某一条具体路由完全相同,且聚合路由优先级高于具体路由,则聚合路由会成为优选路由,这种情况下需要通过修改路由优先级等方式,来确保优选的路由为具体路由。

3. 配置路由自动聚合(IPv4单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv4单播地址族视图。

address-family ipv4 [ unicast ]

(4)     配置对引入的子网路由进行自动聚合。

summary automatic

缺省情况下,不对引入的子网路由进行自动聚合。

4. 配置路由手动聚合(IPv4单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv4单播地址族视图。

address-family ipv4 [ unicast ]

(4)     在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 ] *

缺省情况下,未配置聚合路由。

5. 配置路由手动聚合(IPv6单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv6单播地址族视图。

address-family ipv6 [ unicast ]

(4)     在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 ] *

缺省情况下,未配置聚合路由。

2.6.4  配置向对等体/对等体组发送缺省路由

1. 功能简介

执行本配置后,设备将向指定对等体/对等体组发布一条下一跳地址为本地地址的缺省路由。

2. 配置步骤(IPv4单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv4单播地址族视图。

address-family ipv4 [ unicast ]

(4)     向对等体/对等体组发送缺省路由。

peer { group-name | ipv4-address [ mask-length ] } default-route-advertise [ route-policy route-policy-name ]

缺省情况下,不向对等体/对等体组发送缺省路由。

3. 配置步骤(IPv6单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv6单播地址族视图。

address-family ipv6 [ unicast ]

(4)     向对等体/对等体组发送缺省路由。

peer { group-name | ipv6-address [ prefix-length ] } default-route-advertise [ route-policy route-policy-name ]

缺省情况下,不向对等体/对等体组发送缺省路由。

2.7  控制BGP路由信息的发布

2.7.1  配置发布IP路由表中的最优路由

1. 功能简介

缺省情况下,BGP发布BGP路由表中的最优路由,不管该路由在IP路由表中是否为最优路由。通过本配置可以保证BGP发送出去的路由是IP路由表中的最优路由,以减少BGP发送的路由数量。

2. 配置步骤(IPv4单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     全局配置发布IP路由表中的最优路由。

advertise-rib-active

缺省情况下,BGP发布BGP路由表中的最优路由。

(4)     进入BGP IPv4单播地址族视图。

address-family ipv4 [ unicast ]

(5)     在指定地址族视图下,配置发布IP路由表中的最优路由。

advertise-rib-active

缺省情况下,与BGP实例视图下的配置保持一致。

3. 配置步骤(IPv6单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     全局配置发布IPv6路由表中的最优路由。

advertise-rib-active

缺省情况下,BGP发布BGP路由表中的最优路由。

(4)     进入BGP IPv6单播地址族视图。

address-family ipv6 [ unicast ]

(5)     在指定地址族视图下,配置发布IPv6路由表中的最优路由。

advertise-rib-active

缺省情况下,与BGP实例视图下的配置保持一致。

2.7.2  配置优先发送缺省路由的撤销消息

1. 功能简介

BGP路由器向对等体发送路由撤销消息时,不会优先发送缺省路由的撤销消息。当BGP邻居关系断开时,无法保证优先撤销缺省路由,如果需要撤销的路由数量较多,那么较长时间后才能撤销缺省路由,造成流量中断时间较长。通过配置本功能,BGP路由器会优先发送缺省路由的撤销消息,在BGP邻居关系断开时,最大限度地减少流量中断时间。

2. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     配置优先发送缺省路由的撤销消息。

default-route update-first

缺省情况下,不优先发送缺省路由的撤销消息。

2.7.3  配置优先发送指定路由的撤销消息

1. 功能简介

当BGP路由器需要撤销大量路由时,撤销所有的路由会耗费一定时间,导致有些流量不能快速切换到有效路径。对于某些重要的、不希望长时间中断的流量,可以通过本配置,确保BGP路由器优先发送这些路由的撤销消息,以便将指定流量快速地切换到有效路径上,最大限度地减少流量中断时间。

2. 配置步骤(IPv4单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv4单播地址族视图。

address-family ipv4 [ unicast ]

(4)     配置优先发送指定路由的撤销消息。

update-first route-policy route-policy-name

缺省情况下,不支持优先发送指定路由的撤销消息。

3. 配置步骤(IPv6单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv6单播地址族视图。

address-family ipv6 [ unicast ]

(4)     配置优先发送指定路由的撤销消息。

update-first route-policy route-policy-name

缺省情况下,不支持优先发送指定路由的撤销消息。

2.7.4  配置BGP路由信息的发布策略

1. 发布策略配置方式简介

可以通过以下几种方式配置BGP路由信息的发布策略:

·     使用访问控制列表或地址前缀列表对向所有对等体发布的路由信息进行过滤。

·     向指定对等体或对等体组发布路由时,使用路由策略、访问控制列表、AS路径过滤列表或地址前缀列表对发布给该对等体或对等体组的路由信息进行过滤。

用户可以根据需求选择过滤策略。如果同时配置了几种过滤策略,则按照如下顺序过滤发布的路由信息:

·     filter-policy export

·     peer filter-policy export

·     peer as-path-acl export

·     peer prefix-list export

·     peer route-policy export

只有通过前面的过滤策略,才能继续执行后面的过滤策略;只有通过所有配置的过滤策略后,路由信息才能被发布。

2. 配置准备

配置BGP路由信息的发布/接收策略前,根据采取的策略,需要配置下列过滤器:

·     访问控制列表,详细配置过程请参见“ACL和QoS配置指导”中的“ACL”。

·     地址前缀列表,详细配置过程请参见“三层技术-IP路由配置指导”中的“路由策略”。

·     路由策略,详细配置过程请参见“三层技术-IP路由配置指导”中的“路由策略”。

·     AS路径过滤列表,详细配置过程请参见“三层技术-IP路由配置指导”中的“路由策略”。

3. 配置步骤(IPv4单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv4单播地址族视图。

address-family ipv4 [ unicast ]

(4)     配置BGP路由信息的发布策略。请至少选择其中一项进行配置。

¡     对向所有对等体发布的路由信息进行过滤。

filter-policy { ipv4-acl-number | name ipv4-acl-name | prefix-list ipv4-prefix-list-name } export [ direct | { isis | ospf } process-id | static ]

¡     通过存在策略对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 export

¡     为对等体/对等体组设置基于AS路径过滤列表的路由发布过滤策略。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } as-path-acl as-path-acl-number export

¡     为对等体/对等体组设置基于IPv4地址前缀列表的路由发布过滤策略。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } prefix-list ipv4-prefix-list-name export

缺省情况下,不对发布的路由信息进行过滤。

4. 配置步骤(IPv6单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv6单播地址族视图。

address-family ipv6 [ unicast ]

(4)     配置BGP路由信息的发布策略。请至少选择其中一项进行配置。

¡     对向所有IPv6 BGP对等体发布的路由信息进行过滤。

filter-policy { ipv6-acl-number | name ipv6-acl-name | prefix-list ipv6-prefix-list-name } export [ direct | { isisv6 | ospfv3 } process-id | static ]

¡     通过存在策略对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 export

¡     为对等体/对等体组设置基于AS路径过滤列表的路由发布过滤策略。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } as-path-acl as-path-acl-number export

¡     为对等体/对等体组设置基于IPv6地址前缀列表的路由发布过滤策略。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } prefix-list ipv6-prefix-list-name export

缺省情况下,不对发布的路由信息进行过滤。

2.7.5  配置BGP根据EBGP路由的第一个AS号过滤发布对象

1. 功能简介

缺省情况下,设备接收到EBGP路由后,会将其发布给除发送该路由的对等体之外的所有BGP对等体,这样会造成网络设备上的BGP路由数目庞大,不利于维护。通过配置本功能,可以减少EBGP对等体接收到的路由条目。配置本功能后,BGP向EBGP对等体发布EBGP路由时,会检查AS_Path属性中的第一个AS号,不会向EBGP对等体发布第一个AS号与该EBGP对等体所在的AS相同的路由。

2. 配置步骤(IPv4单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv4单播地址族视图。

address-family ipv4 [ unicast ]

(4)     配置根据EBGP路由的第一个AS号来过滤发布对象。

peer-as-check enable

缺省情况下,设备接收到EBGP路由后,会将其发布给除发送该路由的对等体之外的所有BGP对等体,不会根据EBGP路由的第一个AS号来过滤发布对象。

3. 配置步骤(IPv6单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv6单播地址族视图。

address-family ipv6 [ unicast ]

(4)     配置根据EBGP路由的第一个AS号来过滤发布对象。

peer-as-check enable

缺省情况下,设备接收到EBGP路由后,会将其发布给除发送该路由的对等体之外的所有BGP对等体,不会根据EBGP路由的第一个AS号来过滤发布对象。

2.7.6  配置BGP新增路由发布速率

1. 功能简介

网络中新增路由数量较大时,如果在短时间内发布大量路由,可能会导致BGP对等体已接收到新增路由并添加对应的转发表项,本地设备上的转发表项却尚未添加,从而导致流量转发失败。通过本功能合理地配置BGP发送新增路由的速率可以避免上述情况发生。

2. 配置限制和指导

请根据设备的性能合理配置BGP发送新增路由的速率,如果设备的性能较高,可以将BGP发送新增路由的速率适当调大;如果设备的性能一般,建议将BGP发送新增路由的速率适当调小。

当网络发生震荡时,建议不要将BGP新增路由发布速率配置为0或过小,否则可能会导致失效路由无法及时撤销。

目前,仅支持对新增IPv4单播和IPv6单播路由的发送速率进行限制。

3. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     配置BGP新增路由发布速率。

route-rate-limit rate

缺省情况下,不限制BGP发送新增路由的发布速率。

2.7.7  配置设备重启后延迟发布BGP路由更新消息

1. 功能简介

配置了本功能时,在经过了重启且BGP进程恢复后,设备不能立刻向邻居发布更新消息,而是在一段延迟时间之后才能发送。这段延迟时间的作用是,设备重启后可以等待路由接收完成并优选后再向其他设备发布,以避免设备重启后路由信息不全,就发布给其他设备导致流量丢失的情况。

配置BGP路由更新消息延迟发布后,如果需要部分路由前缀不受延迟发布控制,可以使用前缀列表进行控制,通过前缀列表过滤的路由不受延迟发布的影响。

2. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     配置设备在重启且BGP进程恢复后,经过一段延迟时间才能发送更新消息。

bgp update-delay on-startup seconds

缺省情况下,设备重启且BGP进程恢复后,立刻向Established状态的BGP邻居发布路由更新消息。

(4)     (可选)配置通过前缀列表控制BGP延迟发布IPv4路由更新消息。

bgp update-delay on-startup prefix-list ipv4-prefix-list-name

缺省情况下,未配置通过前缀列表控制BGP延迟发布IPv4路由更新消息。

(5)     (可选)配置通过前缀列表控制BGP延迟发布IPv6路由更新消息。

bgp update-delay on-startup ipv6-prefix-list ipv6-prefix-list-name

缺省情况下,未配置通过前缀列表控制BGP延迟发布IPv6路由更新消息。

2.7.8  抑制发布同一路由的频率

1. 功能简介

BGP路由发生变化时,BGP路由器会发送Update消息通知对等体。如果同一路由频繁变化,BGP路由器会频繁发送Update消息更新路由,导致路由震荡。通过本配置,可以抑制向对等体/对等体组发布同一路由更新频率,从而避免每次路由变化都发送Update消息,降低路由震荡造成的影响。

本功能可以通过以下两种方式实现:

·     配置发布同一路由的时间间隔:

配置发布同一路由的时间间隔后,设备根据固定的时间间隔向对等体/对等体组发布同一路由的Update消息。

·     引用智能定时器:

引用智能定时器后,设备将根据网络震荡情况灵活控制向对等体/对等体组发布同一路由的时间间隔,减少路由变化时发送Update消息的次数。

智能定时器的工作机制为:设备在发送过一次Update消息后,将进入计算出的抑制周期。在抑制周期持续时间内,设备发送同一路由的次数将会受到限制。并且,当前抑制周期内的路由震荡次数将会影响下一个抑制周期的持续时间。路由震荡的次数增多时,抑制周期的持续时间增长;路由震荡次数减少时,抑制周期的持续时间不变或减少。当前抑制周期结束后,设备可以再发送一次Update消息,然后进入动态计算的下一个抑制周期。

抑制周期的计算方式以及作用的具体过程,请参见命令手册。

对于Update撤销消息,缺省情况下会立即向邻居发送。开启抑制发送撤销路由功能后,Update撤销消息的发送时间间隔由本功能控制。

2. 配置限制和指导

route-update-interval intelligent-timer命令必须与peer route-update-interval intelligent-timer命令配合使用。否则,智能定时器不会生效。

向某一对等体发布同一路由时,最小间隔时间为peer route-update-interval命令和route-update-delay命令中配置的较大的时间(若未配置peer route-update-interval命令,则使用缺省值与route-update-delay的配置值比较)。

3. 配置发布同一路由的时间间隔

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     配置向指定对等体/对等体组发布同一路由的时间间隔。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } route-update-interval interval

缺省情况下,向IBGP对等体发布同一路由的时间间隔为15秒,向EBGP对等体发布同一路由的时间间隔为30秒。

4. 使用智能定时器来抑制同一路由的发布频率

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     配置发布同一路由的智能定时器的参数。

route-update-interval intelligent-timer min-update-interval [ max-update-interval [ ignore-delay-count [ incremental-interval ] ] ]

缺省情况下,发布同一路由的智能定时器时间参数为:最小抑制周期为5秒,最大抑制周期为30秒,允许发布同一路由的次数为3次,抑制周期的惩罚增量为1。

(4)     配置使用智能定时器来抑制同一路由的发布频率。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } route-update-interval intelligent-timer

缺省情况下,向IBGP对等体发布同一路由的时间间隔为15秒,向EBGP对等体发布同一路由的时间间隔为30秒。

2.7.9  配置抑制发送撤销路由功能

1. 功能简介

缺省情况下,设备会立即向邻居发送用于撤销路由的Update消息,如果同一路由频繁变化,BGP路由器会频繁发送Update消息来撤销和更新路由,导致路由震荡。配置本功能后,设备将抑制撤销路由的发送,抑制后Update撤销消息每隔一段时间定期发送,发送的时间间隔由peer route-update-interval命令配置,从而避免频繁发送Update消息造成的路由震荡。

2. 配置限制和指导

对于配置本功能前已经存在的路由,需要撤销时仍会立即发送Update消息,不受本功能控制。

3. 配置步骤

(1)     进入BGP实例视图

bgp as-number [ instance instance-name ]

(2)     开启抑制发送撤销路由功能。

route-update-interval withdrawn enable

缺省情况下,抑制发送撤销路由功能处于关闭状态,即BGP路由器会立即向邻居发送撤销路由的更新消息。

2.7.10  配置BGP路由延迟发布功能

1. 功能简介

BGP路由发生变化以及BGP会话成功建立时,设备会发送Update消息通知对等体,当短时间内需要更新的路由数量较多时,可能出现本端还未将更新后的BGP路由刷新到FIB表项中,就已经通过Update消息将BGP路由发送给了对等体的情形,导致部分流量转发到本机时,由于无法找到转发路径而被丢弃。

配置本功能后,BGP路由发生变化以及BGP会话成功建立时,不会立即发送Update消息通知对等体,而是等待一段指定的时间后再发送Update消息。根据设备的性能合理配置BGP路由延迟发布时间,可以避免由于路由下发FIB表项不及时导致的流量丢失。

2. 配置限制和指导

向某一对等体发送BGP路由时,BGP路由延迟发布时间为route-update-delay命令和peer route-update-interval命令中配置的较大的时间(若未配置peer route-update-interval命令,则与其缺省值比较)。

目前,本功能仅支持对BGP IPv4单播路由、BGP IPv6单播路由、BGP VPNv4路由和BGP VPNv6路由的发布进行延迟。

3. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     配置BGP路由延迟发布功能,并指定延迟发布时间。

route-update-delay delay-value

缺省情况下,BGP路由延迟发布功能处于关闭状态,即BGP路由不延迟发布。

2.7.11  配置设备启动时为BGP路由应用启动策略

1. 功能简介

设备在启动时,通过为BGP路由应用启动策略,修改发送的BGP路由的属性值,使得接收端优选其他设备发送的路由,可以减少设备重启造成的流量丢失。

图2-1所示,Router B重启过程中,在路由没有完全收敛之前对外发布路由更新消息,可能会导致Router A通过Router B去往目的地的流量丢失。配置本功能后,在RouterB重启过程中,发送应用通过命令bgp policy on-startup med配置的MED属性值的路由更新消息,即修改路由更新消息中携带的属性值,使RouterA优选RouterC作为去往目的地的路由,从而减少设备重启造成的流量丢失。

图2-1 设备启动时为BGP路由应用启动策略示意图

 

2. 配置步骤

(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。

2.7.12  配置BGP会话的发送缓冲区大小

1. 功能简介

当设备短时间内向邻居发送大量BGP消息(通常为Update类型消息)时,如果本端发送缓冲区太小,可能造成部分BGP消息在发送前丢失,从而导致BGP收敛时间过长。通过本功能为设备设置合理的发送缓冲区大小,可提高BGP收敛性能。

2. 配置限制和指导

本功能仅对配置后新建立或重建的BGP会话生效。

本功能可以针对所有BGP会话配置,或仅针对特定的对等体/对等体组配置。对于特定的对等体/对等体组,与设备间BGP会话的发送缓冲区大小以peer send-buffer-size命令的配置为准,如果设备未指定该对等体/对等体组配置过peer send-buffer-size命令,则采用send-buffer-size命令的配置。

3. 配置步骤(全局配置)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     全局配置BGP会话发送缓冲区的大小。

send-buffer-size size

缺省情况下,BGP会话发送缓冲区大小为32768字节。

4. 配置步骤(对等体配置)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     配置与指定对等体/对等体组间BGP会话的发送缓冲区大小。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } send-buffer-size size

缺省情况下,未指定与对等体/对等体组间BGP会话的发送缓冲区大小,以send-buffer-size命令的配置为准。

本命令与send-buffer-size命令同时配置时,以本命令的配置为准。

2.8  配置BGP Update消息发送参数

2.8.1  功能简介

BGP发言者需要在路由更新时通过Update消息向对等体发布更新的路由。适当调整本地设备向外发送BGP Update消息的参数,可以避免短时间内发布大量Update消息过度占用本地设备和对等体设备系统资源的问题,同时提升BGP网络收敛性能。

可通过以下配置调整BGP Update消息的发送参数:

·     配置BGP会话发送Update消息的时间间隔和每次发送Update消息的最大数目

·     配置BGP Update消息的发送队列参数

2.8.2  配置限制和指导

BGP Update消息发送参数的相关配置仅对配置后新建立或重建的BGP会话生效。

2.8.3  配置BGP会话发送Update消息的时间间隔和每次发送Update消息的最大数目

1. 功能简介

配置本功能后,设备会按照Update消息的发送时间间隔将需要更新的路由组装成Update消息,并发送给对等体。同时,通过本配置可以指定每个Update消息中允许携带的最大路由更新数量。

2. 配置限制和指导

本功能可以针对所有BGP会话配置,或仅针对特定的对等体/对等体组配置。对于特定的对等体/对等体组,设备发送Update消息的时间间隔和每次发送Update消息的最大数目以peer advertisement-interval命令的配置为准,如果设备未指定该对等体/对等体组配置过peer advertisement-interval命令,则采用advertisement-interval命令的配置。

3. 配置步骤(全局配置)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     全局配置BGP会话发送Update消息的时间间隔和每次发送Update消息的最大数目。

advertisement-interval interval count

缺省情况下,未配置BGP会话发送Update消息的时间间隔以及每次发送的Update消息最大数目,需要更新路由时BGP会话立即发送Update消息,每次发送的Update消息数量不受限制。

4. 配置步骤(对等体配置)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     配置向指定对等体/对等体组发送Update消息的时间间隔和每次发送Update消息的最大数目。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertisement-interval interval count

缺省情况下,未配置向指定对等体/对等体组配置发送Update消息的时间间隔以及每次发送的Update消息最大数目,以advertisement-interval命令的配置为准。

本命令与advertisement-interval命令同时配置时,以本命令的配置为准。

2.8.4  配置BGP会话Update消息发送队列参数

1. 功能简介

各BGP会话将组装好的Update消息按顺序放入待发送队列,每当设备轮询到本BGP会话发送报文时,发送队首指定数量的报文(由send-count参数决定),当待发送队列中的报文达到上限(由packet-count参数决定)时,此会话将暂停组装Update消息。

2. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     BGP Update消息的发送队列参数

bgp queue-limit { packet packet-count | send send-count } *

缺省情况下,BGP处理Update报文时,最大报文组装数量为100个,每次发送报文数量为5个。

2.9  控制BGP路由信息的接收

2.9.1  限制从BGP对等体/对等体组接收的路由数量

1. 功能简介

通过本配置可以避免攻击者向路由器发送大量的BGP路由,对路由器进行攻击。

当路由器从指定对等体/对等体组接收的路由数量超过指定的最大值时,可以选择以下处理方式:

·     路由器中断与该对等体/对等体组的BGP会话,不再尝试重建会话。

·     路由器保持与该对等体/对等体组的BGP会话,可以继续接收路由,仅打印日志信息。

·     路由器保持与该对等体/对等体组的BGP会话,丢弃超出限制的路由,并打印日志信息。

·     路由器中断与该对等体/对等体组的BGP会话,经过指定的时间后自动与对等体/对等体组重建会话。

执行本配置任务时,还可以指定路由器产生日志信息的阈值,即路由器接收的路由数量与配置的最大值的百分比达到指定的阈值时,路由器将产生日志信息。

2. 配置步骤(IPv4单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv4单播地址族视图。

address-family ipv4 [ unicast ]

(4)     配置允许从对等体/对等体组接收的路由的最大数量。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } route-limit prefix-number [ { alert-only | discard | reconnect reconnect-time } | percentage-value ] *

缺省情况下,不限制从对等体/对等体组接收的路由数量。

3. 配置步骤(IPv6单播)

(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 ] | ipv6-address [ prefix-length ] } route-limit prefix-number [ { alert-only | discard | reconnect reconnect-time } | percentage-value ] *

缺省情况下,不限制从对等体/对等体组接收的路由数量。

2.9.2  配置BGP路由信息的接收策略

1. 接收策略配置方式简介

可以通过以下几种方式配置BGP路由信息的接收策略:

·     使用访问控制列表或地址前缀列表对从所有对等体接收的路由信息进行过滤。

·     从指定对等体或对等体组接收路由时,使用路由策略、访问控制列表、AS路径过滤列表或地址前缀列表对从该对等体或对等体组接收的路由信息进行过滤。

用户可以根据需求选择过滤策略。如果同时配置了几种过滤策略,则按照如下顺序过滤接收的路由:

·     filter-policy import

·     peer filter-policy import

·     peer as-path-acl import

·     peer prefix-list import

·     peer route-policy import

只有通过前面的过滤策略,才能继续执行后面的过滤策略;只有通过所有配置的过滤策略后,路由信息才能被接收。

2. 配置准备

配置BGP路由信息的发布/接收策略前,根据采取的策略,需要配置下列过滤器:

·     访问控制列表,详细配置过程请参见“ACL和QoS配置指导”中的“ACL”。

·     地址前缀列表,详细配置过程请参见“三层技术-IP路由配置指导”中的“路由策略”。

·     路由策略,详细配置过程请参见“三层技术-IP路由配置指导”中的“路由策略”。

·     AS路径过滤列表,详细配置过程请参见“三层技术-IP路由配置指导”中的“路由策略”。

3. 配置步骤(IPv4单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv4单播地址族视图。

address-family ipv4 [ unicast ]

(4)     配置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 import

¡     为对等体/对等体组设置基于AS路径过滤列表的路由接收过滤策略。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } as-path-acl as-path-acl-number import

¡     为对等体/对等体组设置基于IPv4地址前缀列表的路由接收过滤策略。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } prefix-list ipv4-prefix-list-name import

缺省情况下,不对接收的路由信息进行过滤。

4. 配置步骤(IPv6单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv6单播地址族视图。

address-family ipv6 [ unicast ]

(4)     配置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 import

¡     为对等体/对等体组设置基于AS路径过滤列表的路由接收过滤策略。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } as-path-acl as-path-acl-number import

¡     为对等体/对等体组设置基于IPv6地址前缀列表的路由接收过滤策略。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } prefix-list ipv6-prefix-list-name import

缺省情况下,不对接收的路由信息进行过滤。

2.9.3  配置SoO属性

1. 功能简介

为BGP对等体/对等体组配置SoO属性后,从该BGP对等体/对等体组接收路由时设备会为路由增加SoO属性,并且向该BGP对等体/对等体组发布路由时设备会检查路由的SoO属性,如果路由中携带的SoO属性与为对等体/对等体组配置的SoO属性相同,则不会将该路由发布给对等体/对等体组,从而避免路由环路。

2. 配置步骤(IPv4单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv4单播地址族视图。

address-family ipv4 [ unicast ]

(4)     为BGP对等体/对等体组配置SoO属性。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } soo site-of-origin

缺省情况下,没有为BGP对等体/对等体组配置SoO属性。

3. 配置步骤(IPv6单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv6单播地址族视图。

address-family ipv6 [ unicast ]

(4)     为BGP对等体/对等体组配置SoO属性。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } soo site-of-origin

缺省情况下,没有为BGP对等体/对等体组配置SoO属性。

2.9.4  配置链路带宽属性

1. 功能简介

为EBGP对等体/对等体组配置链路带宽属性后,从该EBGP对等体/对等体组接收路由时设备会为路由增加链路带宽属性,带宽值为与该直连EBGP建立邻居的接口带宽。该路由在传递给其他IBGP邻居时,将携带此链路带宽属性,设备可以根据路由携带的链路带宽属性对路由进行过滤。

2. 配置限制和指导

本功能仅对直连EBGP对等体/对等体组生效,如果指定的对等体/对等体组由直连EBGP邻居变为非直连EBGP邻居,则从该邻居接收到的路由时,不再添加链路带宽属性。

3. 配置步骤(IPv4单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv4单播地址族视图。

address-family ipv4 [ unicast ]

(4)     为BGP对等体/对等体组配置链路带宽属性。

peer { group-name | ipv4-address [ mask-length ] } bandwidth

缺省情况下,没有为对等体/对等体组配置链路带宽属性。

4. 配置步骤(IPv6单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv6单播地址族视图。

address-family ipv6 [ unicast ]

(4)     为BGP对等体/对等体组配置链路带宽属性。

peer { group-name | ipv6-address [ prefix-length ] } bandwidth

缺省情况下,没有为对等体/对等体组配置链路带宽属性。

2.10  配置BGP定时器

2.10.1  配置BGP会话的存活时间间隔与保持时间

1. 功能简介

当对等体间建立了BGP会话后,它们定时向对端发送Keepalive消息,以防止路由器认为BGP会话已中断。Keepalive消息的发送时间间隔称为存活时间间隔。

若路由器在设定的会话保持时间(Holdtime)内未收到对端的Keepalive消息或Update消息,则认为此BGP会话已中断,从而断开此BGP会话。

用户可以全局配置当前路由器上所有BGP会话的存活时间间隔与保持时间,也可以配置与指定对等体/对等体组建立的BGP会话的存活时间间隔和保持时间。如果同时配置了两者,则为指定对等体/对等体组配置的值具有较高的优先级。

存活时间间隔、会话保持时间的协商及计算方法如下:

·     如果当前路由器上配置的保持时间与对端设备(对等体)上配置的保持时间不一致,则数值较小者作为协商后的保持时间。协商的保持时间为0时,不向对等体发送Keepalive消息,与对等体之间的会话永远不会超时断开。

·     存活时间间隔不为0时,将协商的保持时间的三分之一与配置的存活时间间隔比较,取最小值作为存活时间间隔。

2. 配置限制和指导

配置的保持时间必须大于或等于存活时间的三倍。

本功能可以针对所有BGP会话配置,或仅针对特定的对等体/对等体组配置。对于特定的对等体/对等体组,与设备间BGP会话的存活时间间隔和保持时间以peer timer命令的配置为准,如果设备未指定该对等体/对等体组配置过peer timer命令,则采用timer命令的配置。

3. 配置步骤(IPv4对等体)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance 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秒。

配置timerpeer timer命令后,不会马上断开会话,而是等到其他条件触发会话重建(如复位BGP会话)时,再以配置的保持时间协商建立会话。

4. 配置步骤(IPv6对等体)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance 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秒。

配置timerpeer timer命令后,不会马上断开会话,而是等到其他条件触发会话重建(如复位BGP会话)时,再以配置的保持时间协商建立会话。

2.10.2  配置重新建立BGP会话的时间间隔

1. 功能简介

通过配置本功能可以控制重新建立BGP会话的速度:

·     当邻居关系建立失败,可以将定时器时间间隔的值调小,从而加快BGP会话建立的速度,便于路由快速收敛。

·     当邻居关系震荡时,可以将定时器时间间隔的值调大,从而减轻路由震荡。

2. 配置限制和指导

配置本地路由器与指定对等体/对等体组之间重新建立BGP会话的时间间隔比配置本地路由器与所有对等体之间重新建立BGP会话的时间间隔的优先级高。

3. 配置步骤(IPv4对等体)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance 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秒。

4. 配置步骤(IPv6对等体)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     配置本地路由器与对等体之间重新建立BGP会话的时间间隔。请选择其中一项进行配置。

¡     配置本地路由器与所有对等体之间重新建立BGP会话的时间间隔。

timer connect-retry retry-time

¡     配置本地路由器与指定IPv6 BGP对等体/对等体组之间重新建立BGP会话的时间间隔。

peer { group-name | ipv6-address [ prefix-length ] | link-local-address interface interface-type interface-number } timer connect-retry retry-time

缺省情况下,本地路由器与对等体/对等体组之间重新建立BGP会话的时间间隔为32秒。

2.11  配置BGP日志和告警功能

2.11.1  使能BGP日志功能

1. 功能简介

全局使能BGP日志记录功能,并使能与指定对等体/对等体组之间BGP会话的日志记录功能后,与该对等体/对等体组之间的BGP会话建立以及断开时会生成日志信息,通过display bgp peer ipv4 unicast log-info命令或display bgp peer ipv6 unicast log-info命令可以查看记录的日志信息。生成的日志信息还将被发送到设备的信息中心,通过设置信息中心的参数,决定日志信息的输出规则(即是否允许输出以及输出方向)。

有关信息中心参数的配置请参见“设备管理配置指导”中的“信息中心”。

2. 配置步骤(IPv4对等体)

(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会话的日志记录功能均处于开启状态。

3. 配置步骤(IPv6对等体)

(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会话的日志记录功能均处于开启状态。

2.11.2  使能BGP的路由抖动日志记录功能

1. 功能简介

使能BGP对应地址族的路由抖动日志记录功能后,当该地址族的路由发生抖动并满足日志输出条件时会生成路由抖动日志信息。生成的日志信息还将被发送到设备的信息中心,通过设置信息中心的参数,决定日志信息的输出规则(即是否允许输出以及输出方向)。

有关信息中心参数的配置请参见“设备管理配置指导”中的“信息中心”。

2. 配置步骤(IPv4单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv4单播地址族视图。

address-family ipv4 [ unicast ]

(4)     使能BGP的路由抖动日志记录功能。

log-route-flap monitor-time monitor-count [ log-count-limit | route-policy route-policy-name ] *

缺省情况下,BGP的路由抖动日志记录功能处于关闭状态。

3. 配置步骤(IPv6单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv6单播地址族视图。

address-family ipv6 [ unicast ]

(4)     使能BGP的路由抖动日志记录功能。

log-route-flap monitor-time monitor-count [ log-count-limit | route-policy route-policy-name ] *

缺省情况下,BGP的路由抖动日志记录功能处于关闭状态。

2.11.3  配置BGP网管功能

1. 功能简介

开启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”。

2. 配置步骤

(1)     进入系统视图。

system-view

(2)     开启BGP模块的告警功能。

snmp-agent trap enable bgp [ instance instance-name ]

缺省情况下,BGP模块的告警功能处于开启状态。

(3)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(4)     配置BGP实例的SNMP上下文。

snmp context-name context-name

缺省情况下,未配置BGP实例的SNMP上下文。

2.12  搭建基本BGP网络显示和维护

2.12.1  显示BGP配置及运行状况(IPv4单播)

可在任意视图下执行以下命令:

·     显示BGP IPv4单播对等体组的信息。

display bgp [ instance instance-name ] group ipv4 [ unicast ] [ group-name group-name ]

·     显示BGP IPv4单播地址族下的对等体或对等体组的状态和统计信息。

display bgp [ instance instance-name ] peer ipv4 [ unicast ] [ 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 ]

·     显示通过network命令发布的路由信息和通过network short-cut命令配置的Short-cut路由信息。

display bgp [ instance instance-name ] network ipv4 [ unicast ]

·     显示BGP IPv4单播路由信息。

display bgp [ instance instance-name ] routing-table ipv4 [ unicast ] [ ipv4-address [ { mask-length | mask } [ longest-match ] ] | ipv4-address [ mask-length | mask ] advertise-info | ipv4-address [ mask-length | mask ] { as-path | cluster-list | community | ext-community } | peer { ipv4-address | ipv6-address } { advertised-routes | received-routes } [ ipv4-address [ mask-length | mask ] | statistics ] | statistics ]

display bgp [ instance instance-name ] routing-table ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] as-path-acl { as-path-acl-number | as-path-acl-name }

display bgp [ instance instance-name ] routing-table ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] [ statistics ] community [ community-number&<1-32> | aa:nn&<1-32> ] [ internet | no-advertise | no-export | no-export-subconfed ] [ whole-match ]

display bgp [ instance instance-name ] routing-table ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] [ statistics ] community-list { basic-community-list-number | comm-list-name | adv-community-list-number }  [ whole-match ]

display bgp [ instance instance-name ] routing-table ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] [ statistics ] ext-community [ bandwidth link-bandwidth-value | color color | rt route-target | soo site-of-origin ]&<1-32> [ whole-match ]

·     显示BGP邻居断开的原因。

display bgp [ instance instance-name ] troubleshooting [ event-count ] [ reverse ]

·     显示BGP IPv4单播地址族下打包组的相关信息。

display bgp [ instance instance-name ] update-group ipv4 [ unicast ] [ ipv4-address | ipv6-address ]

·     显示所有BGP实例的信息。

display bgp instance-info

2.12.2  显示BGP配置及运行状况(IPv6单播)

可在任意视图下执行以下命令:

·     显示BGP IPv6单播对等体组的信息。

display bgp [ instance instance-name ] group ipv6 [ unicast ] [ group-name group-name ]

·     显示BGP IPv6单播地址族下的对等体或对等体组的状态和统计信息。

display bgp [ instance instance-name ] peer ipv6 [ unicast ] [ 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 ]

·     显示通过network命令发布的路由信息和通过network short-cut命令配置的Short-cut路由信息。

display bgp [ instance instance-name ] network ipv6 [ unicast ]

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 ] [ ipv6-address prefix-length [ advertise-info ] | ipv6-address prefix-length { as-path | cluster-list | community | ext-community } | peer { ipv4-address | ipv6-address } { advertised-routes | received-routes } [ ipv6-address prefix-length | statistics ] | statistics ]

display bgp [ instance instance-name ] routing-table ipv6 [ unicast ] [ vpn-instance vpn-instance-name ] as-path-acl { as-path-acl-number | as-path-acl-name }

display bgp [ instance instance-name ] routing-table ipv6 [ unicast ] [ vpn-instance vpn-instance-name ] [ statistics ] community [ community-number&<1-32> | aa:nn&<1-32> ] [ internet | no-advertise | no-export | no-export-subconfed ] [ whole-match ]

display bgp [ instance instance-name ] routing-table ipv6 [ unicast ] [ vpn-instance vpn-instance-name ] [ statistics ] community-list { basic-community-list-number | comm-list-name | adv-community-list-number } [ whole-match ]

display bgp [ instance instance-name ] routing-table ipv6 [ unicast ] [ vpn-instance vpn-instance-name ] [ statistics ] ext-community [ bandwidth link-bandwidth-value | color color | rt route-target | soo site-of-origin ]&<1-32> [ whole-match ]

·     显示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 ]

·     显示所有BGP实例的信息。

display bgp instance-info

2.12.3  复位BGP会话

1. 功能简介

当BGP路由策略或协议发生变化后,可以通过复位BGP会话使新的配置生效。执行复位BGP相关命令后,设备会断开并重新建立BGP邻居关系,以便更新BGP路由信息。

2. 配置限制和指导

注意

复位BGP会话时,会造成短暂的BGP会话中断。

 

3. 配置步骤

请在用户视图下执行以下命令:

·     复位IPv4单播地址族下的BGP会话。

reset bgp [ instance instance-name ] { as-number | ipv4-address [ mask-length ] | all | external | group group-name | internal } ipv4 [ unicast ]

reset bgp ipv6-address [ mask-length ] ipv4 [ unicast ]

·     复位IPv6单播地址族下的BGP会话。

reset bgp [ instance instance-name ] { as-number | ipv6-address [ prefix-length ] | all | external | group group-name | internal } ipv6 [ unicast ]

reset bgp ipv4-address [ mask-length ] ipv6 [ unicast ]

·     复位所有BGP会话。

reset bgp [ instance instance-name ] all

2.12.4  显示和清除BGP路由震荡统计信息

1. 显示BGP路由震荡统计信息

可在任意视图下执行以下命令:

·     显示BGP IPv4单播路由的震荡统计信息。

display bgp [ instance instance-name ] routing-table flap-info ipv4 [ unicast ] [ ipv4-address [ { mask-length | mask } [ longest-match ] ] | as-path-acl { as-path-acl-number | as-path-acl-name } ]

·     显示BGP IPv6单播路由的震荡统计信息。

display bgp [ instance instance-name ] routing-table flap-info ipv6 [ unicast ] [ ipv6-address prefix-length | as-path-acl { as-path-acl-number | as-path-acl-name } ]

2. 清除BGP路由震荡统计信息

请在用户视图下执行以下命令:

·     清除BGP IPv4单播路由的震荡统计信息。

reset bgp [ instance instance-name ] flap-info ipv4 [ unicast ] [ ipv4-address [ mask-length | mask ] | as-path-acl { as-path-acl-number | as-path-acl-name } | peer ipv4-address [ mask-length ] ]

·     清除BGP IPv6单播路由的震荡统计信息。

reset bgp [ instance instance-name ] flap-info ipv6 [ unicast ] [ ipv6-address prefix-length | as-path-acl { as-path-acl-number | as-path-acl-name } | peer ipv6-address [ prefix-length ] ]

2.13  搭建基本IPv4 BGP网络典型配置举例

2.13.1  BGP基本配置

1. 组网需求

图2-2所示,所有交换机均运行BGP协议。要求Switch A和Switch B之间建立EBGP连接,Switch B和Switch C之间建立IBGP连接,使得Switch C能够访问Switch A直连的8.1.1.0/24网段。

2. 组网图

图2-2 BGP基本配置组网图

 

3. 配置步骤

(1)     配置各接口的IP地址(略)

(2)     配置IBGP连接

¡     为了防止端口状态不稳定引起路由震荡,本举例使用Loopback接口来创建IBGP对等体。

¡     使用Loopback接口创建IBGP对等体时,因为Loopback接口不是两对等体实际连接的接口,所以,必须使用peer connect-interface命令将Loopback接口配置为BGP连接的源接口。

¡     在AS 65009内部,使用OSPF协议,保证Switch B到Switch C的Loopback接口路由可达, Switch C到Switch B的Loopback接口路由可达。

# 配置Switch B。

<SwitchB> system-view

[SwitchB] bgp 65009

[SwitchB-bgp-default] router-id 2.2.2.2

[SwitchB-bgp-default] peer 3.3.3.3 as-number 65009

[SwitchB-bgp-default] peer 3.3.3.3 connect-interface loopback 0

[SwitchB-bgp-default] address-family ipv4 unicast

[SwitchB-bgp-default-ipv4] peer 3.3.3.3 enable

[SwitchB-bgp-default-ipv4] quit

[SwitchB-bgp-default] quit

[SwitchB] ospf 1

[SwitchB-ospf-1] area 0

[SwitchB-ospf-1-area-0.0.0.0] network 2.2.2.2 0.0.0.0

[SwitchB-ospf-1-area-0.0.0.0] network 9.1.1.0 0.0.0.255

[SwitchB-ospf-1-area-0.0.0.0] quit

[SwitchB-ospf-1] quit

# 配置Switch C。

<SwitchC> system-view

[SwitchC] bgp 65009

[SwitchC-bgp-default] router-id 3.3.3.3

[SwitchC-bgp-default] peer 2.2.2.2 as-number 65009

[SwitchC-bgp-default] peer 2.2.2.2 connect-interface loopback 0

[SwitchC-bgp-default] address-family ipv4 unicast

[SwitchC-bgp-default-ipv4] peer 2.2.2.2 enable

[SwitchC-bgp-default-ipv4] quit

[SwitchC-bgp-default] quit

[SwitchC] ospf 1

[SwitchC-ospf-1] area 0

[SwitchC-ospf-1-area-0.0.0.0] network 3.3.3.3 0.0.0.0

[SwitchC-ospf-1-area-0.0.0.0] network 9.1.1.0 0.0.0.255

[SwitchC-ospf-1-area-0.0.0.0] quit

[SwitchC-ospf-1] quit

[SwitchC] display bgp peer ipv4

 

 BGP local router ID : 3.3.3.3

 Local AS number : 65009

 Total number of peers : 1                 Peers in established state : 1

 

  * - Dynamically created peer

  Peer                    AS  MsgRcvd  MsgSent OutQ PrefRcv Up/Down  State

 

  2.2.2.2              65009        2        2    0       0 00:00:13 Established

以上显示信息表明Switch B和Switch C之间的IBGP连接已经建立。

(3)     配置EBGP连接

¡     EBGP邻居关系的两台路由器(通常属于两个不同运营商),处于不同的AS域,对端的Loopback接口一般路由不可达,所以一般使用直连地址建立EBGP邻居。

¡     因为要求Switch C能够访问Switch A直连的8.1.1.0/24网段,所以,建立EBGP连接后,需要将8.1.1.0/24网段路由通告到BGP路由表中。

# 配置Switch A。

<SwitchA> system-view

[SwitchA] bgp 65008

[SwitchA-bgp-default] router-id 1.1.1.1

[SwitchA-bgp-default] peer 3.1.1.1 as-number 65009

[SwitchA-bgp-default] address-family ipv4 unicast

[SwitchA-bgp-default-ipv4] peer 3.1.1.1 enable

[SwitchA-bgp-default-ipv4] network 8.1.1.0 24

[SwitchA-bgp-default-ipv4] quit

[SwitchA-bgp-default] quit

# 配置Switch B。

[SwitchB] bgp 65009

[SwitchB-bgp-default] peer 3.1.1.2 as-number 65008

[SwitchB-bgp-default] address-family ipv4 unicast

[SwitchB-bgp-default-ipv4] peer 3.1.1.2 enable

[SwitchB-bgp-default-ipv4] quit

[SwitchB-bgp-default] quit

# 查看Switch B的BGP对等体的连接状态。

[SwitchB] display bgp peer ipv4

 

 BGP local router ID : 2.2.2.2

 Local AS number : 65009

 Total number of peers : 2                 Peers in established state : 2

 

  * - Dynamically created peer

  Peer                    AS  MsgRcvd  MsgSent OutQ PrefRcv Up/Down  State

 

  3.3.3.3              65009        4        4    0       0 00:02:49 Established

  3.1.1.2              65008        2        2    0       0 00:00:05 Established

可以看出,Switch B与Switch C、Switch B与Switch A之间的BGP连接均已建立。

# 查看Switch A的BGP路由表。

[SwitchA] display bgp routing-table ipv4

 

 Total number of routes: 1

 

 BGP local router ID is 1.1.1.1

 Status codes: * - valid, > - best, d - 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

# 显示Switch B的BGP路由表。

[SwitchB] display bgp routing-table ipv4

 

 Total number of routes: 1

 

 BGP local router ID is 2.2.2.2

 Status codes: * - valid, > - best, d - 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

# 显示Switch C的BGP路由表。

[SwitchC] display bgp routing-table ipv4

 

 Total number of routes: 1

 

 BGP local router ID is 3.3.3.3

 Status codes: * - valid, > - best, d - dampened, h - history,

               s - suppressed, S - stale, i - internal, e - external

               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

从路由表可以看出,Switch A没有学到AS 65009内部的任何路由,Switch C虽然学到了AS 65008中的8.1.1.0的路由,但因为下一跳3.1.1.2不可达,所以也不是有效路由。

(4)     配置BGP引入直连路由

在Switch B上配置BGP引入直连路由,以便Switch A能够获取到网段9.1.1.0/24的路由,Switch C能够获取到网段3.1.1.0/24的路由。

# 配置Switch B。

[SwitchB] bgp 65009

[SwitchB-bgp-default] address-family ipv4 unicast

[SwitchB-bgp-default-ipv4] import-route direct

[SwitchB-bgp-default-ipv4] quit

[SwitchB-bgp-default] quit

# 显示Switch A的BGP路由表。

[SwitchA] display bgp routing-table ipv4

 

 Total number of routes: 4

 

 BGP local router ID is 1.1.1.1

 Status codes: * - valid, > - best, d - 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?

以上显示信息表明,在Switch B上引入直连路由后,Switch A新增了到达2.2.2.2/32和9.1.1.0/24的两条路由。

# 显示Switch C的BGP路由表。

[SwitchC] display bgp routing-table ipv4

 

 Total number of routes: 4

 

 BGP local router ID is 3.3.3.3

 Status codes: * - valid, > - best, d - 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的路由变为有效路由,下一跳为Switch A的地址。

4. 验证配置

# 使用Ping进行验证。

[SwitchC] ping 8.1.1.1

Ping 8.1.1.1 (8.1.1.1): 56 data bytes, press CTRL+C to break

56 bytes from 8.1.1.1: icmp_seq=0 ttl=254 time=10.000 ms

56 bytes from 8.1.1.1: icmp_seq=1 ttl=254 time=4.000 ms

56 bytes from 8.1.1.1: icmp_seq=2 ttl=254 time=4.000 ms

56 bytes from 8.1.1.1: icmp_seq=3 ttl=254 time=3.000 ms

56 bytes from 8.1.1.1: icmp_seq=4 ttl=254 time=3.000 ms

 

--- Ping statistics for 8.1.1.1 ---

5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss

round-trip min/avg/max/std-dev = 3.000/4.800/10.000/2.638 ms

2.13.2  BGP与IGP交互配置

1. 组网需求

公司A的所有设备在AS 65008内,公司B的所有设备在AS 65009内,AS 65008和AS 65009通过设备Switch A和Switch B相连。

现要求实现Switch A能够访问AS 65009内的网段9.1.2.0/24,Switch C能够访问AS 65008内的网段8.1.1.0/24。

2. 组网图

图2-3 BGP与IGP交互配置组网图

 

3. 配置步骤

(1)     配置各接口的IP地址(略)

(2)     配置OSPF

在AS 65009内配置OSPF,使得Switch B能获取到到9.1.2.0/24网段的路由。

# 配置Switch B。

<SwitchB> system-view

[SwitchB] ospf 1

[SwitchB-ospf-1] area 0

[SwitchB-ospf-1-area-0.0.0.0] network 2.2.2.2 0.0.0.0

[SwitchB-ospf-1-area-0.0.0.0] network 9.1.1.0 0.0.0.255

[SwitchB-ospf-1-area-0.0.0.0] quit

[SwitchB-ospf-1] quit

# 配置Switch C。

<SwitchC> system-view

[SwitchC] ospf 1

[SwitchC-ospf-1] import-route direct

[SwitchC-ospf-1] area 0

[SwitchC-ospf-1-area-0.0.0.0] network 9.1.1.0 0.0.0.255

[SwitchC-ospf-1-area-0.0.0.0] quit

[SwitchC-ospf-1] quit

(3)     配置EBGP连接

配置EBGP连接,并在Switch A上将8.1.1.0/24网段通告到BGP路由表中,以便Switch B获取到网段8.1.1.0/24的路由。

# 配置Switch A。

<SwitchA> system-view

[SwitchA] bgp 65008

[SwitchA-bgp-default] router-id 1.1.1.1

[SwitchA-bgp-default] peer 3.1.1.1 as-number 65009

[SwitchA-bgp-default] address-family ipv4 unicast

[SwitchA-bgp-default-ipv4] peer 3.1.1.1 enable

[SwitchA-bgp-default-ipv4] network 8.1.1.0 24

[SwitchA-bgp-default-ipv4] quit

[SwitchA-bgp-default] quit

# 配置Switch B。

[SwitchB] bgp 65009

[SwitchB-bgp-default] router-id 2.2.2.2

[SwitchB-bgp-default] peer 3.1.1.2 as-number 65008

[SwitchB-bgp-default] address-family ipv4 unicast

[SwitchB-bgp-default-ipv4] peer 3.1.1.2 enable

(4)     配置BGP与IGP交互

¡     在Switch B上配置BGP引入OSPF路由,以便Switch A能够获取到到9.1.2.0/24网段的路由。

¡     在Switch B上配置OSPF引入BGP路由,以便Switch C能够获取到到8.1.1.0/24网段的路由。

# 在Switch B上配置BGP和OSPF互相引入路由。

[SwitchB-bgp-default-ipv4] import-route ospf 1

[SwitchB-bgp-default-ipv4] quit

[SwitchB-bgp-default] quit

[SwitchB] ospf 1

[SwitchB-ospf-1] import-route bgp

[SwitchB-ospf-1] quit

# 查看Switch A的BGP路由表。

[SwitchA] display bgp routing-table ipv4

 

 Total number of routes: 3

 

 BGP local router ID is 1.1.1.1

 Status codes: * - valid, > - best, d - 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?

# 查看SwitchC的OSPF路由表。

[SwitchC] display ospf routing

 

          OSPF Process 1 with Router ID 3.3.3.3

                   Routing Tables

 

 Routing for Network

 Destination        Cost     Type    NextHop         AdvRouter       Area

 9.1.1.0/24         1        Transit 9.1.1.2         3.3.3.3         0.0.0.0

 2.2.2.2/32         1        Stub    9.1.1.1         2.2.2.2         0.0.0.0

 

 Routing for ASEs

 Destination        Cost     Type    Tag         NextHop         AdvRouter

 8.1.1.0/24         1        Type2   1           9.1.1.1         2.2.2.2

 

 Total Nets: 3

 Intra Area: 2  Inter Area: 0  ASE: 1  NSSA: 0

4. 验证配置

# 使用Ping进行验证。

[SwitchA] ping -a 8.1.1.1 9.1.2.1

Ping 9.1.2.1 (9.1.2.1) from 8.1.1.1: 56 data bytes, press CTRL+C to break

56 bytes from 9.1.2.1: icmp_seq=0 ttl=254 time=10.000 ms

56 bytes from 9.1.2.1: icmp_seq=1 ttl=254 time=12.000 ms

56 bytes from 9.1.2.1: icmp_seq=2 ttl=254 time=2.000 ms

56 bytes from 9.1.2.1: icmp_seq=3 ttl=254 time=7.000 ms

56 bytes from 9.1.2.1: icmp_seq=4 ttl=254 time=9.000 ms

 

--- Ping statistics for 9.1.2.1 ---

5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss

round-trip min/avg/max/std-dev = 2.000/8.000/12.000/3.406 ms

[SwitchC] ping -a 9.1.2.1 8.1.1.1

Ping 8.1.1.1 (8.1.1.1) from 9.1.2.1: 56 data bytes, press CTRL+C to break

56 bytes from 8.1.1.1: icmp_seq=0 ttl=254 time=9.000 ms

56 bytes from 8.1.1.1: icmp_seq=1 ttl=254 time=4.000 ms

56 bytes from 8.1.1.1: icmp_seq=2 ttl=254 time=3.000 ms

56 bytes from 8.1.1.1: icmp_seq=3 ttl=254 time=3.000 ms

56 bytes from 8.1.1.1: icmp_seq=4 ttl=254 time=3.000 ms

 

--- Ping statistics for 8.1.1.1 ---

5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss

round-trip min/avg/max/std-dev = 3.000/4.400/9.000/2.332 ms

2.13.3  BGP动态对等体配置

1. 组网需求

所有交换机均运行BGP协议。Switch A需要分别与Switch B、Switch C和Switch D建立IBGP连接。在Switch A上配置BGP动态对等体,以简化配置。

配置Switch A作为路由反射器,在Switch B、Switch C和Switch D之间反射路由。

2. 组网图

图2-4 BGP动态对等体配置组网图

 

3. 配置步骤

(1)     配置各接口的IP地址(略)

(2)     配置IBGP连接

# 在Switch A上配置BGP动态对等体。

<SwitchA> system-view

[SwitchA] bgp 200

[SwitchA-bgp-default] router-id 1.1.1.1

[SwitchA-bgp-default] peer 10.1.0.0 16 as-number 200

[SwitchA-bgp-default] address-family ipv4

[SwitchA-bgp-default-ipv4] peer 10.1.0.0 16 enable

# 在Switch B上配置与Switch A建立IBGP连接。

<SwitchB> system-view

[SwitchB] bgp 200

[SwitchB-bgp-default] router-id 2.2.2.2

[SwitchB-bgp-default] peer 10.1.1.1 as-number 200

[SwitchB-bgp-default] address-family ipv4

[SwitchB-bgp-default-ipv4] peer 10.1.1.1 enable

# 在Switch C上配置与Switch A建立IBGP连接。

<SwitchC> system-view

[SwitchC] bgp 200

[SwitchC-bgp-default] router-id 3.3.3.3

[SwitchC-bgp-default] peer 10.1.2.1 as-number 200

[SwitchC-bgp-default] address-family ipv4

[SwitchC-bgp-default-ipv4] peer 10.1.2.1 enable

# 在Switch D上配置与Switch A建立IBGP连接。

<SwitchD> system-view

[SwitchD] bgp 200

[SwitchD-bgp-default] router-id 4.4.4.4

[SwitchD-bgp-default] peer 10.1.3.1 as-number 200

[SwitchD-bgp-default] address-family ipv4

[SwitchD-bgp-default-ipv4] peer 10.1.3.1 enable

# 查看Switch A的BGP对等体的连接状态。

[SwitchA] 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

以上显示信息表明Switch A与Switch B、Switch C和Switch D之间的IBGP连接已经建立。

(3)     配置路由反射器

# 配置Switch A作为路由反射器,将网段10.1.0.0/16中的对等体作为路由反射的客户机。

[SwitchA-bgp-default-ipv4] peer 10.1.0.0 16 reflect-client

(4)     配置发布网段路由

# 在Switch C上配置发布网段路由9.1.1.0/24。

[SwitchC-bgp-default-ipv4] network 9.1.1.0 24

4. 验证配置

# 在Switch A、Switch B和Switch D上查看BGP路由表,可以看到均已学习到路由9.1.1.0/24。以Switch A为例:

[SwitchA-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       ?

2.13.4  BGP路由聚合配置

1. 组网需求

通过在边界设备Switch C和外部网络设备Switch D之间建立EBGP连接,实现公司内部网络与外部网络的互通。

在公司内部,核心层设备Switch B与汇聚层设备Switch A之间配置静态路由,Switch B与Switch C之间配置OSPF,并在OSPF路由中引入静态路由,以实现公司内部网络的互通。

公司内部网络包括三个网段:192.168.64.0/24、192.168.74.0/24和192.168.99.0/24。在Switch C上配置路由聚合,将这三个网段的路由聚合为一条路由,以减少通过BGP发布的路由数量。

2. 组网图

图2-5 BGP路由聚合组网图

 

3. 配置步骤

(1)     配置各接口的IP地址(略)

(2)     在Switch A和Switch B之间配置静态路由

# 在Switch A上配置缺省路由,下一跳为Switch B。

<SwitchA> system-view

[SwitchA] ip route-static 0.0.0.0 0 192.168.212.1

# 在Switch B上配置静态路由,到达目的网络192.168.64.0/24、192.168.74.0/24和192.168.99.0/24的路由下一跳均为Switch A。

<SwitchB> system-view

[SwitchB] ip route-static 192.168.64.0 24 192.168.212.161

[SwitchB] ip route-static 192.168.74.0 24 192.168.212.161

[SwitchB] ip route-static 192.168.99.0 24 192.168.212.161

(3)     在Switch B和Switch C之间配置OSPF,并引入静态路由

# 在Switch B上配置OSPF发布本地网段路由,并引入静态路由。

[SwitchB] ospf

[SwitchB-ospf-1] area 0

[SwitchB-ospf-1-area-0.0.0.0] network 172.17.100.0 0.0.0.255

[SwitchB-ospf-1-area-0.0.0.0] quit

[SwitchB-ospf-1] import-route static

[SwitchB-ospf-1] quit

# 在Switch C上配置OSPF发布本地网段路由。

[SwitchC] ospf

[SwitchC-ospf-1] area 0

[SwitchC-ospf-1-area-0.0.0.0] network 172.17.100.0 0.0.0.255

[SwitchC-ospf-1-area-0.0.0.0] network 10.220.2.0 0.0.0.255

[SwitchC-ospf-1-area-0.0.0.0] quit

[SwitchC-ospf-1] quit

# 在Switch C上查看路由表信息,可以看到Switch C通过OSPF学习到了到达192.168.64.0/24、192.168.74.0/24和192.168.99.0/24网段的路由。

[SwitchC] display ip routing-table protocol ospf

 

Summary count : 5

 

OSPF Routing table Status : <Active>

Summary count : 3

 

Destination/Mask   Proto   Pre Cost        NextHop         Interface

192.168.64.0/24    O_ASE2  150 1           172.17.100.1    Vlan100

192.168.74.0/24    O_ASE2  150 1           172.17.100.1    Vlan100

192.168.99.0/24    O_ASE2  150 1           172.17.100.1    Vlan100

 

OSPF Routing table Status : <Inactive>

Summary count : 2

 

Destination/Mask   Proto   Pre Cost        NextHop         Interface

10.220.2.0/24      O_INTRA 10  1           10.220.2.16     Vlan200

172.17.100.0/24    O_INTRA 10  1           172.17.100.2    Vlan100

(4)     在Switch C和Switch D之间配置BGP,并引入OSPF路由

# 在Switch C上配置Switch D为其EBGP对等体,并引入OSPF路由。

[SwitchC] bgp 65106

[SwitchC-bgp-default] router-id 3.3.3.3

[SwitchC-bgp-default] peer 10.220.2.217 as-number 64631

[SwitchC-bgp-default] address-family ipv4 unicast

[SwitchC-bgp-default-ipv4] peer 10.220.2.217 enable

[SwitchC-bgp-default-ipv4] import-route ospf

# 在Switch D上配置Switch C为其EBGP对等体。

[SwitchD] bgp 64631

[SwitchD-bgp-default] router-id 4.4.4.4

[SwitchD-bgp-default] peer 10.220.2.16 as-number 65106

[SwitchD-bgp-default] address-family ipv4 unicast

[SwitchD-bgp-default-ipv4] peer 10.220.2.16 enable

[SwitchD-bgp-default-ipv4] quit

[SwitchD-bgp-default] quit

# 在Switch D上查看路由表信息,可以看到Switch D通过BGP学习到了到达192.168.64.0/24、192.168.74.0/24和192.168.99.0/24三个网段的路由。

[SwitchD] display ip routing-table protocol bgp

 

Summary count : 3

 

BGP Routing table Status : <Active>

Summary count : 3

 

Destination/Mask   Proto   Pre Cost        NextHop         Interface

192.168.64.0/24    BGP     255 1           10.220.2.16     Vlan200

192.168.74.0/24    BGP     255 1           10.220.2.16     Vlan200

192.168.99.0/24    BGP     255 1           10.220.2.16     Vlan200

 

BGP Routing table Status : <Inactive>

Summary count : 0

完成上述配置后,在Switch D上可以ping通192.168.64.0/24、192.168.74.0/24和192.168.99.0/24网段内的主机。

(5)     在Switch C上配置路由聚合

# 在Switch C上将路由192.168.64.0/24、192.168.74.0/24和192.168.99.0/24聚合为192.168.64.0/18,并抑制发布具体路由。

[SwitchC-bgp-default-ipv4] aggregate 192.168.64.0 18 detail-suppressed

[SwitchC-bgp-default-ipv4] quit

[SwitchC-bgp-default] quit

4. 验证配置

# 在Switch C上查看路由表信息,可以看到Switch C上产生了一条聚合路由192.168.64.0/18,该聚合路由的出接口为Null0。

[SwitchC] display ip routing-table | include 192.168

192.168.64.0/18    BGP     130 0           127.0.0.1       NULL0

192.168.64.0/24    O_ASE2  150 1           172.17.100.1    Vlan100

192.168.74.0/24    O_ASE2  150 1           172.17.100.1    Vlan100

192.168.99.0/24    O_ASE2  150 1           172.17.100.1    Vlan100

# 在Switch D上查看路由表信息,可以看到Switch D上到达公司内部三个网络的路由聚合为一条路由192.168.64.0/18。

[SwitchD] display ip routing-table protocol bgp

 

Summary count : 1

 

BGP Routing table Status : <Active>

Summary count : 1

 

Destination/Mask   Proto   Pre Cost        NextHop         Interface

192.168.64.0/18    BGP     255 0           10.220.2.16     Vlan200

 

BGP Routing table Status : <Inactive>

Summary count : 0

完成上述配置后,成功实现了路由聚合。并且,在Switch D上可以ping通192.168.64.0/24、192.168.74.0/24和192.168.99.0/24网段内的主机。

2.14  搭建基本IPv6 BGP网络典型配置举例

2.14.1  IPv6 BGP基本配置

1. 组网需求

图2-6所示,所有交换机均运行IPv6 BGP协议。Switch A位于AS 65008;Switch B和Switch C位于AS 65009。要求Switch A和Switch B之间建立EBGP连接,Switch B和Switch C之间建立IBGP连接,使得Switch C能够访问Switch A直连的50::/64网段。

2. 组网图

图2-6 IPv6 BGP基本配置组网图

 

3. 配置步骤

(1)     配置各接口的IPv6地址及Loopback接口的IPv4地址(略)

(2)     配置IBGP连接

# 配置Switch B。

<SwitchB> system-view

[SwitchB] bgp 65009

[SwitchB-bgp-default] router-id 2.2.2.2

[SwitchB-bgp-default] peer 9::2 as-number 65009

[SwitchB-bgp-default] address-family ipv6

[SwitchB-bgp-default-ipv6] peer 9::2 enable

[SwitchB-bgp-default-ipv6] quit

# 配置Switch C。

<SwitchC> system-view

[SwitchC] bgp 65009

[SwitchC-bgp-default] router-id 3.3.3.3

[SwitchC-bgp-default] peer 9::1 as-number 65009

[SwitchC-bgp-default] address-family ipv6

[SwitchC-bgp-default-ipv6] peer 9::1 enable

(3)     配置EBGP连接

# 配置Switch A。

<SwitchA> system-view

[SwitchA] bgp 65008

[SwitchA-bgp-default] router-id 1.1.1.1

[SwitchA-bgp-default] peer 10::1 as-number 65009

[SwitchA-bgp-default] address-family ipv6

[SwitchA-bgp-default-ipv6] peer 10::1 enable

# 配置Switch B。

[SwitchB-bgp-default] peer 10::2 as-number 65008

[SwitchB-bgp-default] address-family ipv6

[SwitchB-bgp-default-ipv6] peer 10::2 enable

(4)     配置通过IPv6 BGP发布的网段路由

# 配置Switch A。

[SwitchA-bgp-default-ipv6] network 10:: 64

[SwitchA-bgp-default-ipv6] network 50:: 64

[SwitchA-bgp-default-ipv6] quit

[SwitchA-bgp-default] quit

# 配置Switch B。

[SwitchB-bgp-default-ipv6] network 10:: 64

[SwitchB-bgp-default-ipv6] network 9:: 64

[SwitchB-bgp-default-ipv6] quit

[SwitchB-bgp-default] quit

# 配置Switch C。

[SwitchC-bgp-default-ipv6] network 9:: 64

[SwitchC-bgp-default-ipv6] quit

[SwitchC-bgp-default] quit

4. 验证配置

# 在Switch B上查看IPv6 BGP对等体的信息。可以看出,Switch A和Switch B之间建立了EBGP连接,Switch B和Switch C之间建立了IBGP连接。

[SwitchB] 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

# 在Switch A上查看IPv6 BGP路由表信息。可以看出,Switch A学习到了AS 65009内的路由信息。

[SwitchA] 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

# 在Switch C上查看IPv6 BGP路由表信息。可以看出,Switch C学习到了到达50::/64网段的路由。

[SwitchC] 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

# 在Switch C上可以ping通50::/64网段内的主机。(略)

2.15  BGP常见错误配置举例

2.15.1  连接无法进入Established状态

1. 故障现象

使用display bgp peer ipv4 unicast命令或display bgp peer ipv6 unicast命令查看BGP对等体的信息,发现与对端的连接无法进入Established状态。

2. 故障分析

BGP邻居的建立需要能够使用179端口建立TCP会话,以及能够正确交换Open消息。

3. 故障处理

(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)     检查路由表中是否存在到邻居的可用路由。

(6)     使用ping命令检查链路是否畅通。

(7)     使用display tcp verbose命令或display ipv6 tcp verbose命令检查TCP连接是否正常。

(8)     检查是否配置了禁止TCP端口179的ACL。

 

 


3 大规模BGP网络

3.1  大规模BGP网络的配置任务简介

大规模BGP网络配置任务如下:

·     配置BGP路由衰减

·     配置BGP团体

·     配置BGP路由反射

·     配置BGP联盟

¡     BGP联盟基本配置

¡     (可选)配置联盟兼容性

3.2  配置BGP路由衰减

1. 功能简介

通过配置BGP路由衰减,可以抑制不稳定的路由信息,不允许这类路由参与路由选择。

2. 配置限制和指导

本配置只对EBGP路由生效,对IBGP路由无效。

配置本功能后,EBGP邻居down了之后,来自该邻居的路由不会被删除,而是进行路由衰减。

3. 配置步骤(IPv4单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv4单播地址族视图。

address-family ipv4 [ unicast ]

(4)     配置BGP路由衰减。

dampening [ half-life-reachable half-life-unreachable reuse suppress ceiling | route-policy route-policy-name ] *

缺省情况下,未配置BGP路由衰减。

4. 配置步骤(IPv6单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv6单播地址族视图。

address-family ipv6 [ unicast ]

(4)     配置IPv6 BGP路由衰减。

dampening [ half-life-reachable half-life-unreachable reuse suppress ceiling | route-policy route-policy-name ] *

缺省情况下,未配置IPv6 BGP路由衰减。

3.3  配置BGP团体

1. 功能简介

缺省情况下,本地路由器不向对等体/对等体组发布团体属性和扩展团体属性。如果接收到的路由中携带团体属性或扩展团体属性,则本地路由器删除该团体属性或扩展团体属性后,再将路由发布给对等体/对等体组。

通过本配置可以允许本地路由器在向对等体发布路由时携带团体属性或扩展团体属性,以便根据团体属性或扩展团体属性对路由进行过滤和控制。本配置和路由策略配合使用,可以灵活地控制路由中携带的团体属性和扩展团体属性值,例如在路由中添加团体属性或扩展团体属性、修改路由中原有的团体属性或扩展团体属性值。路由策略的详细介绍,请参见“三层技术-IP路由配置指导”中的“路由策略”。

2. 配置步骤(IPv4单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv4单播地址族视图。

address-family ipv4 [ unicast ]

(4)     配置向对等体/对等体组发布团体属性。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise-community

缺省情况下,不向对等体/对等体组发布团体属性。

(5)     配置向对等体/对等体组发布扩展团体属性。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise-ext-community

缺省情况下,不向对等体/对等体组发布扩展团体属性。

(6)     (可选)对发布给对等体/对等体组的路由指定路由策略。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } route-policy route-policy-name export

缺省情况下,不指定对等体/对等体组的路由策略。

3. 配置步骤(IPv6单播)

(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 ] | ipv6-address [ prefix-length ] } advertise-community

缺省情况下,不向IPv6 BGP对等体/对等体组发布团体属性。

(5)     配置向对等体/对等体组发布扩展团体属性。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise-ext-community

缺省情况下,不向IPv6 BGP对等体/对等体组发布扩展团体属性。

(6)     (可选)对发布给IPv6 BGP对等体/对等体组的路由指定路由策略。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } route-policy route-policy-name export

缺省情况下,不指定对等体/对等体组的路由策略。

3.4  配置BGP路由反射

3.4.1  配置BGP路由反射器

1. 功能简介

如果同一个AS内有多个BGP路由器,为了减少在同一AS内建立的IBGP连接数,可以将一台BGP路由器配置为路由反射器,其他路由器作为前者的客户机,使反射器和它的客户机组成为一个集群。集群内部通过路由反射器在客户机之间反射路由,各客户机之间不需要建立BGP连接即可交换路由信息。

为了增加网络的可靠性和防止单点故障,可以在一个集群中配置一个以上的路由反射器,这时,网络管理员必须给位于相同集群中的每个路由反射器配置相同的集群ID,以避免路由环路。

当一台路由反射器可能连接网络中的多个集群时,可以为不同对等体/对等体组指定集群ID,以便对路由反射进行更精细控制。

BGP路由反射功能仅需在作为反射器的设备上进行配置,其他设备不需要感知本机在反射功能中作为客户机或是非客户机。

设备被配置为路由反射器后,发布路由的规则如下:

·     将从IBGP对等体中非客户机设备收到的路由,发布给本反射器的所有客户机;

·     将从IBGP对等体中客户机收到的路由,发布给本反射器所有的非客户机和客户机;

·     将从所有EBGP对等体收到的路由,发布给本反射器所有的非客户机和客户机。

2. 配置限制和指导

针同一个对等体/对等体组同时配置reflector cluster-idpeer cluster-id命令,则以peer cluster-id命令为准。如果未配置peer cluster-id命令为对等体/对等体组指定集群ID,则该对等体/对等体组的集群ID以reflector cluster-id命令的配置为准。

3. 配置步骤(IPv4单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     为对等体/对等体组配置路由反射器的集群ID。

peer { group-name | ipv4-address [ mask-length ] } cluster-id cluster-id

缺省情况下,没有为对等体/对等体组配置路由反射器的集群ID。

(4)     进入BGP IPv4单播地址族视图。

address-family ipv4 [ unicast ]

(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

缺省情况下,不允许路由反射器反射路由时修改路由属性。

4. 配置步骤(IPv6单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     为对等体/对等体组配置路由反射器的集群ID。

peer { group-name | ipv6-address [ prefix-length ] } cluster-id cluster-id

缺省情况下,没有为对等体/对等体组配置路由反射器的集群ID。

(4)     进入BGP IPv6单播地址族视图。

address-family ipv6 [ unicast ]

(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

缺省情况下,不允许路由反射器反射路由时修改路由属性。

3.4.2  配置忽略BGP路由的ORIGINATOR_ID属性

1. 功能简介

路由反射器从某个对等体接收到路由后,在反射该路由之前为其添加ORIGINATOR_ID属性,标识该路由在本AS内的起源。ORIGINATOR_ID属性的值为该对等体的Router ID。BGP路由器接收到路由后,将路由中的ORIGINATOR_ID属性值与本地的Router ID进行比较,如果二者相同则丢弃该路由,从而避免路由环路。

在某些特殊的组网中(如防火墙组网),如果需要接收ORIGINATOR_ID属性值与本地Router ID相同的路由,则需要通过本配置忽略BGP路由的ORIGINATOR_ID属性。

2. 配置限制和指导

请谨慎使用本命令。如果无法确保执行本命令后网络中不会产生环路,请不要执行本命令。

执行本命令后,BGP路由的CLUSTER_LIST属性也会被忽略。

3. 配置步骤(IPv4对等体)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     配置忽略BGP路由的ORIGINATOR_ID属性。

peer { group-name | ipv4-address [ mask-length ] } ignore-originatorid

缺省情况下,BGP路由器不会忽略BGP路由的ORIGINATOR_ID属性。

4. 配置步骤(IPv6对等体)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     配置忽略BGP路由的ORIGINATOR_ID属性。

peer { group-name | ipv6-address [ prefix-length ] } ignore-originatorid

缺省情况下,BGP路由器不会忽略BGP路由的ORIGINATOR_ID属性。

3.5  配置BGP联盟

3.5.1  功能简介

联盟是处理AS内部的IBGP网络连接激增的另一种方法,它将一个自治系统划分为若干个子自治系统,每个子自治系统内部的IBGP对等体建立全连接关系,子自治系统之间建立EBGP连接关系。

3.5.2  BGP联盟基本配置

(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邻居关系,需要在该路由器上指定该联盟体中除了自己还包含哪些子自治系统。

3.5.3  配置联盟兼容性

1. 功能简介

如果其他路由器的联盟实现机制不同于RFC 3065标准,可以通过如下配置与未采用RFC 3065配置的AS联盟兼容。

2. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     配置设备可以与未遵循RFC 3065实现联盟的路由器互通。

confederation nonstandard

缺省情况下,设备不能与未遵循RFC 3065实现联盟的路由器互通。

3.6  大规模BGP网络显示和维护

3.6.1  显示BGP配置及运行状况(IPv4单播)

可在任意视图下执行以下命令:

·     显示BGP IPv4单播路由的路由衰减参数。

display bgp [ instance instance-name ] dampening parameter ipv4 [ unicast ]

·     显示BGP IPv4单播对等体组的信息。

display bgp [ instance instance-name ] group ipv4 [ unicast ] [ group-name group-name ]

·     显示BGP IPv4单播地址族下的对等体或对等体组的状态和统计信息。

display bgp [ instance instance-name ] peer ipv4 [ unicast ] [ 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 dampened ipv4 [ unicast ]

3.6.2  显示BGP配置及运行状况(IPv6单播)

可在任意视图下执行以下命令:

·     显示BGP IPv6单播路由的路由衰减参数。

display bgp [ instance instance-name ] dampening parameter ipv6 [ unicast ]

·     显示BGP IPv6单播对等体组的信息。

display bgp [ instance instance-name ] group ipv6 [ unicast ] [ group-name group-name ]

·     显示BGP IPv6单播地址族下的对等体或对等体组的状态和统计信息。

display bgp [ instance instance-name ] peer ipv6 [ unicast ] [ 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 dampened ipv6 [ unicast ]

3.6.3  显示和清除BGP路由震荡统计信息

1. 显示BGP路由震荡统计信息

可在任意视图下执行以下命令:

·     显示BGP IPv4单播路由的震荡统计信息。

display bgp [ instance instance-name ] routing-table flap-info ipv4 [ unicast ] [ ipv4-address [ { mask-length | mask } [ longest-match ] ] | as-path-acl { as-path-acl-number | as-path-acl-name } ]

·     显示BGP IPv6单播路由的震荡统计信息。

display bgp [ instance instance-name ] routing-table flap-info ipv6 [ unicast ] [ ipv6-address prefix-length | as-path-acl { as-path-acl-number | as-path-acl-name } ]

2. 清除BGP路由震荡统计信息

请在用户视图下执行以下命令:

·     清除BGP IPv4单播路由的震荡统计信息。

reset bgp [ instance instance-name ] flap-info ipv4 [ unicast ] [ ipv4-address [ mask-length | mask ] | as-path-acl { as-path-acl-number | as-path-acl-name } | peer ipv4-address [ mask-length ] ]

·     清除BGP IPv6单播路由的震荡统计信息。

reset bgp [ instance instance-name ] flap-info ipv6 [ unicast ] [ ipv6-address prefix-length | as-path-acl { as-path-acl-number | as-path-acl-name } | peer ipv6-address [ prefix-length ] ]

3.7  配置大规模BGP网络典型配置举例

3.7.1  BGP团体配置

1. 组网需求

Switch B分别与Switch A、Switch C之间建立EBGP连接。

通过在Switch A上配置NO_EXPORT团体属性,使得AS 10发布到AS 20中的路由,不会再被AS 20发布到其他AS。

2. 组网图

图3-1 BGP团体组网图

 

3. 配置步骤

(1)     配置各接口的IP地址(略)

(2)     配置EBGP

# 配置Switch A。

<SwitchA> system-view

[SwitchA] bgp 10

[SwitchA-bgp-default] router-id 1.1.1.1

[SwitchA-bgp-default] peer 200.1.2.2 as-number 20

[SwitchA-bgp-default] address-family ipv4 unicast

[SwitchA-bgp-default-ipv4] peer 200.1.2.2 enable

[SwitchA-bgp-default-ipv4] network 9.1.1.0 255.255.255.0

[SwitchA-bgp-default] quit

# 配置Switch B。

<SwitchB> system-view

[SwitchB] bgp 20

[SwitchB-bgp-default] router-id 2.2.2.2

[SwitchB-bgp-default] peer 200.1.2.1 as-number 10

[SwitchB-bgp-default] peer 200.1.3.2 as-number 30

[SwitchB-bgp-default] address-family ipv4 unicast

[SwitchB-bgp-default-ipv4] peer 200.1.2.1 enable

[SwitchB-bgp-default-ipv4] peer 200.1.3.2 enable

[SwitchB-bgp-default-ipv4] quit

[SwitchB-bgp-default] quit

# 配置Switch C。

<SwitchC> system-view

[SwitchC] bgp 30

[SwitchC-bgp-default] router-id 3.3.3.3

[SwitchC-bgp-default] peer 200.1.3.1 as-number 20

[SwitchC-bgp-default] address-family ipv4 unicast

[SwitchC-bgp-default-ipv4] peer 200.1.3.1 enable

[SwitchC-bgp-default-ipv4] quit

[SwitchC-bgp-default] quit

# 查看Switch B的路由表。

[SwitchB] display bgp routing-table ipv4 9.1.1.0

 

 BGP local router ID: 2.2.2.2

 Local AS number: 20

 

 Paths:   1 available, 1 best

 

 BGP routing table information of 9.1.1.0/24:

 From            : 200.1.2.1 (1.1.1.1)

 Rely nexthop    : 200.1.2.1

 Original nexthop: 200.1.2.1

 OutLabel        : NULL

 RxPathID        : 0x0

 TxPathID        : 0x0

 AS-path         : 10

 Origin          : igp

 Attribute value : pref-val 0

 State           : valid, external, best

 IP precedence   : N/A

 QoS local ID    : N/A

 Traffic index   : N/A

 VPN-Peer UserID : N/A

 DSCP            : N/A

 EXP             : N/A

 

# 查看Switch B的路由发送信息。

[SwitchB] display bgp routing-table ipv4 9.1.1.0 advertise-info

 

 BGP local router ID: 2.2.2.2

 Local AS number: 20

 

 Paths:   1 best

 

 BGP routing table information of 9.1.1.0/24(TxPathID:0):

 Advertised to peers (1 in total):

    200.1.3.2

可以看出,Switch B能够把到达目的地址9.1.1.0/24的路由通过BGP发布出去。

# 查看Switch C的BGP路由表。

[SwitchC] display bgp routing-table ipv4

 

 Total number of routes: 1

 

 BGP local router ID is 3.3.3.3

 Status codes: * - valid, > - best, d - dampened, h - history,

               s - suppressed, S - stale, i - internal, e - external

               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

可以看出,Switch C从Switch B那里学到了目的地址为9.1.1.0/24的路由。

(3)     配置BGP团体属性

# 配置路由策略。

[SwitchA] route-policy comm_policy permit node 0

[SwitchA-route-policy-comm_policy-0] apply community no-export

[SwitchA-route-policy-comm_policy-0] quit

# 应用路由策略。

[SwitchA] bgp 10

[SwitchA-bgp-default] address-family ipv4 unicast

[SwitchA-bgp-default-ipv4] peer 200.1.2.2 route-policy comm_policy export

[SwitchA-bgp-default-ipv4] peer 200.1.2.2 advertise-community

4. 验证配置

# 查看Switch B的路由表。

[SwitchB] display bgp routing-table ipv4 9.1.1.0

 

 BGP local router ID: 2.2.2.2

 Local AS number: 20

 

 Paths:   1 available, 1 best

 

 BGP routing table information of 9.1.1.0/24:

 From            : 200.1.2.1 (1.1.1.1)

 Rely nexthop    : 200.1.2.1

 Original nexthop: 200.1.2.1

 OutLabel        : NULL

 RxPathID        : 0x0

 TxPathID        : 0x0

 Community       : No-Export

 AS-path         : 10

 Origin          : igp

 Attribute value : pref-val 0

 State           : valid, external, best

 IP precedence   : N/A

 QoS local ID    : N/A

 Traffic index   : N/A

 VPN-Peer UserID : N/A

 DSCP            : N/A

 EXP             : N/A

 

# 查看Switch B的路由发送信息。

[SwitchB] display bgp routing-table ipv4 9.1.1.0 advertise-info

 

 BGP local router ID: 2.2.2.2

 Local AS number: 20

 

 Paths:   1 best

 

 BGP routing table information of 9.1.1.0/24(TxPathID:0):

 Not advertised to any peers yet

# 查看Switch C的BGP路由表。

[SwitchC] display bgp routing-table ipv4

 

 Total number of routes: 0

在Switch B的BGP路由表中可以看到配置的团体属性,Switch B不会通过BGP将到达目的地址9.1.1.0/24的路由发布出去。

3.7.2  BGP路由反射器配置

1. 组网需求

所有交换机运行BGP协议,Switch A与Switch B建立EBGP连接,Switch C与Switch B和Switch D之间建立IBGP连接。

Switch C作为路由反射器,Switch B和Switch D为Switch C的客户机。

Switch D能够通过Switch C学到路由20.0.0.0/8。

2. 组网图

图3-2 配置BGP路由反射器的组网图

 

3. 配置步骤

(1)     配置各接口的IP地址,并在AS 200内配置OSPF(略)

(2)     配置BGP连接

# 配置Switch A。

<SwitchA> system-view

[SwitchA] bgp 100

[SwitchA-bgp-default] router-id 1.1.1.1

[SwitchA-bgp-default] peer 192.1.1.2 as-number 200

[SwitchA-bgp-default] address-family ipv4 unicast

[SwitchA-bgp-default-ipv4] peer 192.1.1.2 enable

# 通告20.0.0.0/8网段路由到BGP路由表中。

[SwitchA-bgp-default-ipv4] network 20.0.0.0

[SwitchA-bgp-default-ipv4] quit

[SwitchA-bgp-default] quit

# 配置Switch B。

<SwitchB> system-view

[SwitchB] bgp 200

[SwitchB-bgp-default] router-id 2.2.2.2

[SwitchB-bgp-default] peer 192.1.1.1 as-number 100

[SwitchB-bgp-default] peer 193.1.1.1 as-number 200

[SwitchB-bgp-default] address-family ipv4 unicast

[SwitchB-bgp-default-ipv4] peer 192.1.1.1 enable

[SwitchB-bgp-default-ipv4] peer 193.1.1.1 enable

[SwitchB-bgp-default-ipv4] peer 193.1.1.1 next-hop-local

[SwitchB-bgp-default-ipv4] quit

[SwitchB-bgp-default] quit

# 配置Switch C。

<SwitchC> system-view

[SwitchC] bgp 200

[SwitchC-bgp-default] router-id 3.3.3.3

[SwitchC-bgp-default] peer 193.1.1.2 as-number 200

[SwitchC-bgp-default] peer 194.1.1.2 as-number 200

[SwitchC-bgp-default] address-family ipv4 unicast

[SwitchC-bgp-default-ipv4] peer 193.1.1.2 enable

[SwitchC-bgp-default-ipv4] peer 194.1.1.2 enable

[SwitchC-bgp-default-ipv4] quit

[SwitchC-bgp-default] quit

# 配置Switch D。

<SwitchD> system-view

[SwitchD] bgp 200

[SwitchD-bgp-default] router-id 4.4.4.4

[SwitchD-bgp-default] peer 194.1.1.1 as-number 200

[SwitchD-bgp-default] address-family ipv4 unicast

[SwitchD-bgp-default-ipv4] peer 194.1.1.1 enable

[SwitchD-bgp-default-ipv4] quit

[SwitchD-bgp-default] quit

(3)     配置路由反射器

# 配置Switch C。

[SwitchC] bgp 200

[SwitchC-bgp-default] address-family ipv4 unicast

[SwitchC-bgp-default-ipv4] peer 193.1.1.2 reflect-client

[SwitchC-bgp-default-ipv4] peer 194.1.1.2 reflect-client

[SwitchC-bgp-default-ipv4] quit

[SwitchC-bgp-default] quit

4. 验证配置

# 查看Switch B的BGP路由表。

[SwitchB] display bgp routing-table ipv4

 

 Total number of routes: 1

 

 BGP local router ID is 2.2.2.2

 Status codes: * - valid, > - best, d - 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/8         192.1.1.1       0                     0       100i

# 查看Switch D的BGP路由表。

[SwitchD] display bgp routing-table ipv4

 

 Total number of routes: 1

 

 BGP local router ID is 4.4.4.4

 Status codes: * - valid, > - best, d - 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/8         193.1.1.2       0          100        0       100i

可以看出,Switch D从Switch C已经学到了20.0.0.0/8路由。

3.7.3  BGP联盟配置

1. 组网需求

AS 200中有多台BGP交换机,为了减少IBGP的连接数,现将他们划分为3个子自治系统:AS 65001、AS 65002和AS 65003。其中AS 65001内的三台交换机建立IBGP全连接。

2. 组网图

图3-3 配置联盟组网图

 

设备

接口

IP地址

设备

接口

IP地址

Switch A

Vlan-int100

200.1.1.1/24

Switch D

Vlan-int200

10.1.5.1/24

 

Vlan-int200

10.1.1.1/24

 

Vlan-int400

10.1.3.2/24

 

Vlan-int300

10.1.2.1/24

Switch E

Vlan-int200

10.1.5.2/24

 

Vlan-int400

10.1.3.1/24

 

Vlan-int500

10.1.4.2/24

 

Vlan-int500

10.1.4.1/24

Switch F

Vlan-int100

200.1.1.2/24

Switch B

Vlan-int200

10.1.1.2/24

 

Vlan-int600

9.1.1.1/24

Switch C

Vlan-int300

10.1.2.2/24

 

 

3. 配置步骤

(1)     配置各接口的IP地址(略)

(2)     配置BGP联盟

# 配置Switch A。

<SwitchA> system-view

[SwitchA] bgp 65001

[SwitchA-bgp-default] router-id 1.1.1.1

[SwitchA-bgp-default] confederation id 200

[SwitchA-bgp-default] confederation peer-as 65002 65003

[SwitchA-bgp-default] peer 10.1.1.2 as-number 65002

[SwitchA-bgp-default] peer 10.1.2.2 as-number 65003

[SwitchA-bgp-default] address-family ipv4 unicast

[SwitchA-bgp-default-ipv4] peer 10.1.1.2 enable

[SwitchA-bgp-default-ipv4] peer 10.1.2.2 enable

[SwitchA-bgp-default-ipv4] peer 10.1.1.2 next-hop-local

[SwitchA-bgp-default-ipv4] peer 10.1.2.2 next-hop-local

[SwitchA-bgp-default-ipv4] quit

[SwitchA-bgp-default] quit

# 配置Switch B。

<SwitchB> system-view

[SwitchB] bgp 65002

[SwitchB-bgp-default] router-id 2.2.2.2

[SwitchB-bgp-default] confederation id 200

[SwitchB-bgp-default] confederation peer-as 65001 65003

[SwitchB-bgp-default] peer 10.1.1.1 as-number 65001

[SwitchB-bgp-default] address-family ipv4 unicast

[SwitchB-bgp-default-ipv4] peer 10.1.1.1 enable

[SwitchB-bgp-default-ipv4] quit

[SwitchB-bgp-default] quit

# 配置Switch C。

<SwitchC> system-view

[SwitchC] bgp 65003

[SwitchC-bgp-default] router-id 3.3.3.3

[SwitchC-bgp-default] confederation id 200

[SwitchC-bgp-default] confederation peer-as 65001 65002

[SwitchC-bgp-default] peer 10.1.2.1 as-number 65001

[SwitchC-bgp-default] address-family ipv4 unicast

[SwitchC-bgp-default-ipv4] peer 10.1.2.1 enable

[SwitchC-bgp-default-ipv4] quit

[SwitchC-bgp-default] quit

(3)     配置AS 65001内的IBGP连接

# 配置Switch A。

[SwitchA] bgp 65001

[SwitchA-bgp-default] peer 10.1.3.2 as-number 65001

[SwitchA-bgp-default] peer 10.1.4.2 as-number 65001

[SwitchA-bgp-default] address-family ipv4 unicast

[SwitchA-bgp-default-ipv4] peer 10.1.3.2 enable

[SwitchA-bgp-default-ipv4] peer 10.1.4.2 enable

[SwitchA-bgp-default-ipv4] peer 10.1.3.2 next-hop-local

[SwitchA-bgp-default-ipv4] peer 10.1.4.2 next-hop-local

[SwitchA-bgp-default-ipv4] quit

[SwitchA-bgp-default] quit

# 配置Switch D。

<SwitchD> system-view

[SwitchD] bgp 65001

[SwitchD-bgp-default] router-id 4.4.4.4

[SwitchD-bgp-default] confederation id 200

[SwitchD-bgp-default] peer 10.1.3.1 as-number 65001

[SwitchD-bgp-default] peer 10.1.5.2 as-number 65001

[SwitchD-bgp-default] address-family ipv4 unicast

[SwitchD-bgp-default-ipv4] peer 10.1.3.1 enable

[SwitchD-bgp-default-ipv4] peer 10.1.5.2 enable

[SwitchD-bgp-default-ipv4] quit

[SwitchD-bgp-default] quit

# 配置Switch E。

<SwitchE> system-view

[SwitchE] bgp 65001

[SwitchE-bgp-default] router-id 5.5.5.5

[SwitchE-bgp-default] confederation id 200

[SwitchE-bgp-default] peer 10.1.4.1 as-number 65001

[SwitchE-bgp-default] peer 10.1.5.1 as-number 65001

[SwitchE-bgp-default] address-family ipv4 unicast

[SwitchE-bgp-default-ipv4] peer 10.1.4.1 enable

[SwitchE-bgp-default-ipv4] peer 10.1.5.1 enable

[SwitchE-bgp-default-ipv4] quit

[SwitchE-bgp-default] quit

(4)     配置AS 100和AS 200之间的EBGP连接

# 配置Switch A。

[SwitchA] bgp 65001

[SwitchA-bgp-default] peer 200.1.1.2 as-number 100

[SwitchA-bgp-default] address-family ipv4 unicast

[SwitchA-bgp-default-ipv4] peer 200.1.1.2 enable

[SwitchA-bgp-default-ipv4] quit

[SwitchA-bgp-default] quit

# 配置Switch F。

<SwitchF> system-view

[SwitchF] bgp 100

[SwitchF-bgp-default] router-id 6.6.6.6

[SwitchF-bgp-default] peer 200.1.1.1 as-number 200

[SwitchF-bgp-default] address-family ipv4 unicast

[SwitchF-bgp-default-ipv4] peer 200.1.1.1 enable

[SwitchF-bgp-default-ipv4] network 9.1.1.0 255.255.255.0

[SwitchF-bgp-default-ipv4] quit

[SwitchF-bgp-default] quit

4. 验证配置

# 查看Switch B的BGP路由表。Switch C的BGP路由表与此类似。

[SwitchB] display bgp routing-table ipv4

 

 Total number of routes: 1

 

 BGP local router ID is 2.2.2.2

 Status codes: * - valid, > - best, d - 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

[SwitchB] display bgp routing-table ipv4 9.1.1.0

 

 BGP local router ID: 2.2.2.2

 Local AS number: 65002

 

 Paths:   1 available, 1 best

 

 BGP routing table information of 9.1.1.0/24:

 From            : 10.1.1.1 (1.1.1.1)

 Rely nexthop    : 10.1.1.1

 Original nexthop: 10.1.1.1

 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

 VPN-Peer UserID : N/A

 DSCP            : N/A

 EXP             : N/A

 

# 查看Switch D的BGP路由表。

[SwitchD] display bgp routing-table ipv4

 

 Total number of routes: 1

 

 BGP local router ID is 4.4.4.4

 Status codes: * - valid, > - best, d - 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

[SwitchD] display bgp routing-table ipv4 9.1.1.0

 

 BGP local router ID: 4.4.4.4

 Local AS number: 65001

 

 Paths:   1 available, 1 best

 

 BGP routing table information of 9.1.1.0/24:

 From            : 10.1.3.1 (1.1.1.1)

 Rely nexthop    : 10.1.3.1

 Original nexthop: 10.1.3.1

 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

 VPN-Peer UserID : N/A

 DSCP            : N/A

 EXP             : N/A

 

通过以上显示信息可以看出:

·     Switch F只需要和Switch A建立EBGP连接,而不需要和Switch B、Switch C建立连接,同样可以通过联盟将路由信息传递给Switch B和Switch C。

Switch B和Switch D在同一个联盟里,但是属于不同的子自治系统,它们都是通过Switch A来获取外部路由信息,生成的BGP路由表项也是一致的,等效于在同一个自治系统内,但是又不需要物理上全连接。

 

 


4 控制BGP路径的选择

4.1  控制BGP路径的选择配置任务简介

BGP具有很多路由属性,通过配置这些属性可以控制BGP路径的选择。

控制BGP路径选择的配置任务如下:

(1)     配置BGP的路由优先级

(2)     配置NEXT_HOP属性

¡     配置将下一跳属性修改为自身的地址

¡     配置不修改下一跳属性

¡     配置向IPv6 BGP对等体发布路由时下一跳信息只携带全球单播地址

(3)     为接收路由分配首选值

(4)     配置本地优先级的缺省值

(5)     配置AS_PATH属性

¡     允许本地AS号出现的次数

¡     配置BGP在选择最优路由时忽略AS_PATH属性

¡     为对等体/对等体组指定一个虚拟的自治系统号

¡     配置AS号替换功能

¡     配置发送BGP更新消息时AS_PATH属性中不携带私有AS号

¡     配置不检测EBGP路由的第一个AS号

¡     配置BGP根据AS号数量过滤路由

(6)     配置MED属性

¡     配置MED缺省值

¡     配置允许比较来自不同AS路由的MED属性值

¡     配置对来自同一AS的路由进行MED排序优选

¡     配置允许比较来自同一联盟不同子自治系统邻居路由的MED属性值

¡     配置BGP选路时综合考虑MED值与到达路由下一跳的IGP Metric值

(7)     配置将发送给邻居的BGP路由调整为最低优先级

¡     配置邻居状态由Down变为Up后发送最低优先级路由

¡     配置设备重启后发送最低优先级路由

¡     (可选)恢复发送正常优先级的路由

(8)     配置AIGP属性

(9)     配置BGP在选择最优路由时忽略IGP Metric的比较

(10)     配置BGP在选择最优路由时忽略Router ID

4.2  配置BGP的路由优先级

1. 功能简介

路由器上可能同时运行多个动态路由协议,存在各个路由协议之间路由信息共享和选择的问题。系统为每一种路由协议设置一个优先级,在不同协议发现同一条路由时,优先级高的路由将被优先选择。

用户可以通过preference命令修改EBGP路由、IBGP路由以及本地产生的BGP路由的优先级,或应用路由策略为通过匹配规则过滤的特定路由配置优先级,没有通过过滤的路由使用缺省优先级。

缺省情况下,EBGP路由的优先级低于本地产生的BGP路由的优先级。设备上存在到达某一目的网络的EBGP路由和本地产生的BGP路由时,不会选择EBGP路由。通过执行network short-cut命令将一条EBGP路由配置成short-cut,可以使得指定EBGP路由的优先级与本地产生的BGP路由的优先级相同,从而提高该EBGP路由成为最佳路由的可能性。

2. 配置步骤(IPv4单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv4单播地址族视图。

address-family ipv4 [ unicast ]

(4)     配置BGP路由的优先级。

preference { external-preference internal-preference local-preference | route-policy route-policy-name }

缺省情况下,EBGP路由的优先级为255,IBGP路由的优先级为255,本地产生的BGP路由的优先级为130。

(5)     (可选)提高接收到的指定EBGP路由的路由优先级。

network ipv4-address [ mask-length | mask ] short-cut

缺省情况下,接收到的EBGP路由的路由优先级为255。

3. 配置步骤(IPv6单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv6单播地址族视图。

address-family ipv6 [ unicast ]

(4)     配置BGP路由的优先级。

preference { external-preference internal-preference local-preference | route-policy route-policy-name }

缺省情况下,EBGP路由的优先级为255,IBGP路由的优先级为255,本地产生的BGP路由的优先级为130。

(5)     (可选)提高接收到的指定EBGP路由的路由优先级。

network ipv6-address prefix-length short-cut

缺省情况下,接收到的EBGP路由的路由优先级为255。

4.3  配置NEXT_HOP属性

4.3.1  配置将下一跳属性修改为自身的地址

1. 功能简介

缺省情况下,路由器向IBGP对等体/对等体组发布路由时,不将自身地址作为下一跳,但有的时候为了保证IBGP邻居能够找到下一跳,可以配置将自身地址作为下一跳。以下图为例,Router A与Router B建立EBGP邻居关系,Router B与Router C建立IBGP邻居关系,Router B在向Router C发布从Router A学到的BGP路由时,如果Router C上没有到达1.1.1.1/24的路由,可以在Router B上配置peer next-hop-local命令将3.1.1.1/24作为下一跳,这样,Router C就能找到下一跳。

图4-1 配置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-2 配置BGP NEXT_HOP属性应用组网图二

 

2. 配置限制和指导

如果配置了BGP负载分担,则不论是否配置了peer next-hop-local命令,本地路由器向IBGP对等体/对等体组发布路由时都先将下一跳地址改变为自身地址。

3. 配置步骤(IPv4单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv4单播地址族视图。

address-family ipv4 [ unicast ]

(4)     配置向对等体/对等体组发布路由时,将下一跳属性修改为自身的地址。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } next-hop-local

缺省情况下,设备向EBGP对等体/对等体组发布路由时,将下一跳属性修改为自身的地址;向IBGP对等体/对等体组发布路由时,不修改下一跳属性。例外的是,设备向IBGP对等体发送形成了等价的BGP路由时,修改其中最优路由的下一跳地址为本地地址。

4. 配置步骤(IPv6单播)

(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 ] | ipv6-address [ prefix-length ] } next-hop-local

缺省情况下,设备向EBGP对等体/对等体组发布路由时,将下一跳属性修改为自身的地址;向IBGP对等体/对等体组发布路由时,不修改下一跳属性。例外的是,设备向IBGP对等体发送形成了等价的BGP路由时,修改其中最优路由的下一跳地址为本地地址。

4.3.2  配置不修改下一跳属性

1. 功能简介

配置本功能后,设备在向IBGP以及EBGP对等体发布BGP路由时均不会修改下一跳属性。本功能用于缺省的路由发布行为会对路由信息的发布产生阻碍的特殊组网。

例如,在多AS域组网场景下,需要设备跨AS域传递路由的时候不修改路由的下一跳属性。如图4-3所示,分属两个不同AS的接入网PE设备PE 1和PE 2之间有端对端的公网IP业务,且通过BGP 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域时候不修改路由的下一跳属性。

图4-3 不修改下一跳属性示意图

 

2. 配置限制和指导

对于直连EBGP会话,由于设备不会接收下一跳与本地接口地址不在同一网段的BGP路由,请谨慎配置本功能,以免直连EBGP对等体无法接收到路由。

配置本功能后,用户仍可以通过设置基于路由策略的BGP路由发布策略,来修改发布路由的下一跳。

无论是否配置本功能,设备向IBGP对等体发送本地引入的IGP路由时,都会将下一跳属性修改为自身的地址。

对于同一个对等体/对等体组,不能同时配置将下一跳属性修改为自身的地址功能和不修改下一跳属性功能。

3. 配置步骤(IPv4单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv4单播地址族视图。

address-family ipv4 [ unicast ]

(4)     配置向指定对等体/对等体组发布路由时,不修改路由的下一跳属性。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } next-hop-invariable

缺省情况下,设备向EBGP对等体/对等体组发布路由时,将下一跳属性修改为自身的地址;向IBGP对等体/对等体组发布路由时,不修改下一跳属性。例外的是,设备向IBGP对等体发送形成了等价的BGP路由时,修改其中最优路由的下一跳地址为本地地址。

4. 配置步骤(IPv6单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(4)     进入BGP IPv6单播地址族视图。

address-family ipv6 [ unicast ]

(5)     配置向指定对等体/对等体组发布路由时,不修改路由的下一跳属性。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } next-hop-invariable

缺省情况下,设备向EBGP对等体/对等体组发布路由时,将下一跳属性修改为自身的地址;向IBGP对等体/对等体组发布路由时,不修改下一跳属性。例外的是,设备向IBGP对等体发送形成了等价的BGP路由时,修改其中最优路由的下一跳地址为本地地址。

 

4.3.3  配置向IPv6 BGP对等体发布路由时下一跳信息只携带全球单播地址

1. 功能简介

本地设备向IPv6 BGP对等体发布路由时,其携带的下一跳属性可能同时包含全球单播地址和链路本地地址,若对等体无法解析该路由更新报文,将导致对等体路由学习失败。为了避免上述情况的发生,需要在本地设备配置向IPv6 BGP对等体发布路由时下一跳信息只携带全球单播地址功能。配置本功能后,本端向对端发布的路由信息中将仅携带全球单播地址。

2. 配置限制和指导

配置本功能后,存在一种例外情况:本端设备与对端设备使用直连接口建立EBGP邻居关系,且本端设备发布的路由信息的下一跳与建立EBGP邻居关系使用的直连接口地址在同一网段、直连接口为广播类型的接口时,本端向对端发布的路由信息中仍会同时携带全球单播地址和链路本地地址。

3. 配置步骤(IPv4单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv4单播地址族视图。

address-family ipv4 [ unicast ]

(4)     配置向IPv6 BGP对等体发布路由时下一跳信息只携带全球单播地址。

nexthop global-address-only

缺省情况下,本地设备向IPv6 BGP对等体发布路由时,如果本地设备存在链路本地地址,则向IPv6 BGP对等体发布的路由的下一跳信息将同时携带全球单播地址和链路本地地址。

4. 配置步骤(IPv6单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv6单播地址族视图。

address-family ipv6 [ unicast ]

(4)     配置向IPv6 BGP对等体发布路由时下一跳信息只携带全球单播地址。

nexthop global-address-only

缺省情况下,本地设备向IPv6 BGP对等体发布路由时,如果本地设备存在链路本地地址,则向IPv6 BGP对等体发布的路由的下一跳信息将同时携带全球单播地址和链路本地地址。

4.4  为接收路由分配首选值

1. 功能简介

BGP选择路由时首先丢弃下一跳不可达的路由,其次优选Preferred-value值最大的路由。通过本配置,可以修改路由的Preferred-value,以便控制BGP路径的选择。

缺省情况下,从对等体/对等体组学到的路由的首选值为0,网络管理员可以为从某个对等体/对等体组接收的路由配置首选值,从而提高从指定对等体/对等体组学到的路由的优先级。

2. 配置步骤(IPv4单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv4单播地址族视图。

address-family ipv4 [ unicast ]

(4)     为从对等体/对等体组接收的路由分配首选值。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } preferred-value value

缺省情况下,从对等体/对等体组接收的路由的首选值为0。

3. 配置步骤(IPv6单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv6单播地址族视图。

address-family ipv6 [ unicast ]

(4)     为从IPv6 BGP对等体/对等体组接收的路由分配首选值。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } preferred-value value

缺省情况下,从IPv6 BGP对等体/对等体组接收的路由的首选值为0。

4.5  配置本地优先级的缺省值

1. 功能简介

本地优先级用来判断流量离开AS时的最佳路由。当BGP路由器通过不同的IBGP对等体得到目的地址相同但下一跳不同的多条路由时,将优先选择本地优先级较高的路由。

用户可以通过本配置改变BGP路由器向IBGP对等体发送的路由本地优先级的缺省值。

2. 配置步骤(IPv4单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv4单播地址族视图。

address-family ipv4 [ unicast ]

(4)     配置本地优先级的缺省值。

default local-preference value

缺省情况下,本地优先级的缺省值为100。

3. 配置步骤(IPv6单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv6单播地址族视图。

address-family ipv6 [ unicast ]

(4)     配置本地优先级的缺省值。

default local-preference value

缺省情况下,本地优先级的缺省值为100。

4.6  配置AS_PATH属性

4.6.1  允许本地AS号出现的次数

1. 功能简介

通常情况下,BGP会检查对等体发来的路由的AS_PATH属性,如果其中已存在本地AS号,则BGP会忽略此路由,以免形成路由环路。

但是,在某些特殊的组网环境下,需要允许本地AS号在接收路由的AS_PATH属性中出现,否则无法正确发布路由。通过本配置,可以允许本地AS号在所接收的路由的AS_PATH属性中出现,并可同时配置允许出现的次数。

2. 配置步骤(IPv4单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv4单播地址族视图。

address-family ipv4 [ unicast ]

(4)     配置允许本地AS号在对等体/对等体组接收路由的AS_PATH属性中出现,并配置允许出现的次数。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } allow-as-loop [ number ]

缺省情况下,不允许本地AS号在接收路由的AS_PATH属性中出现。

3. 配置步骤(IPv6单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv6单播地址族视图。

address-family ipv6 [ unicast ]

(4)     配置允许本地AS号在对等体/对等体组接收路由的AS_PATH属性中出现,并配置允许出现的次数。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } allow-as-loop [ number ]

缺省情况下,不允许本地AS号在接收路由的AS_PATH属性中出现。

4.6.2  配置BGP在选择最优路由时忽略AS_PATH属性

1. 功能简介

路由器在选择最优路由时会优选AS路径最短的路由,通过如下配置BGP在选择最优路由时会忽略AS_PATH属性。

2. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     配置BGP在选择最优路由时忽略AS_PATH属性。

bestroute as-path-neglect

缺省情况下,BGP将AS_PATH属性作为选择最优路由的一个条件。

4.6.3  为对等体/对等体组指定一个虚拟的自治系统号

1. 功能简介

进行系统移植时,例如,Router A原来位于AS 2,现在将它移植到AS 3里,网络管理员需要在Router A的所有EBGP对等体上修改Router A所在的AS号。通过在Router A上为EBGP对等体/对等体组配置一个虚拟的本地自治系统号2,可以将本地真实的AS号3隐藏起来。在EBGP对等体看来Router A始终位于AS 2,不需要改变EBGP对等体上的配置。

2. 配置限制和指导

本功能只适用于EBGP对等体和对等体组。

3. 配置步骤(IPv4对等体)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     为对等体/对等体组指定一个虚拟的本地自治系统号。

peer { group-name | ipv4-address [ mask-length ] } fake-as as-number

缺省情况下,对等体/对等体组未配置虚拟的本地自治系统号。

4. 配置步骤(IPv6对等体)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     为对等体/对等体组指定一个虚拟的本地自治系统号。

peer { group-name | ipv6-address [ prefix-length ] } fake-as as-number

缺省情况下,对等体/对等体组未配置虚拟的本地自治系统号。

4.6.4  配置AS号替换功能

1. 功能简介

在某些特殊组网中,如果PE和CE之间运行EBGP,由于BGP使用AS号检测路由环路,为保证路由信息的正确发送,需要为物理位置不同的站点分配不同的AS号。

如果物理位置不同的CE复用相同的AS号,则需要在PE上配置BGP的AS号替换功能。当PE向指定对等体(CE)发布路由时,如果路由的AS_PATH中存在CE所在的AS号,则PE将该AS号替换成PE的AS号后,再发布该路由,以保证私网路由能够正确发布。

2. 配置限制和指导

本配置仅用于特定的组网环境。通常情况下,建议不要使用本配置,否则可能会引起路由环路。

3. 配置步骤(IPv4对等体)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     配置用本地AS号替换AS_PATH属性中指定对等体/对等体组的AS号。

peer { group-name | ipv4-address [ mask-length ] } substitute-as

缺省情况下,不会用本地AS号替换AS_PATH属性中指定对等体/对等体组的AS号。

4. 配置步骤(IPv6对等体)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     配置用本地AS号替换AS_PATH属性中指定对等体/对等体组的AS号。

peer { group-name | ipv6-address [ prefix-length ] } substitute-as

缺省情况下,不会用本地AS号替换AS_PATH属性中指定对等体/对等体组的AS号。

4.6.5  配置发送BGP更新消息时AS_PATH属性中不携带私有AS号

1. 功能简介

私有AS号是内部使用的AS号,范围为64512~65535。私有AS号主要用于测试网络,一般情况下不需要在公共网络中传播。

可以通过peer public-as-only命令,配置向EBGP对等体发送BGP更新消息时删除或替换AS_PATH属性的私有AS号。执行该命令后,设备将按照下列规则对AS_PATH属性中的私有AS号进行删除或替换:

·     如果配置peer public-as-only命令时未指定forcelimited参数,则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命令时指定了forcelimited参数,则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号

 

¡     配置了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号

 

2. 配置限制和指导

本功能只适用于EBGP对等体和对等体组。

修改AS_Path属性,可能会引发路由环路,请谨慎使用本功能。

3. 配置步骤(IPv4单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv4单播地址族视图。

address-family ipv4 [ unicast ]

(4)     配置向指定EBGP对等体/对等体组发送BGP更新消息时只携带公有AS号,不携带私有AS号。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } public-as-only [ { force | limited } [ replace ] [ include-peer-as ] ]

缺省情况下,向EBGP对等体/对等体组发送BGP更新消息时,既可以携带公有AS号,又可以携带私有AS号。

4. 配置步骤(IPv6单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv6单播地址族视图。

address-family ipv6 [ unicast ]

(4)     配置向指定EBGP对等体/对等体组发送BGP更新消息时只携带公有AS号,不携带私有AS号。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } public-as-only [ { force | limited } [ replace ] [ include-peer-as ] ]

缺省情况下,向EBGP对等体/对等体组发送BGP更新消息时,既可以携带公有AS号,又可以携带私有AS号。

本命令只适用于EBGP对等体和对等体组。

4.6.6  配置不检测EBGP路由的第一个AS号

1. 功能简介

缺省情况下,从EBGP邻居学到路由后,会检测路由的第一个AS号。如果此AS号不是EBGP对等体的AS号,且不是私有AS号,则断开与该对等体的BGP会话。

通过本配置,可以忽略对EBGP路由第一个AS号的检测。

2. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     配置不检测EBGP路由的第一个AS号。

ignore-first-as

缺省情况下,从EBGP邻居学到路由后,会检测路由的第一个AS号。

3. 配置步骤(IPv4对等体)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     配置不检测从指定对等体/对等体组收到的EBGP路由的第一个AS号。

peer { group-name | ipv4-address [ mask-length ] } ignore-first-as

缺省情况下,从EBGP邻居学到路由后,会检测路由的第一个AS号。

4. 配置步骤(IPv6对等体)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     配置不检测从指定对等体/对等体组收到的EBGP路由的第一个AS号。

peer { group-name | ipv6-address [ prefix-length ] } ignore-first-as

缺省情况下,从EBGP邻居学到路由后,会检测路由的第一个AS号。

4.6.7  配置BGP根据AS号数量过滤路由

1. 功能简介

本功能用来配置BGP根据AS_Path属性中的AS号数量对BGP路由进行过滤,配置本功能后:

·     如果接收到的BGP路由中AS号数量超过配置的上限值,则该路由不会添加到BGP路由表中。

·     如果已发布的BGP路由中AS号数量超过配置的上限值,则发送Update消息撤销该路由。

2. 配置限制和指导

配置本功能前已经接收到的路由不受本功能影响;本地聚合路由不受本功能影响。

3. 配置步骤

(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路由进行过滤。

4.7  配置MED属性

4.7.1  功能简介

MED用来判断流量进入AS时的最佳路由。当一个BGP路由器通过不同的EBGP对等体得到目的地址相同但下一跳不同的多条路由时,在其它条件相同的情况下,将优先选择MED属性值较小者作为最佳路由。

4.7.2  配置MED缺省值

1. 配置MED缺省值(IPv4单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv4单播地址族视图。

address-family ipv4 [ unicast ]

(4)     配置MED的缺省值。

default med med-value

缺省情况下,MED的缺省值为0。

2. 配置MED缺省值(IPv6单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv6单播地址族视图。

address-family ipv6 [ unicast ]

(4)     配置MED的缺省值。

default med med-value

缺省情况下,MED的缺省值为0。

4.7.3  配置允许比较来自不同AS路由的MED属性值

1. 功能简介

缺省情况下,BGP只比较来自同一个AS的路由的MED属性值。通过配置本功能,可以强制BGP比较来自不同AS的路由的MED属性值。

2. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     配置允许比较来自不同AS路由的MED属性值。

compare-different-as-med

缺省情况下,不允许比较来自不同AS路由的MED属性值,只比较来自同一个AS的路由的MED属性值。

4.7.4  配置对来自同一AS的路由进行MED排序优选

1. 功能简介

缺省情况下,BGP选择最优路由时是将新的路由和当前BGP路由表中的最优路由进行比较,只要新的路由比当前BGP路由表中的最优路由更优,新的路由将成为最优路由,路由学习的顺序有可能会影响最优路由的选择结果。

图4-4 MED排序优选示意图(以IPv4为例)

 

图4-4所示,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

2. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     配置对来自同一AS的路由进行MED排序优选。

bestroute compare-med

缺省情况下,不会对来自同一AS的路由进行MED排序优选。

4.7.5  配置允许比较来自同一联盟不同子自治系统邻居路由的MED属性值

1. 功能简介

只有AS_PATH里不包含联盟体外的自治系统编号时,才会比较来自同一联盟不同子自治系统邻居路由的MED属性值。例如,联盟中包含的子自治系统为65006、65007和65009。如果存在三条路由,它们的AS-PATH值分别为65006 65009、65007 65009和65008 65009,MED值分别为2、3、1,由于第三条路由包含了联盟体外的自治系统编号,因此在选择最优路由时第一条路由将成为最优路由。

2. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     配置允许比较来自同一联盟不同子自治系统邻居路由的MED属性值。

bestroute med-confederation

缺省情况下,不比较来自同一联盟不同子自治系统邻居路由的MED属性值。

4.7.6  配置BGP选路时综合考虑MED值与到达路由下一跳的IGP Metric值

1. 配置简介

缺省情况下,BGP在选路时,MED属性与到达路由下一跳的IGP Metric值分别作为单独的选路条件参与选路。配置本功能后,BGP在需要比较MED值进行选路时,将MED值与IGP Metric值分别乘以对应系数后,将二者相加,BGP会优选相加数值最小的路由。例如,在缺省情况下,MED属性不同的路由之间无法形成负载分担,配置本功能后,通过使用合适的参数,可以使路由的MED值与IGP Metric值乘以系数并相加后的数值相同,达到负载分担的目的。

2. 配置限制和指导

如果BGP路由未携带MED属性,则在计算时将MED值视为0。

3. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     配置BGP选路时综合考虑MED值与到达路由下一跳的IGP Metric值。

bestroute med-plus-igp [ igp-multiplier igp-multiplier | med-multiplier med-multiplier ] *

缺省情况下,BGP通过MED值优选路由时,优选MED值最小的路由。

4.8  配置将发送给邻居的BGP路由调整为最低优先级

4.8.1  配置邻居状态由Down变为Up后发送最低优先级路由

1. 功能简介

缺省情况下,邻居Up后,设备会立即向该邻居发送BGP路由。如果此时设备的ARP/ND表项未收敛,匹配这些BGP路由的流量可能无法正常转发,造成丢包。可以通过配置本功能,使得设备在建立邻居后的一段时间之内发送低优先级的BGP路由,其他设备不会优选本设备发送的路由。等到本设备收敛完成后,再恢复路由的优先级,从而避免ARP/ND表收敛期间造成的丢包问题。

配置了本功能时,BGP邻居Up后,设备会将发送给邻居的BGP路由的本地优先级值调整为最小值0、MED值调整为最大值4294967295,并持续一段时间;持续时间结束后,设备会恢复路由原始的本地优先级值和MED值,并立即发送这些路由。之后,设备发送给邻居的BGP路由均携带原始的本地优先级值和MED值。

如需在发布最低优先级路由的持续时间内恢复发送的BGP路由的优先级,可以执行以下操作:

·     执行reset bgp advertise lowest-priority on-peer-up命令。执行该命令后,设备会立即发送一次携带原始本地优先级值和MED值的BGP路由给邻居,并且不再发送最低优先级的路由。但是,BGP邻居再次从Down变为Up后,设备仍会发布最低优先级的路由给邻居。

·     执行undo advertise lowest-priority on-peer-up duration命令。执行该命令后,设备会立即发送一次携带原始本地优先级值和MED值的BGP路由给邻居,并且后续发送的路由均携带原始本地优先级值和MED值。

2. 配置限制和指导

本功能可以在BGP实例视图或在地址族视图下配置。在BGP实例视图下配置时,本功能对该BGP实例下所有的地址族生效;在地址族视图下配置时,本功能只对当前地址族生效。对于特定的地址族,以该地址族视图下的配置为准。

可以通过多次执行advertise lowest-priority on-peer-up duration命令,修改发送最低优先级路由的持续时间。配置该命令修改发送最低优先级路由的持续时间时:

·     如果已经处在发送最低优先级路由的持续时间内,则该配置会立即生效并刷新持续时间。例如,配置advertise lowest-priority on-peer-up duration 10命令后,邻居状态由Down变为Up的6秒后,如果再执行advertise lowest-priority on-peer-up duration 6命令,则接下来的6秒内,设备仍会向该邻居发送最低优先级的路由。

·     如果未处在发送最低优先级路由的持续时间内,则该配置在下一个邻居状态由Down变为Up时生效。

advertise lowest-priority on-peer-up durationadvertise lowest-priority on-startup durationbgp update-delay on-startuproute-update-delay命令同时配置时会互相影响,具体的配置效果如表4-1所示。

表4-1 多命令行同时配置效果列表

命令行A

命令行B

配置效果

bgp update-delay on-startup

BGP实例视图下配置advertise lowest-priority on-startup duration

命令行A和命令行B的配置相互覆盖,最后一次执行的命令行生效

BGP实例视图下配置advertise lowest-priority on-peer-up duration

假设命令行A指定的时间为TA,命令行B指定的时间为TB,设备重启且BGP进程恢复后,命令行A和命令行B的生效关系如下:

·     如果TA≥TB,则仅命令行A生效

·     如果TA<TB,则设备先在TA时间内无法向邻居发送BGP路由,然后在(TB-TA)的持续时间内只能向邻居发送最低优先级的BGP路由。上述时间结束后,设备立即发送原始优先级的BGP路由并不再发送最低优先级的BGP路由

route-update-delay

命令行A和命令行B的配置效果叠加,设备重启且BGP进程恢复后,需要等待命令行A指定的时间和TS时间之和,才能向BGP邻居发布路由。其中TS时间为peer route-update-interval命令和命令行B中配置的较大时间(如果对于要发送BGP路由的邻居,未指定该邻居配置peer route-update-interval命令,则比较peer route-update-interval命令的缺省值与命令行B中指定的值)

在地址族视图下配置advertise lowest-priority on-startup duration

在配置了命令行B的地址族下,仅命令行B的配置生效,命令行A的配置不生效,在未配置命令行B的地址族下,命令行A的配置生效

在地址族视图下配置advertise lowest-priority on-peer-up duration

在未配置命令行B的地址族下,仅命令行A的配置生效。在配置了命令行B的地址族下,假设命令行A指定的时间为TA,命令行B指定的时间为TB,设备重启且BGP进程恢复后,命令行A和命令行B的生效关系如下:

·     如果TA≥TB,则仅命令行A生效

·     如果TA<TB,则设备先在TA时间内无法向邻居发送BGP路由,然后在(TB-TA)的持续时间内只能向邻居发送最低优先级的BGP路由。上述时间结束后,设备立即发送原始优先级的BGP路由并不再发送最低优先级的BGP路由

route-update-delay

BGP实例视图下配置advertise lowest-priority on-startup duration

在BGP IPv4单播地址族和BGP IPv6单播地址族中,假设命令行B指定的时间为TB,设备重启且BGP进程恢复后,命令行A和命令行B的生效关系如下:

·     如果TS≥TB,则仅命令行A生效

·     如果TS<TB,则设备先在TS时间内无法向邻居发送BGP路由,然后在(TB-TS)的持续时间内只能向邻居发送最低优先级的BGP路由。上述时间结束后,设备立即发送原始优先级的BGP路由并不再发送最低优先级的BGP路由

其中TS时间为peer route-update-interval命令和命令行A中配置的较大时间(如果对于要发送BGP路由的邻居,未指定该邻居配置peer route-update-interval命令,则比较peer route-update-interval命令的缺省值与命令行A中指定的值)

BGP实例视图下配置advertise lowest-priority on-peer-up duration

在BGP IPv4单播地址族和BGP IPv6单播地址族中,假设命令行B指定的时间为TB,BGP邻居状态由Down变为Up后,命令行A和命令行B的生效关系如下:

·     如果TS≥TB,则仅命令行A生效

·     如果TS<TB,则设备先在TS时间内无法向邻居发送BGP路由,然后在(TB-TS)的持续时间内只能向邻居发送最低优先级的BGP路由。上述时间结束后,设备立即发送原始优先级的BGP路由并不再发送最低优先级的BGP路由

其中TS时间为peer route-update-interval命令和命令行A中配置的较大时间(如果对于要发送BGP路由的邻居,未指定该邻居配置peer route-update-interval命令,则比较peer route-update-interval命令的缺省值与命令行A中指定的值)

在BGP IPv4单播地址族和BGP IPv6单播地址族视图下配置advertise lowest-priority on-startup duration

在未配置命令行B的地址族下,仅命令行A的配置生效。在配置了命令行B的地址族下,假设命令行B指定的时间为TB,设备重启且BGP进程恢复后,命令行A和命令行B的生效关系如下:

·     如果TS≥TB,则仅命令行A生效

·     如果TS<TB,则设备先在TS时间内无法向邻居发送BGP路由,然后在(TB-TS)的持续时间内只能向邻居发送最低优先级的BGP路由。上述时间结束后,设备立即发送原始优先级的BGP路由并不再发送最低优先级的BGP路由

其中TS时间为peer route-update-interval命令和命令行A中配置的较大时间(如果对于要发送BGP路由的邻居,未指定该邻居配置peer route-update-interval命令,则比较peer route-update-interval命令的缺省值与命令行A中指定的值)

在BGP IPv4单播地址族和BGP IPv6单播地址族视图下配置advertise lowest-priority on-peer-up duration

在未配置命令行B的地址族下,仅命令行A的配置生效。在配置了命令行B的地址族下,假设命令行B指定的时间为TB,BGP邻居状态由Down变为Up后,命令行A和命令行B的生效关系如下:

·     如果TS≥TB,则仅命令行A生效

·     如果TS<TB,则设备先在TS时间内无法向邻居发送BGP路由,然后在(TB-TS)的持续时间内只能向邻居发送最低优先级的BGP路由。上述时间结束后,设备立即发送原始优先级的BGP路由并不再发送最低优先级的BGP路由

其中TS时间为peer route-update-interval命令和命令行A中配置的较大时间(如果对于要发送BGP路由的邻居,未指定该邻居配置peer route-update-interval命令,则比较peer route-update-interval命令的缺省值与命令行A中指定的值)

BGP实例视图下配置advertise lowest-priority on-startup duration

BGP实例视图下配置advertise lowest-priority on-peer-up duration

命令行A和命令行B互斥

地址族视图下配置advertise lowest-priority on-peer-up duration

在配置了命令行B的地址族下,仅命令行B生效;在未配置命令行B的地址族下,仅命令行A生效

BGP实例视图下配置advertise lowest-priority on-peer-up duration

地址族视图下配置advertise lowest-priority on-startup duration

在配置了命令行B的地址族下,仅命令行B生效;在未配置命令行B的地址族下,仅命令行A生效

地址族视图下配置advertise lowest-priority on-peer-up duration

地址族视图下配置advertise lowest-priority on-startup duration

在同一地址族下,命令行A和命令行B互斥

 

3. 配置步骤(BGP实例视图)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     配置邻居状态由Down变为Up后,在指定的持续时间内将发送给邻居的BGP路由调整为最低优先级。

advertise lowest-priority on-peer-up duration seconds

缺省情况下,设备不修改发送给邻居的BGP路由的优先级。

4. 配置步骤(IPv4单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv4单播地址族视图。

address-family ipv4 [ unicast ]

(4)     配置邻居状态由Down变为Up后,在指定的持续时间内将发送给邻居的BGP路由调整为最低优先级。

advertise lowest-priority on-peer-up duration seconds

缺省情况下,设备不修改发送给邻居的BGP路由的优先级。

5. 配置步骤(IPv6单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv6单播地址族视图。

address-family ipv6 [ unicast ]

(4)     配置邻居状态由Down变为Up后,在指定的持续时间内将发送给邻居的BGP路由调整为最低优先级。

advertise lowest-priority on-peer-up duration seconds

缺省情况下,设备不修改发送给邻居的BGP路由的优先级。

4.8.2  配置设备重启后发送最低优先级路由

1. 功能简介

缺省情况下,设备重启且BGP进程恢复后,设备会立即向邻居发送携带正常属性的BGP路由。如果此时设备的ARP/ND表项尚未收敛,匹配这些BGP路由的流量可能无法转发,导致丢包。可以通过配置本功能,使得设备在重启且BGP进程恢复后的一段时间之内向邻居发送低优先级的路由,等到本设备完成收敛后,再恢复路由的优先级,从而解决ARP/ND表项收敛期间造成的丢包问题。

配置了本功能时,设备重启且BGP进程恢复后,会将发布给邻居的BGP路由的本地优先级值调整为最小值0,并将MED值调整为最大值4294967295。设备发送低优先级的路由会持续一段时间,持续时间结束后,设备会恢复路由原始的本地优先级值和MED值,并立即发送这些路由。之后,设备发送给邻居的BGP路由均携带原始的本地优先级值和MED值。

如需在发布最低优先级路由的持续时间内恢复发送的BGP路由的优先级,可以执行以下操作:

·     执行reset bgp advertise lowest-priority on-startup命令。执行该命令后,设备会立即发送一次携带原始本地优先级值和MED值的BGP路由给邻居,并且不再发送最低优先级的路由。但是,设备再一次重启后,仍会发布最低优先级的路由给邻居。

·     执行undo advertise lowest-priority on-startup duration命令。执行该命令后,设备会立即发送一次携带原始本地优先级值和MED值的BGP路由给邻居,并且后续发送的路由均携带原始本地优先级值和MED值。

2. 配置限制和指导

本功能可以在BGP实例视图或在地址族视图下配置。在BGP实例视图下配置时,本功能对该BGP实例下对所有的地址族生效;在地址族视图下配置时,本功能只对当前地址族生效。对于特定的地址族,以该地址族视图下的配置为准。

本功能配置后不会立即生效,设备保存配置并重启后才会生效。

advertise lowest-priority on-peer-up durationadvertise lowest-priority on-startup durationbgp update-delay on-startuproute-update-delay命令同时配置时会互相影响,具体的配置效果如表4-1所示。

3. 配置步骤(BGP实例视图)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     配置设备重启且BGP进程恢复后,在指定的持续时间内将发送给邻居的BGP路由调整为最低优先级。

advertise lowest-priority on-startup duration seconds

缺省情况下,设备不修改发送给邻居的BGP路由的优先级。

4. 配置步骤(IPv4单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv4单播地址族视图。

address-family ipv4 [ unicast ]

(4)     配置设备重启且BGP进程恢复后,在指定的持续时间内将发送给邻居的BGP路由调整为最低优先级。

advertise lowest-priority on-startup duration seconds

缺省情况下,设备不修改发送给邻居的BGP路由的优先级。

5. 配置步骤(IPv6单播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv6单播地址族视图。

address-family ipv6 [ unicast ]

(4)     配置设备重启且BGP进程恢复后,在指定的持续时间内将发送给邻居的BGP路由调整为最低优先级。

advertise lowest-priority on-startup duration seconds

缺省情况下,设备不修改发送给邻居的BGP路由的优先级。

4.8.3  恢复发送正常优先级的路由

1. 功能简介

配置了邻居状态由Down变为Up后发送最低优先级路由功能,或设备重启后发送最低优先级路由功能后,如果网络管理员认为设备已经可以发布正常优先级的路由,且需要确保邻居再次Up或设备再次重启后调整路由优先级功能仍生效,则可以配置本功能,实现在邻居Up或设备再次重启时恢复向BGP邻居发送正常优先级路由。

配置本功能后,设备会立即发送一次携带原始路由优先级值和MED值的BGP路由给邻居,并且不再发送最低优先级的路由。但是在邻居再次Up或设备再次重启后,仍会发布最低优先级的路由给邻居。

2. 配置步骤

在用户视图下,配置恢复发送正常优先级的路由。

reset bgp instance instance-name advertise lowest-priority { on-peer-up | on-startup }

4.9  配置AIGP属性

1. 功能简介

通常情况下,同一个管理部门管理的、运行同一种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报文更新路由信息。

2. 配置限制和指导

建议不要在AIGP管理域的边界设备上配置peer aigp命令向AIGP管理域外的路由器发布AIGP属性。

BGP路由器向对等体发布路由时,如果该路由未携带AIGP属性,当仅配置peer aigp命令时,发送路由不会携带AIGP属性;当配置了peer aigp命令,且通过配置apply aigp命令为路由添加AIGP属性后,发布路由会携带AIGP属性。关于apply aigp命令的详细介绍,请参见“三层技术-IP路由配置指导”中的“路由策略”。

3. 配置步骤(IPv4)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv4单播地址族视图。

address-family ipv4 [ unicast ]

(4)     配置为对等体/对等体组配置AIGP属性。

peer { group-name | ipv4-address [ mask-length ] } aigp

缺省情况下,没有为BGP对等体/对等体组配置AIGP属性。

(5)     (可选)配置将AIGP属性值拷贝到MED属性中发送给对等体/对等体组。

peer { group-name | ipv4-address [ mask-length ] } aigp send med

缺省情况下,AIGP属性值不会拷贝到MED属性中发送给对等体/对等体组。

当邻居设备不支持AIGP功能时,可以在本端使用该命令,将路由信息中AIGP属性的累加Metric值放到MED属性中发送给邻居。

4. 配置步骤(IPv6)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP IPv6单播地址族视图。

address-family ipv6 [ unicast ]

(4)     配置为对等体/对等体组配置AIGP属性。

peer { group-name | ipv6-address [ prefix-length ] } aigp

缺省情况下,没有为BGP对等体/对等体组配置AIGP属性。

(5)     (可选)配置将AIGP属性值拷贝到MED属性中发送给对等体/对等体组。

peer { group-name | ipv6-address [ prefix-length ] } aigp send med

缺省情况下,AIGP属性值不会拷贝到MED属性中发送给对等体/对等体组。

当邻居设备不支持AIGP功能时,可以在本端使用该命令,将路由信息中AIGP属性的累加Metric值放到MED属性中发送给邻居。

4.10  配置BGP在选择最优路由时忽略IGP Metric的比较

1. 功能简介

从多个邻居收到多条相同前缀但不同路径的路由时,BGP需要选择到达该前缀的最佳路由来指导报文转发。缺省情况下,BGP会比较这些路由下一跳的IGP路由的Metric值,并优选IGP Metric值最小的路由。

配置了本功能后,BGP在选择最优路由时忽略IGP Metric的比较。

2. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     配置BGP在选择最优路由时忽略IGP Metric的比较。

bestroute igp-metric-ignore

缺省情况下,BGP将IGP Metric作为选择最优路由的一个条件。

4.11  配置BGP在选择最优路由时忽略Router ID

1. 功能简介

BGP路由器在选择最优路由时会优选Router ID最小的路由器发布的路由。执行本配置后,BGP在选择最优路由时会忽略Router ID的比较。

2. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     配置BGP在选择最优路由时忽略Router ID。

bestroute router-id-ignore

缺省情况下,BGP在选择最优路由时会优选Router ID最小的路由器发布的路由。

4.12  控制BGP路径的选择显示和维护

可在任意视图下执行以下命令,显示BGP的路由属性信息:

display bgp [ instance instance-name ] paths [ as-regular-expression ]

可在用户视图下执行以下命令,在设备发送最低优先级BGP路由的持续时间内,恢复发送正常优先级的路由:

reset bgp instance instance-name advertise lowest-priority { on-peer-up | on-startup }

4.13  控制BGP路径的选择典型配置举例

4.13.1  BGP路径选择配置

1. 组网需求

所有路由器都运行BGP协议。Switch A与Switch B和Switch C之间运行EBGP;Switch D与Switch B和Switch C之间运行IBGP。

AS 200中运行OSPF协议。

配置路由策略,使得Switch D优选从Switch C学到的1.0.0.0/8路由。

2. 组网图

图4-5 配置BGP路径选择的组网图

 

设备

接口

IP地址

设备

接口

IP地址

Switch A

Vlan-int101

1.0.0.1/8

Switch D

Vlan-int400

195.1.1.1/24

 

Vlan-int100

192.1.1.1/24

 

Vlan-int300

194.1.1.1/24

 

Vlan-int200

193.1.1.1/24

Switch C

Vlan-int400

195.1.1.2/24

Switch B

Vlan-int100

192.1.1.2/24

 

Vlan-int200

193.1.1.2/24

 

Vlan-int300

194.1.1.2/24

 

 

3. 配置步骤

(1)     配置各接口的IP地址(略)

(2)     配置Switch B、Switch C和Switch D之间运行OSPF协议

# 配置Switch B。

<SwitchB> system-view

[SwitchB] ospf

[SwitchB-ospf] area 0

[SwitchB-ospf-1-area-0.0.0.0] network 192.1.1.0 0.0.0.255

[SwitchB-ospf-1-area-0.0.0.0] network 194.1.1.0 0.0.0.255

[SwitchB-ospf-1-area-0.0.0.0] quit

[SwitchB-ospf-1] quit

# 配置Switch C。

<SwitchC> system-view

[SwitchC] ospf

[SwitchC-ospf] area 0

[SwitchC-ospf-1-area-0.0.0.0] network 193.1.1.0 0.0.0.255

[SwitchC-ospf-1-area-0.0.0.0] network 195.1.1.0 0.0.0.255

[SwitchC-ospf-1-area-0.0.0.0] quit

[SwitchC-ospf-1] quit

# 配置Switch D。

<SwitchD> system-view

[SwitchD] ospf

[SwitchD-ospf] area 0

[SwitchD-ospf-1-area-0.0.0.0] network 194.1.1.0 0.0.0.255

[SwitchD-ospf-1-area-0.0.0.0] network 195.1.1.0 0.0.0.255

[SwitchD-ospf-1-area-0.0.0.0] quit

[SwitchD-ospf-1] quit

(3)     配置BGP连接

# 配置Switch A。

<SwitchA> system-view

[SwitchA] bgp 100

[SwitchA-bgp-default] peer 192.1.1.2 as-number 200

[SwitchA-bgp-default] peer 193.1.1.2 as-number 200

[SwitchA-bgp-default] address-family ipv4 unicast

[SwitchA-bgp-default-ipv4] peer 192.1.1.2 enable

[SwitchA-bgp-default-ipv4] peer 193.1.1.2 enable

# 将1.0.0.0/8网段通告到Switch A的BGP路由表中。

[SwitchA-bgp-default-ipv4] network 1.0.0.0 8

[SwitchA-bgp-default-ipv4] quit

[SwitchA-bgp-default] quit

# 配置Switch B。

[SwitchB] bgp 200

[SwitchB-bgp-default] peer 192.1.1.1 as-number 100

[SwitchB-bgp-default] peer 194.1.1.1 as-number 200

[SwitchB-bgp-default] address-family ipv4 unicast

[SwitchB-bgp-default-ipv4] peer 192.1.1.1 enable

[SwitchB-bgp-default-ipv4] peer 194.1.1.1 enable

[SwitchB-bgp-default-ipv4] quit

[SwitchB-bgp-default] quit

# 配置Switch C。

[SwitchC] bgp 200

[SwitchC-bgp-default] peer 193.1.1.1 as-number 100

[SwitchC-bgp-default] peer 195.1.1.1 as-number 200

[SwitchC-bgp-default] address-family ipv4 unicast

[SwitchC-bgp-default-ipv4] peer 193.1.1.1 enable

[SwitchC-bgp-default-ipv4] peer 195.1.1.1 enable

[SwitchC-bgp-default-ipv4] quit

[SwitchC-bgp-default] quit

# 配置Switch D。

[SwitchD] bgp 200

[SwitchD-bgp-default] peer 194.1.1.2 as-number 200

[SwitchD-bgp-default] peer 195.1.1.2 as-number 200

[SwitchD-bgp-default] address-family ipv4 unicast

[SwitchD-bgp-default-ipv4] peer 194.1.1.2 enable

[SwitchD-bgp-default-ipv4] peer 195.1.1.2 enable

[SwitchD-bgp-default-ipv4] quit

[SwitchD-bgp-default] quit

(4)     通过配置本地优先级,使得Switch D优选从Switch C学到的路由。

# 在Switch C上定义编号为2000的IPv4基本ACL,允许1.0.0.0/8路由通过。

[SwitchC] acl basic 2000

[SwitchC-acl-ipv4-basic-2000] rule permit source 1.0.0.0 0.255.255.255

[SwitchC-acl-ipv4-basic-2000] quit

# 在Switch C上定义名为localpref的Route-policy,设置路由1.0.0.0/8的本地优先级为200(缺省的本地优先级为100)。

[SwitchC] route-policy localpref permit node 10

[SwitchC-route-policy-localpref-10] if-match ip address acl 2000

[SwitchC-route-policy-localpref-10] apply local-preference 200

[SwitchC-route-policy-localpref-10] quit

# 为从BGP对等体193.1.1.1的路由应用名为localpref的Route-policy。

[SwitchC] bgp 200

[SwitchC-bgp-default] address-family ipv4 unicast

[SwitchC-bgp-default-ipv4] peer 193.1.1.1 route-policy localpref import

[SwitchC-bgp-default-ipv4] quit

[SwitchC-bgp-default] quit

# 查看Switch D的BGP路由表。

[SwitchD] display bgp routing-table ipv4

 

 Total number of routes: 2

 

 BGP local router ID is 195.1.1.1

 Status codes: * - valid, > - best, d - dampened, h - history,

               s - suppressed, S - stale, i - internal, e - external

               a – additional-path

               Origin: i - IGP, e - EGP, ? - incomplete

 

     Network            NextHop         MED        LocPrf     PrefVal Path/Ogn

 

* >i 1.0.0.0/8          193.1.1.1                  200        0       100i

*  i                    192.1.1.1                  100        0       100i  

可以看到,Switch D从Switch C学到1.0.0.0/8的路由是最优的。

 

 

不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!

新华三官网
联系我们