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

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

目录

07-BGP高级配置

本章节下载 07-BGP高级配置  (2.03 MB)

07-BGP高级配置

  录

1 调整和优化BGP网络

1.1 调整和优化BGP网络配置任务简介

1.2 配置建立BGP TCP连接时使用的TCP最大报文段长度

1.3 配置允许同非直连邻居建立EBGP会话

1.4 使能直连EBGP会话快速复位功能

1.5 开启基于前缀BGP ORF能力

1.5.1 功能简介

1.5.2 配置限制和指导

1.5.3 配置准备

1.5.4 开启BGP邻居协商的ORF能力

1.5.5 开启BGP邻居协商的非标准ORF能力

1.5.6 BGP ORF功能显示和维护

1.6 使能4字节AS号抑制功能

1.7 开启与对等体/对等体组交互Withdraw Route-refresh消息的能力

1.8 配置BGP通过与Track的联动来调整发送给对等体/对等体组的BGP路由的优先级

1.9 禁止与对等体/对等体组建立会话

1.9.1 功能简介

1.9.2 配置限制和指导

1.9.3 禁止与指定对等体/对等体组建立会话(IPv4对等体)

1.9.4 禁止与指定对等体/对等体组建立会话(IPv6对等体)

1.9.5 禁止与所有对等体/对等体组建立会话

1.10 配置BGP软复位

1.10.1 功能简介

1.10.2 通过Route-refresh功能实现BGP软复位(IPv4对等体)

1.10.3 通过Route-refresh功能实现BGP软复位(IPv6对等体)

1.10.4 通过将所有路由更新信息保存在本地实现BGP软复位(IPv4单播/IPv4组播)

1.10.5 通过将所有路由更新信息保存在本地实现BGP软复位(IPv6单播/IPv6组播)

1.10.6 手工软复位BGP会话(IPv4单播/IPv4组播)

1.10.7 手工软复位BGP会话(IPv6单播/IPv6组播)

1.11 配置BGP负载分担

1.12 配置BGP Add-Path

1.13 配置路由优选延迟时间

1.14 配置下一跳路由迭代变化延迟响应功能

1.15 配置BGP路由迭代的抑制功能

1.16 配置BGP路由进行下一跳路由迭代查找时采用最长匹配方式

1.17 配置BGP路由根据路由策略来过滤迭代到的下一跳路由

1.18 配置邻居震荡抑制功能

1.19 开启邻居地址不可达检测功能

1.20 配置系统进入二级内存门限告警状态后不断开EBGP对等体

1.21 配置BGP发送协议报文的DSCP优先级

1.22 开启BGP次优路由下刷RIB功能

1.23 配置对等体监控组

1.24 配置BGP路由禁止下发到IP路由表功能

1.25 配置标签申请方式

1.26 配置带隧道信息的标签路由才能参与路由优选

1.27 配置关闭MPLS Local Ifnet隧道自动创建功能

1.28 配置采用点分形式显示4字节AS号

1.29 配置快速更新主机路由功能

1.30 设置Update报文错误信息记录的最大数量

1.31 复位BGP会话

1.32 调整和优化BGP网络典型配置举例‌

1.32.1 BGP负载分担配置

1.32.2 BGP Add-Path配置

1.32.3 基于前缀的BGP ORF配置

1.32.4 配置BGP按路由策略迭代下一跳配置

2 BGP安全功能

2.1 BGP安全功能配置任务简

2.2 配置BGP的MD5认证

2.3 配置BGP GTSM功能

2.4 配置BGP的keychain认证

2.5 配置通过IPsec保护IPv6 BGP报文

2.6 配置BGP RPKI

2.6.1 功能简介

2.6.2 配置RPKI连接参数

2.6.3 开启BGP RPKI验证功能

2.6.4 配置BGP RPKI验证结果参与路由优选

2.6.5 配置向对等体/对等体组发送BGP RPKI验证结果

2.7 BGP安全功能显示和维护

2.7.1 BGP RPKI显示和维护

2.7.2 BGP GTSM显示和维护

2.8 IPv4 BGP安全功能典型配置举例‌

2.8.1 BGP RPKI配置

2.8.2 BGP Keychain配置

2.8.3 BGP GTSM配置

2.9 IPv6 BGP安全功能典型配置举例‌

2.9.1 通过IPsec保护IPv6 BGP报文配置

2.9.2 BGP RPKI配置

3 提高BGP网络的可靠性

3.1 提高BGP网络的可靠性配置任务简介

3.2 配置BGP GR

3.3 配置BGP NSR

3.4 配置BGP与BFD联动

3.5 配置BGP快速重路由

3.5.1 功能简介

3.5.2 通过引用路由策略的方式开启BGP快速重路由功能(IPv4单播)

3.5.3 通过引用路由策略的方式开启BGP快速重路由功能(IPv6单播)

3.5.4 通过pic命令开启BGP快速重路由(IPv4单播)

3.5.5 通过pic命令开启BGP快速重路由(IPv6单播)

3.5.6 配置BGP快速重路由通过BFD会话检测主路由的下一跳是否可达

3.6 配置BGP进程维护功能

3.6.1 功能简介

3.6.2 配置BGP isolate

3.6.3 配置BGP shutdown

3.7 提高IPv4 BGP网络的可靠性典型配置举例‌

3.7.1 BGP GR配置

3.7.2 BGP与BFD联动配置

3.7.3 BGP快速重路由配置

3.8 提高IPv6 BGP网络的可靠性典型配置举例‌

3.8.1 IPv6 BGP与BFD联动配置

3.8.2 配置BGP快速重路由

4 BGP扩展功能

4.1 BGP扩展功能配置任务简

4.2 配置BGP BMP

4.2.1 功能简介

4.2.2 BMP的特点

4.2.3 BMP中的角色

4.2.4 BMP消息类型

4.2.5 BMP的工作机制

4.2.6 BMP配置任务简介

4.2.7 配置客户端与监控服务器建立TCP连接

4.2.8 配置监控对等体

4.2.9 配置向监控服务器发送路由信息

4.2.10 配置向监控服务器发送消息时携带模式标记

4.2.11 配置向监控服务器发送统计信息

4.2.12 BGP BMP显示和维护

4.3 配置BGP LS

4.3.1 功能简介

4.3.2 BGP LS扩展

4.3.3 配置BGP LS基本功能

4.3.4 配置BGP LS路由反射功能

4.3.5 配置BGP LS信息的AS号和Router ID

4.3.6 配置不修改BGP LS路由的下一跳属性

4.3.7 配置BGP路由根据路由策略来过滤迭代到的下一跳路由

4.3.8 配置BGP LS路由延迟优选

4.3.9 提高邻居路由参与优选时的优先级

4.3.10 手工软复位LS地址族下的BGP会话

4.3.11 BGP LS显示和维护

4.4 配置BGP Dedicated

4.4.1 功能简介

4.4.2 配置BGP Dedicated基本功能

4.4.3 配置BGP Dedicated路由反射功能

4.4.4 BGP Dedicated显示和维护

4.5 配置6PE

4.5.1 功能简介

4.5.2 配置准备

4.5.3 配置6PE基本功能

4.5.4 配置6PE Add-Path相关功能

4.5.5 控制6PE的路径选择

4.5.6 控制6PE路由的发布与接收

4.5.7 调整和优化6PE

4.5.8 配置6PE路由共享标签资源

4.5.9 配置6PE路由反射功能

4.5.10 复位BGP 6PE连接

4.6 IPv4 BGP扩展功能典型配置举例‌

4.6.1 BGP LS配置举例

4.6.2 BGP Dedicated配置举例

4.7 IPv6 BGP扩展功能典型配置举例‌

4.7.1 6PE配置

 


1 调整和优化BGP网络

1.1  调整和优化BGP网络配置任务简介

调整和优化BGP网络配置任务如下:

·     配置建立BGP TCP连接时使用的TCP最大报文段长度

·     调整和优化EBGP会话的建立与复位

¡     配置允许同非直连邻居建立EBGP会话

¡     使能直连EBGP会话快速复位功能

·     配置BGP会话的特殊能力协商

¡     开启基于前缀BGP ORF能力

¡     使能4字节AS号抑制功能

¡     开启与对等体/对等体组交互Withdraw Route-refresh消息的能力

·     配置BGP通过与Track的联动来调整发送给对等体/对等体组的BGP路由的优先级

·     调整BGP会话的建立、中断与软复位

¡     禁止与对等体/对等体组建立会话

¡     配置BGP软复位

·     配置BGP负载分担

·     配置BGP Add-Path

·     配置路由优选延迟时间

·     调整BGP路由的下一跳迭代

¡     配置下一跳路由迭代变化延迟响应功能

¡     配置BGP路由迭代的抑制功能

¡     配置BGP路由进行下一跳路由迭代查找时采用最长匹配方式

¡     配置BGP路由根据路由策略来过滤迭代到的下一跳路由

·     配置邻居震荡抑制功能

·     开启邻居地址不可达检测功能

·     配置系统进入二级内存门限告警状态后不断开EBGP对等体

·     配置BGP发送协议报文的DSCP优先级

·     开启BGP次优路由下刷RIB功能

·     配置BGP路由禁止下发到IP路由表功能

·     调整标签分配方式和路由优选规则

¡     配置标签申请方式

¡     配置带隧道信息的标签路由才能参与路由优选

·     配置关闭MPLS Local Ifnet隧道自动创建功能

·     配置采用点分形式显示4字节AS号

·     配置快速更新主机路由功能

·     _Topic_229581_20240320224982_title

·     设置Update报文错误信息记录的最大数量

1.2  配置建立BGP TCP连接时使用的TCP最大报文段长度

1. 功能简介

BGP对等体之间往往需要经过多跳建立TCP连接。由于源端到目的端不同设备的MTU不同,中间节点转发BGP报文时可能需要重新进行分片,导致频繁封装解封装数据包,降低了转发效率。为了避免上述情况,可通过本功能配置本地设备与指定对等体/对等体组建立TCP连接时所使用的TCP MSS值,以达到TCP报文在源端分段后,不再被中间节点分片的目的,进而提高网络性能。有关TCP最大报文段长度(Max Segment Size,MSS)的详细介绍,请参见“三层技术-IP业务配置指导”中的“IP性能优化”。

配置本功能后,设备与指定对等体/对等体组建立BGP TCP连接时,TCP最大报文段长度为以下MSS中的最小值:

·     与BGP对等体建立TCP连接的接口上,通过接口上发送IPv4报文的MTU值(由ip mtu命令配置)计算得到的MSS值。

·     与BGP对等体建立TCP连接的接口上,通过tcp mss命令配置的接口MSS值。

·     配置tcp path-mtu-discovery命令开启TCP连接的Path MTU探测功能后,根据探测机制确定的Path MTU计算得到的MSS值。

·     本功能配置的设备与指定对等体/对等体组之间建立BGP TCP连接时所使用的MSS值。(如果未配置本功能,则TCP MSS值为上述几项中的最小值)

根据MTU值(接口MTU或Path MTU)计算MSS值的方法为:MSS=MTU值-IP头部长度-TCP头部长度。有关MTU和MSS的详细介绍,请参见“三层技术-IP业务配置指导”中的“IP性能优化”。

2. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图或BGP-VPN实例视图。

¡     进入BGP实例视图。

bgp as-number [ instance instance-name ]

¡     请依次执行以下命令进入BGP-VPN实例视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

(3)     配置设备与指定对等体/对等体组之间建立BGP TCP连接时所使用的TCP最大报文段长度。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] | link-local-address interface interface-type interface-number } tcp-mss mss-value

缺省情况下,未指定设备与指定对等体/对等体组建立TCP连接时所使用的TCP最大报文段长度。

注意

执行本命令可能会导致已经建立的BGP会话断开后重新建立,请谨慎执行。

 

1.3  配置允许同非直连邻居建立EBGP会话

1. 功能简介

当前路由器要与另外一个路由器建立EBGP会话,它们之间必须具有直连的物理链路,且必须使用直连接口建立会话。如果不满足这一要求,则必须使用peer ebgp-max-hop命令允许它们经过多跳建立EBGP会话。

2. 配置限制和指导

配置BGP GTSM功能后,只要本地设备和指定的对等体通过了GTSM检查,就允许在二者之间建立EBGP会话,不管二者之间的跳数是否超过peer ebgp-max-hop命令指定的跳数范围。

建议不要指定直连EBGP对等体/对等体组配置peer ebgp-max-hop命令,否则可能导致BGP路由无法正常迭代。

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

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图或BGP-VPN实例视图。

¡     进入BGP实例视图。

bgp as-number [ instance instance-name ]

¡     请依次执行以下命令进入BGP-VPN实例视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

(3)     配置允许本地路由器同非直连网络上的邻居建立EBGP会话,同时指定允许的最大跳数。

peer { group-name | ipv4-address [ mask-length ] } ebgp-max-hop [ hop-count ]

缺省情况下,不允许同非直连网络上的邻居建立EBGP会话。

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

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图或BGP-VPN实例视图。

¡     进入BGP实例视图。

bgp as-number [ instance instance-name ]

¡     请依次执行以下命令进入BGP-VPN实例视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

(3)     配置允许本地路由器同非直连网络上的邻居建立EBGP会话,同时指定允许的最大跳数。

peer { group-name | ipv6-address [ prefix-length ] } ebgp-max-hop [ hop-count ]

缺省情况下,不允许同非直连网络上的邻居建立EBGP会话。

1.4  使能直连EBGP会话快速复位功能

1. 功能简介

未使能直连EBGP会话快速复位功能时,连接直连EBGP对等体的链路down后,本地路由器不会立即断开与EBGP对等体的会话,而是等待会话保持时间(Holdtime)超时后,才断开该会话。此时链路震荡不会影响EBGP会话的状态。

使能直连EBGP会话快速复位功能后,连接直连EBGP对等体的链路down时,本地路由器会立即断开与EBGP对等体的会话,并重新与该对等体建立EBGP会话,从而实现快速发现链路故障并重建会话。

2. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     使能直连EBGP会话快速复位功能。

ebgp-interface-sensitive

缺省情况下,直连EBGP会话快速复位功能处于使能状态。

1.5  开启基于前缀BGP ORF能力

1.5.1  功能简介

本功能适用于此场景:路由接收方希望路由发送方只发送自己需要的BGP路由,而路由发送方如果针对每个路由接收方都设置路由发布策略,则会增加配置量和维护复杂度。因此,路由发送方需要在无需维护路由接收方的路由接收需求的情况下,仍能够满足路由接收方的路由接收需求。

BGP ORF(Outbound Route Filtering,输出路由过滤)功能是指将本地的路由接收策略信息通过Route-refresh消息发送给对等体,当对等体需要向本地发送Update更新消息时,不仅要利用对等体上的路由策略对路由进行过滤,还需要利用接收到的路由接收策略对路由进行过滤,只有通过策略过滤的路由信息才会发给本地。通过上述机制,BGP ORF功能可以降低带宽占用,并显著减少路由发送方的配置工作量。

本功能是基于前缀的BGP ORF功能。配置本功能后,本地和BGP对等体会通过Open消息协商ORF能力(即收发的消息里是否允许携带ORF信息,如果允许携带,是否可以携带非标准的ORF信息),当协商完毕并成功建立BGP会话后,可以通过特殊的Route-refresh消息交互ORF信息。ORF信息中携带了本端用于BGP路由接收过滤的地址前缀列表信息,对端收到ORF信息后仅会向本端发送通过地址前缀列表过滤的BGP路由信息,以达到减少BGP邻居间Update更新消息的交互,节省网络资源的目的。

1.5.2  配置限制和指导

本地和BGP对等体都需要执行本配置,且需要保证一端能够发送携带ORF信息的Route-refresh报文,另一端能够接收携带ORF信息的Route-refresh报文,才能保证ORF能力协商成功。

1.5.3  配置准备

在开启基于前缀的BGP ORF能力之前,请先通过peer prefix-list import命令设置基于地址前缀列表的BGP路由接收策略,BGP才会将该地址前缀列表信息发布给对等体。

1.5.4  开启BGP邻居协商的ORF能力

1. 配置步骤(IPv4单播/IPv4组播)

(1)     ‍进入系统视图。

system-view

(2)     进入BGP IPv4单播地址族视图、BGP-VPN IPv4单播地址族视图或BGP IPv4组播地址族视图。

¡     请依次执行以下命令进入BGP IPv4单播地址族视图。

bgp as-number [ instance instance-name ]

address-family ipv4 [ unicast ]

¡     请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

address-family ipv4 [ unicast ]

¡     请依次执行以下命令进入BGP IPv4组播地址族视图。

bgp as-number [ instance instance-name ]

address-family ipv4 multicast

(3)     为对等体/对等体组设置基于地址前缀列表的BGP路由过滤策略。

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

缺省情况下,未配置基于地址前缀列表的BGP路由过滤策略。

(4)     开启BGP邻居协商基于前缀的ORF能力。请选择其中一项进行配置。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } capability-advertise orf prefix-list { both | receive | send }

interface-peer interface-type interface-number capability-advertise orf prefix-list { both | receive | send }

缺省情况下,BGP邻居协商的ORF能力处于关闭状态。

BGP IPv4组播地址族视图下不支持IPv6参数和interface-peer命令。

2. 配置步骤(IPv6单播/IPv6组播)

(1)     ‍进入系统视图。

system-view

(2)     进入BGP IPv6单播地址族视图、BGP-VPN IPv6单播地址族视图或BGP IPv6组播地址族视图。

¡     请依次执行以下命令进入BGP IPv6单播地址族视图。

bgp as-number [ instance instance-name ]

address-family ipv6 [ unicast ]

¡     请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

address-family ipv6 [ unicast ]

¡     请依次执行以下命令进入BGP IPv6组播地址族视图。

bgp as-number [ instance instance-name ]

address-family ipv6 multicast

(3)     为对等体/对等体组设置基于地址前缀列表的BGP路由过滤策略。

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

缺省情况下,未配置基于地址前缀列表的BGP路由过滤策略。

(4)     开启BGP邻居协商基于前缀的ORF能力。请选择其中一项进行配置。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] | link-local-address interface interface-type interface-number } capability-advertise orf prefix-list { both | receive | send }

interface-peer interface-type interface-number  capability-advertise orf prefix-list { both | receive | send }

缺省情况下,BGP邻居协商的ORF能力处于关闭状态。

BGP IPv6组播地址族视图下不支持IPv4参数、link-local-address interface interface-type interface-number参数和interface-peer命令。

1.5.5  开启BGP邻居协商的非标准ORF能力

1. 功能简介

和采用非标准ORF的第三方设备互通时需要执行本配置。

2. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图或BGP-VPN实例视图。

¡     进入BGP实例视图。

bgp as-number [ instance instance-name ]

¡     请依次执行以下命令进入BGP-VPN实例视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

(3)     开启BGP邻居协商的非标准ORF能力。

peer { group-name | ip-address [ mask-length ] | ipv6-address [ prefix-length ] } capability-advertise orf non-standard

缺省情况下,BGP邻居协商的非标准ORF能力处于关闭状态。

1.5.6  BGP ORF功能显示和维护

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

·     显示邻居收到的ORF消息中的前缀信息(IPv4单播)。

display bgp [ instance instance-name ] peer ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] ipv4-address received prefix-list

display bgp [ instance instance-name ] peer ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] ipv6-address [ interface interface-type interface-number ] received prefix-list

·     显示邻居收到的ORF消息中的前缀信息(IPv6单播)。

display bgp [ instance instance-name ] peer ipv6 [ unicast ] [ vpn-instance vpn-instance-name ] ipv6-address received prefix-list

display bgp [ instance instance-name ] peer ipv6 [ unicast ] [ vpn-instance vpn-instance-name ] { ipv4-address | link-local-address interface interface-type interface-number } received prefix-list

·     显示邻居收到的ORF消息中的前缀信息(IPv4组播)。

display bgp [ instance instance-name ] peer ipv4 multicast ipv4-address received prefix-list

·     显示邻居收到的ORF消息中的前缀信息(IPv6组播)。

display bgp [ instance instance-name ] peer ipv6 multicast ipv6-address received prefix-list

1.6  使能4字节AS号抑制功能

1. 功能简介

设备支持4字节的AS号,即AS号取值占用4字节,取值范围为1~4294967295。缺省情况下,设备在与对端设备建立BGP会话时,通过Open消息通告对端设备本端支持4字节的AS号。如果对端设备不支持4字节AS号(只支持2字节AS号),则会导致会话协商失败。此时,在本端与对端设备之间使能4字节AS号抑制功能,可以使得本端设备通过Open消息向对端设备谎称自己不支持4字节的AS号,从而确保本端和对端设备之间可以成功建立BGP会话。

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

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图或BGP-VPN实例视图。

¡     进入BGP实例视图。

bgp as-number [ instance instance-name ]

¡     请依次执行以下命令进入BGP-VPN实例视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

(3)     使能4字节AS号抑制功能。

peer { group-name | ipv4-address [ mask-length ] } capability-advertise suppress-4-byte-as

缺省情况下, 4字节AS号抑制功能处于关闭状态。

注意

如果对端设备支持4字节AS号,请不要使能4字节AS号抑制功能,否则会导致BGP会话无法建立。

 

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

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图或BGP-VPN实例视图。

¡     进入BGP实例视图。

bgp as-number [ instance instance-name ]

¡     请依次执行以下命令进入BGP-VPN实例视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

(3)     使能4字节AS号抑制功能。

peer { group-name | ipv6-address [ prefix-length ] } capability-advertise suppress-4-byte-as

缺省情况下,4字节AS号抑制功能处于关闭状态。

注意

如果对端设备支持4字节AS号,请不要使能4字节AS号抑制功能,否则会导致BGP会话无法建立。

 

1.7  开启与对等体/对等体组交互Withdraw Route-refresh消息的能力

1. 功能简介

图1-1所示,在多级BGP组网场景中,上游设备的上行链路全部故障时,该设备可能无法及时完成路由的收敛,并无法及时发送撤销消息通知下游设备删除来自该设备的BGP路由。此时部分用户流量仍然被发往上行链路故障的上游设备,导致这部分流量转发失败。

图1-1 多级BGP场景组网图

 

图1-2所示,通过本功能开启上游设备与下游设备之间交互Withdraw Route-refresh消息的能力后,上游设备的上行链路全部断开时,上游设备会向下游设备发送Withdraw Route-refresh消息。下游设备收到消息后,不再将流量发送给该上游设备,而是将所有流量都快速切换至链路完好的上游设备,以避免流量丢失。

图1-2 多级BGP场景交换Withdraw Route-refresh消息示意图

 

配置本功能后,上游BGP设备与下游BGP设备间的BGP会话会断开并重新建立,以协商Withdraw Route-refresh消息交互能力。上下游BGP设备之间通过Open消息协商交互Withdraw Route-refresh消息的能力,两端设备都指定对方配置本功能时,协商才能成功。协商成功后,如果上游BGP设备的所有AS 10的邻居均断开,则上游BGP设备会向下游BGP设备发送Withdraw Route-refresh消息,消息中携带了所有会话均断开的AS号,即AS 10。

对等体收到上游BGP设备发送的Withdraw Route-refresh消息后,在所有来自该上游BGP设备的BGP路由中,查找路由的下一跳是否包含Withdraw Route-refresh消息中携带的AS号(AS 10)。对于下一跳携带的第一个AS号为AS 10的BGP路由,下游BGP设备将该BGP路由对应的IP路由置为备份路由,不再通过这些路由指导转发,以实现快速的路径切换。可以通过display rib nibdisplay ipv6 rib nib命令显示信息中的“AS-path”字段,查看BGP路由的下一跳信息中包含的AS号。有关display rib nibdisplay ipv6 rib nib命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“IP路由基础”。

设备还会将收到的Withdraw Route-refresh消息转发出去,转发的规则为从IBGP邻居收到的Withdraw Route-refresh消息仅会被转发给EBGP邻居,从EBGP邻居收到的Withdraw Route-refresh消息仅会被转发给IBGP邻居,并且设备不会修改转发出去的Withdraw Route-refresh消息中携带的AS号。

本功能可以与邻居地址不可达检测功能配合使用,为指定邻居配置peer tracking命令后,本端设备能够快速检测与该邻居的会话状态,在邻居不可达时及时断开BGP会话,并向本端设备的下游设备发送Withdraw Route-refresh消息,以提高路径收敛的速度。

2. 配置限制和指导

配置本命令后,本端设备与指定对等体间的BGP会话会断开并重新建立,请谨慎配置。

本功能仅适用于1. 功能简介中介绍的场景,不适用于始发Withdraw Route-refresh消息的上游设备的上行链路连接IBGP对等体的场景。

3. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图或BGP-VPN实例视图。

¡     进入BGP实例视图。

bgp as-number [ instance instance-name ]

¡     请依次执行以下命令进入BGP-VPN实例视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

(3)     开启与指定对等体/对等体组交互Withdraw Route-refresh消息的能力。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } capability-advertise withdraw-refresh

缺省情况下,设备不具有与指定对等体/对等体组交互Withdraw Route-refresh消息的能力。

1.8  配置BGP通过与Track的联动来调整发送给对等体/对等体组的BGP路由的优先级

1. 功能简介

本功能用于在多级BGP组网场景中实现流量的快速切换。如图1-3所示,在此组网中,上游设备的上行链路全部故障时,该设备可能无法及时完成路由的收敛,并无法及时发送撤销消息通知下游设备删除来自该设备的BGP路由。此时部分用户流量仍然被发往上行链路故障的上游设备,导致这部分流量转发失败。

图1-3 多级BGP场景组网图

 

为了防止上述问题的发生,可以在上游BGP设备上通过本命令使得BGP与Track联动,在上游设备的上行链路故障时实现用户流量的快速切换。

工作机制

图1-4 BGP通过与Track的联动来调整发送给对等体/对等体组的BGP路由的优先级

 

上游BGP设备需要执行以下操作:

(1)     ‍将上行接口链路状态与Track项关联。有关Track的详细介绍,请参见“可靠性配置指导”中的“Track”

(2)     在路由策略中通过apply track命令引用与上行链路状态关联的Track项

(3)     执行peer advertise lowest-priority track-route-policy命令,指定该命令的{ group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] }参数为下游BGP设备,route-policy-name参数为第(2)步中的路由策略

完成上述操作后,上游BGP设备的上行链路Down时,其关联的Track项状态会变为Negative,此时BGP也感知到联动的Track项的变化,会立即更新向下游BGP设备发布的所有路由,并且将发布的路由的优先级调整为最低(MED调整为最大值,本地优先级调整为0),使得下游BGP设备不优选来自该上游BGP设备的路由,将用户流量切换到另一台上游BGP设备。此过程跳过了上游BGP设备的上行链路故障后,保持定时器超时、路由失效以及路由撤销的缓慢过程,大幅提高了用户流量路径切换的速度。

有关路由策略以及apply track命令的详细介绍,请参见“三层技术-IP路由配置指导”中的“路由策略”。

2. 配置限制和指导

peer advertise lowest-priority track-route-policy命令指定的路由策略中,仅apply track子句生效,其他子句均不生效。

peer advertise lowest-priority track-route-policy命令与peer capability-advertise withdraw-refresh命令实现的功能类似,区别在于:

·     peer advertise lowest-priority track-route-policy命令实现的功能集成在设备本身,可以与其他厂商的设备共同组网。但是peer advertise lowest-priority track-route-policy命令会将发往指定对等体/对等体组的所有路由优先级都调整为最低,无法精细控制。

·     peer capability-advertise withdraw-refresh命令要求下游BGP设备能够识别Withdraw Route-refresh消息,否则无法生效。但是peer capability-advertise withdraw-refresh命令能够控制仅上行链路断开的流量切换,能够实现精细控制。

3. 配置步骤(IPv4单播)

(1)     进入系统视图。

system-view

(2)     进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图。

¡     请依次执行以下命令进入BGP IPv4单播地址族视图。

bgp as-number [ instance instance-name ]

address-family ipv4 [ unicast ]

¡     请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

address-family ipv4 [ unicast ]

(3)     配置BGP通过与Track的联动来调整发送给对等体/对等体组的BGP路由的优先级。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise lowest-priority track-route-policy route-policy-name

缺省情况下,BGP不会通过与Track的联动来调整发送给对等体/对等体组的BGP路由的优先级。

4. 配置步骤(IPv6单播)

(1)     进入系统视图。

system-view

(2)     进入BGP IPv6单播地址族视图或BGP-VPN IPv6单播地址族视图。

¡     请依次执行以下命令进入BGP IPv6单播地址族视图。

bgp as-number [ instance instance-name ]

address-family ipv6 [ unicast ]

¡     请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

address-family ipv6 [ unicast ]

(3)     配置BGP通过与Track的联动来调整发送给对等体/对等体组的BGP路由的优先级。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise lowest-priority track-route-policy route-policy-name

缺省情况下,BGP不会通过与Track的联动来调整发送给对等体/对等体组的BGP路由的优先级。

1.9  禁止与对等体/对等体组建立会话

1.9.1  功能简介

由于网络升级维护等原因,需要暂时断开与某个对等体/对等体组的BGP会话时,可以通过本配置禁止与对等体/对等体组建立会话。当网络恢复后,通过执行undo peer ignore命令以恢复与对等体/对等体组的会话。这样,网络管理员无需删除并重新进行对等体/对等体组相关配置,减少了网络维护的工作量。

设备可以通过以下两种方式禁止与对等体/对等体组建立会话:

·     仅禁止与指定对等体/对等体组建立会话。

·     禁止与所有对等体建立会话。

执行本配置时,如果可以指定了graceful参数,则设备会启动等待邻居关系断开定时器,并重新发布路由信息。不同方式下,发布的路由信息有所不同:

·     仅禁止与指定对等体/对等体组建立会话:

¡     向指定的对等体/对等体组发送本设备上全部的路由。

¡     向其他的对等体/对等体组发送来自指定对等体/对等体组的路由。

·     禁止与所有对等体建立会话:向所有对等体/对等体组重新发送本设备上全部的路由。

等待邻居关系断开定时器超时后:

·     如果仅禁止与指定对等体/对等体组建立会话,则设备断开与指定等体/对等体组的会话。

·     如果禁止与所有对等体建立会话,则设备断开与所有对等体的会话。

执行本配置还可以配置这些路由的属性,以降低重新发布路由的优先级,使得邻居路由器优选从其他邻居学到的路由,从而避免当定时器超时、邻居关系断开时造成流量的中断。如果用户只希望设备发送低优先级的路由,而不断开BGP会话,可以在配置本功能时指定graceful graceful-time参数的值为0。

1.9.2  配置限制和指导

如果同时配置ignore all-peerspeer ignore命令,则针对同一对等体/对等体组,以peer ignore命令的配置为准。

1.9.3  禁止与指定对等体/对等体组建立会话(IPv4对等体)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图或BGP-VPN实例视图。

¡     进入BGP实例视图。

bgp as-number [ instance instance-name ]

¡     请依次执行以下命令进入BGP-VPN实例视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

(3)     禁止与对等体/对等体组建立会话。

peer { group-name | ipv4-address [ mask-length ] } ignore [ graceful graceful-time { community { community-number | aa:nn } | local-preference preference | med med } * ]

缺省情况下,允许与BGP对等体/对等体组建立会话。

注意

如果本设备和对等体的会话已经建立,则执行本命令后,会停止该会话,并且清除所有相关路由信息;如果本设备和对等体组的会话已经建立,则执行本命令后,会终止与对等体组内所有对等体之间的会话,并且清除所有相关路由信息。

 

1.9.4  禁止与指定对等体/对等体组建立会话(IPv6对等体)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图或BGP-VPN实例视图。

¡     进入BGP实例视图。

bgp as-number [ instance instance-name ]

¡     请依次执行以下命令进入BGP-VPN实例视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

(3)     禁止与IPv6 BGP对等体/对等体组建立会话。请选择其中一项进行配置。

peer { group-name | ipv6-address [ prefix-length ] | link-local-address interface interface-type interface-number } ignore [ graceful graceful-time { community { community-number | aa:nn } | local-preference preference | med med } * ]

interface-peer interface-type interface-number ignore [ graceful graceful-time { community { community-number | aa:nn } | local-preference preference | med med } * ]

缺省情况下,允许与BGP对等体/对等体组建立会话。

注意

如果本设备和对等体的会话已经建立,则执行本命令后,会停止该会话,并且清除所有相关路由信息;如果本设备和对等体组的会话已经建立,则执行本命令后,会终止与对等体组内所有对等体之间的会话,并且清除所有相关路由信息。

 

1.9.5  禁止与所有对等体/对等体组建立会话

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     禁止与所有对等体/对等体组建立会话。

ignore all-peers [ graceful graceful-time { community { community-number | aa:nn } | local-preference preference | med med } * ]

缺省情况下,允许与BGP对等体/对等体组建立会话。

注意

如果本设备和对等体/对等体组的会话已经建立,则执行本命令后,会断开本设备和对等体/对等体组的会话,并且清除所有路由信息。

 

1.10  配置BGP软复位

1.10.1  功能简介

BGP的选路策略改变,即影响BGP路由选择的配置(如路由首选值等)发生变化后,为了使新的策略生效,必须复位BGP会话,即删除并重新建立BGP会话,以便重新发布路由信息,并应用新的策略对路由信息进行过滤。复位BGP会话时,会造成短暂的BGP会话中断。

通过BGP软复位,可以实现在不中断BGP会话的情况下,对BGP路由表进行更新,并应用新的选路策略。

BGP软复位的方法有以下三种:

·     通过Route-refresh功能实现BGP软复位:如果BGP的选路策略发生了变化,则本地路由器会向BGP对等体发送Route-refresh消息,收到此消息的对等体将其路由信息重新发给本地路由器,本地路由器根据新的路由策略对接收到的路由信息进行过滤。采用这种方式时,要求当前路由器和对等体都支持Route-refresh功能。

·     通过将所有路由更新信息保存在本地的方式实现BGP软复位:将从对等体接收的所有原始路由更新信息保存在本地,当选路策略发生改变后,对保存在本地的所有路由使用新的路由策略重新进行过滤。采用这种方式时,不要求当前路由器和对等体都支持Route-refresh功能,但是保存路由更新需要占用较多的内存资源。

·     手工软复位BGP会话:执行refresh bgp命令手工触发本地路由器将本地路由信息发送给BGP对等体或向BGP对等体发送Route-refresh消息,收到Route-refresh消息的对等体将其路由信息重新发给本地路由器,以便本地路由器根据新的路由策略对接收到的路由信息进行过滤。采用这种方式时,要求当前路由器和对等体都支持Route-refresh功能。

1.10.2  通过Route-refresh功能实现BGP软复位(IPv4对等体)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图或BGP-VPN实例视图。

¡     进入BGP实例视图。

bgp as-number [ instance instance-name ]

¡     请依次执行以下命令进入BGP-VPN实例视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

(3)     通过Route-refresh功能实现BGP软复位。请选择其中一项进行配置。

¡     使能本地路由器与指定对等体/对等体组的BGP路由刷新功能。

peer { group-name | ipv4-address [ mask-length ] } capability-advertise route-refresh

¡     使能本地路由器与指定BGP对等体/对等体组的BGP路由刷新、多协议扩展和4字节AS号功能。

undo peer { group-name | ipv4-address [ mask-length ] } capability-advertise conventional

缺省情况下,BGP路由刷新、多协议扩展和4字节AS号功能处于使能状态。

1.10.3  通过Route-refresh功能实现BGP软复位(IPv6对等体)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图或BGP-VPN实例视图。

¡     进入BGP实例视图。

bgp as-number [ instance instance-name ]

¡     请依次执行以下命令进入BGP-VPN实例视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

(3)     通过Route-refresh功能实现BGP软复位。请选择其中一项进行配置。

¡     使能本地路由器与指定IPv6 BGP对等体/对等体组的BGP路由刷新功能。

peer { group-name | ipv6-address [ prefix-length ] } capability-advertise route-refresh

¡     使能本地路由器与指定IPv6 BGP对等体/对等体组的BGP路由刷新、多协议扩展和4字节AS号功能。

undo peer { group-name | ipv6-address [ prefix-length ] } capability-advertise conventional

缺省情况下,BGP路由刷新、多协议扩展和4字节AS号功能处于使能状态。

