BFD会话动不动就抖?华为检测间隔与倍数按网络状况调
本文整理自华为官方发布的典型配置案例,命令与步骤均按原始文档呈现,供现场实施参考。
BFD会话建起来只是第一步,跑一段时间后发现它动不动就抖:链路明明没断,会话却反复Up/Down,联动的静态路由、VRRP跟着来回切换,业务反而被这套灵敏的检测折腾出问题。原因多半在检测参数上——默认参数是按一般网络状况给的,链路质量差、设备CPU繁忙、BFD还叠加了安全业务时,按默认节奏收发就可能超时误判。
华为把BFD的检测节奏拆成四个可调参数,全部在BFD会话视图下配置:报文期望发送间隔、期望接收间隔、会话UP后的本地检测倍数,以及会话协商过程中的检测倍数。实际检测时间=对端协商出的接收间隔×本地检测倍数,调大其中任何一个,误判概率都会下降。
先进入系统视图,再进入对应BFD会话视图(前提是这个名字的会话已经创建):
system-view
bfd session-name
配置报文期望发送间隔(缺省1000毫秒):
min-tx-interval tx-interval
配置报文期望接收间隔(缺省1000毫秒):
min-rx-interval rx-interval
配置会话UP后的本地检测倍数(缺省3倍):
detect-multiplier multiplier
还有一个容易忽略的参数——协商过程中的本地检测倍数(缺省50)。会话从Down到Up的协商阶段也有超时判定,协商期抖动的场景可以单独调它:
negotiation-detect-multiplier detect-multiplier-value
两条官方给出的调参经验值得记住:一是当BFD与应用识别、安全策略、智能策略路由、入侵防御、URL过滤、反病毒业务叠加使用时,建议发送和接收间隔配在50毫秒以上,防止BFD震荡——安全业务检测开销大,间隔给太紧就是自己找抖;二是发送间隔、接收间隔和本地检测倍数优选默认值,不为调而调,感觉检测太慢时先确认链路质量再动参数。
另外有个省资源的机制要知情:会话一旦Down,系统自动把本端收发间隔调整为大于1000毫秒的随机值,等会话重新Up后再恢复用户配置值——Down态本就不转发业务,把探测节奏放缓,正好把资源留给恢复。
效果怎么验?配置后display bfd session查看会话,verbose信息里能看到实际的收发间隔与检测倍数;观察一段时间,联动业务不再因误判切换,抖动消失即为调对。BFD是一套快系统,快系统忌讳参数拍脑袋——做BFD调优时值得坚持一个原则:先看故障时间的业务容忍度,再反推间隔与倍数,参数表进交付文档,后续接维的人不用猜。欢迎搜索关注贵州诚鑫致达科技,了解更多可靠性调优实战配置。