10-BFD配置
本章节下载: 10-BFD配置 (615.65 KB)
1.4.3 通过bfd static命令手工创建静态BFD会话
1.5.5 通过bfd static命令手工创建静态BFD会话
1.5.9 配置BFD会话无法建立时,通知上层协议BFD会话down的超时时间
1.11 配置开启延迟DOWN状态的BFD会话进行协商的功能
2.5.3 配置Initiator(检测MPLS TE隧道)
2.5.4 配置Initiator(检测SR-MPLS TE Policy)
2.5.5 配置Initiator(检测SRv6 Locator)
2.5.6 配置Initiator(检测SRv6 TE Policy)
2.8 配置开启延迟DOWN状态的SBFD会话进行协商的功能
BFD(Bidirectional Forwarding Detection,双向转发检测)是一个通用的、标准化的、介质无关和协议无关的快速故障检测机制,用于检测转发路径的连通状况,保证设备之间能够快速检测到通信故障,以便能够及时采取措施,保证业务持续运行。BFD可以为各种上层协议(如路由协议)快速检测两台设备间双向转发路径的故障。上层协议通常采用Hello报文机制检测故障,所需时间为秒级,而BFD可以提供毫秒级检测。
BFD在两台网络设备上建立会话,用来检测网络设备间的双向转发路径,为上层应用服务。BFD本身并没有发现机制,而是靠被服务的上层协议通知来建立会话。上层协议在建立新的邻居关系后,将邻居的参数及检测参数(包括目的地址和源地址等)通告给BFD;BFD根据收到的参数建立BFD会话。会话建立后会周期性地快速发送BFD报文,如果在检测时间内没有收到BFD报文,则认为该双向转发路径发生了故障,并将故障信息通知给该会话所服务的上层应用,由上层应用采取相应的措施。下面以OSPF与BFD联动为例,简单介绍BFD的工作流程。
如图1-1所示,OSPF与BFD联动触发建立会话的流程为:
(1) OSPF通过自己的Hello机制发现邻居并建立连接。
(2) OSPF在建立了新的邻居关系后,将邻居信息(包括目的地址和源地址等)通告给BFD。
(3) BFD根据收到的邻居信息建立会话。
图1-1 BFD会话建立流程图
BFD检测到链路故障通知OSPF的流程为:
(1) BFD检测到链路故障,BFD会话状态变为Down。
(2) BFD通知本地OSPF进程BFD邻居不可达。
(3) 本地OSPF进程中断OSPF邻居关系。
图1-2 BFD故障发现处理流程图
BFD可以用来进行单跳和多跳检测:
· 单跳检测:是指对两个直连设备进行IP连通性检测,这里所说的“单跳”是IP的一跳。例如,如图1-3所示,使用BFD检测Device A和Device B之间的IP单跳路径。
图1-3 单跳检测
· 多跳检测:BFD可以检测两个设备间任意路径的链路情况,这些路径可能跨越很多跳。例如,如图1-4所示,使用BFD检测Device A和Device B之间的IP多跳路径。
图1-4 多跳检测
BFD会话通过echo报文和控制报文实现。
echo报文封装在UDP报文中传送,该报文IP头中的源IP和目的IP均为本端设备的IP地址,其UDP目的端口号为3785。
本端发送echo报文建立BFD会话,对链路进行检测。对端不建立BFD会话,只需把收到的echo报文转发回本端。如果在检测时间内没有收到对端转发回的echo报文,则认为会话down。
echo报文方式的BFD会话不需要双方均支持BFD功能,不支持BFD功能的设备接收到echo报文后,直接将该报文环回,从而达到快速检测的目的。
当BFD会话工作于echo报文方式时,仅支持单跳检测,且不受检测模式的控制。
控制报文封装在UDP报文中传送,对于单跳检测其UDP目的端口号为3784,对于多跳检测其UDP目的端口号为4784。链路两端的设备通过控制报文中携带的参数(会话标识符、期望的收发报文最小时间间隔、本端BFD会话状态等)协商建立BFD会话。
BFD可以和路由协议、MPLS等联合使用,具体如表1-1所示。
表1-1 BFD支持的应用
应用 |
参见信息 |
链路聚合与BFD联动 |
“二层技术-以太网交换配置指导”中的“以太网链路聚合” |
IPv4静态路由与BFD联动 |
“三层技术-IP路由配置指导”中的“静态路由” |
IPv6静态路由与BFD联动 |
“三层技术-IP路由配置指导”中的“IPv6静态路由” |
RIP与BFD联动 |
“三层技术-IP路由配置指导”中的“RIP” |
OSPF与BFD联动 |
“三层技术-IP路由配置指导”中的“OSPF” |
OSPFv3与BFD联动 |
“三层技术-IP路由配置指导”中的“OSPFv3” |
IS-IS与BFD联动 |
“三层技术-IP路由配置指导”中的“IS-IS” |
BGP与BFD联动 |
“三层技术-IP路由配置指导”中的“BGP高级配置” |
MPLS与BFD联动 |
“MPLS配置指导”中的“MPLS OAM” |
RSVP与BFD联动 |
“MPLS配置指导”中的“RSVP” |
SR-MPLS TE Policy与BFD联动 |
“Segment Routing配置指导”中的“SR-MPLS TE Policy” |
Track与BFD联动 |
“可靠性配置指导”中的“Track” |
S-Trunk与BFD联动 |
“可靠性配置指导”中的“S-Trunk” |
SDWAN使用BFD检测隧道连通性 |
“SDWAN配置指导”中的“SDWAN” |
与BFD相关的协议规范有:
· RFC 5880:Bidirectional Forwarding Detection (BFD)
· RFC 5881:Bidirectional Forwarding Detection (BFD) for IPv4 and IPv6 (Single Hop)
· RFC 5882:Generic Application of Bidirectional Forwarding Detection (BFD)
· RFC 5883:Bidirectional Forwarding Detection (BFD) for Multihop Paths
· RFC 5884:Bidirectional Forwarding Detection (BFD) for MPLS Label Switched Paths (LSPs)
· RFC 5885:Bidirectional Forwarding Detection (BFD) for the Pseudowire Virtual Circuit Connectivity Verification (VCCV)
· RFC 7130:Bidirectional Forwarding Detection (BFD) on Link Aggregation Group (LAG) Interfaces
对于建立在跨板聚合接口上的BFD会话,当负责收发BFD报文的单板被拔出或异常重启时,备用单板接替收发BFD报文的工作需要一定的时间,如果BFD会话检测时间较短或者会话数量较多,可能会出现BFD会话震荡的情况。
缺省BFD运行版本1,同时兼容版本0。不能通过命令行配置修改为版本0,当对端设备运行版本0会话时,本端自动会切换到版本0。
BFD会话建立后,可以动态协商BFD的相关参数(例如最小发送间隔、最小接收间隔、初始模式、报文认证等),两端协议通过发送相应的协商报文后采用新的参数,不影响会话的当前状态。
(1) 配置echo报文方式的BFD会话
(2) 配置控制报文方式的BFD会话
¡ 配置BFD会话无法建立时,通知上层协议BFD会话down的超时时间
(3) 开启BFD会话震荡抑制功能
(4) 配置BFD模板
(6) 开启告警功能
(7) 配置BFD优化功能
建立echo报文方式的BFD会话的方式有两种:
· 通过bfd static命令手工创建。
· 应用程序与BFD联动时动态创建。
对于echo报文方式的BFD会话,建议在创建BFD会话的一端配置bfd echo-source-ip/bfd echo-source-ipv6命令,且配置的源IPv4/IPv6地址不属于该设备任何一个接口所在网段,以避免对端发送大量的ICMP重定向报文造成网络拥塞。
创建的静态BFD会话可以用来进行echo报文方式的BFD单跳检测和多跳检测。
使用echo报文方式的静态BFD会话进行检测时,仅需在本端创建静态BFD会话。
首次创建静态BFD会话时,必须指定静态BFD会话的对端IPv4或IPv6地址。系统仅检查IP地址的形式,不检查其正确性。指定错误的对端IP地址或源IP地址均会导致静态BFD会话无法建立。
不同的静态BFD会话的本地标识符不能相同。
echo报文方式的静态BFD会话选取报文源地址的规则如下:
(1) 如果创建静态BFD会话时未指定source-ip/source-ipv6参数,将使用bfd echo-source-ip/bfd echo-source-ipv6命令指定的IPv4/IPv6地址作为echo报文的源IPv4/IPv6地址。
(2) 如果创建静态BFD会话时指定了source-ip/source-ipv6参数,将使用该参数的地址作为echo报文的源IPv4/IPv6地址。
(3) 如果未通过(1)或(2)指定报文的源地址,echo报文方式的静态BFD会话将使用destination-ip/destination-ipv6参数指定的IPv4/IPv6地址作为报文的源IPv4/IPv6地址。
建议用户创建echo报文方式的静态BFD会话时指定source-ip/source-ipv6参数。
(1) 进入系统视图。
system-view
(2) (可选)配置echo报文源IP地址。
¡ 配置echo报文源IPv4地址。
bfd echo-source-ip ip-address
缺省情况下,未配置echo报文的源IPv4地址。
¡ 配置echo报文源IPv6地址。
bfd echo-source-ipv6 ipv6-address
缺省情况下,未配置echo报文的源IPv6地址。
echo报文源IPv6地址仅支持全球单播地址。
(3) 创建静态BFD会话,并进入静态BFD会话视图。
(IPv4网络)
bfd static session-name [ peer-ip ipv4-address interface interface-type interface-number destination-ip ipv4-address [ source-ip ipv4-address ] one-arm-echo [ discriminator auto ] ]
(IPv6网络)
bfd static session-name [ peer-ipv6 ipv6-address interface interface-type interface-number destination-ipv6 ipv6-address [ source-ipv6 ipv6-address ] one-arm-echo [ discriminator auto ] ]
(4) (可选)指定静态BFD会话的本地标识符。
discriminator local local-value
缺省情况下,未指定静态BFD会话的本地标识符。
本命令仅用于创建静态BFD会话时未指定静态BFD会话标识符的场景。
(1) 进入系统视图。
system-view
(2) (可选)配置echo报文源IP地址。
¡ 配置echo报文源IPv4地址。
bfd echo-source-ip ip-address
缺省情况下,未配置echo报文的源IPv4地址。
¡ 配置echo报文源IPv6地址。
bfd echo-source-ipv6 ipv6-address
缺省情况下,未配置echo报文的源IPv6地址。
echo报文源IPv6地址仅支持全球单播地址。
(3) 创建静态BFD会话,并进入静态BFD会话视图。
(IPv4网络)
bfd static session-name [ peer-ip ipv4-address [ vpn-instance vpn-instance-name ] destination-ip ipv4-address [ source-ip ipv4-address ] one-arm-echo [ discriminator auto ] ]
(IPv6网络)
bfd static session-name [ peer-ipv6 ipv6-address interface interface-type interface-number destination-ipv6 ipv6-address [ source-ipv6 ipv6-address ] one-arm-echo [ discriminator auto ] ]
(4) (可选)指定静态BFD会话的本地标识符。
discriminator local local-value
缺省情况下,未指定静态BFD会话的本地标识符。
本命令仅用于创建静态BFD会话时未指定静态BFD会话标识符的场景。
在建立echo报文方式的BFD会话时,用户可以根据网络状况和性能需求,调整设备接收echo报文的时间间隔、检测时间倍数。
一个BFD会话仅被一个上层应用关联,检测时间参数的优选顺序如下:
(1) 静态BFD会话视图下设置的检测时间参数。
(2) 上层应用引用的BFD模板设置的检测时间参数。
(3) 上层应用单独设置的检测时间参数。
(4) 接口视图或系统视图下设置的检测时间参数。
(5) 缺省值。
多个上层应用关联同一个BFD会话,即会话的“源IP地址+目的IP地址+会话所在的接口+VPN+目的端口号”信息完全相同,检测时间参数的优选顺序如下:
(1) 静态BFD会话视图下设置的检测时间参数。
(2) BFD模板设置的检测时间参数,或者上层应用单独设置的检测时间参数。具体的优选顺序如下:
a. 仅单个上层应用引用了BFD模板,则选择该BFD模板中设置的检测时间参数。
b. 多个或所有上层应用引用了BFD模板,则选择BFD模板中设置的检测时间参数的较小值。
c. 同时存在上层应用引用BFD模板和上层应用单独设置检测时间参数的情况,则选择BFD模板和上层应用单独设置的检测时间参数中的较小值。
d. 仅单个上层应用设置了检测时间参数,则选择该上层应用设置的检测时间参数。
e. 多个或所有上层应用设置了检测时间参数,则选择上层应用设置的检测时间参数中的较小值。
(3) 接口视图或系统视图下设置的检测时间参数。
(4) 缺省值。
(1) 进入系统视图。
system-view
(2) 进入接口视图或静态BFD会话视图。
¡ 进入接口视图。
interface interface-type interface-number
¡ 进入静态BFD会话视图。
bfd static session-name
静态BFD会话必须已经存在。
配置静态BFD会话的参数时,需要进入静态BFD会话视图。
(3) 配置接收echo报文的最小时间间隔。
bfd min-echo-receive-interval interval
缺省情况下,接收echo报文的最小时间间隔为400毫秒。
(4) 配置单跳检测的BFD检测时间倍数。
bfd detect-multiplier interval
缺省情况下,单跳检测的BFD检测时间倍数为5。
(1) 进入系统视图。
system-view
(2) (可选)进入静态BFD会话视图。
bfd static session-name
配置静态BFD会话的参数时,需要进入静态BFD会话视图。
(3) 配置接收多跳echo报文的最小时间间隔。
bfd multi-hop min-echo-receive-interval interval
缺省情况下,接收多跳echo报文的最小时间间隔为400毫秒。
(4) 配置多跳检测的BFD检测时间倍数。
bfd multi-hop detect-multiplier value
缺省情况下,多跳检测的BFD检测时间倍数为5。
建立控制报文方式的BFD会话有两种方式:静态创建BFD会话和动态建立BFD会话。
BFD通过控制报文中的本地标识符和远端标识符来区分不同的会话。静态创建BFD会话和动态建立BFD会话的主要区别在于本地标识符和远端标识符的获取方式不同:
· 静态BFD会话的本地标识符和远端标识符由用户手工配置。手工指定会话的本地标识符和远端标识符方法包括:
¡ 在静态BFD会话视图下通过discriminator命令手工指定。
¡ 应用程序与BFD联动时,由用户手工指定会话的本地标识符和远端标识符。例如,使用静态BFD会话方式检测MPLS LSP时,需要用户手工指定会话的本地标识符和远端标识符。关于静态BFD会话方式检测MPLS LSP的详细介绍,请参见“MPLS配置指导”中的“MPLS OAM”。
· 动态BFD会话的本端标识符由本端设备分配,远端标识符在BFD会话协商建立过程中获取。应用程序与BFD联动时,如果用户未指定会话的本地标识符和远端标识符,则建立的会话为动态BFD会话。
BFD版本0不支持以下命令,配置不生效。
· bfd authentication-mode
· bfd demand enable
· bfd echo enable
一个BFD会话仅被一个上层应用关联,检测时间参数的优选顺序如下:
(1) 静态BFD会话视图下设置的检测时间参数。
(2) 上层应用引用的BFD模板设置的检测时间参数。
(3) 上层应用单独设置的检测时间参数。
(4) 系统视图下设置的检测时间参数。
(5) 缺省值。
多个上层应用关联同一个BFD会话,即会话的“源IP地址+目的IP地址+会话所在的接口+VPN+目的端口号”信息完全相同,检测时间参数的优选顺序如下:
(1) 静态BFD会话视图下设置的检测时间参数。
(2) BFD模板设置的检测时间参数,或者上层应用单独设置的检测时间参数。具体的优选顺序如下:
a. 仅单个上层应用引用了BFD模板,则选择该BFD模板中设置的检测时间参数。
b. 多个或所有上层应用引用了BFD模板,则选择BFD模板中设置的检测时间参数的较小值。
c. 同时存在上层应用引用BFD模板和上层应用单独设置检测时间参数的情况,则选择BFD模板和上层应用单独设置的检测时间参数中的较小值。
d. 仅单个上层应用设置了检测时间参数,则选择该上层应用设置的检测时间参数。
e. 多个或所有上层应用设置了检测时间参数,则选择上层应用设置的检测时间参数中的较小值。
(3) 系统视图下设置的检测时间参数。
BFD会话建立前有两种模式:主动模式和被动模式。
· 主动模式:在建立会话前不管是否收到对端发来的BFD控制报文,都会主动发送BFD控制报文。
· 被动模式:在建立会话前不会主动发送BFD控制报文,直到收到对端发送来的控制报文。
通信双方至少要有一方运行在主动模式才能成功建立起BFD会话。
(1) 进入系统视图。
system-view
(2) 配置BFD会话建立前的运行模式。
bfd session init-mode { active | passive }
缺省情况下,BFD会话建立前的运行模式为主动模式。
BFD会话建立后有两种模式:异步模式和查询模式。
· 异步模式:设备周期性发送BFD控制报文,如果在检测时间内没有收到对端发送的BFD控制报文,则认为会话DOWN。缺省情况下,BFD会话为异步模式。
· 查询模式:当系统中的BFD会话数量较多时,采用查询模式可防止周期性发送BFD控制报文的开销对系统的正常运行造成影响。
¡ 本端的BFD会话工作在查询模式时,本端设备会向对端发送D比特位置1的BFD控制报文,对端(缺省为异步模式)收到该报文后将停止周期性发送BFD控制报文。这种情况下,仅对本端到对端的链路进行检测,即当对端设备在检测时间内未收到BFD控制报文时,则认为链路故障,将BFD会话状态置为DOWN。
¡ 如果通信双方的BFD会话均工作在查询模式,则双方都停止周期性发送BFD控制报文。这种情况下,系统将通过其他与BFD无关的机制对链路进行检测(比如Hello报文机制、硬件检测机制等)。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 配置BFD会话为查询模式。
bfd demand enable
缺省情况下,BFD会话为异步模式。
创建的静态BFD会话可以用来进行控制报文方式的BFD单跳检测和多跳检测,通过与Track配合可为对链路故障响应速度要求较高的业务提供故障检测服务。关于Track与BFD联动的详细介绍,请参见“可靠性配置指导”中的“Track”。
静态BFD会话可以检测如表1-2中的路径类型。本文仅介绍检测IP路径的静态BFD会话。
表1-2 静态BFD支持检测的路径类型
路径类型 |
参见信息 |
IP路径 |
|
MPLS TE隧道 |
“MPLS配置指导”中的“MPLS OAM” |
MPLS PW |
“MPLS配置指导”中的“MPLS OAM” |
如果对端创建了静态BFD会话,那么本端必须创建静态BFD会话。
首次创建静态BFD会话时,必须指定静态BFD会话的对端IPv4或IPv6地址。系统仅检查IP地址的形式,不检查其正确性。指定错误的对端IP地址或源IP地址均会导致静态BFD会话无法建立。
不同的静态BFD会话的本地标识符不能相同。
(1) 进入系统视图。
system-view
(2) 创建静态BFD会话,并进入静态BFD会话视图。
(IPv4网络)
bfd static session-name [ peer-ip ipv4-address interface interface-type interface-number source-ip ipv4-address ]
需要保证指定的peer-ip为对端静态BFD会话所在的接口的IP地址,source-ip为本端静态BFD会话所在的接口的IP地址,否则无法建立静态BFD会话。
(IPv6网络)
bfd static session-name [ peer-ipv6 ipv6-address interface interface-type interface-number source-ipv6 ipv6-address ]
需要保证指定的peer-ipv6为对端静态BFD会话所在的接口的IPv6地址,source-ipv6为本端静态BFD会话所在的接口的IPv6地址,否则无法建立静态BFD会话。
(3) 指定静态BFD会话的本地标识符和远端标识符。
discriminator { local local-value | remote remote-value }
缺省情况下,未指定静态BFD会话的本地标识符和远端标识符。
本命令仅用于创建静态BFD会话时未指定静态BFD会话标识符的场景。
(1) 进入系统视图。
system-view
(2) 创建静态BFD会话,并进入静态BFD会话视图。
bfd static session-name peer-ip default-ip interface interface-type interface-number source-ip ip-address
需要保证指定的source-ip为本端静态BFD会话所在的接口的IP地址,否则无法建立静态BFD会话。
(3) (可选)配置接口状态与静态BFD会话联动。
process-interface-status
缺省情况下,接口状态不与静态会话联动,即静态BFD会话状态的改变不会影响接口数据链路层协议状态。
(4) (可选)配置首次建立检测数据链路层连通性的静态BFD会话失败时,通知数据链路层BFD会话down的超时时间。
first-fail-timer seconds
缺省情况下,首次建立检测数据链路层连通性的静态BFD会话失败时,不会通知数据链路层BFD会话down。
配置process-interface-status命令后,本命令才会生效。
(5) (可选)开启对检测数据链路层连通性的静态BFD会话进行特殊处理的功能。
special-processing [ admin-down | authentication-change | session-up ] *
缺省情况下,对检测数据链路层连通性的静态BFD会话进行特殊处理的功能处于关闭状态。
(1) 进入系统视图。
system-view
(2) 创建静态BFD会话,并进入静态BFD会话视图。
(IPv4网络)
bfd static session-name [ peer-ip ipv4-address [ vpn-instance vpn-instance-name ] source-ip ipv4-address [ track-interface interface-type interface-number ] ]
(IPv6网络)
bfd static session-name [ peer-ipv6 ipv6-address [ vpn-instance vpn-instance-name ] source-ipv6 ipv6-address [ track-interface interface-type interface-number ] ]
(3) 指定静态BFD会话的本地标识符和远端标识符。
discriminator { local local-value | remote remote-value }
缺省情况下,未指定静态BFD会话的本地标识符和远端标识符。
在建立控制报文方式的BFD会话时,用户可以根据网络状况和性能需求,调整设备接收控制报文的时间间隔、发送控制报文的时间间隔以及检测时间倍数。
一个BFD会话仅被一个上层应用关联,检测时间参数的优选顺序如下:
(1) 静态BFD会话视图下设置的检测时间参数。
(2) 上层应用引用的BFD模板设置的检测时间参数。
(3) 上层应用单独设置的检测时间参数。
(4) 接口视图或系统视图下设置的检测时间参数。
(5) 缺省值。
多个上层应用关联同一个BFD会话,即会话的“源IP地址+目的IP地址+会话所在的接口+VPN+目的端口号”信息完全相同,检测时间参数的优选顺序如下:
(1) 静态BFD会话视图下设置的检测时间参数。
(2) BFD模板设置的检测时间参数,或者上层应用单独设置的检测时间参数。具体的优选顺序如下:
a. 仅单个上层应用引用了BFD模板,则选择该BFD模板中设置的检测时间参数。
b. 多个或所有上层应用引用了BFD模板,则选择BFD模板中设置的检测时间参数的较小值。
c. 同时存在上层应用引用BFD模板和上层应用单独设置检测时间参数的情况,则选择BFD模板和上层应用单独设置的检测时间参数中的较小值。
d. 仅单个上层应用设置了检测时间参数,则选择该上层应用设置的检测时间参数。
e. 多个或所有上层应用设置了检测时间参数,则选择上层应用设置的检测时间参数中的较小值。
(3) 接口视图或系统视图下设置的检测时间参数。
(4) 缺省值。
(1) 进入系统视图。
system-view
(2) 进入接口视图或静态BFD会话视图。
¡ 进入接口视图。
interface interface-type interface-number
¡ 进入静态BFD会话视图。
bfd static session-name
静态BFD会话必须已经存在。
配置静态BFD会话的参数时,需要进入静态BFD会话视图。
(3) 配置发送单跳BFD控制报文的最小时间间隔。
bfd min-transmit-interval interval
缺省情况下,发送单跳BFD控制报文的最小时间间隔为400毫秒。
(4) 配置接收单跳BFD控制报文的最小时间间隔。
bfd min-receive-interval interval
缺省情况下,接收单跳BFD控制报文的最小时间间隔为400毫秒。
(5) 配置单跳检测的BFD检测时间倍数。
bfd detect-multiplier interval
缺省情况下,单跳检测的BFD检测时间倍数为5。
(1) 进入系统视图。
system-view
(2) (可选)进入静态BFD会话视图。
bfd static session-name
静态BFD会话必须已经存在。
配置静态BFD会话的参数时,需要进入静态BFD会话视图。
(3) 配置多跳检测的BFD检测时间倍数。
bfd multi-hop detect-multiplier value
缺省情况下,多跳检测的BFD检测时间倍数为5。
(4) 配置接收多跳BFD控制报文的最小时间间隔。
bfd multi-hop min-receive-interval interval
缺省情况下,接收多跳BFD控制报文的最小时间间隔为400毫秒。
(5) 配置发送多跳BFD控制报文的最小时间间隔。
bfd multi-hop min-transmit-interval interval
缺省情况下,发送多跳BFD控制报文的最小时间间隔为400毫秒。
通过配置BFD会话认证信息,包括认证算法、认证密钥,提高BFD会话的安全性。
(1) 进入系统视图。
system-view
(2) 进入接口视图或静态BFD会话视图。
¡ 进入接口视图。
interface interface-type interface-number
¡ 进入静态BFD会话视图。
bfd static session-name
静态BFD会话必须已经存在。
配置静态BFD会话的参数时,需要进入静态BFD会话视图。
(3) 配置单跳BFD控制报文进行认证的方式。
bfd authentication-mode { hmac-md5 | hmac-mmd5 | hmac-msha1 | hmac-sha1 | m-md5 | m-sha1 | md5 | sha1 | simple } key-id { cipher cipher-string | plain plain-string }
缺省情况下,单跳BFD控制报文不进行认证。
(1) 进入系统视图。
system-view
(2) (可选)进入静态BFD会话视图。
bfd static session-name
静态BFD会话必须已经存在。
配置静态BFD会话的参数时,需要进入静态BFD会话视图。
(3) 配置多跳BFD控制报文进行认证的方式。
bfd multi-hop authentication-mode { hmac-md5 | hmac-mmd5 | hmac-msha1 | hmac-sha1 | m-md5 | m-sha1 | md5 | sha1 | simple } key-id { cipher cipher-string | plain plain-string }
缺省情况下,多跳BFD控制报文不进行认证。
IANA(Internet Assigned Numbers Authority,互联网编号分配委员会)将端口号4784分配给BFD,用于BFD控制报文多跳检测。缺省情况下,我司设备多跳BFD控制报文的目的端口号为4784。与多跳BFD控制报文目的端口号为3784的其他厂商设备互通时,建议两端使用相同的多跳BFD控制报文端口号,否则可能会导致BFD会话协商失败。
配置本功能后,只有此后新创建的控制报文方式的多跳BFD会话,才会使用本功能设置的端口块作为发送报文的目的端口号。对于配置本功能前已经Up的控制报文方式的多跳BFD会话,不会使用本功能设置的端口号作为发送报文的目的端口号。
(1) 进入系统视图。
system-view
(2) 配置多跳BFD控制报文的目的端口号。
bfd multi-hop destination-port port-number
缺省情况下,多跳BFD控制报文的目的端口号为4784。
缺省情况下,控制报文工作方式的BFD会话无法建立时,不会通知上层协议BFD会话down。某些情况下,需要将BFD会话无法建立的消息通知给上层协议,以使上层协议作出正确的处理。比如在聚合链路中,由于链路故障等原因,BFD会话无法进入up状态,从而导致聚合模块无法及时将成员端口的选中状态修改为非选中状态,配置本命令可避免上述情况的发生。
本功能对echo报文方式的BFD会话无效。
(1) 进入系统视图。
system-view
(2) (可选)配置BFD会话无法建立时,通知上层协议BFD会话down的超时时间。
bfd init-fail-timer seconds
缺省情况下,BFD会话无法建立时,不会通知上层协议BFD会话down。
配置本命令后,对于由于配置原因(比如对端设备没有使能BFD,或者两端的BFD认证配置不一致等)造成BFD会话无法进入up状态的情况,如果配置了本定时器,会导致上层协议作出错误的处理,所以,请谨慎使用本命令。
使用异步模式的BFD会话检测直连网段的连通性时,可以使用BFD回声功能辅助进行故障检测。使能BFD回声功能后,会话的一端周期性地发送echo报文,同时自动降低控制报文的接收速率,减少对带宽资源的消耗。对端不对echo报文进行处理,只将此报文转发回发送端。如果发送端连续几个echo报文都没有接收到,会话状态将变为DOWN。
仅单跳检测支持回声功能。
回声功能对接口状态与BFD联动的会话无效。
(1) 进入系统视图。
system-view
(2) 进入接口视图或静态BFD会话视图。
¡ 进入接口视图。
interface interface-type interface-number
¡ 进入静态BFD会话视图。
bfd static session-name
静态BFD会话必须已经存在。
(3) 使能回声功能。
bfd echo [ receive | send ] enable
缺省情况下,回声功能处于关闭状态。
配置接口状态与BFD联动后,系统将通过发送BFD控制报文来协商建立单跳检测的BFD会话,实现对链路的快速检测。当检测到链路故障时,将接口链路层协议状态置为“DOWN(BFD)”,从而帮助依赖接口链路层协议状态的应用快速收敛。系统发送的BFD控制报文中的源地址为用户手工指定的IP地址,目的地址固定为224.0.0.184。对于有IP地址的接口,建议将源地址指定为该接口的IP地址;如果接口没有IP地址,建议将源地址指定为0.0.0.0以外的单播地址。
支持与BFD联动的接口类型为:
· 二层以太网接口
· 加入聚合组的二层以太网接口
· 三层以太网接口
· 加入聚合组的三层以太网接口
· 三层以太网子接口
· VLAN接口
· 二层聚合口
· 三层聚合口
· 三层聚合接口子接口
· Serial接口、POS接口、E1通道创建出来的串口、E3通道创建出来的串口、T1通道创建出来的串口、T3通道创建出来的串口、MP-group接口和加入MP-group的成员接口、HDLC捆绑接口和加入HDLC捆绑的成员接口。如果通过link-protocol命令修改接口的链路层协议,接口状态与BFD联动的配置将自动取消,需要重新配置。配置MP-group的成员接口或加入HDLC捆绑的成员接口状态与BFD联动时,必须指定discriminator参数。
回声功能对接口状态与BFD联动的会话无效。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 配置接口状态与BFD联动。
bfd detect-interface source-ip ip-address [ discriminator local local-value remote remote-value ] [ template template-name ]
当对端设备不支持通过自动协商的方式获取BFD会话的标识符时,必须指定discriminator参数,且两端都需要指定该参数,否则,BFD会话无法up。
(4) (可选)配置接口与BFD联动的会话首次建立失败时,通知数据链路层BFD会话down的超时时间。
bfd detect-interface first-fail-timer seconds
缺省情况下,接口与BFD联动的会话首次建立失败时,不会通知数据链路层BFD会话down。
(5) (可选)开启接口与BFD联动的会话进行特殊处理的功能。
bfd detect-interface special-processing [ admin-down | authentication-change | session-up ] *
缺省情况下,对接口与BFD联动的会话进行特殊处理的功能处于关闭状态。
BFD检测到链路故障时,会拆除BFD会话,并通知上层协议邻居不可达。当上层协议重新建立邻居关系后,BFD会话重新up。当链路频繁发生故障并故障恢复时,将导致BFD会话震荡,引发设备不断执行上述操作,这会占用大量的系统资源并影响网络的稳定性。可配置本功能通过如下惩罚机制对BFD会话震荡进行抑制。
BFD会话震荡的惩罚机制通过initial-interval、secondary-interval、maximum-interval参数来进行抑制:
· 在抑制时间间隔内,不允许建立BFD会话;在抑制时间间隔超时后,允许建立BFD会话。抑制时间最大不超过maximum-interval。
· BFD会话第二次down后,在initial-interval时间间隔内,不允许重新建立BFD会话。
· BFD会话第三次down后,在secondary-interval时间间隔内,不允许重新建立BFD会话。
· BFD会话第四次或更多次down后,按照如下规则抑制BFD会话的建立:
¡ secondary-interval×2n-3(n为BFD会话震荡的次数,初始值为4)小于或等于maximum-interval时,在secondary-interval×2n-3时间间隔内,不允许重新建立BFD会话。
¡ secondary-interval×2n-3(n为BFD会话震荡的次数,初始值为4)大于maximum-interval时,在maximum-interval时间间隔内,不允许重新建立BFD会话。
(1) 进入系统视图。
system-view
(2) 开启BFD会话震荡抑制功能。
bfd dampening [ maximum maximum-interval initial initial-interval secondary secondary-interval ]
缺省情况下,不会对BFD会话的建立进行抑制。
initial-interval和secondary-interval配置值不允许大于或等于maximum-interval。
对于未指定出接口的会话,无法通过会话出接口配置BFD会话参数。使用BFD全局多跳可以配置,但是缺乏灵活性。通过BFD模板可以对参数进行灵活配置,LSP以及PW的BFD检测关联到BFD模板即可指定会话参数。
(1) 进入系统视图。
system-view
(2) 创建BFD模板,并进入BFD模板视图。
bfd template template-name
(3) 配置BFD控制报文进行认证的方式。
bfd authentication-mode { hmac-md5 | hmac-mmd5 | hmac-msha1 | hmac-sha1 | m-md5 | m-sha1 | md5 | sha1 | simple } key-id { cipher cipher-string | plain plain-string }
缺省情况下,BFD控制报文不进行认证。
BFD版本0不支持本命令,配置不生效。
(4) 配置BFD检测时间倍数。
bfd detect-multiplier value
缺省情况下,BFD检测时间倍数为5。
(5) 配置接收echo报文的最小时间间隔。
bfd min-echo-receive-interval interval
缺省情况下,接收echo报文的最小时间间隔为400毫秒。
(6) 配置接收BFD控制报文的最小时间间隔。
bfd min-receive-interval interval
缺省情况下,接收BFD控制报文的最小时间间隔为400毫秒。
(7) 配置发送BFD控制报文的最小时间间隔。
bfd min-transmit-interval interval
缺省情况下,发送BFD控制报文的最小时间间隔为400毫秒。
Comware V9支持用户在H3C物理设备上部署Guest Shell容器和Docker容器,以及基于Comware系统的RPM应用、基于Guest Shell容器的应用、基于Docker容器的应用。本命令用于解决部署在H3C物理设备上的第三方容器运行BFD时协议报文被丢弃的问题。关于容器的详细介绍,请参见“开放应用管理配置指导”中的“容器和开放型应用公共配置”。
部署在H3C物理设备上的第三方容器运行BFD时,需要接收和发送BFD报文。当BFD报文的目的地址是H3C物理设备的地址时,这些报文会被Comware系统全部接管,无法发送给容器。
配置本命令后,H3C物理设备会为容器预留BFD会话标识符。当H3C物理设备收到的BFD报文中的Your Discriminator字段与预留的BFD会话标识符匹配,则Comware系统不会处理该报文,而是将其转交给内核,由内核转发给第三方容器。
本功能不能解决一个容器和另外一个容器之间BFD会话无法UP的问题。
仅R5212P01及以上版本支持本功能。
(1) 进入系统视图。
system-view
(2) 配置本端预留给第三方容器的BFD会话本地标识符。
snmp-agent trap enable bfd
bfd container reserve local-discriminator discr-value1 [ to discr-value2 ]
缺省情况下,未配置本端预留给第三方容器的BFD会话本地标识符。
多次执行本命令,最后一次执行的命令生效。
开启BFD模块的告警功能后,该模块会生成告警信息,用于报告该模块的重要事件。生成的告警信息将发送到设备的SNMP模块,通过设置SNMP中告警信息的发送参数,来决定告警信息输出的相关属性。(有关告警信息的详细介绍,请参见“网络管理和监控配置指导”中的“SNMP”。)
(1) 进入系统视图。
system-view
(2) 开启BFD的告警功能。
snmp-agent trap enable bfd
缺省情况下,BFD的告警功能处于开启状态。
用户可以开启或关闭BFD优化功能。当开启该功能后,能够规避因本地BFD报文拥塞而造成的BFD误报。
(1) 进入系统视图。
system-view
(2) 配置BFD优化功能。
hardware-resource bfd_enhance { enable | disable }
缺省情况下,BFD优化功能处于开启状态。
可在任意视图下执行以下命令,显示BFD优化功能的状态。
display hardware-resource [ bfd_enhance ]
上层应用使用BFD检测主用路径的场景中,如果主用路径DOWN后,触发上层协议进行主备路径切换。如果主路径故障恢复前,检测主用路径的BFD会话重新UP,将会触发备份路径切换到处于故障状态的主路径,会导致流量丢失。为了解决上述问题,需要对BFD会话协商进行控制,具体方式为延迟BFD会话协商。
开启本功能后,工作机制如下:
· 设备将对每一个从UP状态切换为DOWN状态的BFD会话启动一个定时器,在定时器超时前,对应的会话不会进行重协商。
· 任何新建立的BFD会话,设备都会启动定时器。在定时器超时前,不会重新进行会话协商。
仅R5212及以上版本支持本功能。
(1) 进入系统视图。
system-view
(2) 开启延迟DOWN状态的BFD会话进行协商的功能,并设置延迟会话协商的时间。
bfd session-negotiation delay-upon-down interval
缺省情况下,延迟DOWN状态的BFD会话进行协商的功能处于关闭状态。
可在任意视图下执行以下命令,显示BFD会话信息。
display bfd session [ discriminator local-value | discriminator local local-value | static name session-name | verbose ]
display bfd session [ [ dynamic ] [ control | echo ] [ ip ] [ state { admin-down | down | init | up } ] [ discriminator remote remote-value ] [ peer-ip { ipv4-address | default-ip } [ vpn-instance vpn-instance-name ] ] [ verbose ] ]
display bfd session [ [ dynamic ] [ control | echo ] [ ipv6 ] [ state { admin-down | down | init | up } ] [ discriminator remote remote-value ] [ peer-ipv6 ipv6-address [ vpn-instance vpn-instance-name ] ] [ verbose ] ]
display bfd session [ [ dynamic ] [ control | echo ] [ lsp | te | pw | srv6-policy ] [ state { admin-down | down | init | up } ] [ discriminator remote remote-value ] [ [ peer-ip ipv4-address [ vpn-instance vpn-instance-name ] ] | [ peer-ipv6 ipv6-address [ vpn-instance vpn-instance-name ] ] ] [ verbose ] ]
display bfd session [ [ static ] [ ip ] [ state { admin-down | down | init | up } ] [ discriminator remote remote-value ] [ peer-ip { ipv4-address | default-ip } [ vpn-instance vpn-instance-name ] ] [ verbose ]
display bfd session [ [ static ] [ ipv6 ] [ state { admin-down | down | init | up } ] [ discriminator remote remote-value ] [ peer-ipv6 ipv6-address [ vpn-instance vpn-instance-name ] ] [ verbose ]
请在用户视图下执行以下命令,清除BFD会话统计信息。
reset bfd session statistics
SBFD(Seamless BFD,无缝BFD)是一种单向的故障检测机制,简化了BFD的状态机(SBFD仅支持UP、DOWN两个状态),缩短了会话协商时间,其检测速度比BFD更快速。SBFD适用于仅一端需要进行链路状态检测的情况。
SBFD会话中,节点的角色分为发起端(Initiator)和响应端(Reflector):
· Initiator:SBFD会话的发起者,负责维护SBFD会话的状态。Initiator周期性发送SBFD echo报文或SBFD控制报文。
· Reflector:监听到达本地实体的SBFD控制报文,并判断是否需要生成SBFD响应报文。Reflector无需维护SBFD会话状态。
SBFD会话通过echo报文和控制报文实现。
对于echo报文方式的SBFD,只需配置Initiator,无需配置Reflector。echo报文方式的SBFD的检测机制如下:
(1) Initiator发送echo报文建立SBFD会话,对链路进行检测。
(2) SBFD会话的目的端不需要任何SBFD相关配置,不会建立SBFD会话,只需把收到的echo报文转发回本端。
(3) Initiator在检测时间超时前收到目的端转发回的echo报文,则认为链路可达。否则,认为链路不可达。
控制报文方式的SBFD的检测机制如下:
(1) Initiator周期性向Reflector发送SBFD控制报文。
(2) Reflector收到Initiator发送的SBFD报文后,检查报文中携带的远端标识符是否与本地节点为Reflector指定的标识符一致。如果一致,Reflector将向Initiator发送SBFD响应报文。如果不一致,Reflector将丢弃收到的SBFD报文。
(3) Initiator在检测时间超时前收到响应报文,则认为链路可达。否则,认为链路不可达。
一个节点可以同时作为不同SBFD会话的Initiator和Reflector。
目前仅支持采用静态方式建立SBFD会话,即通过命令行手工指定远端的标识符,根据指定的标识符建立SBFD会话。
(1) 配置Initiator
¡ 配置Initiator(检测SR-MPLS TE Policy)
¡ 配置Initiator(检测SRv6 TE Policy)
(2) 配置Reflector
(3) 配置BFD模板
对于控制报文方式的SBFD,Initiator上指定的SBFD会话的远端标识符必须为Reflector上通过sbfd local-discriminator命令指定的标识符。否则,当Reflector收到Initiator发送的SBFD控制报文后,发现报文中携带的远端标识符不是自己的本地标识符时,不会发送响应报文给Initiator。
使用SBFD检测LSP隧道的连通性的过程为:
(1) LSP隧道的头节点作为Initiator,将SBFD报文注入LDP LSP中。
(2) LSP隧道的尾节点作为Reflector,在收到SBFD报文后,如果报文中携带的远端标识符与本地配置的标识符相同,则通过IP路由发送SBFD响应报文给Initiator。
(3) Initiator在检测时间超时前收到Reflector发送的SBFD响应报文,即认为该LSP可达。
关于利用LDP动态建立LSP的详细介绍,请参见“MPLS配置指导”中的“LDP”。
LDP LSP通知SBFD创建会话时,会将报文的源地址、目的地址等信息通告给SBFD。其中,源地址为LDP LSP按照如下顺序选取后的地址:
(1) mpls sbfd命令(for LDP LSP)中source-ip参数指定的地址。
(2) mpls lsr-id命令指定的地址。
需要确保Reflector端存在到达Initiator端发送的SBFD报文中源地址的路由。
(1) 进入系统视图。
system-view
(2) (可选)配置被检测路径的目的IPv4地址和远端标识符的映射关系。
sbfd destination ipv4 destination-ipv4-address remote-discriminator { ipv4-address | integer-value }
缺省情况下,未配置Initiator端被检测路径的目的IPv4地址和远端标识符的映射关系。
如果希望控制建立SBFD会话使用的远端标识符,可以使用本命令配置被检测路径的目的IPv4地址和远端标识符的映射关系。
(3) 使能MPLS与BFD联动功能。
mpls bfd enable
缺省情况下,MPLS与BFD联动功能处于关闭状态。
关于本命令的详细介绍,请参见“MPLS命令参考”中的“MPLS OAM”。
(4) (可选)配置SBFD检测时间倍数。
bfd multi-hop detect-multiplier value
缺省情况下,SBFD检测时间倍数为5。
(5) (可选)配置发送SBFD控制报文的最小时间间隔。
bfd multi-hop min-transmit-interval interval
缺省情况下,发送SBFD控制报文的最小时间间隔为400毫秒。
(6) 配置使用SBFD检测指定FEC对应LSP的连通性。
mpls sbfd dest-addr mask-length [ nexthop nexthop-address ] [ remote remote-id ] [ template template-name ] [ source-ip ipv4-address ]
缺省情况下,未使用SBFD检测FEC对应LSP的连通性。
关于本命令的详细介绍,请参见“MPLS命令参考”中的“MPLS OAM”。
使用SBFD检测基于SR-MPLS建立的MPLS TE隧道连通性的过程为:
(1) MPLS TE隧道的头节点作为Initiator,将SBFD报文注入SRLSP中。
(2) MPLS TE隧道的尾节点作为Reflector,在收到SBFD报文后,如果报文中携带的远端标识符与本地配置的标识符相同,则通过IP路由发送SBFD响应报文给Initiator。
(3) Initiator在检测时间超时前收到Reflector发送的SBFD响应报文,即认为该SRLSP可达。
关于SRLSP的详细介绍,请参见“Segment Routing配置指导”中的“SR-MPLS”。
MPLS TE隧道通知SBFD创建会话时,会将报文的源地址、目的地址等信息通告给SBFD。其中,源地址为MPLS TE隧道按照如下顺序选取后的地址:
(1) mpls sbfd命令(for MPLS TE隧道)中source-ip参数指定的地址。
(2) mpls lsr-id命令指定的地址。
需要确保Reflector端存在到达Initiator端发送的SBFD报文中源地址的路由。
(1) 进入系统视图。
system-view
(2) (可选)配置被检测路径的目的IPv4地址和远端标识符的映射关系。
sbfd destination ipv4 destination-ipv4-address remote-discriminator { ipv4-address | integer-value }
缺省情况下,未配置Initiator端被检测路径的目的IPv4地址和远端标识符的映射关系。
如果希望控制建立SBFD会话使用的远端标识符,可以使用本命令配置被检测路径的目的IPv4地址和远端标识符的映射关系。
(3) 使能MPLS与BFD联动功能。
mpls bfd enable
缺省情况下,MPLS与BFD联动功能处于关闭状态。
关于本命令的详细介绍,请参见“MPLS命令参考”中的“MPLS OAM”。
(4) (可选)配置SBFD检测时间倍数。
bfd multi-hop detect-multiplier value
缺省情况下,SBFD检测时间倍数为5。
(5) (可选)配置发送SBFD控制报文的最小时间间隔。
bfd multi-hop min-transmit-interval interval
缺省情况下,发送SBFD控制报文的最小时间间隔为400毫秒。
(6) 进入MPLS TE隧道对应的Tunnel接口视图。
interface tunnel number [ mode mpls-te ]
(7) 配置使用SBFD检测隧道接口对应MPLS TE隧道的连通性。
mpls sbfd [ remote remote-id ] [ template template-name ] [ backup-path template template-name ] [ source-ip ipv4-address ]
缺省情况下,未使用SBFD检测隧道接口对应MPLS TE隧道的连通性。
关于本命令的详细介绍,请参见“MPLS命令参考”中的“MPLS OAM”。
SBFD可以用来检测SR-MPLS TE Policy的连通性,为其提供毫秒级的故障检测速度,并实现快速的故障切换。缺省情况下,SBFD仅检测SR-MPLS TE Policy中优先级最高的候选路径里的所有SID列表。当SR-MPLS TE Policy中优先级最高的候选路径里存在多个SID列表时,SBFD会对所有SID列表进行检测。当SBFD检测到优先级最高的候选路径下所有SID列表均无效时,则SBFD触发候选路径切换。
图2-1 SR-MPLS TE Policy与SBFD联动示意图
如图2-1所示,通过控制报文方式的SBFD检测SR-MPLS TE Policy路径的过程如下:
(1) 作为Initiator的源节点Device A对外发送SBFD报文,SBFD控制报文封装SR-MPLS TE Policy中优先级最高的候选路径。当SR-MPLS TE Policy中优先级最高的候选路径里存在多个SID列表时,会建立多个SBFD会话分别用来检测每一个SID列表对应的转发路径。
(2) 作为Reflector的尾节点Device E收到SBFD报文后,检查报文中携带的远端标识符是否与本地配置的标识符一致。如果一致,Reflector将通过IP路由向Initiator发送SBFD响应报文。如果不一致,Reflector将丢弃收到的SBFD报文。
(3) 源节点Device A如果收到SBFD回应报文,则认为该SID列表对应的转发路径正常;否则,会认为该SID列表对应转发路径故障。如果一个候选路径下所有SID列表对应的转发路径都发生故障,则SBFD触发候选路径切换。
通过echo报文方式的SBFD检测SR-MPLS TE Policy路径的过程如下:
(1) 作为Initiator的源节点Device A对外发送SBFD报文,SBFD echo报文封装SR-MPLS TE Policy中优先级最高的候选路径。当SR-MPLS TE Policy中优先级最高的候选路径里存在多个SID列表时,会建立多个SBFD会话分别用来检测每一个SID列表对应的转发路径。
(2) 尾节点Device E收到SBFD echo报文后,通过查找IP路由表按照最短路径将报文转发出去。
(3) 源节点Device A在检测时间超时前收到尾节点Device E转发回来的SBFD echo报文,则认为该SID列表对应的转发路径正常;否则,会认为该SID列表对应转发路径故障。如果一个候选路径下所有SID列表对应的转发路径都发生故障,则SBFD触发候选路径切换。
SR TE视图和SR-MPLS TE Policy视图下均可以配置SR-MPLS TE Policy的SBFD功能。SR TE视图的配置对所有SR-MPLS TE Policy都有效,而SR-MPLS TE Policy视图的配置只对当前SR-MPLS TE Policy有效。对于一个SR-MPLS TE Policy来说,优先采用该SR-MPLS TE Policy内的配置,只有该SR-MPLS TE Policy内未进行配置时,才采用SR TE视图的配置。
对于同一源节点和尾节点之间不同的SR-MPLS TE Policy,由于尾节点回应SBFD报文时根据IP路由表进行转发,所以SBFD回应报文的转发路径是相同的。SBFD回应报文的转发路径故障将引起所有SBFD会话Down,进而导致源节点和目的节点间所有SR-MPLS TE Policy Down。
不能通过SBFD echo报文方式检测Endpoint为IPv6地址SR-MPLS TE Policy。
如果SR-MPLS TE Policy下同时开启SBFD功能和BFD echo功能,则优先建立SBFD会话。
如果SR-MPLS TE Policy下同时开启SBFD echo功能和BFD echo功能,则优先建立SBFD echo会话。
SR-MPLS TE Policy通知SBFD创建会话时,会将报文的源地址、目的地址等信息通告给SBFD。其中,源地址为SR-MPLS TE Policy按照如下顺序选取后的地址:
(1) source-address命令指定的报文源地址。
(2) mpls lsr-id或者sbfd source-ipv6命令指定的地址。
需要确保Reflector端存在到达Initiator端发送的SBFD报文中源地址的路由。
关于Segment Routing视图下所有配置命令的详细情况,请参见“Sgment Routeing命令参考”中的“SR-MPLS TE Policy”。
配置本功能前,需要执行mpls bfd enable命令开启MPLS BFD功能。有关mpls bfd enable命令的详细介绍,请参见“MPLS命令参考”中的“MPLS OAM”。
(1) 进入系统视图。
system-view
(2) (可选)配置被检测路径的目的IPv4地址和远端标识符的映射关系。
sbfd destination ipv4 destination-ipv4-address remote-discriminator { ipv4-address | integer-value }
缺省情况下,未配置Initiator端被检测路径的目的IPv4地址和远端标识符的映射关系。
如果希望控制建立SBFD会话使用的远端标识符,可以使用本命令配置被检测路径的目的IPv4地址和远端标识符的映射关系。
(3) 进入Segment Routing视图。
segment-routing
(4) 进入SR-TE视图。
traffic-engineering
(5) 开启所有SR-MPLS TE Policy的SBFD功能。
sr-policy sbfd enable [ proxy-reflector ] [ remote remote-id ] [ template template-name ] [ backup-template backup-template-name ]
缺省情况下,所有SR-MPLS TE Policy的SBFD功能处于关闭状态。
(6) (可选)配置SBFD的检测时间参数。
sr-policy sbfd timer { detect-multiplier multiplier-value | min-tx-interval transmit-interval }
缺省情况下,未配置SBFD的检测时间参数。
(7) 进入SR-MPLS TE Policy视图。
policy policy-name
(8) (可选)配置SR-MPLS TE Policy SBFD报文的源地址。
source-address ipv4 ipv4-address
缺省情况下,未配置SR-MPLS TE Policy SBFD报文的源地址。
如果未配置本命令,则SR-MPLS TE Policy SBFD报文的源地址为mpls lsr-id命令指定的地址。
(9) 配置SR-MPLS TE Policy的SBFD功能。
sbfd { disable | enable [ proxy-reflector [ disable ] ] [ remote remote-id ] [ template template-name ] [ backup-template backup-template-name ] }
缺省情况下,未配置SR-MPLS TE Policy的SBFD功能,以SR-TE视图下的配置为准。
(1) 进入系统视图。
system-view
(2) 进入Segment Routing视图。
segment-routing
(3) 进入SR-TE视图。
traffic-engineering
(4) 开启所有SR-MPLS TE Policy的SBFD功能。
sr-policy sbfd enable encapsulation-mode ipv4 [ proxy-reflector ] [ remote remote-id ] [ template template-name ] [ backup-template backup-template-name ]
缺省情况下,所有SR-MPLS TE Policy的SBFD功能处于关闭状态。
(5) (可选)配置SBFD的检测时间参数。
sr-policy sbfd timer { detect-multiplier multiplier-value | min-tx-interval transmit-interval }
缺省情况下,未配置SBFD的检测时间参数。
(6) 进入SR-MPLS TE Policy视图。
policy policy-name
(7) (可选)配置SR-MPLS TE Policy SBFD报文的源地址。
source-address ipv4 ipv4-address
缺省情况下,未配置SR-MPLS TE Policy SBFD报文的源地址。
如果未配置本命令,则SR-MPLS TE Policy SBFD报文的源地址为mpls lsr-id命令指定的地址。
(8) 配置SR-MPLS TE Policy的SBFD功能。
sbfd { disable | enable [ encapsulation-mode ipv4 ] [ proxy-reflector [ disable ] ] [ remote remote-id ] [ template template-name ] [ backup-template backup-template-name ] }
缺省情况下,未配置SR-MPLS TE Policy的SBFD功能,以SR-TE视图下的配置为准。
(1) 进入系统视图。
system-view
(2) 配置Initiator发送SBFD报文使用的源IPv6地址。
sbfd source-ipv6 ipv6-address
缺省情况下,未配置Initiator发送SBFD报文使用的源IPv6地址。
(3) 进入Segment Routing视图。
segment-routing
(4) 进入SR-TE视图。
traffic-engineering
(5) 开启所有SR-MPLS TE Policy的SBFD功能。
sr-policy sbfd enable [ encapsulation-mode ipv6 ] [ proxy-reflector ] [ remote remote-id ] [ template template-name ] [ backup-template backup-template-name ]
缺省情况下,所有SR-MPLS TE Policy的SBFD功能处于关闭状态。
(6) (可选)配置SBFD的检测时间参数。
sr-policy sbfd timer { detect-multiplier multiplier-value | min-tx-interval transmit-interval }
缺省情况下,未配置SBFD的检测时间参数。
(7) 进入SR-MPLS TE Policy视图。
policy policy-name
(8) (可选)配置SR-MPLS TE Policy SBFD报文的源地址。
source-address ipv6 ipv6-address
缺省情况下,未配置SR-MPLS TE Policy SBFD报文的源地址。
(9) 配置SR-MPLS TE Policy的SBFD功能。
sbfd { disable | enable [ encapsulation-mode ipv6 ] [ proxy-reflector [ disable ] ] [ remote remote-id ] [ template template-name ] [ backup-template backup-template-name ] }
缺省情况下,未配置SR-MPLS TE Policy的SBFD功能,以SR-TE视图下的配置为准。
(1) 进入系统视图。
system-view
(2) 进入Segment Routing视图。
segment-routing
(3) 进入SR-TE视图。
traffic-engineering
(4) 开启所有SR-MPLS TE Policy的SBFD功能。
sr-policy sbfd echo enable [ template template-name ] [ backup-template backup-template-name ]
缺省情况下,所有SR-MPLS TE Policy的SBFD功能处于关闭状态。
(5) (可选)配置SBFD的检测时间参数。
sr-policy sbfd timer { detect-multiplier multiplier-value | min-tx-interval transmit-interval }
缺省情况下,未配置SBFD的检测时间参数。
(6) 进入SR-MPLS TE Policy视图。
policy policy-name
(7) (可选)配置SR-MPLS TE Policy SBFD报文的源地址。
source-address ipv4 ipv4-address
缺省情况下,未配置SR-MPLS TE Policy SBFD报文的源地址。
如果未配置本命令,则SR-MPLS TE Policy SBFD报文的源地址为mpls lsr-id命令指定的地址。
(8) 配置SR-MPLS TE Policy的SBFD功能。
sbfd echo { disable | enable [ template template-name ] [ backup-template backup-template-name ] }
缺省情况下,未配置SR-MPLS TE Policy的SBFD功能,以SR-TE视图下的配置为准。
在公网IP over SRv6 BE场景、IP L3VPN over SRv6 BE场景或EVPN L3VPN over SRv6 BE场景中,对端CE双归属接入到两个PE设备时,在本端PE设备上开启FRR功能后,本端PE上将形成主备两条路径。主路径发生故障时,为了使流量快速切换到备份路径进行转发,可以在本端PE设备配置本功能,通过SBFD快速检测对端PE设备通过BGP发布的SRv6 Locator网段的连通性,以便快速发现主路径故障,并引导流量快速切换至备份路径。
SBFD检测BGP发布的SRv6 Locator网段的连通性过程如下:
(1) 本端PE设备作为Initiator发送SBFD报文,SBFD将sbfd source-ipv6指定的地址作为SBFD报文源地址、SRv6 Locator网段作为SBFD报文目的地址。
(2) 对端PE设备作为Reflector收到SBFD报文后,检查报文中携带的远端标识符是否与本地配置的标识符一致。如果一致,Reflector将通过IPv6路由向Initiator发送SBFD响应报文。如果不一致,Reflector将丢弃收到的SBFD报文。
(3) 如果Initiator在检测时间超时前能够收到SBFD响应报文,则认为SRv6 Locator网段的连通性正常。否则,Initiator认为SRv6 Locator网段不可达,快速切换至备份路径。
为保证本功能正常生效,请在本端PE设备上执行sbfd destination ipv6 remote-discriminator命令配置被检测SRv6 Locator网段和远端标识符的映射关系,并在主路径对端PE设备上执行sbfd local-discriminator命令设置Reflector端的本地标识符,并保证本端PE设备的远端标识符和对端PE设备上的本地标识符一致。
关于SRv6视图下所有配置命令的详细情况,请参见“Sgment Routeing命令参考”中的“SRv6”。
(1) 进入系统视图。
system-view
(2) 配置Initiator发送SBFD报文使用的源IPv6地址。
sbfd source-ipv6 ipv6-address
缺省情况下,未配置Initiator发送SBFD报文使用的源IPv6地址。
(3) 进入SRv6视图。
segment-routing ipv6
(4) 配置SRv6 Locator的SBFD检测功能。
locator-sbfd enable [ template template-name ] [ prefix-list prefix-list-name ]
缺省情况下,未配置SRv6 Locator的SBFD检测功能。
SBFD可以用来检测SRv6 TE Policy的连通性,为其提供毫秒级的故障检测速度,并实现快速的故障切换。一个SRv6 TE Policy中,优先级最高的有效路径为主路径,优先级次高的有效路径为备份路径。SBFD对SRv6 TE Policy的主、备路径进行检测。如果主、备路径中存在多个SID列表,SBFD会对所有SID列表进行检测。当SBFD检测到SRv6 TE Policy主路径的所有SID列表均无效时,SBFD通知SRv6 TE Policy切换到备份路径。
如图2-2所示,在Device A上配置SRv6 TE Policy,并使用SBFD检测该SRv6 TE Policy。SBFD检测SRv6 TE Policy的过程如下:
(1) 头节点作为Initiator发送SBFD报文,SBFD报文封装SRv6 TE Policy中主路径或备份路径对应的SID列表,分别对主、备路径进行检测。
(2) 作为Reflector的尾节点收到SBFD报文后,检查报文中携带的远端标识符是否与本地配置的标识符一致。如果一致,Reflector将通过IPv6路由向Initiator发送SBFD响应报文。如果不一致,Reflector将丢弃收到的SBFD报文。
(3) 如果头节点在检测时间超时前能够收到SBFD响应报文,则认为SRv6 TE Policy的SID列表正常。否则,头节点认为SID列表故障。如果主路径下的所有SID列表都发生故障,则SBFD触发主备路径切换。
图2-2 SRv6 TE Policy与SBFD联动示意图
SRv6-TE视图和SRv6 TE Policy视图下均可以配置SRv6 TE Policy的SBFD功能。SRv6-TE视图的配置对所有SRv6 TE Policy都有效,而SRv6 TE Policy视图的配置只对当前SRv6 TE Policy有效。对于一个SRv6 TE Policy来说,优先采用该SRv6 TE Policy内的配置,只有该SRv6 TE Policy内未进行配置时,才采用SRv6-TE视图的配置。
SRv6 TE Policy通知SBFD创建会话时,会将报文的源地址、目的地址等信息通告给SBFD。其中,源地址为SRv6 TE Policy按照如下顺序选取后的地址:
(1) source-address命令指定的报文源地址。
(2) sbfd source-ipv6或sbfd source-ipv4命令指定的地址。
需要确保Reflector端存在到达Initiator端发送的SBFD报文中源地址的路由。
关于SRv6视图下所有配置命令的详细情况,请参见“Sgment Routeing命令参考”中的“SRv6 TE Policy”。
(1) 进入系统视图。
system-view
(2) 配置被检测路径的目的IPv6地址和远端标识符的映射关系。
sbfd destination ipv6 destination-ipv6-address remote-discriminator { ipv4-address | integer-value }
缺省情况下,未配置Initiator端被检测路径的目的IPv6地址和远端标识符的映射关系。
如果未通过sbfd命令或srv6-policy sbfd命令指定SBFD会话的远端标识符,那么必须配置sbfd destination ipv6 remote-discriminator命令,否则建立的SBFD会话无法协商UP。
(3) (可选)配置SBFD检测时间倍数。
bfd multi-hop detect-multiplier value
缺省情况下,SBFD检测时间倍数为5。
(4) (可选)配置发送SBFD控制报文的最小时间间隔。
bfd multi-hop min-transmit-interval interval
缺省情况下,配置发送SBFD控制报文的最小时间间隔为400毫秒。
(5) 配置Initiator发送SBFD报文使用的源IPv6地址。
sbfd source-ipv6 ipv6-address
缺省情况下,未配置Initiator发送SBFD报文使用的源IPv6地址。
(6) 配置Initiator发送SBFD报文使用的源IPv4地址(SRv6 TE Policy的endpoint是ipv4地址的情况)。
sbfd source-ipv4 ipv4-address
缺省情况下,未配置Initiator发送SBFD报文使用的源IPv4地址。
(7) 进入SRv6视图。
segment-routing ipv6
(8) 进入SRv6-TE视图。
traffic-engineering
(9) 全局开启SRv6 TE Policy的SBFD功能并配置相关参数。
srv6-policy sbfd [ remote remote-id ] [ template template-name ] [ backup-template backup-template-name ]
缺省情况下,SRv6 TE Policy的SBFD功能处于关闭状态。
(10) 进入SRv6 TE Policy视图。
policy policy-name
(11) (可选)配置SRv6 TE Policy SBFD报文的源地址。
source-address { ip ipv4-address | ipv6 ipv6-address }
缺省情况下,未配置SRv6 TE Policy SBFD报文的源地址。
(12) 配置使用SBFD检测SRv6 TE Policy。
sbfd { disable | enable [ remote remote-id ] [ template template-name ] [ backup-template backup-template-name ] [ oam-sid sid ] [ encaps | insert [ no-endpoint ] ] }
缺省情况下,未使用SBFD检测SRv6 TE Policy的连通性。
关于本命令的详细介绍,请参见“Sgment Routeing命令参考”中的“SRv6 TE Policy”。
在SBFD会话的Reflector端配置IPv4地址形式的本地标识符后,设备会自动转换为整数形式的本地标识符。IPv4地址形式的本地标识符用于和其他厂商互通,通常情况下,建议配置整数形式的本地标识符。
Reflector收到Initiator发送的SBFD控制报文中携带的远端标识符为Reflector上通过sbfd local-discriminator命令指定的任意一个标识符时,Reflector均会发送响应报文给Initiator。
(1) 进入系统视图。
system-view
(2) 在SBFD会话的Reflector端配置本地标识符。
sbfd local-discriminator { ipv4-address | integer-value }
缺省情况下,未配置SBFD会话的Reflector端的本地标识符。
多次执行本命令,可以为Reflector端配置多个本地标识符。
通过BFD模板可以对SBFD会话的参数进行灵活配置。使用SBFD检测如下类型的路径时,可通过关联BFD模板获取SBFD会话参数:
· LDP LSP
· MPLS TE隧道
· SR-MPLS TE Policy
· SRv6 TE Policy
(1) 进入系统视图。
system-view
(2) 创建BFD模板,并进入BFD模板视图。
bfd template template-name
(3) 配置SBFD检测时间倍数。
bfd detect-multiplier value
缺省情况下,SBFD检测时间倍数为5。
(4) 配置发送SBFD控制报文的最小时间间隔。
bfd min-transmit-interval interval
缺省情况下,发送SBFD控制报文的最小时间间隔为400毫秒。
上层应用使用SBFD检测主用路径的场景中,如果主用路径DOWN后,触发上层协议进行主备路径切换。如果主路径故障恢复前,检测主用路径的SBFD会话重新UP,将会触发备份路径切换到处于故障状态的主路径,会导致流量丢失。为了解决上述问题,需要对SBFD会话协商进行控制,具体方式为延迟SBFD会话协商。
开启本功能后,工作机制如下:
· 设备将对每一个从UP状态切换为DOWN状态的SBFD会话启动一个定时器,在定时器超时前,对应的会话不会进行重协商。
· 任何新建立的SBFD会话,设备都会启动定时器。在定时器超时前,不会重新进行会话协商。
(1) 进入系统视图。
system-view
(2) 开启延迟DOWN状态的SBFD会话进行协商的功能,并设置延迟会话协商的时间。
bfd session-negotiation delay-upon-down interval
缺省情况下,延迟DOWN状态的SBFD会话进行协商的功能处于关闭状态。
BFD检测两台设备间的链路连通性时,如果两台设备间存在多条可达路径(例如ECMP或聚合链路),设备在转发BFD报文时会根据UDP端口号作为报文特征来选择特定的转发路径。缺省情况下,对于同一个BFD会话,BFD报文的源端口号在会话开始时随机生成后保持不变,而目的端口号则根据会话类型确定,并在整个会话期间保持一致。
这种情况会导致设备始终使用同一条路径转发BFD报文。一旦该路径出现故障,BFD会话将变为Down状态。这意味着网络的冗余能力没有得到充分利用,对链路连通性检测的准确性和网络的稳定性构成了挑战。本功能用于解决上述问题。
BFD检测两台设备间的链路连通性时,对于不同报文方式的会话,需要在不同的设备上配置本命令。具体如下:
· 对于控制报文方式的BFD会话,需要在这两台设备上同时配置本命令。
· 对于echo报文方式的BFD会话,仅需要在发送echo报文的设备上配置本命令。
配置本命令后,设备转发BFD报文时,会修改报文的端口号,使得设备能够选择不同的路径转发BFD报文,避免单链路故障导致BFD会话Down。修改端口号的机制如下:
· 对于BFD报文,设备修改报文的源端口号。
对于SBFD报文,Initiator端修改报文的源端口号,Reflector端修改报文的目的端口号。
本功能为H3C私有实现,在与其他厂商设备对接的场景中,建议不要使用本功能,否则可能导致BFD会话震荡。
本命令仅对由硬件维护的BFD会话生效。配置本命令后,对于配置本命令前已创建的BFD会话以及配置本命令后新创建的BFD会话均生效。
本命令对BFD以及SBFD报文均生效。
(1) 进入系统视图。
system-view
(2) 开启动态修改BFD报文源端口号功能。
bfd dynamic-udp-port enable
动态修改BFD报文端口号功能处于关闭状态。
可在任意视图下执行以下命令,显示SBFD会话信息。
display sbfd session { initiator [ discriminator value | [ ipv6 [ peer-ipv6 ipv6-address ] | srv6-policy ] [ verbose ] | verbose ] | reflector [ discriminator value | verbose ] }
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!