因为这1秒,这个月的工资差点打水漂.....

运维 网络运维
伴随着网络人们对网络的需求越加强力的同时人们对网络的可靠性的需求也更高了。游戏断网一秒我们可以重来,大不了重开一局;视频断网一秒我们可以重新连接;试想经融股市断网一秒将造成何等严重的经济损失。

随着网络技术的发展,人们对网络的依赖已经越来越深,我们的工作,生活,娱乐方方面都离开不网络的支持。伴随着网络人们对网络的需求越加强力的同时人们对网络的可靠性的需求也更高了。游戏断网一秒我们可以重来,大不了重开一局;视频断网一秒我们可以重新连接;试想经融股市断网一秒将造成何等严重的经济损失。

[[266752]]

我们常用的动态路由协议,如RIP当网络出现故障或者变更收敛时间在数秒到百秒之上(RIP也支持触发更新,但是这依然不能避免在一些特殊情况下依赖RIP自身计时器实现网络的重收敛);我们常用的OSPF协议虽然收敛速度控制在秒级,但在一些特殊情况下也需要依赖自身计时器(这时又会陷入数十秒的等待)实现网络的重收敛;至于静态路由就更没有监测对端是否正常的功能,而静态默认路由(我们基本靠这个路由实现对广域网的访问)又是我们工作和生活中使用最多的。

一、 BFD&NQA简介

1. BFD

BFD(Bidirectional Forwarding Detection,双向转发检测)用于快速检测系统发送和接收两个方向的通信故障,并在出现故障时通知上层应用。

BFD是一种通用的,标准化的与介质和协议无关的快速链路故障检测机制;BFD可以快速监控网络中链路或者IP路由的发送状况;BFD支持毫秒级的快速检测与监控,当感知到监测链路故障会立刻通知上层协议(如路由协议,VRRP等)做出响应动作。

2. NQA

NQA(Network Quality Analysis,网络质量分析)是网络系统提供的一个特性,位于链路层之上,覆盖网络,传输层和应用层,独立于底层硬件,课实现监视网络性能状况,在网络发生故障时进行故障诊断和定位,并将按照策略告知应用执行应对动作。

二、BFD&NQA与静态路联动

需求:

1. 通过策略路由实现静态路由的热备

2. 通过BFD&NQA实现链路在故障时的快速主动切换

(1) 当12.1.1.0网段正常。去往2.2.2.2数据通过12.1.1.0网段转发;同时备份一条同样去往2.2.2.2的路由

(2) 这里有2个问题:

  • 指定路线:访问2.2.2.2数据优选12.1.1.0链路
  • 自动切换:12.1.1.0网段故障,访问2.2.2.2数据自动切换到备份线路

(3) 解决思路

  • 指定路线:我们修改2.2.2.2通过12.1.1.0网段的优先级小于常规的60(越小越有效,)这时路由表会优先和加表此条路由
  • 自动切换:我们通过BFD联动第一条静态,如果BFD失效,也代表第一条路由失效,这时路由就重新启用之前落选的24.1.1.0线路

三、静态路由配合BFD实现主备自动切换

注意BFD需要在本端和对端都做,是一个双向的连接,BFD通过互相检测,感知到对端故障告知相关应用(这里的应用就是静态路由)

1. 在GW端制定BFD策略

  1. [GW] 
  2. [GW]bfd--------------------------------------------------开启BFD功能 
  3. [GW-bfd]quit 
  4. [GW]bfd gw bind peer-ip 12.1.1.2------------------------创建名称为gw的BFD检测组,此检测组监控对端12.1.1.2地址的网络通畅性 
  5. [GW-bfd-session-gw]discriminator local 1---------------配置本BFD组本端标识ID为1 
  6. [GW-bfd-session-gw]discriminator remote 2------------配置本BFD组对端标识ID为2 
  7. [GW-bfd-session-gw]min-rx-interval 1000---------------配置本BFD发送BFD检测报文的间隔时间为1000ms(毫秒)这个需要和对端一致,越小,切换速度越快(默认1000毫秒,修改范围10--2000毫秒) 
  8. [GW-bfd-session-gw]min-tx-interval 1000---------------配置本BFD接收BFD检测报文的间隔时间为1000ms(毫秒)在此时间没有收到对端发送BFD报文,判断对方挂了(默认1000毫秒,修改范围10--2000毫秒) 
  9. [GW-bfd-session-gw]commit-----------------------------使得上述BFD策略生效 
  10. [GW-bfd-session-gw]quit 
  11. [GW] 
  12. [GW]dis bfd session all------------------------------------查看BFD状态,UP显示对端BFD对端邻居存活,down表示对方挂了或者和对端BFD协商失败 

