出接口+下一跳
路由递归,下一跳根据向上匹配的原则,递归到直连路由,但是会出现错误递归的情形。
拓扑
实验步骤
- R1和R2正常通信(loopback口,环回回地址)
- 关闭R1的e0/0接口,删除192.168.20.0/24直连路由表项
- 观察R1的表项
- 测试R1和R2通信
正式实验
步骤一
步骤二
步骤三
步骤四
总结
出现错误递归根本原因是静态路由的不可靠,不能自动发现下一跳失效,主要依靠路由递归到直连路由这一原则。
解决方法
- 静态路由+BFD/SLA,保证正确感知下一跳可达。
- 出接口+下一跳写法,即绑定递归路由,若递归出接口失效,则删除表项。
why
一般用动态路由,不会出现这么多问题,探究这个的目的,个人遇到有两方面的问题
- 面对EBGP peer的建立,基本用静态路由保证对等体可达。
- 静态路由双/多线路保证负载均衡的场景,如果其中一条线路错误递归,条目不消失,出现至少50%的丢包。
默认路由也可以参与路由递归。
以出接口的写法,则默认路由被认为是直连路由。
浮动路由
浮动路由,应用于主备链路场景,通过修改静态路由的AD值,保证路由器不选择AD值大的路由条目。因此,浮动路由没什么好讲,一般情况大家更希望的是链路带宽利用率更高,主备的情况会导致带宽50%利用率丢失。
静态路由配置第二点:掩码、网络地址一致,路由表中不存在更优的路由条目(即AD、cost更小),静态路由条目才会生效。
题外话:
1. 静态路由仅支持等价负载均衡,即两条路,数据流对半分,一条50%,因为链路质量各异,不会让差的链路承担相同比例的流量,因此差的链路仅作备份。
2. 负载共享,两条链路共用,流量比例可以调整,好的链路(100G)承担90%流量,差的链路(10G)承担10%的流量,这个也是大家更乐意看到的。
NULL 0
偶尔我们会看到下面这条配置
ip route 网络地址 掩码 null 0
路由生效的结果,去往这段网络会回应:目的地址不可达。挺多人说,null 0是为了防止路由黑洞的问题,那么这段路由本身不可达,黑不黑洞又有什么影响?
我认为这条命令有如下作用
- 方便路由汇总,合理减轻路由表压力。
- 减少故障带来的等待时间,降低路由黑洞带来的影响,以ping为例,会出现长时间的等待回应阶段,null 0直接回复网络不可达。
案例简单说明
通过路由协议,宣告网络地址,保证可达性,有以下两种方案(针对BGP)
- 针对每一条路由进行network
- 利用路由汇总,将汇总完毕的路由,再network。
题外话,BGP路由或者NRLI来源方式
- 路由聚合,也就是aggregation,前提BGP数据库中有匹配的BGP路由
- 重分布
- network,即从本地IGP中宣告到BGP,前提IGP中也需要存在这条路由
实验现象
路由汇总的优缺点
优点:
- 合理降低路由条目数量
- 配置更加简单,更加方便
缺点:
- 风险隐藏化,如果某一条路由失效,下游设备无法感知,除非全部路由失效
- 可能存在路由环路、黑洞的风险(路由本身是不可靠的,尤其是人为控制的静态路由)
总结
null 0的作用主要是方便路由汇总,当数据包转发到汇总设备,路由器也会根据选路原则,选择其他路由条目。单独讲路由汇总,主要是针对BGP路由的问题。从IGP中选出汇总路由有时候是挺麻烦的事情。常用的OSPF,想想它的汇总条件,以及作用对象。同时,静态路由的汇总条目对链路状态协议很难生效,因此,特地针对BGP阐述了静态路由汇总的功能。
最后想说的话
静态路由内容挺多的,个人能力有限,只能讲到这里,专门针对静态路由写分享的初衷,除了是巩固知识,还有就是让大家看看我的理解,若有不足,敬请斧正!下一章开始IP时代,说实话,感觉自己顺序好像讲错了~~