09-BFD配置
本章节下载: 09-BFD配置 (602.95 KB)
1.5.3 通过bfd static命令手工创建静态BFD会话
1.6.5 通过bfd static命令手工创建静态BFD会话
1.6.9 配置BFD会话无法建立时,通知上层协议BFD会话down的超时时间
1.8 配置M-LAG组网中M-LAG设备通过peer-link链路发送特定的BFD echo报文
2.4.3 配置Initiator(检测MPLS TE隧道)
BFD(Bidirectional Forwarding Detection,双向转发检测)是一个通用的、标准化的、介质无关和协议无关的快速故障检测机制,用于检测转发路径的连通状况,保证设备之间能够快速检测到通信故障,以便能够及时采取措施,保证业务持续运行。BFD可以为各种上层协议(如路由协议)快速检测两台设备间双向转发路径的故障。上层协议通常采用Hello报文机制检测故障,所需时间为秒级,而BFD可以提供毫秒级检测。
BFD在两台网络设备上建立会话,用来检测网络设备间的双向转发路径,为上层应用服务。BFD本身并没有发现机制,而是靠被服务的上层协议通知来建立会话。具体机制如下:
(1) 上层协议在建立新的邻居关系后,将邻居的参数及检测参数(包括目的地址和源地址等)通告给BFD。
(2) BFD根据收到的参数建立BFD会话。
会话建立后会周期性地快速发送BFD报文,如果在检测时间内没有收到BFD报文,则认为该双向转发路径发生了故障,并将故障信息通知给该会话所服务的上层应用,由上层应用采取相应的措施。下面以OSPF与BFD联动为例,简单介绍BFD的工作流程。
如图1-1所示,OSPF与BFD联动触发建立会话的流程为:
(1) OSPF通过自己的Hello机制发现邻居并建立连接。
(2) OSPF在建立了新的邻居关系后,将邻居信息(包括目的地址和源地址等)通告给BFD。
(3) BFD根据收到的邻居信息建立会话。
(4) 会话建立后,BFD开始周期性检测链路。
图1-1 BFD会话建立流程图
BFD检测到链路故障通知OSPF的流程为:
(1) 被检测链路出现故障。
(2) BFD检测到链路故障,BFD会话状态变为Down。
(3) BFD通知本地OSPF进程BFD邻居不可达。
(4) 本地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会话有四种状态,分别为:DOWN、ADMIN DOWN、INIT和UP。各会话状态表示的含义如下:
· DOWN:本端会话已经关闭或刚刚创建。DOWN状态表示转发路径不可用,与BFD会话联动的上层应用需要采取适当的措施,例如主备路径切换等。
· ADMIN DOWN:通过管理手段阻止本端系统建立BFD会话时,BFD会话状态为ADMIN DOWN。会话处于ADMIN DOWN时,不代表转发路径不可用,与BFD会话联动的上层应用不需要采取措施。
· INIT:本端已经可以与对端通信,且本端希望会话进入UP状态。
· UP:本端会话已经建立成功。UP状态表示转发路径可用。
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会话的状态机迁移机制如图1-5所示。在状态机中ADMIN DOWN也是DOWN状态。
图1-5 BFD会话状态机迁移机制
BFD控制协议报文的格式如图1-6所示,BFD控制报文包括强制必选部分和可选认证部分。
图1-6 BFD控制报文
BFD控制报文各字段含义如表1-1所示。
表1-1 BFD控制报文字段含义
字段 |
长度 |
含义 |
Vers (Version) |
3 bits |
BFD协议版本号,目前版本号为1 |
Diag (Diagnostic) |
5bits |
诊断码,表明发送方最近一次会话Down的原因。包括: · 0:表示无诊断信息 · 1:表示Ctrl会话本端检测时间超时,会话down · 2:表示Echo会话本端检测时间超时或echo报文的源IP地址被删除,会话down · 3:表示对端检测超时通知本端BFD会话down · 7:表示本端系统阻止BFD会话的建立 · 31:表示收到对端发送的状态为AdminDown的报文 |
Sta (State) |
2 bits |
发送方BFD会话当前状态,取值为: · 0:代表AdminDown · 1:代表Down · 2:代表Init · 3:代表Up |
P (Poll) |
1 bit |
会话参数变化时,发送方发送的BFD报文中将P位置位,接收方必须立即响应该报文 · 0:表示发送方不请求确认 · 1:表示发送方请求进行连接确认,或者发送方请求对参数的改变进行确认 |
F (Final) |
1 bit |
F标志位的置位状态决定了BFD是否在收到P位置位的报文时发送响应报文 · 0:表示发送系统不响应P位置位的报文 · 1:表示发送系统响应接收到的P位置位的报文 |
C (Control Plane Independent) |
1 bit |
转发/控制分离标志位。该字段置位表明BFD的实现是独立于控制平面的,即控制平面的变化不影响BFD检测。例如,控制平面为IS-IS,当IS-IS平滑重启(GR)时,BFD可以继续检测链路状态。 · 1:表示发送系统的BFD实现不依赖于控制平面。即:BFD报文在转发平面传输,即使控制平面失效,BFD仍然能够对链路进行检测 · 0:表示BFD报文在控制平面传输 |
A (Authentication Present) |
1 bit |
该字段置位表明报文包含认证部分,会话需要进行认证 |
D (Demand) |
1 bit |
该字段置位表明发送方希望以查询模式运行,不置位表明不希望以查询模式运行或不支持查询模式 |
M (Multipoint) |
1 bit |
保留位,发送时设为0,接收时忽略该字段 |
Detect Mult |
8 bits |
检测时间倍数,用于检测方计算检测时间间隔 |
Length |
8 bits |
BFD控制报文长度,单位为字节 |
My Discriminator |
32 bits |
BFD会话的本地标识符。发送方产生的一个唯一非0值,用来标识不同的BFD会话 |
Your Discriminator |
32 bits |
BFD会话的远端标识符。如果已经收到会话邻居发送的BFD控制报文则该值为收到报文中的My Discriminator,否则为0 |
Desired Min TX Interval |
32 bits |
本地系统在发送BFD控制报文时希望使用的最小时间间隔,单位为微秒 |
Required Min RX Interval |
32 bits |
本地系统能够支持的最小BFD控制报文接收间隔,单位为微秒 |
Required Min Echo RX Interval |
32 bits |
本地系统支持的发最小BFD echo报文接收时间间隔,单位为微秒。为0表示不支持回声功能 |
Auth Type |
8 bits |
认证类型 |
Auth Len |
8 bits |
可选认证部分长度,包括Auth Type和Auth Len字段,单位为字节 |
Authentication Data |
Variable |
认证数据区 |
BFD会话建立前,通过改变BFD会话的运行模式可以控制发送BFD控制报文的方式:
· 主动模式:在建立会话前不管是否收到对端发来的BFD控制报文,都会主动发送BFD控制报文。
· 被动模式:在建立会话前不会主动发送BFD控制报文,直到收到对端发送来的控制报文。
通信双方至少要有一方运行在主动模式才能成功建立起BFD会话。
BFD使用三次握手的机制来建立会话,发送方在发送BFD控制报文时会在Sta字段填入本地当前的会话状态,接收方根据收到的BFD控制报文的Sta字段以及本地当前会话状态来进行状态机的迁移,建立会话。
图1-7 BFD会话建立过程
控制报文方式的BFD会话建立后,两端通过周期性发送控制报文对链路进行检测。
控制报文方式的BFD支持两种检测模式:
· 异步模式:设备周期性发送BFD控制报文,如果在检测时间内没有收到对端发送的BFD控制报文,则认为会话DOWN。缺省情况下,BFD会话为异步模式。
· 查询模式:当系统中的BFD会话数量较多时,采用查询模式可防止周期性发送BFD控制报文的开销对系统的正常运行造成影响。当检测模式为查询模式时,建议开启BFD回声功能。
¡ 本端的BFD会话工作在查询模式时,本端设备会向对端发送D比特位置1的BFD控制报文,对端(缺省为异步模式)收到该报文后将停止周期性发送BFD控制报文。
¡ 如果BFD会话两端都是查询模式,则双方在BFD会话建立后停止周期性发送BFD控制报文。仅当需要验证连通性的时候,设备会连续发送P比特位置1的BFD控制报文。如果在检测时间内没有收到对端回应的F比特位置1的报文,就认为会话DOWN;如果在检测时间内收到对端回应的F比特位置1的报文,就认为链路连通,停止发送报文,等待下一次触发查询。
使用异步模式的BFD会话检测直连网段的连通性时,可以使用BFD回声功能辅助进行故障检测。使能BFD回声功能后,会话的一端周期性地发送echo报文,同时自动降低控制报文的接收速率,减少对带宽资源的消耗。对端不对echo报文进行处理,只将此报文转发回发送端。如果发送端连续几个echo报文都没有接收到,会话状态将变为DOWN。
仅单跳检测支持回声功能。
BFD会话的建立方式有两种,即静态建立BFD会话和动态建立BFD会话。
控制报文方式的BFD通过本地标识符和远端标识符来区分不同的会话。静态创建BFD会话和动态建立BFD会话的主要区别在于本地标识符和远端标识符的获取方式不同:
· 静态BFD会话的本地标识符和远端标识符由用户手工配置。
· 动态BFD会话的本端标识符由本端设备自动分配,远端标识符在BFD会话协商建立过程中获取。
BFD检测到链路故障时,会拆除BFD会话,并通知上层协议邻居不可达。当上层协议重新建立邻居关系后,BFD会话重新up。当链路频繁发生故障并故障恢复时,将导致BFD会话震荡,引发设备不断执行上述操作,这会占用大量的系统资源并影响网络的稳定性。BFD会话震荡抑制功能用于解决上述问题。
本功能通过惩罚机制对BFD会话震荡进行抑制,根据BFD会话的down次数设置不同的抑制时间间隔,在抑制时间间隔内,不允许重新建立BFD会话。BFD会话down次数越多,抑制时间越长,从而抑制BFD会话的震荡次数。
软件BFD是指BFD检测过程中的报文收发、BFD会话状态机的维护完全依赖CPU来处理。软件BFD会极大的消耗CPU能力。同时,受CPU性能影响,能够支持的BFD会话规格较小,无法用于大规格BFD会话需求的应用场景。
硬件BFD把过度消耗CPU资源的会话处理转移到芯片,这样CPU可以及时处理其他重要任务。硬件BFD会话处理的性能不受限于CPU的性能。相较于软件BFD,硬件BFD能够支持大规格的BFD会话。
用户通过display bfd session verbose命令显示信息中的Hardware mode字段能够判断会话由软件维护还是由硬件维护:Hardware mode字段取值为Disabled,说明会话由软件维护;Hardware mode字段取值为Enabled,说明会话由硬件维护。
对于由硬件维护的BFD会话,触发会话切换为软件维护的常见操作包括:
· 配置硬件BFD不支持的命令
· 拔出支持硬件BFD的单板
由硬件维护的BFD会话切换为软件维护时,可能会导致会话震荡,请谨慎配置。
BFD可以和路由协议、MPLS等联合使用,具体如表1-2所示。
表1-2 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” |
PIM与BFD联动 |
“IP组播配置指导”中的“PIM” |
IPv6 PIM与BFD联动 |
“IP组播配置指导”中的“IPv6 PIM” |
RSVP与BFD联动 |
“MPLS配置指导”中的“RSVP” |
Track与BFD联动 |
“可靠性配置指导”中的“Track” |
BFD能够检测多种类型的链路的连通性,具体如表1-3所示。
表1-3 BFD检测的链路类型
BFD检测的链路类型 |
具体链路类型 |
说明 |
IP链路 |
· 三层以太网物理接口 · 三层以太网子接口(包括聚合接口的子接口) |
对于一个物理以太网接口有多个子接口的情况,BFD会话可以独立建立在各个子接口上和此物理以太网接口上,但不建议同时使用 |
以太网聚合链路 |
· 二层以太网聚合链路 · 二层以太网聚合链路的成员链路 · 三层以太网聚合链路 · 三层以太网聚合链路的成员链路 |
检测Trunk成员口与检测Trunk口的BFD会话相互独立,但不建议同时使用 |
MPLS LSP |
静态建立的BFD会话,能够检测的LSP类型包括: · LDP LSP · TE:TE隧道、与隧道绑定的静态CRLSP 动态建立的BFD会话,能够检测的LSP类型包括: · LDP LSP · TE:TE隧道、与隧道绑定的动态CRLSP |
检测MPLS LSP的连通性时,BFD会话协商有两种方式: · 静态创建BFD会话:通过手工配置会话的本地标识符和远端标识符,通过BFD本身的协商机制建立会话 · 动态建立BFD会话:本端标识符由本端设备自动分配,远端标识符在BFD会话协商建立过程中获取,通过BFD本身的协商机制建立会话 |
PW |
单段PW |
支持静态建立的BFD和动态建立的BFD检测PW |
BFD具有以下技术优点:
· 对网络设备间任意类型的双向转发路径进行故障检测,路径可以是物理链路,也可以是逻辑链路,包括隧道。
· 可以为不同的上层应用服务,并且提供统一的检测机制。
· 提供毫秒级的检测速度,从而加快网络收敛速度,减少应用中断时间,提高网络的可靠性。
与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运行版本1,同时兼容版本0。不能通过命令行配置修改为版本0,当对端设备运行版本0会话时,本端自动会切换到版本0。
BFD会话建立后,可以动态协商BFD的相关参数(例如最小发送间隔、最小接收间隔、初始模式、报文认证等),两端协议通过发送相应的协商报文后采用新的参数,不影响会话的当前状态。
对于建立在跨成员设备的聚合接口上的BFD会话,当负责收发BFD报文的主设备异常重启时,从设备接替收发BFD报文的工作需要一定的时间,如果BFD会话检测时间较短或者会话数量较多,可能会出现BFD会话震荡的情况。
本节中的所有配置均为可选,请根据实际情况选择配置。
(1) 硬件BFD配置
(1) 配置echo报文方式的BFD
(2) 配置控制报文方式的BFD
¡ 配置BFD会话无法建立时,通知上层协议BFD会话down的超时时间
(3) 开启BFD会话震荡抑制功能
(4) 配置M-LAG组网中M-LAG设备通过peer-link链路发送特定的BFD echo报文
(5) 配置BFD日志和告警功能
配置设备的固件资源模式为PTP-BFD模式或INT-BFD模式后,控制报文方式单跳检测的BFD会话(协议端口号为3784)和控制报文方式多跳检测的BFD会话(协议端口号为4784)由硬件芯片处理,除此之外的BFD会话由软件处理。由硬件芯片处理的BFD称为硬件BFD,由软件处理的BFD称为软件BFD。
硬件BFD和软件BFD的配置方式相同。对于硬件BFD不支持的会话类型,相关配置下发后,转为软件BFD处理。
设备上存在INT(In-band Telemetry,带内遥测)固件、PTP(Precision Time Protocol,精确时间协议)固件和BFD固件,但只能支持两种固件同时工作。关于INT的详细介绍,请参见“Telemetry配置指导”中的“INT”;关于PTP的详细介绍,请参见“网络管理和监控配置指导”中的“PTP”。
通过本功能可以指定同时工作的两种固件:
· INT-PTP模式:支持INT和PTP固件同时工作。
· PTP-BFD模式:支持PTP和BFD固件同时工作。
· INT-BFD模式:支持INT和BFD固件同时工作。
表1-4 不同固件资源模式下的功能支持情况
固件资源模式 |
同时工作的两种固件 |
各功能的支持情况 |
||
BFD功能 |
INT功能 |
PTP功能 |
||
INT-PTP |
INT和PTP固件 |
完全支持BFD功能,但BFD报文收发、BFD会话状态机的维护完全依赖CPU来处理 |
完全支持INT功能 |
完全支持PTP功能 |
PTP-BFD |
PTP和BFD固件 |
完全支持BFD功能,BFD报文收发以及故障检测等消耗CPU性能的功能转移到硬件芯片上处理 |
设备只能作为INT中间节点 |
完全支持PTP功能 |
INT-BFD |
INT和BFD固件 |
完全支持BFD功能,BFD报文收发以及故障检测等消耗CPU性能的功能转移到硬件芯片上处理 |
完全支持INT功能 |
不支持PTP功能 |
仅Release 6635及以上版本支持本功能。
配置固件资源模式后,须手工保存配置并重启设备才能生效。重启设备前请评估重启对网络造成的影响,做好相关准备工作。
在进行设备的版本替换时,需注意一下情况:假设设备的软件版本是Release 6635及以后版本,并且配置固件资源模式为INT-PTP模式,那么在设备版本回退至Release 6635以前版本时,设备可能会出现无法正常建立BFD会话的情况。
硬件BFD的使用限制如下:
· 仅支持控制报文类型的BFD会话。
· 本端配置认证、对端未配置认证时,BFD会话立刻down。两端配置相同的认证时,BFD会话会重新协商up。
· 和BFD联动的上层协议的所用的ARP/ND更新时,硬件BFD无法感知和刷新ARP,需要重新配置BFD。
· 硬件BFD不支持封装隧道报文。
· 不支持链路聚合、接口状态、MPLS与BFD联动。
· 对于控制报文方式多跳检测的BFD会话,如果BFD会话的链路为ECMP,ECMP链路切换时,BFD会话可能会震荡。
· 如果BFD会话的出接口是聚合接口,聚合成员端口切换时,BFD会话可能会震荡。
· 当BFD检测的最小时间间隔在3~99时,如果修改配置为硬件BFD不能支持的配置,硬件BFD会自动转换为软件BFD,BFD会话可能会震荡。
· 不支持使用BFD检测VXLAN隧道。
· 不支持在IRF设备上配置。
· 不支持VPN。
· 硬件BFD转换为软件BFD时,BFD会话会震荡。
(1) 进入系统视图。
system-view
(2) 配置固件资源模式。
hardware-resource firmware-mode { INT-PTP | PTP-BFD | INT-BFD }
缺省情况下,固件资源模式为INT-PTP模式。
(3) 配置硬件BFD。
硬件BFD和软件BFD的配置方式相同。
建立echo报文方式的BFD会话的方式有两种:
· 通过bfd static命令手工创建。
· 应用程序与BFD联动时动态创建。
在已配置uRPF功能的设备上不要配置echo报文方式的BFD,否则可能导致echo报文被丢弃。关于uRPF功能的详细介绍请参见“安全配置指导”中的“uRPF”。
创建的静态BFD会话可以用来进行echo报文方式的BFD单跳检测和多跳检测。
使用echo报文方式的静态BFD会话进行检测时,仅需在本端创建静态BFD会话。
首次创建静态BFD会话时,必须指定静态BFD会话的对端IPv4或IPv6地址。系统仅检查IP地址的形式,不检查其正确性。指定错误的对端IP地址或源IP地址均会导致静态BFD会话无法建立。
不同的静态BFD会话的本地标识符不能相同。
如果创建静态BFD会话时未指定source-ip/source-ipv6参数,将使用bfd echo-source-ip/bfd echo-source-ipv6命令指定的IPv4/IPv6地址作为echo报文的源IPv4/IPv6地址。如果创建静态BFD会话时指定了source-ip/source-ipv6参数,将使用该参数的地址作为echo报文的源IPv4/IPv6地址。建议用户创建echo报文方式的静态BFD会话时指定source-ip/source-ipv6参数。
(1) 进入系统视图。
system-view
(2) 配置echo报文源IP地址。
¡ 配置echo报文源IPv4地址。
bfd echo-source-ip ip-address
缺省情况下,未配置echo报文的源IPv4地址。
为了避免对端发送大量的ICMP重定向报文造成网络拥塞,建议不要将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 | local local-value } ] ]
(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 | local local-value } ] ]
(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地址。
为了避免对端发送大量的ICMP重定向报文造成网络拥塞,建议不要将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 | local local-value } ] ]
(IPv6网络)
bfd static session-name [ peer-ipv6 ipv6-address [ vpn-instance vpn-instance-name ] destination-ipv6 ipv6-address [ source-ipv6 ipv6-address ] one-arm-echo [ discriminator { auto | local local-value } ] ]
(4) (可选)指定静态BFD会话的本地标识符。
discriminator local local-value
缺省情况下,未指定静态BFD会话的本地标识符。
本命令仅用于创建静态BFD会话时未指定静态BFD会话标识符的场景。
在建立echo报文方式的BFD会话时,用户可以根据网络状况和性能需求,调整设备接收echo报文的时间间隔、检测时间倍数。
多个上层应用关联同一个BFD会话,即会话的“源IP地址+目的IP地址+会话所在的接口+VPN+目的端口号”信息完全相同,检测时间参数的优选顺序如下:
(1) 静态BFD会话视图下设置的检测时间参数、上层应用引用的BFD模板设置的检测时间参数、上层应用单独设置的检测时间参数中的最小值。
(2) 接口视图或系统视图下设置的检测时间参数。
(3) 缺省值。
一个BFD会话仅被一个上层应用关联,检测时间参数的优选顺序如下:
(1) 上层应用是否支持引用BFD模板、是否支持单独设置检测时间参数会影响检测时间参数的优选顺序,具体如下:
¡ 如果上层应用既支持引用BFD模板,也支持单独设置检测时间参数,则上层应用既引用了BFD模板、又单独设置了检测时间参数时,上层协议优先使用引用的BFD模板中的检测时间参数。
¡ 如果上层应用支持引用BFD模板、不支持单独设置检测时间参数,则上层应用引用BFD模板后,使用该BFD模板中的检测时间参数。
¡ 如果上层协议支持单独设置检测时间参数、不支持引用BFD模板,则上层应用单独设置检测时间参数后,使用这些单独设置的检测时间参数。
(2) 接口视图或系统视图下设置的检测时间参数。
(3) 缺省值。
(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 static命令手工创建。
¡ 应用程序与BFD联动时,由用户手工指定会话的本地标识符和远端标识符。例如,使用静态BFD会话方式检测MPLS LSP时,需要用户手工指定会话的本地标识符和远端标识符。关于静态BFD会话方式检测MPLS LSP的详细介绍,请参见“MPLS配置指导”中的“MPLS OAM”。
· 动态BFD会话的本端标识符由本端设备自动分配,远端标识符在BFD会话协商建立过程中获取。本端设备自动分配本地标识符的方法包括:
¡ 通过bfd static命令的auto方式为本端自动分配会话的本地标识符。
¡ 应用程序与BFD联动时,如果用户未指定会话的本地标识符和远端标识符,则由本端设备自动分配会话的本地标识符。
配置被服务的上层协议支持BFD功能后,无需执行本配置,设备上会自动创建控制报文方式的BFD会话。
BFD版本0不支持以下命令,配置不生效。
· bfd session init-mode
· bfd authentication-mode
· bfd demand enable
· bfd echo enable
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会话,那么本端必须创建静态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 [ discriminator { auto | local local-value remote remote-value } ]
需要保证指定的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 [ discriminator { auto | local local-value remote remote-value } ]
需要保证指定的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会话视图。
(IPv4网络)
bfd static session-name peer-ip ipv4-address [ vpn-instance vpn-instance-name ] source-ip ipv4-address [ discriminator { auto | local local-value remote remote-value } ] [ track-interface interface-type interface-number ]
(IPv6网络)
bfd static session-name peer-ipv6 ipv6-address [ vpn-instance vpn-instance-name ] source-ipv6 ipv6-address [ discriminator { auto | local local-value remote remote-value } ] [ track-interface interface-type interface-number ]
(3) (可选)指定静态BFD会话的本地标识符和远端标识符。
discriminator { local local-value | remote remote-value }
缺省情况下,未指定静态BFD会话的本地标识符和远端标识符。
本命令仅用于创建静态BFD会话时未指定静态BFD会话标识符的场景。
在建立控制报文方式的BFD会话时,用户可以根据网络状况和性能需求,调整设备接收控制报文的时间间隔、发送控制报文的时间间隔以及检测时间倍数。
多个上层应用关联同一个BFD会话,即会话的“源IP地址+目的IP地址+会话所在的接口+VPN+目的端口号”信息完全相同,检测时间参数的优选顺序如下:
(1) 静态BFD会话视图下设置的检测时间参数、上层应用引用的BFD模板设置的检测时间参数、上层应用单独设置的检测时间参数中的最小值。
(2) 接口视图或系统视图下设置的检测时间参数。
(3) 缺省值。
一个BFD会话仅被一个上层应用关联,检测时间参数的优选顺序如下:
(1) 上层应用是否支持引用BFD模板、是否支持单独设置检测时间参数会影响检测时间参数的优选顺序,具体如下:
¡ 如果上层应用既支持引用BFD模板,也支持单独设置检测时间参数,则上层应用既引用了BFD模板、又单独设置了检测时间参数时,上层协议优先使用引用的BFD模板中的检测时间参数。
¡ 如果上层应用支持引用BFD模板、不支持单独设置检测时间参数,则上层应用引用BFD模板后,使用该BFD模板中的检测时间参数。
¡ 如果上层协议支持单独设置检测时间参数、不支持引用BFD模板,则上层应用单独设置检测时间参数后,使用这些单独设置的检测时间参数。
(2) 接口视图或系统视图下设置的检测时间参数。
(3) 缺省值。
(1) 进入系统视图。
system-view
(2) 进入接口视图或静态BFD会话视图。
¡ 进入接口视图。
interface interface-type interface-number
¡ 进入静态BFD会话视图。
bfd static session-name
配置静态BFD的单跳检测会话参数时,需要进入相应的BFD会话视图。
(3) 配置接收echo报文的最小时间间隔。
bfd min-echo-receive-interval interval
缺省情况下,接收echo报文的最小时间间隔为400毫秒。
(4) 配置发送和接收单跳BFD控制报文的最小时间间隔。
¡ 配置发送单跳BFD控制报文的最小时间间隔。
bfd min-transmit-interval interval
缺省情况下,发送单跳BFD控制报文的最小时间间隔为400毫秒。
¡ 配置接收单跳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会话视图。
(3) 配置多跳检测的BFD检测时间倍数。
bfd multi-hop detect-multiplier value
缺省情况下,BFD检测时间倍数为5。
(4) 配置发送和接收多跳BFD控制报文的最小时间间隔。
¡ 配置发送多跳BFD控制报文的最小时间间隔。
bfd multi-hop min-transmit-interval interval
缺省情况下,发送多跳BFD控制报文的最小时间间隔为400毫秒。
¡ 配置接收多跳BFD控制报文的最小时间间隔。
bfd multi-hop min-receive-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控制报文多跳检测。缺省情况下,H3C设备多跳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联动的接口类型为:
· 二层以太网接口
· 加入聚合组的二层以太网接口
· 三层以太网接口
· 加入聚合组的三层以太网接口
· 三层以太网子接口
· 二层聚合口
· 三层聚合口
回声功能对接口状态与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会话进行特殊处理的功能处于关闭状态。
H3C设备与其他厂商设备互通时,如果BFD会话两端设备上BFD报文的TTL值不同,则可能会导致BFD会话协商失败。使用本功能将本端发送BFD报文的TTL值调整为和对端一致,可以解决上述问题。
配置本功能后,当设备接收到对端发送的BFD报文时,如果BFD报文中携带的状态字段取值为DOWN或INIT,则本端会检查报文中的TTL值,具体机制如下:
· 对于单跳BFD会话,如果本端接收到的BFD报文的TTL值与通过bfd ttl命令设置的ttl-value不同,本端将丢弃该报文。
· 对于多跳BFD会话,如果本端接收到的BFD报文的TTL值大于通过bfd ttl命令设置的ttl-value,本端将丢弃该报文。
如果在配置本功能前BFD会话已经协商UP,配置本功能后,本端将BFD会话的状态置为AdminDown,触发BFD会话重新协商。
使用bfd ttl命令设置BFD报文的TTL值时,需要注意:
· bfd ttl命令对echo报文方式的BFD会话不生效,不会改变此类会话报文的TTL值。
· bfd ttl命令不会改变SBFD报文的TTL值。设备也不会检查SBFD会话报文中的TTL值。
· 如果bfd ttl命令指定的多个IPv4或IPv6地址范围中都包括某个IPv4地址或IPv6地址,则设备使用最长匹配方式为该IPv4或IPv6地址的BFD会话报文选择TTL值。
· 对于同一个IPv4网段或IPv6网段,配置的单跳BFD报文TTL值必须大于多跳BFD报文TTL值。
(1) 进入系统视图。
system-view
(2) 配置BFD报文的TTL值。
bfd { peer-ip ipv4-address mask-length | peer-ipv6 ipv6-address prefix-length } ttl { single-hop | multi-hop } ttl-value
缺省情况下,单跳BFD报文TTL值为255,多跳BFD报文TTL值为64。
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。
通常情况下,使用echo报文方式的静态BFD会话时,不需要配置会话的远端标识符,仅需配置会话的本地标识符。在M-LAG组网中,其中一台M-LAG设备使用echo报文方式的静态BFD检测本地与下行设备之间的链路时,如果报文的目的IP与另外一台M-LAG设备的IP地址相同,则可能会出现BFD会话状态异常的问题。使用本功能可以解决上述问题。
例如,如图1-8所示,在用户侧设备通过M-LAG双归接入OSPF网络的场景中,M-LAG设备作为网关进行三层转发。不同M-LAG设备上的网关接口(例如VLAN接口、VSI虚接口)具有相同的IP地址和MAC地址。在每个M-LAG设备上创建echo报文方式的静态BFD会话,对本机与用户侧之间的链路进行检测,且M-LAG设备发送的BFD echo报文的目的IP为网关地址。Device C收到M-LAG 1发送的BFD echo报文后,可能会将该报文转发给M-LAG 2。M-LAG 2收到此类BFD echo报文后,由于报文的目的IP为本机IP,则M-LAG 2不会将报文发送给M-LAG 1。这样,将会导致M-LAG 1无法收到Device C转发的BFD echo报文,引发M-LAG 1上BFD会话状态异常。
为了解决上述问题,需要在M-LAG 2上配置远端标识符,配置的远端标识符为M-LAG 1上BFD会话的本地标识符。M-LAG 2收到标识符属于本端配置的远端标识符范围内的BFD echo报文后,会通过peer-link链路将报文发送给M-LAG 1,保证M-LAG 1上BFD会话能够正常UP。相似地,在M-LAG 1上配置远端标识符,配置的远端标识符为M-LAG 2上BFD会话的本地标识符,保证M-LAG 2上BFD会话能够正常UP。
图1-8 M-LAG组网中的BFD
建议用户合理规划M-LAG组网中M-LAG设备的BFD会话标识符,保证两台设备上BFD会话的标识符不会重叠。
(1) 进入系统视图。
system-view
(2) 配置本地的BFD会话远端标识符。
bfd forwarding match remote-discriminator discr-value-list { discr-value1 [ to discr-value2 ] } &<1-10>
缺省情况下,未配置本地的BFD会话远端标识符。
使用本功能能够让设备记录如下两类BFD事件的日志信息,帮助用户定位BFD会话状态异常的原因。
· BFD会话Down事件
· 驱动上送报文事件
(1) 进入系统视图。
system-view
(2) 开启BFD事件的日志信息功能。
bfd event-log enable { down [ log-size ] | driver-packet [ detection-abnormal-autostop ] }
缺省情况下,BFD事件日志功能处于关闭状态。
多次执行本命令可以修改记录BFD会话Down事件日志信息的最大个数,但是修改配置后设备会清除已记录的日志信息。
设备最多可记录8192条信息驱动上送报文事件的日志信息。
开启BFD模块的告警功能后,该模块会生成告警信息,用于报告该模块的重要事件。生成的告警信息将发送到设备的SNMP模块,通过设置SNMP中告警信息的发送参数,来决定告警信息输出的相关属性。(有关告警信息的详细介绍,请参见“网络管理和监控配置指导”中的“SNMP”。)
(1) 进入系统视图。
system-view
(2) 开启BFD的告警功能。
snmp-agent trap enable bfd
缺省情况下,BFD的告警功能处于开启状态。
在完成上述配置后,在任意视图下执行display命令可以显示配置后BFD的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除BFD会话的统计信息。
表1-5 BFD显示和维护
操作 |
命令 |
显示BFD会话信息 |
display bfd session [ discriminator local local-value | static session-name | verbose ] display bfd session [ [ dynamic ] [ control | echo ] [ ip ] [ state { down | admin-down | init | up } ] [ discriminator remote remote-value ] [ peer-ip ipv4-address [ vpn-instance vpn-instance-name ] ] [ verbose ] ] display bfd session [ [ dynamic ] [ control | echo ] [ ipv6 ] [ state { down | admin-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 ] [ state { down | admin-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 { down | admin-down | init | up } ] [ discriminator remote remote-value ] [ peer-ip ipv4-address [ vpn-instance vpn-instance-name ] ] [ verbose ] display bfd session [ [ static ] [ ipv6 ] [ state { down | admin-down | init | up } ] [ discriminator remote remote-value ] [ peer-ipv6 ipv6-address [ vpn-instance vpn-instance-name ] ] [ verbose ] |
显示BFD报文TTL值的配置信息 |
display bfd ttl |
清除BFD会话统计信息 |
reset bfd session statistics |
SBFD(Seamless BFD,无缝BFD)是一种单向的故障检测机制,其检测速度比BFD更快速,适用于仅一端需要进行链路状态检测的情况,如MPLS TE隧道和使用LDP动态建立LSP的场景。关于SRLSP的详细介绍,请参见“Segment Routing配置指导”中的“SR-MPLS”;关于利用LDP动态建立LSP的详细介绍,请参见“MPLS配置指导”中的“LDP”。
SBFD会话中,设备的角色分为Initiator和Reflector:
· Initiator通过周期性发送SBFD控制报文来检测网络节点到远端实体的链路是否可达。Initiator将SBFD报文注入到MPLS TE隧道或LDP LSP中,由Initiator发起SBFD会话并维护SBFD会话的状态信息。
· Reflector监听到达本地实体的SBFD控制报文,并发送SBFD控制报文类型的响应报文给Initiator。
如图2-1所示,在基于SR建立的MPLS TE隧道中,作为Initiator的Router A只要能够收到作为Reflector的Router E发送的SBFD控制报文,即认为从Router A到Router E的SRLSP路径可达。
图2-1 SBFD的Initiator和Reflector
一个节点可以同时作为不同SBFD会话的Initiator和Reflector。
目前仅支持采用静态方式建立SBFD会话,即通过命令行手工指定远端的标识符,根据指定的标识符建立SBFD会话。
(1) 配置Initiator
(2) 配置Reflector
(3) 配置BFD模板
(4) 配置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。其中,源地址为本端设备的MPLS LSR ID。因此,配置SBFD检测LDP LSP功能前,需要先在本端设备上配置MPLS LSR ID,并确保远端设备上存在到达MPLS LSR ID的路由。
(1) 进入系统视图。
system-view
(2) 使能MPLS与BFD联动功能。
mpls bfd enable
缺省情况下,MPLS与BFD联动功能处于关闭状态。
关于本命令的详细介绍,请参见“MPLS命令参考”中的“MPLS OAM”。
(3) (可选)配置SBFD检测时间倍数。
bfd multi-hop detect-multiplier value
缺省情况下,SBFD检测时间倍数为5。
(4) (可选)配置发送SBFD控制报文的最小时间间隔。
bfd multi-hop min-transmit-interval interval
缺省情况下,发送SBFD控制报文的最小时间间隔为400毫秒。
(5) 配置使用SBFD检测指定FEC对应LSP的连通性。
mpls sbfd dest-addr mask-length [ nexthop nexthop-address ] remote remote-id [ template template-name ]
缺省情况下,未使用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 LSR ID。因此,配置SBFD检测MPLS TE隧道功能前,需要先在本端设备上配置MPLS LSR ID,并确保远端设备上存在到达MPLS LSR ID的路由。
(1) 进入系统视图。
system-view
(2) 使能MPLS与BFD联动功能。
mpls bfd enable
缺省情况下,MPLS与BFD联动功能处于关闭状态。
关于本命令的详细介绍,请参见“MPLS命令参考”中的“MPLS OAM”。
(3) (可选)配置SBFD检测时间倍数。
bfd multi-hop detect-multiplier value
缺省情况下,SBFD检测时间倍数为5。
(4) (可选)配置发送SBFD控制报文的最小时间间隔。
bfd multi-hop min-transmit-interval interval
缺省情况下,发送SBFD控制报文的最小时间间隔为400毫秒。
(5) 进入MPLS TE隧道对应的Tunnel接口视图。
interface tunnel number [ mode mpls-te ]
(6) 配置使用SBFD检测隧道接口对应MPLS TE隧道的连通性。
mpls sbfd remote remote-id [ template template-name ]
缺省情况下,未使用SBFD检测隧道接口对应MPLS TE隧道的连通性。
关于本命令的详细介绍,请参见“MPLS命令参考”中的“MPLS OAM”。
在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隧道
(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事件的日志信息,帮助用户定位SBFD会话状态异常的原因。
· SBFD会话Down事件
· 驱动上送报文事件
(1) 进入系统视图。
system-view
(2) 开启SBFD事件的日志信息功能。
bfd event-log enable { down [ log-size ] | driver-packet [ detection-abnormal-autostop ] }
缺省情况下,SBFD事件日志功能处于关闭状态。
多次执行本命令可以修改记录SBFD会话Down事件日志信息的最大个数,但是修改配置后设备会清除已记录的日志信息。
设备最多可记录8192条信息驱动上送报文事件的日志信息。
开启SBFD模块的告警功能后,该模块会生成告警信息,用于报告该模块的重要事件。生成的告警信息将发送到设备的SNMP模块,通过设置SNMP中告警信息的发送参数,来决定告警信息输出的相关属性。(有关告警信息的详细介绍,请参见“网络管理和监控配置指导”中的“SNMP”。)
(1) 进入系统视图。
system-view
(2) 开启SBFD的告警功能。
snmp-agent trap enable bfd
缺省情况下,SBFD的告警功能处于开启状态。
在完成上述配置后,在任意视图下执行display命令可以显示配置后SBFD的运行情况,通过查看显示信息验证配置的效果。
表2-1 SBFD显示和维护
操作 |
命令 |
显示SBFD会话信息 |
display sbfd session { initiator | reflector } [ discriminator value | verbose ] |
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!