2. 在ISP端制定BFD策略,与GW的BFD相对应

  1. [ISP]bfd 
  2. [ISP-bfd]quit 
  3. [ISP] 
  4. [ISP]bfd isp bind peer-ip 12.1.1.1 
  5. [ISP-bfd-session-isp]discriminator local 2 
  6. [ISP-bfd-session-isp]discriminator remote 1 
  7. [ISP-bfd-session-isp]min-rx-interval 1000 
  8. [ISP-bfd-session-isp]min-tx-interval 1000 
  9. [ISP-bfd-session-isp]commit 
  10. [ISP-bfd-session-isp]quit   
  11. [ISP] 

3. 在GW将BFD联动(调用至)静态路由

[GW]ip route-static 2.2.2.2 32 12.1.1.2 preference 55 track bfd-session gw----当名称为“gw”BFD检测组工作正常,则此条优先级为55的静态路由生效,如果BFD挂了,则这条静态路由失效

  1. [GW] 
  2. [GW]ip route-static 2.2.2.2 32 24.1.1.4 preference 60---------------------------配置正常静态路由,优先级为60 
  3. [GW] 

四、静态路由配合NQA实现主备自动切换

1. 制定对对端的NQA检测策略

  1. [GW] 
  2. [GW]nqa test-instance gw isp----------------------------创建名称为gw isp的NQA事件 
  3. [GW-nqa-gw-isp]test-type icmp-------------------------采用发送ping包的方式检测对端 
  4. [GW-nqa-gw-isp]destination-address ipv4 24.1.1.4-----检测对端为IPv4地址的24.1.1.4 
  5. [GW-nqa-gw-isp]frequency 2----------------------------发送检测包的间隔时间为2秒(范围1-604800秒)越小触发切换速度越快 
  6. [GW-nqa-gw-isp]timeout 2------------------------------接收本检测包的超时时间为2秒,2秒内没有收到本端发出的ping包,判断对方挂了 
  7. [GW-nqa-gw-isp]probe-count 1-------------------------发送检测包的数量,每次一个 
  8. [GW-nqa-gw-isp]start now-------------------------------本检测策略立刻生效 
  9. [GW-nqa-gw-isp]quit 
  10. [GW] 

2. 在静态路由调用检测策略,实现静态路由的自动切换

  1. [GW] 
  2. [GW]ip route-static 20.20.20.20 32 24.1.1.4 preference 55 track nqa gw isp-----此路由的优先级为55,此路由生效条件为NQA追踪策略正常(当NQA发现对方挂了,会告诉路由表立刻剔除这条故障路由) 
  3. [GW] 
  4. [GW]ip route-static 20.20.20.20 32 12.1.1.2 
  5. [GW] 
责任编辑:赵宁宁 来源: 思科CCIE俱乐部
相关推荐

2019-07-08 11:37:44

网络安全网络安全技术周刊

2012-11-06 09:51:07

VMware云计算

2009-11-20 15:49:28

2011-02-25 14:30:09

思科云邮件服务

2023-04-12 16:25:00

谷歌人工智能

2017-01-10 07:51:49

比特币投资亚闪

2019-01-22 18:40:09

2019-01-23 15:23:21

程序员删库跑路游戏公司

2019-01-24 09:22:39

程序员服务器游戏项目

2022-03-30 14:34:28

火星探测器航天局

2023-05-14 22:25:33

内存CPU

2023-03-27 07:39:07

内存溢出优化

2019-01-31 15:27:24

架构技术栈微信半月刊

2020-07-01 09:07:52

SQL索引语句

2016-09-27 11:08:53

数据分析开源奥运会

2020-03-30 09:57:05

Android分屏模式

2020-08-07 07:54:08

代码

2022-01-10 21:54:35

谷歌脸书罚单

2021-01-30 10:58:29

React应用程序开发

2015-10-28 16:46:18

点赞
收藏

51CTO技术栈公众号