04-BGP高级配置
本章节下载: 04-BGP高级配置 (1.24 MB)
1.3 配置建立BGP TCP连接时使用的TCP最大报文段长度
1.8 开启与对等体/对等体组交互Withdraw Route-refresh消息的能力
1.9.3 禁止与指定对等体/对等体组建立会话(IPv4对等体)
1.9.4 禁止与指定对等体/对等体组建立会话(IPv6对等体)
1.10.2 通过Route-refresh功能实现BGP软复位(IPv4对等体)
1.10.3 通过Route-refresh功能实现BGP软复位(IPv6对等体)
1.10.4 通过将所有路由更新信息保存在本地实现BGP软复位(IPv4单播)
1.10.5 通过将所有路由更新信息保存在本地实现BGP软复位(IPv6单播)
1.15 配置BGP路由添加到本地FIB后才能通过Update消息发送
1.18 配置BGP路由进行下一跳路由迭代查找时采用最长匹配方式
1.19 配置BGP路由根据路由策略来过滤迭代到的下一跳路由
1.21 配置系统进入二级内存门限告警状态后不断开EBGP对等体
2.5.5 配置向对等体/对等体组发送BGP RPKI验证结果
3.4.2 通过引用路由策略的方式开启BGP快速重路由功能(IPv4单播)
3.4.3 通过引用路由策略的方式开启BGP快速重路由功能(IPv6单播)
3.4.4 通过pic命令开启BGP快速重路由(IPv4单播)
3.4.5 通过pic命令开启BGP快速重路由(IPv6单播)
4.3.4 配置BGP LS信息的AS号和Router ID
4.3.6 配置BGP路由根据路由策略来过滤迭代到的下一跳路由
仅NCP支持BGP高级配置功能。
调整和优化BGP网络配置任务如下:
· 调整和优化EBGP会话的建立与复位
· 配置BGP会话的特殊能力协商
¡ 开启与对等体/对等体组交互Withdraw Route-refresh消息的能力
· 调整BGP会话的建立、中断与软复位
¡ 配置BGP软复位
· 配置BGP路由延迟功能
¡ 配置BGP路由添加到本地FIB后才能通过Update消息发送
· 调整BGP路由的下一跳迭代
· 配置对等体监控组
· 调整标签分配方式和路由优选规则
¡ 配置标签申请方式
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性能优化”。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置设备与指定对等体/对等体组之间建立BGP TCP连接时所使用的TCP最大报文段长度。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } tcp-mss mss-value
缺省情况下,未指定设备与指定对等体/对等体组建立TCP连接时所使用的TCP最大报文段长度。
执行本命令可能会导致已经建立的BGP会话断开后重新建立,请谨慎执行。
当前路由器要与另外一个路由器建立EBGP会话,它们之间必须具有直连的物理链路,且必须使用直连接口建立会话。如果不满足这一要求,则必须使用peer ebgp-max-hop命令允许它们经过多跳建立EBGP会话。
配置BGP GTSM功能后,只要本地设备和指定的对等体通过了GTSM检查,就允许在二者之间建立EBGP会话,不管二者之间的跳数是否超过peer ebgp-max-hop命令指定的跳数范围。
建议不要指定直连EBGP对等体/对等体组配置peer ebgp-max-hop命令,否则可能导致BGP路由无法正常迭代。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置允许本地路由器同非直连网络上的邻居建立EBGP会话,同时指定允许的最大跳数。
peer { group-name | ipv4-address [ mask-length ] } ebgp-max-hop [ hop-count ]
缺省情况下,不允许同非直连网络上的邻居建立EBGP会话。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置允许本地路由器同非直连网络上的邻居建立EBGP会话,同时指定允许的最大跳数。
peer { group-name | ipv6-address [ prefix-length ] } ebgp-max-hop [ hop-count ]
缺省情况下,不允许同非直连网络上的邻居建立EBGP会话。
未使能直连EBGP会话快速复位功能时,连接直连EBGP对等体的链路down后,本地路由器不会立即断开与EBGP对等体的会话,而是等待会话保持时间(Holdtime)超时后,才断开该会话。此时链路震荡不会影响EBGP会话的状态。
使能直连EBGP会话快速复位功能后,连接直连EBGP对等体的链路down时,本地路由器会立即断开与EBGP对等体的会话,并重新与该对等体建立EBGP会话,从而实现快速发现链路故障并重建会话。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 使能直连EBGP会话快速复位功能。
ebgp-interface-sensitive
缺省情况下,直连EBGP会话快速复位功能处于使能状态。
BGP ORF(Outbound Route Filtering,输出路由过滤)功能是指将ORF信息(本地的路由接收策略信息)通过Route-refresh消息发送给对等体,当对等体需要向本地发送Update更新消息时,不仅要利用对等体上的路由策略对路由进行过滤,还需要利用接收到的路由接收策略对路由进行过滤,只有通过策略过滤的路由信息才会发给本地,以达到减少BGP邻居间Update更新消息的交互,节省网络资源的目的。
使能BGP ORF能力后,本地和BGP对等体会通过Open消息协商ORF能力(即收发的消息里是否允许携带ORF信息,如果允许携带,是否可以携带非标准的ORF信息),当协商完毕并成功建立BGP会话后,可以通过特殊的Route-refresh消息交互ORF信息。
本地和BGP对等体都需要执行本配置,且需要保证一端能够发送携带ORF信息的Route-refresh报文,另一端能够接收携带ORF信息的Route-refresh报文,才能保证ORF能力协商成功。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp 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邻居协商的ORF能力。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } capability-advertise orf prefix-list { both | receive | send }
缺省情况下,BGP邻居协商的ORF能力处于关闭状态。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv6单播地址族视图或BGP-VPN IPv6单播地址族视图。
¡ 请依次执行以下命令进入BGP IPv6单播地址族视图。
bgp 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邻居协商的ORF能力。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } capability-advertise orf prefix-list { both | receive | send }
缺省情况下,BGP邻居协商的ORF能力处于关闭状态。
和采用非标准ORF的友商设备互通时需要执行本配置。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 开启BGP邻居协商的非标准ORF能力。
peer { group-name | ip-address [ mask-length ] | ipv6-address [ prefix-length ] } capability-advertise orf non-standard
缺省情况下,BGP邻居协商的非标准ORF能力处于关闭状态。
可在任意视图下执行以下命令:
· 显示邻居收到的ORF消息中的前缀信息(IPv4单播)。
display bgp [ instance instance-name ] peer ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] ipv4-address 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 ] ipv4-address received prefix-list
设备支持4字节的AS号,即AS号取值占用4字节,取值范围为1~4294967295。缺省情况下,设备在与对端设备建立BGP会话时,通过Open消息通告对端设备本端支持4字节的AS号。如果对端设备不支持4字节AS号(只支持2字节AS号),则会导致会话协商失败。此时,在本端与对端设备之间使能4字节AS号抑制功能,可以使得本端设备通过Open消息向对端设备谎称自己不支持4字节的AS号,从而确保本端和对端设备之间可以成功建立BGP会话。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 使能4字节AS号抑制功能。
peer { group-name | ipv4-address [ mask-length ] } capability-advertise suppress-4-byte-as
缺省情况下, 4字节AS号抑制功能处于关闭状态。
如果对端设备支持4字节AS号,请不要使能4字节AS号抑制功能,否则会导致BGP会话无法建立。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 使能4字节AS号抑制功能。
peer { group-name | ipv6-address [ prefix-length ] } capability-advertise suppress-4-byte-as
缺省情况下,4字节AS号抑制功能处于关闭状态。
如果对端设备支持4字节AS号,请不要使能4字节AS号抑制功能,否则会导致BGP会话无法建立。
如图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 nib或display ipv6 rib nib命令显示信息中的“AS-path”字段,查看BGP路由的下一跳信息中包含的AS号。有关display rib nib和display 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消息,以提高路径收敛的速度。
配置本命令后,本端设备与指定对等体间的BGP会话会断开并重新建立,请谨慎配置。
本功能仅适用于1. 功能简介中介绍的场景,不适用于始发Withdraw Route-refresh消息的上游设备的上行链路连接IBGP对等体的场景。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 开启与指定对等体/对等体组交互Withdraw Route-refresh消息的能力。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } capability-advertise withdraw-refresh
缺省情况下,设备不具有与指定对等体/对等体组交互Withdraw Route-refresh消息的能力。
由于网络升级维护等原因,需要暂时断开与某个对等体/对等体组的BGP会话时,可以通过本配置禁止与对等体/对等体组建立会话。当网络恢复后,通过执行undo peer ignore命令以恢复与对等体/对等体组的会话。这样,网络管理员无需删除并重新进行对等体/对等体组相关配置,减少了网络维护的工作量。
设备可以通过以下两种方式禁止与对等体/对等体组建立会话:
· 仅禁止与指定对等体/对等体组建立会话。
· 禁止与所有对等体建立会话。
执行本配置时,如果可以指定了graceful参数,则设备会启动等待邻居关系断开定时器,并重新发布路由信息。不同方式下,发布的路由信息有所不同:
· 仅禁止与指定对等体/对等体组建立会话:
¡ 向指定的对等体/对等体组发送本设备上全部的路由。
¡ 向其他的对等体/对等体组发送来自指定对等体/对等体组的路由。
· 禁止与所有对等体建立会话:向所有对等体/对等体组重新发送本设备上全部的路由。
等待邻居关系断开定时器超时后:
· 如果仅禁止与指定对等体/对等体组建立会话,则设备断开与指定等体/对等体组的会话。
· 如果禁止与所有对等体建立会话,则设备断开与所有对等体的会话。
执行本配置还可以配置这些路由的属性,以降低重新发布路由的优先级,使得邻居路由器优选从其他邻居学到的路由,从而避免当定时器超时、邻居关系断开时造成流量的中断。如果用户只希望设备发送低优先级的路由,而不断开BGP会话,可以在配置本功能时指定graceful graceful-time参数的值为0。
如果同时配置ignore all-peers和peer ignore命令,则针对同一对等体/对等体组,以peer ignore命令的配置为准。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 禁止与对等体/对等体组建立会话。
peer { group-name | ipv4-address [ mask-length ] } ignore [ graceful graceful-time { community { community-number | aa:nn } | local-preference preference | med med } * ]
缺省情况下,允许与BGP对等体/对等体组建立会话。
如果本设备和对等体的会话已经建立,则执行本命令后,会停止该会话,并且清除所有相关路由信息;如果本设备和对等体组的会话已经建立,则执行本命令后,会终止与对等体组内所有对等体之间的会话,并且清除所有相关路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 禁止与IPv6 BGP对等体/对等体组建立会话。
peer { group-name | ipv6-address [ prefix-length ] } ignore [ graceful graceful-time { community { community-number | aa:nn } | local-preference preference | med med } * ]
缺省情况下,允许与BGP对等体/对等体组建立会话。
如果本设备和对等体的会话已经建立,则执行本命令后,会停止该会话,并且清除所有相关路由信息;如果本设备和对等体组的会话已经建立,则执行本命令后,会终止与对等体组内所有对等体之间的会话,并且清除所有相关路由信息。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 禁止与所有对等体/对等体组建立会话。
ignore all-peers [ graceful graceful-time { community { community-number | aa:nn } | local-preference preference | med med } * ]
缺省情况下,允许与BGP对等体/对等体组建立会话。
如果本设备和对等体/对等体组的会话已经建立,则执行本命令后,会断开本设备和对等体/对等体组的会话,并且清除所有路由信息。
BGP的选路策略改变,即影响BGP路由选择的配置(如路由首选值等)发生变化后,为了使新的策略生效,必须复位BGP会话,即删除并重新建立BGP会话,以便重新发布路由信息,并应用新的策略对路由信息进行过滤。复位BGP会话时,会造成短暂的BGP会话中断。
通过BGP软复位,可以实现在不中断BGP会话的情况下,对BGP路由表进行更新,并应用新的选路策略。
BGP软复位的方法有以下三种:
· 通过Route-refresh功能实现BGP软复位:如果BGP的选路策略发生了变化,则本地路由器会向BGP对等体发送Route-refresh消息,收到此消息的对等体将其路由信息重新发给本地路由器,本地路由器根据新的路由策略对接收到的路由信息进行过滤。采用这种方式时,要求当前路由器和对等体都支持Route-refresh功能。
· 通过将所有路由更新信息保存在本地的方式实现BGP软复位:将从对等体接收的所有原始路由更新信息保存在本地,当选路策略发生改变后,对保存在本地的所有路由使用新的路由策略重新进行过滤。采用这种方式时,不要求当前路由器和对等体都支持Route-refresh功能,但是保存路由更新需要占用较多的内存资源。
· 手工软复位BGP会话:执行refresh bgp命令手工触发本地路由器将本地路由信息发送给BGP对等体或向BGP对等体发送Route-refresh消息,收到Route-refresh消息的对等体将其路由信息重新发给本地路由器,以便本地路由器根据新的路由策略对接收到的路由信息进行过滤。采用这种方式时,要求当前路由器和对等体都支持Route-refresh功能。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 通过Route-refresh功能实现BGP软复位。请选择其中一项进行配置。
¡ 使能本地路由器与指定对等体/对等体组的BGP路由刷新功能。
peer { group-name | ipv4-address [ mask-length ] } capability-advertise route-refresh
¡ 使能本地路由器与指定BGP对等体/对等体组的BGP路由刷新、多协议扩展和4字节AS号功能。
undo peer { group-name | ipv4-address [ mask-length ] } capability-advertise conventional
缺省情况下,BGP路由刷新、多协议扩展和4字节AS号功能处于使能状态。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 通过Route-refresh功能实现BGP软复位。请选择其中一项进行配置。
¡ 使能本地路由器与指定IPv6 BGP对等体/对等体组的BGP路由刷新功能。
peer { group-name | ipv6-address [ prefix-length ] } capability-advertise route-refresh
¡ 使能本地路由器与指定IPv6 BGP对等体/对等体组的BGP路由刷新、多协议扩展和4字节AS号功能。
undo peer { group-name | ipv6-address [ prefix-length ] } capability-advertise conventional
缺省情况下,BGP路由刷新、多协议扩展和4字节AS号功能处于使能状态。
(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 ] } keep-all-routes
缺省情况下,不保存来自对等体/对等体组的原始路由更新信息。
本命令只对执行该命令后接收到的路由生效。
(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 ] } keep-all-routes
缺省情况下,不保存来自对等体/对等体组的原始路由更新信息。
本命令只对执行该命令后接收到的路由生效。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置Route-refresh功能。请选择其中一项进行配置。
¡ 使能本地路由器与指定对等体/对等体组的BGP路由刷新功能。
peer { group-name | ipv4-address [ mask-length ] } capability-advertise route-refresh
¡ 使能本地路由器与指定BGP对等体/对等体组的BGP路由刷新、多协议扩展和4字节AS号功能。
undo peer { group-name | ipv4-address [ mask-length ] } capability-advertise conventional
缺省情况下,BGP路由刷新、多协议扩展和4字节AS号功能处于使能状态。
(4) 依次执行以下命令退回用户视图。
a. quit
b. quit
(5) 手工对BGP会话进行软复位。请选择其中一项进行配置。
a. 手工软复位IPv4地址族下的BGP IPv4会话。
refresh bgp [ instance instance-name ] { ipv4-address [ mask-length ] | all | external | group group-name | internal } { export | import } ipv4 [ 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 [ unicast ] [ vpn-instance vpn-instance-name ] ]
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置Route-refresh功能。请选择其中一项进行配置。
¡ 使能本地路由器与IPv6 BGP指定对等体/对等体组的BGP路由刷新功能。
peer { group-name | ipv6-address [ prefix-length ] } capability-advertise route-refresh
¡ 使能本地路由器与指定IPv6 BGP对等体/对等体组的BGP路由刷新、多协议扩展和4字节AS号功能。
undo peer { group-name | ipv6-address [ prefix-length ] } capability-advertise conventional
缺省情况下,BGP路由刷新、多协议扩展和4字节AS号功能处于使能状态。
(4) 依次执行以下命令退回用户视图。
a. quit
b. quit
(5) 手工对BGP会话进行软复位。请选择其中一项进行配置。
a. 手工软复位IPv6地址族下的BGP IPv6会话。
refresh bgp [ instance instance-name ] { ipv6-address [ prefix-length ] | all | external | group group-name | internal } { export | import } ipv6 [ multicast | [ unicast ] [ vpn-instance vpn-instance-name ] ]
¡ 手工软复位IPv6地址族下的BGP IPv4会话。
refresh bgp [ instance instance-name ] { ipv4-address [ mask-length ] | all | external | group group-name | internal } { export | import } ipv6 [ multicast | [ unicast ] [ vpn-instance vpn-instance-name ] ]
通过改变BGP选路规则实现负载分担时,设备根据balance命令配置的进行BGP负载分担的路由条数,选择指定数目的路由进行负载分担,以提高链路利用率。
本功能可以通过配置ecmp-nexthop-local或ecmp-nexthop-unchanged参数,实现对BGP负载分担的路由下一跳地址进行处理。执行balance命令时,ecmp-nexthop-local和ecmp-nexthop-unchanged参数的使用说明如下。
|
参数 |
使用说明 |
|
未指定ecmp-nexthop-local和ecmp-nexthop-unchanged参数 |
· 未配置BGP Add-Path功能时,设备仅向IBGP对等体传递形成了负载分担的路由中的最优路由,并将该路由的下一跳地址修改为本地的地址 · 配置了BGP Add-Path功能时,设备按照Add-Path优选路由的最大条数向IBGP对等体传递形成了负载分担的路由,并将其中的最优路由的下一跳地址修改为本地的地址,不修改其他路由的下一跳地址 |
|
指定了ecmp-nexthop-local参数 |
对于同一目的地址的路由,将所有参与负载分担的路由的下一跳地址修改为本地的地址 |
|
指定了ecmp-nexthop-unchanged参数 |
对参与负载分担的路由的下一跳地址不做特殊处理 |
配置balance igp-metric-ignore和bestroute igp-metric-ignore中任一命令均可使BGP在选择负载分担的路由时忽略IGP Metric值。两条命令的不同点在于:
· balance igp-metric-ignore命令仅用于负载分担。BGP路由发布时的最优路由选择不受此命令的影响。BGP向外发布路由时仍会按照选路规则比较IGP Metric值,以选出最优的路由。
· bestroute igp-metric-ignore命令不仅用于负载分担,还用于BGP路由发布时的最优路由选择。执行本命令后,BGP选择负载分担路由、向外发布路由时,均会忽略路由的IGP Metric值。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) (可选)配置BGP在选择最优路由时忽略IGP Metric的比较。
bestroute igp-metric-ignore
缺省情况下,BGP在选择最优路由时会比较这些路由下一跳的IGP路由的Metric值,并优选IGP Metric值最小的路由。
下一跳IGP Metric不相同的BGP路由之间无法形成负载分担。配置本命令使得不同路由的下一跳IGP Metric不同时能够形成BGP负载分担。
(4) 退回系统视图。
¡ 在BGP实例视图下退回系统视图。
quit
¡ 在BGP-VPN实例视图下请依次执行以下命令退回系统视图。
quit
quit
(5) 进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp 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 ]
(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) 进入系统视图。
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 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 ]
(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路由之间不能形成负载分担。
在大规模的网络中,路由反射器通常可以接收到同一前缀的多条BGP路由,但是在缺省情况下,BGP只发布一条最优路由。如果最优路由所在路径出现网络故障,数据流量将会被中断,直到BGP根据新的网络拓扑路由收敛后,被中断的流量才能恢复正常的传输。
为了解决上述问题,可以在路由反射器上配置Add-Path(Additional Paths)功能。部署该功能后,设备可以同时发布多条相同前缀的路由给对等体。对等体接收到相同前缀的多条BGP路由后,即可为到达同一目的网络形成多条链路,这些链路之间既可以通过balance命令形成负载分担,也可以按照BGP路由的优选规则形成备份,在一条链路出现故障时将流量快速切换到其他链路上,从而提高了数据传输的可靠性。
Add-Path能力包括接收和发送两种。为了让对等体间的Add-Path能力协商成功,必须一端使能接收能力,另一端使能发送能力。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp 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 } *
缺省情况下,未配置Add-Path功能。
(4) 配置向指定对等体/对等体组发送的Add-Path优选路由的最大条数。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise additional-paths best number
缺省情况下,向指定对等体/对等体组发送的Add-Path优选路由的最大条数为1。
(5) 配置Add-Path优选路由的最大条数。
additional-paths select-best best-number
缺省情况下,Add-Path优选路由的最大条数为1。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv6单播地址族视图或BGP-VPN IPv6单播地址族视图。
¡ 请依次执行以下命令进入BGP IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
(3) 配置Add-Path功能。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } additional-paths { receive | send } *
缺省情况下,未配置Add-Path功能。
(4) 配置向指定对等体/对等体组发送的Add-Path优选路由的最大条数。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise additional-paths best number
缺省情况下,向指定对等体/对等体组发送的Add-Path优选路由的最大条数为1。
(5) 配置Add-Path优选路由的最大条数。
additional-paths select-best best-number
缺省情况下,Add-Path优选路由的最大条数为1。
如图1-3所示,设备之间均通过BGP协议互通,Device A与Device D之间存在两条路径,当Device D和Device B之间的链路不通时,流量切换到备份路径上转发,之后若主用路径恢复正常,流量将切回主用路径。这种情况下,当主用链路恢复正常时,Device B会向Device A发送Update消息更新路由,Device A收到路由后触发路由优选,将流量切换到主用路径上进行转发,此时Device B可能未完成FIB转发表项的刷新,导致流量丢失。通过在Device A上开启延迟路由优选功能可以在触发路由优选时延迟一段时间再进行重新选路,避免切换路径时由于表项未完成刷新导致的流量丢失现象。
配置本功能时,需要注意:
· 仅路由变化后存在多条相同前缀的有效路由时路由优选才会延迟。
· 将路由优选延迟时间修改为非0值时,正在等待延迟路由优选时间的路由不受影响,仍采用延迟开始时的时间;将路由优选延迟时间修改为0时,正在等待延迟路由优选时间的路由会立即进行优选。
以下情况需要进行路由优选时不受路由优选延迟时间影响,仍会立即进行路由优选:
· 本地的配置发生变化引起路由变化。
· 撤销路由引起路由变化。
· 路由变化后去往某一目的只有一条路由。
· BGP发生主备进程倒换时。
· 存在多条等价路由的情况下,选中路由发生变化。
· 配置了FRR情况下仅存在最优路由和次优路由。
· 引入的路由触发路由优选。
· 最优路由下一跳发生变化且存在正在等待延迟优选时间的相同前缀路由。
· BGP NSR功能处于开启状态时,设备进行主备倒换。
(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路由延迟优选时间。
route-select delay delay-value
缺省情况下,延迟时间为0秒,即路由优选不延迟。
(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路由延迟优选时间。
route-select delay delay-value
缺省情况下,延迟时间为0秒,即路由优选不延迟。
缺省情况下,BGP将路由表中的有效优选路由下发到RIB后才能指导流量转发,BGP路由删除后,BGP也会通知RIB删除对应的路由。
图1-4 BGP延迟通知RIB删除路由组网图
如图1-4所示,Device A通过BGP路由将自身的路由信息同时发布给Device B和Device C,Device B和Device C将来自Device A的路由互相转发给对方,如图中粉色箭头所示。Device B优选了经过Device C转发的路由,Device C优选了Device A直接发送给自身的路由。Device D通过缺省路由的指导将发往Device A的流量同时发送给Device B和Device C,根据Device B和Device C上的BGP路由优选结果,来自Device D的所有流量都将经过Device C转发给Device A,如图中绿色箭头所示。
图1-5 BGP延迟通知RIB删除路由组网故障示意图
如图1-5所示,当Device A撤销直接发送给Device C的路由时,Device C也要通知RIB删除来自Device A的路由信息,此时Device C只能通过Device B的路由转发来获取Device A的路由信息,如图中粉色箭头所示。因此无论是Device D发送给Device B还是Device C的流量,都只能经过Device B才能转发给Device A,如图中绿色箭头所示。由于Device B原本优选的是Device C转发的路由,Device C转发的路由被撤销后Device B需要重新优选路由,在路由重新优选并将优选结果下发RIB的这段时间内,在Device B上没有路由能够指导来自Device D的流量转发给Device A,导致断流。此时需要一种保护机制,在流量路径需要从Device C切换到Device B时,保护组网在Device B路由收敛期间不断流。
配置BGP延迟通知RIB删除路由功能可以满足上述需求。配置BGP通知RIB删除路由的延迟时间后,BGP路由表中的路由被删除时,BGP不会立即通知RIB删除对应的路由,而是等待route-delete delay命令指定的一段时间后才通知RIB删除对应的路由。
图1-6 BGP延迟通知RIB删除路由生效示意图
如图1-6所示,在Device C上配置BGP延迟通知RIB删除路由后,Device A撤销直接发送给Device C的路由时,Device C不会立即通知RIB删除该路由,使得RIB中保持该路由,因此在Device B路由收敛期间,Device C仍可以根据RIB中的该路由指导来自Device D的流量转发给Device A,以避免断流,如图1-6中的绿色路径所示。在Device B路由收敛完成后,Device C也结束延迟时间,通知RIB删除来自Device A的路由,通过Device B转发的路由指导来自Device D的流量的转发,如图1-7所示。
在RIB中,仅存在一条相同前缀的路由时该路由才能被通知延迟删除。
重复执行route-delete delay命令,可以修改BGP通知RIB删除路由的延迟时间,但新修改的非0延迟时间对已经在等待延迟通知RIB删除的路由不生效。将延迟时间修改为0时,正在等待延迟通知RIB删除的路由会立即被RIB删除。
(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通知RIB删除路由的延迟时间。
route-delete delay delay-value
缺省情况下,BGP通知RIB删除路由的延迟时间为0,即BGP不延迟通知RIB删除路由。
(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通知RIB删除路由的延迟时间。
route-delete delay delay-value
缺省情况下,BGP通知RIB删除路由的延迟时间为0,即BGP不延迟通知RIB删除路由。
本功能可用于路由收敛性能较差的设备上。路由收敛性能较差的设备将BGP路由发送给其他设备后,可能本身还未将该路由添加到本地FIB,接收BGP路由的设备就已经完成优选并将BGP路由添加到本地FIB中,导致接收BGP路由的设备将流量转发到路由收敛性能较差的设备时发生丢包。
配置本功能后,BGP路由只有添加到本地FIB后才能通过Update消息发送,以避免不同设备路由收敛性能差异导致的丢包。
update wait-install命令执行的地址族和对应的生效情况如下:
· 在BGP IPv4单播地址族视图下执行update wait-install命令时,update wait-install命令仅对BGP IPv4单播路由生效。
· 在BGP IPv6单播地址族视图下执行update wait-install命令时,update wait-install命令仅对BGP IPv6单播路由生效。
· 在BGP-VPN IPv4单播地址族视图下执行update wait-install命令时,update wait-install命令仅对BGP-VPN IPv4单播路由以及根据BGP-VPN IPv4单播路由生成的BGP VPNv4和BGP EVPN路由生效。
· 在BGP-VPN IPv6单播地址族视图下执行update wait-install命令时,update wait-install命令仅对BGP-VPN IPv6单播路由以及根据BGP-VPN IPv6单播路由生成的BGP VPNv6和BGP EVPN路由生效。
· 在BGP实例视图下执行update wait-install命令时,update wait-install命令仅对BGP IPv4/IPv6单播路由、BGP-VPN IPv4/IPv6单播路由和BGP EVPN路由生效。
以下路由不受update wait-install命令的影响:
· 通过import-route命令引入的路由
· 通过network命令发布的路由
· 通过default-route imported命令引入的缺省路由
· BGP EVPN源路由
update wait-install命令只对执行该命令后才生成的BGP路由生效。若需要对执行update wait-install命令前就生成的BGP路由也生效,请执行reset bgp命令复位BGP会话以重新获取路由。
BGP实例视图和地址族视图下同时配置update wait-install命令时,以地址族视图下的配置为准。
update wait-install命令不能和routing-table bgp-rib-only命令同时配置。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 配置BGP路由添加到本地FIB后才能通过Update消息发送。
update wait-install
缺省情况下,设备通过Update消息发送BGP路由时不判断该路由是否已经添加到本地FIB。
(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路由添加到本地FIB后才能通过Update消息发送。
update wait-install
缺省情况下,设备通过Update消息发送BGP路由时不判断该路由是否已经添加到本地FIB。
(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路由添加到本地FIB后才能通过Update消息发送。
update wait-install
缺省情况下,设备通过Update消息发送BGP路由时不判断该路由是否已经添加到本地FIB。
路由迭代变化可以分为以下两种:
· 紧急路由迭代变化:路由迭代变化后路由是否可达也发生变化,如由于网络故障,BGP路由无法正确迭代出下一跳路由或隧道,导致流量中断。
· 非紧急路由迭代变化:迭代路由或依赖路由发生变化,但路由是否可达未变化,如BGP路由迭代出的接口或隧道发生了变化,但流量仍可以正确转发。
当BGP路由的迭代路由或依赖路由频繁变化时,开启本功能为下一跳路由的变化配置延迟响应时间,可以减少不必要的重新选路和Update消息的发送,从而避免路由变化时流量大量丢失的问题。
本功能仅适用于到达同一目的地有多条链路的场景。当去往某一目的地的链路唯一时,如果配置本功能,则在链路故障后会造成更大的流量损失。
请根据实际组网配置适当的延迟响应时间。配置时间过短可能由于路由未收敛完成,导致BGP依然进行了不必要的重新选路和Update消息的发送;配置时间过长可能造成不必要的流量损失。
(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) 开启下一跳路由迭代变化延迟响应功能。
nexthop recursive-lookup [ non-critical-event ] delay [ delay-value ]
缺省情况下,下一跳路由迭代变化延迟响应功能处于关闭状态。
(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) 开启下一跳路由迭代变化延迟响应功能。
nexthop recursive-lookup [ non-critical-event ] delay [ delay-value ]
缺省情况下,下一跳路由迭代变化延迟响应功能处于关闭状态。
BGP路由的下一跳迭代到的依赖路由或者隧道发生变化时,会触发该BGP路由重新进行迭代。在频繁震荡的网络中,BGP路由可能会反复进行路由迭代,导致设备的CPU占用率居高不下。为了解决上述问题,可以配置本功能,使得BGP路由在进行下一跳路由迭代时先等待一段时间,一段时间过后再产生迭代的结果,从而降低BGP路由进行下一跳迭代的频率,减轻设备CPU的运行压力。
配置了抑制时间后,BGP路由进行多次迭代的流程如图1-8所示。
图1-8 BGP路由迭代抑制流程图
配置了抑制时间时,BGP路由开始进行迭代后,需要等待一段抑制时间,抑制时间结束后才能得到迭代结果,该迭代结果为抑制时间T内设备为BGP路由计算出的后一个下一跳迭代路由。BGP得到路由迭代结果并在BGP路由表中更新该结果后,如果BGP路由迭代的结果又发生了变化,则会重新进行路由迭代流程。
如果配置本命令时,指定了最大抑制时间,则表明BGP采用动态的方式对路由迭代进行抑制。在该方式中,如果BGP路由迭代的结果持续变化,则BGP对路由迭代的抑制时间会越来越长,直到抑制时间达到配置的最大时间;如果BGP路由迭代的结果不再变化,则抑制时间会回落。
采用动态方式时,抑制时间T的计算方式如下:
· BGP路由开始第一次路由迭代(即BGP路由迭代的计数次数N=1)时,抑制时间T为配置的minimum-interval的值。
· BGP路由在开始第N次(N不小于2)下一跳路由迭代时,抑制时间T=minimum-interval+incremental-interval×[2^(N-2)]。T的最大值为配置的maximum-interval的值。
· 如果连续三次BGP路由迭代的抑制时间都为maximum-interval的值,则下一次该路由进行路由迭代时,抑制时间T为minimum-interval的值,并恢复BGP路由迭代的计数次数N值为1。
· 如果在两倍的maximum-interval值的时间内,BGP路由的迭代结果都没有变化,则下一次该路由进行迭代时,抑制时间T为minimum-interval的值,并恢复BGP路由迭代的计数次数N值为1。
多次执行nexthop recursive-lookup restrain命令携带不同的参数或为参数配置不同的值时,可以修改BGP路由迭代的抑制时间参数。但是修改后的配置不会立即生效,而是等到本次BGP路由迭代结果更新后,下一次开始为BGP路由计算下一跳迭代路由时才生效。
请根据BGP路由下一跳所在的实例来判断在哪个视图下配置nexthop recursive-lookup restrain命令。如果BGP路由下一跳处在公网,想要让该BGP路由延迟迭代时,需要在BGP实例视图下配置nexthop recursive-lookup restrain命令;如果BGP路由下一跳处在VPN实例中,则需要在该VPN实例对应的BGP-VPN实例视图下配置nexthop recursive-lookup restrain命令。查看BGP路由下一跳所在实例的方法是:
(1) 执行display ip routing-table verbose命令或display ipv6 routing-table verbose命令,查找BGP路由对应的IP/IPv6路由中的“NibID”字段。
(2) 根据“NibID”字段,执行display rib nib或display ipv6 rib nib命令,查找指定下一跳信息中的“VrfNthp”字段。“VrfNthp”字段表示路由下一跳所在的VPN实例索引,该索引对应的实例即为BGP路由下一跳所在实例。
有关display ip routing-table verbose、display ipv6 routing-table verbose、display rib nib和display ipv6 rib nib命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“IP路由基础”。
同时执行nexthop recursive-lookup restrain命令和nexthop recursive-lookup delay命令时,BGP路由开始迭代后,需要等待以上两者配置的抑制时间之和的时间,迭代后的BGP路由才能指导流量转发。
本功能会导致BGP路由迭代的效率降低、路由收敛速度变慢,请根据网络的实际情况判断是否需要配置本命令,以及配置的抑制时间参数。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置BGP路由迭代的抑制功能。
nexthop recursive-lookup restrain { maximum-interval [ minimum-interval [ incremental-interval ] ] | millisecond interval }
缺省情况下,不对BGP路由迭代进行抑制。
配置的minimum-interval和incremental-interval的时长不能大于maximum-interval的时长。
缺省情况下,从对等体接收到的BGP路由进行下一跳路由迭代时,优先在直连路由中查找依赖路由。仅未查找到匹配的直连路由时,才会在所有路由协议产生的路由中按照最长匹配方式进行查找。此机制可能会引发如下问题:设备的直连路由所在子网包含BGP路由的下一跳地址时,BGP路由会迭代下一跳至该直连路由,此时设备认为下一跳地址为本地直连,直接使用BGP路由表中的下一跳作为FIB表中的真实下一跳,导致匹配该BGP路由的报文转发失败,造成网络流量中断。
以图1-9为例,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-9 直连路由包含BGP路由的下一跳时路由迭代错误示意图
通过配置本功能,可以使从对等体接收到的BGP路由迭代下一跳时,直接在所有路由协议产生的路由中按照最长匹配方式查找依赖路由,以保证查找到的依赖路由可达。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
(3) 配置BGP路由进行下一跳路由迭代查找时采用最长匹配方式。
nexthop recursive-lookup longest-match [ route-policy route-policy-name ]
缺省情况下,未配置下一跳路由迭代查找时采用最长匹配方式。
未指定route-policy route-policy-name参数或该参数指定的路由策略不存在时,所有从对等体接收到的BGP路由进行下一跳路由迭代查找时都采用最长匹配方式。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv6单播地址族视图或BGP-VPN IPv6单播地址族视图。
¡ 请依次执行以下命令进入BGP IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
(3) 配置BGP路由进行下一跳路由迭代查找时采用最长匹配方式。
nexthop recursive-lookup longest-match [ route-policy route-policy-name ]
缺省情况下,未配置下一跳路由迭代查找时采用最长匹配方式。
未指定route-policy route-policy-name参数或该参数指定的路由策略不存在时,所有从对等体接收到的BGP路由进行下一跳路由迭代查找时都采用最长匹配方式。
BGP如果在路由迭代的过程中不对迭代的结果路由进行任何限制,则可能会将路由迭代到一个错误的转发路径上。可以通过配置本功能,使得用户可以通过路由策略灵活的匹配条件,有选择性地影响BGP路由的迭代结果,从而保证BGP路由的下一跳能够迭代到用户期望的路径上。
配置本功能后,BGP路由的下一跳只能迭代到能通过路由策略过滤的路由上,如果BGP路由迭代到的下一跳路由均无法通过路由策略的过滤,则该路由将被标识为不可达,无法生效。路由通过路由策略过滤的判断条件是:路由能够通过本命令指定的路由策略中允许模式节点的过滤。
在某些组网环境中,如果不希望来自特定对等体的路由受迭代策略控制,可以配置peer nexthop-recursive-policy disable命令,使得本功能以及protocol nexthop recursive-lookup命令对于从指定对等体/对等体组学习到的BGP路由不生效。
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路由基础”。
· 配置BGP路由根据路由策略来过滤迭代到的下一跳路由((IPv4单播))
· 配置BGP路由根据路由策略来过滤迭代到的下一跳路由((IPv6单播))
· (可选)配置从对等体/对等体组学到的路由不受迭代策略控制
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP IPv4单播地址族视图。
address-family ipv4 [ unicast ]
(4) 配置BGP路由根据路由策略来过滤迭代到的下一跳路由。
nexthop recursive-lookup route-policy route-policy-name
缺省情况下,BGP不根据路由策略来过滤迭代到的下一跳路由。
配置本命令后,如果地址族中的所有BGP路由迭代到的下一跳路由均无法通过路由策略的过滤,该地址族下的所有BGP路由将全部成为不可达路由。请用户在配置本命令前,提前规划期望迭代到的下一跳路由,使其能够通过指定路由策略中允许模式节点的过滤。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP IPv6单播地址族视图。
address-family ipv6 [ unicast ]
(4) 配置BGP路由根据路由策略来过滤迭代到的下一跳路由。
nexthop recursive-lookup route-policy route-policy-name
缺省情况下,BGP不根据路由策略来过滤迭代到的下一跳路由。
为了防止指定地址族中的所有BGP路由迭代到的下一跳路由均无法通过路由策略的过滤,导致该地址族下的所有BGP路由均成为不可达路由,请在配置本命令前,确保用户期望迭代到的下一跳路由能够通过指定路由策略中允许模式节点的过滤。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 配置从对等体/对等体组学到的路由不受迭代策略控制。
peer { group-name | ip-address [ mask-length ] | ipv6-address [ prefix-length ] } nexthop-recursive-policy disable
缺省情况下,从对等体/对等体组学到的路由受迭代策略控制。
配置本命令后,对于从指定对等体/对等体组学习到的BGP路由,nexthop recursive-lookup route-policy命令和protocol nexthop recursive-lookup命令均不生效。
通过配置本功能,可以抑制BGP邻居状态频繁切换,减少BGP报文的发送和CPU及带宽资源的占用,降低设备负担。
配置本功能后,如果BGP会话在短时间内反复up/down,则每次BGP会话启动时保持在Idle状态的时间都将被延长,达到所配置的Idle状态最长保持时间后该时间不再继续增长;当此BGP会话保持Established状态时间大于等于配置的抑制回退时间时,下次BGP会话启动的Idle保持时间将重置为初始值。
请根据实际组网配置适当的Idle状态最长保持时间和抑制回退时间,Idle状态最长保持时间过短可能起不到抑制作用,过长可能导致BGP邻居长时间不能建立连接。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置邻居震荡抑制功能。
peer { group-name | ipv4-address | ipv6-address } flap-dampen [ max-idle-time max-time | min-established-time min-time ]*
缺省情况下,对等体/对等体组的邻居震荡抑制功能处于关闭状态。
当系统进入二级内存门限告警状态后,BGP会周期性地选择一个EBGP对等体,断开与该对等体之间的BGP会话,直到系统内存恢复为止。用户可以通过本配置来避免在二级内存门限告警状态下,断开与指定EBGP对等体/对等体组之间的BGP会话,以达到对特定EBGP对等体/对等体组进行保护的目的。
内存告警门限的详细介绍,请参见“基础配置指导”中的“设备管理”。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置系统进入二级内存门限告警状态后,不断开与指定EBGP对等体/对等体组之间的会话。
peer { group-name | ipv4-address [ mask-length ] } low-memory-exempt
缺省情况下,系统在二级内存门限告警状态下,会周期性地选择一个EBGP对等体,并断开与该对等体之间的BGP会话。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置系统进入二级内存门限告警状态后,不断开与指定EBGP对等体/对等体组之间的会话。
peer { group-name | ipv6-address [ prefix-length ] } low-memory-exempt
缺省情况下,系统在二级内存门限告警状态下,会周期性地选择一个EBGP对等体,并断开与该对等体之间的BGP会话。
DSCP(Differentiated Services Code Point,差分服务编码点)携带在IP报文中的ToS字段,用来体现报文自身的优先等级,决定报文传输的优先程度。通过配置本功能,可以对BGP发送协议报文的DSCP优先级进行设置。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置BGP发送协议报文的DSCP优先级。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } dscp dscp-value
缺省情况下,BGP发送协议报文的DSCP优先级为48。
开启BGP次优路由下刷RIB功能后,当BGP路由表中最优路由为通过network命令生成或import-route命令引入的路由,次优路由为从BGP对等体收到的路由时,次优路由会下刷到RIB表项中。在某些组网情况下,执行本命令下刷到达同一目的网络次优路由到RIB后,当最优路由发生故障时,系统可以快速切换到次优路由。例如,设备有一条到达1.1.1.0/24网络的静态路由,其优先级高于BGP路由,BGP本地引入该静态路由同时从对等体收到到达该网段的路由,执行本命令BGP将从对等体收到的路由作为次优路由下刷到RIB,这时如果开启协议间的FRR功能,当静态路由发生故障时,本地引入的静态路由不可达,系统可以快速切换到BGP次优路由,从而大大缩短了流量中断时间。
协议间FRR功能的详细介绍,请参见“三层技术-IP路由配置指导”中的“IP路由基础”。
(1) 进入系统视图。
system-view
(2) 进入BGP视图。
bgp as-number [ instance instance-name ]
(3) 开启BGP次优路由下刷RIB功能。
flush suboptimal-route
缺省情况下,BGP次优路由下刷RIB功能处于关闭状态,即只有BGP最优路由可以下刷到RIB。
对等体监控组主要应用于流量切换场景。例如,当一台本地设备同时从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状态。
每个BGP对等体只对应一个BGP会话,无论该对等体在多少个地址族下建立了连接。对等体组中的BGP对等体数量决定了BGP会话的数量。使用相同IP地址在不同BGP-VPN实例和BGP公网实例下建立的BGP会话,会被视为多个会话。
不允许将同一个BGP对等体/对等体组加入到不同的对等体监控组中。
(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
可在任意视图下执行以下命令,显示对等体监控组的信息。
display bgp [ instance instance-name ] monitor-group { all | group-name monitor-group-name }
在路由反射器上配置本功能,禁止路由反射器上的BGP路由下发到IP路由表,可以使得路由反射器仅用于发布和接收路由,而不进行业务流量转发,以节省路由反射器上的系统资源。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
(3) 配置BGP路由禁止下发到IP路由表中。
routing-table bgp-rib-only [ all ] [ route-policy route-policy-name ]
缺省情况下,BGP将最优路由下发到IP路由表中。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv6单播地址族视图或BGP-VPN IPv6单播地址族视图。
¡ 请依次执行以下命令进入BGP IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
(3) 配置BGP路由禁止下发到IP路由表中。
routing-table bgp-rib-only [ all ] [ route-policy route-policy-name ]
缺省情况下,BGP将最优路由下发到IP路由表中。
通过配置本功能,BGP可以通过以下三种方式为私网路由申请标签:
· 为每条路由申请一个标签:采用这种方式时,路由条目和标签一一对应;
· 为每个下一跳申请一个标签:当按照每条路由申请标签方式需要申请的标签数量大于设备支持的最大标签数目时,通过采用此方式,可以减少申请的标签数量;
· 为每个VPN实例申请一个标签:当存在大量需要申请标签的路由,并且采用下一跳申请标签的方式申请的标签数量仍然超过设备支持的最大标签数目时,可以采用此方式。
为每条路由或者每个下一跳申请标签方式可以与vpn popgo命令配合使用,以实现报文根据标签查找出接口转发报文;为每个VPN实例申请标签方式与vpn popgo命令互斥,采用该方式时,只能根据标签查找FIB转发报文。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 配置标签申请方式。
label-allocation-mode { per-prefix | per-vrf }
缺省情况下,BGP按照每个下一跳分配一个标签的方式申请标签。
改变标签分配方式将重新下刷所有BGP路由,会导致业务的短暂中断,请慎重使用。
通过配置本功能,带隧道信息的标签路由才能参与路由优选。不带隧道信息的标签路由不能参与路由优选,即无法成为最优路由。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 配置带隧道信息的标签路由才能参与路由优选。
labeled-route ignore-no-tunnel
缺省情况下,不带隧道信息的标签路由可以参与路由优选。
邻居地址不可达检测功能用来为BGP协议快速检测链路故障。配置本功能后,BGP会对指定对等体(或对等体组内所有对等体)的IP地址进行不可达检测。如果检测到IP地址不可达,则断开与该对等体的BGP会话。
以下两种情况下,BGP会认为对等体不可达:
· 在对应公网实例或VPN实例的路由表中,对等体的IP地址没有匹配的路由。
· 在对应公网实例或VPN实例的路由表中,对等体的IP地址匹配到的路由是出接口为NULL0的黑洞路由。
配置本功能时如果未携带delay delay-time参数,则检测到IP地址不可达时,BGP会立刻断开与对等体的BGP会话。
根据实际情况,灵活配置断开会话的延迟时间,可以提高网络的稳定性:
· 网络中的流量闪断时,IGP路由将产生震荡。此时,依靠IGP路由建立的IBGP会话也会产生震荡。建议为IBGP对等体/对等体组配置的延迟时间大于IGP路由的收敛时间,以避免流量闪断造成的BGP会话震荡。
· 本地路由器作为BGP GR Helper,通过本命令检测GR Restarter的可达性时,为GR Restarter配置的延迟时间要大于GR Restarter通告的BGP会话重建时间加上GR Helper上配置的等待重建额外时间,否则会导致BGP会话断开,设备退出GR过程。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 对指定对等体/对等体组开启邻居地址不可达检测功能。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } tracking [ delay delay-time ]
缺省情况下,邻居地址不可达检测功能处于关闭状态。
执行本命令时,如果指定的IPv6地址是链路本地地址,则本命令不生效。
如图1-10所示,Host设备频繁在无线站点AP 1和AP 2之间漫游,导致Device A和Device C上都存在Host设备主机路由。由于这些表项不会实时更新,因此可能影响数据报文的正常转发。配置本功能后,终端在不同AP间迁移时可以快速更新主机路由,从而使得主机迁移后能够快速上线。
在Device A和Device C上配置快速更新主机路由功能之后,Host在AP 1和AP 2之间的迁移过程如下:
(2) Host首次在AP 1处上线,Device A上生成对应的主机路由,并通过BGP路由经Device B通告给Device C。
(3) Host迁移至AP 2处上线,Device C上生成对应的主机路由,此时Device C上存在两条相同的主机路由,BGP优选本地新上线的主机路由,并将主机迁移序列号加一后通过BGP路由经Device B通告给Device A。
(4) Device B收到Device C发布的主机路由,至此Device B已分别从Device A和Device C收到两条相同的主机路由,优选迁移序列号更大的(从Device C收到的)路由,刷新转发表后向Device A通告。
(5) 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表项是否存在。
主机迁移序列号通过扩展团体属性进行传递。因此配置本功能后,设备将自动开启本地与所有对等体之间的支持扩展团体属性能力,即本地向所有对等体发送的路由中都允许携带扩展团体属性。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP IPv4单播地址族视图。
address-family ipv4 [ unicast ]
(4) 开启主机迁移后的快速更新主机路由功能。
user-move fast-update
缺省情况下,快速更新主机路由功能处于关闭状态。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP IPv6单播地址族视图。
address-family ipv6 [ unicast ]
(4) 开启主机迁移后的快速更新主机路由功能
user-move fast-update
缺省情况下,快速更新主机路由功能处于关闭状态。
当BGP路由策略或协议发生变化后,可以通过复位BGP会话使新的配置生效。执行复位BGP相关命令后,设备会断开并重新建立BGP邻居关系,以便更新BGP路由信息。
复位BGP会话时,会造成短暂的BGP会话中断。
本节所有命令的详细介绍,请参见“三层技术-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 ]
· 复位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 ]
· 复位所有BGP会话。
reset bgp [ instance instance-name ] all
所有路由器运行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转发的前缀相同下一跳不同的路由信息。
图1-11 BGP Add-Path配置组网图
表1-1 组网图示例接口与设备实际接口对应关系
|
组网图示例接口 |
设备实际接口 |
|
Interface1 |
FourHundredGigE1/0/1 |
|
Interface2 |
FourHundredGigE1/0/2 |
|
Interface3 |
FourHundredGigE1/0/3 |
表1-2 组网图接口与IP地址对应关系
|
设备 |
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
|
Router A |
400GE1/0/1 |
10.1.1.1/24 |
Router D |
400GE1/0/1 |
30.1.1.1/24 |
|
|
400GE1/0/2 |
20.1.1.1/24 |
|
400GE1/0/2 |
40.1.1.1/24 |
|
Router B |
400GE1/0/1 |
10.1.1.2/24 |
|
400GE1/0/3 |
50.1.1.1/24 |
|
|
400GE1/0/2 |
30.1.1.2/24 |
Router E |
400GE1/0/1 |
50.1.1.2/24 |
|
Router C |
400GE1/0/1 |
20.1.1.2/24 |
|
|
|
|
|
400GE1/0/2 |
40.1.1.2/24 |
|
|
|
(1) 配置各接口的IP地址。
(2) 配置BGP连接
# 配置Router A。
<RouterA> system-view
[RouterA] bgp 10
[RouterA-bgp-default] peer 10.1.1.2 as-number 20
[RouterA-bgp-default] peer 20.1.1.2 as-number 20
[RouterA-bgp-default] address-family ipv4 unicast
[RouterA-bgp-default-ipv4] peer 10.1.1.2 enable
[RouterA-bgp-default-ipv4] peer 20.1.1.2 enable
# 配置Router B。
<RouterB> system-view
[RouterB] bgp 20
[RouterB-bgp-default] peer 10.1.1.1 as-number 10
[RouterB-bgp-default] peer 30.1.1.1 as-number 20
[RouterB-bgp-default] address-family ipv4 unicast
[RouterB-bgp-default-ipv4] peer 10.1.1.1 enable
[RouterB-bgp-default-ipv4] peer 30.1.1.1 enable
# 配置Router C。
<RouterC> system-view
[RouterC] bgp 20
[RouterC-bgp-default] peer 20.1.1.1 as-number 10
[RouterC-bgp-default] peer 40.1.1.1 as-number 20
[RouterC-bgp-default] address-family ipv4 unicast
[RouterC-bgp-default-ipv4] peer 20.1.1.1 enable
[RouterC-bgp-default-ipv4] peer 40.1.1.1 enable
# 配置Router D。
<RouterD> system-view
[RouterD] bgp 20
[RouterD-bgp-default] peer 30.1.1.2 as-number 20
[RouterD-bgp-default] peer 40.1.1.2 as-number 20
[RouterD-bgp-default] peer 50.1.1.2 as-number 20
[RouterD-bgp-default] address-family ipv4 unicast
[RouterD-bgp-default-ipv4] peer 30.1.1.2 enable
[RouterD-bgp-default-ipv4] peer 40.1.1.2 enable
[RouterD-bgp-default-ipv4] peer 50.1.1.2 enable
# 配置Router E。
<RouterE> system-view
[RouterE] bgp 20
[RouterE-bgp-default] peer 50.1.1.1 as-number 20
[RouterE-bgp-default] address-family ipv4 unicast
[RouterE-bgp-default-ipv4] peer 50.1.1.1 enable
(3) 配置发布本地路由
# 配置Router A发布本地10.1.1.0 24的路由信息
[RouterA-bgp-default-ipv4] network 10.1.1.0 24
(4) 将下一跳的属性修改成自身的地址
# 配置Router B。
[RouterB-bgp-default-ipv4] peer 30.1.1.1 next-hop-local
# 配置Router C。
[RouterC-bgp-default-ipv4] peer 40.1.1.1 next-hop-local
(5) 配置路由反射器
# 配置Router D。
[RouterD-bgp-default-ipv4] peer 50.1.1.2 reflect-client
(6) 配置Add-Path
# 配置Router D使能Add-Path发送能力,配置Add-Path优选路由的最大条数为2,配置向对等体50.1.1.2发送Add-Path优选路由的最大条数为2。
[RouterD-bgp-default-ipv4] peer 50.1.1.2 additional-paths send
[RouterD-bgp-default-ipv4] additional-paths select-best 2
[RouterD-bgp-default-ipv4] peer 50.1.1.2 advertise additional-paths best 2
# 配置Router E使能Add-Path接收能力。
[RouterE-bgp-default-ipv4] peer 50.1.1.1 additional-paths receive
# 查看Router E的BGP路由信息。
[Router E] display bgp routing-table ipv4
Total number of routes: 2
BGP local router ID is 50.1.1.2
Status codes: * - valid, > - best, d - dampened, h - history
s - suppressed, S - stale, i - internal, e - external
a - additional-path
Origin: i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
i 10.1.1.0/24 30.1.1.2 0 100 0 10i
i 40.1.1.2 0 100 0 10i
可以看到从Router D学到的两条前缀相同下一跳不同的路由信息。
BGP安全功能配置任务如下:
通过为BGP对等体配置BGP的MD5认证,可以在以下两方面提高BGP的安全性:
· 为BGP建立TCP连接时进行MD5认证,只有两台路由器配置的密钥相同时,才能建立TCP连接,从而避免与非法的BGP路由器建立TCP连接。
· 传递BGP报文时,对封装BGP报文的TCP报文段进行MD5运算,从而保证BGP报文不会被篡改。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置BGP的MD5认证。
peer { group-name | ipv4-address [ mask-length ] } password { cipher | simple } password
缺省情况下,不进行BGP的MD5认证。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置BGP的MD5认证。
peer { group-name | ipv6-address [ prefix-length ] } password { cipher | simple } password
缺省情况下,不进行BGP的MD5认证。
GTSM(Generalized TTL Security Mechanism,通用TTL安全保护机制)是一种简单易行的、对基于IP协议的上层业务进行保护的安全机制。GTSM通过检查接收到的IP报文头中的TTL值是否在一个预先定义好的范围内,来判断IP报文是否合法,避免攻击者向网络设备发送大量有效的IP报文时对网络设备造成的CPU利用(CPU-utilization)等类型的攻击。
配置BGP GTSM功能时,用户可以指定本地设备到达某个对等体的最大跳数为hop-count,则从该对等体接收到的BGP报文的合法TTL范围为255-“hop-count”+1到255。只有来自该对等体的报文TTL值在该合法范围内时,才将报文上送CPU处理;否则,直接丢弃报文。另外,配置BGP GTSM功能后,设备会将发送报文的初始TTL设置为255。
对于直连EBGP对等体,GTSM可以提供最佳的保护效果;对于非直连EBGP或IBGP对等体,由于中间设备可能对TTL值进行篡改,GTSM的保护效果受到中间设备安全性的限制。
执行本配置后,只要本地设备和指定的对等体通过了GTSM检查,就允许在二者之间建立EBGP会话,不管二者之间的跳数是否超过peer ebgp-max-hop命令指定的跳数范围。
使用BGP GTSM功能时,要求本设备和对等体设备上同时配置本特性,指定的hop-count值可以不同,只要能够满足合法性检查即可。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 使能对等体/对等体组的BGP GTSM功能。
peer { group-name | ipv4-address [ mask-length ] } ttl-security hops hop-count
缺省情况下,BGP GTSM功能处于关闭状态。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 使能对等体/对等体组的BGP GTSM功能。
peer { group-name | ipv6-address [ prefix-length ] } ttl-security hops hop-count
缺省情况下,BGP GTSM功能处于关闭状态。
配置keychain认证可以提高TCP连接的安全性。为了保证正常建立TCP连接、正常交互BGP消息,BGP对等体两端必须同时配置keychain认证,且两端使用的keychain需要满足如下条件:
· 同一时间内使用的key的标识符相同。
· 相同标识符的key的认证算法和认证密钥必须一致。
关于keychain的介绍和配置,请参见“安全配置指导”中的“keychain”。
(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认证。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置BGP的keychain认证。
peer { group-name | ipv6-address [ prefix-length ] } keychain keychain-name
缺省情况下,不进行BGP的keychain认证。
BGP路由中的AS_PATH属性记录了某条路由从本地到某个IP地址(网段)所要经过的所有AS号。其中,该IP地址(网段)所处的AS称为源AS。如果源AS号错误会导致无法到达指定IP地址(网段)甚至网络瘫痪。使用BGP RPKI(Resource Public Key Infrastructure,资源公钥基础设施)功能,设备在收到BGP路由的时候,会验证源AS是否合法,并根据验证结果来决定是否使用该BGP路由以及是否发布该路由。
路由器通过TCP协议与RPKI服务器建立连接。TCP连接建立后,路由器从RPKI服务器获取ROA信息。
路由器会根据刷新时间间隔检测与RPKI服务器的连接关系,如果在响应时间内没有收到服务器的回应,路由器与RPKI服务器的连接断开。
与RPKI服务器的连接断开后(不包括用户执行shutdown命令关闭接口引起的连接断开),路由器会尝试与RPKI服务器重新建立连接,并将从该服务器获得的ROA信息置为老化状态,路由器将执行如下操作:
· 如果老化时间内,路由器重新与RPKI服务器建立连接,则解除ROA信息的老化状态。
· 如果直到老化时间超时,路由器与RPKI服务器仍然无法重新建立连接,则删除该ROA信息。
ROA信息的老化时间建议大于BGP RPKI服务器的响应等待时间。
RPKI连接建立后,会一直处于通信状态,并周期更新ROA信息。如果需要暂时断开某个RPKI连接,请在BGP RPKI服务器视图下执行undo port命令。
执行undo rpki命令后,BGP RPKI视图下的所有配置都会被删除。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 开启BGP RPKI功能,并进入BGP RPKI视图。
rpki
(4) 配置BGP RPKI服务器地址,并进入BGP RPKI服务器视图。
server [ vpn-instance vpn-instance-name ] tcp { ipv4-address | ipv6-address }
缺省情况下,未配置BGP RPKI的服务器地址。
(5) 配置BGP RPKI服务端口号。
port port-number
缺省情况下,未配置BGP RPKI服务端口。
只有配置与BGP RPKI服务器连接的TCP端口,才能与RPKI服务器建立连接,且本地配置的端口号必须与BGP RPKI服务器上使用的端口号保持一致。
(6) (可选)指定RPKI连接中使用的MD5认证密码。
passwords { cipher | simple } string
缺省情况下,BGP RPKI服务器不进行MD5的认证。
使用MD5认证时,认证密码必须与RPKI服务器上的认证密码保持一致。MD5认证既可以确保路由器与合法的BGP RPKI服务器建立连接,也可以确保BGP RPKI报文不会被篡改。
(7) (可选)配置RPKI连接的检测周期。
refresh-time refresh-time
缺省情况下,RPKI连接的检测周期为600秒。
本功能用于检测路由器与RPKI服务器的连接状态。
(8) (可选)配置等待BGP RPKI服务器的响应时间。
response-time response-time
缺省情况下,等待BGP RPKI服务器响应时间为30秒。
(9) (可选)配置ROA信息的老化时间。
purge-time purge-time
缺省情况下,ROA信息的老化时间为60秒。
配置本功能后,设备收到BGP路由时,会对IP地址(网段)和源AS号进行RPKI验证。验证结果有三种:Not-found、Valid和Invalid。同时满足以下三个条件则验证结果为Valid,不满足条件(1)则验证结果为Not-found,满足条件(1)但不满足条件(2)或(3)则验证结果为Invalid。
(1) ROA数据库中至少存在一条包含该BGP路由前缀的表项。
(2) 该BGP路由前缀的掩码长度小于或等于ROA数据库中所有表项的最大掩码长度。
(3) ROA数据库表项中的AS号和收到的路由的源AS号相同。
配置本功能后,设备将使用本地验证的结果作为RPKI验证结果;未配置本功能时,将使用BGP路由报文中的RPKI验证结果。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP RPKI视图。
rpki
(4) 开启BGP RPKI验证功能。
check-origin-validation
缺省情况下,BGP RPKI验证功能处于关闭状态。
RPKI验证结果的优先级从高到低依次为Valid、Not found、Invalid。
配置本功能后,RPKI验证结果将参与路由优选。BGP选择路由时首先丢弃下一跳不可达的路由,其次按照RPKI验证结果进行路由优选,即对于去往同一个IP地址(网段)的多条BGP路由,选择RPKI验证结果优先级最高的路由为最优路由。如果RPKI验证结果相同,则根据BGP的选路规则选择路由。
无RPKI验证结果的路由在与有验证结果的路由共同参与路由优选时,按Not-found验证结果处理。
用户可以使用路由策略设置BGP RPKI验证结果的匹配条件,从而灵活控制路由的发布与接收。关于路由策略的详细介绍,请参见“三层技术-IP路由配置指导”中的“路由策略”。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
(3) 配置BGP RPKI验证结果参与路由优选。
bestroute origin-as-validation [ allow-invalid ]
缺省情况下,BGP RPKI验证结果不参与路由优选。
未配置allow-invalid参数时,验证结果为Invalid的路由不参与路由优选。如果希望验证结果为Invalid的路由参与路由优选,可以配置allow-invalid参数。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv6单播地址族视图或BGP-VPN IPv6单播地址族视图。
¡ 请依次执行以下命令进入BGP IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
(3) 配置BGP RPKI验证结果参与路由优选。
bestroute origin-as-validation [ allow-invalid ]
缺省情况下,BGP RPKI验证结果不参与路由优选。
未配置allow-invalid参数时,验证结果为Invalid的路由不参与路由优选。如果希望验证结果为Invalid的路由参与路由优选,可以配置allow-invalid参数。
BGP RPKI验证结果以扩展团体属性的方式传递,配置本条命令前必先配置向对等体/对等体组发布扩展团体属性且RPKI正确配置。未配置向对等体/对等体组发布扩展团体属性,此配置不生效。
目前,设备仅支持向IBGP对等体/对等体组发送BGP RPKI验证结果。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图。
¡ 请依次执行以下命令进入BGP IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
(3) 配置向对等体/对等体组发布扩展团体属性。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise-ext-community
缺省情况下,不向对等体/对等体组发布扩展团体属性。
(4) 配置向对等体/对等体组发送BGP RPKI验证结果。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise origin-as-validation
缺省情况下,不会向对等体/对等体组发送BGP RPKI验证结果。
(1) 进入系统视图。
system-view
(2) 进入BGP IPv6单播地址族视图或BGP-VPN IPv6单播地址族视图。
¡ 请依次执行以下命令进入BGP IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv6单播地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
(3) 配置向对等体/对等体组发布扩展团体属性。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise-ext-community
缺省情况下,不向对等体/对等体组发布扩展团体属性。
(4) 配置向对等体/对等体组发送BGP RPKI验证结果。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise origin-as-validation
缺省情况下,不会向对等体/对等体组发送BGP RPKI验证结果。
可在任意视图下执行以下命令:
· 显示与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 ]
可在任意视图下执行以下命令:
· 显示与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
在用户视图下执行以下命令复位BGP RPKI连接。
reset bgp [ instance instance-name ] rpki server [ vpn-instance vpn-instance-name ] tcp { ipv4 address | ipv6 address }
配置本命令后,设备将删除并重新建立指定的BGP RPKI会话,会造成BGP RPKI会话短暂中断。
可在任意视图执行以下命令,显示BGP GTSM功能丢弃报文数量的统计信息。
display ttl-security statistics [ slot slot-number ]
请在用户视图下执行以下命令,清除BGP GTSM功能丢弃报文数量的统计信息。
reset ttl-security statistics [ slot slot-number ]
· 所有路由器运行BGP协议,Router A与RPKI服务器建立连接。Router A与Router B建立IBGP连接。
· Router A将BGP RPKI验证结果发送给Router B。
· 配置路由策略,使得Router B对收到的BGP RPKI验证结果设置匹配条件,控制路由的接收。
图2-1 BGP RPKI配置组网图
表2-1 组网图示例接口与设备实际接口对应关系
|
组网图示例接口 |
设备实际接口 |
|
Interface1 |
FourHundredGigE1/0/1 |
(1) 配置各接口的IP地址,在Router A和Router B上配置BGP,建立IBGP邻居,配置过程略
(2) 配置Router A与RPKI服务器建立连接
<RouterA> system-view
[RouterA] bgp 100
[RouterA-bgp-default] rpki
[RouterA-bgp-default-rpki] server tcp 1.1.1.2
[RouterA-bgp-default-rpki-server] port 1234
[RouterA-bgp-default-rpki-server] quit
(3) 在Router A上开启BGP RPKI验证
[RouterA-bgp-default-rpki] check-origin-validation
[RouterA-bgp-default-rpki] quit
(4) 在Router A上配置BGP RPKI验证结果参与路由优选
[RouterA-bgp-default] address-family ipv4
[RouterA-bgp-default-ipv4] bestroute origin-as-validation
(5) 在Router A上配置向对等体1.2.3.2发送BGP RPKI验证结果
[RouterA-bgp-default-ipv4] peer 1.2.3.2 advertise-ext-community
[RouterA-bgp-default-ipv4] peer 1.2.3.2 advertise origin-as-validation
[RouterA-bgp-default-ipv4] quit
[RouterA-bgp-default] quit
(6) 在Router B上对收到的BGP RPKI验证结果设置匹配条件,仅接收验证结果为Valid的路由
# 配置路由策略。
<RouterB> system-view
[RouterB] route-policy rpki_policy permit node 0
[RouterB-route-policy-rpki_policy-0] if-match rpki valid
[RouterB-route-policy-rpki_policy-0] quit
# 应用路由策略。
[RouterB] bgp 100
[RouterB-bgp-default] address-family ipv4
[RouterB-bgp-default-ipv4] peer 1.2.3.1 route-policy rpki_policy import
# 查看Router A与RPKI服务器的连接信息,可以看到Router A与RPKI服务器已经建立连接。
[RouterA] display bgp rpki server
Server VPN-index Port State Time ROAs(IPv4/IPv6)
1.1.1.2 0 1234 Establish 00:04:43 5/4
# 查看从RPKI服务器获取的ROA信息,可以看到已经获得ROA信息。
[RouterA] display bgp rpki table ipv4
Total number of entries: 5
Status codes: S - stale, U - used
Network Mask-range Origin-AS Server Status
1.2.3.4 8-24 100 1.1.1.2 U
2.2.3.6 8-32 100 1.1.1.2 U
2.2.3.6 10-24 4294967295 1.1.1.2 U
2.2.3.9 20-24 4294967295 1.1.1.2 U
3.2.3.5 8-26 200 1.1.1.2 U
# 查看Router A上BGP RPKI验证结果。
[RouterA] display bgp routing-table ipv4 1.2.3.0
BGP local router ID: 2.2.2.2
Local AS number: 100
Paths: 1 available, 1 best
BGP routing table information of 1.2.3.0/24:
Imported route.
Original nexthop: 0.0.0.0
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验证结果。
· 所有路由器运行BGP协议,Router A与RPKI服务器建立连接。Router A与Router B建立IBGP连接。
· Router A将BGP RPKI验证结果发送给Router B。
· 配置路由策略,使得Router B对收到的BGP RPKI验证结果设置匹配条件,控制路由的接收。
图2-2 BGP RPKI配置组网图
表2-2 组网图示例接口与设备实际接口对应关系
|
组网图示例接口 |
设备实际接口 |
|
Interface1 |
FourHundredGigE1/0/1 |
(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
# 查看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验证结果。
提高BGP网络的可靠性配置任务如下:
· 配置BGP GR
BGP GR(Graceful Restart,平滑重启)是一种在主备倒换或BGP协议重启时保证转发业务不中断的机制。GR有两个角色:
· GR Restarter:发生主备倒换或协议重启,且具有GR能力的设备。
· GR Helper:和GR Restarter具有邻居关系,协助完成GR流程的设备。GR Helper也具有GR能力。
设备既可以作为GR Restarter,又可以作为GR Helper。设备的角色由该设备在BGP GR过程中的作用决定。
BGP GR的工作过程为:
(1) GR Restarter和GR Helper通过Open消息交互GR能力。只有双方都具有GR能力时,建立起的BGP会话才具备GR能力。GR Restarter还会通过Open消息,将本端通过graceful-restart timer restart命令配置的对端等待重建BGP会话时间通告给GR Helper。
(2) 建立具备GR能力的BGP会话后,GR Restarter进行主备倒换或BGP协议重启时,GR Restarter不会删除RIB(Routing Information Base,路由信息库)和FIB(Forwarding Information Base,转发信息库)表项,仍然按照原有的转发表项转发报文,并启动RIB路由老化定时器(定时器的值由graceful-restart timer purge-time命令配置)。GR Helper发现GR Restarter进行主备倒换或BGP协议重启后,GR Helper不会删除从该GR Restarter学习到的路由,而是将这些路由标记为失效路由,仍按照这些路由转发报文,从而确保在GR Restarter进行主备倒换或BGP协议重启的过程中,报文转发不会中断。
(3) GR Restarter主备倒换或BGP协议重启完成后,它会重新与GR Helper建立BGP会话。如果在GR Restarter通告的BGP会话重建时间加上GR Helper上配置的等待重建额外时间(额外时间通过peer graceful-restart timer restart extra命令配置)内没有成功建立BGP会话,则GR Helper会删除标记为失效的路由。
(4) 如果在GR Restarter通告的BGP会话重建时间内成功建立BGP会话,则GR Restarter和GR Helper在建立的BGP会话上进行路由信息交互,以便GR Restarter恢复路由信息、GR Helper根据学习到的路由删除路由的失效标记。
(5) BGP会话建立后,在GR Restarter和GR Helper上都会启动End-Of-RIB(路由信息库结束)标记等待定时器(定时器的值通过graceful-restart timer wait-for-rib命令配置),该定时器用来控制路由信息收敛的速度:
¡ 如果定时器超时前收到了对端发送的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表项。
在TCP连接断开、保持时间超时或BGP会话允许交换路由的地址族发生变化时,BGP会话需要断开并重新建立,造成业务流量转发中断。开启设备通过GR方式复位BGP会话功能后,在TCP连接断开、保持时间超时和BGP会话允许交换路由的地址族发生变化时,设备采用BGP GR方式进行BGP会话重建,仍按照已有的路由信息转发报文,从而避免对流量转发造成影响。
本端配置的等待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的设备上均进行本配置。
(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 ] } 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秒。
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路由信息。
如果在设备上同时配置了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过程成功。
(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秒。
可在任意视图下执行以下命令,显示BGP NSR的运行状态:
display bgp [ instance instance-name ] non-stop-routing status
当BGP网络中的链路或某台路由器发生故障时,需要通过故障链路或故障路由器传输才能到达目的地的报文将会丢失或产生路由环路,数据流量将会被中断。直到BGP根据新的网络拓扑路由收敛后,被中断的流量才能恢复正常的传输。
为了尽可能缩短网络故障导致的流量中断时间,网络管理员可以开启BGP快速重路由功能。
图3-1 BGP快速重路由功能示意图
如图3-1所示,在Router B上开启快速重路由功能后,BGP将为主路由生成备份下一跳。IPv4组网中BGP通过ARP检测主路由的下一跳是否可达,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快速重路由功能。
本功能还可以为等价BGP路由计算备份下一跳,所有形成等价的BGP路由共享计算出来的一个备份下一跳。满足如下条件时,本功能才可以为等价BGP路由计算备份下一跳:
· 同时配置balance和pic命令。
· balance命令配置的负载分担路由条数大于1。
· 形成了等价的BGP路由条数大于1并且小于最大等价条数。
· 除了形成等价的BGP路由外,路由表中还存在其他的相同前缀的有效BGP路由。
(1) 进入系统视图。
system-view
(2) 创建路由策略,并进入路由策略视图。
route-policy route-policy-name permit node node-number
本命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“路由策略”。
(3) 配置快速重路由的备份下一跳地址。
apply fast-reroute backup-nexthop ipv4-address
缺省情况下,未指定快速重路由的备份下一跳地址。
本命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“路由策略”。
(4) 退回系统视图。
quit
(5) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(6) 进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图。
¡ 进入BGP IPv4单播地址族视图
address-family ipv4 [ unicast ]
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
(7) 在当前地址族视图下指定BGP快速重路由引用的路由策略。
fast-reroute route-policy route-policy-name
缺省情况下,BGP快速重路由未引用任何路由策略。
引用的路由策略中,只有apply fast-reroute backup-nexthop和apply ipv6 fast-reroute backup-nexthop命令生效,其他apply子句不会生效。
(1) 进入系统视图。
system-view
(2) 创建路由策略,并进入路由策略视图。
route-policy route-policy-name permit node node-number
本命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“路由策略”。
(3) 配置快速重路由的备份下一跳地址。
apply ipv6 fast-reroute backup-nexthop ipv6-address
缺省情况下,未指定快速重路由的备份下一跳地址。
本命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“路由策略”。
(4) 退回系统视图。
quit
(5) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(6) 进入BGP IPv6单播地址族视图或BGP-VPN IPv6单播地址族视图。
address-family ipv6 [ unicast ]
(7) 在当前地址族视图下指定BGP快速重路由引用的路由策略。
fast-reroute route-policy route-policy-name
缺省情况下,BGP快速重路由未引用任何路由策略。
引用的路由策略中,只有apply fast-reroute backup-nexthop和apply ipv6 fast-reroute backup-nexthop命令生效,其他apply子句不会生效。
在某些组网情况下,执行pic命令为所有BGP路由生成备份下一跳后,可能会导致路由环路,请谨慎使用本功能。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或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快速重路由功能处于关闭状态。
在某些组网情况下,执行pic命令为所有BGP路由生成备份下一跳后,可能会导致路由环路,请谨慎使用本功能。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 进入BGP IPv6单播地址族视图或BGP-VPN IPv6单播地址族视图。
address-family ipv6 [ unicast ]
(4) 开启BGP快速重路由功能。
pic
缺省情况下,BGP快速重路由功能处于关闭状态.
在某些组网情况下,执行pic命令为所有BGP路由生成备份下一跳后,可能会导致路由环路,请谨慎使用本命令。
当用户需要对某台设备上的BGP进程进行调试或升级等维护操作时,可以使用BGP isolate功能或BGP shutdown功能,将该设备上的BGP进程从当前网络中移除。网络中的其他设备重新计算路由,不会再通过该设备转发流量,从而降低设备维护对网络的影响,提高网络的可靠性。
BGP isolate功能和BGP shutdown功能使得网络管理员在进行网络设备维护时,无需删除并重新进行对等体/对等体组相关配置,减少了网络维护的工作量。完成设备维护后,网络管理员可以关闭BGP isolate功能和BGP shutdown功能,以使该设备重新投入使用。
本功能可以将BGP进程从网络中隔离出来,具体工作机制如下:
(1) 开启BGP isolate功能的设备撤销发布给邻居的BGP路由(本设备直连路由除外),同时保留所有从邻居学习到的BGP路由。
(2) 远端邻居收到路由撤销消息后,重新进行路由优选并更新FIB表。在此期间,远端邻居仍然可以通过BGP isolate设备发布的BGP路由转发流量。
(3) 远端邻居删除所有BGP isolate设备发布的BGP路由并完成FIB表项更新后,除目的地为BGP isolate设备的流量外,其他流量不再经过BGP isolate设备。此时,BGP isolate设备完全从当前组网中隔离出来,可以对该设备上的BGP协议进行升级等处理。
(4) 对BGP isolate设备的维护结束后,关闭BGP isolate功能可让该设备重新加入网络。设备重新加入网络后,BGP路由的发布和学习机制如下:
¡ 设备重新向邻居发布路由。
¡ 设备隔离前保留了从邻居学习到的路由。如果设备隔离后没有对BGP协议进行重启等操作,则无需重新进行路由学习;否则,设备重新加入网络后需要重新进行路由学习。
设备进行GR或NSR期间,建议用户不要使用BGP isolate功能,否则无法保证执行操作后的结果与预期结果一致。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 配置BGP isolate功能,将设备的BGP协议从当前组网中隔离出来。
isolate enable
缺省情况下,未配置BGP协议隔离功能。
(4) 完成设备维护后,使设备的BGP重新加入网络。
undo isolate enable
本功能通过暂时断开与所有对等体/对等体组的BGP会话,来实现BGP进程的移除。完成设备维护后,通过取消本功能可以恢复与所有对等体/对等体组的BGP会话。
如果本设备和对等体/对等体组的会话已经建立,则配置本功能后,会断开本设备和对等体/对等体组的会话,并清除所有路由信息。
同时配置本功能和禁止与对等体/对等体组建立会话功能时,若任一功能禁止了与对等体/对等体组建立会话,则设备不能与相应的对等体/对等体组建立BGP会话。禁止与对等体/对等体组建立会话功能的详细介绍,请参见“1.9 禁止与对等体/对等体组建立会话”。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 配置BGP shutdown功能,禁止与所有对等体/对等体组建立会话。
shutdown process
缺省情况下,设备允许与所有BGP对等体/对等体组建立会话。
(4) 完成设备维护后,使设备的BGP重新加入网络。
undo shutdown process
如图3-2所示,所有路由器均运行BGP协议,Router A和Router B之间建立EBGP连接,Router B和Router C之间建立IBGP连接。现要求实现即便Router B发生主备倒换,也不会影响Router A和Router C之间正在进行的数据传输。
图3-2 BGP GR配置组网图
表3-1 组网图示例接口与设备实际接口对应关系
|
组网图示例接口 |
设备实际接口 |
|
Interface1 |
FourHundredGigE1/0/1 |
|
Interface2 |
FourHundredGigE1/0/2 |
(1) Router A的配置
# 配置各接口的IP地址(略)。
# 配置Router A与Router B的EBGP连接。
<RouterA> system-view
[RouterA] bgp 65008
[RouterA-bgp-default] router-id 1.1.1.1
[RouterA-bgp-default] peer 200.1.1.1 as-number 65009
# 使能BGP GR功能。
[RouterA-bgp-default] graceful-restart
# 将8.0.0.0/8网段路由通告到IPv4 BGP路由表中。
[RouterA-bgp-default] address-family ipv4
[RouterA-bgp-default-ipv4] network 8.0.0.0
# 使能与Router B交换BGP IPv4单播路由的能力。
[RouterA-bgp-default-ipv4] peer 200.1.1.1 enable
(2) Router B的配置
# 配置各接口的IP地址(略)。
# 配置Router B与Router A的EBGP连接。
<RouterB> system-view
[RouterB] bgp 65009
[RouterB-bgp-default] router-id 2.2.2.2
[RouterB-bgp-default] peer 200.1.1.2 as-number 65008
# 配置Router B与Router C的IBGP连接。
[RouterB-bgp-default] peer 9.1.1.2 as-number 65009
# 使能BGP GR功能。
[RouterB-bgp-default] graceful-restart
# 将200.1.1.0/24和9.1.1.0/24网段路由通告到IPv4 BGP路由表中。
[RouterB-bgp-default] address-family ipv4
[RouterB-bgp-default-ipv4] network 200.1.1.0 24
[RouterB-bgp-default-ipv4] network 9.1.1.0 24
# 使能与Router A、Router C交换BGP IPv4单播路由的能力。
[RouterB-bgp-default-ipv4] peer 200.1.1.2 enable
[RouterB-bgp-default-ipv4] peer 9.1.1.2 enable
(3) Router C的配置
# 配置各接口的IP地址(略)。
# 配置Router C与Router B的IBGP连接。
<RouterC> system-view
[RouterC] bgp 65009
[RouterC-bgp-default] router-id 3.3.3.3
[RouterC-bgp-default] peer 9.1.1.1 as-number 65009
# 使能BGP GR功能。
[RouterC-bgp-default] graceful-restart
# 使能与Router B交换BGP IPv4单播路由的能力。
[RouterC-bgp-default] address-family ipv4
[RouterC-bgp-default-ipv4] peer 9.1.1.1 enable
在Router A上ping Router C,同时在Router B上触发主备倒换,可以发现在整个倒换过程中Router A都可以ping通Router C。
BGP扩展功能配置任务如下:
· 配置BGP LS
¡ (可选)配置BGP LS路由反射功能
¡ (可选)配置BGP LS信息的AS号和Router ID
¡ (可选)配置不修改BGP LS路由的下一跳属性
¡ (可选)提高邻居路由参与优选时的优先级
¡ (可选)手工软复位LS地址族下的BGP会话
通过配置BMP(BGP Monitoring Protocol,BGP监控协议)特性,监控服务器可以对网络中设备上BGP会话的运行状态进行实时监控,包括对等体关系的建立与解除、路由信息等。
配置BMP的设备称为客户端,监控服务器称为监控端,一个客户端可以连接多个监控服务器,通过配置监控服务器的地址和监听端口号来建立与监控服务器的TCP连接。
(1) 进入系统视图。
system-view
(2) 创建BGP监控服务器,并进入BMP Server视图。
bmp server server-number
(3) 配置监控服务器的IP地址和端口号。
server address { ipv4-address | ipv6-address } port port-number
缺省情况下,未配置监控服务器的连接地址和端口号。
(4) 配置发送统计信息的周期。
statistics-interval value
缺省情况下,不向监控服务器发送统计信息。
(5) (可选)配置监控服务器所属的VPN实例。
server vpn-instance vpn-instance-name
缺省情况下,未指定监控服务其所属的VPN实例,监控服务器位于公网中。
(6) (可选)配置本地设备与监控服务器之间TCP连接的源接口。
server connect-interface interface-type interface-number
缺省情况下,BGP使用到达监控服务器的最佳路由出接口的主IPv4地址建立TCP连接。
在同一个BMP Server视图下,当源接口所关联的VPN与server vpn-instance命令指定的VPN不一致时,本命令不生效。
(7) (可选)配置本地设备与监控服务器之间TCP连接的源地址。
server source-address { ipv4-address | ipv6-address }
缺省情况下,BGP根据监控服务器的地址类型,选择到达监控服务器的最佳路由出接口的主IPv4地址或IPv6地址建立TCP连接。
在同一个BMP Server视图下,同时配置本命令和server connect-interface命令时,以本命令的配置为准。
(8) (可选)配置本地设备与监控服务器建立TCP连接时使用的认证方式和认证密钥。
server password { keychain keychain-name | md5 { cipher | simple } string }
缺省情况下,本地设备与监控服务器建立TCP连接时不进行认证。
(9) (可选)全局配置发送给监控服务器的路由信息,请至少选择其中一项进行配置。
¡ 配置将本地设备发送给所有监控对等体/对等体组的路由信息发送给监控服务器。
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 { ipv4 [ unicast ] | ipv6 [ unicast ] }
缺省情况下,不向监控服务器发送BGP优选后的最优路由信息。
本功能配置后会先向监控服务器发送一次BGP所有的路由,之后路由更新时,仅向监控服务器发送BGP优选后的最优更新路由信息。
(10) 退回系统视图。
quit
(11) 进入BGP实例视图或BGP-VPN实例视图。
¡ 进入BGP实例视图。
bgp as-number [ instance instance-name ]
¡ 请依次执行以下命令进入BGP-VPN实例视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(12) 配置BMP Server监控对等体/对等体组。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } bmp server server-number-list
缺省情况下,未配置BMP Server监控对等体/对等体组。
对于同一个对等体/对等体组,如果执行多次命令,最后一次配置生效。
(13) (可选)配置将本地设备与指定监控对等体/对等体组之间交换的路由信息发送给监控服务器。
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视图下的route-mode adj-rib-in和route-mode adj-rib-out命令控制。
可在任意视图执行以下命令,显示BGP监控服务器的信息:
display bgp [ instance instance-name ] bmp server server-number
请在用户视图下执行以下命令,清除BMP监控服务器记录的报文统计信息:
reset bgp [ instance instance-name ] bmp server server-number statistics
BGP LS(Link State,链路状态)功能可以进行跨域和跨AS的LSDB(Link State DataBase,链路状态数据库)、TEDB(TE DataBase,流量工程数据库)信息发布。设备把收集到的链路状态信息发送给控制器,实现了业务与流量的端到端管理和调度,还可以满足需要链路状态信息的各种应用需求。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 指定LS对等体/对等体组的AS号。
peer { { ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } | group-name } as-number as-number
缺省情况下,未指定LS对等体/对等体组的AS号。
(4) 创建BGP LS地址族,并进入LS地址族视图。
address-family link-state
(5) 使能本地路由器与对等体/对等体组交换LS信息的能力。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } enable
缺省情况下,本地路由器不能与对等体/对等体组交换LS信息。
通常在同一个AS内,为了减少IBGP连接数,可以把几个BGP路由器划分为一个集群,将其中的一台路由器配置为路由反射器,其它路由器作为客户机,通过路由反射器在客户机之间反射路由。
(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。
(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信息。通过配置本功能,可以解决这个问题。
(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对等体/对等体组发布路由时,不修改下一跳属性。
(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路由均成为不可达路由,请在配置本命令前,确保指定的路由策略中创建的匹配条件能够匹配到用户期望迭代到的下一跳路由。
(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不为指定对等体/对等体组设置高优先级,选路规则不发生变化。
(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
可在任意视图执行以下命令:
· 显示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 ]
请在用户视图下执行以下命令,复位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
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!
