BFD(Bidirectional Forwarding Detection):双向转发检查
作用:毫秒级故障检查,通常结合三层协议(如静态路由、VRRP、OSPF、BGP等)实现链路故障快速检查
前面我们学习了通过双静态路由来实现链路的冗余备份,网络拓扑如下:
需求:用1.1.1.1去ping 2.2.2.2,然后断开R1与R2之间的主链路,看数据包是否还能正常发包过去,保障链路之间冗余性
R1上配置命令:
<R1>system-view
[R1]sysname R1
[R1]interface GigabitEthernet 0/0/0
[R1-GigabitEthernet0/0/0]ip address 10.10.10.1 24
[R1-GigabitEthernet0/0/0]inter gig0/0/1
[R1-GigabitEthernet0/0/1]ip address 20.20.20.1 24
[R1-GigabitEthernet0/0/1]quit
[R1]interface LoopBack 0
[R1-LoopBack0]ip address 1.1.1.1 24
[R1-LoopBack0]quit
[R1]ip route-static 2.2.2.0 24 10.10.10.2 #设为主链路,静态路由默认优先级为60
[R1]ip route-static 2.2.2.0 24 20.20.20.2 preference 80 #设为备份链路
R2配置:
<R2>system-view
[R2]sysname R2
[R2]interface GigabitEthernet 0/0/0
[R2-GigabitEthernet0/0/0]ip address 10.10.10.2 24
[R2-GigabitEthernet0/0/0]inter gig0/0/1
[R2-GigabitEthernet0/0/1]ip address 20.20.20.2 24
[R2-GigabitEthernet0/0/1]quit
[R2]interface LoopBack 0
[R2-LoopBack0]ip address 2.2.2.2 24
[R2-LoopBack0]quit
[R2]ip route-static 1.1.1.0 24 10.10.10.1
[R2]ip route-static 1.1.1.0 24 20.20.20.1 preference 80
通过配置以上命令,用1.1.1.1 ping 2.2.2.2时,当断开主链路后,可以自动切换到备份链路来实现链路冗余
虽然通过上面的网络拓扑可以实现双链路的冗余备份,如果在R1与R2之间新增一台交换机的话,当链路出现故障后,路由器就无法及时的检测链路故障,网络拓扑如下:
当R2与交换机之间的链路发生故障后,R1无法检测出链路已经断了,R1的GE0/0/0口还是处于UP状态,所以通往2.2.2.0段的主链路静态路由还存在,所有数据还是会通过R1 GE0/0/0口发出,到交换机上后数据中断无法发出,如下:
此时如果部署了BFD双向转发检查就可以快速的发现链路故障了,快速切换至备份线路上,下面一起来部署BFD检测吧~~~
R1上配置命令:
[R1]bfd #使能BFD
[R1-bfd]quit #退出
[R1]bfd 1 bind peer-ip 10.10.10.2 source-ip 10.10.10.1 #创建组BFD 1,peer-ip为远端路由IP,sourc-ip为源ip,只需在主链路上做
[R1-bfd-session-1]discriminator local 1 #创建本地标识 1
[R1-bfd-session-1]discriminator remote 2 #创建远端标识 2
[R1-bfd-session-1]commit #确认操作
[R1-bfd-session-1]quit #退出
[R1]ip route-static 2.2.2.0 24 10.10.10.2 track bfd-session 1 #静态路由上调用BFD 1
R2上做相同配置:
[R2]bfd #使能BFD
[R2-bfd]quit #退出
[R2]bfd 1 bind peer-ip 10.10.10.1 source-ip 10.10.10.2 #创建组BFD1,远端IP为10.10.10.1,源IP为10.10.10.2
[R2-bfd-session-1]discriminator local 2 #创建本地标识2,因为在R1上远端标识为2,所以这里必须为2
[R2-bfd-session-1]discriminator remote 1 #创建远端标识1,前面在R1上的本地为1,所以这里必须为1
[R2-bfd-session-1]commit #确认操作
[R2]ip route-static 1.1.1.0 24 10.10.10.1 track bfd-session 1 #静态路由上调用BFD1
配置BFD后我们再来测试下链路现象,如图:
查看BFD状态命令:display bfd session all verbose