1.10.4  通过将所有路由更新信息保存在本地实现BGP软复位(IPv4单播/IPv4组播)

(1)     进入系统视图。

system-view

(2)     进入BGP IPv4单播地址族视图、BGP-VPN IPv4单播地址族视图或BGP IPv4组播地址族视图。

¡     请依次执行以下命令进入BGP IPv4单播地址族视图。

bgp as-number [ instance instance-name ]

address-family ipv4 [ unicast ]

¡     请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

address-family ipv4 [ unicast ]

¡     请依次执行以下命令进入BGP IPv4组播地址族视图。

bgp as-number [ instance instance-name ]

address-family ipv4 multicast

(3)     保存所有来自指定对等体/对等体组的原始路由更新信息。请选择其中一项进行配置。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } keep-all-routes

interface-peer interface-type interface-number keep-all-routes

缺省情况下,不保存来自对等体/对等体组的原始路由更新信息。

BGP IPv4组播地址族视图下不支持IPv6参数和interface-peer命令。

本命令只对执行该命令后接收到的路由生效。

1.10.5  通过将所有路由更新信息保存在本地实现BGP软复位(IPv6单播/IPv6组播)

(1)     进入系统视图。

system-view

(2)     进入BGP IPv6单播地址族视图、BGP-VPN IPv6单播地址族视图或BGP IPv6组播地址族视图。

¡     请依次执行以下命令进入BGP IPv6单播地址族视图。

bgp as-number [ instance instance-name ]

address-family ipv6 [ unicast ]

¡     请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

address-family ipv6 [ unicast ]

¡     请依次执行以下命令进入BGP IPv6组播地址族视图。

bgp as-number [ instance instance-name ]

address-family ipv6 multicast

(3)     保存所有来自指定对等体/对等体组的原始路由更新信息。请选择其中一项进行配置。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] | link-local-address interface interface-type interface-number } keep-all-routes

interface-peer interface-type interface-number keep-all-routes

缺省情况下,不保存来自对等体/对等体组的原始路由更新信息。

BGP IPv6组播地址族视图下不支持IPv4参数、link-local-address interface interface-type interface-number参数和interface-peer命令。

本命令只对执行该命令后接收到的路由生效。

1.10.6  手工软复位BGP会话(IPv4单播/IPv4组播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图或BGP-VPN实例视图。

¡     进入BGP实例视图。

bgp as-number [ instance instance-name ]

¡     请依次执行以下命令进入BGP-VPN实例视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

(3)     配置Route-refresh功能。请选择其中一项进行配置。

¡     使能本地路由器与指定对等体/对等体组的BGP路由刷新功能。

peer { group-name | ipv4-address [ mask-length ] } capability-advertise route-refresh

¡     使能本地路由器与指定BGP对等体/对等体组的BGP路由刷新、多协议扩展和4字节AS号功能。

undo peer { group-name | ipv4-address [ mask-length ] } capability-advertise conventional

缺省情况下,BGP路由刷新、多协议扩展和4字节AS号功能处于使能状态。

(4)     依次执行以下命令退回用户视图。

quit

quit

(5)     手工对BGP会话进行软复位。请选择其中一项进行配置。

¡     手工软复位IPv4地址族下的BGP IPv4会话。

refresh bgp [ instance instance-name ] { ipv4-address [ mask-length ] | all | external | group group-name | internal } { export | import } ipv4 [ multicast | [ unicast ] [ vpn-instance vpn-instance-name ] ]

¡     手工软复位IPv4地址族下的BGP IPv6会话。

refresh bgp [ instance instance-name ] { ipv6-address [ prefix-length ] | all | external | group group-name | internal } { export | import } ipv4 [ multicast | [ unicast ] [ vpn-instance vpn-instance-name ] ]

refresh bgp [ instance instance-name ] { ipv6-address [ prefix-length ] | [ link-local-address ] interface interface-type interface-number } { export | import } ipv4 [ unicast ] [ vpn-instance vpn-instance-name ]

1.10.7  手工软复位BGP会话(IPv6单播/IPv6组播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图或BGP-VPN实例视图。

¡     进入BGP实例视图。

bgp as-number [ instance instance-name ]

¡     请依次执行以下命令进入BGP-VPN实例视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

(3)     配置Route-refresh功能。请选择其中一项进行配置。

¡     使能本地路由器与IPv6 BGP指定对等体/对等体组的BGP路由刷新功能。

peer { group-name | ipv6-address [ prefix-length ] } capability-advertise route-refresh

¡     使能本地路由器与指定IPv6 BGP对等体/对等体组的BGP路由刷新、多协议扩展和4字节AS号功能。

undo peer { group-name | ipv6-address [ prefix-length ] } capability-advertise conventional

缺省情况下,BGP路由刷新、多协议扩展和4字节AS号功能处于使能状态。

(4)     依次执行以下命令退回用户视图。

quit

quit

(5)     手工对BGP会话进行软复位。请选择其中一项进行配置。

¡     手工软复位IPv6地址族下的BGP IPv6会话。

refresh bgp [ instance instance-name ] { ipv6-address [ prefix-length ] | all | external | group group-name | internal } { export | import } ipv6 [ multicast | [ unicast ] [ vpn-instance vpn-instance-name ] ]

refresh bgp [ instance instance-name ] { ipv6-address [ prefix-length ] | [ link-local-address ] interface interface-type interface-number | all | external | group group-name | internal } { export | import } ipv6 [ unicast ] [ vpn-instance vpn-instance-name ]

¡     手工软复位IPv6地址族下的BGP IPv4会话。

refresh bgp [ instance instance-name ] { ipv4-address [ mask-length ] | all | external | group group-name | internal } { export | import } ipv6 [ multicast | [ unicast ] [ vpn-instance vpn-instance-name ] ]

1.11  配置BGP负载分担

1. 功能简介

通过改变BGP选路规则实现负载分担时,设备根据balance命令配置的进行BGP负载分担的路由条数,选择指定数目的路由进行负载分担,以提高链路利用率。

本功能可以通过配置ecmp-nexthop-localecmp-nexthop-unchanged参数,实现对BGP负载分担的路由下一跳地址进行处理。执行balance命令时,ecmp-nexthop-localecmp-nexthop-unchanged参数的使用说明如下。

参数

使用说明

未指定ecmp-nexthop-localecmp-nexthop-unchanged参数

·     未配置BGP Add-Path功能时,设备仅向IBGP对等体传递形成了负载分担的路由中的最优路由,并将该路由的下一跳地址修改为本地的地址

·     配置了BGP Add-Path功能时,设备按照Add-Path优选路由的最大条数向IBGP对等体传递形成了负载分担的路由,并将其中的最优路由的下一跳地址修改为本地的地址,不修改其他路由的下一跳地址

指定了ecmp-nexthop-local参数

对于同一目的地址的路由,将所有参与负载分担的路由的下一跳地址修改为本地的地址

指定了ecmp-nexthop-unchanged参数

对参与负载分担的路由的下一跳地址不做特殊处理

 

2. 配置限制和指导

配置balance igp-metric-ignorebestroute igp-metric-ignore中任一命令均可使BGP在选择负载分担的路由时忽略IGP Metric值。两条命令的不同点在于:

·     balance igp-metric-ignore命令仅用于负载分担。BGP路由发布时的最优路由选择不受此命令的影响。BGP向外发布路由时仍会按照选路规则比较IGP Metric值,以选出最优的路由。

·     bestroute igp-metric-ignore命令不仅用于负载分担,还用于BGP路由发布时的最优路由选择。执行本命令后,BGP选择负载分担路由、向外发布路由时,均会忽略路由的IGP Metric值。

3. 配置步骤(IPv4单播/IPv4组播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图或BGP-VPN实例视图。

¡     进入BGP实例视图。

bgp as-number [ instance instance-name ]

¡     请依次执行以下命令进入BGP-VPN实例视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

(3)     (可选)配置BGP在选择最优路由时忽略IGP Metric的比较。

bestroute igp-metric-ignore

缺省情况下,BGP在选择最优路由时会比较这些路由下一跳的IGP路由的Metric值,并优选IGP Metric值最小的路由。

下一跳IGP Metric不相同的BGP路由之间无法形成负载分担。配置本命令使得不同路由的下一跳IGP Metric不同时能够形成BGP负载分担。

(4)     退回系统视图。

¡     在BGP实例视图下退回系统视图。

quit

¡     在BGP-VPN实例视图下请依次执行以下命令退回系统视图。

quit

quit

(5)     进入BGP IPv4单播地址族视图、BGP-VPN IPv4单播地址族视图或BGP IPv4组播地址族视图。

¡     请依次执行以下命令进入BGP IPv4单播地址族视图。

bgp as-number [ instance instance-name ]

address-family ipv4 [ unicast ]

¡     请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

address-family ipv4 [ unicast ]

¡     请依次执行以下命令进入BGP IPv4组播地址族视图。

bgp as-number [ instance instance-name ]

address-family ipv4 multicast

(6)     配置进行BGP负载分担的路由条数。

balance [ ebgp | eibgp | ibgp ] number [ ecmp-nexthop-local | ecmp-nexthop-unchanged ]

缺省情况下,不会进行BGP负载分担。

(7)     (可选)配置不同AS_PATH属性的路由能够形成BGP负载分担。

balance as-path-neglect

缺省情况下,不同AS_PATH属性的路由之间不能形成BGP负载分担。

(8)     (可选)配置内容不同但长度相同的AS_PATH属性的路由能够形成BGP负载分担。

balance as-path-relax [ ebgp | ibgp ]

缺省情况下,内容不同但长度相同的AS_PATH属性的路由不能形成BGP负载分担。

(9)     (可选)配置到达路由下一跳的IGP路由的Metric值不同的BGP路由之间能够形成BGP负载分担。

balance igp-metric-ignore

缺省情况下,到达路由下一跳的IGP路由的Metric值不同的BGP路由之间不能形成负载分担。

4. 配置步骤(IPv6单播/IPv6组播)

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图或BGP-VPN实例视图。

¡     进入BGP实例视图。

bgp as-number [ instance instance-name ]

¡     请依次执行以下命令进入BGP-VPN实例视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

(3)     (可选)配置BGP在选择最优路由时忽略IGP Metric的比较。

bestroute igp-metric-ignore

缺省情况下,BGP在选择最优路由时会比较这些路由下一跳的IGP路由的Metric值,并优选IGP Metric值最小的路由。

下一跳IGP Metric不相同的BGP路由之间无法形成负载分担。配置本命令使得不同路由的下一跳IGP Metric不同时能够形成BGP负载分担。

(4)     退回系统视图。

¡     在BGP实例视图下退回系统视图。

quit

¡     在BGP-VPN实例视图下请依次执行以下命令退回系统视图。

quit

quit

(5)     进入BGP IPv6单播地址族视图、BGP-VPN IPv6单播地址族视图或BGP IPv6组播地址族视图。

¡     请依次执行以下命令进入BGP IPv6单播地址族视图。

bgp as-number [ instance instance-name ]

address-family ipv6 [ unicast ]

¡     请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

address-family ipv6 [ unicast ]

¡     请依次执行以下命令进入BGP IPv6组播地址族视图。

bgp as-number [ instance instance-name ]

address-family ipv6 multicast

(6)     配置进行BGP负载分担的路由条数。

balance [ ebgp | eibgp | ibgp ] number [ ecmp-nexthop-local | ecmp-nexthop-unchanged ]

缺省情况下,不会进行BGP负载分担。

(7)     (可选)配置不同AS_PATH属性的路由能够形成BGP负载分担。

balance as-path-neglect

缺省情况下,不同AS_PATH属性的路由之间不能形成BGP负载分担。

(8)     (可选)配置内容不同但长度相同的AS_PATH属性的路由能够形成BGP负载分担。

balance as-path-relax [ ebgp | ibgp ]

缺省情况下,内容不同但长度相同的AS_PATH属性的路由不能形成BGP负载分担。

(9)     (可选)配置到达路由下一跳的IGP路由的Metric值不同的BGP路由之间能够形成BGP负载分担。

balance igp-metric-ignore

缺省情况下,到达路由下一跳的IGP路由的Metric值不同的BGP路由之间不能形成负载分担。

1.12  配置BGP Add-Path

1. 功能简介

在大规模的网络中,路由反射器通常可以接收到同一前缀的多条BGP路由,但是在缺省情况下,BGP只发布一条最优路由。如果最优路由所在路径出现网络故障,数据流量将会被中断,直到BGP根据新的网络拓扑路由收敛后,被中断的流量才能恢复正常的传输。

为了解决上述问题,可以在路由反射器上配置Add-Path(Additional Paths)功能。部署该功能后,设备可以同时发布多条相同前缀的路由给对等体。对等体接收到相同前缀的多条BGP路由后,即可为到达同一目的网络形成多条链路,这些链路之间既可以通过balance命令形成负载分担,也可以按照BGP路由的优选规则形成备份,在一条链路出现故障时将流量快速切换到其他链路上,从而提高了数据传输的可靠性。

例如图1-5所示,Device A、Device B和Device C位于AS 100内,通过RR在域内反射路由信息。Device B和Device C均与Device D建立EBGP会话,并均从Device D学习到一条前缀为10.1.1.0/24的路由。

图1-5 BGP Add-Path组网图

 

Device B和Device C将路由10.1.1.0/24分别发布给RR,RR将学习到两条相同前缀的路由,此时RR可以通过配置BGP Add-Path功能,将多条相同前缀的路由发布给Device A。配置前后的对比如所示。

表1-1 路由发布情况以及链路故障收敛情况

是否配置BGP Add-Path

路由发布情况

单条链路故障时的收敛情况

未配置BGP Add-Path

RR仅将学习到的两条10.1.1.0/24路由中的最优路由发布给Device A

Device A需要对路由进行重新收敛

已配置BGP Add-Path

RR将学习到的两条10.1.1.0/24路由均发布给Device A,两条路由的下一跳地址分别为12.1.1.1以及13.1.1.1

Device A将学习到的两条路由形成FRR时,去往10.1.1.0/24网段的主路径如果故障,Device A可以将流量快速切换到备路径

Device A将学习到的两条路由形成负载分担时,去往10.1.1.0/24网段的一条路径如果故障,流量将全部转移到另一条路径

 

2. 配置限制和指导

Add-Path能力包括接收和发送两种。为了让对等体间的Add-Path能力协商成功,必须一端使能接收能力,另一端使能发送能力。

3. 配置步骤(IPv4单播)

(1)     ‍进入系统视图。

system-view

(2)     进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图。

¡     请依次执行以下命令进入BGP IPv4单播地址族视图。

bgp as-number [ instance instance-name ]

address-family ipv4 [ unicast ]

¡     请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

address-family ipv4 [ unicast ]

(3)     配置Add-Path功能。请选择其中一项进行配置。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } additional-paths { receive | send } *

interface-peer interface-type interface-number additional-paths { receive | send } *

缺省情况下,未配置Add-Path功能。

(4)     配置向指定对等体/对等体组发送的Add-Path优选路由的最大条数。请选择其中一项进行配置。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise additional-paths best number

interface-peer interface-type interface-number advertise additional-paths best number

缺省情况下,向指定对等体/对等体组发送的Add-Path优选路由的最大条数为1。

(5)     配置Add-Path优选路由的最大条数。

additional-paths select-best best-number

缺省情况下,Add-Path优选路由的最大条数为1。

4. 配置步骤(IPv6单播)

(1)     ‍进入系统视图。

system-view

(2)     进入BGP IPv6单播地址族视图或BGP-VPN IPv6单播地址族视图。

¡     请依次执行以下命令进入BGP IPv6单播地址族视图。

bgp as-number [ instance instance-name ]

address-family ipv6 [ unicast ]

¡     请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

address-family ipv6 [ unicast ]

(3)     配置Add-Path功能。请选择其中一项进行配置。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] | link-local-address interface interface-type interface-number } additional-paths { receive | send } *

interface-peer interface-type interface-number additional-paths { receive | send } *

缺省情况下,未配置Add-Path功能。

(4)     配置向指定对等体/对等体组发送的Add-Path优选路由的最大条数。请选择其中一项进行配置。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] | link-local-address interface interface-type interface-number } advertise additional-paths best number

interface-peer interface-type interface-number advertise additional-paths best number

缺省情况下,向指定对等体/对等体组发送的Add-Path优选路由的最大条数为1。

(5)     配置Add-Path优选路由的最大条数。

additional-paths select-best best-number

缺省情况下,Add-Path优选路由的最大条数为1。

 

1.13  配置路由优选延迟时间

1. 功能简介

图1-6所示,设备之间均通过BGP协议互通,Device A与Device D之间存在两条路径,当Device D和Device B之间的链路不通时,流量切换到备份路径上转发,之后若主用路径恢复正常,流量将切回主用路径。这种情况下,当主用链路恢复正常时,Device B会向Device A发送Update消息更新路由,Device A收到路由后触发路由优选,将流量切换到主用路径上进行转发,此时Device B可能未完成FIB转发表项的刷新,导致流量丢失。通过在Device A上开启延迟路由优选功能可以在触发路由优选时延迟一段时间再进行重新选路,避免切换路径时由于表项未完成刷新导致的流量丢失现象。

图1-6 延迟路由优选应用场景示意图

 

配置本功能时,可以通过route-select delay命令配置在一个地址族下所有的路由变化时均延迟优选;也可以通过route-select suppress on-peer-up命令配置在邻居状态由Down变为Up后,设备仅对来自该邻居的BGP路由延迟优选。以上二者同时配置时,二者中较长的路由优选延迟时间生效。

2. 配置限制与指导

配置本功能时,需要注意:

·     仅路由变化后存在多条相同前缀的有效路由时路由优选才会延迟。

·     将路由优选延迟时间修改为非0值时,正在等待延迟路由优选时间的路由不受影响,仍采用延迟开始时的时间;将路由优选延迟时间修改为0时,正在等待延迟路由优选时间的路由会立即进行优选。

以下情况需要进行路由优选时不受路由优选延迟时间影响,仍会立即进行路由优选:

·     本地的配置发生变化引起路由变化。

·     撤销路由引起路由变化。

·     路由变化后去往某一目的只有一条路由。

·     BGP发生主备进程倒换时。

·     存在多条等价路由的情况下,选中路由发生变化。

·     配置了FRR情况下仅存在最优路由和次优路由。

·     引入的路由触发路由优选。

·     最优路由下一跳发生变化且存在正在等待延迟优选时间的相同前缀路由。

·     在BGP NSR功能处于开启状态时,设备进行主备倒换。

如需即刻对正在延迟优选的路由进行优选,可以通过如下方式配置:

·     执行undo route-select suppress on-peer-up命令。该命令仅对通过route-select suppress on-peer-up命令进行延迟优选的路由生效。

·     执行undo route-select delay命令。该命令同时对通过route-select suppress on-peer-up命令以及route-select delay命令进行延迟优选的路由生效。

3. 配置步骤(IPv4单播/IPv4组播)

(1)     进入系统视图。

system-view

(2)     进入BGP IPv4单播地址族视图、BGP-VPN IPv4单播地址族视图或BGP IPv4组播地址族视图。

¡     请依次执行以下命令进入BGP IPv4单播地址族视图。

bgp as-number [ instance instance-name ]

address-family ipv4 [ unicast ]

¡     请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

address-family ipv4 [ unicast ]

¡     请依次执行以下命令进入BGP IPv4组播地址族视图。

bgp as-number [ instance instance-name ]

address-family ipv4 multicast

(3)     配置BGP路由延迟优选,请至少选择其中的一项进行配置。

¡     配置对地址族下的所有BGP路由延迟优选。

route-select delay delay-value

¡     配置邻居状态由Down变为Up后,在指定的持续时间内仅对来自该邻居的BGP路由延迟优选。

route-select suppress on-peer-up milliseconds

缺省情况下,路由优选不延迟。

4. 配置步骤(IPv6单播/IPv6组播)

(1)     进入系统视图。

system-view

(2)     进入BGP IPv6单播地址族视图、BGP-VPN IPv6单播地址族视图或BGP IPv6组播地址族视图。

¡     请依次执行以下命令进入BGP IPv6单播地址族视图。

bgp as-number [ instance instance-name ]

address-family ipv6 [ unicast ]

¡     请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

address-family ipv6 [ unicast ]

¡     请依次执行以下命令进入BGP IPv6组播地址族视图。

bgp as-number [ instance instance-name ]

address-family ipv6 multicast

(3)     配置BGP路由延迟优选,请至少选择其中的一项进行配置。

¡     配置对地址族下的所有BGP路由延迟优选。

route-select delay delay-value

¡     配置邻居状态由Down变为Up后,在指定的持续时间内仅对来自该邻居的BGP路由延迟优选。

route-select suppress on-peer-up milliseconds

缺省情况下,路由优选不延迟。

1.14  配置下一跳路由迭代变化延迟响应功能

1. 功能简介

路由迭代变化可以分为以下两种:

·     紧急路由迭代变化:路由迭代变化后路由是否可达也发生变化,如由于网络故障,BGP路由无法正确迭代出下一跳路由或隧道,导致流量中断。

·     非紧急路由迭代变化:迭代路由或依赖路由发生变化,但路由是否可达未变化,如BGP路由迭代出的接口或隧道发生了变化,但流量仍可以正确转发。

当BGP路由的迭代路由或依赖路由频繁变化时,开启本功能为下一跳路由的变化配置延迟响应时间,可以减少不必要的重新选路和Update消息的发送,从而避免路由变化时流量大量丢失的问题。

2. 配置限制和指导

本功能仅适用于到达同一目的地有多条链路的场景。当去往某一目的地的链路唯一时,如果配置本功能,则在链路故障后会造成更大的流量损失。

请根据实际组网配置适当的延迟响应时间。配置时间过短可能由于路由未收敛完成,导致BGP依然进行了不必要的重新选路和Update消息的发送;配置时间过长可能造成不必要的流量损失。

3. 配置步骤(IPv4单播/IPv4组播)

(1)     进入系统视图。

system-view

(2)     进入BGP IPv4单播地址族视图、BGP-VPN IPv4单播地址族视图或BGP IPv4组播地址族视图。

¡     请依次执行以下命令进入BGP IPv4单播地址族视图。

bgp as-number [ instance instance-name ]

address-family ipv4 [ unicast ]

¡     请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

address-family ipv4 [ unicast ]

¡     请依次执行以下命令进入BGP IPv4组播地址族视图。

bgp as-number [ instance instance-name ]

address-family ipv4 multicast

(3)     开启下一跳路由迭代变化延迟响应功能。

nexthop recursive-lookup [ non-critical-event ] delay [ delay-value ]

缺省情况下,下一跳路由迭代变化延迟响应功能处于关闭状态。

4. 配置步骤(IPv6单播/IPv6组播)

(1)     进入系统视图。

system-view

(2)     进入BGP IPv6单播地址族视图、BGP-VPN IPv6单播地址族视图或BGP IPv6组播地址族视图。

¡     请依次执行以下命令进入BGP IPv6单播地址族视图。

bgp as-number [ instance instance-name ]

address-family ipv6 [ unicast ]

¡     请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

address-family ipv6 [ unicast ]

¡     请依次执行以下命令进入BGP IPv6组播地址族视图。

bgp as-number [ instance instance-name ]

address-family ipv6 multicast

(3)     开启下一跳路由迭代变化延迟响应功能。

nexthop recursive-lookup [ non-critical-event ] delay [ delay-value ]

缺省情况下,下一跳路由迭代变化延迟响应功能处于关闭状态。

1.15  配置BGP路由迭代的抑制功能

1. 功能简介

BGP路由的下一跳迭代到的依赖路由或者隧道发生变化时,会触发该BGP路由重新进行迭代。在频繁震荡的网络中,BGP路由可能会反复进行路由迭代,导致设备的CPU占用率居高不下。为了解决上述问题,可以配置本功能,使得BGP路由在进行下一跳路由迭代时先等待一段时间,一段时间过后再产生迭代的结果,从而降低BGP路由进行下一跳迭代的频率,减轻设备CPU的运行压力。

配置了抑制时间后,BGP路由进行多次迭代的流程如图1-7所示。

图1-7 BGP路由迭代抑制流程图

 

配置了抑制时间时,BGP路由开始进行迭代后,需要等待一段抑制时间,抑制时间结束后才能得到迭代结果,该迭代结果为抑制时间T内设备为BGP路由计算出的后一个下一跳迭代路由。BGP得到路由迭代结果并在BGP路由表中更新该结果后,如果BGP路由迭代的结果又发生了变化,则会重新进行路由迭代流程。

如果配置本命令时,指定了最大抑制时间,则表明BGP采用动态的方式对路由迭代进行抑制。在该方式中,如果BGP路由迭代的结果持续变化,则BGP对路由迭代的抑制时间会越来越长,直到抑制时间达到配置的最大时间;如果BGP路由迭代的结果不再变化,则抑制时间会回落。

采用动态方式时,抑制时间T的计算方式如下:

·     BGP路由开始第一次路由迭代(即BGP路由迭代的计数次数N=1)时,抑制时间T为配置的minimum-interval的值。

·     BGP路由在开始第N次(N不小于2)下一跳路由迭代时,抑制时间T=minimum-intervalincremental-interval×[2^(N-2)]。T的最大值为配置的maximum-interval的值。

·     如果连续三次BGP路由迭代的抑制时间都为maximum-interval的值,则下一次该路由进行路由迭代时,抑制时间T为minimum-interval的值,并恢复BGP路由迭代的计数次数N值为1。

·     如果在两倍的maximum-interval值的时间内,BGP路由的迭代结果都没有变化,则下一次该路由进行迭代时,抑制时间T为minimum-interval的值,并恢复BGP路由迭代的计数次数N值为1。

2. 配置限制和指导

多次执行nexthop recursive-lookup restrain命令携带不同的参数或为参数配置不同的值时,可以修改BGP路由迭代的抑制时间参数。但是修改后的配置不会立即生效,而是等到本次BGP路由迭代结果更新后,下一次开始为BGP路由计算下一跳迭代路由时才生效。

请根据BGP路由下一跳所在的实例来判断在哪个视图下配置nexthop recursive-lookup restrain命令。如果BGP路由下一跳处在公网,想要让该BGP路由延迟迭代时,需要在BGP实例视图下配置nexthop recursive-lookup restrain命令;如果BGP路由下一跳处在VPN实例中,则需要在该VPN实例对应的BGP-VPN实例视图下配置nexthop recursive-lookup restrain命令。查看BGP路由下一跳所在实例的方法是:

(1)     执行display ip routing-table verbose命令或display ipv6 routing-table verbose命令,查找BGP路由对应的IP/IPv6路由中的“NibID”字段。

(2)     根据“NibID”字段,执行display rib nibdisplay ipv6 rib nib命令,查找指定下一跳信息中的“VrfNthp”字段。“VrfNthp”字段表示路由下一跳所在的VPN实例索引,该索引对应的实例即为BGP路由下一跳所在实例。

有关display ip routing-table verbosedisplay ipv6 routing-table verbosedisplay rib nibdisplay ipv6 rib nib命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“IP路由基础”。

同时执行nexthop recursive-lookup restrain命令和nexthop recursive-lookup delay命令时,BGP路由开始迭代后,需要等待以上两者配置的抑制时间之和的时间,迭代后的BGP路由才能指导流量转发。

本功能会导致BGP路由迭代的效率降低、路由收敛速度变慢,请根据网络的实际情况判断是否需要配置本命令,以及配置的抑制时间参数。

3. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图或BGP-VPN实例视图。

¡     进入BGP实例视图。

bgp as-number [ instance instance-name ]

¡     请依次执行以下命令进入BGP-VPN实例视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

(3)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(4)     配置BGP路由迭代的抑制功能。

nexthop recursive-lookup restrain { maximum-interval [ minimum-interval [ incremental-interval ] ] | millisecond interval }

缺省情况下,不对BGP路由迭代进行抑制。

配置的minimum-intervalincremental-interval的时长不能大于maximum-interval的时长。

1.16  配置BGP路由进行下一跳路由迭代查找时采用最长匹配方式

1. 功能简介

缺省情况下,从对等体接收到的BGP路由进行下一跳路由迭代时,优先在直连路由中查找依赖路由。仅未查找到匹配的直连路由时,才会在所有路由协议产生的路由中按照最长匹配方式进行查找。此机制可能会引发如下问题:设备的直连路由所在子网包含BGP路由的下一跳地址时,BGP路由会迭代下一跳至该直连路由,此时设备认为下一跳地址为本地直连,直接使用BGP路由表中的下一跳作为FIB表中的真实下一跳,导致匹配该BGP路由的报文转发失败,造成网络流量中断。

图1-8为例,Device B与Device A和Device C分别建立IBGP会话,并作为路由反射器将Device C在BGP中发布的8.0.0.0/24路由发布给Device A。三台设备在创建BGP会话时均使用LoopBack接口作为建立TCP连接使用的源接口。Device A与Device B直连接口的IPv4地址所在网段为3.3.0.0/16。

在路由的下一跳属性未被改变的情况下,Device A上BGP路由8.0.0.0/24的下一跳为3.3.3.3。该BGP路由进行下一跳迭代时,由于查找到了包含下一跳3.3.3.3网段的直连路由3.3.0.0/16,Device A认为下一跳3.3.3.3为设备上的直连路由,将3.3.3.3直接作为FIB表中去往目的网段8.0.0.0/24的真实下一跳,导致去往8.0.0.0/24网段的三层流量转发失败。

图1-8 直连路由包含BGP路由的下一跳时路由迭代错误示意图

 

通过配置本功能,可以使从对等体接收到的BGP路由迭代下一跳时,直接在所有路由协议产生的路由中按照最长匹配方式查找依赖路由,以保证查找到的依赖路由可达。

2. 配置步骤(IPv4单播)

(1)     进入系统视图。

system-view

(2)     进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图。

¡     请依次执行以下命令进入BGP IPv4单播地址族视图。

bgp as-number [ instance instance-name ]

address-family ipv4 [ unicast ]

¡     请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

address-family ipv4 [ unicast ]

(3)     配置BGP路由进行下一跳路由迭代查找时采用最长匹配方式。

nexthop recursive-lookup longest-match [ route-policy route-policy-name ]

缺省情况下,未配置下一跳路由迭代查找时采用最长匹配方式。

未指定route-policy route-policy-name参数或该参数指定的路由策略不存在时,所有从对等体接收到的BGP路由进行下一跳路由迭代查找时都采用最长匹配方式。

3. 配置步骤(IPv6单播)

(1)     进入系统视图。

system-view

(2)     进入BGP IPv6单播地址族视图或BGP-VPN IPv6单播地址族视图。

¡     请依次执行以下命令进入BGP IPv6单播地址族视图。

bgp as-number [ instance instance-name ]

address-family ipv6 [ unicast ]

¡     请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

address-family ipv6 [ unicast ]

(3)     配置BGP路由进行下一跳路由迭代查找时采用最长匹配方式。

nexthop recursive-lookup longest-match [ route-policy route-policy-name ]

缺省情况下,未配置下一跳路由迭代查找时采用最长匹配方式。

未指定route-policy route-policy-name参数或该参数指定的路由策略不存在时,所有从对等体接收到的BGP路由进行下一跳路由迭代查找时都采用最长匹配方式。

1.17  配置BGP路由根据路由策略来过滤迭代到的下一跳路由

1. 功能简介

BGP如果在路由迭代的过程中不对迭代的结果路由进行任何限制,则可能会将路由迭代到一个错误的转发路径上。可以通过配置本功能,使得用户可以通过路由策略灵活的匹配条件,有选择性地影响BGP路由的迭代结果,从而保证BGP路由的下一跳能够迭代到用户期望的路径上。

配置本功能后,BGP路由的下一跳只能迭代到能通过路由策略过滤的路由上,如果BGP路由迭代到的下一跳路由均无法通过路由策略的过滤,则该路由将被标识为不可达,无法生效。路由通过路由策略过滤的判断条件是:路由能够通过本命令指定的路由策略中允许模式节点的过滤。

在某些组网环境中,如果不希望来自特定对等体的路由受迭代策略控制,可以配置peer nexthop-recursive-policy disable命令,使得本功能以及protocol nexthop recursive-lookup命令对于从指定对等体/对等体组学习到的BGP路由不生效。

2. 配置限制和指导

nexthop recursive-lookup route-policy命令对从直连EBGP对等体学习到的路由不生效。

如果在某个BGP地址族视图下配置了nexthop recursive-lookup route-policy命令,并同时在RIB IPv4地址族视图(或RIB IPv6地址族视图)下配置了protocol nexthop recursive-lookup命令,则对于该BGP地址族中的BGP路由,采用该地址族视图下配置的nexthop recursive-lookup route-policy命令。如果某个BGP地址族视图下未配置nexthop recursive-lookup route-policy命令,仅在RIB IPv4地址族视图(或RIB IPv6地址族视图)下配置了protocol nexthop recursive-lookup命令,则该地址族中的BGP路由根据下一跳的地址类型,使用RIB IPv4地址族视图(或RIB IPv6地址族视图)下protocol nexthop recursive-lookup命令的配置来进行下一跳迭代查找。

protocol nexthop recursive-lookup命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“IP路由基础”。

3. 配置任务简介

·     配置BGP路由根据路由策略来过滤迭代到的下一跳路由(IPv4单播/IPv4组播)

·     配置BGP路由根据路由策略来过滤迭代到的下一跳路由(IPv6单播/IPv6组播)

·     (可选)配置从对等体/对等体组学到的路由不受迭代策略控制

4. 配置BGP路由根据路由策略来过滤迭代到的下一跳路由(IPv4单播/IPv4组播)

(1)     进入系统视图。

system-view

(2)     进入BGP IPv4单播地址族视图、BGP-VPN IPv4单播地址族视图或BGP IPv4组播地址族视图。

¡     请依次执行以下命令进入BGP IPv4单播地址族视图。

bgp as-number [ instance instance-name ]

address-family ipv4 [ unicast ]

¡     请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

address-family ipv4 [ unicast ]

¡     请依次执行以下命令进入BGP IPv4组播地址族视图。

bgp as-number [ instance instance-name ]

address-family ipv4 multicast

(3)     配置BGP路由根据路由策略来过滤迭代到的下一跳路由。

nexthop recursive-lookup route-policy route-policy-name

缺省情况下,BGP不根据路由策略来过滤迭代到的下一跳路由。

注意

配置本命令后,如果地址族中的所有BGP路由迭代到的下一跳路由均无法通过路由策略的过滤,该地址族下的所有BGP路由将全部成为不可达路由。请用户在配置本命令前,提前规划期望迭代到的下一跳路由,使其能够通过指定路由策略中允许模式节点的过滤。

 

5. 配置BGP路由根据路由策略来过滤迭代到的下一跳路由(IPv6单播/IPv6组播)

(1)     进入系统视图。

system-view

(2)     进入BGP IPv6单播地址族视图、BGP-VPN IPv6单播地址族视图或BGP IPv6组播地址族视图。

¡     请依次执行以下命令进入BGP IPv6单播地址族视图。

bgp as-number [ instance instance-name ]

address-family ipv6 [ unicast ]

¡     请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

address-family ipv6 [ unicast ]

¡     请依次执行以下命令进入BGP IPv6组播地址族视图。

bgp as-number [ instance instance-name ]

address-family ipv6 multicast

(3)     配置BGP路由根据路由策略来过滤迭代到的下一跳路由。

nexthop recursive-lookup route-policy route-policy-name

缺省情况下,BGP不根据路由策略来过滤迭代到的下一跳路由。

注意

为了防止指定地址族中的所有BGP路由迭代到的下一跳路由均无法通过路由策略的过滤,导致该地址族下的所有BGP路由均成为不可达路由,请在配置本命令前,确保用户期望迭代到的下一跳路由能够通过指定路由策略中允许模式节点的过滤。

 

6. 配置从对等体/对等体组学到的路由不受迭代策略控制

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图或BGP-VPN实例视图。

¡     进入BGP实例视图。

bgp as-number [ instance instance-name ]

¡     请依次执行以下命令进入BGP-VPN实例视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

(3)     配置从对等体/对等体组学到的路由不受迭代策略控制。请选择其中一项进行配置。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] | link-local-address interface interface-type interface-number } nexthop-recursive-policy disable

interface-peer interface-type interface-number nexthop-recursive-policy disable

