拓扑

步骤
- R2和R3 的G0/1 配1个OSPF下的Passive-Interface,因为如果不配置的话,R2和R3都会对外发送OSPF Hello Packet,然后通过Switch收到彼此的Hello,进而发现Area 不匹配,报错 —— 虽然不影响本实验
- 所有Router 配1个 no ip domain-lookup
默认情况
- 查看 R1 路由表,走R2的话类型是 intra area,Metric 是2,代号是 O
- 我们到R2调整G0/1接口Cost到最高65535, ip ospf cost 65535,然后回到R1,发现路由还是走R2.可见 intra area (O) 类型的路由优先级最高,即同Area


断掉R2
- 到R2上关闭OSPF进程,发现R1 的路由开始走R3,类型变为 inter area,代号是 O IA

断掉R3
- 到R3上关闭OSPF进程,发现R1 的路由变成走R4(由R9宣告) 和 R6 的2条 ECMP 等价路由,类型为 extern 1,代号为 E1

1. 为什么 metric 变成了22 ,因为 —— 在R9 和 R11 上做redistribute 时,都指定了 metric-type 类型为1,即需要计算外部(R9或R11 到 Switch)的metric,所以是 20 + 1 + 1 = (R9 到 Switch)+ (R4到R9)+(R1到R4)—— 没有证据表明R9到Switch 物理链路的Metric是20,看起来似乎是因为 redistribute 引入了20. 我们来验证下。
1. 关闭R9或R11 任意1个上的ospf
2. 到R11上 no 掉原有的 redistribute,改为 redistribute connected metric-type 1 metric 40,然后回到R1上查看路由,发现到99.99.99.0 网络的Metric变成了42 —— 这也证明了我们的猜想是正确的,redistribute 如果不做指定,默认的 metric 值是20
2. 按照RFC3101,应该优选N1(走R6 的路径),为什么没有,因为 —— N1是R6和R11之间的类型,但R6 是 NSSA的 ABR,所以会执行 Type7 到 Type5 的翻译,就导致从R1看的话,到R6 也是 E1. 在R6 上查看Type7 LSA

3. 我们在R11 上把metric 改成了40,回到R1看,只剩下1条走R4 - R9的metric 为22 的路由
4. 此时从R6看,他可以有2条路径到99.99.99.0,我们可以来比较下N1和E1 谁有更高优先级
1. 先把R11 的redistribute metric 改回默认
2. 1条是E1,R6 ——R1——R4——R9(E1是由R4宣告给R1,R1又宣告给同在Area0 的R6)
3. 1条是N1,R6——R11(N1是由R11宣告给R6)
4. 此时我们在R6上查看,实际走的是N1 —— 那此时看走N1 的Metric是 21,而假如走E1的话Metric是23,是否由可能是因为21 < 23,所以走了N1这条路?—— 我们来将R11 的redistribute metric 改为22,让走N1和E1的 Metric 变得一样
5. 回到R6 再看,即使Metric变成了23,N1和E1 一样,还是走的N1. 到这里为止我们验证了2种情况
1. E1 Metric > N1 Metric,选择N1
2. E1 Metric = N1 Metric,选择N1
6. 我们还需要验证 E1 Metric < N1 Metric 的情况,再次修改R11 的redistribute metric 改为220,此时我们可以看到路由改走了即E1(16.16.16.1 是R1接口IP)
7. 详见下图,所以完整的情况是
1. E1 Metric > N1 Metric,选择N1
2. E1 Metric = N1 Metric,选择N1
3. **<font style="color:#E8323C;">E1 Metric < N1 Metric,选择E1 —— 这是因为Cisco的路由器上默认开启了RFC1583的兼容,导致规则变为了:metric 相同时,选择N1,metric不同时,metric 小的胜出</font>**
1. **<font style="color:#E8323C;">我们可以关闭RFC1583,在R6上:</font>**no compatible rfc1583,这样看到的效果就是,即使E1的metric 较N1小,也还是走N1,**<font style="color:#E8323C;">这样看到的效果就和书本给出的完全一致。</font>**
4. **<font style="color:#E8323C;">E2 和 N2 也是同样的结论 —— 只是他们不受 RFC1583 的影响</font>**

断掉R4 和 R6
- 现在关掉R4 和 R6 上的OSPF,我们来看 R5 和 R7上的 E2和N2.此时在R1上可以看到走R5和R7以及R8 的3条等价路由,类型是 extern 2,代号 O E2

1. R13 有2条物理链路,分别在宣告Type7 和 Type5,根据前面学到的规则,1个NSSA Router 如果同时在宣告Type7 和 Type5,那么Type7 中的P-bit 为0,NSSA ABR不会对其进行翻译 —— 注意和R7的区别
2. 但是R8 还有到R13 的Type5 链路,所以R1 实际会收到3个E2
1. 1个是R5 直接宣告的
2. 1个是R7 将Type7 翻译的
3. 1个是R8 的一部分直接宣告的


3. 我们把R8 上的OSPF关掉,来观察R5 和 R7 的对比。 在R7 上 show ip ospf database external
4. E2 就是不计算OSPF 区域内部的Cost,就只剩下 redistribute 导致的 Metric 20
5. 可以调整R12 的Cost,对比R7上的路由选择。结论一致:metric 相同时,优选N2. Metric不同时,谁的metric小 选谁。