类似海贼王之魅力无限:在一个Stub区域内存在两个ABR,他们都产生默认路由。那么会不会出现由于互指默...

来源:百度文库 编辑:偶看新闻 时间:2024/04/29 17:41:37
在一个Stub区域内存在两个ABR,他们都产生默认路由。那么会不会出现由于互指默认路由而产生环路?

先上图描述一下这个环境:

手画的比较简陋,大概能明白就行。
Area 1目前是Stub区域并且存在两个ABR。首先说明的是一般在多个ABR的情况下不太建议做Stub,尤其是Totally Stubby,这样会有次优路径的问题,不过还是允许配置的,这样就有种可能,R2和R4这两个ABR会通告Default路由下来,那么事实上R2和R4也会收到彼此通告的默认路由。这里,如果R2和R4处理不到位,那么很可能出现路由环路。但是事实上路由器对于这种情况会不会这样做呢?我们还原一下。
R2目前的配置:
  1. router ospf 1
  2. router-id 2.2.2.2
  3. log-adjacency-changes
  4. area 1 stub
  5. network 10.0.0.2 0.0.0.0 area 0
  6. network 10.0.12.0 0.0.0.255 area 0
  7. network 10.0.23.0 0.0.0.255 area 1
复制代码R4:
  1. router ospf 1
  2. router-id 4.4.4.4
  3. log-adjacency-changes
  4. area 1 stub
  5. network 10.0.0.4 0.0.0.0 area 0
  6. network 10.0.14.0 0.0.0.255 area 0
  7. network 10.0.34.0 0.0.0.255 area 1
复制代码Stub的配置已经完成,而邻居关系正常建立,现在看看R3的路由表:
  1. R3#show ip route ospf 
  2. Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
  3.        D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
  4.        N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
  5.        E1 - OSPF external type 1, E2 - OSPF external type 2
  6.        i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
  7.        ia - IS-IS inter area, * - candidate default, U - per-user static route
  8.        o - ODR, P - periodic downloaded static route, + - replicated route

  9. Gateway of last resort is 10.0.34.4 to network 0.0.0.0

  10. O*IA  0.0.0.0/0 [110/65] via 10.0.34.4, 00:03:23, Serial1/3
  11.                 [110/65] via 10.0.23.2, 00:03:33, Serial1/2
  12.       10.0.0.0/8 is variably subnetted, 10 subnets, 2 masks
  13. O IA     10.0.0.1/32 [110/129] via 10.0.34.4, 00:03:23, Serial1/3
  14.                      [110/129] via 10.0.23.2, 00:03:33, Serial1/2
  15. O IA     10.0.0.2/32 [110/65] via 10.0.23.2, 00:03:33, Serial1/2
  16. O IA     10.0.0.4/32 [110/65] via 10.0.34.4, 00:03:23, Serial1/3
  17. O IA     10.0.12.0/24 [110/128] via 10.0.23.2, 00:03:33, Serial1/2
  18. O IA     10.0.14.0/24 [110/128] via 10.0.34.4, 00:03:23, Serial1/3
复制代码这个信息很好的说明了两个ABR都在向下发送default-route。那么既然两个ABR都在发送Default-route,那么这个default-route在两个ABR上看到的是什么现象呢?
  1. R2#show ip route ospf
  2. Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
  3.        D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
  4.        N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
  5.        E1 - OSPF external type 1, E2 - OSPF external type 2
  6.        i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
  7.        ia - IS-IS inter area, * - candidate default, U - per-user static route
  8.        o - ODR, P - periodic downloaded static route, + - replicated route

  9. Gateway of last resort is not set

  10.       10.0.0.0/8 is variably subnetted, 10 subnets, 2 masks
  11. O        10.0.0.1/32 [110/65] via 10.0.12.1, 00:05:18, Serial1/2
  12. O        10.0.0.3/32 [110/65] via 10.0.23.3, 00:04:48, Serial1/3
  13. O        10.0.0.4/32 [110/129] via 10.0.12.1, 00:05:18, Serial1/2
  14. O        10.0.14.0/24 [110/128] via 10.0.12.1, 00:05:18, Serial1/2
  15. O        10.0.34.0/24 [110/128] via 10.0.23.3, 00:04:48, Serial1/3