缺省情况下,从对等体/对等体组学到的路由受迭代策略控制。

配置本命令后,对于从指定对等体/对等体组学习到的BGP路由,nexthop recursive-lookup route-policy命令和protocol nexthop recursive-lookup命令均不生效。

1.18  配置邻居震荡抑制功能

1. 功能简介

本功能用于抑制BGP邻居震荡,BGP邻居震荡是指与BGP对等体建立的会话反复断开和建立,BGP会话建立后,BGP邻居间需要交换整个BGP路由表,如果BGP路由数量较大,BGP邻居震荡会导致设备需要反复更新路由状态,占用大量资源。抑制邻居震荡能够减少BGP报文的发送和CPU及带宽资源的占用,降低设备负担。

配置本功能后,如果BGP会话断开,则下次与相同对等体建立的会话将被保持在Idle状态一段时间(即抑制时间),以避免BGP会话频繁up/down。随着BGP会话断开的次数增长,每次重新建立连接的抑制时间也会增长,抑制时间=2^((IdleCount-1)÷3))×32,单位为秒。其中IdleCount为震荡的次数,即BGP会话断开的次数。需要注意的是,首次震荡时,抑制时间为2秒,第二次震荡时按照IdleCount为1进行公式计算,后续每次震荡时IdleCount+1进行公式计算,以此类推。

当抑制时间增长至peer flap-dampen命令配置的最大时间时,便不再增长,无论后续震荡多少次,重新建立连接时的抑制时间都为该最大时间。如果在peer flap-dampen命令配置的抑制回退时间内BGP会话都没有断开,则重置抑制时间,重新从2秒开始计算。

执行reset bgp命令可以手工重置抑制时间,使其从2秒开始重新计算。

请根据实际组网配置适当的最大抑制时间和抑制回退时间,最大抑制时间过短可能起不到抑制作用,过长可能导致BGP邻居长时间不能建立连接。

2. 配置步骤

(1)     ‍进入系统视图。

system-view

(2)     进入BGP实例视图或BGP-VPN实例视图。

¡     进入BGP实例视图。

bgp as-number [ instance instance-name ]

¡     请依次执行以下命令进入BGP-VPN实例视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

(3)     配置邻居震荡抑制功能。

peer { group-name | ipv4-address | ipv6-address } flap-dampen [ max-idle-time max-time | min-established-time min-time ]*

缺省情况下,对等体/对等体组的邻居震荡抑制功能处于关闭状态。

1.19  开启邻居地址不可达检测功能

1. 功能简介

邻居地址不可达检测功能用来为BGP协议快速检测链路故障。配置本功能后,BGP会对指定对等体(或对等体组内所有对等体)的IP地址进行不可达检测。如果检测到IP地址不可达,则断开与该对等体的BGP会话,从而实现快速收敛。

以下两种情况下,BGP会认为对等体不可达:

·     在对等体所在的公网实例或VPN实例的路由表中,对等体的IP地址没有匹配的路由。

·     在对等体所在的公网实例或VPN实例的路由表中,对等体的IP地址匹配到的路由是出接口为NULL0的黑洞路由。

例如,在图1-9所示组网中,Device A、Device B和Device C之间建立了IGP邻居关系,Device A和Device C之间建立了BGP会话。Device A上开启了邻居地址不可达检测功能后,当Device A和Device B之间的链路发生故障时,IGP会快速进行收敛,导致Device A不再能够查找到去往Device C的IP路由,从而Device A可以快速断开与Device C的BGP会话,无需等待会话保持定时器超时。

图1-9 邻居地址不可达检测功能组网图

 

2. 配置限制和指导

配置本功能时如果未携带delay delay-time参数,则检测到IP地址不可达时,BGP会立刻断开与对等体的BGP会话。

根据实际情况,灵活配置断开会话的延迟时间,可以提高网络的稳定性:

·     网络中的流量闪断时,IGP路由将产生震荡。此时,依靠IGP路由建立的IBGP会话也会产生震荡。建议为IBGP对等体/对等体组配置的延迟时间大于IGP路由的收敛时间,以避免流量闪断造成的BGP会话震荡。

·     本地路由器作为BGP GR Helper,通过本命令检测GR Restarter的可达性时,为GR Restarter配置的延迟时间要大于GR Restarter通告的BGP会话重建时间加上GR Helper上配置的等待重建额外时间,否则会导致BGP会话断开,设备退出GR过程。

3. 配置步骤

(1)     ‍进入系统视图。

system-view

(2)     进入BGP实例视图或BGP-VPN实例视图。

¡     进入BGP实例视图。

bgp as-number [ instance instance-name ]

¡     请依次执行以下命令进入BGP-VPN实例视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

(3)     对指定对等体/对等体组开启邻居地址不可达检测功能。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } tracking [ delay delay-time ]

缺省情况下,邻居地址不可达检测功能处于关闭状态。

执行本命令时,如果指定的IPv6地址是链路本地地址,则本命令不生效。

1.20  配置系统进入二级内存门限告警状态后不断开EBGP对等体

1. 功能简介

当系统进入二级内存门限告警状态后,BGP会周期性地选择一个EBGP对等体,断开与该对等体之间的BGP会话,直到系统内存恢复为止。用户可以通过本配置来避免在二级内存门限告警状态下,断开与指定EBGP对等体/对等体组之间的BGP会话,以达到对特定EBGP对等体/对等体组进行保护的目的。

内存告警门限的详细介绍,请参见“基础配置指导”中的“设备管理”。

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

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图或BGP-VPN实例视图。

¡     进入BGP实例视图。

bgp as-number [ instance instance-name ]

¡     请依次执行以下命令进入BGP-VPN实例视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

(3)     配置系统进入二级内存门限告警状态后,不断开与指定EBGP对等体/对等体组之间的会话。

peer { group-name | ipv4-address [ mask-length ] } low-memory-exempt

缺省情况下,系统在二级内存门限告警状态下,会周期性地选择一个EBGP对等体,并断开与该对等体之间的BGP会话。

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

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图或BGP-VPN实例视图。

¡     进入BGP实例视图。

bgp as-number [ instance instance-name ]

¡     请依次执行以下命令进入BGP-VPN实例视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

(3)     配置系统进入二级内存门限告警状态后,不断开与指定EBGP对等体/对等体组之间的会话。请选择其中一项进行配置。

peer { group-name | ipv6-address [ prefix-length ] | link-local-address interface interface-type interface-number } low-memory-exempt

interface-peer interface-type interface-number low-memory-exempt

缺省情况下,系统在二级内存门限告警状态下,会周期性地选择一个EBGP对等体,并断开与该对等体之间的BGP会话。

1.21  配置BGP发送协议报文的DSCP优先级

1. 功能简介

DSCP(Differentiated Services Code Point,差分服务编码点)携带在IP报文中的ToS字段,用来体现报文自身的优先等级,决定报文传输的优先程度。通过配置本功能,可以对BGP发送协议报文的DSCP优先级进行设置。

2. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图或BGP-VPN实例视图。

¡     进入BGP实例视图。

bgp as-number [ instance instance-name ]

¡     请依次执行以下命令进入BGP-VPN实例视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

(3)     配置BGP发送协议报文的DSCP优先级。请选择其中一项进行配置。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] | link-local-address interface interface-type interface-number } dscp dscp-value

interface-peer interface-type interface-number dscp dscp-value

缺省情况下,BGP发送协议报文的DSCP优先级为48。

1.22  开启BGP次优路由下刷RIB功能

1. 功能简介

开启BGP次优路由下刷RIB功能后,当BGP路由表中最优路由为通过network命令生成或import-route命令引入的路由,次优路由为从BGP对等体收到的路由时,次优路由会下刷到RIB表项中。在某些组网情况下,执行本命令下刷到达同一目的网络次优路由到RIB后,当最优路由发生故障时,系统可以快速切换到次优路由。例如,设备有一条到达1.1.1.0/24网络的静态路由,其优先级高于BGP路由,BGP本地引入该静态路由同时从对等体收到到达该网段的路由,执行本命令BGP将从对等体收到的路由作为次优路由下刷到RIB,这时如果开启协议间的FRR功能,当静态路由发生故障时,本地引入的静态路由不可达,系统可以快速切换到BGP次优路由,从而大大缩短了流量中断时间。

协议间FRR功能的详细介绍,请参见“三层技术-IP路由配置指导”中的“IP路由基础”。

2. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入BGP视图。

bgp as-number [ instance instance-name ]

(3)     开启BGP次优路由下刷RIB功能。

flush suboptimal-route

缺省情况下,BGP次优路由下刷RIB功能处于关闭状态,即只有BGP最优路由可以下刷到RIB。

1.23  配置对等体监控组

1. 功能简介

对等体监控组主要应用于流量切换场景。例如,当一台本地设备同时从AS 10和AS 20的多个BGP对等体接收到相同目的地址的多条BGP路由时,发往该目的地址的流量可以通过AS 10和AS 20进行负载分担。如果AS 10内的多个BGP对等体与本地设备断开BGP会话,即使AS 10内仍有与本地设备成功建立的BGP会话,网络管理员可能会认为AS 10内的网络状态存在风险,因此需要将所有经过AS 10的流量全部切换到其他AS。

通过monitor-group命令创建对等体监控组后,可以通过peer monitor-group命令,将共享风险的BGP对等体加入到同一对等体监控组中。在对等体监控组中,对等体存在三种状态——UP、INIT、DOWN:

(1)     加入对等体监控组时,如果本地与BGP对等体的会话状态为Established,则该对等体在监控组中的状态为UP,否则为INIT。

(2)     BGP对等体加入监控组后,INIT状态的对等体会话状态变为Established时,该对等体在监控组中的状态会转换为UP。

(3)     UP状态的BGP对等体会话状态从Established异常转换为其他状态时,该对等体在监控组中的状态会转换为DOWN。例外的是,BGP配置导致的BGP会话状态变化情况:

¡     GR正常流程中导致的会话断开,不影响BGP对等体在监控组中的状态。

¡     其他配置(例如peer ignore命令)导致的BGP会话断开时,如果监控组中状态为DOWN的BGP对等体数量未达到阈值,涉及的BGP对等体在监控组中的状态会转换为INIT;如果达到阈值,则维持DOWN状态不变。

当对等体监控组中状态为DOWN的BGP对等体数量达到设定的阈值时,本地设备会断开对等体监控组中的所有BGP会话,并将监控组内所有的BGP对等体状态置为DOWN,以避免流量通过存在风险的路径。

配置对等体监控组功能,并且监控组中处于DOWN状态的BGP对等体数量达到阈值,触发断开对等体监控组中的所有BGP会话后,该监控组的状态变为DOWN。此后本地设备不会主动与对等体监控组中的对等体重新建立BGP会话。此时需要执行reset monitor-group命令。执行reset monitor-group命令后,指定的对等体监控组内的所有BGP对等体的状态会转换为INIT状态。此时监控组中状态正常的BGP会话可以恢复Established状态,该会话对应的BGP对等体在监控组中的状态可以转换为UP状态。

2. 配置限制和指导

每个BGP对等体只对应一个BGP会话,无论该对等体在多少个地址族下建立了连接。对等体组中的BGP对等体数量决定了BGP会话的数量。使用相同IP地址在不同BGP-VPN实例和BGP公网实例下建立的BGP会话,会被视为多个会话。

不允许将同一个BGP对等体/对等体组加入到不同的对等体监控组中。

3. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     创建对等体监控组。

monitor-group monitor-group-name threshold number

缺省情况下,不存在对等体监控组。

(4)     (可选)进入BGP-VPN实例视图。

ip vpn-instance vpn-instance-name

(5)     将指定对等体/对等体组加入指定对等体监控组。

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

缺省情况下,未将BGP对等体/对等体组加入任何对等体监控组。

(6)     (可选)恢复与对等体监控组中对等体的BGP会话。

reset bgp [ instance instance-name ] monitor-group monitor-group-name

4. 显示和维护

可在任意视图下执行以下命令,显示对等体监控组的信息。

display bgp [ instance instance-name ] monitor-group { all | monitor-group-name }

1.24  配置BGP路由禁止下发到IP路由表功能

1. 功能简介

本功能可以应用在以下场景:

·     在MPLS L3VPN组网中,PE设备的BGP路由表中会存在大量的私网路由。缺省情况下,优选后的私网路由将全部被下发到IP路由表中,但部分路由对于PE设备转发无意义,如不需要和其他Site互通的设备对应的路由。通过配置本命令,可以禁止不需要指导转发的路由下发到IP路由表,以提高转发性能。

·     在路由反射器上配置本功能,禁止路由反射器上的BGP路由下发到IP路由表,可以使得路由反射器仅用于发布和接收路由,而不进行业务流量转发,以节省路由反射器上的系统资源。

2. 配置步骤(IPv4单播)

(1)     ‍进入系统视图。

system-view

(2)     进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图。

¡     请依次执行以下命令进入BGP IPv4单播地址族视图。

bgp as-number [ instance instance-name ]

address-family ipv4 [ unicast ]

¡     请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

address-family ipv4 [ unicast ]

(3)     配置BGP路由禁止下发到IP路由表中。

routing-table bgp-rib-only [ all ] [ [ route-policy route-policy-name ] | cross-pod-host ]

缺省情况下,BGP将最优路由下发到IP路由表中。

仅BGP IPv4单播地址族支持cross-pod-host参数。

3. 配置步骤(IPv6单播)

(1)     ‍进入系统视图。

system-view

(2)     进入BGP IPv6单播地址族视图或BGP-VPN IPv6单播地址族视图。

¡     请依次执行以下命令进入BGP IPv6单播地址族视图。

bgp as-number [ instance instance-name ]

address-family ipv6 [ unicast ]

¡     请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

address-family ipv6 [ unicast ]

(3)     配置BGP路由禁止下发到IP路由表中。

routing-table bgp-rib-only [ all ] [ [ route-policy route-policy-name ] | cross-pod-host ]

缺省情况下,BGP将最优路由下发到IP路由表中。

仅BGP IPv6单播地址族支持cross-pod-host参数。

1.25  配置标签申请方式

1. 功能简介

通过配置本功能,BGP可以通过以下三种方式为私网路由申请标签:

·     为每条路由申请一个标签:采用这种方式时,路由条目和标签一一对应;

·     为每个下一跳申请一个标签:当按照每条路由申请标签方式需要申请的标签数量大于设备支持的最大标签数目时,通过采用此方式,可以减少申请的标签数量;

·     为每个VPN实例申请一个标签:当存在大量需要申请标签的路由,并且采用下一跳申请标签的方式申请的标签数量仍然超过设备支持的最大标签数目时,可以采用此方式。

2. 配置限制和指导

为每条路由或者每个下一跳申请标签方式可以与vpn popgo命令配合使用,以实现报文根据标签查找出接口转发报文;为每个VPN实例申请标签方式与vpn popgo命令互斥,采用该方式时,只能根据标签查找FIB转发报文。

3. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     配置标签申请方式。

label-allocation-mode { per-prefix | per-vrf }

缺省情况下,BGP按照每个下一跳分配一个标签的方式申请标签。

注意

改变标签分配方式将重新下刷所有BGP路由,会导致业务的短暂中断,请慎重使用。

 

1.26  配置带隧道信息的标签路由才能参与路由优选

1. 功能简介

通过配置本功能,带隧道信息的标签路由才能参与路由优选。不带隧道信息的标签路由不能参与路由优选,即无法成为最优路由。

2. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     配置带隧道信息的标签路由才能参与路由优选。

labeled-route ignore-no-tunnel

缺省情况下,不带隧道信息的标签路由可以参与路由优选。

1.27  配置关闭MPLS Local Ifnet隧道自动创建功能

1. 功能简介

MPLS Local Ifnet隧道是一条BGP用来转发EBGP MPLS流量的空隧道,只能指导直连EBGP对等体间的流量转发,不能指导非直连EBGP对等体间的流量转发。

如果MP-EBGP对等体之间的隧道出现故障,流量会迭代到MPLS Local Ifnet隧道,而不会通过FRR功能将流量切换至备份隧道上,这样会导致非直连MP-EBGP对等体间出现流量中断。为了避免这个问题,可以通过配置本命令关闭非直连MP-EBGP对等体间的MPLS Local Ifnet隧道自动创建功能。

2. 配置限制和指导

·     关闭与对等体/对等体组之间的MPLS Local Ifnet隧道自动创建功能后,已经建立的MPLS Local Ifnet隧道将被删除。

·     本功能也能够禁止直连MP-EBGP间自动创建MPLS Local Ifnet隧道,建议您在配置本功能前,完全了解其对网络产生的影响。

3. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图或BGP-VPN实例视图。

¡     进入BGP实例视图。

bgp as-number [ instance instance-name ]

¡     请依次执行以下命令进入BGP-VPN实例视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

(3)     配置关闭与指定EBGP对等体/对等体组间的MPLS Local Ifnet隧道自动创建功能。

peer { group name | ipv4-address [ mask-length ] } mpls-local-ifnet disable

缺省情况下,MPLS Local Ifnet隧道自动创建功能处于开启状态,MP-EBGP对等体间交换了带标签路由和VPNv4路由后将自动建立MPLS Local Ifnet 隧道。

1.28  配置采用点分形式显示4字节AS号

1. 功能简介

缺省情况下,通过显示命令查看BGP信息时,其中的4字节AS号显示为整数形式。4字节AS号的整数形式字符串较长。为了简化显示,配置本功能后,通过显示命令查看BGP信息时,其中的4字节AS号将显示为点分形式,更易于用户查看。

4字节AS号的点分形式为X.Y,与整数形式的4字节AS号的对应关系为:整数形式的4字节AS号=X×65536+Y,Y的取值范围为0~65535,点分形式AS号的取值范围为0.1~65535.65535。例如,点分形式的4字节AS号2.1,对应的整数形式为2×65536+1=131073。

2. 配置限制和指导

配置本功能后,AS路径过滤列表将只能匹配点分形式的4字节AS号,无法再匹配整数形式的4字节AS号。此时,如果BGP引用的路由过滤策略中设置了匹配整数形式AS号的AS过滤列表,则需要将AS路径过滤列表修改为匹配点分形式的AS号,以免BGP路由过滤策略失效,导致网络故障。

系统配置文件中的4字节AS号始终保持配置时的形式,不会受本功能的影响。

3. 配置步骤

(1)     进入系统视图。

system-view

(2)     配置采用点分形式显示4字节AS号。

as-notation dotted

缺省情况下,设备采用整数形式显示4字节AS号。

1.29  配置快速更新主机路由功能

1. 功能简介

图1-10所示,Host设备频繁在无线站点AP 1和AP 2之间漫游,导致Device A和Device C上都存在Host设备主机路由。由于这些表项不会实时更新,因此可能影响数据报文的正常转发。配置本功能后,终端在不同AP间迁移时可以快速更新主机路由,从而使得主机迁移后能够快速上线。

图1-10 快速更新主机路由功能应用场景示意图

 

在Device A和Device C上配置快速更新主机路由功能之后,Host在AP 1和AP 2之间的迁移过程如下:

(1)     ‍Host首次在AP 1处上线,Device A上生成对应的主机路由,并通过BGP路由经Device B通告给Device C。

(2)     Host迁移至AP 2处上线,Device C上生成对应的主机路由,此时Device C上存在两条相同的主机路由,BGP优选本地新上线的主机路由,并将主机迁移序列号加一后通过BGP路由经Device B通告给Device A。

(3)     Device B收到Device C发布的主机路由,至此Device B已分别从Device A和Device C收到两条相同的主机路由,优选迁移序列号更大的(从Device C收到的)路由,刷新转发表后向Device A通告。

(4)     Device A从Device B收到Host的主机路由,探测本地ARP/ND表项是否存在,如果ARP/ND表项不存在,删除本地的ARP/ND表项,并删除本机直连路由,通告全网更新Host的主机路由;如果ARP/ND表项存在,则认为Host再次迁移到了本端,将以两条路由中主机迁移序列号较大的值为基础,加一后向邻居通告,重复上述迁移流程。

当Host迁移十分频繁时,各设备可能收到迁移序列号相同的主机路由,此时处理方式如下:

·     从邻居接收多条序列号相同的主机路由时(如图1-10中的Device B),BGP优选从Router ID较小的邻居收到的路由进行转发。

·     本地路由和从邻居收到的路由序列号相同时(如图1-10中的Device A与Device C),探测本地ARP/ND表项是否存在。

主机迁移序列号通过扩展团体属性进行传递。因此配置本功能后,设备将自动开启本地与所有对等体之间的支持扩展团体属性能力,即本地向所有对等体发送的路由中都允许携带扩展团体属性。

2. 配置步骤(IPv4单播)

(1)     ‍进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

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

address-family ipv4 [ unicast ]

(4)     开启主机迁移后的快速更新主机路由功能。

user-move fast-update [ detect ]

缺省情况下,快速更新主机路由功能处于关闭状态。

3. 配置步骤(IPv6单播)

(1)     ‍进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

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

address-family ipv6 [ unicast ]

(4)     开启主机迁移后的快速更新主机路由功能

user-move fast-update [ detect ]

缺省情况下,快速更新主机路由功能处于关闭状态。

1.30  设置Update报文错误信息记录的最大数量

1. 功能简介

缺省情况下,设备接收到错误的Update报文时,会对报文的错误信息进行记录,以便用户根据Update报文的错误信息来定位BGP会话故障的原因。Update报文错误信息记录存在最大数量,超过最大数量的记录会覆盖最早的记录,可以通过配置本功能来修改Update报文错误信息记录的最大数量。

2. 配置限制和指导

本功能配置的Update报文错误信息记录的最大数量,对应display bgp update-packet record命令显示信息中Total number record字段的数量。

Update报文错误信息记录的数量越多,系统资源的压力越大。请根据实际情况,选择合适的Update报文错误信息记录最大数量。

3. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     设置每个地址族下Update报文错误信息记录的最大数量。

update-packet record count count

缺省情况下,Update报文错误信息记录的最大数量为100条。

count的取值为0时表示不记录Update报文错误信息。

4. 显示和维护

可在任意视图下执行以下命令,显示BGP记录的Update报文错误信息。

display bgp [ instance instance-name ] update-packet record [ vpn-instance vpn-instance-name ] [ peer { ipv4-address | ipv6-address } ]

可在用户视图下执行以下命令,清除Update报文错误信息记录。

reset bgp [ instance instance-name ] update-packet record

 

1.31  复位BGP会话

1. 功能简介

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

2. 配置限制和指导

注意

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

 

3. 配置步骤

本节所有命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“BGP基础命令”。

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

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

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

reset bgp [ instance instance-name ] ipv6-address [ prefix-length ] ipv4 [ unicast ] [ vpn-instance vpn-instance-name ]

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

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

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

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

reset bgp ipv4-address [ mask-length ] ipv6 [ unicast ] [ vpn-instance vpn-instance-name ]

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

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

·     复位所有BGP会话。

reset bgp [ instance instance-name ] all

1.32  调整和优化BGP网络典型配置举例‌

1.32.1  BGP负载分担配置

1. 组网需求

所有路由器都配置BGP,Router A在AS 65008中,Router B和Router C在AS 65009中。

Router A与Router B、Router C之间运行EBGP,Router B和Router C之间运行IBGP。

在Router A上配置负载分担的路由条数为2,以提高链路利用率。

2. 组网图

图1-11 BGP负载分担配置组网图

3. 配置步骤

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

(2)     配置BGP连接

¡     在Router A上与Router B、Router C分别建立EBGP连接,并将8.1.1.0/24网段的路由通告给Router B和Router C,以便Router B和Router C能够访问Router A的内部网络。

¡     在Router B上与Router A建立EBGP连接,与Router C建立IBGP连接,并将9.1.1.0/24网段的路由通告给Router A,以便Router A能够通过Router B访问内部网络。同时,在Router B上配置一条到Router C Loopback0接口的静态路由(也可以用OSPF等协议来实现),以便使用Loopback接口建立IBGP连接。

¡     在Router C上与Router A建立EBGP连接,与Router B建立IBGP连接,并将9.1.1.0/24网段的路由通告给Router A,以便Router A能够通过Router C访问内部网络。同时,在Router C上配置一条到Router B Loopback0接口的静态路由(也可以用OSPF等协议来实现),以便使用Loopback接口建立IBGP连接。

# 配置Router A。

<RouterA> system-view

[RouterA] bgp 65008

[RouterA-bgp-default] router-id 1.1.1.1

[RouterA-bgp-default] peer 3.1.1.1 as-number 65009

[RouterA-bgp-default] peer 3.1.2.1 as-number 65009

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

[RouterA-bgp-default-ipv4] peer 3.1.1.1 enable

[RouterA-bgp-default-ipv4] peer 3.1.2.1 enable

[RouterA-bgp-default-ipv4] network 8.1.1.0 24

[RouterA-bgp-default-ipv4] quit

[RouterA-bgp-default] quit

# 配置Router B。

<RouterB> system-view

[RouterB] bgp 65009

[RouterB-bgp-default] router-id 2.2.2.2

[RouterB-bgp-default] peer 3.1.1.2 as-number 65008

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

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

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

[RouterB-bgp-default-ipv4] peer 3.1.1.2 enable

[RouterB-bgp-default-ipv4] peer 3.3.3.3 enable

[RouterB-bgp-default-ipv4] network 9.1.1.0 24

[RouterB-bgp-default-ipv4] quit

[RouterB-bgp-default] quit

[RouterB] ip route-static 3.3.3.3 32 9.1.1.2

# 配置Router C。

<RouterC> system-view

[RouterC] bgp 65009

[RouterC-bgp-default] router-id 3.3.3.3

[RouterC-bgp-default] peer 3.1.2.2 as-number 65008

[RouterC-bgp-default] peer 2.2.2.2 as-number 65009

[RouterC-bgp-default] peer 2.2.2.2 connect-interface loopback 0

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

[RouterC-bgp-default-ipv4] peer 3.1.2.2 enable

[RouterC-bgp-default-ipv4] peer 2.2.2.2 enable

[RouterC-bgp-default-ipv4] network 9.1.1.0 24

[RouterC-bgp-default-ipv4] quit

[RouterC-bgp-default] quit

[RouterC] ip route-static 2.2.2.2 32 9.1.1.1

# 查看Router A的路由表。

[RouterA] display bgp routing-table ipv4

 

 Total number of routes: 3

 

 BGP local router ID is 1.1.1.1

 Status codes: * - valid, > - best, d - dampened, h - history,

               s - suppressed, S - stale, i - internal, e - external

               a – additional-path

       Origin: i - IGP, e - EGP, ? - incomplete

 

     Network            NextHop         MED        LocPrf     PrefVal Path/Ogn

 

* >  8.1.1.0/24         8.1.1.1         0                     32768   i

* >e 9.1.1.0/24         3.1.1.1         0                     0       65009i

*  e                    3.1.2.1         0                     0       65009i

¡     从BGP路由表中可以看出,到目的地址9.1.1.0/24有两条有效路由,其中下一跳为3.1.1.1的路由前有标志“>”,表示它是当前有效的最优路由(因为Router B的路由器ID要小一些);而下一跳为3.1.2.1的路由前有标志“*”,表示它是当前有效的路由,但不是最优的。

¡     使用display ip routing-table命令查看IP路由表项,可以看出到达目的地址9.1.1.0/24的路由只有一条,下一跳地址为3.1.1.1,出接口为GigabitEthernet0/0/2。

(3)     配置负载分担

因为Router A有两条路径到达AS 65009的内部网络,所以,可以在Router A配置负载分担的路由条数为2,以提高链路利用率。

# 配置Router A。

[RouterA] bgp 65008

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

[RouterA-bgp-default-ipv4] balance 2

[RouterA-bgp-default-ipv4] quit

[RouterA-bgp-default] quit

4. 验证配置

# 查看Router A的BGP路由表。

[RouterA] display bgp routing-table ipv4

 

 Total number of routes: 3

 

 BGP local router ID is 1.1.1.1

 Status codes: * - valid, > - best, d - dampened, h - history,

               s - suppressed, S - stale, i - internal, e - external

               a – additional-path

       Origin: i - IGP, e - EGP, ? - incomplete

 

     Network            NextHop         MED        LocPrf     PrefVal Path/Ogn

 

* >  8.1.1.0/24         8.1.1.1         0                     32768   i

* >e 9.1.1.0/24         3.1.1.1         0                     0       65009i

* >e                    3.1.2.1         0                     0       65009i

·     从BGP路由表中可以看到,BGP路由9.1.1.0/24存在两个下一跳,分别是3.1.1.1和3.1.2.1,两条路由前都有标志“>”,表明它们都是当前有效的最优路由。

·     使用display ip routing-table命令查看IP路由表项,可以看出到达目的地址9.1.1.0/24的路由有两条,其中一条的下一跳地址为3.1.1.1,出接口为GigabitEthernet0/0/2;另一条的下一跳地址为3.1.2.1,出接口为GigabitEthernet0/0/3。

1.32.2  BGP Add-Path配置

1. 组网需求

所有路由器运行BGP协议,Router A与Router B和Router C建立EBGP连接,Router B、Router C和Router D之间建立IBGP连接,Route D与Route E建立IBGP连接。

Router D作为路由反射器,Router E为Router D的客户机。

配置Add-Path功能,使Router E通过Router D学到Router B和Router C转发的前缀相同下一跳不同的路由信息。

2. 组网图

图1-12 BGP Add-Path配置组网图

设备

接口

IP地址

设备

接口

IP地址

Router A

GE0/0/1

10.1.1.1/24

Router D

GE0/0/1

30.1.1.1/24

 

GE0/0/2

20.1.1.1/24

 

GE0/0/2

40.1.1.1/24

Router B

GE0/0/1

10.1.1.2/24

 

GE0/0/3

50.1.1.1/24

 

GE0/0/2

30.1.1.2/24

Router E

GE0/0/1

50.1.1.2/24

Router C

GE0/0/1

20.1.1.2/24

 

 

 

 

GE0/0/2

40.1.1.2/24

 

 

 

 

3. 配置步骤

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

(2)     配置BGP连接

# 配置Router A。

<RouterA> system-view

[RouterA] bgp 10

[RouterA-bgp-default] peer 10.1.1.2 as-number 20

[RouterA-bgp-default] peer 20.1.1.2 as-number 20

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

[RouterA-bgp-default-ipv4] peer 10.1.1.2 enable

[RouterA-bgp-default-ipv4] peer 20.1.1.2 enable

# 配置Router B。

<RouterB> system-view

[RouterB] bgp 20

[RouterB-bgp-default] peer 10.1.1.1 as-number 10

[RouterB-bgp-default] peer 30.1.1.1 as-number 20

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

[RouterB-bgp-default-ipv4] peer 10.1.1.1 enable

[RouterB-bgp-default-ipv4] peer 30.1.1.1 enable

# 配置Router C。

<RouterC> system-view

[RouterC] bgp 20

[RouterC-bgp-default] peer 20.1.1.1 as-number 10

[RouterC-bgp-default] peer 40.1.1.1 as-number 20

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

[RouterC-bgp-default-ipv4] peer 20.1.1.1 enable

[RouterC-bgp-default-ipv4] peer 40.1.1.1 enable

# 配置Router D。

<RouterD> system-view

[RouterD] bgp 20

[RouterD-bgp-default] peer 30.1.1.2 as-number 20

[RouterD-bgp-default] peer 40.1.1.2 as-number 20

[RouterD-bgp-default] peer 50.1.1.2 as-number 20

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

[RouterD-bgp-default-ipv4] peer 30.1.1.2 enable

[RouterD-bgp-default-ipv4] peer 40.1.1.2 enable

[RouterD-bgp-default-ipv4] peer 50.1.1.2 enable

# 配置Router E。

<RouterE> system-view

[RouterE] bgp 20

[RouterE-bgp-default] peer 50.1.1.1 as-number 20

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

[RouterE-bgp-default-ipv4] peer 50.1.1.1 enable

(3)     配置发布本地路由

# 配置Router A发布本地10.1.1.0 24的路由信息

[RouterA-bgp-default-ipv4] network 10.1.1.0 24

(4)     将下一跳的属性修改成自身的地址

# 配置Router B。

[RouterB-bgp-default-ipv4] peer 30.1.1.1 next-hop-local

# 配置Router C。

[RouterC-bgp-default-ipv4] peer 40.1.1.1 next-hop-local

(5)     配置路由反射器

# 配置Router D。

[RouterD-bgp-default-ipv4] peer 50.1.1.2 reflect-client

(6)     配置Add-Path

# 配置Router D使能Add-Path发送能力,配置Add-Path优选路由的最大条数为2,配置向对等体50.1.1.2发送Add-Path优选路由的最大条数为2。

[RouterD-bgp-default-ipv4] peer 50.1.1.2 additional-paths send

[RouterD-bgp-default-ipv4] additional-paths select-best 2

[RouterD-bgp-default-ipv4] peer 50.1.1.2 advertise additional-paths best 2

# 配置Router E使能Add-Path接收能力。

[RouterE-bgp-default-ipv4] peer 50.1.1.1 additional-paths receive

4. 验证配置

# 查看Router E的BGP路由信息。

[Router E] display bgp routing-table ipv4

 

 Total number of routes: 2

 

 BGP local router ID is 50.1.1.2

 Status codes: * - valid, > - best, d - dampened, h - history

               s - suppressed, S - stale, i - internal, e - external

               a - additional-path

       Origin: i - IGP, e - EGP, ? - incomplete

 

     Network            NextHop         MED        LocPrf     PrefVal Path/Ogn

 

   i 10.1.1.0/24        30.1.1.2        0          100        0       10i

   i                    40.1.1.2        0          100        0       10i

可以看到从Router D学到的两条前缀相同下一跳不同的路由信息。

1.32.3  基于前缀的BGP ORF配置

1. 组网需求

AS 100和AS 200可以交互BGP路由,但要求对发布的路由进行策略过滤,以保护网络安全、优化网络性能。由于Router A需要的路由在不断变化,现通过部署基于路由前缀的BGP ORF功能,以实现Router C向Router A仅发送符合Router A路由接收策略的路由。

2. 组网图

图1-13 基于前缀的BGP ORF配置组网图

3. 配置步骤

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

(2)     配置BGP连接

¡     Router A与Router B建立IBGP连接,Router A和Router C建立EBGP连接。

¡     Router C和Router D、Router C和Router E均建立IBGP连接。

# 配置Router A。

<RouterA> system-view

[RouterA] bgp 100

[RouterA-bgp-default] router-id 1.1.1.1

[RouterA-bgp-default] peer 10.1.1.2 as-number 200

[RouterA-bgp-default] peer 10.2.1.2 as-number 100

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

[RouterA-bgp-default-ipv4] peer 10.1.1.2 enable

[RouterA-bgp-default-ipv4] peer 10.2.1.2 enable

[RouterA-bgp-default-ipv4] import-route direct

[RouterA-bgp-default-ipv4] quit

[RouterA-bgp-default] quit

# 配置Router B。

<RouterB> system-view

[RouterB] bgp 100

[RouterB-bgp-default] router-id 2.2.2.2

[RouterB-bgp-default] peer 10.2.1.1 as-number 100

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

[RouterB-bgp-default-ipv4] peer 10.2.1.1 enable

[RouterB-bgp-default-ipv4] quit

[RouterB-bgp-default] quit

# 配置Router C。

<RouterC> system-view

[RouterC] bgp 200

[RouterC-bgp-default] router-id 3.3.3.3

[RouterC-bgp-default] peer 10.1.1.1 as-number 100

[RouterC-bgp-default] peer 10.4.1.1 as-number 200

[RouterC-bgp-default] peer 10.5.1.1 as-number 200

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

[RouterC-bgp-default-ipv4] peer 10.1.1.1 enable

[RouterC-bgp-default-ipv4] peer 10.4.1.1 enable

[RouterC-bgp-default-ipv4] peer 10.5.1.1 enable

[RouterC-bgp-default-ipv4] import-route direct

[RouterC-bgp-default-ipv4] quit

[RouterC-bgp-default] quit

# 配置Router D。

<RouterD> system-view

[RouterD] bgp 200

[RouterD-bgp-default] router-id 4.4.4.4

[RouterD-bgp-default] peer 10.4.1.2 as-number 200

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

[RouterD-bgp-default-ipv4] peer 10.4.1.2 enable

[RouterD-bgp-default-ipv4] quit

