问题描述
在 OSPF Networking 中,区域边界和自治系统边界通常都是由多个路由器组成的多出口冗余备份或者负载分担。
解决方案
通过配置缺省路由(default route),能够减少路由表的容量,并保证网络的高可用性(缺省路由屏蔽网络抖动带来的重新收敛,所以提高可靠性)。
应用场景
针对 OSPF Default Route 特性,通常应用于下面两种情况:
1)由 ABR 发布 LSA-TYPE-3 Default Route,用来指导区域内路由器进行区域之间报文的转发;
2)由 ASBR 发布 LSA-TYPE-5 Default Route 或 LSA-TYPE-7 Default Route,用来指导 OSPF 路由域内路由器进行域外报文的转发;
由于OSPF路由的分级管理,缺省路由的优先级:Type3 > Type5/Type7;
区域类型 and 缺省路由
关系概览
普通区域
缺省情况,普通 OSPF 区域内的 OSPF Router 是不会产生缺省路由的,即使它有缺省路由。
当该 Router 需要向 OSPF Area 中发布缺省路由时,需要手工执行 default-route-advertise 命令;
当配置完成后,路由器会产生一个缺省 ASE-LSA(LSA-TYPE-5),并且通告到整个 OSPF 自治系统中;
Stub Area
在 Stub Area 中,不允许 LSA-TYPE-5 传播,但允许 LSA-TYPE-3 传播。
但是,在 Stub Area 内的路由器只能通过 ABR 学到自治系统外部的路由,否则无法进行通信。
在 Stub Area 中:
1)ABR 会自动产生一条缺省的 LSA-TYPE-3 通告到整个 Stub Area;
2)通过该缺省路由,ABR 将到达 AS 外部的流量吸引到自己这里,然后通过该 ABR 转发出去;
Totally Stub Area
在 Totally Stub Area 中,既不允许 LSA-TYPE-5 在区域内传播,也不允许 LSA-TYPE-3 在区域内传播。
但是,在 Totally Stub Area 内的路由器只能通过 ABR 学到自治系统外部和其他区域的路由;
在 Totally Stub Area 中:
1)ABR 会自动产生一条缺省的 LSA-TYPE-3 通告到整个 Totally Stub Area;
2)通过该缺省路由,ABR 将到达 AS 外部的流量吸引到自己这里,然后通过该 ABR 转发出去;
NSSA
在 NSSA 中,如果希望通过 NSSA/ASBR 到达 AS-External-Route,而其它外部路由通过其它区域出去:
1)此时 ABR 会产生一条 LSA-TYPE-7 的缺省路由(这也是 NSSA 默认行为),通告到整个 NSSA 内;
2)这样 AS-External-Route 通过 NSSA/ASBR 到达,其它路由都通过 NSSA/ABR 到达其它区域,再进行相关转发;
3)这种情况下,在 ABR 上无论其 RIB 中是否存在缺省路由,其都会产生 LSA-TYPE-7 的缺省路由;
在 NSSA 中,如果希望所有的 AS-External-Route 只通过 NSSA/ASBR 到达:
1)则必须在 ASBR 上手动执行 nssa [default-route-advertise] 命令进行配置,
2)该命令使 ASBR 产生 LSA-TYPE-7 缺省路由,通告到整个 NSSA 内,这样所有的外部路由将通过 NSSA/ASBR 到达;
3)这种情况下,在 ASBR 上,只有当其 RIB 中存在缺省路由时,才会产生 LSA-TYPE-7 的缺省路由;
补充说明:
1)鉴于这些缺省路由仅在本 NSSA 内泛洪,并没有泛洪到整个OSPF域中,所以本 NSSA 区域内的路由器在找不到路由时,可以从该 NSSA/ASBR 出去,
2)但不能实现其他 OSPF 域的路由从这个出口出去。LSA-TYPE-7 缺省路由不会在 ABR 上转换成 LSA-TYPE-5 缺省路由泛洪到整个 OSPF 域;
Totally NSSA
Totally NSSA/ABR 会自动向该区域下发使用 LSA-TYPE-3 描述的缺省路由,而 Totally NSSA 的 ASBR 则不会自动下发缺省路由。
因此,在该场景下,对于区域内的路由器而言,可以通过 ASBR 引入的外部路由到达相应的外部网段、通过 ABR下发的缺省路由到达其他网段。
如果希望 Totally NSSA 内的路由器选择 ASBR 作为默认出口,而不是 ABR,那么需要让 ASBR 也下发缺省路由,此时必须在 ASBR 上手工执行配置。
配置方法
注意: import-route (OSPF)命令不能引入外部路由的缺省路由。 当需要引入其他协议产生的缺省路由时,必须在 ASBR 上配置 default-route-advertise 命令,以发布缺省路由到整个普通OSPF区域。 OSPF 路由域中在通告缺省路由前,会比较缺省路由的优先级。 如果在某OSPF设备上同时配置了静态缺省路由,要使OSPF通告的缺省路由加入到当前的路由表中,则必须保证所配置的静态缺省路由的优先级比OSPF通告的缺省路由的优先级低。 // ----------------------------------------------------------------------------- // 将缺省路由通告到普通OSPF区域 缺省情况下,在普通OSPF区域内的OSPF设备不产生缺省路由。 [ospf-1] default-route-advertise [ [ always | permit-calculate-other ] | cost cost | type type | route-policy name [ match-any ] ] always:无论本机是否存在激活的非本 OSPF 缺省路由,都会产生并发布一个描述缺省路由的LSA。 1)如果配置 always 参数,设备不再计算来自其他设备的缺省路由。 2)如果没有配置 always 参数,本机 RIB 中必须有激活的非本OSPF缺省路由时才生成缺省路由的LSA。 ASBR已经有缺省路由,执行default-route-advertise命令,将在整个OSPF区域中通告缺省路由0.0.0.0。 ASBR没有缺省路由,执行default-route-advertise命令时按照以下需求选择是否配置always参数。 如果配置always参数,无论ASBR是否有缺省路由都将在整个OSPF区域中通告缺省路由0.0.0.0,并且不再计算来自其他设备的缺省路由。 如果没有配置always参数,ASBR的路由表中必须有激活的非OSPF(BGP除外)缺省路由时才生成缺省路由的LSA。 permit-calculate-other:本机必须存在激活的非本OSPF缺省路由时才会产生并发布一个缺省路由的LSA,且设备仍然计算来自于其他设备的缺省路由。 type type :指定外部路由的类型。整数形式,取值为1或2。缺省值是2。 1)1:第一类外部路由 2)2:第二类外部路由 route-policy route-policy-name:通过路由策略,实现在路由表中有匹配的非OSPF产生的缺省路由表项时,按路由策略所配置的参数发布缺省路由。 字符串形式,区分大小写,不支持空格,长度范围是1~40。当输入的字符串两端使用双引号时,可在字符串中输入空格。 match-any:通过路由策略,实现在路由表中有匹配的路由表项时,按路由策略所配置的参数发布缺省路由。 使用带match-any参数的路由策略时,如果有多条路由通过策略,选取最优者来生成缺省LSA。路由通过策略时,选取最优者的原则按照优先级从高到低的顺序如下: 1)路由设置了type的优先于未设置的,如果都设置了type,值越小越优先。 2)路由设置了cost的优先于未设置的,如果都设置了cost,值越小越优先。 3)路由设置了tag的优先于未设置的, 如果都设置了tag,值越小越优先。 // ----------------------------------------------------------------------------- // 指定Type3 Summary-LSA的缺省开销值 [ospf-1] default-route-advertise summary cost cost summary:发布指定缺省路由的Type3 LSA。在选用该参数时,必须首先使能VPN,否则路由不能发布。 cost cost:指定该LSA的开销值。整数形式,取值范围是0~16777214。缺省值是1。