0102 BFD故障处理文档格式.docx
《0102 BFD故障处理文档格式.docx》由会员分享,可在线阅读,更多相关《0102 BFD故障处理文档格式.docx(23页珍藏版)》请在冰豆网上搜索。
报文中各字段的含义解释如表2-1。
表2-1BFD控制报文字段含义
字段名
长度
含义
Vers(Version)
3比特
协议的版本号,目前版本号为1。
Diag(Diagnostic)
5比特
本地系统最后一次会话Down的原因。
不同值表示的原因如下:
●0:
NoDiagnostic
●1:
ControlDetectionTimeExpired
●2:
EchoFunctionFailed
●3:
NeighborSignaledSessionDown
●4:
ForwardingPlaneReset
●5:
PathDown
●6:
ConcatenatedPathDown
●7:
AdministrativelyDown
●8:
ReverseConcatenatedPathDown
●9~31:
Reservedforfutureuse
Sta(State)
2比特
当前BFD会话的状态。
不同值表示的状态如下:
AdminDown
Down
Init
Up
P(Poll)
1比特
不同值表示的含义如下:
表示发送系统请求进行连接确认,或者发送请求参数改变的确认。
表示发送系统不请求确认。
F(Final)
表示发送系统响应一个接收到P比特为1的BFD包。
表示发送系统不响应一个P比特为1的包。
C(ControlPlaneIndependent)
表示发送系统的BFD实现不依赖于它的控制平面。
即,BFD报文在转发平面传输,即使控制平面失效,BFD仍然能够起作用。
表示BFD报文在控制平面传输。
A(AuthenticationPresent)
设置为1时,表示控制报文包含认证字段,并且会话是被认证的。
D(Demand)
表示发送系统希望工作在查询模式。
表示发送系统不希望、或不能工作在查询模式。
R(Reserved)
该字段在发送时设置为0,在接收时忽略。
DetectMult(Detecttimemultiplier)
1字节
检测时间倍数。
●查询模式:
采用本地检测倍数。
●异步模式:
采用对端检测倍数。
Length
BFD控制报文的长度,单位为字节。
MyDiscriminator
4字节
发送系统产生的一个唯一的、非0鉴别值,用来区分一个系统的多个BFD会话。
YourDiscriminator
从远端系统接收到的鉴别值,这个域直接返回接收到的“MyDiscriminator”,如果不知道这个值就返回0。
DesiredMinTxInterval
本地系统发送BFD控制报文时想要采用的最小时间间隔,单位为微秒。
RequiredMinRxInterval
本地系统能够支持的接收两个BFD控制报文之间的间隔,单位为微秒。
RequiredMinEchoRxInterval
本地系统能够支持的接收两个BFD回声报文之间的间隔,单位为微秒。
如果这个值设置为0,则发送系统不支持接收BFD回声报文。
AuthType
BFD控制报文使用的认证类型。
不同值表示的认证类型如下:
Reserved
SimplePassword
KeyedMD5
MeticulousKeyedMD5
KeyedSHA1
MeticulousKeyedSHA1
●6~255:
AuthLen
认证字段的长度,包括认证类型与认证长度字段,单位为字节。
2.1.3BFD的检测模式
BFD提供异步和查询两种检测模式。
各系统间按照协商好的周期发送BFD控制报文,如果某个系统在检测时间内没有收到对端发来的报文,置会话为Down。
假定每个系统都有一个独立的方法,确认自己连接到其他系统。
这样,一旦一个BFD会话建立,系统停止发送BFD控制报文,除非某个系统需要显式地验证连接性。
在需要显式验证连接性的情况下,系统以协商的周期连续发送几个P比特位置1的BFD控制报文。
如果在检测时间内没有收到返回的报文,就认为会话Down;
如果在检测时间收到返回的报文,就认为检测链路连通,则不再发送BFD控制报文,等待下一次查询的触发。
关于BFD的进一步介绍可参考《VRP特性描述可靠性》。
本节介绍如下的内容:
●典型组网环境
●配置注意事项
●故障诊断流程
●故障处理步骤
2.2.1典型组网环境
BFD的典型组网如图2-2所示。
本章的BFD故障处理将基于该网络。
图2-1BFD典型组网图
在此组网中,采用如下方案:
●路由器RouterA、RouterB和RouterC都支持BFD功能。
●使用BFD检测RouterA、RouterB之间的直连链路。
●使用BFD检测RouterA、RouterC之间的多跳路由。
2.2.2配置注意事项
配置项
子项
注意事项
使能BFD
全局使能BFD
在系统视图下配置。
配置BFD会话前,必须全局使能BFD
接口使能BFD
在接口视图下配置。
●只有物理接口可以使能BFD。
●配置单跳BFD检测时,出接口必须使能BFD。
创建BFD配置项
cfg-name
BFD配置名称。
用来标识一个BFD配置项。
peer-ipip-address
对端IP地址。
●配置BFD会话时必须绑定对端IP地址。
●对端IP地址配置后不可更改。
interfaceinterface-typeinterface-number
BFD会话绑定的出接口。
●配置BFD单跳检测时必须绑定出接口。
●如果配置BFD会话时不绑定出接口,则BFD检测的是多跳链路。
source-ipip-address
源IP地址(可选参数)。
●如果不指定源IP,系统将在本地路由表中查找去往对端IP地址的出接口,以该出接口的IP地址做为本端发送BFD报文的源IP地址。
●如果在BFD会话配置成功后,修改出接口的IP地址,BFD报文中的源IP地址不会更新。
●当BFD与单播逆向路径转发URPF(UnicastReversePathForwarding)特性一起应用时,由于URPF会对接收到的报文进行源IP地址检查,用户在创建BFD绑定时,需要指定BFD报文的源IP地址,以免BFD报文被错误地丢弃。
●系统只检查该参数是否是合法的IP地址,不进行正确性检查。
配置BFD会话参数
discriminatorlocaldiscr-value
在BFD会话视图下配置本地标识符。
●BFD会话本端配置的本地标识符和对端配置的远端标识符相同。
●配置成功后不可更改。
discriminatorremotediscr-value
在BFD会话视图下配置远端标识符。
●BFD会话本端配置的远端标识符和对端配置的本地标识符相同。
wtr
在BFD会话视图下配置BFD会话的等待恢复时间,单位为分钟,取值范围是1~60。
创建BFD会话
commit
在BFD会话视图下,执行commit命令用来使BFD配置生效,创建BFD会话。
修改BFD配置,必须执行该命令使配置生效。
下面以RouterA为例说明配置BFD时需要注意的事项。
●在RouterA上创建BFD会话atob,检测RouterA和RouterB之间的直连链路
#使能全局BFD。
[RouterA]bfd
[RouterA-bfd]
#使能接口的BFD。
[RouterA]interfacePos1/0/0
[RouterA-Pos1/0/0]bfd
#创建BFD配置项,BFD配置名是atob,对端的IP地址是10.1.1.2,出接口是POS1/0/0。
[RouterA]bfdatobbindpeer-ip10.1.1.2interfacePos1/0/0
#配置BFD会话atob的本地和远端标识符。
[RouterA-bfd-session-atob]discriminatorlocal1
[RouterA-bfd-session-atob]discriminatorremote2
#提交BFD配置项,创建BFD会话。
[RouterA-bfd-session-atob]commit
●在RouterA上创建BFD会话atoc,检测RouterA和RouterC之间的多跳链路
#创建BFD配置项,对端的IP地址是10.1.2.1,源IP地址是10.1.1.1。
[RouterA]bfdatocbindpeer-ip10.1.2.1source-ip10.1.1.1
#配置BFD会话atoc的本地和远端标识符。
[RouterA-bfd-session-atoc]discriminatorlocal3
[RouterA-bfd-session-atoc]discriminatorremote2
#提交BFD配置项,创建BFD会话atoc。
[RouterA-bfd-session-atoc]commit
2.2.3故障诊断流程
针对图2-2所示的网络,在配置完两端的BFD会话后,发现会话没有建立或没有Up。
请使用图2-3所示的故障诊断流程。
图2-1BFD故障诊断流程图
2.2.4故障处理步骤
步骤1检查BFD配置是否提交
在BFD会话视图下执行displaythis命令查看会话的配置,确认会话是否提交。
如果会话未提交,则执行commit命令提交会话。
步骤2检查BFD会话数是否已达到上限
BFD会话在不同设备上配置项和会话项的上限不同,一般情况下分为全局配置上限和单板会话建立上限。
如果达到全局配置上限,则不能再配置会话;
如果尚未抵达全局配置上限,但设备上所有单板已经抵达会话建立上限,则可以继续配置会话,但无法建立。
通过在任意视图下执行displaybfdstatistics命令查看全局会话配置上限和单板会话建立上限、全局已配置会话数和单板已建立会话数。
如果BFD会话数已达单板会话建立上限或全局配置上限,则删除无用的会话。
步骤3检查是否有合适的处理板
没有合适的处理板的情况分为两类:
●绑定出接口的BFD会话
如果此接口所在的接口板不支持BFD功能,那么就选不到合适的处理板。
●未绑定接口的会话,但出接口为Trunk、VLANIF等逻辑接口
有的接口板支持BFD但不支持Trunk、VLANIF等特性,所以如果出接口为Trunk、VLANIF等逻辑接口时,也会找不到合适的处理板。
目前产品对BFD功能的支持情况如下:
●NE05、NE08E、NE16E、NE40和NE80支持BFD功能且没有接口板的限制。
●NE40E、NE80E、NE5000E设备支持BFD,但对接口板有限制。
2×
10G以太线路板和24口GE线路板G板不支持BFD功能。
确认设备的接口板对BFD功能的支持情况。
如果没有支持BFD功能的接口板,请添加支持BFD功能的接口板。
步骤4检查路由是否可达
分为两种情况:
●绑定出接口的会话
绑定出接口的BFD会话检测的链路必须是直连链路,配置的peerip地址与出接口的IP地址必须在同一个网段。
执行displayipinterfacebrief查看出接口的IP地址,执行displaybfdconfigurationall命令查看BFD会话配置的对端IP地址,确认是否在一个网段。
●未绑定出接口的BFD会话
本端路由器必须配置有到达对端IP地址的路由。
执行ping命令,验证对端IP地址是否可达。
如果没有可达对端IP地址的路由,则配置网络层属性,使路由可达。
步骤5检查BFD会话两端的本地和远端标识符是否对应
BFD要求本端配置的本地标识符和对端配置的远端标识符相同;
本端配置的远端标识符和对端配置的本地标识符相同。
在会话视图下,通过displaythis命令查看会话配置中的标识符是否正确。
如果会话已经建立,也可以执行displaybfdsessiondiscriminatordiscr-valueverbose命令查看到配置的标识符是否正确。
步骤6检查是否配置了WTR
如果配置了WTR,会话在从其它状态切换到Up状态时,都会等待恢复定时器WTR超时后,才会将Up状态上报给应用程序。
执行命令displaybfdsessionallverbose,查看WTR字段的值。
●如果显示为“--”则表示没有配置WTR,是立即上报。
●如果显示为非0的数字,表示WTR定时器尚未超时,等待WTR定时器超时即可。
步骤7检查是否有一端关闭了会话管理功能
在BFD会话两端分别执行displaybfdsessiondiscriminatordiscr-valueverbose命令,discr-value是会话的本地标识符。
如果有一端当前状态为AdminDown,则在该端BFD会话视图下执行undoshutdown命令。
步骤8检查是否收到对端的BFD协商报文
如果收不到对端的协商报文,BFD会话不能Up。
在用户视图下打开debuggingbfdpacket的开关,查看本端是否正常发送和接收BFD报文。
步骤9检查BFD报文是否被丢弃
如果对端发送的协商报文有误,BFD模块直接丢弃报文,也会导致BFD会话不能Up。
在用户视图下打开debuggingbfderror的开关,查看本端是否丢弃了BFD报文。
----结束
如果故障仍未排除,请联系华为的技术支持工程师。
2.3.1典型组网环境
请参见2.2.1典型组网环境。
2.3.2配置注意事项
请参见2.2.2配置注意事项。
2.3.3故障诊断流程
针对图2-2所示的网络,在配置完两端的BFD会话后,发现会话频繁在Up/Down之间切换,请使用下面的故障诊断流程,如图2-4所示。
2.3.4故障处理步骤
步骤1检查是否配置了ACL等限制
如果在组网中配置ACL等限制,可能会导致BFD报文丢失,从而影响BFD会话状态的切换。
执行命令displayaclall查看是否配置了ACL等限制。
如果配置了相关限制,请取消。
步骤2检查BFD会话的最小发送间隔和最小接收间隔参数。
执行命令displaybfdsessionallverbose查看BFD会话信息,如果最小发送间隔和最小接收间隔参数配置过小,可能引起BFD会话震荡。
建议将这两个参数值设置在100以上。
步骤3检查会话配置是否出现多对一的现象
目前BFD会话的本地和远端标识符都是静态配置的,配置时不能出现多个BFD会话对应一个本地标识符的情况。
多对一现象的表现是:
两边会话Down的原因均为NeighborDown,从Up到Down的时间间隔一般为秒级,并且间隔固定。
在任意视图下执行命令displaybfdconfigurationall或者在BFD会话视图下执行命令displaythis查看会话的配置信息。
步骤4检查BFD会话两端使用的软件版本是否一致
早期的版本中,BFD报文发送的时间间隔的单位是毫秒,在后期的版本中时间间隔的单位是微秒,时间间隔单位不同的报文之间不能互通。
●VRP的版本分界点是VRPV500R003B03D017,VRPV500R003B03D017以前的版本和VRPV500R003B03D017之后的版本不能互通。
●NE40E、NE80E、NE5000E的版本分界点是V300R001B02H,V300R001B02H之前的版本和V300R001B02H之后的版本不能互通。
在任意视图下执行命令displayversion命令查看产品版本。
步骤5检查设备中是否有不支持BFD的接口板
如果设备上存在不支持BFD的接口板,会影响BFD的状态切换。
因为BFD报文是IP报文,对于非绑定接口的会话,BFD报文的转发按照IP转发流程,如果两端收到BFD报文的接口板不支持BFD,则会因无法解析报文而丢弃。
如果设备中有不支持BFD的接口板,请重新配置会话,避免BFD报文经不支持BFD的接口板处理。
2.4.1会话无法UP
网络环境
图2-1配置BFD单跳检测组网图
配置完BFD会话后,会话状态无法UP。
故障分析
可能原因如下:
●网络层没有连通
●两端的本地和远端标识符不对应
●若不是直连情况,没有通过绑定源地址进行配置
●有一端关闭了会话管理功能
处理步骤
步骤1执行ping命令,验证目的地址是否可达。
步骤2执行displaybfdsessiondiscriminator命令,验证两端的本地和远端标识符是否对应。
步骤3如果不是直连,执行displaybfdsessionallverbose命令,bindtype应该显示为PeerIpAddress。
步骤4在两端执行displaybfdsessionall,如果有一端当前状态为:
AdminDown,在该端BFD会话视图下执行undoshutdown,可恢复。
2.4.2采用缺省组播地址的BFD会话不能UP
图2-1采用缺省组播地址的BFD会话组网示意图
如图2-6所示,RouterB的GE1/0/0和GE2/0/0作为二层以太口,分别连接RouterA和RouterC。
在RouterA和RouterC之间建立采用缺省组播地址的单跳BFD会话。
RouterA与RouterC能够Ping通对方的GE接口IP地址,但BFD会话的状态始终为Down。
采用“2.4.1会话无法UP”介绍的方法进行分析,没有发现错误。
由于RouterA与RouterC中间存在RouterB,分析可能原因是RouterB没有正确转发来自RouterA和RouterC的BFD报文。
步骤1在RouterB上执行displaycurrent-configurationconfigurationbfd命令和displaycurrent-configurationconfigurationbfd-session命令,发现RouterB上也配置了采用缺省组播地址检测的BFD会话。
这样,当RouterA和RouterC发出的BFD报文到达RouterB时,被RouterB错误地进行了处理,没有转发出去。
步骤2在RouterA和RouterC的系统视图下执行undobfdcfg-name命令,删除BFD会话。
步骤3在RouterA和RouterC的系统视图下执行bfd命令,进入BFD视图后执行default-ip-addressip-address命令,配置一个与缺省值224.0.0.184不同的组播IP地址。
步骤4在RouterA和RouterC上重新配置BFD会话,会话可以进入UP状态。
2.4.3BFD会话震荡问题
在RouterA、RouterB以及RouterC之间配置BFD会话,如图2-7。
图2-1BFD组网图
配置完成后,发现BFD会话状态以固定的间隔不断地进入Down状态,然后又快速转换为Up状态,即出现会话状态震荡现象。
在RouterA、RouterB和RouterC上使用displaybfdconfigurationall和displaythis命令,分别查看三台路由器上的配置。
RouterA的显示信息如下:
[RouterA]displaybfdconfigurationall
--------------------------------------------------------------------------------
CFGNameLocalDiscrMIndexSessionCountCommitFlagAdminFlag
atob12571TrueFalse
TotalCommit/UncommitCFGNumber:
1/0
[RouterA]bfdatob
[RouterA-bfd-session-atob]displaythis
#
bfdatobbindpeer-ip10.1.1.2
discriminatorlocal1
discrimin