[RouterD-bgp-default] quit

# 配置Router E。

<RouterE> system-view

[RouterE] bgp 200

[RouterE-bgp-default] router-id 5.5.5.5

[RouterE-bgp-default] peer 10.5.1.2 as-number 200

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

[RouterE-bgp-default-ipv4] peer 10.5.1.2 enable

[RouterE-bgp-default-ipv4] quit

[RouterE-bgp-default] quit

(3)     在Router A上配置基于地址前缀列表的BGP路由接收策略

# 配置Router A。

[RouterA] ip refix-list policy1 permit 10.4.1.0 24 less-equal 32

[RouterA] bgp 100

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

[RouterA-bgp-default-ipv4] peer 10.1.1.2 prefix-list policy1 import

[RouterA-bgp-default-ipv4] quit

[RouterA-bgp-default] quit

# 在Router C上查看向Router A发布的路由信息。

[RouterC] display bgp routing-table ipv4 unicast peer 10.1.1.1 advertised-routes

 

 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             Path/Ogn

 

* >  3.3.3.3/32         127.0.0.1       0                             200?

* >  10.1.1.0/24        10.1.1.2        0                             200?

* >  10.4.1.0/24        10.4.1.2        0                             200?

* >  10.5.1.0/24        10.5.1.2        0                             200?

# 在Router A上查看从Router C接收的路由信息。

[RouterA] display bgp routing-table ipv4 unicast peer 10.1.1.2 received-routes

 

 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

 

* >e 10.4.1.0/24        10.1.1.2        0                     0       ?

可以看到,Router C发布了4条路由,而Router A基于地址前缀列表的BGP路由接收策略,仅接收了1条路由。

(4)     配置基于前缀的BGP ORF功能。

# 在Router A上,开启与Router C协商基于前缀的ORF的能力。

[RouterA] bgp 100

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

[RouterA-bgp-default-ipv4] peer 10.1.1.2 capability-advertise orf prefix-list both

[RouterA-bgp-default-ipv4] quit

[RouterA-bgp-default] quit

# 在Router C上,开启与Router A协商基于前缀的ORF的能力。

[RouterC] bgp 200

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

[RouterC-bgp-default-ipv4] peer 10.1.1.1 capability-advertise orf prefix-list both

[RouterC-bgp-default-ipv4] quit

[RouterC-bgp-default] quit

4. 验证配置

# 在Router C上,查看从Router A收到的ORF消息中的前缀信息。

[RouterC] display bgp peer ipv4 10.1.1.1 received prefix-list

 

ORF prefix list entries: 2

ge: greater-equal   le: less-equal

  Index     Rule    Prefix                                   Ge    Le

  10        permit  10.4.1.0/24                              0     32

# 在Router C上,查看向Router A发布的路由信息。

[RouterC] display bgp routing-table ipv4 unicast peer 10.1.1.1 advertised-routes

 

 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             Path/Ogn

 

* >  10.4.1.0/24        10.4.1.2        0                             200?

可以看到,配置了基于前缀的BGP ORF能力后,Router C按照Router A的接收策略仅向Router A发布了1条路由。

1.32.4  配置BGP按路由策略迭代下一跳配置

1. 组网需求

Router A和Router B以及Router C通过Loopback接口建立IBGP连接。Router B和Router C将路由前缀10.9.9.0/24通过BGP路由发布给Router A。正常情况下,由于Router B的Loopback接口IP地址更小,Router A优选来自Router B的10.9.9.0/24路由。Router B发生故障时,Router A去往2.2.2.2/32的IGP路由会很快被删除,但是由于BGP需要在会话保持定时器超时后才会断开连接,在此期间Router B发往Router A的BGP路由仍会保留在Router A的BGP路由表中并且被优选。由于Router A去往2.2.2.2/32的可达IGP路由已被删除,而Router A上又存在能覆盖2.2.2.2/32前缀的直连路由2.2.2.0/24,所以Router A会把去往10.9.9.0/24的路由错误地迭代到该直连路由上,出接口为GigabitEthernet0/0/1,导致流量丢失。

为了避免此问题,需要在Router A上配置BGP根据路由策略来迭代下一跳,通过设置路由策略,使得Router A只能迭代到掩码为32位的主机路由上,这样在Router B发生故障时,Router A会对来自Router B的10.9.9.0/24路由迭代失败,将该路由置为失效路由,从而优选来自Router C的10.9.9.0/24路由。

2. 组网图

图1-14 BGP按路由策略迭代下一跳配置组网图

3. 配置步骤

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

(2)     配置OSPF协议。

# 配置Router A。

<RouterA> system-view

[RouterA] ospf 1

[RouterA-ospf-1] area 0

[RouterA-ospf-1-area-0.0.0.0] network 1.1.1.1 0.0.0.0

[RouterA-ospf-1-area-0.0.0.0] network 10.1.1.0 0.0.0.255

[RouterA-ospf-1-area-0.0.0.0] network 10.2.1.0 0.0.0.255

[RouterA-ospf-1-area-0.0.0.0] quit

[RouterA-ospf-1] quit

# 配置Router B。

<RouterB> system-view

[RouterB] ospf 1

[RouterB-ospf-1] area 0

[RouterB-ospf-1-area-0.0.0.0] network 2.2.2.2 0.0.0.0

[RouterB-ospf-1-area-0.0.0.0] network 10.1.1.0 0.0.0.255

[RouterB-ospf-1-area-0.0.0.0] quit

[RouterB-ospf-1] quit

# 配置Router C。

<RouterC> system-view

[RouterC] ospf 1

[RouterC-ospf-1] area 0

[RouterC-ospf-1-area-0.0.0.0] network 3.3.3.3 0.0.0.0

[RouterC-ospf-1-area-0.0.0.0] network 10.2.1.0 0.0.0.255

[RouterC-ospf-1-area-0.0.0.0] quit

[RouterC-ospf-1] quit

(3)     配置IGBP连接

# 配置Router A。

[RouterA] bgp 100

[RouterA-bgp-default] router-id 1.1.1.1

[RouterA-bgp-default] peer 2.2.2.2 as-number 100

[RouterA-bgp-default] peer 2.2.2.2 connect-interface loopback 0

[RouterA-bgp-default] peer 3.3.3.3 as-number 100

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

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

[RouterA-bgp-default-ipv4] peer 2.2.2.2 enable

[RouterA-bgp-default-ipv4] peer 3.3.3.3 enable

[RouterA-bgp-default-ipv4] quit

[RouterA-bgp-default] quit

# 配置Router B。

[RouterB] bgp 100

[RouterB-bgp-default] router-id 2.2.2.2

[RouterB-bgp-default] peer 1.1.1.1 as-number 100

[RouterB-bgp-default] peer 1.1.1.1 connect-interface loopback 0

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

[RouterB-bgp-default-ipv4] peer 1.1.1.1 enable

[RouterB-bgp-default-ipv4] quit

[RouterB-bgp-default] quit

# 配置Router C。

[RouterC] bgp 100

[RouterC-bgp-default] router-id 3.3.3.3

[RouterC-bgp-default] peer 1.1.1.1 as-number 100

[RouterC-bgp-default] peer 1.1.1.1 connect-interface loopback 0

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

[RouterC-bgp-default-ipv4] peer 1.1.1.1 enable

[RouterC-bgp-default-ipv4] quit

[RouterC-bgp-default] quit

(4)     配置Router B和Router C发布路由10.9.9.0/24

# 配置Router B。

[RouterB] ip route-static 10.9.9.0 24 null 0

[RouterB] bgp 100

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

[RouterB-bgp-default-ipv4] import-route static

[RouterB-bgp-default-ipv4] quit

[RouterB-bgp-default] quit

# 配置Router C。

[RouterC] ip route-static 10.9.9.0 24 null 0

[RouterC] bgp 100

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

[RouterC-bgp-default-ipv4] import-route static

[RouterC-bgp-default-ipv4] quit

[RouterC-bgp-default] quit

(5)     在Router A上,配置BGP按照路由策略,只能迭代到32位主机路由上。

# 创建IPv4地址前缀列表以及路由策略。

[RouterA] ip prefix-list host-only permit 0.0.0.0 32

[RouterA] route-policy host-only permit node 10

[RouterA-route-policy-host-only-10] if-match ip address prefix-list host-only

[RouterA-route-policy-host-only-10] quit

# 配置BGP按照创建的路由策略来过滤迭代到的下一跳路由。

[RouterA] bgp 100

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

[RouterA-bgp-default-ipv4] nexthop recursive-lookup route-policy host-only

[RouterA-bgp-default-ipv4] quit

[RouterA-bgp-default] quit

4. 验证配置

# 正常情况下,查看Router A的BGP IPv4单播路由信息。

[SwitchA] display bgp routing-table ipv4 unicast peer 10.1.1.2 received-routes

 

 Total number of routes: 2

 

 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 10.9.9.0/24        2.2.2.2         0                     0       ?

*  i                    3.3.3.3         0                     0       ?

可以看到,Router A优选了来自Router B的路由。

# 关闭Router B的接口GigabitEthernet0/0/1,以模拟Router B故障。

[RouterB] interface gigabitethernet 0/0/1

[RouterB-GigabitEthernet0/0/1] shutdown

# 查看Router A的BGP IPv4单播路由信息。

[SwitchA] display bgp routing-table ipv4 unicast peer 10.1.1.2 received-routes

 

 Total number of routes: 2

 

 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 10.9.9.0/24        3.3.3.3         0                     0       ?

   i                    2.2.2.2         0                     0       ?

可以看到,此时Router A优选了来自Router C的路由,并且将来自Router B的路由置为了无效路由。

2 BGP安全功能

2.1  BGP安全功能配置任务简介

BGP安全功能配置任务如下:

·     配置BGP的MD5认证

·     配置BGP GTSM功能

·     配置BGP的keychain认证

·     配置通过IPsec保护IPv6 BGP报文

·     配置BGP RPKI

2.2  配置BGP的MD5认证

1. 功能简介

通过为BGP对等体配置BGP的MD5认证,可以在以下两方面提高BGP的安全性:

·     为BGP建立TCP连接时进行MD5认证,只有两台路由器配置的密钥相同时,才能建立TCP连接,从而避免与非法的BGP路由器建立TCP连接。

·     传递BGP报文时,对封装BGP报文的TCP报文段进行MD5运算,从而保证BGP报文不会被篡改。

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

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图或BGP-VPN实例视图。

¡     进入BGP实例视图。

bgp as-number [ instance instance-name ]

¡     请依次执行以下命令进入BGP-VPN实例视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

(3)     配置BGP的MD5认证。

peer { group-name | ipv4-address [ mask-length ] } password { cipher | simple } password

缺省情况下,不进行BGP的MD5认证。

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

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图或BGP-VPN实例视图。

¡     进入BGP实例视图。

bgp as-number [ instance instance-name ]

¡     请依次执行以下命令进入BGP-VPN实例视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

(3)     配置BGP的MD5认证。请选择其中一项进行配置。

peer { group-name | ipv6-address [ prefix-length ] | link-local-address interface interface-type interface-number } password { cipher | simple } password

interface-peer interface-type interface-number password { cipher | simple } password

缺省情况下,不进行BGP的MD5认证。

2.3  配置BGP GTSM功能

1. 功能简介

GTSM(Generalized TTL Security Mechanism,通用TTL安全保护机制)是一种简单易行的、对基于IP协议的上层业务进行保护的安全机制。GTSM通过检查接收到的IP报文头中的TTL值是否在一个预先定义好的范围内,来判断IP报文是否合法,避免攻击者向网络设备发送大量有效的IP报文时对网络设备造成的CPU利用(CPU-utilization)等类型的攻击。

配置BGP GTSM功能时,用户可以指定本地设备到达某个对等体的最大跳数为hop-count,则从该对等体接收到的BGP报文的合法TTL范围为255-“hop-count”+1到255。只有来自该对等体的报文TTL值在该合法范围内时,才将报文上送CPU处理;否则,直接丢弃报文。另外,配置BGP GTSM功能后,设备会将发送报文的初始TTL设置为255。

对于直连EBGP对等体,GTSM可以提供最佳的保护效果;对于非直连EBGP或IBGP对等体,由于中间设备可能对TTL值进行篡改,GTSM的保护效果受到中间设备安全性的限制。

2. 配置限制和指导

执行本配置后,只要本地设备和指定的对等体通过了GTSM检查,就允许在二者之间建立EBGP会话,不管二者之间的跳数是否超过peer ebgp-max-hop命令指定的跳数范围。

使用BGP GTSM功能时,要求本设备和对等体设备上同时配置本特性,指定的hop-count值可以不同,只要能够满足合法性检查即可。

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

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图或BGP-VPN实例视图。

¡     进入BGP实例视图。

bgp as-number [ instance instance-name ]

¡     请依次执行以下命令进入BGP-VPN实例视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

(3)     使能对等体/对等体组的BGP GTSM功能。

peer { group-name | ipv4-address [ mask-length ] } ttl-security hops hop-count

缺省情况下,BGP GTSM功能处于关闭状态。

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

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图或BGP-VPN实例视图。

¡     进入BGP实例视图。

bgp as-number [ instance instance-name ]

¡     请依次执行以下命令进入BGP-VPN实例视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

(3)     使能对等体/对等体组的BGP GTSM功能。

peer { group-name | ipv6-address [ prefix-length ] } ttl-security hops hop-count

缺省情况下,BGP GTSM功能处于关闭状态。

2.4  配置BGP的keychain认证

1. 功能简介

配置keychain认证可以提高TCP连接的安全性。为了保证正常建立TCP连接、正常交互BGP消息,BGP对等体两端必须同时配置keychain认证,且两端使用的keychain需要满足如下条件:

·     同一时间内使用的key的标识符相同。

·     相同标识符的key的认证算法和认证密钥必须一致。

关于keychain的介绍和配置,请参见“安全配置指导”中的“keychain”。

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

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图或BGP-VPN实例视图。

¡     进入BGP实例视图。

bgp as-number [ instance instance-name ]

¡     请依次执行以下命令进入BGP-VPN实例视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

(3)     配置BGP的keychain认证。

peer { group-name | ip-address [ mask-length ] } keychain keychain-name

缺省情况下,不进行BGP的keychain认证。

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

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图或BGP-VPN实例视图。

¡     进入BGP实例视图。

bgp as-number [ instance instance-name ]

¡     请依次执行以下命令进入BGP-VPN实例视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

(3)     配置BGP的keychain认证。请选择其中一项进行配置。

peer { group-name | ipv6-address [ prefix-length ] | link-local-address interface interface-type interface-number } keychain keychain-name

interface-peer interface-type interface-number keychain keychain-name

缺省情况下,不进行BGP的keychain认证。

2.5  配置通过IPsec保护IPv6 BGP报文

1. 功能简介

为了避免路由信息外泄或者非法者对设备进行恶意攻击,可以利用IPsec安全隧道对IPv6 BGP报文进行保护。通过IPsec提供的数据机密性、完整性、数据源认证等功能,确保IPv6 BGP报文不会被侦听或恶意篡改,并避免非法者构造IPv6 BGP报文对设备进行攻击。

在互为IPv6 BGP邻居的两台设备上都配置通过IPsec保护IPv6 BGP报文后,一端设备在发送IPv6 BGP报文时通过IPsec对报文进行加封装,另一端设备接收到报文后,通过IPsec对报文进行解封装。如果解封装成功,则接收该报文,正常建立IPv6 BGP对等体关系或学习IPv6 BGP路由;如果设备接收到不受IPsec保护的IPv6 BGP报文,或IPv6 BGP报文解封装失败,则会丢弃该报文。

2. 配置步骤

(1)     进入系统视图。

system-view

(2)     配置IPsec安全提议和手工方式的IPsec安全框架。

配置方法请参见“安全配置指导”中的“IPsec”。

(3)     进入BGP实例视图或BGP-VPN实例视图。

¡     进入BGP实例视图。

bgp as-number [ instance instance-name ]

¡     请依次执行以下命令进入BGP-VPN实例视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

(4)     为IPv6 BGP对等体/对等体组应用IPsec安全框架。请选择其中一项进行配置。

peer { group-name | ipv6-address [ prefix-length ] | link-local-address interface interface-type interface-number } ipsec-profile profile-name

interface-peer interface-type interface-number ipsec-profile profile-name

缺省情况下,IPv6 BGP对等体/对等体组没有应用IPsec安全框架。

应用的安全框架必须是手工方式的IPsec安全框架。

2.6  配置BGP RPKI

2.6.1  功能简介

1. RPKI概念简介

BGP路由中的AS_PATH属性记录了某条路由从本地到某个IP地址(网段)所要经过的所有AS号。其中,该IP地址(网段)所处的AS称为源AS。如果源AS号错误会导致无法到达指定IP地址(网段)甚至网络瘫痪。使用BGP RPKI(Resource Public Key Infrastructure,资源公钥基础设施)功能,设备在收到BGP路由的时候,会验证源AS是否合法,并根据验证结果来决定是否使用该BGP路由以及是否发布该路由。

BGP RPKI功能可以用于解决流量被窃取问题。例如,运营商向用户发布了前缀为192.168.0.0/16的合法路由,网络攻击者向用户发布了前缀为192.168.10.0/24的路由,由于攻击者发布的路由更详细,导致用户在发送流量时,会优先匹配攻击者发布的路由,将流量发往攻击者。

2.6.2  配置RPKI连接参数

1. 功能简介

路由器通过TCP协议与RPKI服务器建立连接。TCP连接建立后,路由器从RPKI服务器获取ROA信息。

路由器会根据刷新时间间隔检测与RPKI服务器的连接关系,如果在响应时间内没有收到服务器的回应,路由器与RPKI服务器的连接断开。

与RPKI服务器的连接断开后(不包括用户执行shutdown命令关闭接口引起的连接断开),路由器会尝试与RPKI服务器重新建立连接,并将从该服务器获得的ROA信息置为老化状态,路由器将执行如下操作:

·     如果老化时间内,路由器重新与RPKI服务器建立连接,则解除ROA信息的老化状态。

·     如果直到老化时间超时,路由器与RPKI服务器仍然无法重新建立连接,则删除该ROA信息。

2. 配置限制和指导

ROA信息的老化时间建议大于BGP RPKI服务器的响应等待时间。

RPKI连接建立后,会一直处于通信状态,并周期更新ROA信息。如果需要暂时断开某个RPKI连接,请在BGP RPKI服务器视图下执行undo port命令。

执行undo rpki命令后,BGP RPKI视图下的所有配置都会被删除。

3. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     开启BGP RPKI功能,并进入BGP RPKI视图。

rpki

(4)     配置BGP RPKI服务器地址,并进入BGP RPKI服务器视图。

server [ vpn-instance vpn-instance-name ] tcp { ipv4-address | ipv6-address }

缺省情况下,未配置BGP RPKI的服务器地址。

(5)     配置BGP RPKI服务端口号。

port port-number

缺省情况下,未配置BGP RPKI服务端口。

只有配置与BGP RPKI服务器连接的TCP端口,才能与RPKI服务器建立连接,且本地配置的端口号必须与BGP RPKI服务器上使用的端口号保持一致。

(6)     (可选)指定RPKI连接中使用的MD5认证密码。

passwords { cipher | simple } string

缺省情况下,BGP RPKI服务器不进行MD5的认证。

使用MD5认证时,认证密码必须与RPKI服务器上的认证密码保持一致。MD5认证既可以确保路由器与合法的BGP RPKI服务器建立连接,也可以确保BGP RPKI报文不会被篡改。

(7)     (可选)配置RPKI连接的检测周期。

refresh-time refresh-time

缺省情况下,RPKI连接的检测周期为600秒。

本功能用于检测路由器与RPKI服务器的连接状态。

(8)     (可选)配置等待BGP RPKI服务器的响应时间。

response-time response-time

缺省情况下,等待BGP RPKI服务器响应时间为30秒。

(9)     (可选)配置ROA信息的老化时间。

purge-time purge-time

缺省情况下,ROA信息的老化时间为60秒。

(10)     (可选)设置允许从指定RPKI服务器收到的ROA数量。

rpki-limit limit [ alert-only | discard | reconnect reconnect-time ]

缺省情况下,不限制从RPKI服务器接收的ROA数量。

2.6.3  开启BGP RPKI验证功能

1. 功能简介

配置本功能后,设备收到BGP路由时,会对IP地址(网段)和源AS号进行RPKI验证。验证结果有三种:Not-found、Valid和Invalid。同时满足以下三个条件则验证结果为Valid,不满足条件(1)则验证结果为Not-found,满足条件(1)但不满足条件(2)或(3)则验证结果为Invalid。

(1)     ROA数据库中至少存在一条包含该BGP路由前缀的表项。

(2)     该BGP路由前缀的掩码长度小于或等于ROA数据库中所有表项的最大掩码长度。

(3)     ROA数据库表项中的AS号和收到的路由的源AS号相同。

2. 配置限制和指导

配置本功能后,设备将使用本地验证的结果作为RPKI验证结果;未配置本功能时,将使用BGP路由报文中的RPKI验证结果。

3. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP RPKI视图。

rpki

(4)     开启BGP RPKI验证功能。

check-origin-validation

缺省情况下,BGP RPKI验证功能处于关闭状态。

2.6.4  配置BGP RPKI验证结果参与路由优选

1. 功能简介

RPKI验证结果的优先级从高到低依次为Valid、Not found、Invalid。

配置本功能后,RPKI验证结果将参与路由优选。BGP选择路由时首先丢弃下一跳不可达的路由,其次按照RPKI验证结果进行路由优选,即对于去往同一个IP地址(网段)的多条BGP路由,选择RPKI验证结果优先级最高的路由为最优路由。如果RPKI验证结果相同,则根据BGP的选路规则选择路由。

无RPKI验证结果的路由在与有验证结果的路由共同参与路由优选时,按Not-found验证结果处理。

用户可以使用路由策略设置BGP RPKI验证结果的匹配条件,从而灵活控制路由的发布与接收。关于路由策略的详细介绍,请参见“三层技术-IP路由配置指导”中的“路由策略”。

2. 配置步骤(IPv4单播)

(1)     进入系统视图。

system-view

(2)     进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图。

¡     请依次执行以下命令进入BGP IPv4单播地址族视图。

bgp as-number [ instance instance-name ]

address-family ipv4 [ unicast ]

¡     请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

address-family ipv4 [ unicast ]

(3)     配置BGP RPKI验证结果参与路由优选。

bestroute origin-as-validation [ allow-invalid ]

缺省情况下,BGP RPKI验证结果不参与路由优选。

未配置allow-invalid参数时,验证结果为Invalid的路由不参与路由优选。如果希望验证结果为Invalid的路由参与路由优选,可以配置allow-invalid参数。

3. 配置步骤(IPv6单播)

(1)     进入系统视图。

system-view

(2)     进入BGP IPv6单播地址族视图或BGP-VPN IPv6单播地址族视图。

¡     请依次执行以下命令进入BGP IPv6单播地址族视图。

bgp as-number [ instance instance-name ]

address-family ipv6 [ unicast ]

¡     请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

address-family ipv6 [ unicast ]

(3)     配置BGP RPKI验证结果参与路由优选。

bestroute origin-as-validation [ allow-invalid ]

缺省情况下,BGP RPKI验证结果不参与路由优选。

未配置allow-invalid参数时,验证结果为Invalid的路由不参与路由优选。如果希望验证结果为Invalid的路由参与路由优选,可以配置allow-invalid参数。

2.6.5  配置向对等体/对等体组发送BGP RPKI验证结果

1. 配置限制和指导

BGP RPKI验证结果以扩展团体属性的方式传递,配置本条命令前必先配置向对等体/对等体组发布扩展团体属性且RPKI正确配置。未配置向对等体/对等体组发布扩展团体属性,此配置不生效。

目前,设备仅支持向IBGP对等体/对等体组发送BGP RPKI验证结果。

2. 配置步骤(IPv4单播)

(1)     进入系统视图。

system-view

(2)     进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图。

¡     请依次执行以下命令进入BGP IPv4单播地址族视图。

bgp as-number [ instance instance-name ]

address-family ipv4 [ unicast ]

¡     请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

address-family ipv4 [ unicast ]

(3)     配置向对等体/对等体组发布扩展团体属性。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise-ext-community

缺省情况下,不向对等体/对等体组发布扩展团体属性。

(4)     配置向对等体/对等体组发送BGP RPKI验证结果。请选择其中一项进行配置。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise origin-as-validation

interface-peer interface-type interface-number advertise origin-as-validation

缺省情况下,不会向对等体/对等体组发送BGP RPKI验证结果。

3. 配置步骤(IPv6单播)

(1)     进入系统视图。

system-view

(2)     进入BGP IPv6单播地址族视图或BGP-VPN IPv6单播地址族视图。

¡     请依次执行以下命令进入BGP IPv6单播地址族视图。

bgp as-number [ instance instance-name ]

address-family ipv6 [ unicast ]

¡     请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

address-family ipv6 [ unicast ]

(3)     配置向对等体/对等体组发布扩展团体属性。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise-ext-community

缺省情况下,不向对等体/对等体组发布扩展团体属性。

(4)     配置向对等体/对等体组发送BGP RPKI验证结果。请选择其中一项进行配置。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] | link-local-address interface interface-type interface-number } advertise origin-as-validation

interface-peer interface-type interface-number advertise origin-as-validation

缺省情况下,不会向对等体/对等体组发送BGP RPKI验证结果。

2.7  BGP安全功能显示和维护

2.7.1  BGP RPKI显示和维护

1. 显示RPKI服务器配置及运行状况(IPv4单播)

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

·     显示与RPKI服务器连接的相关信息。

display bgp [ instance instance-name ] rpki server [ [ vpn-instance vpn-instance-name ] ipv4-address ]

·     显示从RPKI服务器获得的ROA信息。

display bgp [ instance instance-name ] rpki table ipv4 [ ipv4-address min min-length max max-length ]

2. 显示RPKI服务器配置及运行状况(IPv6单播)

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

·     显示与RPKI服务器连接的相关信息。

display bgp [ instance instance-name ] rpki server [ [ vpn-instance vpn-instance-name ] ipv6-address ]

·     显示从RPKI服务器获得的ROA信息。

