介绍
- OSPF和IS-IS都是基于链路状态的内部网关路由协议,运行这两种协议的路由器通过同步LSDB,采用SPF算法计算最优路由。
- 当网络拓扑发生变化时,OSPF和IS-IS支持多种快速收敛和保护机制,能够降低网络故障导致的流量丢失。
- 为了实现对路由表规模的控制,OSPF和IS-IS支持路由选路及路由信息的控制,能够减少特定路由器路由表的大小。
- 本系列文章将介绍OSPF和IS-IS的高级特性,包括:快速收敛机制、路由控制、其他特性等。
- 此文章参考于华为认证系列PPT。
OSPF快速收敛概述
- OSPF快速收敛是为了提高路由的收敛速度而做的扩展特性,包括:PRC(Partial Route Calculation,部分路由计算)和智能定时器。
- 同时,OSPF支持故障恢复快速收敛,例如通过OSPF IP FRR(Fast ReRoute,快速重路由)实现备份链路的快速切换,也可以与BFD联动实现对故障的快速感知。
- 快速收敛是为了满载电信级的要求,50ms内完成收敛减少丢包。
PRC(Partial Route Calculate,部分路由计算算法)
- PRC的工作原理:当网络上路由发生变化的时候,只对发生变化的路由进行重新计算。
- PRC不计算节点路径,而是根据SPF算法算出来的最短路径树来更新路由。
在路由计算中,节点代表路由器,叶子代表路由,PRC只处理变化的叶子信息。
- 场景介绍:
- 某网络运行OSPF,网络收敛后,左图是以R1为根的最短路径树。此时R1访问节点R5时,通过[R1下行链路的出接口,R3上行链路接口的IP地址]到达该目的地。
- R5将环回口Loopback0开启OSPF,即OSPF网络内有新增网段。
- PRC计算:
- R5全网泛洪新增LSA。
- R1收到该LSA后会创建新的路由,继承原有访问节点R5的路径及下一跳,即最短路径树不变,只在节点R5上新增叶子。
- 因此R1访问R5的Loopback0时,通过[R1下行链路的出接口,R3上行链路接口的IP地址]到达该目的地。
- 价值:
OSPF网络新增网段时,只关注发生变化的路由,加快了路由的计算。
注意:大部分现代网络设备都默认开启此功能。此功能也依赖于I-SPF算法,ISIS也会默认开启。
智能定时器(Intelligent Timer)
- 智能定时器是在进行SPF计算和产生LSA的时候用到的一种定时器。
- 智能定时器既可以对少量的外界突发事件进行快速响应,又可以避免过度地占用CPU。
控制LSA的生成与接收
- OSPF通过如下两个规定来避免网络连接或者路由频繁动荡引起的过多占用设备资源的情况。
同一条LSA在1秒内不能再次生成,即LSA的更新时间间隔5秒。
LSA被接收的时间间隔为1秒。
- 在网络相对稳定、对路由收敛时间要求较高的组网环境中,可以通过智能定时器指定LSA的更新时间间隔为0来取消LSA的更新时间间隔,使得拓扑或者路由的变化可以立即通过LSA发布到网络中,或者立即被感知到,从而加快网络中路由的收敛速度。
控制路由计算
- 当网络发生变化时,OSPF的LSDB会发生改变,需要重新计算最短路径。如果网络频繁变化,由于不断地计算最短路径,会占用大量系统资源,影响设备的效率。
- 通过配置智能定时器,设置合理的SPF计算的间隔时间,可以避免占用过多的路由器内存和带宽资源。
注意:
- 如果触发路由计算的时间间隔较长,同样会影响网络的收敛速度。
- 智能定时器首次超时时间是一个固定的时间。如果在定时器超时前,又有触发定时器的事件发生,则该定时器下一次的超时时间会增加。
- 现代网络设备性能都比较强了,可以适当调小时间间隔。
配置命令
1、设置OSPF LSA更新的时间间隔。
1 |
|
缺省情况下,使能智能定时器intelligent-timer,更新LSA的最长间隔时间max-interval为5000毫秒、初始间隔时间start-interval为500毫秒、基数间隔时间hold-interval为1000毫秒。(以毫秒为单位的时间间隔)
使用智能定时器后:
- 初次更新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。
命令介绍:
[Huawei-ospf] lsa-originate-interval { 0 | { intelligent-timer max-interval start-interval hold-interval | other-type interval } }
0:指定LSA更新的时间间隔为0,即取消LSA的5秒的更新时间间隔。
intelligent-timer:指定通过智能定时器设置OSPF Router LSA和Network LSA的更新间隔时间。
max-interval:指定更新OSPF LSA的最长间隔时间。整数形式,取值范围是1~120000,单位是毫秒。缺省值是5000。
start-interval:指定更新OSPF LSA的初始间隔时间。整数形式,取值范围是0~60000,单位是毫秒。缺省值是500。
hold-interval:指定更新OSPF LSA的基数间隔时间。整数形式,取值范围是1~60000,单位是毫秒。缺省值是1000。
other-type:指定设置除OSPF Router LSA和Network LSA外LSA的更新间隔时间。
interval:指定LSA更新的时间间隔。整数形式,取值范围是0~10,单位是秒。缺省值是5。
2、设置OSPF LSA接收的时间间隔。
1 |
|
缺省情况下,使能智能定时器intelligent-timer,接收LSA的最长间隔时间max-interval为1000毫秒、初始间隔时间start-interval为500毫秒、基数间隔时间hold-interval为500毫秒。(以毫秒为单位的时间间隔)
使用智能定时器后:
初次接收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。
命令:
[Huawei-ospf-1] lsa-arrival-interval { interval | intelligent-timer max-interval start-interval hold-interval }
interval:指定LSA接收的时间间隔。整数形式,取值范围是0~10000,单位是毫秒。
intelligent-timer:指定通过智能定时器设置LSA接收的间隔时间。
max-interval:指定接收OSPF LSA的最长间隔时间。整数形式,取值范围是1~120000,单位是毫秒。缺省值是1000。
start-interval:指定接收OSPF LSA的初始间隔时间。整数形式,取值范围是0~60000,单位是毫秒。缺省值是500。
hold-interval:指定接收OSPF LSA的基数间隔时间。整数形式,取值范围是1~60000,单位是毫秒。缺省值是500。
3、设置OSPF路由计算时间间隔。
1 |
|
缺省情况下,使能智能定时器intelligent-timer,SPF计算的最长间隔时间max-interval为10000毫秒、初始间隔时间start-interval为500毫秒、基数间隔时间hold-interval为1000毫秒。(以毫秒为单位的时间间隔)。
使用智能定时器后,SPF计算的时间间隔如下:
- 初次计算SPF的间隔时间由start-interval参数指定。
- 第n(n≥2)次计算SPF的间隔时间为hold-interval×2(n-2)。
- 当hold-interval×2(n-2)达到指定的最长间隔时间max-interval时,OSPF连续三次计算SPF的时间间隔都是最长间隔时间,之后,再次返回步骤1,按照初始间隔时间start-interval计算SPF。
命令:
[Huawei-ospf-1] spf-schedule-interval { interval1 | intelligent-timer max-interval start-interval hold-interval | millisecond interval2 }
interval1:指定OSPF SPF计算间隔时间。整数形式,取值范围是1~10,单位是秒。
intelligent-timer:指定通过智能定时器设置OSPF SPF计算的间隔时间。
max-interval:指定OSPF SPF计算的最长间隔时间。整数形式,取值范围是1~120000,单位是毫秒。缺省值是10000。
start-interval:指定OSPF SPF计算的初始间隔时间。整数形式,取值范围是1~60000,单位是毫秒。缺省值是500。
hold-interval:指定OSPF SPF计算的基数间隔时间。整数形式,取值范围是1~60000,单位是毫秒。缺省值是1000。
millisecond interval2:指定OSPF SPF计算间隔时间。整数形式,取值范围是1~10000,单位是毫秒。
OSPF IP FRR(快速重路由)
- OSPF IP FRR是动态IP FRR,利用LFA(Loop-Free Alternates)算法预先计算出备份路径,保存在转发表中,以备在故障时将流量快速切换到备份链路上,保证流量不中断,从而达到流量保护的目的,该功能可将故障恢复时间降低到50 ms以内。
- LFA计算备份链路的基本思路是:
以可提供备份链路的邻居为根节点,利用SPF算法计算出到目的节点的最短距离。然后,按照不等式计算出开销最小且无环的备份链路。
OSPF IP FRR组网应用
- OSPF IP FRR的流量保护分为链路保护和节点链路双保护。
- Distance_opt(X, Y) 是指节点X到Y之间的最短路径
链路保护
链路保护公式:
Distance_opt(N,D)\
保证从节点N->D的流量不会再经过节点S,即保证没有环路。
S:流量转发的源节点
D:流量转发的目的节点
N:备份链路的节点
流量从设备S到D进行转发,网络开销值满足链路保护公式,可保证当主链路故障后,设备S将流量切换到备份链路S到N后可以继续向下游转发,确保流量中断小于50 ms。
节点链路双保护
链路保护公式:
Distance_opt(N,D)\
节点保护公式:
Distance_opt(N,D)\
保证从节点N->D的流量不会经过节点S和E,即保证没有环路。
节点链路双保护必须同时满足以上两个公式。
注意:
注意:
节点链路双保护:
如正文右图:流量从设备S到D进行转发,网络开销值满足节点链路保护公式,可保证当主链路故障后,设备S将流量切换到备份链路S到N后可以继续向下游转发,确保流量中断小于50 ms。
OSPF IP FRR的流量保护分为链路保护和节点链路双保护。
当需要保护的对象是经过特定链路的流量时,流量保护类型为链路保护。
当需要保护的对象是经过特定设备的流量时,流量保护类型为节点链路双保护。节点保护优先级高于链路保护。
配置命令
配置命令
使能OSPF IP FRR。
1 |
|
创建并进入OSPF FRR视图。
1 |
|
使能OSPF IP FRR功能,利用LFA算法计算备份下一跳和备份出接口。
2、(可选)阻止OSPF接口的FRR能力。
1 |
|
对于承载重要业务的节点设备,通过该命令在指定接口上禁止OSPF IP FRR功能,从而使此接口相连的对端设备不成为备份链路上的节点设备,避免使能OSPF IP FRR功能后对节点设备上运行的重要业务造成影响。
OSPF IP FRR配置举例
OSPF IP FRR配置举例
当R1与R3之间的链路出现故障时,R1转发的流量能够快速切换到备份链路,通过R2进行流量转发。
1、各设备配置接口地址及部署OSPF。(略)
2、配置各设备OSPF开销值。
1 |
|
3、在R1上使能OSPF IP FRR。
1 |
|
查看OSPF IP FRR配置结果
查看OSPF IP FRR配置结果
查看R1到R4的GE0/0/1接口地址的路由信息。
1 |
|
注意看上面Backup Nexthop和Backup Type,由于R1使能了OSPF IP FRR功能,OSPF生成了一条备份链路。
OSPF与BFD联动
OSPF与BFD联动
网络上的链路故障或拓扑变化都会导致设备重新进行路由计算,所以缩短路由协议的收敛时间对于提高网络的性能是非常重要的。
OSPF与BFD联动就是将BFD和OSPF关联起来,一旦与邻居之间的链路出现故障,BFD对链路故障的快速感应能够加快OSPF对于网络拓扑变化的响应。
OSPF与BFD联动工作原理:
三台设备(R1、R2、R3)间建立OSPF邻居关系。邻居状态到达Full时通知BFD建立BFD会话。
R1到R2间的链路出现故障后,BFD首先感知到并通知R1。R1处理BFD会话Down事件,重新进行路由计算,新的路径为:R1-R3-R2。
OSPF通过周期性的向邻居发送Hello报文来实现邻居检测,检测到故障所需时间比较长,超过1秒钟(默认通过OSPF Dead Timer超时判断邻居失效,缺省为40秒)。随着科技的发展,语音、视频及其它点播业务应用广泛,而这些业务对于丢包和延时非常敏感,当数据达到吉比特速率级时,较长的检测时间会导致大量数据丢失,无法满足电信级网络高可靠性的需求。
为了解决上述问题,配置指定进程或指定接口的OSPF与BFD联动功能,可以快速检测链路的状态,故障检测时间可以达到毫秒级,提高链路状态变化时OSPF的收敛速度。
OSPF与BFD联动的基础配置命令
OSPF与BFD联动的基础配置命令
1、配置OSPF的BFD特性。
1 |
|
在OSPF进程下使能BFD特性。
1 |
|
配置BFD会话的参数值。
2、配置指定接口的BFD特性。
1 |
|
在使能OSPF的特定接口下使能BFD特性。
1 |
|
在使能OSPF的特定接口下配置BFD会话的参数值。
配置前提:
如果需要使用BFD功能快速检测链路故障,则必须在系统视图下执行bfd命令,使能全局BFD功能。
接口配置的BFD特性优先级高于进程配置的BFD特性优先级。如果打开了接口的BFD开关,则按照接口上BFD参数建立BFD会话。
可以配置OSPF IP FRR与BFD联动:
配置OSPF IP FRR特性时,需要底层能够快速响应链路变化,以便迅速将流量切换到备份链路。
将OSPF IP FRR与BFD会话绑定可以达到快速感知故障的目的,确保故障后流量切换的及时性。
命令:[Huawei-ospf-1] bfd all-interfaces { min-rx-interval receive-interval | min-tx-interval transmit-interval | detect-multiplier multiplier-value | frr-binding }
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 Smart-discover(智能发现)
OSPF Smart-discover(智能发现)
定义
定义
通常情况下,路由器会周期性地从运行OSPF协议的接口上发送Hello报文。这个周期被称为Hello Interval,通过一个Hello Timer定时器控制Hello报文的发送。这种按固定周期发送报文的方式减缓了OSPF邻居关系的建立。
通过使能Smart-discover特性,可以在特定场景下加快OSPF邻居的建立。
接口是否配置Smart-discover | 处理 |
---|---|
接口没有配置Smart-discover | 必须等待Hello Timer到时才能发送Hello报文;两次报文发送间隔为Hello Interval;在这期间邻居一直在等待接收报文。 |
接口上配置Smart-discover | 直接发送Hello报文,不需要等待Hello Timer超时;邻居可以很快收到报文迅速进行状态迁移。 |
原理
原理
在以下场景中,使能了Smart-discover特性的接口不需要等待Hello Timer到时,可以主动向邻居发送Hello报文:
当邻居状态首次到达2-way状态。
当邻居状态从2-way或更高状态迁移到Init状态。
配置命令
配置命令
1 |
|
配置接口的Smart-discover功能, 网络中邻居状态,或者DR、BDR发生变化时,设备不必等到Hello定时器到就可以立刻主动的向邻居发送Hello报文。从而提高建立邻居的速度,达到网络快速收敛的目的。
参考:华为文档