静态路由与BFD联动
接口地址为设备编号数字
我们分析这张拓扑图,可以看出,R1去往R4有两条路径可走:
R1—>R2—>R4
R1—>R3—>R4
如果我们不给某条路由配置优先级为其他数,那么这两条路由将会形成等价负载分担路由,当然,这种路由的好处是路由器能够在多跳路径上进行流量的分担,避免链路带宽消耗过大,提高了链路的利用率。但是,我们某些情况只希望发往R4的路由始终走R2,当R1链路故障时,流量路径便自动切换到R3上面。这时我们可以通过两条命令来实现:
ip route-static 30.1.1.0 255.255.255.0 10.1.1.2
ip route-static 30.1.1.0 255.255.255.0 20.1.1.2 preference 70
这样我们便实现了R1去往R4的流量始终走R2,当R1的G0/0/0链路down掉,去往R4的流量便会走R3。
但是我们可以深思一下,R1的链路问题是解决了,可是当R2连接交换机1的链路down掉怎么办?R1可是检测不到的,R1去往R4的路由仍然是走R2,可R2的链路已经down掉,数据包是转发不了的。
这种问题的原因就在于静态路由无法感知网络拓扑的变化而作出响应。那怎么可以解决这类问题,可以使用BFD(双向转发检测)这类技术来解决此问题。BFD可以用于快速检测网络中的链路状况。
我们可以在R1和R2上部署BFD来检测双方链路状态。在R1和R2之间开始工作,两者便会周期性的交互BFD报文。
R1配置:
bfd 12 bind peer-ip 12.1.1.2
discriminator local 10
discriminator remote 20
commit
R2配置:
bfd 21 bind peer-ip 12.1.1.1
discriminator local 20
discriminator remote 10
commit
配置完之后,R1和R2便会交互BFD报文
现在BFD的状态是UP的,与BFD联动的路由此时会出现在路由表中。
现在模拟R2连接交换机1的链路出现故障,看R1是否能继续和R4通信。
从此图可以看出,当R2连接交换机1的链路down掉后,R1会弹出日志;
并且我们可以看出此时R1仍然能够ping通R4,在配置BFD前,我们是ping不通的,由此可见BFD在此处的作用。
接下来我们看下此时的路由表
R1的链路并未发生故障,但路由表的下一条却改成了13.1.1.3.
当R2连接交换机1的链路恢复后,R1与R2之间的BFD继续工作,并且状态为up,此时下一条为R2的静态路由将出现在路由表中。
静态路由与NQA联动
通过上面的阅读,我们了解的静态路由与BFD间联动带来的好处,除BFD外,还有一类技术——NQA(网络质量分析),也可以实现类似的功能。NQA是用于网络性能检测及运行状况分析。部署后,可以对网络的响应时间、网络抖动、丢包率等信息进行统计。
依然使用上面的拓扑图,和相同的需求。我们只需要在R2上部署NQA的实例,使用PING测试到R2(12.1.1.2)的可达性,并将测试结果与下一跳为R1的静态路由进行联动。
也就是说,当R1到达R2的路由为可达,静态路由生效,不可达,静态路由失效,此时浮动备份路由出现在路由表中。
R1的配置:
nqa test-instance ceshi NQA #创建NQA测试实例管理者名称(ceshi),以及测试的实例名(NQA)
test-type icmp #测试协议
destination-address ipv4 12.1.1.2 #测试对象
frequency 6 #测试时间间隔
interval seconds 2 #探测次数
timeout 2 #报文发送间隔
probe-count 2 #超时时间
start now #开始执行命令
然后我们给R1的静态路由域NQA实例进行联动
ip route-static 192.168.1.0 24 12.1.1.2 track nqa ceshi NQA
我们可以使用display nqa results查看NQA实例探测结果
可以看出,我们探测了3次,每次都是成功。出现success表示探测成功。
现在我们模拟R2与交换机1间的链路出现故障,看R1是否能ping通R4。
图中可以看出,通过部署NQA后,在R1原本不知道R2与交换机1之间链路故障时,依然能ping通R4,再看路由表显示,下一跳为13.1.1.3的浮动备份路由出现在路由表中,这就是静态路由与NQA联动的一种作用。
此时我们还可以在R1上去使用display nqa results查看:
当实例检测为失败,与该实例联动的静态路由就失效了,浮动路由就会出现在路由表中。