双向链路检测(BFD)之静态路由篇

BFD从本质上讲是一种高速独立的Hello协议,目的是在两个的3层节点之间进行链路之间的高速动态检测,值得注意的是这里的三层链路既能够是物理三层链路(物理直连,物理专线等),因为现有网络的速度已经发展的很快,BFD能够作到毫秒级别的相应,与传统的检测方式(如动态协议的Hello包等等)相比经过BFD能够大大减小网络的收敛时间,保证网络能够告诉动态的在备用链路之间进行切换,这样的好处不言而喻。网络



BFD技术要点:负载均衡

  • 三层之间的通讯,这里既能够指物理直连(专线),也能够指代逻辑直连(如2层MPLS ***(VPLS),各类隧道技术(IPsec、GRE、DM***)等)ide

  • 本质是一个不可路由的快速Hello包,采用UDP进行封装。测试

  • BFD的故障检测时间远小于1秒,能够更快地加速网络收敛,减小上层应用中断的时间,提升网络的可靠性和服务质量。spa

  • BFD的能够为不少上层协议联动,如各类动态路由协议,静态路由等等。3d

  • 须要在两端都要进行配置日志

因为静态路由的实现,比动态路由协议更为复杂,咱们这里就利用静态路由来给你们讲解BFDrouter


实验:blog

情景一:接口

R1和R2之间有两条链路,一条是专线。另一条是虚拟链路,是基于Internet的GRE隧道。R1的tunnel0口ip为10.10.10.1/24,R2的隧道口IP为10.10.10.2/24。


配置命令:

router(config-if)#bfd interval {50-9999 in milliseconds} min_rx {50-9999 in millicseconds} multiplier {3-50}

router(config)#ip route static bfd {interface type}  {Interface number}  {gateway address}

router(config)#ip route {network address} {network mask} {interface(which bfd enabled)} {next-hop address}


要求R一、R2的172.16.x.x流量平时走专用链路,若是检测到发生故障那么须要走GRE隧道。

spacer.gif图片.png



实验配置:

R1:

R1(config-if)#int e0/0

R1(config-if)#bfd interval 500 min_rx 500 multiplier 3            #在须要开启BFD的接口下输入间隔、最小接收时间、和几倍的间隔的holddown时间等参数

R1(config)#ip route static bfd e0/0 10.1.1.2            #创建BFD邻居关系,后面的是对端直连三层地址

R1(config)#int tunnel 0                                            

R1(config-if)#tunnel mode gre ip

R1(config-if)#tunnel source Ethernet0/1

R1(config-if)#tunnel destination 25.1.1.2

R1(config)#ip route 172.16.2.0 255.255.255.0 tunnel 0 10.10.10.2 10         #设置备用GRE隧道的备用静态路由,修改AD值为10,使其正常不走这条链路。


相似的配置R2

R2:

R2(config-if)#int e0/0

R2(config-if)#bfd interval 500 min_rx 500 multiplier 3

R2(config)#ip route static bfd e0/0 10.1.1.1

R2(config)#int tunnel 0

R2(config-if)#tunnel mode gre ip

R2(config-if)#tunnel source Ethernet0/1

R2(config-if)#tunnel destination 25.1.1.1

R2(config)#ip route 172.16.1.0 255.255.255.0 tunnel 0 10.10.10.1 10


咱们来看一下路由表,经过观察能够看到,分别有R1和R2分别有去往对端172.16.x.0/24网络的静态路由。

spacer.gif图片.png


经过show ip static route进一步查看分别能够看到:经过专线的网络处于Active状态,而且有BFD检测。spacer.gif图片.png


如今咱们能够将两个交换机中间的某个接口shutdown掉,模拟链路故障,几乎与shutdown接口的同时,R1和R2上跳出了这条日志信息。显示BFD检测失败,表示专线之间链路存在问题

图片.pngspacer.gif


咱们再来查看一下R1和R2的路由表,能够观察到原来的专线链路中的路由信息已经被转化成了Non-active状态,GRE隧道的备用路径已经开启。

spacer.gif图片.png


从R1上ping对端地址172.16.2.1,验证可达

spacer.gif图片.png


咱们再来开启以前shutdown的接口,通过一会的等待时间,R1和R2弹出下面的日志

spacer.gif图片.png


再开查看路由发现原有路由恢复正常spacer.gif图片.png


经过traceroute发现,的确走了所需路由。

spacer.gif图片.png



情景2:

在公司Internet网关设备上有多条上行链路链路从不通的运营商接入时,也能够利用这个进行切换。

spacer.gif图片.png

环境说明:

R1做为公司的出口设备,分别具备两条互联网的上行链路来自两个不通的运营商。平时NAT进行负载均衡,当一条链路断掉的时候进行自动切换(这里的自动切换利用BFD达到)。实验中咱们利用8.8.8.8测试互联网的连通性。


实验中,关于NAT部分已经预配好,这里不是咱们讨论的话题,所以再也不过多的进行描述。后面会专门作一篇文档讲解如何作到双上行网络的负载。


配置:

R1

R2(config)int e0/1

R2(config-if)bfd interval 500 min_rx 500 multiplier 3

R2(config-if)int e0/2

R2(config-if)bfd interval 500 min_rx 500 multiplier 3

R2(config-if)ip route static bfd e0/1 12.1.1.1

R2(config)ip route static bfd e0/2 13.1.1.1

R2(config)ip route 0.0.0.0 0.0.0.0 e0/1 12.1.1.1

R2(config)ip route 0.0.0.0 0.0.0.0 e0/2 13.1.1.1


R2

R2(config)int e0/0

R2(config-if)bfd interval 500 min_rx 500 multiplier 3

R2(config)ip route static bfd e0/1 12.1.1.2 unassociate    #这里说明一下unassociate这个参数,在正常状况下须要有一条静态路由的关联到接口上时才能生效,可是有了这个参数就能够在没有任何路由的状况下生效。这里只作了互联网链接运营商没法知道也不能知道任何内部的路由,所以须要作这条参数


R3

R3(config)int e0/0

R3(config-if)bfd interval 500 min_rx 500 multiplier 3

R3(config)ip route static bfd e0/1 12.1.1.2 unassociate


这样就配置好了。在双上行链路没有故障的时候能够看到有两条默认路由指向不一样的运营商并负载均衡。而且都进行了BFD检测。

spacer.gif图片.png

spacer.gif图片.png


咱们能够验证一下,选择任意一台user进行测试。    #这里的user用路由器模拟

spacer.gif图片.png

经过Traceroute能够发现,这时用户走的是ISP1的线路。

spacer.gif图片.png


咱们去R2上关闭掉这个E0/0接口,模拟线路故障。R1产生这条日志信息

spacer.gif图片.png

再次查看路由表发现,因为BFD检测失败,ISP1的默认路由被改成了Non-active

spacer.gif图片.png

再从用户的角度去traceroute一下,发现这里走了运营商2的线路。

spacer.gif图片.png


固然,若是有须要的话,能够修改某条上行链路的默认路由的AD,作线路热备,并不必定要负载。


本篇文档就介绍到这里,但愿能帮助到你。须要实验拓扑的小伙伴能够关注一下我,给我私信或者加个人QQ,我能够将个人实验环境分享给你。谢谢

相关文章
相关标签/搜索