复制代码
  1. R4#show ip route ospf
  2. Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
  3.        D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
  4.        N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
  5.        E1 - OSPF external type 1, E2 - OSPF external type 2
  6.        i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
  7.        ia - IS-IS inter area, * - candidate default, U - per-user static route
  8.        o - ODR, P - periodic downloaded static route, + - replicated route

  9. Gateway of last resort is not set

  10.       10.0.0.0/8 is variably subnetted, 10 subnets, 2 masks
  11. O        10.0.0.1/32 [110/65] via 10.0.14.1, 00:05:34, Serial1/0.14
  12. O        10.0.0.2/32 [110/129] via 10.0.14.1, 00:05:34, Serial1/0.14
  13. O        10.0.0.3/32 [110/65] via 10.0.34.3, 00:05:14, Serial1/3
  14. O        10.0.12.0/24 [110/128] via 10.0.14.1, 00:05:34, Serial1/0.14
  15. O        10.0.23.0/24 [110/128] via 10.0.34.3, 00:05:14, Serial1/3
复制代码厉害了,这两个ABR倒是事不关己高高挂起,一条默认路由也看不见。证明一点,互指Default,在两个ABR上不会出事。

不过,这个原因是什么?有什么依据?
我们简单分析一下Database
首先看看R3:
  1. R3#show ip ospf database summ 0.0.0.0

  2.             OSPF Router with ID (3.3.3.3) (Process ID 1)

  3.                 Summary Net Link States (Area 1)

  4.   Routing Bit Set on this LSA in topology Base with MTID 0
  5.   LS age: 428
  6.   Options: (No TOS-capability, DC, Upward)
  7.   LS Type: Summary Links(Network)
  8.   Link State ID: 0.0.0.0 (summary Network Number)
  9.   Advertising Router: 2.2.2.2
  10.   LS Seq Number: 80000001
  11.   Checksum: 0x75C0
  12.   Length: 28
  13.   Network Mask: /0
  14.         MTID: 0         Metric: 1 

  15.   Routing Bit Set on this LSA in topology Base with MTID 0
  16.   LS age: 422
  17.   Options: (No TOS-capability, DC, Upward)
  18.   LS Type: Summary Links(Network)
  19.   Link State ID: 0.0.0.0 (summary Network Number)
  20.   Advertising Router: 4.4.4.4
  21.   LS Seq Number: 80000001
  22.   Checksum: 0x39F4
  23.   Length: 28
  24.   Network Mask: /0
  25.         MTID: 0         Metric: 1
复制代码请注意,每个LSA上面都携带了一个Routing Bit,而且这两个LSA都设置了Routing Bit。注意OSPF对于Type-3的LSA,如果未设置Routing-bit,这个3类LSA是无法加入到路由表中的。
在看看R2这个ABR的LSDB:
  1. R2#show ip ospf database summ 0.0.0.0

  2.             OSPF Router with ID (2.2.2.2) (Process ID 1)

  3.                 Summary Net Link States (Area 1)

  4.   LS age: 514
  5.   Options: (No TOS-capability, DC, Upward)
  6.   LS Type: Summary Links(Network)
  7.   Link State ID: 0.0.0.0 (summary Network Number)
  8.   Advertising Router: 2.2.2.2
  9.   LS Seq Number: 80000001
  10.   Checksum: 0x75C0
  11.   Length: 28
  12.   Network Mask: /0
  13.         MTID: 0         Metric: 1 

  14.   LS age: 509
  15.   Options: (No TOS-capability, DC, Upward)
  16.   LS Type: Summary Links(Network)
  17.   Link State ID: 0.0.0.0 (summary Network Number)
  18.   Advertising Router: 4.4.4.4
  19.   LS Seq Number: 80000001
  20.   Checksum: 0x39F4
  21.   Length: 28
  22.   Network Mask: /0
  23.         MTID: 0         Metric: 1
复制代码很有意思的是确实这个LSA通告到了区域内的所有路由器,但是很明显这个ABR并未对这条LSA设置Routing-Bit,故这条路由虽然存在于数据库中,但未加入路由表,这样由静态路由产生的环路就不会出现了。

