花了一晚上时间研究某些人声称的"可以利用Cisco SLA可以监测非直连网络down掉,从而删除本地静态/默认路由"说法,我个人认为:不可能。
某些人的初衷应该是想避免路由器转发无效数据包,因为非直连网络断掉,本地路由器依旧会将数据包按原路由进行转发,因为直连路由没有down,但是经过我的实验,没有可能实现:
1、SLA的ICMP-echo包同样也是要按照本地路由进行转发的,如果本地路由被删除,那么SLA永远无法成功到达远程目标,track永远无法满足条件,路由也就无法恢复
2、如果目标不可达,track条件不满足,这条带track的静态/默认路由就会被删除
3、原本的那条默认/静态路由依旧存在于路由表中,数据包依旧会按照这条路由进行转发,没有起到阻止路由器转发无效数据包的作用
4、即使有冗余线路,SLA依旧无法达到预期作用,有冗余线路通常为默认路由。
如果SLA探测的目标为冗余线路均可到达的地址,那么会产生震荡,track会不停地从down->up->down,理由很好理解,见1;
如果SLA探测的目标为任一线路可到达,则track永远无法还原,理由依旧见1
总结:使用SLA探测非直连网络的down和up不可行,探测直连网络没必要,总之,SLA用在这方面非常鸡肋,还是考虑SLA的其他用途吧。