OSPF Forwarding address 对路由选路的影响

摘要

本文介绍了 OSPF 协议中对于 AS-External-LSA 中的 Forwarding Address 如何处理以及 Forwarding Address 如何影响OSPF 路由选路包括 Forwarding Address 可能导致的次优路径问题。

介绍

Forwarding Address 是OSPF AS-External-LSA(以下简称5类LSA)中携带的标识外部转发地址的信息。通常情况下Forwarding Address 填写为 0.0.0.0,通告给其他OSPF 路由器达到这条外部路由需要经过自己,其他路由器通过OSPF路由计算可以得知如何到达该ASBR。在满足一定条件的情况下 Forwarding Address 可以填写为非零的IP地址,其他路由器如果存在到达该IP地址的合法路由,则可以通过该地址到达目的地而不一定要经过 ASBR,从而达到路径优选目的。

Forwarding Address 路由合法性

如果 OSPF 路由器通过 Forwarding Address(以下简称FA)计算到达外部路由的路径,那么必须确保自身的路由表中存在到达该 FA 的 OSPF AS 内部路由(OSPF intra-area route or OSPF inter-area route),否则该外部路由无效。

Forwarding Address 填写原则

在满足如下所有条件的情况下 FA 设置为非 0.0.0.0

  • OSPF在ASBR的下一跳接口被启动
  • ASBR的下一跳接口没有被设置为被动接口
  • ASBR的下一跳接口不是OSPF P2P或P2MP类型的

除此之外,其它情况 FA 都填为 0.0.0.0

通过 Forwarding Address 实现路径优选

考虑如下组网:

OSPF Forwarding address 对路由选路的影响

Router A同Router B、Router C 通过多点访问的网络相连,Router A 同 Router B 之间运行的是非OSPF的路由协议,Router B、Router C、Router D 之间运行 OSPF 路由协议,假设 Router B 的 2.2.2.1 接口和 Router C 的2.2.2.3接口都没有启动OSPF路由协议,Router B 作为 ASBR 将 Route a 引入至 OSPF 域,在发布 Route a 时 FA 将填写为 0.0.0.0,Router D 在访问a时将查找到达 ASBR Route B 的路由,最终将通过 Router C-Router B-Router A 访问 a。如果在 Router B 和 Router C 的2.2.2.1及2.2.2.3接口启动 OSPF 协议,那么 Router B 同样作为 ASBR 发布 a 路由的5类 LSA,这时 Router B 在填写 FA 时已经满足了非零 FA 的填写条件(见上文),因此 FA 填写为2.2.2.2,Router D 在访问 a 网段,则会直接计算到达2.2.2.2的路由,最终通过Router C直接到达Router A,实现了路径优选的目的。那么如果 Router C 的2.2.2.3网段并没有启动 OSPF,Router D 如何访问 a网段呢?这时 Router B 发布 a 时依然将FA填写为2.2.2.2,Router D 依然会计算到达 2.2.2.2 的 OSPF AS 内部路由,计算结果表明可以通过 Router B 到达2.2.2.2,因此最终的转发路径依然是Router C-Router B-Router A。

理解 Forwading Address 路由合法性

如果 OSPF 路由器在计算到达 FA 地址的路径时无法找到OSPF区域内或区域间的路由,那么相应的外部路由将不能被加入到路由表中,导致路由黑洞。

考虑如下组网:

OSPF Forwarding address 对路由选路的影响

Router A 同 Router B、Router C 运行非 OSPF 路由协议,Router B 作为 area N 和 area 0 的 ABR 出于特殊原因不能向 area 0 发布2.2.2.0网段的路由信息,因此做了汇聚且不发布。Router C 通过 Router A 学习到2.2.2.0的外部路由,并且发布到OSPF中。Router B 通过 Router A 学习到外部路由 Route a 并且注入 OSPF 的时候将 FA 填写为2.2.2.2。位于 area 0 中的Router D 能否到达 Route a 呢?Router D 收到 Route a 的5类 LSA,发现 FA 地址是2.2.2.2因此查找路由表中是否存在到达2.2.2.2的 AS 内部路由,因为 Route C 发布了2.2.2.2的外部路由,因此这时 Router D 是知道如何到达2.2.2.2的,但是由于这是一条外部路由,而不是 AS 内部路由,与FA路由合法性相背,因此 Router D 最终还是不能将 Route a 加入到自己的路由表中,导致了路由黑洞。

