1. 我们在ICG网关上Ping电信出口地址6.16.5.6;
2. Ping的过程分为两部分,首先是ICG网关发送回声探测请求给6.16.5.5(电信出口地址);
3. 电信出口收到回声探测请求后,会进行回声探测响应,返回给ICG网关6.16.5.6。
如果ICG网关收到回声探测响应,我们就认为这次Ping成功了。
如果是因为任意一条线路故障,有如下2种可能:
1. 电信网关收不到回声探测请求,也就是说ICG网关发出去的任何数据都到达不了电信出口;
2. 电信网关收到了回声探测请求,但是回声探测响应在前往ICG网关的途中丢失,意味着电信网关发出的任何数据无法到达ICG网关;
3. 无论哪种情况,Ping的结果就是失败,更直接地说,就是上不了网。
因此,我们通常都是在怀疑线路存在故障的时候Ping一下,根据Ping的结果来判断线路正常与否。
现在的问题是,网吧老板必须在知道有人上不去网了,才去Ping,Ping完再去拨打10000,然后再进行线路切换,这估计会损失20分钟,20分钟对于网游玩家、视频聊天的情侣来说,是不可接受的,会给网吧带来很严重的损失,我们在想是不是有个自动的机制替网吧老板做这种事情。
下面有情NQA出场,NQA的全名叫网络质量分析(Network Quality Analysis),是用于测量端到端网络质量的,它的原理很简单:
1. 根据用户设置,定期执行一些操作,最简单的操作就是Ping(回声探测机制);
2. 自动记录每次探测的结果,如Ping成功就是OK,失败就是FAILED;
3. 根据用户设置,自动根据结果采取动作,如连续3次FAILED,那么就触发机关;
4. 触发机关可以和一些特性关联,比如静态路由,机关一旦被触发,静态路由自动失效;
5. 有失效就有生效,也就是线路备份机制也被启发了,所有数据切换到备用线路。
从这里我们可以得知NQA相当于一个自动代理,执行探测、联动功能。这么带感的东东,你是不是很感兴趣呢,我们来看一下举例的配置吧:
#
// 创建NQA探测实体telecom,序号1
nqa entry telecom 1
// 探测类型是ICMP-Echo,Echo翻译成中文叫回声
type icmp-echo
// 探测的目的IP地址是电信出口地址6.16.5.5
destination ip 6.16.5.5
// 设置next-hop也为6.16.5.5,防止从联通线路探测电信出口
next-hop 6.16.5.5
// 探测间隔为500ms
frequency 500
// 每个周期连续探测10次
probe count 10
// 探测超时时间2s,即探测发送后2s仍未收到响应,即认为探测失败
probe timeout 2000
// reaction意思是对探测结果的反应,下行配置翻译成中文就是如果连续3次探测失败将触发机关trigger
reaction 1 checked-element probe-fail threshold-type consecutive 3 action-type trigger-only
// 探测源接口是连接电信线路的Ethernet 0/0
source interface Ethernet 0/0
// 设置ttl为1,防止从联通线路探测电信出口
ttl 1
#
// 设置机关联动组track,联动组关联NQA探测实体telecom 1的反应1
track 1 nqa entry telecom 1 reaction 1
#
// 调度NQA探测实体telecom 1,从现在开始,永远探测
nqa schedule telecom 1 start-time now lifetime forever
#
// 将通往电信的默认路由和机关联动组track绑定
ip route-static 0.0.0.0 0.0.0.0 6.16.5.5 track 1 description telecom
#
以上配置在实际过程中是这么操作的:
1. 线路正常情况下,NQA探测结果一直OK,所以不会触发机关;
2. 一旦线路故障了,NQA可以在3.5s内连续检测到3次FAILED,立即触发机关;
3. 机关被触发,立即联动电信静态路由失效;
4. 电信静态路由失效,联通线路立刻全权接管,整个过程在5s以内完成;
5. 如果NQA探测成功,机关触发取消,电信出口默认路由自动恢复。