问题描述
在 Area-0 中,环境信息如下:
1)R2、R3、R4 运行 OSPF 协议;
2)R2 和 R3 的 GE0/0/1 接口都激活 OSPF,并建立邻接关系;
3)R2/R3 与 R1 并不建立 OSPF 邻接关系;
1)R2 配置到达 10.1.1.1/32 的静态路由,下一跳为 R1.GE0/0/1(10.1.123.1);
2)R2 将静态路由引入 OSPF,产生 LSA-Type-5 在区域内泛洪。
3)R3 接收到 R2 产生的 LSA-Type-5,计算出到达 10.1.1.1/32 的外部路由,并且将路由的下一跳指定为 R2(10.1.123.2)。
子 OSPF Area 内的路由器如 R4 到达 10.1.1.1/32 的路径是 R4-R3-R2-R1,该路径是次优路径。
解决方案
在 OSPF 中,LSA-T5 和 LSA-T7 中包含一个特别的字段 FA(Forwarding Address,转发地址),参考其报文格式。
FA 的引入,使得 OSPF 在某些特殊的场景下可以避免次优路径问题。
原理简述
当 ASBR 引入外部路由时:
1)如果 FA==0.0.0.0,那么数据包将被转发到始 发路由的 ASBR 上,即 Router 认为到达目的网段的数据包应该发往自己,通过自己进行转发;
2)如果 FA!=0.0.0.0,那么针对到达所通告的目的网络的数据包,应该被转发到 FA 地址;即表示 Router 认为到达目的网段的数据包应该发往这个 FA 所标识的设备;
注意,FA 是针对 LSA-T5 和 LSA-T7 才存在的,即针对外部路由时才会出现该特征;
当 R2 向 OSPF Area 内通告到达 10.1.1.1/32 的外部路由时,为对应的 LSA-T5.FA==10.1.123.1(即为其自己到达该外部路由的下一跳);
当 R3 收到该 LSA 后,计算到达 10.1.1.1/32 的路由时,发现 FA!=0.0.0.0,所以它认为到达目标网络 10.1.1.1/32 的下一跳为 FA 所指定的地址(10.1.123.1);
FA 的取值
当以下条件全部满足时,FA 才可以被设置为非 0:
1)ASBR 在其连接外部网络的接口(外部路由的出接口)上激活 OSPF(示例 R2.GE0/0/1);
2)该接口没有被配置为 Silent-Interface;
3)该接口的 OSPF Network Type 为 Broadcast 或 NBMA;(鉴于该次优路径问题出现在 MA 网络,而 P2P 不会出现该问题)
4)该接口的 IP-ADDR 在 OSPF 配置的 network 命令指定的网段范围内(并进行通告);
5)到达 FA 的路由必须是 OSPF Area 的内部路由或区域间路由,这样接收到该外部 LSA 的路由器才能够加载该 LSA 进入路由表(即有效)。加载的外部 LSA 生成的路由条目下一跳与到达 FA 的下一跳相同。
前面说的这么多条件,我们认为这种情况可以简单的概括为:
1)Router 向当网络内通告路由,但是到达该外部路由并不需要经过 Router,”Router 代为通告“,Router 也意识到没必要通过它进行到达,
2)所有 Router 就把该外部路由的下一跳作为 FA 地址,进行通告。
3)Router 是如何意识到必要通过它进行到达该外部路由?因为 Router 在向网络中通告外部路由时,它发现被通告网络就是该外部路由下一跳的网络。
在 NSSA 中,FA 的典型应用
背景知识
在 NSSA 中,LSA-T7 转化为 LSA-T5:
1)为了将 NSSA 引入的外部路由发布到其它区域,需要把 LSA-T7 转化为 LSA-T5 以便在整个 OSPF Network 中通告;
2)缺省情况,当有多个 ABR 时,转换路由器是 NSSA Area 中 Router ID 最大的 ABR,将 LSA-T7 转换为 LSA-T5,其他 ABR 不做 LSA 转换;
3)LSA.Header.Options.P-bit(Propagate bit)用于告知转化路由器该条 LSA-T7 是否需要转化为 LSA-T5。只有 P-bit==1&&FA!=0 的 LSA-T7 才能转化为 LSA-T5;
4)ASBR 产生的 LSA-T7 缺省路由不会置位 P-bit,所以不会进行 (LSA-T7)=>(LSA-T5);
注意:所有的 OSPF LSA 有相同的 LSA.Header,P-bit 在 LSA.Header.Options 中;
如图所示,如果没有 FA 的存在:
1)鉴于 Router-ID(R3) > RouterID(R2),所以 R3 将执行 (LSA-T7)=>(LSA-T5) 的动作,导致 R1 必须经由 ABR(R3)到达目的网络;
2)这样,流量便会被引导到低带宽链路,即 R1-R3-R4-R5;
如图所示:
1)R5 引入直连外部路由,且将 FA 设为自己访问目的网段 10.1.5.0/24 的地址:10.1.45.5;
2)R3 执行 (LSA-T7)=>(LSA-T5),继续携带 FA:10.1.45.5;
3)R1 收到后,会在自己的 OSPF RIB 中查询到达 FA 的路由,发现在 OSPF RIB 中能够找到到达 FA 的路由,就使用到达该 FA 的下一跳地址作为这条外部路由的下一跳地址;
4)所以,R1 最终会通过 R1-R2-R4-R5 路径,访问目的 10.1.5.0/24 网段;
Q:如何设置 FA?
A:WIP