display bgp [ instance instance-name ] rpki table ipv6 [ ipv6-address min min-length max max-length

3. 复位BGP RPKI会话

在用户视图下执行以下命令复位BGP RPKI连接。

reset bgp [ instance instance-name ] rpki server [ vpn-instance vpn-instance-name ] tcp { ipv4 address | ipv6 address }

注意

配置本命令后,设备将删除并重新建立指定的BGP RPKI会话,会造成BGP RPKI会话短暂中断。

 

2.7.2  BGP GTSM显示和维护

可在任意视图执行以下命令,显示BGP GTSM功能丢弃报文数量的统计信息。

display ttl-security statistics [ slot slot-number ]

请在用户视图下执行以下命令,清除BGP GTSM功能丢弃报文数量的统计信息。

reset ttl-security statistics [ slot slot-number ]

2.8  IPv4 BGP安全功能典型配置举例‌

2.8.1  BGP RPKI配置

1. 组网需求

·     所有路由器运行BGP协议,Router A与RPKI服务器建立连接。Router A与Router B建立IBGP连接。

·     Router A将BGP RPKI验证结果发送给Router B。

·     配置路由策略,使得Router B对收到的BGP RPKI验证结果设置匹配条件,控制路由的接收。

2. 组网图

图2-1 BGP RPKI配置组网图

3. 配置步骤

(1)     配置各接口的IP地址,在Router A和Router B上配置BGP,建立IBGP邻居,配置过程略

(2)     配置Router A与RPKI服务器建立连接

<RouterA> system-view

[RouterA] bgp 100

[RouterA-bgp-default] rpki

[RouterA-bgp-default-rpki] server tcp 1.1.1.2

[RouterA-bgp-default-rpki-server] port 1234

[RouterA-bgp-default-rpki-server] quit

(3)     在Router A上开启BGP RPKI验证

[RouterA-bgp-default-rpki] check-origin-validation

[RouterA-bgp-default-rpki] quit

(4)     在Router A上配置BGP RPKI验证结果参与路由优选

[RouterA-bgp-default] address-family ipv4

[RouterA-bgp-default-ipv4] bestroute origin-as-validation

(5)     在Router A上配置向对等体1.2.3.2发送BGP RPKI验证结果

[RouterA-bgp-default-ipv4] peer 1.2.3.2 advertise-ext-community

[RouterA-bgp-default-ipv4] peer 1.2.3.2 advertise origin-as-validation

[RouterA-bgp-default-ipv4] quit

[RouterA-bgp-default] quit

(6)     在Router B上对收到的BGP RPKI验证结果设置匹配条件,仅接收验证结果为Valid的路由

# 配置路由策略。

<RouterB> system-view

[RouterB] route-policy rpki_policy permit node 0

[RouterB-route-policy-rpki_policy-0] if-match rpki valid

[RouterB-route-policy-rpki_policy-0] quit

# 应用路由策略。

[RouterB] bgp 100

[RouterB-bgp-default] address-family ipv4

[RouterB-bgp-default-ipv4] peer 1.2.3.1 route-policy rpki_policy import

4. 验证配置

# 查看Router A与RPKI服务器的连接信息,可以看到Router A与RPKI服务器已经建立连接。

[RouterA] display bgp rpki server

 

  Server          VPN-index  Port        State      Time       ROAs(IPv4/IPv6)

  1.1.1.2         0          1234        Establish  00:04:43   5/4

# 查看从RPKI服务器获取的ROA信息,可以看到已经获得ROA信息。

[RouterA] display bgp rpki table ipv4

 

 Total number of entries: 5

 

 Status codes: S - stale, U - used

 

  Network         Mask-range    Origin-AS    Server       Status

  1.2.3.4         8-24          100          1.1.1.2      U

  2.2.3.6         8-32          100          1.1.1.2      U

  2.2.3.6         10-24         4294967295   1.1.1.2      U

  2.2.3.9         20-24         4294967295   1.1.1.2      U

  3.2.3.5         8-26          200          1.1.1.2      U

# 查看Router A上BGP RPKI验证结果。

[RouterA] display bgp routing-table ipv4 1.2.3.0

 

 BGP local router ID: 2.2.2.2

 Local AS number: 100

 

 Paths:   1 available, 1 best

 

 BGP routing table information of 1.2.3.0/24:

 Imported route.

 Original nexthop: 0.0.0.0

 OutLabel        : NULL

 RxPathID        : 0x0

 TxPathID        : 0x0

 Org-validation  : Valid

 AS-path         : (null)

 Origin          : incomplete

 Attribute value : MED 0, pref-val 32768

 State           : valid, local, best

 IP precedence   : N/A

 QoS local ID    : N/A

 Traffic index   : N/A

1.2.3.0/24在ROA数据库中的Network为1.2.3.4,Mask-range为8-24的地址前缀范围内,且AS和路由的源AS号相匹配,因此验证结果为Valid。

# 查看Router B上到达目的网络1.2.3.0的BGP IPv4单播路由的详细信息。

[RouterB] display bgp routing-table ipv4 1.2.3.0

RR-client route.

 From            : 1.2.3.1 (192.168.56.22)

 Rely nexthop    : 1.2.3.1

 Original nexthop: 1.2.3.1

 OutLabel        : NULL

 Ext-Community   : <Origin Valid State: Valid >

 RxPathID        : 0x0

 TxPathID        : 0x0

 Org-validation  : Valid

 AS-path         : (null)

 Origin          : incomplete

 Attribute value : MED 0, localpref 100, pref-val 0

 State           : valid, internal, best

 IP precedence   : N/A

 QoS local ID    : N/A

 Traffic index   : N/A

由于Router B仅允许BGP RPKI验证结果为Valid的路由信息通过,因此可以看到到达目的网络1.2.3.0的BGP IPv4单播路由的信息。该路由信息中的扩展团体属性包含了BGP RPKI验证结果。

2.8.2  BGP Keychain配置

1. 组网需求

通过Keychain认证来加强Router A与Router B之间BGP连接的安全性。

2. 组网图

图2-2 BGP Keychain配置组网图

3. 配置步骤

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

(2)     配置EBGP连接

# 配置Router A。

<RouterA> system-view

[RouterA] bgp 100

[RouterA-bgp-default] peer 10.1.1.2 as-number 200

[RouterA-bgp-default] address-family ipv4

[RouterA-bgp-default-ipv4] peer 10.1.1.2 enable

[RouterA-bgp-default-ipv4] quit

[RouterA-bgp-default] quit

# 配置Router B。

<RouterB> system-view

[RouterB] bgp 200

[RouterB-bgp-default] peer 10.1.1.1 as-number 100

[RouterB-bgp-default] address-family ipv4

[RouterB-bgp-default-ipv4] peer 10.1.1.1 enable

[RouterB-bgp-default-ipv4] quit

[RouterB-bgp-default] quit

(3)     配置Keychain

# 配置Router A。

[RouterA] keychain abc mode absolute

[RouterA-keychain-abc] key 1

[RouterA-keychain-abc-key-1] authentication-algorithm hmac-md5

[RouterA-keychain-abc-key-1] key-string plain pwd123

[RouterA-keychain-abc-key-1] send-lifetime utc 11:00:00 2023/01/01 to 12:00:00 2023/12/30

[RouterA-keychain-abc-key-1] accept-lifetime utc 11:00:00 2023/01/01 to 12:00:00 2023/12/30

[RouterA-keychain-abc-key-1] quit

[RouterA-keychain-abc] quit

# 配置Router B。

[RouterB] keychain abc mode absolute

[RouterB-keychain-abc] key 1

[RouterB-keychain-abc-key-1] authentication-algorithm hmac-md5

[RouterB-keychain-abc-key-1] key-string plain pwd123

[RouterB-keychain-abc-key-1] send-lifetime utc 11:00:00 2023/01/01 to 12:00:00 2023/12/30

[RouterB-keychain-abc-key-1] accept-lifetime utc 11:00:00 2023/01/01 to 12:00:00 2023/12/30

[RouterB-keychain-abc-key-1] quit

[RouterB-keychain-abc] quit

(4)     配置BGP的Keychain认证

# 配置Router A。

[RouterA] bgp 100

[RouterA-bgp-default] peer 10.1.1.2 keychain abc

[RouterA-bgp-default] quit

# 配置Router B。

[RouterB] bgp 200

[RouterB-bgp-default] peer 10.1.1.1 keychain abc

[RouterB-bgp-default] quit

4. 验证配置

# 在Device A上查看IPv4单播对等体的状态。

[RouterA] display bgp peer ipv4 unicast

 BGP local router ID: 10.1.1.1

 Local AS number: 100

 Total number of peers: 1                  Peers in established state: 1

 * - Dynamically created peer

 Peer                    AS  MsgRcvd  MsgSent OutQ  PrefRcv Up/Down  State

 10.1.1.2                200      13       16    0        0 00:10:34 Established

可以看到,Router A和Router B成功通过Keychain认证建立了BGP会话。

2.8.3  BGP GTSM配置

1. 组网需求

Router A位于AS 100,Router B、Router C和Router D位于AS 200。在此网络中运行BGP协议,Router A和Router B之间建立EBGP连接,Router B、Router C和Router D建立IBGP全连接。需要通过部署GTSM功能,来保障所有设备免受CPU利用类型的报文攻击。

2. 组网图

图2-3 BGP GTSM配置组网图

3. 配置步骤

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

(2)     配置OSPF协议,以保证Router B、Router C和Router D的Loopback接口路由互相可达。

# 配置Router B。

<RouterB> system-view

[RouterB] ospf 1

[RouterB-ospf-1] area 0

[RouterB-ospf-1-area-0.0.0.0] network 2.2.2.2 0.0.0.0

[RouterB-ospf-1-area-0.0.0.0] network 10.2.1.0 0.0.0.255

[RouterB-ospf-1-area-0.0.0.0] quit

[RouterB-ospf-1] quit

# 配置Router C。

<RouterC> system-view

[RouterC] ospf 1

[RouterC-ospf-1] area 0

[RouterC-ospf-1-area-0.0.0.0] network 3.3.3.3 0.0.0.0

[RouterC-ospf-1-area-0.0.0.0] network 10.2.1.0 0.0.0.255

[RouterC-ospf-1-area-0.0.0.0] network 10.3.1.0 0.0.0.255

[RouterC-ospf-1-area-0.0.0.0] quit

[RouterC-ospf-1] quit

# 配置Router D。

<RouterD> system-view

[RouterD] ospf 1

[RouterD-ospf-1] area 0

[RouterD-ospf-1-area-0.0.0.0] network 4.4.4.4 0.0.0.0

[RouterD-ospf-1-area-0.0.0.0] network 10.3.1.0 0.0.0.255

[RouterD-ospf-1-area-0.0.0.0] quit

[RouterD-ospf-1] quit

(3)     配置IBGP全连接

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

# 配置Router B。

[RouterB] bgp 200

[RouterB-bgp-default] router-id 2.2.2.2

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

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

[RouterB-bgp-default] peer 4.4.4.4 as-number 65009

[RouterB-bgp-default] peer 4.4.4.4 connect-interface loopback 0

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

[RouterB-bgp-default-ipv4] peer 3.3.3.3 enable

[RouterB-bgp-default-ipv4] peer 4.4.4.4 enable

[RouterB-bgp-default-ipv4] peer 3.3.3.3 next-hop-local

[RouterB-bgp-default-ipv4] peer 4.4.4.4 next-hop-local

[RouterB-bgp-default-ipv4] quit

[RouterB-bgp-default] quit

# 配置Router C。

[RouterC] bgp 200

[RouterC-bgp-default] router-id 3.3.3.3

[RouterC-bgp-default] peer 2.2.2.2 as-number 65009

[RouterC-bgp-default] peer 2.2.2.2 connect-interface loopback 0

[RouterC-bgp-default] peer 4.4.4.4 as-number 65009

[RouterC-bgp-default] peer 4.4.4.4 connect-interface loopback 0

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

[RouterC-bgp-default-ipv4] peer 2.2.2.2 enable

[RouterC-bgp-default-ipv4] peer 4.4.4.4 enable

[RouterC-bgp-default-ipv4] quit

[RouterC-bgp-default] quit

# 配置Router D。

[RouterD] bgp 200

[RouterD-bgp-default] router-id 4.4.4.4

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

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

[RouterD-bgp-default] peer 2.2.2.2 as-number 65009

[RouterD-bgp-default] peer 2.2.2.2 connect-interface loopback 0

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

[RouterD-bgp-default-ipv4] peer 3.3.3.3 enable

[RouterD-bgp-default-ipv4] peer 2.2.2.2 enable

[RouterD-bgp-default-ipv4] quit

[RouterD-bgp-default] quit

(4)     配置EBGP连接

# 配置Router A。

<RouterA>

[RouterA] bgp 100

[RouterA-bgp-default] router-id 1.1.1.1

[RouterA-bgp-default] peer 10.1.1.2 as-number 200

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

[RouterA-bgp-default-ipv4] peer 10.1.1.2 enable

# 配置Router B。

[RouterB] bgp 200

[RouterB-bgp-default] peer 10.1.1.1 as-number 100

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

[RouterB-bgp-default-ipv4] peer 10.1.1.1 enable

(5)     配置BGP GTSM功能

# 配置Router A和Router B之间的BGP GTSM功能。由于两台设备之间直连,因此,Router A和Router B之间GTSM的最大跳数为1,合法报文的TTL范围是[255,255]。

[RouterA] bgp 100

[RouterA-bgp-default] peer 10.1.1.2 ttl-security hops 1

[RouterA-bgp-default] quit

[RouterB] bgp 200

[RouterB-bgp-default] peer 10.1.1.1 ttl-security hops 1

# 配置Router B和Router C之间的BGP GTSM功能。由于两台设备之间直连,因此,Router B和Router C之间GTSM的最大跳数为1,合法报文的TTL范围是[255,255]。

[RouterC] bgp 200

[RouterC-bgp-default] peer 2.2.2.2 ttl-security hops 1

[RouterB-bgp-default] peer 3.3.3.3 ttl-security hops 1

# 配置Router D和Router C之间的BGP GTSM功能。由于两台设备之间直连,因此,Router D和Router C之间GTSM的最大跳数为1,合法报文的TTL范围是[255,255]。

[RouterD] bgp 200

[RouterD-bgp-default] peer 3.3.3.3 ttl-security hops 1

[RouterC-bgp-default] peer 4.4.4.4 ttl-security hops 1

[RouterC-bgp-default] quit

# 配置Router B和Router D之间的BGP GTSM功能。由于两台设备之间相隔一跳,因此,Router B和Router D之间GTSM的最大跳数为2,合法报文的TTL范围是[254,255]。

[RouterB-bgp-default] peer 4.4.4.4 ttl-security hops 2

[RouterB-bgp-default] quit

[RouterD-bgp-default] peer 2.2.2.2 ttl-security hops 2

[RouterD-bgp-default] quit

2.9  IPv6 BGP安全功能典型配置举例‌

2.9.1  通过IPsec保护IPv6 BGP报文配置

1. 组网需求

·     Router A、Router B和Router C三台路由器之间运行IPv6 BGP交互路由信息。Router A和Router B之间建立IBGP连接,Router B和Router C之间建立EBGP连接。

·     为了提高安全性,配置通过IPsec对IPv6 BGP报文进行保护。

2. 组网图

图2-4 通过IPsec保护IPv6 BGP报文组网图

3. 配置步骤

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

(2)     配置IBGP连接

# 配置Router A。

<RouterA> system-view

[RouterA] bgp 65008

[RouterA-bgp-default] router-id 1.1.1.1

[RouterA-bgp-default] group ibgp internal

[RouterA-bgp-default] peer 1::2 group ibgp

[RouterA-bgp-default] address-family ipv6 unicast

[RouterA-bgp-default-ipv6] peer ibgp enable

[RouterA-bgp-default-ipv6] quit

[RouterA-bgp-default] quit

# 配置Router B。

<RouterB> system-view

[RouterB] bgp 65008

[RouterB-bgp-default] router-id 2.2.2.2

[RouterB-bgp-default] group ibgp internal

[RouterB-bgp-default] peer 1::1 group ibgp

[RouterB-bgp-default] address-family ipv6 unicast

[RouterB-bgp-default-ipv6] peer ibgp enable

[RouterB-bgp-default-ipv6] quit

(3)      配置EBGP连接

# 配置Router C。

<RouterC> system-view

[RouterC] bgp 65009

[RouterC-bgp-default] router-id 3.3.3.3

[RouterC-bgp-default] group ebgp external

[RouterC-bgp-default] peer 3::1 as-number 65008

[RouterC-bgp-default] peer 3::1 group ebgp

[RouterC-bgp-default] address-family ipv6 unicast

[RouterC-bgp-default-ipv6] peer ebgp enable

[RouterC-bgp-default-ipv6] quit

[RouterC-bgp-default] quit

# 配置Router B。

[RouterB-bgp-default] group ebgp external

[RouterB-bgp-default] peer 3::2 as-number 65009

[RouterB-bgp-default] peer 3::2 group ebgp

[RouterB-bgp-default] address-family ipv6 unicast

[RouterB-bgp-default-ipv6] peer ebgp enable

[RouterB-bgp-default-ipv6] quit

[RouterB-bgp-default] quit

(4)     配置IPsec安全提议和安全框架

# 配置Router A。创建名为tran1的安全提议,报文封装形式采用传输模式,安全协议采用ESP协议。创建手工方式的安全框架policy001,配置SPI和密钥。

[RouterA] ipsec transform-set tran1

[RouterA-ipsec-transform-set-tran1] encapsulation-mode transport

[RouterA-ipsec-transform-set-tran1] esp encryption-algorithm des

[RouterA-ipsec-transform-set-tran1] esp authentication-algorithm sha1

[RouterA-ipsec-transform-set-tran1] quit

[RouterA] ipsec profile policy001 manual

[RouterA-ipsec-profile-policy001-manual] transform-set tran1

[RouterA-ipsec-profile-policy001-manual] sa spi outbound esp 12345

[RouterA-ipsec-profile-policy001-manual] sa spi inbound esp 12345

[RouterA-ipsec-profile-policy001-manual] sa string-key outbound esp simple abcdefg

[RouterA-ipsec-profile-policy001-manual] sa string-key inbound esp simple abcdefg

[RouterA-ipsec-profile-policy001-manual] quit

# 配置Router B。创建名为tran1的安全提议,报文封装形式采用传输模式,安全协议采用ESP协议;创建手工方式的安全框架policy001,配置SPI和密钥。创建名为tran2的安全提议,报文封装形式采用传输模式,安全协议采用ESP协议;创建手工方式的安全框架policy002,配置SPI和密钥。

[RouterB] ipsec transform-set tran1

[RouterB-ipsec-transform-set-tran1] encapsulation-mode transport

[RouterB-ipsec-transform-set-tran1] esp encryption-algorithm des

[RouterB-ipsec-transform-set-tran1] esp authentication-algorithm sha1

[RouterB-ipsec-transform-set-tran1] quit

[RouterB] ipsec profile policy001 manual

[RouterB-ipsec-profile-policy001-manual] transform-set tran1

[RouterB-ipsec-profile-policy001-manual] sa spi outbound esp 12345

[RouterB-ipsec-profile-policy001-manual] sa spi inbound esp 12345

[RouterB-ipsec-profile-policy001-manual] sa string-key outbound esp simple abcdefg

[RouterB-ipsec-profile-policy001-manual] sa string-key inbound esp simple abcdefg

[RouterB-ipsec-profile-policy001-manual] quit

[RouterB] ipsec transform-set tran2

[RouterB-ipsec-transform-set-tran2] encapsulation-mode transport

[RouterB-ipsec-transform-set-tran2] esp encryption-algorithm des

[RouterB-ipsec-transform-set-tran2] esp authentication-algorithm sha1

[RouterB-ipsec-transform-set-tran2] quit

[RouterB] ipsec profile policy002 manual

[RouterB-ipsec-profile-policy002-manual] transform-set tran2

[RouterB-ipsec-profile-policy002-manual] sa spi outbound esp 54321

[RouterB-ipsec-profile-policy002-manual] sa spi inbound esp 54321

[RouterB-ipsec-profile-policy002-manual] sa string-key outbound esp simple gfedcba

[RouterB-ipsec-profile-policy002-manual] sa string-key inbound esp simple gfedcba

[RouterB-ipsec-profile-policy002-manual] quit

# 配置Router C。创建名为tran2的安全提议,报文封装形式采用传输模式,安全协议采用ESP协议。创建手工方式的安全框架policy002,配置SPI和密钥。

[RouterC] ipsec transform-set tran2

[RouterC-ipsec-transform-set-tran2] encapsulation-mode transport

[RouterC-ipsec-transform-set-tran2] esp encryption-algorithm des

[RouterC-ipsec-transform-set-tran2] esp authentication-algorithm sha1

[RouterC-ipsec-transform-set-tran2] quit

[RouterC] ipsec profile policy002 manual

[RouterC-ipsec-profile-policy002-manual] transform-set tran2

[RouterC-ipsec-profile-policy002-manual] sa spi outbound esp 54321

[RouterC-ipsec-profile-policy002-manual] sa spi inbound esp 54321

[RouterC-ipsec-profile-policy002-manual] sa string-key outbound esp simple gfedcba

[RouterC-ipsec-profile-policy002-manual] sa string-key inbound esp simple gfedcba

[RouterC-ipsec-profile-policy002-manual] quit

(5)     配置通过IPsec保护Router A和Router B之间的IPv6 BGP报文

# 配置Router A。

[RouterA] bgp 65008

[RouterA-bgp-default] peer 1::2 ipsec-profile policy001

[RouterA-bgp-default] quit

# 配置Router B。

[RouterB] bgp 65008

[RouterB-bgp-default] peer 1::1 ipsec-profile policy001

[RouterB-bgp-default] quit

(6)     配置通过IPsec保护Router B和Router C之间的IPv6 BGP报文

# 配置Router C。

[RouterC] bgp 65009

[RouterC-bgp-default] peer ebgp ipsec-profile policy002

[RouterC-bgp-default] quit

# 配置Router B。

[RouterB] bgp 65008

[RouterB-bgp-default] peer ebgp ipsec-profile policy002

[RouterB-bgp-default] quit

4. 验证配置

# 在Router B上显示IPv6 BGP对等体的详细信息。可以看出完成上述配置后IBGP、EBGP对等体能够正常建立,且发送和接收的IPv6 BGP报文都经过加密。

[RouterB] display bgp peer ipv6 verbose

 

         Peer: 1::1      Local: 2.2.2.2

         Type: IBGP link

         BGP version 4, remote router ID 1.1.1.1

         BGP current state: Established, Up for 00h05m54s

         BGP current event: KATimerExpired

         BGP last state: OpenConfirm

         Port:  Local - 24896    Remote - 179

         Local source address: 1::2

         Configured: Active Hold Time: 180 sec   Keepalive Time: 60 sec

         Received  : Active Hold Time: 180 sec

         Negotiated: Active Hold Time: 180 sec   Keepalive Time: 60 sec

         Peer optional capabilities:

         Peer supports BGP multi-protocol extension

         Peer supports BGP route refresh capability

         Peer supports BGP route AS4 capability

         Address family IPv6 Unicast: advertised and received

 

 InQ updates: 0, OutQ updates: 0

 NLRI statistics:

         Rcvd:   UnReach NLRI          0,       Reach NLRI          0

         Sent:   UnReach NLRI          0,       Reach NLRI          3

 

 Message statistics:

 Msg type     Last rcvd time/      Current rcvd count/      History rcvd count/

              Last sent time       Current sent count       History sent count

 Open         18:59:15-2013.4.24   1                        1

              18:59:15-2013.4.24   1                        2

 Update       -                    0                        0

              18:59:16-2013.4.24   1                        1

 Notification -                    0                        0

              18:59:15-2013.4.24   0                        1

 Keepalive    18:59:15-2013.4.24   1                        1

              18:59:15-2013.4.24   1                        1

 RouteRefresh -                    0                        0

              -                    0                        0

 Total        -                    2                        2

              -                    3                        5

 

 Maximum allowed prefix number: 4294967295

 Threshold: 75%

 Minimum time between advertisements is 15 seconds

 Optional capabilities:

  Multi-protocol extended capability has been enabled

  Route refresh capability has been enabled

 Peer preferred value: 0

 IPsec profile name: policy001

 

 Routing policy configured:

 No routing policy is configured

 

         Peer: 3::2      Local: 2.2.2.2

         Type: EBGP link

         BGP version 4, remote router ID 3.3.3.3

         BGP current state: Established, Up for 00h05m00s

         BGP current event: KATimerExpired

         BGP last state: OpenConfirm

         Port:  Local - 24897    Remote - 179

         Local source address: 3::1

         Configured: Active Hold Time: 180 sec   Keepalive Time: 60 sec

         Received  : Active Hold Time: 180 sec

         Negotiated: Active Hold Time: 180 sec   Keepalive Time: 60 sec

         Peer optional capabilities:

         Peer supports BGP multi-protocol extension

         Peer supports BGP route refresh capability

         Peer supports BGP route AS4 capability

         Address family IPv6 Unicast: advertised and received

 

 Maximum allowed prefix number: 4294967295

 Threshold: 75%

 Minimum time between advertisements is 30 seconds

 Optional capabilities:

  Multi-protocol extended capability has been enabled

  Route refresh capability has been enabled

 Peer preferred value: 0

 IPsec profile name: policy002

 

 Routing policy configured:

 No routing policy is configured

2.9.2  BGP RPKI配置

1. 组网需求

·     所有路由器运行BGP协议,Router A与RPKI服务器建立连接。Router A与Router B建立IBGP连接。

·     Router A将BGP RPKI验证结果发送给Router B。

·     配置路由策略,使得Router B对收到的BGP RPKI验证结果设置匹配条件,控制路由的接收。

2. 组网图

图2-5 BGP RPKI配置组网图

3. 配置步骤

(1)     配置各接口的IP地址,在Router A和Router B上配置BGP,建立IBGP邻居,配置过程略

(2)     配置Router A与RPKI服务器建立连接

<RouterA> system-view

[RouterA] bgp 100

[RouterA-bgp-default] rpki

[RouterA-bgp-default-rpki] server tcp 1::2

[RouterA-bgp-default-rpki-server] port 1234

[RouterA-bgp-default-rpki-server] quit

(3)     在Router A上开启BGP RPKI验证

[RouterA-bgp-default-rpki] check-origin-validation

[RouterA-bgp-default-rpki] quit

(4)     在Router A上配置BGP RPKI验证结果参与路由优选

[RouterA-bgp-default] address-family ipv6

[RouterA-bgp-default-ipv6] bestroute origin-as-validation

(5)     在Router A上配置向对等体2001::2发送BGP RPKI验证结果

[RouterA-bgp-default-ipv6] peer 2001::2 advertise-ext-community

[RouterA-bgp-default-ipv6] peer 2001::2 advertise origin-as-validation

[SwitchA-bgp-default-ipv6] quit

[SwitchA-bgp-default] quit

(6)     在Router B上对收到的BGP RPKI验证结果设置匹配条件,仅接收验证结果为Valid的路由

# 配置路由策略。

<RouterB> system-view

[RouterB] route-policy rpki_policy permit node 0

[RouterB-route-policy-rpki_policy-0] if-match rpki valid

# 应用路由策略。

<RouterB> system-view

[RouterB] bgp 100

[RouterB-bgp-default] address-family ipv6

[RouterB-bgp-default-ipv6] peer 2001::1 route-policy rpki_policy import

4. 验证配置

# 查看Router A与RPKI服务器的连接信息,可以看到Router A与RPKI服务器已经建立连接。

[RouterA] display bgp rpki server

 

  Server          VPN-index  Port        State      Time       ROAs(IPv4/IPv6)

  1::2            0          1234        Establish  00:04:43   5/5

# 查看从RPKI服务器获取的ROA信息,可以看到已经获得ROA信息。

[RouterA] display bgp rpki table ipv6

 

 Total number of entries: 5

 

 Status codes: S - stale, U - used

 

  Network         Mask-range    Origin-AS    Server       Status

  2001:4860::     32-32         100          1::2         U

  2404:6800::     32-32         100          1::2         U

  2607:F8B0::     28-28         4294967295   1::2         U

  2A03:ACE0::     40-40         4294967295   1::2         U

  2001::1         64-64         200          1::2         U

# 查看Router A上BGP RPKI验证结果。

[RouterA] display bgp routing-table ipv6 2001::1 64

 

 BGP local router ID: 2.2.2.2

 Local AS number: 100

 

 Paths:   1 available, 1 best

 

 BGP routing table information of 2001::1/64:

 Imported route.

 Original nexthop: 0.0.0.0

 OutLabel        : NULL

 RxPathID        : 0x0

 TxPathID        : 0x0

 Org-validation  : Valid

 AS-path         : (null)

 Origin          : incomplete

 Attribute value : MED 0, pref-val 32768

 State           : valid, local, best

 IP precedence   : N/A

 QoS local ID    : N/A

2001::1/64在ROA数据库中的Network为2001::1,Mask-range为64-64的地址前缀范围内,且AS和路由的源AS号相匹配,因此验证结果为Valid。

# 查看Router B上到达目的网络2001::1的BGP IPv6单播路由的详细信息。

[RouterB] display bgp routing-table ipv6 2001::1 64

 

RR-client route.

 From            : 2001::1 64 (192.168.56.22)

 Rely nexthop    : 2001::1

 Original nexthop: 2001::1

 OutLabel        : NULL

 Ext-Community   : <Origin Valid State: Valid >

 RxPathID        : 0x0

 TxPathID        : 0x0

 Org-validation  : Invalid

 AS-path         : (null)

 Origin          : incomplete

 Attribute value : MED 0, localpref 100, pref-val 0

 State           : valid, internal, best

 IP precedence   : N/A

 QoS local ID    : N/A

 Traffic index   : N/A

由于Router B仅允许BGP RPKI验证结果为Valid的路由信息通过,因此可以看到到达目的网络2001::1的BGP IPv6单播路由的信息。该路由信息中的扩展团体属性包含了BGP RPKI验证结果。

3 提高BGP网络的可靠性

3.1  提高BGP网络的可靠性配置任务简介

提高BGP网络的可靠性配置任务如下:

·     配置BGP GR

·     配置BGP NSR

·     配置BGP与BFD联动

·     配置BGP快速重路由

·     配置BGP进程维护功能

¡     配置BGP isolate

¡     配置BGP shutdown

3.2  配置BGP GR

1. BGP GR工作机制

BGP GR(Graceful Restart,平滑重启)是一种在主备倒换或BGP协议重启时保证转发业务不中断的机制。GR有两个角色:

·     GR Restarter:发生主备倒换或协议重启,且具有GR能力的设备。

·     GR Helper:和GR Restarter具有邻居关系,协助完成GR流程的设备。GR Helper也具有GR能力。

设备既可以作为GR Restarter,又可以作为GR Helper。设备的角色由该设备在BGP GR过程中的作用决定。

BGP GR的工作过程为:

(1)     GR Restarter和GR Helper通过Open消息交互GR能力。只有双方都具有GR能力时,建立起的BGP会话才具备GR能力。GR Restarter还会通过Open消息,将本端通过graceful-restart timer restart命令配置的对端等待重建BGP会话时间通告给GR Helper。

(2)     建立具备GR能力的BGP会话后,GR Restarter进行主备倒换或BGP协议重启时,GR Restarter不会删除RIB(Routing Information Base,路由信息库)和FIB(Forwarding Information Base,转发信息库)表项,仍然按照原有的转发表项转发报文,并启动RIB路由老化定时器(定时器的值由graceful-restart timer purge-time命令配置)。GR Helper发现GR Restarter进行主备倒换或BGP协议重启后,GR Helper不会删除从该GR Restarter学习到的路由,而是将这些路由标记为失效路由,仍按照这些路由转发报文,从而确保在GR Restarter进行主备倒换或BGP协议重启的过程中,报文转发不会中断。

(3)     GR Restarter主备倒换或BGP协议重启完成后,它会重新与GR Helper建立BGP会话。如果在GR Restarter通告的BGP会话重建时间加上GR Helper上配置的等待重建额外时间(额外时间通过peer graceful-restart timer restart extra命令配置)内没有成功建立BGP会话,则GR Helper会删除标记为失效的路由。

(4)     如果在GR Restarter通告的BGP会话重建时间内成功建立BGP会话,则GR Restarter和GR Helper在建立的BGP会话上进行路由信息交互,以便GR Restarter恢复路由信息、GR Helper根据学习到的路由删除路由的失效标记。

(5)     BGP会话建立后,在GR Restarter和GR Helper上都会启动End-Of-RIB(路由信息库结束)标记等待定时器(定时器的值通过graceful-restart timer wait-for-rib命令配置),该定时器用来控制路由信息收敛的速度:

¡     如果定时器超时前收到了对端发送的End-Of-RIB标记,则GR Restarter根据已经学习到的BGP路由信息更新RIB表项、删除老化的RIB表项,并退出GR过程;GR Helper则删除仍标记为失效的路由,并退出GR过程。

¡     如果定时器超时时没有完成路由信息的交互,则GR Restarter根据已经学习到的BGP路由信息更新RIB表项、删除老化的RIB表项,并退出GR过程;GR Helper则删除仍标记为失效的路由,并退出GR过程。

End-Of-RIB标记是一个不包含NLRI或withdrawn NLRI的Update报文,GR Restarter和GR Helper的BGP路由发送完成后,会额外发送一个End-Of-RIB标记,用来通知对端本端的路由更新发送已经结束。

(6)     如果在RIB路由老化定时器超时时没有完成路由信息的交互,则GR Restarter会强制退出GR过程,根据已经学习到的BGP路由信息更新RIB表项,删除老化的RIB表项。

BGP GR完成后,向外发布路由信息的规则如下:

·     如果这些路由信息还依赖于其他模块(例如将OSPF路由引入到BGP路由时,BGP路由依赖于OSPF路由;标签路由依赖于MPLS等),则BGP需要收到这些周边模块发送的GR完成的通知后,才能向外发布路由,以免发布的路由错误或不可达,导致流量丢失。周边模块异常时,将无法向BGP发送GR完成的通知。BGP等待周边模块完成GR的时间具有一定的限制。在该限定时间内,如果BGP收到了周边模块发送的GR完成的通知,BGP会取消计时并发送路由;否则BGP将不再等待,立即发布路由,避免周边模块的异常导致BGP功能异常。

·     如果这些路由信息不依赖于其他模块,则BGP会立即向外发送路由。

2. 全局使能GR能力和指定对等体使能GR能力功能简介

BGP GR功能可以全局使能,也可以仅针对指定BGP对等体使能。通过graceful-restart命令,用户可以使能全局的BGP GR能力,即可以与所有对等体建立具备GR能力的BGP会话。但是使能全局BGP GR能力会使得所有BGP会话断开并重新建立,可能造成不必要的流量中断。

因此,在仅需要与部分对等体建立具有GR能力的BGP会话时,可以配置peer capability-advertise graceful-restart命令,仅使能与特定对等体进行GR协商的能力,以避免所有BGP会话都重新建立。

配置peer capability-advertise graceful-restart命令后,本端设备会与指定对等体重新建立会话,通过Open消息协商GR能力。对等体也具有GR能力时才能协商成功,建立起具有GR能力的BGP会话。

3. 开启设备通过GR方式复位BGP会话功能

在TCP连接断开、保持时间超时或BGP会话允许交换路由的地址族发生变化时,BGP会话需要断开并重新建立,造成业务流量转发中断。开启设备通过GR方式复位BGP会话功能后,在TCP连接断开、保持时间超时和BGP会话允许交换路由的地址族发生变化时,设备采用BGP GR方式进行BGP会话重建,仍按照已有的路由信息转发报文,从而避免对流量转发造成影响。

4. 配置限制和指导

本端配置的等待End-Of-RIB标记的时间不会通告给对端,只用来控制本端路由信息交互的时间,即GR Restarter上配置的时间只用来控制GR Restarter从GR Helper接收路由更新的时间,GR Helper上配置的时间只用来控制GR Helper从GR Restarter接收路由更新的时间。当路由信息的数量较多时,建议将本端等待End-Of-RIB标记的时间调大,以保证完成所有路由信息的交互。配置peer graceful-restart timer restart extra命令时如果指定了no-limit参数,则GR Helper不会启动End-Of-RIB标记等待定时器,一直等待对端发送的End-Of-RIB标记。

由于设备在GR过程中的角色不可预知,建议在作为GR Restarter和GR Helper的设备上均进行本配置。

当路由信息的数量较大且存在依赖于其他协议的路由信息,同时依赖的其他协议的GR配置正确时,如果BGP在限定时间内未收到周边模块发送的GR完成的通知,那么BGP将不再等待,立即发布路由。这种情况下建议将等待其他协议完成GR的最长时间调大,尽可能地保证BGP和其他协议都完成GR后再向其他设备发布BGP路由。

只要全局GR能力和为指定对等体使能的GR能力有一项处于使能状态,本端设备就可以和本命令指定的对等体协商GR能力。

如果设备通过peer capability-advertise graceful-restart命令的配置进入了BGP GR过程,则全局使能或关闭GR能力都会导致当前的GR过程中断,BGP会话重新建立。

如果设备通过全局GR能力的配置进入了BGP GR过程,则配置peer capability-advertise graceful-restart命令会导致设备与指定对等体的GR过程中断,BGP会话重新建立。

通过peer capability-advertise graceful-restart命令使能与指定对等体的GR能力后,本端设备与该对等体之间的BGP GR过程使用的时间参数由peer graceful-restart timer restartpeer graceful-restart timer wait-for-ribgraceful-restart timer purge-timepeer graceful-restart timer restart extra命令配置。如果同时使能了全局GR能力以及指定对等体的GR能力,则本端设备进入BGP GR过程后使用的时间参数以指定对等体使能的GR能力为准。

5. 配置全局使能GR能力

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     使能BGP协议的GR能力。

graceful-restart

缺省情况下,BGP协议的GR能力处于关闭状态。

(4)     配置对端等待重建BGP会话的时间。

graceful-restart timer restart timer

缺省情况下,对端等待重建BGP会话的时间为150秒。

对端等待重建BGP会话的时间应小于Open消息中的Holdtime时间。

(5)     (可选)配置BGP GR过程中本端作为GR Helper时等待对等体/对等体组重建BGP会话的额外时间。请选择其中一项进行配置。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] | link-local-address interface interface-type interface-number } graceful-restart timer restart extra { time | no-limit }

interface-peer interface-type interface-number graceful-restart timer restart extra { time | no-limit }

缺省情况下,本端作为GR Helper时等待对等体/对等体组重建BGP会话的额外时间为0秒。

(6)     配置本端等待End-Of-RIB标记的时间。

graceful-restart timer wait-for-rib timer

缺省情况下,本端等待End-Of-RIB标记的时间为600秒。

(7)     配置BGP GR过程中等待通知RIB老化失效表项的时间。

graceful-restart timer purge-time timer

缺省情况下,BGP GR过程中等待通知RIB老化失效表项的时间为480秒。

(8)     (可选)开启设备通过GR方式复位BGP会话功能。

graceful-restart peer-reset [ all ]

缺省情况下,设备以GR方式复位BGP会话功能处于关闭状态。

(9)     (可选)配置BGP GR完成后等待其他协议完成GR的最长时间。

bgp update-delay wait-other-protocol seconds

缺省情况下,BGP GR完成后等待周边其他协议完成GR的最长时间为300秒。

6. 配置指定对等体使能GR能力

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图或BGP-VPN实例视图。

¡     进入BGP实例视图。

bgp as-number [ instance instance-name ]

¡     请依次执行以下命令进入BGP-VPN实例视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

(3)     为指定对等体使能GR能力。

peer { group-name | ipv4-address | ipv6-address } capability-advertise graceful-restart

缺省情况下,BGP未针对任何对等体使能GR能力。

(4)     配置通知对等体等待本端重建BGP会话的最大时间。

peer { group-name | ipv4-address | ipv6-address } graceful-restart timer restart time-value

缺省情况下,通知对等体等待本端重建BGP会话的最大时间为150秒。

通知对等体等待本端重建BGP会话的时间应小于Open消息中的Holdtime时间。

(5)     (可选)配置BGP GR过程中本端作为GR Helper时等待对等体/对等体组重建BGP会话的额外时间。

peer { group-name | ipv4-address | ipv6-address } graceful-restart timer restart extra { time | no-limit }

缺省情况下,本端作为GR Helper时等待对等体/对等体组重建BGP会话的额外时间为0秒。

(6)     设置本端等待来自指定对等体的End-Of-RIB标记的最大时间。

peer { group-name | ipv4-address | ipv6-address } graceful-restart timer wait-for-rib time-value

缺省情况下,本端等待来自指定对等体的End-Of-RIB标记的最大时间为600秒。

(7)     配置BGP GR过程中等待通知RIB老化失效表项的时间。

graceful-restart timer purge-time timer

缺省情况下,BGP GR过程中等待通知RIB老化失效表项的时间为480秒。

3.3  配置BGP NSR

1. 功能简介

BGP NSR(Nonstop Routing,不间断路由)是一种通过在BGP协议主备进程之间备份必要的协议状态和数据(如BGP邻居信息和路由信息),使得BGP协议的主进程中断时,备份进程能够无缝地接管主进程的工作,从而确保对等体感知不到BGP协议中断,保持BGP路由,并保证转发不会中断的技术。

导致BGP主进程中断的事件包括以下几种:

·     BGP主进程重启

·     BGP主进程所在的主控板发生故障

·     BGP主进程所在的主控板进行ISSU(In-Service Software Upgrade,不中断业务升级)

BGP NSR与BGP GR具有如下区别,请根据实际情况选择合适的方式确保数据转发不中断:

·     对设备要求不同:

·     对BGP对等体的要求不同:使用BGP NSR功能时,BGP对等体不会感知本地设备发生了BGP进程的异常重启或主备倒换等故障,不需要BGP对等体协助恢复BGP路由信息。BGP GR要求BGP对等体具有GR能力,并且在BGP会话中断恢复时,BGP对等体能够作为GR helper协助本地设备恢复BGP路由信息。

2. 配置限制和指导

如果在设备上同时开启了BGP NSR和BGP GR功能,则二者的关系如下:

·     BGP NSR优先级高于BGP GR,即BGP主进程中断时通过BGP NSR确保转发不中断,设备不会作为GR Restarter启动GR过程。

·     GR Helper协助GR Restarter恢复重启前状态时,如果GR Helper发生了主备进程倒换,则即便GR Helper上配置了BGP NSR,也无法保证GR过程成功。

在MPLS L3VPN组网中,使能BGP NSR功能的同时,需要使能RIB NSR功能,以确保流量转发不会中断。关于RIB NSR功能的详细介绍,请参见“三层技术-IP路由配置指导”中的“IP路由基础”。

3. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     使能BGP NSR功能。

non-stop-routing

缺省情况下,BGP NSR功能处于关闭状态。

(4)     (可选)配置BGP NSR完成后等待其他协议完成NSR的最长时间。

bgp update-delay wait-other-protocol seconds

缺省情况下,BGP NSR完成后等待周边其他协议完成NSR的最长时间为300秒。

4. 显示和维护

可在任意视图下执行以下命令,显示BGP NSR的运行状态:

display bgp [ instance instance-name ] non-stop-routing status

3.4  配置BGP与BFD联动

1. 功能简介

BGP协议通过存活时间(Keepalive)定时器和保持时间(Holdtime)定时器来维护邻居关系。但这些定时器都是秒级的,而且根据协议规定,设置的保持时间应该至少为存活时间间隔的三倍。这样使得BGP邻居关系的检测比较慢,对于报文收发速度快的接口会导致大量报文丢失。通过配置BGP与BFD联动,可以使用BFD来检测本地路由器和BGP对等体之间的链路。当本地路由器和BGP对等体之间的链路出现故障时,BFD可以快速检测到该故障,从而加快BGP协议的收敛速度。有关BFD的介绍和详细配置,请参见“可靠性配置指导”中的“BFD”。

配置通过BFD检测本地路由器和指定BGP对等体/对等体组之间的链路之前,需要先在本地路由器和指定BGP对等体/对等体组之间建立BGP会话。

2. 配置限制和指导

通过本功能配置echo报文方式的BFD检测时,需要注意:

·     echo报文方式的BFD会话只能用于检测与直连对等体之间的链路状态。

·     通过LoopBack接口建立的BGP会话无法通过echo报文方式检测对等体之间的链路。

·     需要配置bfd echo-source-ipbfd echo-source-ipv6命令为echo报文指定源地址,否则本端无法建立BFD会话。

通过链路本地地址建立的BGP会话只能通过控制报文方式的单跳BFD会话检测对等体之间的链路。

采用控制报文方式的BFD会话检测链路时,本地路由器和BGP对等体采用的BFD检测方式(单跳或多跳)必须相同,否则无法建立BFD会话。

配置BGP GR功能后,请慎用BGP与BFD联动功能。因为当链路故障时,系统可能还没来得及启用GR处理流程,BFD已经检测到链路故障了,从而导致GR失败。如果设备上同时配置了BGP GR和BGP BFD,则在BGP GR期间请勿去使能BGP BFD,否则可能导致GR失败。

为指定对等体/对等体组配置BFD检测参数(BFD检测时间倍数、接收/发送BFD控制报文的时间间隔)时,需要注意:

·     对等体在加入对等体组时将同步所加入对等体组的BFD检测参数配置。

·     配置对等体组的BFD检测参数时,相应配置将同步给组内所有的对等体。

·     如果对同一个对等体/对等体组的某项BFD检测参数多次进行配置,则以最后一次的配置为准。

对于一个对等体的一项BFD检测参数而言,总是以最后一次的配置为准,无论该配置是通过直接配置获得还是同步对等体组的配置获得。

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

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图或BGP-VPN实例视图。

¡     进入BGP实例视图。

bgp as-number [ instance instance-name ]

¡     请依次执行以下命令进入BGP-VPN实例视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

(3)     配置通过BFD检测本地路由器和指定BGP对等体/对等体组之间的链路。

peer { group-name | ipv4-address [ mask-length ] } bfd [ echo | multi-hop | single-hop ]

缺省情况下,不使用BFD检测本地路由器和BGP对等体/对等体组之间的链路。

(4)     (可选)配置指定对等体/对等体组的BFD检测参数。

