高级特性:一条命令解决一个问题
OSPF快速收敛机制
发生故障重新计算拓扑的过程叫做收敛,设备现在本身就是PRC算法和I-SPF算法
PRC(针对叶子节点,叶子代表路由)
不需要命令配置,就是ospf的特性;叶子节点,当网络上路由发生变化的时候,只对发生变化的路由进行重新计算
I-SPF(针对实节点,节点代表路由器)
不需要命令配置,当网络拓扑改变的时候,只对受影响的节点进行路由计算,而不是对全部节点重新进行路由计算,从而加快了路由的计算
智能定时器
控制路由产生,计算,产生
智能定时器1(LSA的产生间隔)
感知到变化 产生LSA 发送LSA 接收LSA 进行SPF计算 计算成路由表 下发到转发表
如果网线断掉之后恢复是虚接,这样会消耗很大的资源
[Huawei-ospf-1] lsa-originate-interval { 0 | { intelligent-timer max-interval start-interval hold-interval | other-type interval } } 缺省情况下,使能智能定时器intelligent-timer,更新LSA的最长间隔时间max-interval为5000毫秒、初始间隔时间start-interval为500毫秒、基数间隔时间hold-interval为1000毫秒。(以毫秒为单位的时间间隔) max-interval 最长时间 start=interval 初始时间 hold-interval 间隔时间
使用智能定时器后:
- 初次更新LSA的间隔时间由start-interval参数指定。
- 第n(n≥2)次更新LSA的间隔时间为hold-interval×2(n-2)。
- 当hold-interval×2(n-2)达到指定的最长间隔时间max-interval时,OSPF连续三次更新LSA的时间间隔都是最长间隔时间,之后,再次返回步骤1,按照初始间隔时间start-interval更新LSA。
- OSPF正常运行,第一次把线拔了之后,又插上,会等待200毫秒开始收敛
- 第n次(n≥2),把线拔掉之后,又恢复等待时间是公式
,因此第二次间隔500毫秒 - 第3次按照公式就是1000毫秒
- 第4次按照公式就是2000毫秒,到达了最大值
- 第5次因为到达了最大值,仍然去等待2000毫秒,一直等最大值用了3次,再次返回第一步,按照初始时间间隔更新LSA
智能定时器2(LSA的接收间隔)
[Huawei-ospf-1] lsa-arrival-interval { interval | intelligent-timer max-interval start-interval hold-interval } 缺省情况下,使能智能定时器intelligent-timer,更新LSA的最长间隔时间max-interval为5000毫秒、初始间隔时间start-interval为500毫秒、基数间隔时间hold-interval为1000毫秒。(以毫秒为单位的时间间隔)
智能定时器3(SPF的算法间隔)
[Huawei-ospf-1] spf-schedule-interval { interval1 | intelligent-timer max-interval start-interval hold-interval | millisecond interval2 }
FRR(快速重路由)
是否必须在OSPF中的一个区域?
动态 IP FRR,利用 LFA算法预先计算出备份路径,保存在转发表中,以备在故障时将流量快速切换到备份链路上,保证流量不中断,从而达到流量保护的目的,该功能可将故障恢复时间降低到50ms以内(单指切换时间)
每次路由计算需要经过
1.收LSA
2.SPF计算
3.OSPF路由生成
4.RIB路由表生成
5.FIB转发表下载
如果上面的路由失效,需要重新计算下面的路由(从SPF算法开始)
FRR的做法就是计算路径的时候直接计算出来两条,也就是FIB表中两条路由都是存在的,当上面的路径断了之后,可以直接切到下面的路径,不需要再重新计算了,从而加快了收敛速度
ospf 1 frr 进入FRR视图 loop-free-alternate 使能FRR功能 接口模式下 ospf frr block 对于承载重要业务的节点设备,通过该命令在指定接口上禁止OSPF IP FRR功能,从而使此接口相连的对端设备不成为备份链路上的节点设备,避免使能OSPF IP FRR功能后对节点设备上运行的重要业务造成影响。
FRR防止环路
A计算主路由是自己计算出来的,但是计算备用路径的时候会站在C的角度上来看,如果C要经过A访问,那么这个备用路径不生效,如果不经过A访问,这个备用路径则生效
流量保护
链路保护:N到D的开销<N到S+S到D的开销
FRR与BFD联动
OSPF检测非直连故障,4倍的hello time,40秒的时间,慢hello机制
BFD检测到故障后,告知OSPF,OSPF告知FIB加快收敛
命令:
- min-rx-interval receive-interval:指定期望从对端接收BFD报文的最小接收间隔。整数形式,取值范围是10~2000,单位是毫秒。缺省值是1000毫秒。
- min-tx-interval transmit-interval:指定向对端发送BFD报文的最小发送间隔。整数形式,取值范围是10~2000,单位是毫秒。缺省值是1000毫秒。
- detect-multiplier multiplier-value:指定本地检测倍数。整数形式,取值范围是3~50,缺省值是3。
- frr-binding:将BFD会话状态与接口的链路状态进行绑定。当BFD会话状态变为Down时,接口的物理层链路状态也会变为Down,从而触发流量切换到备份路径。
OSPF的控制
等价路由
当路由表中存在到达同一目的地址,且同一路由协议发现的多条路由时,LSA类型也相同,若这几条路由的开销值也相同,那么这些路由就是等价路由,可以实现负载分担。
设备将按照负载分担的方式从多条等价路由发送报文到同一目的地址
设置进行负载分担的等价路由的最大数量
缺省路由
LSA过滤
当两台路由器之间存在多条链路时,可以在某些链路上通过对发送的LSA进行过滤,减少不必要的重传,节省带宽资源
int g0/0/1 ospf filter-lsa-out all | summary | ase//打开后不会发送任何LSA信息,因为默认是all
在ABR上面对3类LSA做过滤,在区域里面做配置
对区域内出,入方向ABR 3类LSA设置过滤条件,只有通过过滤的LSA才能被发布和接收
通过对区域的LSA进行过滤可以不向邻居发送无用的LSA,从而减少LSDB的大小,提高网络收敛速度。
不发送LSA
不接收LSA
如果在区域0做了出方向过滤,那么区域1和2都不能接收到,如果只在2上面入方向做了过滤,那么区域1还可以收到
OSPF Database Overflow(过载)
末节设备只能支持300条LSA,如果进来了500条,那么导致OSPF进程挂掉,造成了外部与内部都不能访问
工作原理
先把自己产生的非缺省外部路由删除,开启overflow定时器,会处于overflow状态,之前配置的引入命令
- lsdb-overflow-limit设置对外部路由最大的支持数量
- 设置完成之后,就可以启用overflow功能
- 首先,进来的路由大于自己设置的支持数量,会进入overflow状态
- 进入overflow状态后,会先把自己产生的非缺省路由删除掉,然后开启overflow定时器(一般是5秒)
- 处于overflow状态,之前配置的引入命令,统统都不会引入,只会引入缺省路由,这时会判断上限有没有压下来,如果压下来了,就退出overflow状态
- 如果没有压下来,就丢弃所有新学的外部路由,发来的外部路由不会使用,会一直在overflow状态里面等待,等待超时之后会退出overflow状态
- 退出之后,如果发现外部路由又进来,超过了上限,那么就再次进入overflow状态
- 保护内部的进程不被卡掉
OSPF与BGP联动
回切的时候,OSPF收敛完成后,发送LSA会携带一个非常大的开销,这样就不会立马切回到R2
R2:
ospf 1
stub-router on -startup 120