OSPF快速收敛是为了提高路由的收敛速度而做的扩展特性,包括:PRC(部分路由计算)和智能定时器。
故障恢复快速收敛:FRR、BFD联动
工作原理:当网络上路由发生变化的时候,只对发生变化的路由进行重新计算。
特点:PRC不计算节点路径,而是根据SPF算法算出来的最短路径树来更新路由。
智能定时器是在进行SPF计算和产生LSA的时候用到的一种定时器。
(1)控制LSA的生成与接收:
避免网络振荡:
同一条LSA在1秒内不能再次生成,即LSA的更新时间间隔5秒。
LSA被接收的时间间隔为1秒。
加快路由的收敛速度:可以通过智能定时器指定LSA的更新时间间隔为0
(2)控制路由计算
通过配置智能定时器,设置合理的SPF计算的间隔时间,可以避免占用过多的路由器内存和带宽资源。
设置OSPF LSA更新的时间间隔
[Huawei-ospf-1] lsa-originate-interval { 0 | { intelligent-timer max-interval start-interval hold-interval | other-type interval } * }
设置OSPF LSA接收的时间间隔
[Huawei-ospf-1] lsa-arrival-interval { interval | intelligent-timer max-interval start-interval hold-interval }
设置OSPF路由计算时间间隔
[Huawei-ospf-1] spf-schedule-interval { interval1 | intelligent-timer max-interval start-interval hold-interval | millisecond interval2 }
(1)OSPF IP FRR(Fast reroute,快速重路由)是动态IP FRR,利用LFA(Loop-Free Alternates)算法预先计算出备份路径,保存在转发表中,以备在故障时将流量快速切换到备份链路上,保证流量不中断,从而达到流量保护的目的,该功能可将故障恢复时间降低到50ms以内。
(2)LFA计算备份链路的基本思路是:
以可提供备份链路的邻居为根节点,利用SPF算法计算出到目的节点的最短距离。然后,按照不等式计算出开销最小且无环的备份链路。
(3)OSPF IP FRR的流量保护分为链路保护和节点链路双保护。
链路保护公式:Distance_opt(X, Y)是指节点X到Y之间的最短路径
Distance_opt(N,D)
OSPF与BFD联动就是将BFD和OSPF关联起来;
一旦与邻居之间的链路出现故障,BFD对链路故障的快速感应能够加快OSPF对于网络拓扑变化的响应。
(1)OSPF邻接关系建立后,建立BFD会话;
(2)当链路出现故障后,BFD会受限感知并通知路由器,路由器处理BFD会话DOWN事件,然后重新进行路由计算。
全局使能BFD
[Huawei] bfd
配置OSPF的BFD特性
[Huawei-ospf-1] bfd all-interfaces enable
[Huawei-ospf-1] bfd all-interfaces { min-rx-interval receive-interval | min-tx-interval transmit-interval | detect-multiplier multiplier-value | frr-binding }
配置指定接口的BFD特性
[Huawei-GigabitEthernet0/0/1] ospf bfd enable
[Huawei-GigabitEthernet0/0/1] ospf bfd { min-rx-interval receive-interval | min-tx-interval transmit-interval | detect-multiplier multiplier-value | frr-binding }
配置举例:(OSPF_BFD_Base)
OSPF的路由控制包括:
(1)调整OSPF的接口开销
接口视图:ospf cost 10
(2)设置等价路由
(3)引入外部路由
[R3]ospf
[R3-ospf-1]import-route ?
limit Limit the number of routes imported into OSPF
unr User Network Routes
[R3-ospf-1]import-route limit ?
INTEGER<1-4294967295> 可以导入OSPF协议的最大路由数
[R3-ospf-1]import-route unr ? 在BRAS中将用户地址池重分布接入OSPF区域
cost Set cost
route-policy Route policy
tag Specify route tag
type Metric type of the imported external routes
Please press ENTER to execute command
[R3-ospf-1]import-route unr type ?
INTEGER<1-2> Type value
BRAS 宽带接入服务器(Broadband Remote Access Server,简称BRAS)
(4)路由聚合
abr上进行聚合
[R2]ospf
[R2-ospf-1]area 1
[R2-ospf-1-area-0.0.0.1]abr-summary 172.16.0.0 255.255.248.0
asbr上进行聚合
[R2]ospf
[R2-ospf-1]asbr-summary 172.18.0.0 255.255.248.0
(5)缺省路由通告
(6)Filter-Policy
(7)对发送的LSA进行过滤
(8)对ABR Type3 LSA进行过滤
(9)设置LSDB中External LSA的最大数量
当路由表中存在到达同一目的地址,且同一路由协议发现的多条路由时,若这几条路由的开销值也相同,那么这些路由就是等价路由,可以实现负载分担。
[R3-ospf-1]maximum load-balancing ?
INTEGER<1-8> Number of paths(设备型号不同,取值范围不同)
当组网中存在的等价路由数量大于maximum load-balancing命令配置的等价路由数量时,按照下面原则选取有效路由进行负载分担:
1)路由优先级:负载分担选取优先级小的路由进行负载分担。
2)接口索引:如果接口的优先级相同,则比较接口的索引,负载分担选取接口索引大的路由进行负载分担。
display mib-index interface
3)下一跳IP地址:如果接口的优先级和接口索引都相同,则比较下一跳IP地址,负载分担选取IP地址大的路由进行负载分担。
配置举例:(OSPF_ECMP_Base)
缺省路由是指目的地址和掩码都是0的路由。
当设备无精确匹配的路由时,就可以通过缺省路由进行报文转发。
区域边界和自治系统边界通常都是由多个路由器组成的多出口冗余备份或者负载分担时,为了减少路由表的容量,可以配置缺省路由,保证网络的高可用性。
两种情况:
由ABR发布Type3 LSA,用来指导区域内路由器进行区域之间报文的转发。
由ASBR发布Type5/7 LSA,用来指导OSPF路由域内路由器进行域外报文的转发。
注意:由于OSPF路由的分级管理,Type3缺省路由的优先级高于Type5或Type7路由。
缺省情况下不会产生缺省路由的,即使它有缺省路由。
必须手工在ASBR上执行default-route-advertise命令,才能产生一个缺省ASE LSA(Type5 LSA)。
不允许Type5 LSA在区域内传播,必须通过ABR学到自治系统外部的路由。
Stub区域的ABR会自动产生一条缺省的Type3 LSA通告到整个Stub区域,ABR通过该缺省路由,
将到达AS外部的流量通过ABR转发出去。
不允许Type5 LSA在区域内传播,也不允许Type3 LSA在区域内传播。
区域内的路由器必须通过ABR学到自治系统外部和其他区域的路由。
Totally Stub区域的ABR会自动产生一条缺省的Type3 LSA通告到整个Stub区域。
ABR通过该缺省路由,将到达AS外部和其它区域的流量通过ABR转发出去。
如果希望到达自治系统外部的路由通过本区域(NSSA区域)的ASBR到达,而其它外部路由通过其它区域出去。此时,会产生Type7 LSA的缺省路由。
如果希望所有的外部路由只通过本区域(NSSA区域)的ASBR到达,
则必须在ASBR上手动执行nssa [default-route-advertise]命令进行配置,
使ASBR产生一条缺省的Type7 LSA,且在ASBR上只有当路由表中存在缺省路由0.0.0.0时,才会产生Type7 LSA的缺省路由。
注意:因为缺省路由只是在本NSSA区域内泛洪,并没有泛洪到整个OSPF域中,
所以本NSSA区域内的路由器在找不到路由之后可以从该NSSA的ASBR出去,
但不能实现其他OSPF域的路由从这个出口出去。
Type7 LSA缺省路由不会在ABR上转换成Type5 LSA缺省路由泛洪到整个OSPF域。
Totally NSSA的ABR会自动向该区域下发使用Type3 LSA描述的缺省路由,
而Totally NSSA的ASBR则不会自动下发缺省路由,
区域内的路由器可以通过ASBR引入的外部路由到达相应的外部网段、也通过ABR下发的缺省路由到达其他网段。
如果选择ASBR作为默认出口,而不是ABR,那么需要让ASBR也下发缺省路由,
此时必须在ASBR上手工执行配置。
将缺省路由通告到普通OSPF区域
[Huawei-ospf-1] default-route-advertise [ [ always | permit-calculate-other ] | cost cost | type type | route-policy route-policy-name [ match-any ] ]
always:无论本机是否存在激活的非本OSPF缺省路由,都会产生并发布一个描述缺省路由的LSA。
permit-calculate-other:本机必须存在激活的非本OSPF缺省路由时才会产生并发布一个缺省路由的LSA,且设备仍然计算来自于其他设备的缺省路由。
type type :指定外部路由的类型。整数形式,取值为1或2。缺省值是2。
route-policy route-policy-name:通过路由策略,实现在路由表中有匹配的非OSPF产生的缺省路由表项时,按路由策略所配置的参数发布缺省路由。
match-any:通过路由策略,实现在路由表中有匹配的路由表项时,按路由策略所配置的参数发布缺省路由。
指定Type3 Summary-LSA的缺省开销值
[Huawei-ospf-1] default-route-advertise summary cost cost
summary:发布指定缺省路由的Type3 LSA。在选用该参数时,必须首先使能VPN,否则路由不能发布。
cost cost:指定该LSA的开销值。整数形式,取值范围是0~16777214。缺省值是1。
通过对OSPF接口出方向的LSA进行过滤可以不向邻居发送无用的LSA,从而减少邻居LSDB的大小,提高网络收敛速度。
命令:
[Huawei-GigabitEthernet0/0/1] ospf filter-lsa-out { all | { summary [ acl { acl-number | acl-name } ] | ase [ acl { acl-number | acl-name } ] | nssa [ acl { acl-number | acl-name } ] } }
all:对除Grace LSA外的所有LSA进行过滤。
summary:对Network Summary LSA(Type3 LSA)进行过滤。
ase:对AS External LSA(Type5 LSA)进行过滤。
nssa:对NSSA LSA(Type7 LSA)进行过滤。
acl acl-number:指定基本访问控制列表编号。整数形式,取值范围是2000~2999。
acl acl-name:指定访问控制列表名称。字符串形式,不支持空格,区分大小写,长度范围是1~32,以英文字母a~z或A~Z开始。
对区域内出、入方向ABR Type3 LSA(Summary LSA)设置过滤条件,只有通过过滤的LSA才能被发布和接收。
命令:
[Huawei-ospf-1-area-0.0.0.1] filter { acl-number | acl-name acl-name | ip-prefix ip-prefix-name | route-policy route-policy-name } export/import
随着网络上路由数量不断增加,一些路由器由于系统资源有限,不能再承载如此多的路由信息,这种状态就被称为数据库超限。
设置OSPF的LSDB中External LSA的最大条目数
[Huawei-ospf-1] lsdb-overflow-limit number
避免数据库超限工作原理:
为了避免数据库超限,可以设置路由器上非缺省外部路由数量的上限。
OSPF网络中所有路由器都配置相同的上限值,只要路由器上外部路由的数量达到该上限,路由器就进入Overflow状态,并同时启动Overflow状态定时器(默认超时时间为5秒),路由器在定时器超过5秒后自动退出Overflow状态。
Overflow状态阶段:
进入Overflow状态时:
删除所有自己产生的非缺省外部路由、启动定时器
处于Overflow状态中:
不产生非缺省外部路由丢弃新收到的非缺省外部路由,不回复确认报文
当Overflow状态定时器超时,检查外部路由数量是否仍然超过上限
不超限:退出Overflow状态
超限:重启定时器
退出Overflow状态时:
删除Overflow状态定时器
产生非缺省外部路由
接收新收到的非缺省外部路由,回复确认报文
准备下一次进入Overflow状态
OSPF支持多进程,在同一台路由器上可以运行多个不同的OSPF进程,互不影响。不同OSPF进程之间的路由交互相当于不同路由协议之间的路由交互。
路由器的一个接口只能属于某一个OSPF进程。
典型应用场景:VPN
创建OSPF进程时,如果指定了VPN实例,那么OSPF进程属于此实例,否则属于全局实例。
命令举例:
[PE] ospf 100 -instance VPN1
[PE-ospf-100] quit
[PE] ospf 200 -instance VPN2
[PE-ospf-200] quit
问题:当有新的设备加入到网络中,或者设备重启时,可能会出现在BGP收敛期间内网络流量丢失的现象。
原因:由于IGP收敛速度比BGP快而造成的。
解决方案:使能OSPF与BGP联动特性
命令:[Huawei-ospf-1] stub-router [ on-startup [ interval ] ]
on-startup [ interval ]:设备在发生重启或故障时保持为Stub路由器的时间间隔。整数形式,取值范围是5~65535,单位是s,缺省值是500s。
如果未配置on-startup参数,则表示该设备始终保持为Stub路由器,即所有来自这个设备的路由条目Cost值均设为65535。
如果配置了on-startup参数,则表示该设备仅在重启或者故障时保持为Stub路由器,保持时间由interval参数决定。此时若未配置interval参数,则使用interval的缺省值500s。
(1)FA(Forwarding Address,转发地址)
报文:Type5 LSA和Type7 LSA
作用:使得OSPF在某些特殊的场景下可以避免次优路径问题。
(2)没有FA引发的问题:次优路径问题(OSPF_FA_Base1)
(3)FA的取值
当ASBR引入外部路由时,若Type5 LSA中的FA字段为0,表示路由器认为到达目的网段的数据包应该发往该ASBR;
若Type5 LSA中的FA字段不为0,表示路由器认为到达目的网段的数据包应该发往这个FA所标识的设备。
当以下条件全部满足时,FA字段才可以被设置为非0:
ASBR在其连接外部网络的接口(外部路由的出接口)上激活了OSPF;
该接口没有被配置为Silent-Interface;
该接口的OSPF网络类型为Broadcast或NBMA;
该接口的IP地址在OSPF配置的network命令指定的网段范围内。
(4)案例:NSSA场景下FA的典型应用(OSPF_FA_Base2)
当NSSA区域中有多个ABR时,系统会根据规则(Router ID大的)自动选择一个ABR作为转换器,将Type7 LSA转换为Type5 LSA,其他ABR不做LSA转换。
GR(Graceful Restart,平滑重启)技术保证了设备在重启过程中转发层面能够继续指导数据的转发,同时控制层面邻居关系的重建以及路由计算等动作不会影响转发层面的功能,从而避免了路由振荡引发的业务中断,保证了关键业务的数据转发,提高了整网的可靠性。
GR是一种冗余容错技术,目前已经被广泛地使用在主备切换和系统升级方面,以保证关键业务的不间断转发。
在R1用户视图下执行:
reset ospf process graceful-restart
Warning: OSPF process will be reset normally if Graceful restart is not enabled.
Continue? [Y/N]:y
通过新增Grace-LSA(Opaque LSA)来支持GR功能。
关键字段:
LS Type=9
TLVs(Type-Length-Value)
Grace Period:Type=1,长度为4字节,表示邻居设备进入GR Helper处理流程的最长保持时间。如果超过这段时间GR Restarter还没有完成GR处理流程,则周边邻居不再担任GR Helper角色。(必须携带)
Graceful Restart:Type=2,长度为1字节,告知邻居设备GR Restarter的重启原因。(必须携带)
GR的原因:
0-Unknown:未知原因导致的GR操作。
1-Software restart:通过命令行主动触发的GR操作。
2-Software reload/upgrade:软件加载或升级导致的GR操作。
3-Switch to redundant control processor:异常主备倒换导致的GR操作。
Restart IP:Type=3,长度为4字节,用来告知发送Grace LSA的接口的IP地址,在网络上需要用该IP地址来唯一标识一台重启设备。
完全GR(Totally GR):指当有一个邻居不支持GR功能时,整个路由器退出GR状态。
部分GR(Partial GR):指当有一个邻居不支持GR时,仅该邻居所关联的接口退出GR,其它接口正常进行GR过程。
有计划GR(Planned GR):指手动通过命令使路由器执行重启或主备倒换。在进行重启或主备倒换前Restarter会先发送Grace-LSA。
非计划GR(UnPlanned GR):与Planned GR的区别在于,路由器是由于故障等原因进行重启或主备倒换,并且在重启或主备倒换前不会事先发送Grace-LSA,而是直接开始主备倒换,在备板正常Up后才进入GR过程。之后的步骤同Planned GR。
GR Restarter:GR重启路由器,指由管理员或故障触发而协议重启的设备,它需要具备GR能力。可以通过配置支持完全GR或者部分GR。
GR Helper:协助重启路由器,即GR Restarter的邻居,能协助重启的GR Restarter保持路由关系的稳定,它也需要具备GR能力。
GR Session:GR会话,是GR Restarter和GR Helper之间的能力协商过程,包括协议重启通告,协议重启过程中的信息交互等。
GR的持续时间:最长不超过1800s,缺省120s,GR成功或失败都可以提前退出,不必等到超时才退出。
对于Planned GR,当Restarter通过命令行执行主备倒换后,首先会向每个邻居发送一个Grace-LSA通知邻居GR的周期、原因等,然后进行主备倒换。
当备板正常Up后,路由器会通知路由管理管理模块进入GR过程。当备板恢复之前使能OSPF的接口后,马上发送一个Grace-LSA,通知邻居自己进入GR,再向每个邻居连续发送5个Grace-LSA。路由器并不老化FIB表项,所以此时可以正常通信。
Restarter与邻居协商进入标准的邻接关系建立过程,
邻居状态机变化过程为:Down —> Init —> Exstart,然后进行DD报文的交换,完成数据库的同步。在进行LSAs的更新时,如果发现Helper发来的LSAs中没有包含指向自己的链路,说明网络拓扑变化或邻居不支持Helper模式,则GR失败,退出GR,进行正常重启。
当与一个邻居达到Full状态后就进行路由计算,更新路由器的路由表,但并不马上更新FIB表项。
如果GR定时器超时,则GR失败,退出GR,进行正常重启。
检查是否和所有邻居都达到Full状态,如果满足,泛洪所有的Grace-LSAs。
正常退出GR。重新向所在的所有区域产生Router-LSA,如果某些接口是DR,则在这些网段重新产生Network-LSA;重新计算路由,
将计算结果下发到路由表中。路由器更新FIB表并删除失效的路由表项。
收到Restarter发送的Grace-LSA后,如果与Restarter交互的LSA没有变化并且通过过滤策略,则进入Helper模式。如果网络拓扑改变、收到的Grace-LSA已老化或者本身处于Restarter状态,均不能进入Helper模式。
Helper向Restarter继续发送Hello报文,即保持自己与邻居邻接状态不变。此时Restarter邻居状态机达到Exstart状态,所以会和Helper同步LSDB。在交换DD报文时,Helper收到Restarter发来的DD报文会产生SeqMismatch事件,因为正常Full状态时是不会收到DD报文的。Helper的邻居状态机由Full降为Exstart状态,开始交换DD报文并同步LSDB。因为Restarter的DD报文没有完整的LSA而Helper具有完整的LSAs,所以Helper的邻居状态机很快经历了下面的状态变化:Exstart→Exchange→Full。Helper发送自己的LSAs同步给Restarter,如果继续收到包含不同GR周期的Grace-LSA,路由器仅更新平滑重启的周期。
如果GR定时器超时,那么退出Helper模式。
当Helper端最后收到泛洪的Grace-LSAs后表明GR完成,正常退出Helper。
Helper在与Restarter连接的网段上重新产生Router-LSA;如果Helper本身是DR,产生Network-LSA。
GR成功:
GR Restartter:在GR超时前与主备倒换前的所有邻居都重新建立好邻居关系;
GR Helper:收到Restarter发送的Age为3600s的Grace-LSA时与Restarter的邻居关系为Full状态;
GR失败:
GR Restartter:
GR超时并且邻居关系尚未完全恢复;
Helper发送的Router-LSA或Network-LSA导致Restarter端进行双向检查时失败;
Restarter接口状态变化;
Restarter收到同一网段上另一台路由器产生的Grace-LSA,同一网段同一时间只能有一台路由器做GR;
Restarter同一个网段的邻居之间存在DR/BDR不一致的情况(即拓扑变化)。
GR Helper:
在邻居关系超时前没有收到Restarter发送的Grace-LSA;
Helper接口状态发生变化;
收到其它路由器发送的与Helper本地数据库不一致的LSA(可以通过配置不进行严格LSA检查排除这种情况);
同一网段上同一时间收到两台路由器发送的Grace-LSA;
与其它路由器邻居关系变化。
使能Opaque-LSA特性
[R1-ospf-1]opaque-capability ?
enable Enable OSPF specific features
Restarter端使能OSPF GR特性,并配置Restarter端GR的会话参数。
[R1-ospf-1]graceful-restart ? //使能OSPF GR特性,并配置Restarter端GR的会话参数
helper-role //设备平滑重启Helper模式
partial //指定路由器支持Partial GR(部分GR),缺省支持Totally GR(全部GR)
period //指定平滑重启的周期,取值范围1~1800s,缺省120s
planned-only //指定路由器仅支持Planned GR(有计划GR),缺省支持Planned GR(有计划GR)和Unplanned GR(非计划GR)
(可选)配置设备平滑重启Helper模式,并配置Helper端GR的会话参数。
[R1-ospf-1]graceful-restart helper-role ?
acl-name //访问控制列表名称
acl-number //基本访问控制列表号
ignore-external-lsa //不检查Type5和Type7类的LSA
ip-prefix //地址前缀列表名称
never //指定设备不支持Helper模式
planned-only //指定路由器仅支持Planned GR(有计划GR),缺省支持Planned GR(有计划GR)和Unplanned GR(非计划GR)
检查OSPF GR的配置结果,查看OSPF GR信息。
[R1]display ospf 1 graceful-restart ?
verbose Display GR information in detail
| Matching output
Please press ENTER to execute command
高可靠性的解决方案包括不间断转发(NSF)和不间断路由(NSR)。
NSF是通过协议的GR机制,支持系统主备倒换时,转发业务不中断。
NSR是通过协议备份机制,实现主备倒换时控制平面(路由)和转发平面(业务)均不中断。
原因:
邻居和拓扑信息不丢失;
邻居关系不中断。
优点:
不依赖也不影响对端设备,没有互通问题;
路由的收敛速度要比NSF快。
在主备倒换端,系统支持NSR和GR两种不同的高可靠性保护;
但NSR和GR是互斥的,即:对于一个特定协议,系统倒换后,只能采用NSR或GR两种处理方式的一种;
设备在部署NSR时,仍然可以支持GR Helper的功能,以支持自己的邻居GR过程,最大可能的保证用户全网网络节点业务的高可靠性。
当网络对丢包的要求、对路由收敛的速度的要求都比较低时,可以使用NSF功能;
当网络对丢包的要求、对路由收敛的速度的要求都比较高时,可以使用NSR功能。
系统故障触发主备倒换;
软件升级或系统维护时网络管理员手动触发主备倒换。
包含以下3个过程
1)批量备份:
NSR功能使能后,备板重启时,主用主控板将路由信息和转发信息批量备份到备用主控板上。批量备份过程在实时备份过程之前进行,此时NSR无法实施主备倒换过程。
2)实时备份:
当批量备份过程结束后,系统进入实时备份阶段。任何在控制平面和转发平面的改变都将实时从主用主控板备份到备用主控板上。在该阶段,备用主控板能够随时代替主用主控板工作。
3)主备倒换:
在已经完成备份的NSR系统主用主控板发生故障时,备用主控板会通过硬件状态感知到主用主控板故障,并成为新的主用主控板。备用主控板升主后,该单板会切换接口板的报文上送通道。由于倒换时间足够短,路由协议在主备切换的过程中不会和邻居节点断连。
使能NSR功能
[Huawei] switchover mode { nonstop-routing | nonstop-forwarding }
检查配置结果
[Huawei] display switchover mode
[Huawei] display ip routing-table [ -instance -instance-name ] [ verbose ]
[Huawei] display fib [ slot-id ] [ -instance -instance-name ] [ verbose ]