peer { group-name | ipv4-address [ mask-length ] } bfd parameters { detect-multiplier detect-multiplier | min-receive-interval min-receive-interval | min-transmit-interval min-transmit-interval } *

缺省情况下,未配置对等体/对等体组的BFD检测参数。

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

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图或BGP-VPN实例视图。

¡     进入BGP实例视图。

bgp as-number [ instance instance-name ]

¡     请依次执行以下命令进入BGP-VPN实例视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

(3)     配置通过BFD检测本地路由器和指定IPv6 BGP对等体/对等体组之间的链路。请选择其中一项进行配置。

peer { group-name | ipv6-address [ prefix-length ] | link-local-address interface interface-type interface-number } bfd [ echo | multi-hop | single-hop ]

interface-peer interface-type interface-number bfd [ multi-hop | single-hop ]

缺省情况下,不使用BFD检测本地路由器和IPv6 BGP对等体/对等体组之间的链路。

指定link-local-address interface interface-type interface-number参数时不支持通过Echo方式的BFD检测。

(4)     (可选)配置指定对等体/对等体组的BFD检测参数。

peer { group-name | ipv6-address [ prefix-length ] } bfd parameters { detect-multiplier detect-multiplier | min-receive-interval min-receive-interval | min-transmit-interval min-transmit-interval } *

缺省情况下,未配置对等体/对等体组的BFD检测参数。

3.5  配置BGP快速重路由

3.5.1  功能简介

当BGP网络中的链路或某台路由器发生故障时,需要通过故障链路或故障路由器传输才能到达目的地的报文将会丢失或产生路由环路,数据流量将会被中断。直到BGP根据新的网络拓扑路由收敛后,被中断的流量才能恢复正常的传输。

为了尽可能缩短网络故障导致的流量中断时间,网络管理员可以开启BGP快速重路由功能。

图3-1 BGP快速重路由功能示意图

 

图3-1所示,在Router B上开启快速重路由功能后,BGP将为主路由生成备份下一跳。IPv4组网中BGP通过ARP或Echo方式的BFD会话检测主路由的下一跳是否可达,IPv6组网中BGP通过ND(Neighbor Discovery,邻居发现)协议检测主路由的下一跳是否可达。当Router B检测到主路由的下一跳不可达后,BGP会使用备份下一跳替换失效下一跳,通过备份下一跳来指导报文的转发,从而大大缩短了流量中断时间。在使用备份下一跳指导报文转发的同时,BGP会重新进行路由优选,优选完毕后,使用新的最优路由来指导报文转发。

开启BGP快速重路由功能的方法有如下两种:

·     在BGP地址族视图下执行pic命令开启当前地址族的BGP快速重路由功能。采用这种方法时,BGP会为当前地址族的所有BGP路由自动计算备份下一跳,即只要从不同BGP对等体学习到了到达同一目的网络的路由,且这些路由不等价,就会生成主备两条路由。

·     在BGP地址族视图下执行fast-reroute route-policy命令指定快速重路由引用的路由策略,并在引用的路由策略中,通过apply [ ipv6 ] fast-reroute backup-nexthop命令指定备份下一跳的地址。采用这种方式时,只有为主路由计算出的备份下一跳地址与指定的地址相同时,才会为其生成备份下一跳;否则,不会为主路由生成备份下一跳。在引用的路由策略中,还可以配置if-match子句,用来决定哪些路由可以进行快速重路由保护,BGP只会为通过if-match子句过滤的路由生成备份下一跳。

引用路由策略方式的优先级高于通过pic命令开启BGP快速重路由方式。

IPv4单播路由和IPv6单播路由支持BGP快速重路由功能;IPv4组播路由和IPv6组播路由不支持BGP快速重路由功能。

3.5.2  通过引用路由策略的方式开启BGP快速重路由功能(IPv4单播)

(1)     进入系统视图。

system-view

(2)     配置echo报文的源IP地址。

bfd echo-source-ip ipv4-address

缺省情况下,未配置echo报文的源IP地址。

通过Echo方式的BFD会话检测主路由的下一跳是否可达时,必须执行本配置。

echo报文的源IP地址用户可以任意指定。建议配置echo报文的源IP地址不属于该设备任何一个接口所在网段。

本命令的详细介绍,请参见“可靠性命令参考”中的“BFD”。

(3)     创建路由策略,并进入路由策略视图。

route-policy route-policy-name permit node node-number

本命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“路由策略”。

(4)     配置快速重路由的备份下一跳地址。

apply fast-reroute backup-nexthop ipv4-address

缺省情况下,未指定快速重路由的备份下一跳地址。

本命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“路由策略”。

(5)     退回系统视图。

quit

(6)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(7)     进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图。

¡     进入BGP IPv4单播地址族视图

address-family ipv4 [ unicast ]

¡     请依次执行以下命令进入BGP-VPN IPv4单播地址族视图

ip vpn-instance vpn-instance-name

address-family ipv4 [ unicast ]

(8)     在当前地址族视图下指定BGP快速重路由引用的路由策略。

fast-reroute route-policy route-policy-name

缺省情况下,BGP快速重路由未引用任何路由策略。

引用的路由策略中,只有apply fast-reroute backup-nexthopapply ipv6 fast-reroute backup-nexthop命令生效,其他apply子句不会生效。

3.5.3  通过引用路由策略的方式开启BGP快速重路由功能(IPv6单播)

(1)     进入系统视图。

system-view

(2)     创建路由策略,并进入路由策略视图。

route-policy route-policy-name permit node node-number

本命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“路由策略”。

(3)     配置快速重路由的备份下一跳地址。

apply ipv6 fast-reroute backup-nexthop ipv6-address

缺省情况下,未指定快速重路由的备份下一跳地址。

本命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“路由策略”。

(4)     退回系统视图。

quit

(5)     进入BGP实例视图或BGP-VPN实例视图。

¡     进入BGP实例视图。

bgp as-number [ instance instance-name ]

¡     请依次执行以下命令进入BGP-VPN实例视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

(6)     进入BGP IPv6单播地址族视图或BGP-VPN IPv6单播地址族视图。

address-family ipv6 [ unicast ]

(7)     在当前地址族视图下指定BGP快速重路由引用的路由策略。

fast-reroute route-policy route-policy-name

缺省情况下,BGP快速重路由未引用任何路由策略。

引用的路由策略中,只有apply fast-reroute backup-nexthopapply ipv6 fast-reroute backup-nexthop命令生效,其他apply子句不会生效。

3.5.4  通过pic命令开启BGP快速重路由(IPv4单播)

1. 配置限制和指导

在某些组网情况下,执行pic命令为所有BGP路由生成备份下一跳后,可能会导致路由环路,请谨慎使用本功能。

2. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图或BGP-VPN实例视图。

¡     进入BGP实例视图。

bgp as-number [ instance instance-name ]

¡     请依次执行以下命令进入BGP-VPN实例视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

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

address-family ipv4 [ unicast ]

(4)     开启BGP快速重路由功能。

pic

缺省情况下,BGP快速重路由功能处于关闭状态。

3.5.5  通过pic命令开启BGP快速重路由(IPv6单播)

1. 配置限制和指导

在某些组网情况下,执行pic命令为所有BGP路由生成备份下一跳后,可能会导致路由环路,请谨慎使用本功能。

2. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图或BGP-VPN实例视图。

¡     进入BGP实例视图。

bgp as-number [ instance instance-name ]

¡     请依次执行以下命令进入BGP-VPN实例视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

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

address-family ipv6 [ unicast ]

(4)     开启BGP快速重路由功能。

pic

缺省情况下,BGP快速重路由功能处于关闭状态.

在某些组网情况下,执行pic命令为所有BGP路由生成备份下一跳后,可能会导致路由环路,请谨慎使用本命令。

3.5.6  配置BGP快速重路由通过BFD会话检测主路由的下一跳是否可达

1. 功能简介

缺省情况下,BGP快速重路由通过ARP检测主路由的下一跳是否可达,该方式对于快速重路由的主链路失效检测较慢,业务流量可能无法及时切换到备用路径上,导致流量丢失。配置本功能后,设备会自动创建一个协议类型为IPFRR的BFD会话,通过该BFD会话对主路由的下一跳检测,以提高主路由下一跳失效时,流量切换到备路由下一跳上的收敛速度。

2. 配置限制和指导

只有存在已经生成了备份下一跳的主路由时,本功能才会生效并自动创建BFD会话。

由于BGP暂不支持为负载分担路由计算备份下一跳,本功能无法为等价路由作为主路由的场景提供通过BFD会话检测功能。如需通过BFD会话检测BGP等价路由的下一跳可达性,请配置primary-path-detect bfd protocol-ecmp bgpprimary-path-detect bfd protocol-ecmp bgp4+命令。有关上述两条命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“IP路由基础”。

通过控制报文方式的BFD会话检测主路由的下一跳是否可达时,由于控制报文方式的BFD会话需要两端进行协商才能成功建立,如需设备成功使用控制报文方式的BFD会话来检测主链路的下一跳,可以通过以下两种方式进行配置:

·     在主链路的对端设备上也执行primary-path-detect bfd命令。此方式适用于主链路两端设备均配置快速重路由功能的场景。

·     在主链路的对端设备上手工创建一个静态BFD会话,该静态BFD会话指定的会话源IP地址为本端自动创建的BFD会话的会话目的IP地址、会话目的IP地址为本端自动创建的BFD会话的源IP地址、远端标识符为本端自动创建的BFD会话的本地标识符。

使用echo方式的BFD会话检测主路由的下一跳是否可达时,仅需要在本地路由器上配置本功能。

其他业务模块在通过BFD会话检测主路由的下一跳是否可达时,也会自动创建BFD会话(如RIB、OSPF、IS-IS等)。如果其他协议创建的自动BFD会话检测的链路与BGP主路由下一跳所在的链路相同,则BGP不会重复自动创建同类型的BFD会话,而是复用其他协议的BFD会话。

3. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     配置BGP快速重路由通过BFD会话检测主路由的下一跳是否可达。

primary-path-detect bfd { ctrl | echo }

缺省情况下,BGP快速重路由通过ARP检测主路由的下一跳是否可达。

3.6  配置BGP进程维护功能

3.6.1  功能简介

当用户需要对某台设备上的BGP进程进行调试或升级等维护操作时,可以使用BGP isolate功能或BGP shutdown功能,将该设备上的BGP进程从当前网络中移除。网络中的其他设备重新计算路由,不会再通过该设备转发流量,从而降低设备维护对网络的影响,提高网络的可靠性。

BGP isolate功能和BGP shutdown功能使得网络管理员在进行网络设备维护时,无需删除并重新进行对等体/对等体组相关配置,减少了网络维护的工作量。完成设备维护后,网络管理员可以关闭BGP isolate功能和BGP shutdown功能,以使该设备重新投入使用。

3.6.2  配置BGP isolate

1. 功能简介

本功能可以将BGP进程从网络中隔离出来,具体工作机制如下:

(1)     开启BGP isolate功能的设备撤销发布给邻居的BGP路由(本设备直连路由除外),同时保留所有从邻居学习到的BGP路由。

(2)     远端邻居收到路由撤销消息后,重新进行路由优选并更新FIB表。在此期间,远端邻居仍然可以通过BGP isolate设备发布的BGP路由转发流量。

(3)     远端邻居删除所有BGP isolate设备发布的BGP路由并完成FIB表项更新后,除目的地为BGP isolate设备的流量外,其他流量不再经过BGP isolate设备。此时,BGP isolate设备完全从当前组网中隔离出来,可以对该设备上的BGP协议进行升级等处理。

(4)     对BGP isolate设备的维护结束后,关闭BGP isolate功能可让该设备重新加入网络。设备重新加入网络后,BGP路由的发布和学习机制如下:

¡     设备重新向邻居发布路由。

¡     设备隔离前保留了从邻居学习到的路由。如果设备隔离后没有对BGP协议进行重启等操作,则无需重新进行路由学习;否则,设备重新加入网络后需要重新进行路由学习。

2. 配置限制和指导

设备进行GR或NSR期间,建议用户不要使用BGP isolate功能,否则无法保证执行操作后的结果与预期结果一致。

3. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     配置BGP isolate功能,将设备的BGP协议从当前组网中隔离出来。

isolate enable

缺省情况下,未配置BGP协议隔离功能。

(4)     完成设备维护后,使设备的BGP重新加入网络。

undo isolate enable

3.6.3  配置BGP shutdown

1. 功能简介

本功能通过暂时断开与所有对等体/对等体组的BGP会话,来实现BGP进程的移除。完成设备维护后,通过取消本功能可以恢复与所有对等体/对等体组的BGP会话。

2. 配置限制和指导

如果本设备和对等体/对等体组的会话已经建立,则配置本功能后,会断开本设备和对等体/对等体组的会话,并清除所有路由信息。

同时配置本功能和禁止与对等体/对等体组建立会话功能时,若任一功能禁止了与对等体/对等体组建立会话,则设备不能与相应的对等体/对等体组建立BGP会话。禁止与对等体/对等体组建立会话功能的详细介绍,请参见“禁止与对等体/对等体组建立会话”。

3. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     配置BGP shutdown功能,禁止与所有对等体/对等体组建立会话。

shutdown process

缺省情况下,设备允许与所有BGP对等体/对等体组建立会话。

(4)     完成设备维护后,使设备的BGP重新加入网络。

undo shutdown process

3.7  提高IPv4 BGP网络的可靠性典型配置举例‌

3.7.1  BGP GR配置

1. 组网需求

图3-2所示,所有路由器均运行BGP协议,Router A和Router B之间建立EBGP连接,Router B和Router C之间建立IBGP连接。现要求实现即便Router B发生主备倒换,也不会影响Router A和Router C之间正在进行的数据传输。

2. 组网图

图3-2 BGP GR配置组网图

3. 配置步骤

(1)     Router A的配置

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

# 配置Router A与Router B的EBGP连接。

<RouterA> system-view

[RouterA] bgp 65008

[RouterA-bgp-default] router-id 1.1.1.1

[RouterA-bgp-default] peer 200.1.1.1 as-number 65009

# 使能BGP GR功能。

[RouterA-bgp-default] graceful-restart

# 将8.0.0.0/8网段路由通告到IPv4 BGP路由表中。

[RouterA-bgp-default] address-family ipv4

[RouterA-bgp-default-ipv4] network 8.0.0.0

# 使能与Router B交换BGP IPv4单播路由的能力。

[RouterA-bgp-default-ipv4] peer 200.1.1.1 enable

(2)     Router B的配置

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

# 配置Router B与Router A的EBGP连接。

<RouterB> system-view

[RouterB] bgp 65009

[RouterB-bgp-default] router-id 2.2.2.2

[RouterB-bgp-default] peer 200.1.1.2 as-number 65008

# 配置Router B与Router C的IBGP连接。

[RouterB-bgp-default] peer 9.1.1.2 as-number 65009

# 使能BGP GR功能。

[RouterB-bgp-default] graceful-restart

# 将200.1.1.0/24和9.1.1.0/24网段路由通告到IPv4 BGP路由表中。

[RouterB-bgp-default] address-family ipv4

[RouterB-bgp-default-ipv4] network 200.1.1.0 24

[RouterB-bgp-default-ipv4] network 9.1.1.0 24

# 使能与Router A、Router C交换BGP IPv4单播路由的能力。

[RouterB-bgp-default-ipv4] peer 200.1.1.2 enable

[RouterB-bgp-default-ipv4] peer 9.1.1.2 enable

(3)     Router C的配置

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

# 配置Router C与Router B的IBGP连接。

<RouterC> system-view

[RouterC] bgp 65009

[RouterC-bgp-default] router-id 3.3.3.3

[RouterC-bgp-default] peer 9.1.1.1 as-number 65009

# 使能BGP GR功能。

[RouterC-bgp-default] graceful-restart

# 使能与Router B交换BGP IPv4单播路由的能力。

[RouterC-bgp-default] address-family ipv4

[RouterC-bgp-default-ipv4] peer 9.1.1.1 enable

4. 验证配置

在Router A上ping Router C,同时在Router B上触发主备倒换,可以发现在整个倒换过程中Router A都可以ping通Router C

3.7.2  BGP与BFD联动配置

1. 组网需求

·     在AS 200内使用OSPF作为IGP协议,实现AS内的互通。

·     Router A与Router C之间建立两条IBGP连接。当Router A与Router C之间的两条路径均连通时,Router C与1.1.1.0/24之间的报文使用Router A<->Router B<->Router C这条路径转发;当Router A<->Router B<->Router C这条路径发生故障时,BFD能够快速检测并通告BGP协议,使得Router A<->Router D<->Router C这条路径能够迅速生效。

2. 组网图

图3-3 配置BGP与BFD联动组网图

3. 配置步骤

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

(2)     配置OSPF,保证Router A和Router C之间路由可达(略)

(3)     Router A上的BGP配置

# 配置Router A和Router C建立两条IBGP连接。

<RouterA> system-view

[RouterA] bgp 200

[RouterA-bgp-default] peer 3.0.2.2 as-number 200

[RouterA-bgp-default] peer 2.0.2.2 as-number 200

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

[RouterA-bgp-default-ipv4] peer 3.0.2.2 enable

[RouterA-bgp-default-ipv4] peer 2.0.2.2 enable

[RouterA-bgp-default-ipv4] quit

# 配置当Router A与Router C之间的两条路径均连通时,Router C与1.1.1.0/24之间的报文使用Router A<->Router B<->Router C这条路径转发。(在Router A上对发布给对等体2.0.2.2的1.1.1.0/24路由配置较高的MED属性值)

¡     定义编号为2000的IPv4基本ACL,允许路由1.1.1.0/24通过。

[RouterA] acl basic 2000

[RouterA-acl-ipv4-basic-2000] rule permit source 1.1.1.0 0.0.0.255

[RouterA-acl-ipv4-basic-2000] quit

¡     定义两个Route-policy,一个名为apply_med_50,为路由1.1.1.0/24设置MED属性值为50;另一个名为apply_med_100,为路由1.1.1.0/24设置MED属性值为100。

[RouterA] route-policy apply_med_50 permit node 10

[RouterA-route-policy-apply_med_50-10] if-match ip address acl 2000

[RouterA-route-policy-apply_med_50-10] apply cost 50

[RouterA-route-policy-apply_med_50-10] quit

[RouterA] route-policy apply_med_100 permit node 10

[RouterA-route-policy-apply_med_100-10] if-match ip address acl 2000

[RouterA-route-policy-apply_med_100-10] apply cost 100

[RouterA-route-policy-apply_med_100-10] quit

¡     对发布给对等体3.0.2.2的路由应用名为apply_med_50的Route-policy,对发布给对等体2.0.2.2的路由应用名为apply_med_100的Route-policy。

[RouterA] bgp 200

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

[RouterA-bgp-default-ipv4] peer 3.0.2.2 route-policy apply_med_50 export

[RouterA-bgp-default-ipv4] peer 2.0.2.2 route-policy apply_med_100 export

[RouterA-bgp-default-ipv4] quit

# 配置当Router A<->Router B<->Router C这条路径发生故障时,BFD能够快速检测并通告BGP协议,使得Router A<->Router D<->Router C这条路径能够迅速生效。

[RouterA-bgp-default] peer 3.0.2.2 bfd

[RouterA-bgp-default] quit

(4)     Router C上的BGP配置。

# 配置Router A和Router C建立两条IBGP连接。

<RouterC> system-view

[RouterC] bgp 200

[RouterC-bgp-default] peer 3.0.1.1 as-number 200

[RouterC-bgp-default] peer 2.0.1.1 as-number 200

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

[RouterC-bgp-default-ipv4] peer 3.0.1.1 enable

[RouterC-bgp-default-ipv4] peer 2.0.1.1 enable

[RouterC-bgp-default-ipv4] quit

# 配置当Router A<->Router B<->Router C这条路径发生故障时,BFD能够快速检测并通告BGP协议,使得Router A<->Router D<->Router C这条路径能够迅速生效。

[RouterC-bgp-default] peer 3.0.1.1 bfd

[RouterC-bgp-default] quit

[RouterC] quit

4. 验证配置

下面以Router C为例,Router A和Router C类似,不再赘述。

# 显示Router C的BFD信息。

<RouterC> display bfd session verbose

 Total Session Num: 1     Up Session Num: 1     Init Mode: Active

 

 IPv4 Session Working in control packet mode:

       Local Discr: 513                  Remote Discr: 513

         Source IP: 3.0.2.2            Destination IP: 3.0.1.1

     Session State: Up                      Interface: N/A

      Min Tx Inter: 500ms                Act Tx Inter: 500ms

      Min Rx Inter: 500ms                Detect Inter: 2500ms

          Rx Count: 135                      Tx Count: 135

      Connect Type: Indirect           Running Up for: 00:00:58

         Hold Time: 2457ms                  Auth mode: None

       Detect Mode: Async                        Slot: 0

          Protocol: BGP

           Version:1

         Diag Info: No Diagnostic

     Hardware mode: Disable

以上显示信息表明:Router A和Router C之间已经建立了BFD连接,而且BFD协议运行正常。

# 在Router C上查看BGP邻居信息,可以看出Router A和Router C之间建立两条BGP连接,且均处于Established状态。

<RouterC> display bgp peer ipv4

 

 BGP local router ID: 3.3.3.3

 Local AS number: 200

 Total number of peers: 2                  Peers in established state: 2

 

  * - Dynamically created peer

  Peer                    AS  MsgRcvd  MsgSent OutQ PrefRcv Up/Down  State

 

  2.0.1.1                200        4        5    0       0 00:01:55 Established

  3.0.1.1                200        4        5    0       0 00:01:52 Established

# 在Router C上查看1.1.1.0/24的路由信息,可以看出Router C通过Router A<->Router B<->Router C这条路径与1.1.1.0/24网段通信。

<RouterC> display ip routing-table 1.1.1.0 24 verbose

 

Summary count : 1

 

Destination: 1.1.1.0/24

   Protocol: BGP             Process ID: 0

  SubProtID: 0x1                    Age: 00h00m09s

       Cost: 50              Preference: 255

      IpPre: N/A             QosLocalID: N/A

        Tag: 0                    State: Active Adv

  OrigTblID: 0x1                OrigVrf: default-vrf

    TableID: 0x2                 OrigAs: 0

      NibID: 0x15000001          LastAs: 0

     AttrID: 0x1               Neighbor: 3.0.1.1

      Flags: 0x10060        OrigNextHop: 3.0.1.1

      Label: NULL           RealNextHop: 3.0.2.1

    BkLabel: NULL             BkNextHop: N/A

    SRLabel: NULL                 Interface: GigabitEthernet0/0/1

   BkSRLabel: NULL              BkInterface: N/A

   Tunnel ID: Invalid           IPInterface: GigabitEthernet0/0/1

 BkTunnel ID: Invalid         BKIPInterface: N/A

     InLabel: NULL           ColorInterface: N/A

    SIDIndex: NULL         BKColorInterface: N/A

    FtnIndex: 0x0           TunnelInterface: N/A

TrafficIndex: N/A         BKTunnelInterface: N/A

   Connector: N/A                    PathID: 0x0

  SRTunnelID: Invalid

    SID Type: N/A                       NID: Invalid

    FlushNID: Invalid                 BkNID: Invalid

  BkFlushNID: Invalid             StatFlags: 0x0

         Exp: N/A

   VpnPeerId: N/A                      Dscp: N/A

         SID: N/A                OrigLinkID: 0x0

       BkSID: N/A                RealLinkID: 0x0

CommBlockLen: 0

# Router A和Router B之间的链路发生故障后,在Router C上查看1.1.1.0/24的路由信息,可以看出Router C通过Router A<->Router D<->Router C这条路径与1.1.1.0/24网段通信。

<RouterC> display ip routing-table 1.1.1.0 24 verbose

 

Summary count : 1

 

Destination: 1.1.1.0/24

   Protocol: BGP             Process ID: 0

  SubProtID: 0x1                    Age: 00h03m08s

       Cost: 100             Preference: 255

      IpPre: N/A             QosLocalID: N/A

        Tag: 0                    State: Active Adv

  OrigTblID: 0x1                OrigVrf: default-vrf

    TableID: 0x2                 OrigAs: 0

      NibID: 0x15000000          LastAs: 0

     AttrID: 0x0               Neighbor: 2.0.1.1

      Flags: 0x10060        OrigNextHop: 2.0.1.1

      Label: NULL           RealNextHop: 2.0.2.1

    BkLabel: NULL             BkNextHop: N/A

    SRLabel: NULL                 Interface: GigabitEthernet0/0/2

   BkSRLabel: NULL              BkInterface: N/A

   Tunnel ID: Invalid           IPInterface: GigabitEthernet0/0/2

 BkTunnel ID: Invalid         BKIPInterface: N/A

     InLabel: NULL           ColorInterface: N/A

    SIDIndex: NULL         BKColorInterface: N/A

    FtnIndex: 0x0           TunnelInterface: N/A

TrafficIndex: N/A         BKTunnelInterface: N/A

   Connector: N/A                    PathID: 0x0

  SRTunnelID: Invalid

    SID Type: N/A                       NID: Invalid

    FlushNID: Invalid                 BkNID: Invalid

  BkFlushNID: Invalid             StatFlags: 0x0

         Exp: N/A

   VpnPeerId: N/A                      Dscp: N/A

         SID: N/A                OrigLinkID: 0x0

       BkSID: N/A                RealLinkID: 0x0

CommBlockLen: 0

3.7.3  BGP快速重路由配置

1. 组网需求

图3-4所示,Router A、Router B、Router C和Router D通过BGP协议实现网络互连。要求链路B正常时,Router A和Router D之间的流量通过链路B转发;链路B出现故障时,流量可以快速切换到链路A上。

2. 组网图

图3-4 配置BGP快速重路由组网图

3. 配置步骤

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

(2)     在AS 200内配置OSPF,发布接口地址所在网段的路由(包括Loopback接口),确保Router B、Router C和Router D之间路由可达(略)

(3)     配置BGP连接

# 配置Router A分别与Router B和Router C建立EBGP会话,并配置通过BGP发布路由1.1.1.1/32。

<RouterA> system-view

[RouterA] bgp 100

[RouterA-bgp-default] router-id 1.1.1.1

[RouterA-bgp-default] peer 10.1.1.2 as-number 200

[RouterA-bgp-default] peer 30.1.1.3 as-number 200

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

[RouterA-bgp-default-ipv4] peer 10.1.1.2 enable

[RouterA-bgp-default-ipv4] peer 30.1.1.3 enable

[RouterA-bgp-default-ipv4] network 1.1.1.1 32

# 配置Router B与Router A建立EBGP会话,与Router D建立IBGP会话。

<RouterB> system-view

[RouterB] bgp 200

[RouterB-bgp-default] router-id 2.2.2.2

[RouterB-bgp-default] peer 10.1.1.1 as-number 100

[RouterB-bgp-default] peer 4.4.4.4 as-number 200

[RouterB-bgp-default] peer 4.4.4.4 connect-interface loopback 0

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

[RouterB-bgp-default-ipv4] peer 10.1.1.1 enable

[RouterB-bgp-default-ipv4] peer 4.4.4.4 enable

[RouterB-bgp-default-ipv4] peer 4.4.4.4 next-hop-local

[RouterB-bgp-default-ipv4] quit

[RouterB-bgp-default] quit

# 配置Router C与Router A建立EBGP会话,与Router D建立IBGP会话。

<RouterC> system-view

[RouterC] bgp 200

[RouterC-bgp-default] router-id 3.3.3.3

[RouterC-bgp-default] peer 30.1.1.1 as-number 100

[RouterC-bgp-default] peer 4.4.4.4 as-number 200

[RouterC-bgp-default] peer 4.4.4.4 connect-interface loopback 0

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

[RouterC-bgp-default-ipv4] peer 30.1.1.1 enable

[RouterC-bgp-default-ipv4] peer 4.4.4.4 enable

[RouterC-bgp-default-ipv4] peer 4.4.4.4 next-hop-local

[RouterC-bgp-default-ipv4] quit

[RouterC-bgp-default] quit

# 配置Router D分别与Router B和Router C建立IBGP会话,并配置BGP发布路由4.4.4.4/32。

<RouterD> system-view

[RouterD] bgp 200

[RouterD-bgp-default] router-id 4.4.4.4

[RouterD-bgp-default] peer 2.2.2.2 as-number 200

[RouterD-bgp-default] peer 2.2.2.2 connect-interface loopback 0

[RouterD-bgp-default] peer 3.3.3.3 as-number 200

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

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

[RouterD-bgp-default-ipv4] peer 2.2.2.2 enable

[RouterD-bgp-default-ipv4] peer 3.3.3.3 enable

[RouterD-bgp-default-ipv4] network 4.4.4.4 32

(4)     修改路由的首选值,使得Router A和Router D之间的流量优先通过链路B转发

# 在Router A上配置从Router B接收到的路由的首选值为100。

[RouterA-bgp-default-ipv4] peer 10.1.1.2 preferred-value 100

[RouterA-bgp-default-ipv4] quit

[RouterA-bgp-default] quit

# 在Router D上配置从Router B接收到的路由的首选值为100。

[RouterD-bgp-default-ipv4] peer 2.2.2.2 preferred-value 100

[RouterD-bgp-default-ipv4] quit

[RouterD-bgp-default] quit

(5)     配置BGP快速重路由

# 配置Router A:配置通过Echo方式的BFD会话检测主路由的下一跳是否可达,并配置BFD echo报文的源IP地址为11.1.1.1;创建路由策略frr,为路由4.4.4.4/32指定备份下一跳的地址为30.1.1.3(对等体Router C的地址);在BGP IPv4单播地址族下应用该路由策略。

[RouterA] bfd echo-source-ip 11.1.1.1

[RouterA] ip prefix-list abc index 10 permit 4.4.4.4 32

[RouterA] route-policy frr permit node 10

[RouterA-route-policy] if-match ip address prefix-list abc

[RouterA-route-policy] apply fast-reroute backup-nexthop 30.1.1.3

[RouterA-route-policy] quit

[RouterA] bgp 100

[RouterA-bgp-default] primary-path-detect bfd echo

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

[RouterA-bgp-default-ipv4] fast-reroute route-policy frr

[RouterA-bgp-default-ipv4] quit

[RouterA-bgp-default] quit

# 配置Router D:配置通过Echo方式的BFD会话检测主路由的下一跳是否可达,并配置BFD echo报文的源IP地址为44.1.1.1;创建路由策略frr,为路由1.1.1.1/32指定备份下一跳的地址为3.3.3.3(对等体Router C的地址);在BGP IPv4单播地址族下应用该路由策略。

[RouterD] bfd echo-source-ip 44.1.1.1

[RouterD] ip prefix-list abc index 10 permit 1.1.1.1 32

[RouterD] route-policy frr permit node 10

[RouterD-route-policy] if-match ip address prefix-list abc

[RouterD-route-policy] apply fast-reroute backup-nexthop 3.3.3.3

[RouterD-route-policy] quit

[RouterD] bgp 200

[RouterD-bgp-default] primary-path-detect bfd echo

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

[RouterD-bgp-default-ipv4] fast-reroute route-policy frr

[RouterD-bgp-default-ipv4] quit

[RouterD-bgp-default] quit

4. 验证配置

# 在Router A上查看4.4.4.4/32路由,可以看到备份下一跳信息。

[RouterA] display ip routing-table 4.4.4.4 32 verbose

 

Summary count : 1

 

Destination: 4.4.4.4/32

   Protocol: BGP             Process ID: 0

  SubProtID: 0x2                    Age: 00h01m52s

       Cost: 0               Preference: 255

      IpPre: N/A             QosLocalID: N/A

        Tag: 0                    State: Active Adv

  OrigTblID: 0x0                OrigVrf: default-vrf

    TableID: 0x2                 OrigAs: 200

      NibID: 0x15000003          LastAs: 200

     AttrID: 0x5               Neighbor: 10.1.1.2

      Flags: 0x10060        OrigNextHop: 10.1.1.2

      Label: NULL           RealNextHop: 10.1.1.2

    BkLabel: NULL             BkNextHop: 30.1.1.3

    SRLabel: NULL                 Interface: GigabitEthernet0/0/1

   BkSRLabel: NULL              BkInterface: GigabitEthernet0/0/2

   Tunnel ID: Invalid           IPInterface: GigabitEthernet0/0/1

 BkTunnel ID: Invalid         BKIPInterface: N/A

     InLabel: NULL           ColorInterface: N/A

    SIDIndex: NULL         BKColorInterface: N/A

    FtnIndex: 0x0           TunnelInterface: N/A

TrafficIndex: N/A         BKTunnelInterface: N/A

   Connector: N/A                    PathID: 0x0

  SRTunnelID: Invalid

    SID Type: N/A                       NID: Invalid

    FlushNID: Invalid                 BkNID: Invalid

  BkFlushNID: Invalid             StatFlags: 0x0

         Exp: N/A

   VpnPeerId: N/A                      Dscp: N/A

         SID: N/A                OrigLinkID: 0x0

       BkSID: N/A                RealLinkID: 0x0

CommBlockLen: 0

# 在Router D上查看1.1.1.1/32路由,可以看到备份下一跳信息。

[RouterD] display ip routing-table 1.1.1.1 32 verbose

 

Summary count : 1

 

Destination: 1.1.1.1/32

   Protocol: BGP             Process ID: 0

  SubProtID: 0x1                    Age: 00h00m36s

       Cost: 0               Preference: 255

      IpPre: N/A             QosLocalID: N/A

        Tag: 0                    State: Active Adv

  OrigTblID: 0x0                OrigVrf: default-vrf

    TableID: 0x2                 OrigAs: 100

      NibID: 0x15000003          LastAs: 100

     AttrID: 0x1               Neighbor: 2.2.2.2

      Flags: 0x10060        OrigNextHop: 2.2.2.2

      Label: NULL           RealNextHop: 20.1.1.2

    BkLabel: NULL             BkNextHop: 40.1.1.3

    SRLabel: NULL                 Interface: GigabitEthernet0/0/1

   BkSRLabel: NULL              BkInterface: GigabitEthernet0/0/2

   Tunnel ID: Invalid           IPInterface: GigabitEthernet0/0/1

 BkTunnel ID: Invalid         BKIPInterface: N/A

     InLabel: NULL           ColorInterface: N/A

    SIDIndex: NULL         BKColorInterface: N/A

    FtnIndex: 0x0           TunnelInterface: N/A

TrafficIndex: N/A         BKTunnelInterface: N/A

   Connector: N/A                    PathID: 0x0

  SRTunnelID: Invalid

    SID Type: N/A                       NID: Invalid

    FlushNID: Invalid                 BkNID: Invalid

  BkFlushNID: Invalid             StatFlags: 0x0

         Exp: N/A

   VpnPeerId: N/A                      Dscp: N/A

         SID: N/A                OrigLinkID: 0x0

       BkSID: N/A                RealLinkID: 0x0

CommBlockLen: 0

3.8  提高IPv6 BGP网络的可靠性典型配置举例‌

3.8.1  IPv6 BGP与BFD联动配置

1. 组网需求

·     在AS 200内使用OSPFv3作为IGP协议,实现AS内的互通。

·     Router A与Router C之间建立两条IBGP连接。当Router A与Router C之间的两条路径均连通时,Router C与1200::0/64之间的报文使用Router A<->Router B<->Router C这条路径转发;当Router A<->Router B<->Router C这条路径发生故障时,BFD能够快速检测并通告IPv6 BGP协议,使得Router A<->Router D<->Router C这条路径能够迅速生效。

2. 组网图

图3-5 IPv6 BGP与BFD联动配置组网图

3. 配置步骤

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

(2)     配置OSPFv3,保证Router A和Router C之间路由可达(略)

(3)     Router A上的IPv6 BGP配置

# 配置Router A和Router C建立两条IBGP连接。

<RouterA> system-view

[RouterA] bgp 200

[RouterA-bgp-default] router-id 1.1.1.1

[RouterA-bgp-default] peer 2002::2 as-number 200

[RouterA-bgp-default] peer 3002::2 as-number 200

[RouterA-bgp-default] address-family ipv6

[RouterA-bgp-default-ipv6] peer 2002::2 enable

[RouterA-bgp-default-ipv6] peer 3002::2 enable

[RouterA-bgp-default-ipv6] quit