Forwarding Address 导致次优路径

Forwarding Address 的设置本意是希望路由器能够选择一条最快捷的路径到达目的地,但是有时设置不当也可能导致次优路径的发生。

考虑如下组网:

OSPF Forwarding address 对路由选路的影响

Router B、Router C、Router D、Router E 运行 OSPF 协议,并且 Router B 在2.2.2.1接口上没有启用 OSPF,Router C 在2.2.2.3接口上开启 OSPF。Router A 和 Router B、Router C 通过以太网相连,Router B 和 Router C 通过外部路由学习到路由 Route a,并且都作为 ASBR 将这条路由注入到 OSPF 域中。对于 Router E,他将学习到两条关于Route a 的5类 LSA,所不同的是 Router B 发布的 LSA 中 FA 地址为全零,而 Router C 发布的 LSA 中 FA 地址为2.2.2.2 Router E 查找路由表后发现自己有到达2.2.2.2的 AS 内部路由,也有到达 ASBR Router B 的路由,因此两条路由都是有效路由,通过比较路径 cost,Router E 发现到达2.2.2.2的 cost 为30而到达 Router B 的 cost 为25,因此 Router E 选择了到达 Router B 的路径。但是从网络实际拓扑来看,Router E 选择了一条次优路径。

NSSA中Forwarding Address的处理

对于 NSSA 区域中 ASBR 产生的7类 LSA,如果需要转换为5类 LSA 发布到其他 OSPF 区域,那么 FA 必须要填写非零的IP地址,RFC3101 对此进行了明确要求:

NSSA AS boundary routers may only originate Type-7 LSAs into NSSAs.。An NSSA internal AS boundary router must set the P-bit in the LSA。header’s option field of any Type-7 LSA whose network it wants advertised into the OSPF domain’s full transit topology.  The LSAs of these networks must have a valid non-zero forwarding address.

对于7类LSA中FA的填写分为两种情况:

  • 如果发布该7类 LSA 的 ASBR 满足上文提到的非零 FA 填写规则,那么就按照该规则填写
  • 如果发布该7类 LSA 的 ASBR 不满足上述条件,那么需要从该路由器上启用 OSPF 协议的接口中选择一个进行填写

对于情况2虽然 RFC3101 对 FA 的填写进行了要求,但是并未明确如何填写该 FA。在某些组网环境中由于该 FA 地址的填写不当,有可能会产生次优路由。

考虑如下组网:

OSPF Forwarding address 对路由选路的影响

Router A、Router B、Router C 形成NSSA区域,Router A 引入外部路由 Route a,通过7类 LSA 通告给 Router B 和 Router C,因为 RFC 并未明确要求这种情况下该7类 LSA 中的 FA 如何填写,Router A 可能会选择 Int 1 的 IP 地址填写 FA,那么对于 Router C 来讲,到达 Int 1 有两条路径,一条是通过 RouterA 到达路径 Cost 为100,令一条是通过 Router B 到达路径Cost 为80,因此 Router C 将选择通过 Router B 的路径,很明显它实际上选择了一条次优路径。

如果在填写 FA 时,使用 Loopback 接口地址进行填写,可以解决上述问题。

参考资料:

RFC 2328 (OSPF)

RFC 3101 (NSSA)

原文出处:华为案例库

原文链接:https://support.huawei.com/enterprise/zh/knowledge/EKB1100000643

---------------------------------------------------------------------

本站原创文章仅代表作者观点,不代表运维社区立场。所有原创内容版权均属运维社区,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用,转载须注明来自运维社区并附上本文链接。 本站中所有编译类文章仅用于学习和交流目的,编译工作遵照 CC 协议,如果有侵犯到您权益的地方,请及时联系我们。

(4)
上一篇 2022年6月12日 下午3:58
下一篇 2022年6月13日 下午2:36

相关推荐

发表回复

您的电子邮箱地址不会被公开。