这里ABR有个约定,如果自己是个ABR而同时它又收到同区域另一个ABR的Type-3的关于Default-route的LSA,那么这个LSA不会设置Routing-bit。不只如此,如果这个ABR收到了另一个ABR的非默认路由的LSA,它也不会使用,不过这个原因在于区域内的路由由于区域间的路由。以R4为例:
  1. R4#show ip ospf database 

  2.             OSPF Router with ID (4.4.4.4) (Process ID 1)

  3.                 Router Link States (Area 0)

  4. Link ID         ADV Router      Age         Seq#       Checksum Link count
  5. 1.1.1.1         1.1.1.1         1386        0x80000003 0x008BDD 5
  6. 2.2.2.2         2.2.2.2         1422        0x80000003 0x00F948 3
  7. 4.4.4.4         4.4.4.4         1380        0x80000003 0x001E0C 3

  8.                 Summary Net Link States (Area 0)

  9. Link ID         ADV Router      Age         Seq#       Checksum
  10. 10.0.0.3        2.2.2.2         666         0x80000001 0x0039AD
  11. 10.0.0.3        4.4.4.4         668         0x80000001 0x00FCE1
  12. 10.0.23.0       2.2.2.2         1414        0x80000001 0x004F84
  13. 10.0.23.0       4.4.4.4         668         0x80000001 0x0095F5
  14. 10.0.34.0       2.2.2.2         666         0x80000001 0x005830
  15. 10.0.34.0       4.4.4.4         1371        0x80000001 0x009927

  16.                 Router Link States (Area 1)

  17. Link ID         ADV Router      Age         Seq#       Checksum Link count
  18. 2.2.2.2         2.2.2.2         678         0x80000004 0x0089B8 2
  19. 3.3.3.3         3.3.3.3         670         0x80000005 0x00B75D 5
  20. 4.4.4.4         4.4.4.4         671         0x80000003 0x008694 2

  21.                 Summary Net Link States (Area 1)

  22. Link ID         ADV Router      Age         Seq#       Checksum
  23. 0.0.0.0         2.2.2.2         695         0x80000001 0x0075C0
  24. 0.0.0.0         4.4.4.4         688         0x80000001 0x0039F4
  25. 10.0.0.1        2.2.2.2         695         0x80000003 0x006781
  26. 10.0.0.1        4.4.4.4         688         0x80000002 0x002DB4
  27. 10.0.0.2        2.2.2.2         695         0x80000003 0x00DA4D
  28. 10.0.0.2        4.4.4.4         688         0x80000002 0x00A5FA
  29. 10.0.0.4        2.2.2.2         695         0x80000002 0x00CDD8
  30. 10.0.0.4        4.4.4.4         688         0x80000003 0x008A93
  31. 10.0.12.0       2.2.2.2         695         0x80000003 0x00E2FB
  32. 10.0.12.0       4.4.4.4         688         0x80000002 0x002B6C
  33. 10.0.14.0       2.2.2.2         695         0x80000003 0x004F4D
  34. 10.0.14.0       4.4.4.4         688         0x80000003 0x009044
复制代码很明显,R4关于10.0.0.1的路由信息可以在Area 0通过Router-Link学习,自然它就不考虑Type-3了。

再打开其中的10.0.0.1,这一条是R1的Loopback:
  1. R4#show ip ospf database summary 10.0.0.1

  2.             OSPF Router with ID (4.4.4.4) (Process ID 1)

  3.                 Summary Net Link States (Area 1)

  4.   LS age: 916
  5.   Options: (No TOS-capability, DC, Upward)
  6.   LS Type: Summary Links(Network)
  7.   Link State ID: 10.0.0.1 (summary Network Number)
  8.   Advertising Router: 2.2.2.2
  9.   LS Seq Number: 80000003
  10.   Checksum: 0x6781
  11.   Length: 28
  12.   Network Mask: /32
  13.         MTID: 0         Metric: 65 

  14.   LS age: 909
  15.   Options: (No TOS-capability, DC, Upward)
  16.   LS Type: Summary Links(Network)
  17.   Link State ID: 10.0.0.1 (summary Network Number)
  18.   Advertising Router: 4.4.4.4
  19.   LS Seq Number: 80000002
  20.   Checksum: 0x2DB4
  21.   Length: 28
  22.   Network Mask: /32
  23.         MTID: 0         Metric: 65
复制代码数据库里很安全,但是由于没有Routing-bit,所以一样的,ABR不会理会这条路由。

这里我也很迷惑,到底是因为路由优先级的问题还是因为这条路由来自于本区域的ABR导致路由器不加入这条LSA。
没人解释,那姑且我们就找个自己能理解的办法吧。