# 配置当Router A与Router C之间的两条路径均连通时,Router C与1200::0/64之间的报文使用Router A<->Router B<->Router C这条路径转发。(在Router A上对发布给对等体2002::2的1200::0/64路由配置较高的MED属性值)

¡     定义编号为2000的IPv6基本ACL,允许路由1200::0/64通过。

[RouterA] acl ipv6 basic 2000

[RouterA-acl-ipv6-basic-2000] rule permit source 1200:: 64

[RouterA-acl-ipv6-basic-2000] quit

¡     定义两个Route-policy,一个名为apply_med_50,为路由1200::0/64设置MED属性值为50;另一个名为apply_med_100,为路由1200::0/64设置MED属性值为100。

[RouterA] route-policy apply_med_50 permit node 10

[RouterA-route-policy-apply_med_50-10] if-match ipv6 address acl 2000

[RouterA-route-policy-apply_med_50-10] apply cost 50

[RouterA-route-policy-apply_med_50-10] quit

[RouterA] route-policy apply_med_100 permit node 10

[RouterA-route-policy-apply_med_100-10] if-match ipv6 address acl 2000

[RouterA-route-policy-apply_med_100-10] apply cost 100

[RouterA-route-policy-apply_med_100-10] quit

¡     对发布给对等体3002::2的路由应用名为apply_med_50的Route-policy,对发布给对等体2002::2的路由应用名为apply_med_100的Route-policy。

[RouterA] bgp 200

[RouterA-bgp-default] address-family ipv6 unicast

[RouterA-bgp-default-ipv6] peer 3002::2 route-policy apply_med_50 export

[RouterA-bgp-default-ipv6] peer 2002::2 route-policy apply_med_100 export

[RouterA-bgp-default-ipv6] quit

# 配置通过BFD检测Router A<->Router B<->Router C这条路径,当该路径出现故障时,BFD能够快速检测到并通告IPv6 BGP协议,使得Router A<->Router D<->Router C这条路径能够迅速生效。

[RouterA-bgp-default] peer 3002::2 bfd

[RouterA-bgp-default] quit

(4)     Router C上的IPv6 BGP配置。

# 配置Router A和Router C建立两条IBGP连接。

<RouterC> system-view

[RouterC] bgp 200

[RouterC-bgp-default] router-id 3.3.3.3

[RouterC-bgp-default] peer 3001::1 as-number 200

[RouterC-bgp-default] peer 2001::1 as-number 200

[RouterC-bgp-default] address-family ipv6

[RouterC-bgp-default-ipv6] peer 3001::1 enable

[RouterC-bgp-default-ipv6] peer 2001::1 enable

[RouterC-bgp-default-ipv6] quit

# 配置通过BFD检测Router A<->Router B<->Router C这条路径,当该路径出现故障时,BFD能够快速检测到,并通告IPv6 BGP协议,使得Router A<->Router D<->Router C这条路径能够迅速生效。

[RouterC-bgp-default] peer 3001::1 bfd

[RouterC-bgp-default] quit

[RouterC] quit

4. 验证配置

下面以Router C为例,Router A与此类似,不再赘述。

# 显示Router C的BFD信息。可以看出,Router A和Router C之间已经建立了BFD会话,而且BFD协议运行正常。

<RouterC> display bfd session verbose

 Total Session Num: 1     Up Session Num: 1     Init Mode: Active

 

 IPv6 Session Working in control packet mode:

       Local Discr: 513                  Remote Discr: 513

         Source IP: 3002::2

    Destination IP: 3001::1

     Session State: Up                      Interface: N/A

      Min Tx Inter: 500ms                Act Tx Inter: 500ms

      Min Rx Inter: 500ms                Detect Inter: 2500ms

          Rx Count: 13                       Tx Count: 14

      Connect Type: Indirect           Running Up for: 00:00:05

         Hold Time: 2243ms                  Auth mode: None

       Detect Mode: Async                        Slot: 0

          Protocol: BGP4+

           Version:1

         Diag Info: No Diagnostic

     Hardware mode: Disable

# 在Router C上查看BGP邻居信息。可以看出,Router A和Router C之间建立两条BGP连接,且均处于Established状态。

<RouterC> display bgp peer ipv6

 

 BGP local router ID: 3.3.3.3

 Local AS number: 200

 Total number of peers: 2                  Peers in established state: 2

 

  * - Dynamically created peer

  Peer                    AS  MsgRcvd  MsgSent OutQ PrefRcv Up/Down  State

 

  2001::1                200        8        8    0       0 00:04:45 Established

  3001::1                200        5        4    0       0 00:01:53 Established

# 在Router C上查看1200::0/64的路由信息,可以看出Router C通过Router A<->Router B<->Router C这条路径与1200::0/64网段通信。

<RouterC> display ipv6 routing-table 1200::0 64 verbose

 

Summary count : 1

 

Destination: 1200::/64

   Protocol: BGP4+           Process ID: 0

  SubProtID: 0x1                    Age: 00h01m07s

       Cost: 50              Preference: 255

      IpPre: N/A             QosLocalID: N/A

        Tag: 0                    State: Active Adv

  OrigTblID: 0x1                OrigVrf: default-vrf

    TableID: 0xa                 OrigAs: 0

      NibID: 0x25000001          LastAs: 0

     AttrID: 0x1               Neighbor: 3001::1

      Flags: 0x10060        OrigNextHop: 3001::1

      Label: NULL           RealNextHop: FE80::20C:29FF:FE4A:3873

    BkLabel: NULL             BkNextHop: N/A

    SRLabel: NULL                 Interface: GigabitEthernet0/0/1

   BkSRLabel: NULL              BkInterface: N/A

   Tunnel ID: Invalid           IPInterface: GigabitEthernet0/0/1

 BkTunnel ID: Invalid         BKIPInterface: N/A

     InLabel: NULL           ColorInterface: N/A

    SIDIndex: NULL         BKColorInterface: N/A

    FtnIndex: 0x0           TunnelInterface: N/A

TrafficIndex: N/A         BKTunnelInterface: N/A

   Connector: N/A                    PathID: 0x0

  SRTunnelID: Invalid

    SID Type: N/A                       NID: Invalid

    FlushNID: Invalid                 BkNID: Invalid

  BkFlushNID: Invalid             StatFlags: 0x0

         Exp: N/A

   VpnPeerId: N/A                      Dscp: N/A

         SID: N/A                OrigLinkID: 0x0

       BkSID: N/A                RealLinkID: 0x0

CommBlockLen: 0

# Router A<->Router B<->Router C这条路径发生故障后,在Router C上查看1200::0/64的路由信息,可以看出Router C通过Router A<->Router D<->Router C这条路径转发报文。

<RouterC> display ipv6 routing-table 1200::0 64 verbose

 

Summary count : 1

 

Destination: 1200::/64

   Protocol: BGP4+           Process ID: 0

  SubProtID: 0x1                    Age: 00h00m57s

       Cost: 100             Preference: 255

      IpPre: N/A             QosLocalID: N/A

        Tag: 0                    State: Active Adv

  OrigTblID: 0x1                OrigVrf: default-vrf

    TableID: 0xa                 OrigAs: 0

      NibID: 0x25000000          LastAs: 0

     AttrID: 0x0               Neighbor: 2001::1

      Flags: 0x10060        OrigNextHop: 2001::1

      Label: NULL           RealNextHop: FE80::20C:29FF:FE40:715

    BkLabel: NULL             BkNextHop: N/A

    SRLabel: NULL                 Interface: GigabitEthernet0/0/2

   BkSRLabel: NULL              BkInterface: N/A

   Tunnel ID: Invalid           IPInterface: GigabitEthernet0/0/2

 BkTunnel ID: Invalid         BKIPInterface: N/A

     InLabel: NULL           ColorInterface: N/A

    SIDIndex: NULL         BKColorInterface: N/A

    FtnIndex: 0x0           TunnelInterface: N/A

TrafficIndex: N/A         BKTunnelInterface: N/A

   Connector: N/A                    PathID: 0x0

  SRTunnelID: Invalid

    SID Type: N/A                       NID: Invalid

    FlushNID: Invalid                 BkNID: Invalid

  BkFlushNID: Invalid             StatFlags: 0x0

         Exp: N/A

   VpnPeerId: N/A                      Dscp: N/A

         SID: N/A                OrigLinkID: 0x0

       BkSID: N/A                RealLinkID: 0x0

CommBlockLen: 0

3.8.2  配置BGP快速重路由

1. 组网需求

图3-6所示,Router A、Router B、Router C和Router D通过BGP协议实现网络互连。要求链路B正常时,Router A和Router D之间的流量通过链路B转发;链路B出现故障时,流量可以快速切换到链路A上。

2. 组网图

图3-6 配置BGP快速重路由

3. 配置步骤

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

(2)     在AS 200内配置OSPFv3,发布接口地址所在网段的路由,确保Router B、Router C和Router D之间IPv6路由可达(略)

(3)     配置BGP连接

# 配置Router A分别与Router B和Router C建立EBGP会话,并配置通过BGP发布路由1::/64。

<RouterA> system-view

[RouterA] bgp 100

[RouterA] router-id 1.1.1.1

[RouterA-bgp-default] peer 3001::2 as-number 200

[RouterA-bgp-default] peer 2001::2 as-number 200

[RouterA-bgp-default] address-family ipv6 unicast

[RouterA-bgp-default-ipv6] peer 3001::2 enable

[RouterA-bgp-default-ipv6] peer 2001::2 enable

[RouterA-bgp-default-ipv6] network 1:: 64

[RouterA-bgp-default-ipv6] quit

[RouterA-bgp-default] quit

# 配置Router B与Router A建立EBGP会话,与Router D建立IBGP会话。

<RouterB> system-view

[RouterB] bgp 200

[RouterB] router-id 2.2.2.2

[RouterB-bgp-default] peer 3001::1 as-number 100

[RouterB-bgp-default] peer 3002::2 as-number 200

[RouterB-bgp-default] address-family ipv6 unicast

[RouterB-bgp-default-ipv6] peer 3001::1 enable

[RouterB-bgp-default-ipv6] peer 3002::2 enable

[RouterB-bgp-default-ipv6] peer 3002::2 next-hop-local

[RouterB-bgp-default-ipv6] quit

[RouterB-bgp-default] quit

# 配置Router C与Router A建立EBGP会话,与Router D建立IBGP会话。

<RouterC> system-view

[RouterC] bgp 200

[RouterC] router-id 3.3.3.3

[RouterC-bgp-default] peer 2001::1 as-number 100

[RouterC-bgp-default] peer 2002::2 as-number 200

[RouterC-bgp-default] address-family ipv6 unicast

[RouterC-bgp-default-ipv6] peer 2001::1 enable

[RouterC-bgp-default-ipv6] peer 2002::2 enable

[RouterC-bgp-default-ipv6] peer 2002::2 next-hop-local

[RouterC-bgp-default-ipv6] quit

[RouterC-bgp-default] quit

# 配置Router D分别与Router B和Router C建立IBGP会话,并配置BGP发布路由4::/64。

<RouterD> system-view

[RouterD] bgp 200

[RouterD-bgp-default] peer 3002::1 as-number 200

[RouterD-bgp-default] peer 2002::1 as-number 200

[RouterD-bgp-default] address-family ipv6 unicast

[RouterD-bgp-default-ipv6] peer 3002::1 enable

[RouterD-bgp-default-ipv6] peer 2002::1 enable

[RouterD-bgp-default-ipv6] network 4:: 64

[RouterD-bgp-default-ipv6] quit

[RouterD-bgp-default] quit

(4)     修改路由的首选值,使得Router A和Router D之间的流量优先通过链路B转发

# 在Router A上配置从Router B接收到的路由的首选值为100。

[RouterA-bgp-default-ipv6] peer 3001::2 preferred-value 100

[RouterA-bgp-default-ipv6] quit

[RouterA-bgp-default] quit

# 在Router D上配置从Router B接收到的路由的首选值为100。

[RouterD-bgp-default-ipv6] peer 3002::1 preferred-value 100

[RouterD-bgp-default-ipv6] quit

[RouterD-bgp-default] quit

(5)     配置BGP快速重路由

# 配置Router A:创建路由策略frr,为路由4::/64指定备份下一跳的地址为2001::2(对等体Router C的地址);在BGP IPv6单播地址族下应用该路由策略。

<RouterA> system-view

[RouterA] ipv6 prefix-list abc index 10 permit 4:: 64

[RouterA] route-policy frr permit node 10

[RouterA-route-policy] if-match ipv6 address prefix-list abc

[RouterA-route-policy] apply ipv6 fast-reroute backup-nexthop 2001::2

[RouterA-route-policy] quit

[RouterA] bgp 100

[RouterA-bgp-default] address-family ipv6 unicast

[RouterA-bgp-default-ipv6] fast-reroute route-policy frr

[RouterA-bgp-default-ipv6] quit

[RouterA-bgp-default] quit

# 配置Router D:创建路由策略frr,为路由1::/64指定备份下一跳的地址为2002::1(对等体Router C的地址);在BGP IPv6单播地址族下应用该路由策略。

<RouterD> system-view

[RouterD] ipv6 prefix-list abc index 10 permit 1:: 64

[RouterD] route-policy frr permit node 10

[RouterD-route-policy] if-match ipv6 address prefix-list abc

[RouterD-route-policy] apply ipv6 fast-reroute backup-nexthop 2002::1

[RouterD-route-policy] quit

[RouterD] bgp 200

[RouterD-bgp-default] address-family ipv6 unicast

[RouterD-bgp-default-ipv6] fast-reroute route-policy frr

[RouterD-bgp-default-ipv6] quit

[RouterD-bgp-default] quit

4. 验证配置

# 在Router A上查看4::/64路由,可以看到备份下一跳信息。

[RouterA] display ipv6 routing-table 4:: 64 verbose

 

Summary count : 1

 

Destination: 4::/64

   Protocol: BGP4+           Process ID: 0

  SubProtID: 0x2                    Age: 00h00m58s

       Cost: 0               Preference: 255

      IpPre: N/A             QosLocalID: N/A

        Tag: 0                    State: Active Adv

  OrigTblID: 0x0                OrigVrf: default-vrf

    TableID: 0xa                 OrigAs: 200

      NibID: 0x25000003          LastAs: 200

     AttrID: 0x3               Neighbor: 3001::2

      Flags: 0x10060        OrigNextHop: 3001::2

      Label: NULL           RealNextHop: 3001::2

    BkLabel: NULL             BkNextHop: 2001::2

    SRLabel: NULL                 Interface: GigabitEthernet0/0/1

   BkSRLabel: NULL              BkInterface: GigabitEthernet0/0/2

   Tunnel ID: Invalid           IPInterface: GigabitEthernet0/0/1

 BkTunnel ID: Invalid         BKIPInterface: N/A

     InLabel: NULL           ColorInterface: N/A

    SIDIndex: NULL         BKColorInterface: N/A

    FtnIndex: 0x0           TunnelInterface: N/A

TrafficIndex: N/A         BKTunnelInterface: N/A

   Connector: N/A                    PathID: 0x0

  SRTunnelID: Invalid

    SID Type: N/A                       NID: Invalid

    FlushNID: Invalid                 BkNID: Invalid

  BkFlushNID: Invalid             StatFlags: 0x0

         Exp: N/A

   VpnPeerId: N/A                      Dscp: N/A

         SID: N/A                OrigLinkID: 0x0

       BkSID: N/A                RealLinkID: 0x0

CommBlockLen: 0

# 在Router D上查看1::/64路由,可以看到备份下一跳信息。

[RouterD] display ipv6 routing-table 1:: 64 verbose

 

Summary count : 1

 

Destination: 1::/64

   Protocol: BGP4+           Process ID: 0

  SubProtID: 0x1                    Age: 00h03m24s

       Cost: 0               Preference: 255

      IpPre: N/A             QosLocalID: N/A

        Tag: 0                    State: Active Adv

  OrigTblID: 0x0                OrigVrf: default-vrf

    TableID: 0xa                 OrigAs: 100

      NibID: 0x25000003          LastAs: 100

     AttrID: 0x4               Neighbor: 3002::1

      Flags: 0x10060        OrigNextHop: 3002::1

      Label: NULL           RealNextHop: 3002::1

    BkLabel: NULL             BkNextHop: 2002::1

    SRLabel: NULL                 Interface: GigabitEthernet0/0/1

   BkSRLabel: NULL              BkInterface: GigabitEthernet0/0/2

   Tunnel ID: Invalid           IPInterface: GigabitEthernet0/0/1

 BkTunnel ID: Invalid         BKIPInterface: N/A

     InLabel: NULL           ColorInterface: N/A

    SIDIndex: NULL         BKColorInterface: N/A

    FtnIndex: 0x0           TunnelInterface: N/A

TrafficIndex: N/A         BKTunnelInterface: N/A

   Connector: N/A                    PathID: 0x0

  SRTunnelID: Invalid

    SID Type: N/A                       NID: Invalid

    FlushNID: Invalid                 BkNID: Invalid

  BkFlushNID: Invalid             StatFlags: 0x0

         Exp: N/A

   VpnPeerId: N/A                      Dscp: N/A

         SID: N/A                OrigLinkID: 0x0

       BkSID: N/A                RealLinkID: 0x0

CommBlockLen: 0

4 BGP扩展功能

4.1  BGP扩展功能配置任务简介

BGP扩展功能配置任务如下:

·     配置BGP BMP

·     配置BGP LS

¡     配置BGP LS基本功能

¡     (可选)配置BGP LS路由反射功能

¡     (可选)配置BGP LS信息的AS号和Router ID

¡     (可选)配置不修改BGP LS路由的下一跳属性

¡     (可选)配置BGP LS路由延迟优选

¡     (可选)提高邻居路由参与优选时的优先级

¡     (可选)手工软复位LS地址族下的BGP会话

·     配置BGP Dedicated

·     配置6PE

¡     配置6PE基本功能

¡     (可选)配置6PE Add-Path相关功能

¡     (可选)控制6PE的路径选择

¡     (可选)控制6PE路由的发布与接收

¡     (可选)调整和优化6PE

¡     (可选)配置6PE路由共享标签资源

¡     (可选)配置6PE路由反射功能

¡     (可选)复位BGP 6PE连接

¡      

4.2  配置BGP BMP

4.2.1  功能简介

BGP协议只能记录BGP会话和BGP路由的当前状态,无法直接收集到会话状态变化和路由更新的过程,通过配置BMP(BGP Monitoring Protocol,BGP监控协议)特性,监控服务器可以对网络中设备上BGP会话的运行状态进行实时监控,包括对等体关系的建立与解除、路由信息等,以方便网络管理员更加细致地了解BGP运行状况。

4.2.2  BMP的特点

·     BMP使用TCP作为其传输层协议,可靠性高。

·     BMP不是路由协议,只是BGP路由协议的一个扩展功能,工作机制简单,目的明确(收集特定的信息)。

·     BMP所有的配置均在作为客户端的设备上完成,部署难度低。

·     BMP的协议报文仅需由客户端向监控端单向发送,客户端不需要从监控端获取任何协议报文,对现有网络影响小。

4.2.3  BMP中的角色

BMP中的角色分为三种:

·     客户端:配置BMP功能的设备,通过在客户端上配置监控服务器的地址和监听端口号来建立与监控服务器的TCP连接。一个客户端可以连接多个监控服务器。

·     监控端:监控服务器。

·     监控对等体:与客户端建立BGP会话的对等体。

图4-1所示,Device A、Device B和Device C两两之间建立BGP会话,Device B上配置BMP功能对其BGP运行状态以及路由变化进行监控。在此组网中,服务器设备为监控端,Device B为客户端,与Device B建立BGP会话的Device A和Device C为监控对等体。

图4-1 BMP中的角色

 

4.2.4  BMP消息类型

BMP定义了以下消息类型:

·     Initiation消息:TCP连接(BMP会话)建立以后发送的第一个消息,用于向监控服务器告知客户端设备的软件版本、制造商等信息。

·     Termination消息:用于告知监控服务器TCP连接(BMP会话)断开的原因,客户端发出Termination消息后不再通过此连接向监控服务器发送任何消息,并主动断开此TCP连接(BMP会话)。

·     Peer Up Notification消息:用于向监控服务器发送客户端与监控对等体间的BGP会话信息,包含每个BGP会话的Open报文中交换的信息和TCP连接信息。BMP的TCP连接建立后,BMP会为客户端与监控对等体间每一个处于Established状态的BGP会话发送一次Peer Up Notification消息。

·     Peer Down Notification消息:当客户端与监控对等体间的某个BGP会话由Established状态变为其他状态时,使用Peer Down Notification消息告知监控服务器BGP会话断开以及断开的原因。

·     Stats Reports消息:用于向监控服务器发送客户端运行BGP协议时的统计信息,如由于AS_PATH属性重复而被丢弃的路由数量、从领居收到的路由数量、收到的重复Up消息的数量等。

·     Route Monitoring消息:用于向监控服务器发送客户端与监控对等体交互的BGP路由信息,包括客户端上初始的BGP路由信息以及后续更新或撤销的路由信息。

4.2.5  BMP的工作机制

监控端与客户端之间的TCP连接(BMP会话)成功建立后:

(1)     客户端首先向监控端发送Initiation消息,通告本机信息。

(2)     客户端向监控端发送Peer Up Notification消息和Route Monitoring消息,通告初始监控对等体状态与路由信息。

(3)     经过步骤(1)和(2)完成初始化后开始监控,客户端根据BGP会话状态的变化和路由的更新按需持续地向监控端发送Peer Up Notification消息、Peer Down Notification消息、Route Monitoring消息和Stats Reports消息。

(4)     当监控需要结束时,客户端向监控端发送Termination消息,并主动断开TCP连接(BMP会话)。

4.2.6  BMP配置任务简介

部署BMP功能时,需要在作为监控客户端的设备上完成以下配置:

(1)     配置客户端与监控服务器建立TCP连接

(2)     配置监控对等体

(3)     配置向监控服务器发送路由信息

(4)     配置向监控服务器发送消息时携带模式标记

(5)     配置向监控服务器发送统计信息

4.2.7  配置客户端与监控服务器建立TCP连接

(1)     进入系统视图。

system-view

(2)     创建BGP监控服务器,并进入BMP Server视图。

bmp server server-number

(3)     配置监控服务器的IP地址和端口号。

server address { ipv4-address | ipv6-address } port port-number

缺省情况下,未配置监控服务器的连接地址和端口号。

(4)     (可选)配置监控服务器所属的VPN实例。

server vpn-instance vpn-instance-name

缺省情况下,未指定监控服务其所属的VPN实例,监控服务器位于公网中。

(5)     (可选)配置本地设备与监控服务器之间TCP连接的源接口。

server connect-interface interface-type interface-number

缺省情况下,BGP根据监控服务器的地址类型,选择到达监控服务器的最佳路由出接口的主IPv4地址或IPv6地址建立TCP连接。

在同一个BMP Server视图下,当源接口所关联的VPN与server vpn-instance命令指定的VPN不一致时,本命令不生效。

(6)     (可选)配置本地设备与监控服务器之间TCP连接的源地址。

server source-address { ipv4-address | ipv6-address }

缺省情况下,BGP根据监控服务器的地址类型,选择到达监控服务器的最佳路由出接口的主IPv4地址或IPv6地址建立TCP连接。

在同一个BMP Server视图下,同时配置本命令和server connect-interface命令时,以本命令的配置为准。

(7)     (可选)配置本地设备与监控服务器建立TCP连接时使用的认证方式和认证密钥。

server password { keychain keychain-name | md5 { cipher | simple } string }

缺省情况下,本地设备与监控服务器建立TCP连接时不进行认证。

4.2.8  配置监控对等体

1. 功能简介

可以通过如下三种方式指定监控对等体:

·     通过peer bmp server命令指定对特定对等体/对等体组进行监控。

·     通过bmp server monitor current-instance命令指定对BGP实例下所有对等体进行监控。

·     通过bmp server monitor all-vpn-instance命令指定对所有BGP-VPN实例下的全部对等体进行监控。

以上三种方式可以同时使用,BGP为对等体/对等体组选择监控服务器的优先级顺序由高低到依次为:

(1)     BGP实例视图/BGP-VPN实例视图下peer bmp server命令配置的BMP监控服务器;

(2)     BGP实例视图/BGP-VPN实例视图下bmp server monitor current-instance命令配置的BMP监控服务器;

(3)     BGP实例视图bmp server monitor all-vpn-instance命令配置的BMP监控服务器(仅对BGP-VPN实例中的对等体生效)。

2. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图或BGP-VPN 实例视图。

¡     进入BGP实例视图。

bgp as-number [ instance instance-name ]

¡     请依次执行以下命令进入BGP-VPN 实例视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

(3)     配置BMP Server监控对等体/对等体组。请至少选择其中一项进行配置。

¡     配置BMP Server监控指定对等体/对等体组。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] | link-local-address interface interface-type interface-number } bmp server server-number-list

interface-peer interface-type interface-number bmp server server-number-list

缺省情况下,未配置BMP Server监控对等体/对等体组。

¡     允许指定BMP Server监控当前实例中所有BGP对等体的运行状态。

bmp server server-number monitor current-instance [ route-mode { adj-rib-in { pre-policy | post-policy | both } | adj-rib-out { pre-policy | post-policy | both } } * ]

缺省情况下,禁止BMP Server监控当前实例中任何BGP对等体的运行状态。

¡     允许指定BMP Server监控所有BGP-VPN实例中所有BGP对等体的运行状态。

bmp server server-number monitor all-vpn-instance [ route-mode { adj-rib-in { pre-policy | post-policy | both } | adj-rib-out { pre-policy | post-policy | both } } * ]

缺省情况下,禁止BMP Server监控所有BGP-VPN实例中所有BGP对等体的运行状态。

BGP-VPN实例下不支持本命令。

4.2.9  配置向监控服务器发送路由信息

1. 功能简介

向监控服务器发送路由信息时,可以通过多种方式指定发送给监控服务器的路由类型。对于本地设备与每个监控对等体/对等体组交换的路由信息,BGP选择发送路由类型的优先级顺序由高低到依次为:

(1)     BGP实例视图/BGP-VPN实例视图下peer route-mode命令配置的发送路由类型;

(2)     BGP实例视图/BGP-VPN实例视图下bmp server monitor current-instance route-mode命令配置的发送路由类型;

(3)     BGP实例视图下bmp server monitor all-vpn-instance route-mode命令配置的发送路由类型(仅对BGP-VPN实例中的对等体生效);

(4)     BMP Server视图下route-mode adj-rib-in/route-mode adj-rib-out命令配置的发送路由类型。

对于本地设备的BGP路由信息,可以通过route-mode loc-rib命令向监控服务器发送BGP优选后的最优路由信息。

2. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入BMP Server视图。

bmp server server-number

(3)     全局配置发送给监控服务器的路由信息,请至少选择其中一项进行配置。

¡     配置将本地设备发送给所有监控对等体/对等体组的路由信息发送给监控服务器。

route-mode adj-rib-out [ pre-policy | post-policy | both ]

缺省情况下,不会将本地设备发送给所有监控对等体/对等体组的路由信息发送给监控服务器。

¡     配置将本地设备从所有监控对等体/对等体组接收的路由信息发送给监控服务器

route-mode adj-rib-in [ pre-policy | post-policy | both ]

缺省情况下,本地设备将从所有监控对等体/对等体组接收的路由策略过滤前的路由信息发送给监控服务器。

¡     配置向监控服务器发送BGP优选后的路由信息。

route-mode loc-rib [ vpn-instance-all | vpn-insatance vpn-instance-name ] { ipv4 [ flowspec | unicast ] | ipv6 [ flowspec | unicast ] }

缺省情况下,不向监控服务器发送BGP优选后的最优路由信息。

本功能配置后会先向监控服务器发送一次BGP所有的路由,之后路由更新时,仅向监控服务器发送BGP优选后的最优更新路由信息。

(4)     退回系统视图。

quit

(5)     进入BGP实例视图或BGP-VPN 实例视图。

¡     进入BGP实例视图。

bgp as-number [ instance instance-name ]

¡     请依次执行以下命令进入BGP-VPN 实例视图。

bgp as-number [ instance instance-name ]

ip vpn-instance vpn-instance-name

(6)     配置将本地设备与指定监控对等体/对等体组之间交换的路由信息发送给监控服务器。请至少选择其中一项进行配置。

¡     配置将本地设备与指定监控对等体/对等体组之间交换的路由信息发送给监控服务器。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } route-mode { adj-rib-in { pre-policy | post-policy | both } | adj-rib-out { pre-policy | post-policy | both } } *

¡     配置将当前实例下本地设备与监控对等体/对等体组之间交换的路由信息发送给监控服务器。

bmp server server-number monitor current-instance route-mode { adj-rib-in { pre-policy | post-policy | both } | adj-rib-out { pre-policy | post-policy | both } } *

¡     配置将所有BGP-VPN实例下本地设备与所有监控对等体/对等体组之间交换的路由信息发送给监控服务器。

bmp server server-number monitor all-vpn-instance route-mode { adj-rib-in { pre-policy | post-policy | both } | adj-rib-out { pre-policy | post-policy | both } } *

BGP-VPN实例下不支持本命令。

缺省情况下,未配置将监控对等体/对等体组之间交换的路由信息发送给监控服务器,此时是否发送路由信息受BMP Server视图下的route-mode adj-rib-inroute-mode adj-rib-out命令控制。

4.2.10  配置向监控服务器发送消息时携带模式标记

1. 功能简介

配置本功能后,BMP客户端向监控服务器发送Peer Up Notification/Peer Down Notification消息时将携带Adj-RIB-In/Adj-RIB-Out标记以及pre-policy/post-policy标记。这些模式标记的含义为:

·     Adj-RIB-In:表示客户端将从监控对等体接收的路由信息发送给监控服务器。

·     Adj-RIB-Out:表示客户端将发往监控对等体的路由信息发送给监控服务器。

·     pre-policy:表示客户端将路由策略过滤前的路由信息发送给监控服务器。

·     post-policy:表示客户端将路由策略过滤后的路由信息发送给监控服务器。

配置本功能后,缺省情况下,BMP客户端向监控服务器发送从监控对等体接收的路由策略过滤前的路由信息。此时,Peer Up Notification/Peer Up Notification消息携带的标记为Adj-RIB-In和pre-policy。此时:

·     如果通过route-mode adj-rib-inroute-mode adj-rib-out或者peer route-mode命令新增了发布路由信息给监控服务器的模式,则会触发BMP客户端向监控服务器发送携带新的模式标记的Peer Up Notification消息。

·     如果通过route-mode adj-rib-inroute-mode adj-rib-out或者peer route-mode命令删除了发布路由信息给监控服务器的模式,则会触发BMP客户端向监控服务器发送携带新的模式标记的Peer Down Notification消息。

例如,执行了route-mode adj-rib-out pre-policy命令后,再执行route-mode adj-rib-out post-policy命令,此时设备发送路由策略过滤后的路由信息给监控服务器。上述过程视为删除了pre-policy模式,并新增了post-policy模式,既会触发BMP客户端向监控服务器发送携带新的模式标记的Peer Up Notification消息,又会触发发送携带新的模式标记的Peer Down Notification消息。

2. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入BMP Server视图。

bmp server server-number

(3)     配置BMP客户端向监控服务器发送消息时携带模式标记,请至少选择一项进行配置。

¡     配置BMP客户端向监控服务器发送Peer Up Notification消息时携带模式标记。

pu-monitor-mode enable

¡     配置BMP客户端向监控服务器发送Peer Down Notification消息时携带模式标记。

pd-monitor-mode enable

缺省情况下,BMP客户端向监控服务器发送Peer Up Notification/Peer Up Notification消息时不携带模式标记。

4.2.11  配置向监控服务器发送统计信息

1. 功能简介

BMP对BGP运行过程中发生的各类事件进行统计,统计信息通过Stats Reports消息向监控服务器发送,本功能用于配置向监控服务器发送Stats Reports消息的周期。

2. 配置步骤

(1)     进入系统视图。

system-view

(2)     创建BGP监控服务器,并进入BMP Server视图。

bmp server server-number

(3)     配置发送统计信息的周期。

statistics-interval value

缺省情况下,不向监控服务器发送统计信息。

4.2.12  BGP BMP显示和维护

说明

非缺省vSystem不支持以下显示和维护命令。

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

·     显示BGP监控服务器的信息。

display bgp [ instance instance-name ] bmp server server-number

·     显示指定BGP实例下指定BMP Server监控的BGP对等体信息。

display bgp [ instance instance-name ] bmp server server-number monitor-peer all

display bgp [ instance instance-name ] bmp server server-number monitor-peer [ vpn-instance vpn-instance-name ] ipv4 { ipv4-address | ipv6-address }

display bgp [ instance instance-name ] bmp server server-number monitor-peer [ vpn-instance vpn-instance-name ] ipv6 { ipv4-address | ipv6-address }

display bgp [ instance instance-name ] bmp server server-number monitor-peer all

display bgp [ instance instance-name ] server server-number monitor-peer vpnv4 { ipv4-address | ipv6-address }

display bgp [ instance instance-name ] bmp server server-number monitor-peer vpn-instance vpn-instance-name vpnv4 ipv4-address

display bgp [ instance instance-name ] bmp server server-number monitor-peer all

display bgp [ instance instance-name ] bmp server server-number monitor-peer vpnv6 { ipv4-address | ipv6-address }

display bgp [ instance instance-name ] bmp server server-number monitor-peer all

display bgp [ instance instance-name ] bmp server server-number monitor-peer l2vpn evpn { ipv4-address | ipv6-address }

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

·     复位BMP server连接并清除相关统计信息。

reset bgp [ instance instance-name ] bmp server { server-number | all }

·     清除BMP监控服务器记录的报文统计信息。

reset bgp [ instance instance-name ] bmp server server-number statistics

4.3  配置BGP LS

4.3.1  功能简介

传统的BGP协议主要关注路由信息的传播,缺乏对网络拓扑和链路状况的详细了解。BGP LS(Link State,链路状态)是一种传播和收集网络拓扑和链路状态信息并向控制器上报的功能,使得网络管理员可以更好地了解和管理网络链路。IGP协议也可以将这些信息上报给控制器,但存在如下问题:

·     控制器也需要支持IGP协议及其算法,对控制器的计算要求较高。

·     IGP协议无法跨域收集信息。

·     不同的IGP协议会分别上报信息给控制器,控制器对上报信息的分析处理过程比较复杂。

支持BGP LS功能后,IGP协议收集的链路状态和拓扑信息可以均通过BGP协议上报至控制器,使得控制器不再对IGP能力有要求。并且,BGP协议支持跨域部署,通过BGP的传播,所有BGP LS设备都能够维护完整的链路状态数据库,上报给控制器的拓扑信息也将是完整的拓扑信息。

网络管理员通过BGP LS收集的链路状态和拓扑信息,可以实现以下功能:

·     拓扑维护和计算:BGP LS提供的网络拓扑和链路状态信息可以用于计算最短路径、构建网络地图等应用。

·     增强路径选择:网络管理员可以通过BGP LS提供的链路状态信息改善路径选择方式。

·     链路质量检测:网络管理员可以通过BGP LS提供的链路状态信息快速发现链路故障。

高级应用支持:BGP LS可以为流量工程、网络规划和资源分配等任务提供链路状态和网络拓扑信息支持。

4.3.2  BGP LS扩展

BGP协议通过一系列NLRI来携带网络拓扑和链路状态信息。这种新的NLRI被包含在MP_REACH_NLRI和MP_UNREACH_NLRI属性中,通过BGP Update消息在BGP LS对等体间进行交互。

4.3.3  配置BGP LS基本功能

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     指定LS对等体/对等体组的AS号。

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

缺省情况下,未指定LS对等体/对等体组的AS号。

(4)     创建BGP LS地址族,并进入LS地址族视图。

address-family link-state

(5)     使能本地路由器与对等体/对等体组交换LS信息的能力。

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

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

4.3.4  配置BGP LS路由反射功能

1. 功能简介

通常在同一个AS内,为了减少IBGP连接数,可以把几个BGP路由器划分为一个集群,将其中的一台路由器配置为路由反射器,其它路由器作为客户机,通过路由反射器在客户机之间反射路由。

2. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP LS地址族视图。

address-family link-state

(4)     配置BGP LS路由反射功能。

¡     配置本机作为路由反射器,对等体/对等体组作为路由反射器的客户机。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } reflect-client

缺省情况下,未配置路由反射器及其客户机。

¡     (可选)允许路由反射器在客户机之间反射路由。

reflect between-clients

缺省情况下,允许路由反射器在客户机之间反射路由。

配置本命令后,可减少同一AS内IBGP的连接数。

¡     (可选)配置路由反射器的集群ID。

reflector cluster-id { cluster-id | ipv4-address }

缺省情况下,每个路由反射器都使用自己的Router ID作为集群ID。

4.3.5  配置BGP LS信息的AS号和Router ID

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP LS地址族视图。

address-family link-state

(4)     配置BGP LS信息的AS号和Router ID。

domain-distinguisher as-number:router-id

缺省情况下,使用本BGP进程的AS号和Router ID。

在一个AS内,当两台设备把相同的LS信息发送到同一个EBGP邻居时,由于Router ID标识的不同,会被认为是不同的LS信息。通过配置本功能,可以解决这个问题。

4.3.6  配置不修改BGP LS路由的下一跳属性

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP LS地址族视图。

address-family link-state

(4)     配置向指定对等体/对等体组发布BGP LS路由时,不修改路由的下一跳属性。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } next-hop-invariable

缺省情况下,设备向EBGP对等体/对等体组发布路由时,将下一跳属性修改为自身的地址;向IBGP对等体/对等体组发布路由时,不修改下一跳属性。

4.3.7  配置BGP路由根据路由策略来过滤迭代到的下一跳路由

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP LS地址族视图。

address-family link-state

(4)     配置BGP路由根据路由策略来过滤迭代到的下一跳路由。

nexthop recursive-lookup route-policy route-policy-name

缺省情况下,BGP不根据路由策略来过滤迭代到的下一跳路由。

注意

为了防止当前地址族中的所有BGP路由迭代到的下一跳路由均无法通过路由策略的过滤,导致该地址族下的所有BGP路由均成为不可达路由,请在配置本命令前,确保指定的路由策略中创建的匹配条件能够匹配到用户期望迭代到的下一跳路由。

 

4.3.8  配置BGP LS路由延迟优选

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP LS地址族视图。

address-family link-state

(4)     配置BGP LS路由延迟优选,请至少选择其中的一项进行配置。

¡     配置对地址族下的所有BGP路由延迟优选。

route-select delay delay-value

¡     配置邻居状态由Down变为Up后,在指定的持续时间内仅对来自该邻居的BGP路由延迟优选。

route-select suppress on-peer-up milliseconds

缺省情况下,路由优选不延迟。

4.3.9  提高邻居路由参与优选时的优先级

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP LS地址族视图。

address-family link-state

(4)     为指定对等体/对等体组设置高优先级,路由选路时优选从该对等体/对等体组学习到的路由。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } high-priority

缺省情况下,BGP不为指定对等体/对等体组设置高优先级,选路规则不发生变化。

 

4.3.10  手工软复位LS地址族下的BGP会话

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图

bgp as-number [ instance instance-name ]

(3)     配置Route-refresh功能。请选择其中一项进行配置。

¡     使能本地路由器与指定对等体/对等体组的BGP路由刷新功能。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } capability-advertise route-refresh

¡     使能本地路由器与指定BGP对等体/对等体组的BGP路由刷新、多协议扩展和4字节AS号功能。

undo peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } capability-advertise conventional

缺省情况下,BGP路由刷新、多协议扩展和4字节AS号功能处于使能状态。

(4)     手工对LS地址族下的BGP会话进行软复位。

a.     退回系统视图。

quit

b.     退回用户视图。

quit

c.     手工对LS地址族下的BGP会话进行软复位。

refresh bgp [ instance instance-name ] { ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] | all | external | group group-name | internal } { export | import } link-state

4.3.11  BGP LS显示和维护

1. 显示BGP LS配置及运行状况

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

·     显示BGP LS对等体组的信息。

display bgp [ instance instance-name ] group link-state [ group-name group-name ]

·     显示BGP LS对等体或对等体组的信息。

display bgp [ instance instance-name ] peer link-state [ ipv4-address mask-length | ipv6-address prefix-length | { ipv4-address | ipv6-address | group-name group-name } log-info | [ ipv4-address | ipv6-address ] verbose ]

·     显示BGP LS路由信息。

display bgp [ instance instance-name ] link-state [ ls-prefix [ advertise-info | as-path | cluster-list ] | peer { ipv4-address | ipv6-address } { advertised | received } [ statistics ] | statistics ]

display bgp [ instance instance-name ] link-state [ color color-value end-point { ipv4 ipv4-address | ipv6 ipv6-address } ]

·     显示BGP LS地址族的打包组信息。

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

2. 复位BGP会话

请在用户视图下执行以下命令,复位LS地址族下的BGP会话:

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

4.4  配置BGP Dedicated

4.4.1  功能简介

图4-2所示,各设备之间建立EBGP会话,对等体之间允许交换BGP Dedicated路由,并在Device A和Device D上开启接口绑定功能。终端设备通过AP接入到Device A或Device D后,Device A或Device D上会根据DHCP、DHCPv6或ND Snooping表项生成一条对应的IP Source Guard绑定表项。设备通过BGP Dedicated功能将本机的IP Source Guard绑定表项同步给其他对等体,对等体收到后将其保存为远端表项。当终端迁移到本机接入时,根据保存的远端表项生成本机的IP Source Guard绑定表项,从而实现终端迁移后仍可通过安全过滤并快速上线。接口绑定功能与IP Source Guard绑定表项信息的详细介绍,请参见“安全配置指导”中的“IP Source Guard”。

图4-2 BGP Dedicated应用组网图

4.4.2  配置BGP Dedicated基本功能

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     指定对等体/对等体组的AS号。

peer { ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } as-number as-number

缺省情况下,未指定对等体/对等体组的AS号。

(4)     创建BGP Dedicated地址族,并进入Dedicated地址族视图。

address-family dedicated

(5)     使能本地路由器与对等体/对等体组交换Dedicated路由的能力。

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

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

(6)     (可选)配置向对等体/对等体组发布路由时,将下一跳属性修改为自身的地址。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } next-hop-local

缺省情况下,向EBGP对等体/对等体组发布路由时,将下一跳属性修改为自身的地址;向IBGP对等体/对等体组发布路由时,不修改下一跳属性。

(7)     (可选)配置对于从对等体/对等体组接收的路由,允许本地AS号在接收路由的AS_PATH属性中出现,并配置允许出现的次数。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } allow-as-loop [ number ]

缺省情况下,不允许本地AS号在接收路由的AS_PATH属性中出现。

4.4.3  配置BGP Dedicated路由反射功能

1. 功能简介

通常在同一个AS内,为了减少IBGP连接数,可以把几个BGP路由器划分为一个集群,将其中的一台路由器配置为路由反射器,其它路由器作为客户机,通过路由反射器在客户机之间反射路由。

2. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     进入BGP Dedicated地址族视图。

address-family dedicated

(4)     配置本机作为路由反射器,对等体/对等体组作为路由反射器的客户机。

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } reflect-client

缺省情况下,未配置路由反射器及其客户机。

(5)     (可选)允许路由反射器在客户机之间反射路由。

reflect between-clients

缺省情况下,允许路由反射器在客户机之间反射路由。

配置本命令后,可减少同一AS内IBGP的连接数。

(6)     (可选)配置路由反射器的集群ID。

reflector cluster-id { cluster-id | ipv4-address }

缺省情况下,每个路由反射器都使用自己的Router ID作为集群ID。

4.4.4  BGP Dedicated显示和维护

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

·     显示BGP Dedicated对等体组的信息。

display bgp [ instance instance-name ] group dedicated [ group-name group-name ]

·     显示BGP Dedicated对等体或对等体组的信息。

display bgp [ instance instance-name ] peer dedicated [ { ipv4-address mask-length | ipv6-address prefix-length } | { ipv4-address | ipv6-address | group-name group-name } log-info | [ ipv4-address | ipv6-address ] verbose ]

·     显示BGP Dedicated地址族的打包组信息。

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

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

·     软复位指定的BGP Dedicated会话。

refresh bgp [ instance instance-name ] { ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] | all | external | group group-name | internal } { export | import } dedicated

·     复位指定的BGP Dedicated会话。

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

4.5  配置6PE

4.5.1  功能简介

图4-3所示,6PE(IPv6 Provider Edge,IPv6供应商边缘)是一种过渡技术,它采用MPLS(Multiprotocol Label Switching,多协议标签交换)技术实现通过IPv4骨干网连接隔离的IPv6用户网络。当ISP希望在自己原有的IPv4/MPLS骨干网的基础上,为用户网络提供IPv6流量转发能力时,可以采用6PE技术方便地达到该目的。

图4-3 6PE组网图

 

6PE的主要思想是:

·     6PE设备从CE(Customer Edge,用户网络边缘)设备接收到用户网络的IPv6路由信息后,为该路由信息分配标签,通过MP-BGP会话将带有标签的IPv6路由信息发布给对端的6PE设备。对端6PE设备将接收到的IPv6路由信息扩散到本地连接的用户网络。从而,实现IPv6用户网络之间的路由信息发布。

·     为了隐藏IPv6报文、使得IPv4骨干网中的设备能够转发IPv6用户网络的报文,在IPv4骨干网络中需要建立公网隧道。公网隧道可以是GRE隧道、MPLS LSP、MPLS TE隧道等。

·     6PE设备转发IPv6报文时,先为IPv6报文封装IPv6路由信息对应的标签(内层标签),再为其封装公网隧道对应的标签(外层标签)。骨干网中的设备根据外层标签转发报文,意识不到该报文为IPv6报文。对端6PE设备接收到报文后,删除内层和外层标签,将原始的IPv6报文转发到本地连接的用户网络。

MPLS、MPLS TE、CE设备、P(Provider,服务提供商网络)设备的详细介绍,请参见“MPLS配置指导”。GRE的详细介绍,请参见“IP隧道及安全VPN配置指导”中的“GRE”。

为了实现IPv6路由信息的交互,CE和6PE之间可以配置IPv6静态路由、运行IPv6 IGP协议或IPv6 BGP协议。

4.5.2  配置准备

6PE组网环境中,需要进行如下配置:

·     在IPv4骨干网上建立公网隧道。具体配置请参见“IP隧道及安全VPN配置指导”中的“GRE”或“MPLS配置指导”。

·     在6PE设备上配置MPLS基本能力。具体配置请参见“MPLS配置指导”中的“MPLS基础”。

·     在6PE设备上配置BGP相关功能,以便通过BGP会话发布带有标签的IPv6路由信息。本文只介绍6PE设备上的BGP相关配置。

4.5.3  配置6PE基本功能

(1)     ‍进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

(3)     指定6PE对等体/对等体组的AS号。

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

缺省情况下,未指定6PE对等体/对等体组的AS号。

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

address-family ipv6 [ unicast ]

(5)     使能本地路由器与6PE对等体/对等体组交换IPv6单播路由信息的能力。

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

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

(6)     使能与6PE对等体/对等体组交换带标签IPv6路由的能力。

peer { group-name | ipv4-address [ mask-length ] } label-route-capability

缺省情况下,不具有与6PE对等体/对等体组交换带标签IPv6路由的能力。

4.5.4  配置6PE Add-Path相关功能

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

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

address-family ipv6 [ unicast ]

(4)     为6PE对等体/对等体组配置Add-Path功能。

peer { group-name | ipv4-address [ mask-length ] } additional-paths { receive | send } *

缺省情况下,没有为6PE对等体/对等体组配置Add-Path功能。

(5)     配置向6PE对等体/对等体组发送的Add-Path优选路由的最大条数。

peer { group-name | ipv4-address [ mask-length ] } advertise additional-paths best number

缺省情况下,不向6PE对等体/对等体组发送Add-Path优选路由。

4.5.5  控制6PE的路径选择

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

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

address-family ipv6 [ unicast ]

(4)     配置向6PE对等体/对等体组发布团体属性。

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

缺省情况下,不向6PE对等体/对等体组发布团体属性。

(5)     配置向6PE对等体/对等体组发布扩展团体属性。

peer { group-name | ipv4-address [ mask-length ] } advertise-ext-community

缺省情况下,不向6PE对等体/对等体组发布扩展团体属性。

(6)     配置向指定6PE对等体/对等体组发送BGP更新消息时只携带公有AS号,不携带私有AS号。

peer { group-name | ipv4-address [ mask-length ] } public-as-only

缺省情况下,向4PE对等体/对等体组发送BGP更新消息时,既可以携带公有AS号,又可以携带私有AS号。

(7)     为从指定6PE对等体/对等体组接收的路由分配首选值。

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

缺省情况下,从6PE对等体/对等体组接收的路由的首选值为0。

(8)     为指定6PE对等体/对等体组设置高优先级,路由选路时优选从该对等体/对等体组学习到的路由。

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

缺省情况下,BGP不为指定对等体/对等体组设置高优先级,选路规则不发生变化。

(9)     为6PE对等体/对等体组配置链路带宽属性。

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

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

(10)     为指定对等体/对等体组配置AIGP属性。

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

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

(11)     配置将AIGP属性值拷贝到MED属性中发送给对等体/对等体组。

peer { group-name | ipv4-address [ mask-length ] } aigp send med

缺省情况下,AIGP属性值不会拷贝到MED属性中发送给对等体/对等体组。

4.5.6  控制6PE路由的发布与接收

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

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

address-family ipv6 [ unicast ]

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

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

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

(5)     配置路由过滤策略。

¡     为6PE对等体/对等体组配置基于AS路径过滤列表的路由过滤策略。

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

缺省情况下,没有为6PE对等体/对等体组配置基于AS路径过滤列表的路由接收过滤策略。

¡     为6PE对等体/对等体组配置基于IPv6 ACL的过滤策略。

peer { group-name | ipv4-address [ mask-length ] } filter-policy { ipv6-acl-number | name ipv6-acl-name } { export | import }

缺省情况下,没有为6PE对等体/对等体组配置基于IPv6 ACL的过滤策略。

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

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

缺省情况下,没有为6PE对等体/对等体组配置基于IPv6前缀列表的路由过滤策略。

¡     为6PE对等体/对等体组设置基于路由策略的路由过滤策略。

peer { group-name | ipv4-address [ mask-length ] } route-policy route-policy-name { export | import }

缺省情况下,没有为6PE对等体/对等体组配置基于路由策略的路由过滤策略。

(6)     保存所有来自指定6PE对等体/对等体组的原始路由更新信息。

peer { group-name | ipv4-address [ mask-length ] } keep-all-routes

缺省情况下,不保存来自6PE对等体/对等体组的原始路由更新信息。

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

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

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

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

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

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

4.5.7  调整和优化6PE

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

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

address-family ipv6 [ unicast ]

(4)     配置对于从6PE对等体/对等体组接收的路由,允许本地AS号在接收路由的AS_PATH属性中出现,并配置允许出现的次数。

peer { group-name | ipv4-address [ mask-length ] } allow-as-loop [ number ]

缺省情况下,不允许本地AS号在接收路由的AS_PATH属性中出现。

4.5.8  配置6PE路由共享标签资源

1. 功能简介

缺省情况下,6PE设备为每个下一跳分配一个标签,与IPv6用户网络连接的下一跳较多时,需要给来自同一站点的IPv6路由分配较多的标签,容易造成标签资源的浪费,其引发的标签资源不足问题还会导致IPv6路由无法发布出去。配置本功能后,6PE设备会为所有的IPv6单播路由分配相同的标签,以节省标签资源。

2. 配置限制和指导

配置本功能前,请先执行display mpls label命令查看标签使用状态。如果配置的静态标签已经被其他协议使用,则指定该标签时本命令不生效。此后如果该标签的使用状态变为Idle,则需要先执行undo apply-label命令,再执行apply-label命令重新配置分配的标签,该标签才可以被使用。

有关display mpls label命令的详细参考,请参见“MPLS命令参考”中的“MPLS基础”。

3. 配置步骤

(1)     ‍进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

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

address-family ipv6 [ unicast ]

(4)     指定为6PE路由分配的标签。

apply-label { explicit-null | static static-label-value }

缺省情况下,BGP按照每个下一跳分配一个标签的方式为路由分配标签。

注意

配置本命令修改分配的标签后,会造成标签单播流量的短暂中断,请谨慎配置。

 

4.5.9  配置6PE路由反射功能

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ]

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

address-family ipv6 [ unicast ]

(4)     配置本机作为路由反射器,对等体/对等体组作为路由反射器的客户机

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

缺省情况下,未配置路由反射器及其客户机。

4.5.10  复位BGP 6PE连接

在用户视图下执行以下命令复位BGP 6PE连接。请选择其中一项进行配置。

·     软复位指定的BGP 6PE连接。

refresh bgp [ instance instance-name ] ipv4-address [ mask-length ] { export | import } ipv6 [ unicast ]

·     复位指定的BGP 6PE连接。

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

注意

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

 

4.6  IPv4 BGP扩展功能典型配置举例‌

4.6.1  BGP LS配置举例

1. 组网需求

·     所有路由器运行BGP协议,Router A与Router B建立IBGP连接,Router B分别与Router C和Router D建立IBGP连接。

·     Router B作为路由反射器,Router A为Router B的客户机。

·     Router A能够通过Router B学到Router C和Router D发布的LS信息。

2. 组网图

图4-4 BGP LS配置组网图

3. 配置步骤

(1)     配置各接口的IP地址,在Router C和Router D上配置OSPF

(2)     配置BGP连接

# 配置Router A。

<RouterA> system-view

[RouterA] bgp 100

[RouterA-bgp-default] peer 192.1.1.2 as-number 100

[RouterA-bgp-default] address-family link-state

[RouterA-bgp-default-ls] peer 192.1.1.2 enable

[RouterA-bgp-default-ls] quit

[RouterA-bgp-default] quit

# 配置Router B。

<RouterB> system-view

[RouterB] bgp 100

[RouterB-bgp-default] peer 192.1.1.1 as-number 100

[RouterB-bgp-default] peer 193.1.1.1 as-number 100

[RouterB-bgp-default] peer 194.1.1.1 as-number 100

[RouterB-bgp-default] address-family link-state

[RouterB-bgp-default-ls] peer 192.1.1.1 enable

[RouterB-bgp-default-ls] peer 193.1.1.1 enable

[RouterB-bgp-default-ls] peer 194.1.1.1 enable

[RouterB-bgp-default-ls] quit

[RouterB-bgp-default] quit

# 配置Router C。

<RouterC> system-view

[RouterC] bgp 100

[RouterC-bgp-default] peer 193.1.1.2 as-number 100

[RouterC-bgp-default] address-family link-state

[RouterC-bgp-default-ls] peer 193.1.1.2 enable

[RouterC-bgp-default-ls] quit

[RouterC-bgp-default] quit

[RouterC] ospf

[RouterC-ospf-1] distribute bgp-ls

[RouterC-ospf-1] area 0

[RouterC-ospf-1-area-0.0.0.0] network 0.0.0.0 0.0.0.0

[RouterC-ospf-1-area-0.0.0.0] quit

[RouterC-ospf-1] quit

# 配置Router D。

<RouterD> system-view

[RouterD] bgp 100

[RouterD-bgp-default] peer 194.1.1.2 as-number 100

[RouterD-bgp-default] address-family link-state

[RouterD-bgp-default-ls] peer 194.1.1.2 enable

[RouterD-bgp-default-ls] quit

[RouterD-bgp-default] quit

[RouterD] ospf

[RouterD-ospf-1] distribute bgp-ls

[RouterD-ospf-1] area 0

[RouterD-ospf-1-area-0.0.0.0] network 0.0.0.0 0.0.0.0

[RouterD-ospf-1-area-0.0.0.0] quit

[RouterD-ospf-1] quit

(3)     配置路由反射器

# 配置Router B。

[RouterB] bgp 100

[RouterB-bgp-default] address-family link-state

[RouterB-bgp-default-ls] peer 192.1.1.1 reflect-client

[RouterB-bgp-default-ls] quit

[RouterB-bgp-default] quit

4. 验证配置

# 查看Router A的LS信息。

[RouterA] display bgp link-state

 

 Total number of routes: 4

 

 BGP local router ID is 192.1.1.1

 Status codes: * - valid, > - best, d - dampened, h - history,

               s - suppressed, S - stale, i - internal, e - external

               a – additional-path

 

               Origin: i - IGP, e - EGP, ? - incomplete

Prefix codes: E link, V node, T4 IPv4 route, T6 IPv6 route, SD SRv6 SID desc

               u/U unknown,

               I Identifier, N local node, R remote node, L link, P prefix,

               L1/L2 ISIS level-1/level-2, O OSPF, O3 OSPFv3,

               D direct, S static, B BGP, SS SRv6 SID,

               a area-ID, l link-ID, t topology-ID, s ISO-ID,

               c confed-ID/ASN, b bgp-identifier, r router-ID,

               i if-address, n peer-address, o OSPF Route-type, p IP-prefix

               d designated router address/interface, ID Link Descriptor Identifer

 

i Network : [V][O][I0x0][N[c100][b193.1.1.1][a0.0.0.0][r193.1.1.1]]/376

    NextHop : 193.1.1.1                                LocPrf    : 100

    PrefVal : 0                                        OutLabel  : NULL

    MED     :

    Path/Ogn: i

 

i Network : [V][O][I0x0][N[c100][b194.1.1.1][a0.0.0.0][r194.1.1.1]]/376

    NextHop : 194.1.1.1                                LocPrf    : 100

    PrefVal : 0                                        OutLabel  : NULL

    MED     :

    Path/Ogn: i

 

i Network : [T4][O][I0x0][N[c100][b193.1.1.1][a0.0.0.0][r193.1.1.1]][P[o0x1][p193.1.1.0/24]]/480

    NextHop : 193.1.1.1                                LocPrf    : 100

    PrefVal : 0                                        OutLabel  : NULL

    MED     :

    Path/Ogn: i

 

i Network : [T4][O][I0x0][N[c100][b194.1.1.1][a0.0.0.0][r194.1.1.1]][P[o0x1][p194.1.1.0/24]]/480

    NextHop : 194.1.1.1                                LocPrf    : 100

    PrefVal : 0                                        OutLabel  : NULL

    MED     :

    Path/Ogn: i

可以看出,Router A从Router C和Router D 学到了LS信息。

4.6.2  BGP Dedicated配置举例

1. 组网需求

AS 100中的Router A与Router D为终端提供接入服务,并通过BGP协议实现接口绑定信息在不同接入设备上的同步,确保终端迁移到任意接入设备后都可通过安全过滤并快速上线。

具体需求为:

·     所有设备运行BGP协议,Router A与Router B、Router C之间建立EBGP连接,Router D与Router B、Router C之间建立EBGP连接。

·     终端通过AP接入到Router A或Router D。

·     终端从AP1处上线,Router A生成一条对应的IP Source Guard绑定表项,通过BGP同步到Router B和Router C,再由Router B和Router C将表项同步到Router D。

·     终端下线,IP Source Guard绑定表项老化后,通过BGP Dedicate地址族撤销路由。

2. 组网图

图4-5 BGP Dedicated配置组网图

设备

接口

IP地址

设备

接口

IP地址

Router A

GE0/0/1

11.11.11.11/24

Router C

GE0/0/2

22.22.22.22/24

 

GE0/0/2

22.22.22.11/24

 

GE0/0/1

44.44.44.11/24

Router B

GE0/0/1

11.11.11.22/24

Router D

GE0/0/1

44.44.44.22/24

 

GE0/0/2

33.33.33.11/24

 

GE0/0/2

33.33.33.22/24

 

3. 配置步骤

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

(2)     配置BGP连接

# 配置Router A。

<RouterA> system-view

[RouterA] bgp 100

[RouterA-bgp-default] peer 11.11.11.22 as-number 200

[RouterA-bgp-default] peer 22.22.22.22 as-number 200

[RouterA-bgp-default] address-family dedicated

[RouterA-bgp-default-dedicated] peer 11.11.11.22 enable

[RouterA-bgp-default-dedicated] peer 22.22.22.22 enable

[RouterA-bgp-default-dedicated] quit

[RouterA-bgp-default] quit

# 配置Router B。

<RouterB> system-view

[RouterB] bgp 200

[RouterB-bgp-default] peer 11.11.11.11 as-number 100

[RouterB-bgp-default] peer 33.33.33.22 as-number 100

[RouterB-bgp-default] address-family dedicated

[RouterB-bgp-default-dedicated] peer 11.11.11.11 enable

[RouterB-bgp-default-dedicated] peer 33.33.33.22 enable

[RouterB-bgp-default-dedicated] quit

[RouterB-bgp-default] quit

# 配置Router C。

<RouterC> system-view

[RouterC] bgp 200

[RouterC-bgp-default] peer 22.22.22.11 as-number 100

[RouterC-bgp-default] peer 44.44.44.22 as-number 100

[RouterC-bgp-default] address-family dedicated

[RouterC-bgp-default-dedicated] peer 22.22.22.11 enable

[RouterC-bgp-default-dedicated] peer 44.44.44.22 enable

[RouterC-bgp-default-dedicated] quit

[RouterC-bgp-default] quit

# 配置Router D。

<RouterD> system-view

[RouterD] bgp 100

[RouterD-bgp-default] peer 33.33.33.11 as-number 200

[RouterD-bgp-default] peer 44.44.44.11 as-number 200

[RouterD-bgp-default] address-family dedicated

[RouterD-bgp-default-dedicated]peer 33.33.33.11 enable

[RouterD-bgp-default-dedicated]peer 44.44.44.11 enable

# 允许Router D接收来自Router A的AS_PATH包含本地AS号的BGP路由。

[RouterD-bgp-default-dedicated] peer 33.33.33.11 allow-as-loop 1

[RouterD-bgp-default-dedicated] peer 44.44.44.11 allow-as-loop 1

[RouterD-bgp-default-dedicated] quit

[RouterD-bgp-default] quit

(3)     在Router A和Router D上启动接口绑定功能

# 开启IPv4接口绑定功能。

<RouterA> system-view

[RouterA] interface gigabitethernet 0/0/3

[RouterA-GigabitEthernet0/0/3] ip verify source ip-address mac-address

# 开启IPv4接口绑定功能。

<RouterD> system-view

[RouterD] interface gigabitethernet 0/0/3

[RouterD-GigabitEthernet0/0/3] ip verify source ip-address mac-address

4. 验证配置

# 查看Router A上的IPv4接口绑定信息。

[RouterA] display ip source binding

Total entries found: 3

IP Address      MAC Address    Interface                VLAN Type

192.168.100.4   1234-5678-9abc GE0/0/3                  N/A  DHCP relay

192.168.100.5   1234-5678-9abd GE0/0/3                  N/A  DHCP relay

192.168.100.6   1234-5678-9abe GE0/0/3                  N/A  DHCP relay

# 在Router A上查看BGP Dedicated路由信息。

[RouterA] display bgp routing-table dedicated

 

 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 : [1][48][1234-5678-9abc][32][192.168.100.1][3]/120

     NextHop : 0.0.0.0                                  LocPrf    : 100

     PrefVal : 32768                                    OutLabel  : NULL

     MED     : 0

     Path/Ogn: i

 

* >  Network : [1][48][1234-5678-9abd][32][192.168.100.2][3]/120

     NextHop : 0.0.0.0                                  LocPrf    : 100

     PrefVal : 32768                                    OutLabel  : NULL

     MED     : 0

     Path/Ogn: i

 

* >  Network : [1][48][1234-5678-9abe][32][192.168.100.3][3]/120

     NextHop : 0.0.0.0                                  LocPrf    : 100

     PrefVal : 32768                                    OutLabel  : NULL

     MED     : 0

     Path/Ogn: i

# 在Router D上查看BGP Dedicated路由信息。

[RouterD] display bgp routing-table dedicated

 

 Total number of routes: 6

 

 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

 

* >e Network : [1][48][1234-5678-9abc][32][192.168.100.1][3]/120

     NextHop : 33.33.33.11                              LocPrf    :

     PrefVal : 0                                        OutLabel  : NULL

     MED     :

     Path/Ogn: 200 100i

 

*  e Network : [1][48][1234-5678-9abc][32][192.168.100.1][3]/120

     NextHop : 44.44.44.11                              LocPrf    :

     PrefVal : 0                                        OutLabel  : NULL

     MED     :

     Path/Ogn: 200 100i

 

* >e Network : [1][48][1234-5678-9abd][32][192.168.100.2][3]/120

     NextHop : 33.33.33.11                              LocPrf    :

     PrefVal : 0                                        OutLabel  : NULL

     MED     :

     Path/Ogn: 200 100i

 

*  e Network : [1][48][1234-5678-9abd][32][192.168.100.2][3]/120

     NextHop : 44.44.44.11                              LocPrf    :

     PrefVal : 0                                        OutLabel  : NULL

     MED     :

     Path/Ogn: 200 100i

 

* >e Network : [1][48][1234-5678-9abe][32][192.168.100.3][3]/120

     NextHop : 33.33.33.11                              LocPrf    :

     PrefVal : 0                                        OutLabel  : NULL

     MED     :

     Path/Ogn: 200 100i

 

*  e Network : [1][48][1234-5678-9abe][32][192.168.100.3][3]/120

     NextHop : 44.44.44.11                              LocPrf    :

     PrefVal : 0                                        OutLabel  : NULL

     MED     :

     Path/Ogn: 200 100i

# 查看Router D上IPv4接口绑定信息。

[RouterD] display ip source binding remote

Total entries found: 3

IP Address      MAC Address    Router ID                VLAN Type

192.168.100.1   1234-5678-9abc 1.1.1.1                  N/A  DHCP relay

192.168.100.2   1234-5678-9abd 1.1.1.1                  N/A  DHCP relay

192.168.100.3   1234-5678-9abe 1.1.1.1                  N/A  DHCP relay

可以看到,Router D收到了从Router A同步的接口绑定信息。

4.7  IPv6 BGP扩展功能典型配置举例‌

4.7.1  6PE配置

1. 组网需求

通过配置6PE实现利用MPLS技术跨越运营商的IPv4网络连接隔离的两个IPv6用户网络。其中:

·     运营商网络内部采用OSPF作为IGP路由协议。

·     PE 1和PE 2为运营商网络的边缘设备,PE 1和PE 2之间建立IPv4 IBGP连接。

·     CE 1和CE 2为IPv6用户网络的边缘设备,用户网络通过该设备接入运营商网络。

·     CE与PE之间配置IPv6静态路由,以指导IPv6报文的转发。

2. 组网图

图4-6 6PE配置组网图

3. 配置步骤

(1)     配置各接口的IPv6地址及IPv4地址(略)

(2)     配置PE 1

# 全局使能LDP能力,并配置LSP触发策略。

<PE1> system-view

[PE1] mpls lsr-id 2.2.2.2

[PE1] mpls ldp

[PE1-ldp] lsp-trigger all

[PE1-ldp] quit

# 在接口GigabitEthernet0/0/2上使能MPLS和LDP能力。

[PE1] interface gigabitethernet 0/0/2

[PE1-GigabitEthernet0/0/2] mpls enable

[PE1-GigabitEthernet0/0/2] mpls ldp enable

[PE1-GigabitEthernet0/0/2] quit

# 配置IBGP,使能对等体的6PE能力,并引入IPv6的直连和静态路由。

[PE1] bgp 65100

[PE1-bgp-default] router-id 2.2.2.2

[PE1-bgp-default] peer 3.3.3.3 as-number 65100

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

[PE1-bgp-default] address-family ipv6

[PE1-bgp-default-ipv6] import-route direct

[PE1-bgp-default-ipv6] import-route static

[PE1-bgp-default-ipv6] peer 3.3.3.3 enable

[PE1-bgp-default-ipv6] peer 3.3.3.3 label-route-capability

[PE1-bgp-default-ipv6] quit

[PE1-bgp-default] quit

# 配置到CE 1的静态路由。

[PE1] ipv6 route-static 1::1 128 10::1

# 配置OSPF,实现运营商网络内部互通。

[PE1] ospf

[PE1-ospf-1] area 0

[PE1-ospf-1-area-0.0.0.0] network 2.2.2.2 0.0.0.0

[PE1-ospf-1-area-0.0.0.0] network 1.1.0.0 0.0.255.255

[PE1-ospf-1-area-0.0.0.0] quit

[PE1-ospf-1] quit

(3)     配置PE 2

# 全局使能LDP能力,并配置LSP触发策略。

<PE2> system-view

[PE2] mpls lsr-id 3.3.3.3

[PE2] mpls ldp

[PE2-mpls-ldp] lsp-trigger all

[PE2-mpls-ldp] quit

# 在接口GigabitEthernet0/0/2上使能MPLS和LDP能力。

[PE2] interface gigabitethernet 0/0/2

[PE2-GigabitEthernet0/0/2] mpls enable

[PE2-GigabitEthernet0/0/2] mpls ldp enable

[PE2-GigabitEthernet0/0/2] quit

# 配置IBGP,使能对等体的6PE能力,并引入IPv6的直连和静态路由。

[PE2] bgp 65100

[PE2-bgp-default] router-id 3.3.3.3

[PE2-bgp-default] peer 2.2.2.2 as-number 65100

[PE2-bgp-default] peer 2.2.2.2 connect-interface loopback 0

[PE2-bgp-default] address-family ipv6

[PE2-bgp-default-ipv6] import-route direct

[PE2-bgp-default-ipv6] import-route static

[PE2-bgp-default-ipv6] peer 2.2.2.2 enable

[PE2-bgp-default-ipv6] peer 2.2.2.2 label-route-capability

[PE2-bgp-default-ipv6] quit

[PE2-bgp-default] quit

# 配置到CE 2的静态路由。

[PE2] ipv6 route-static 4::4 128 20::1

# 配置OSPF,实现运营商内部互通。

[PE2] ospf

[PE2-ospf-1] area 0

[PE2-ospf-1-area-0.0.0.0] network 3.3.3.3 0.0.0.0

[PE2-ospf-1-area-0.0.0.0] network 1.1.0.0 0.0.255.255

[PE2-ospf-1-area-0.0.0.0] quit

[PE2-ospf-1] quit

(4)     配置CE 1

# 配置静态路由,缺省下一跳为PE 1。

<CE1> system-view

[CE1] ipv6 route-static :: 0 10::2

(5)     配置CE 2

# 配置静态路由,缺省下一跳为PE 2。

<CE2> system-view

[CE2] ipv6 route-static :: 0 20::2

4. 验证配置

# 显示PE 1上的IPv6 BGP路由信息。可以看到PE 1上存在到达两个IPv6用户网络的路由。

[PE1] display bgp routing-table ipv6

 

 Total number of routes: 5

 

 BGP local router ID is 2.2.2.2

 Status codes: * - valid, > - best, d - dampened, h - history,

               s - suppressed, S - stale, i - internal, e - external

               a – additional-path

       Origin: i - IGP, e - EGP, ? - incomplete

 

* >  Network : 1::1                                     PrefixLen : 128

     NextHop : 10::1                                    LocPrf    :

     PrefVal : 32768                                    OutLabel  : NULL

     MED     : 0

     Path/Ogn: ?

 

* >i Network : 4::4                                     PrefixLen : 128

     NextHop : ::FFFF:3.3.3.3                           LocPrf    : 100

     PrefVal : 0                                        OutLabel  : 1279

     MED     : 0

     Path/Ogn: ?

 

* >  Network : 10::                                     PrefixLen : 64

     NextHop : ::                                       LocPrf    :

     PrefVal : 32768                                    OutLabel  : NULL

     MED     : 0

     Path/Ogn: ?

 

* >  Network : 10::2                                    PrefixLen : 128

     NextHop : ::1                                      LocPrf    :

     PrefVal : 32768                                    OutLabel  : NULL

     MED     : 0

     Path/Ogn: ?

 

* >i Network : 20::                                     PrefixLen : 64

     NextHop : ::FFFF:3.3.3.3                           LocPrf    : 100

     PrefVal : 0                                        OutLabel  : 1278

     MED     : 0

     Path/Ogn: ?

# CE 1可以ping通CE 2的IPv6地址(Loopback接口地址4::4)。

不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!

新华三官网
联系我们