当网络中运行高速率数据业务时,通过配置动态BFD for RIP,可以实现RIP对网络中的故障快速做出响应。
背景信息
通常情况下,RIP通过定时接收和发送更新报文来保持邻居关系,在老化定时器时间内没有收到邻居发送的更新报文则宣告邻居状态变为Down。老化定时器的缺省值为180s,如果出现链路故障,RIP要经过180s才会检测到。如果网络中部署了高速数据业务,在此期间将导致数据大量丢失。
BFD能够提供毫秒级别的故障检测机制,及时检测到被保护的链路或节点故障,并上报给RIP协议,提高RIP进程对网络拓扑变化做出响应的速度,从而实现RIP路由的快速收敛。
BFD for RIP由RIP协议触发建立BFD会话,即RIP在建立邻居关系时,将邻居的检测参数通告给BFD,BFD根据收到的参数建立起会话。当有链路故障发生时,RIP进程会在毫秒级时间内收到邻居不可达的信息,此时,RIP设备删除路由表中邻居状态为Down的路由信息并启用备份路径来传送消息。
配置BFD for RIP有两种方式:
- RIP进程下使能BFD,当网络中大部分RIP接口需要使能BFD for RIP时,建议选择此方式。
- RIP接口下使能BFD,当网络中只有小部分RIP接口需要使能BFD for RIP时,建议选择此方式。
此处所指的接口可以是实际物理接口,也可以是GRE隧道接口。如果在GRE隧道接口下使能BFD功能,则可以对GRE隧道实现毫秒级的故障检测功能。
前置任务
在配置BFD for RIP之前,需完成以下任务:
操作步骤
- RIP进程下使能BFD
- 执行命令system-view,进入系统视图。
- 执行命令bfd,使能全局BFD能力。
- 执行命令quit,返回系统视图。
- 执行命令rip process-id,进入RIP视图。
- 执行命令bfd all-interfaces
enable (RIP),打开RIP进程BFD特性的开关,建立BFD会话。
当配置了全局BFD特性,且邻居状态为Up时,RIP为该进程下所有处于Up状态的接口使用缺省的BFD参数值建立BFD会话。
- (可选)执行命令bfd all-interfaces { min-rx-interval min-receive-value | min-tx-interval min-transmit-value | detect-multiplier detect-multiplier-value } *,配置BFD参数,指定用于建立BFD会话的各个参数值。
具体参数如何配置取决于网路状况以及对网络可靠性的要求。
- 对于网络可靠性要求较高的链路,可以通过配置减小BFD报文实际发送时间间隔;
- 对于网络可靠性要求较低的链路,可以通过配置增大BFD报文实际发送时间间隔。
BFD检测时间的计算方法如下:
- 本地BFD报文实际发送时间间隔=MAX { 本地配置的最小发送时间间隔,对端配置的最小接收时间间隔 }
- 本地实际接收时间间隔=MAX { 对端配置的最小发送时间间隔,本地配置的最小接收时间间隔 }
- 本地检测时间=本地实际接收时间间隔×对端配置的BFD检测倍数
执行该命令后,所有RIP接口建立BFD会话的参数都会改变。BFD报文实际发送间隔和检测倍数一般推荐使用缺省值。
- (可选)执行以下步骤阻塞RIP进程下某些接口创建BFD会话的功能,以达到控制接口创建BFD会话范围的目的。
- 执行命令quit,返回系统视图。
- 执行命令interface interface-type interface-number,进入指定接口的接口视图。
- 执行命令rip
bfd block,阻止接口创建BFD会话。
- 执行命令commit,提交配置。
- RIP接口下使能BFD
- 执行命令system-view,进入系统视图。
- 执行命令bfd,使能全局BFD能力。
- 执行命令quit,返回系统视图。
- 执行命令interface interface-type interface-number,进入指定接口的接口视图。
- 执行命令rip bfd enable,打开接口BFD特性的开关,建立BFD会话。
- (可选)执行命令rip bfd { min-rx-interval min-receive-value | min-tx-interval min-transmit-value | detect-multiplier detect-multiplier-value } *,配置BFD参数,指定用于建立BFD会话的各个参数值。
- 执行命令commit,提交配置。
检查配置结果
当链路两端均使能BFD for RIP特性后,执行命令display
rip bfd session { interface interface-type interface-number | neighbor-id | all },可以看到本地路由器上BFDState字段显示为Up,说明BFD会话已经建立。