本檔案將說明與開放最短路徑優先(OSPF)轉送位址相關的概念和問題。請參閱為什麼有些OSPF路由出現在資料庫中,而不是路由表?有關排除OSPF故障的詳細資訊。
只有使用低於12.1(3)的Cisco IOS®軟體版本時,才能看到本文說明的問題。 Cisco IOS軟體版本12.1(3)和更新版本中的重新分發行為已變更。如需更多詳細資訊,請參閱Cisco錯誤ID CSCdp72526(僅限註冊客戶)。 此錯誤具有受影響的Cisco IOS軟體版本清單和修正版本。另請參閱將連線的網路重新分發到OSPF,其中解釋了Cisco IOS行為的更改。
本文檔的讀者應瞭解以下主題:
常規IP路由。
OSPF路由協定概念和術語。
本文中的資訊係根據以下軟體和硬體版本:
思科2503路由器
在所有路由器上運行的Cisco IOS®軟體版本12.2(24a)
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路正在作用,請確保您已瞭解任何指令可能造成的影響。
如需文件慣例的詳細資訊,請參閱思科技術提示慣例。
如圖所示,OSPF轉發地址的概念被引入,以避免流量路由到外部自治系統(AS)時產生額外的跳數。
在圖中,OSPF域中有兩台路由器連線到外部域。但是,只有Router 1與Router 100交換路由資訊。Router 1將從路由器100獲知的資訊重新分發到OSPF並將此資訊通告到OSPF域的其餘部分。在此過程中,路由器1會成為其重新分發到OSPF域的資訊的下一跳(或轉發地址)。當路由器2收到來自OSPF域的發往外部域中某個地址的資料包時,它將資料包轉發到路由器1。然後路由器1將其轉發到路由器100。轉發地址概念允許避免此額外躍點,因為它允許路由器1將另一路由器的IP地址指定為轉發地址。在圖中,Router 1可以將Router 100指定為Router 1重新分發到OSPF域的外部資訊的轉發地址。當Router 2收到來自OSPF網域且目的地為外部網域中位址的封包時,便會將該封包轉送到路由器100。結果便是通過路由器1避免了額外的躍點。
自治系統邊界路由器(ASBR)(上圖中的路由器1)指定的轉發地址值可以是0.0.0.0或非零。0.0.0.0地址表示始發路由器(ASBR)是下一跳。轉發地址由以下條件確定:
如果ASBR重新分配路由且未在這些路由的下一跳介面上啟用OSPF,則轉發地址設定為0.0.0.0。如果Router 1沒有在乙太網介面上啟用OSPF,則圖中顯示此情況。
以下條件將轉發地址欄位設定為非零地址:
在ASBR的下一跳介面上啟用了OSPF,
ASBR的下一跳介面在OSPF和
ASBR的下一跳介面不是點對點AND
ASBR的下一跳介面不是點對多點AND
ASBR的下一跳介面地址屬於router ospf命令中指定的網路範圍。
除這些條件外,任何其他條件都將轉發地址設定為0.0.0.0。
有關如何設定轉發地址並影響路徑選擇的資訊,請參閱轉發地址對型別5 LSA路徑選擇的影響。
圖中,R2513路由器只運行RIP(並且可能連線到僅RIP網路),新增到令牌環網路中。從R2513獲知的路由由ASBR(R2515)重分發到OSPF時,某些路由沒有安裝到某些路由器的路由表中。這些表中給出了每台路由器的相關配置資訊。
hostname R2504 |
---|
interface Serial0 ip address 1.1.1.2 255.255.255.0 interface TokenRing0 ip address 3.3.4.2 255.255.255.0 router ospf 1 network 1.1.1.0 0.0.0.255 area 0 network 3.0.0.0 0.255.255.255 area 1 area 1 range 3.0.0.0 255.0.0.0 |
hostname R2507 |
---|
interface Serial0 ip address 1.1.1.1 255.255.255.0 interface Serial1 ip address 7.7.7.1 255.255.255.0 router ospf 1 network 1.1.1.1 0.0.0.0 area 0 default- information originate metric 20 ip route 0.0.0.0 0.0.0.0 Serial1 |
hostname R2513 |
---|
interface TokenRing0 ip address 3.3.4.4 255.255.255.0 interface ethernet 0 ip address 200.1.1.4 255.255.255.0 router rip network 3.0.0.0 network 200.1.1.0 |
hostname R2515 |
---|
interface TokenRing0 ip address 3.3.4.3 255.255.255.0 interface ethernet 0 ip address 3.44.66.3 255.255.255.0 interface ethernet 1 ip address 3.22.88.3 255.255.255.0 router ospf 1 redistribute rip metric 20 subnets network 0.0.0.0 255.255.255.255 area 1 router rip network 3.0.0.0 passive-interface ethernet 0 passive-interface ethernet 1 |
下表中的配置顯示R2515將RIP重分佈到OSPF中,並且R2504(區域邊界路由器[ABR])建立了總結網路3.0.0.0/8。
以下是每台啟用OSPF的路由器的路由表:
R2507# show ip route Gateway of last resort is 0.0.0.0 to network 0.0.0.0 1.0.0.0/ 24 is subnetted, 1 subnets C 1.1.1.0 is directly connected, Serial0 3.0.0.0/ 8 is variably subnetted, 4 subnets, 2 masks O IA 3.0.0.0/ 8 [110/ 70] via 1.1.1.2, 00: 15: 37, Serial0 O E2 3.3.4.0/ 24 [110/ 20] via 1.1.1.2, 00: 06: 37, Serial0 O E2 3.22.88.0/ 24 [110/ 20] via 1.1.1.2, 00: 06: 37, Serial0 O E2 3.44.66.0/ 24 [110/ 20] via 1.1.1.2, 00: 06: 37, Serial0 7.0.0.0/ 24 is subnetted, 1 subnets C 7.7.7.0 is directly connected, Serial1 S* 0.0.0.0/ 0 is directly connected, Serial1 R2504# show ip route Gateway of last resort is 1.1.1.1 to network 0.0.0.0 1.0.0.0/ 24 is subnetted, 1 subnets C 1.1.1.0 is directly connected, Serial0 3.0.0.0/ 8 is variably subnetted, 4 subnets, 2 masks S 3.0.0.0/ 8 is directly connected, Null0 C 3.3.4.0/ 24 is directly connected, TokenRing0 O 3.22.88.0/ 24 [110/ 11117] via 3.3.4.3, 00: 15: 16, TokenRing0 O 3.44.66.0/ 24 [110/ 11117] via 3.3.4.3, 00: 15: 16, TokenRing0 O E2 200.1.1.0/ 24 [110/ 20] via 3.3.4.4, 00: 06: 16, TokenRing0 O* E2 0.0.0.0/ 0 [110/ 20] via 1.1.1.1, 00: 15: 16, Serial0 R2515# show ip route Gateway of last resort is 3.3.4.2 to network 0.0.0.0 1.0.0.0/ 24 is subnetted, 1 subnets O IA 1.1.1.0 [110/ 70] via 3.3.4.2, 00: 10: 28, TokenRing0 3.0.0.0/ 24 is subnetted, 3 subnets C 3.3.4.0 is directly connected, TokenRing0 R 200.1.1.0/ 24 [120/ 1] via 3.3.4.4, 00: 00: 10, TokenRing0 O* E2 0.0.0.0/ 0 [110/ 20] via 3.3.4.2, 00: 10: 28, TokenRing0
R2515具有網路200.1.1.0/24的RIP(R)派生路由。R2515是ASBR,並將RIP協定重新分發到OSPF。R2504從R2515瞭解網路200.1.1.0/24,並將其作為OSPF外部第2類(E2)路由安裝到其路由表中。問題在於R2507的路由表中沒有網路200.1.1.0/24。
R2507具有網路3.3.4.0/24、3.22.88.0/24和3.44.66.0/24的外部路由,即使所有這些網路都應包含在3.0.0.0/8的摘要中。
之所以會出現這些外部路由,是因為將RIP重分佈到OSPF的ASBR在這三個子網上運行RIP。因此,它將子網作為外部路由重分發到OSPF。由於這些子網是外部路由,因此ABR(R2504)不會彙總這些子網。 外部OSPF路由只能由ASBR總結。在本例中為R2515。ABR僅彙總從區域1到區域0的內部OSPF路由。
注意:修正了Cisco錯誤ID CSCdp72526(僅限註冊客戶)後,OSPF不會產生重疊外部網路的5類鏈路狀態通告(LSA)。R2507隻有總結區域間路由3.0.0.0/8。然後,R2507安裝200.1.1.0/24作為轉發地址,並且可以通過區域間路由3.0.0.0/8到達。這符合RFC 2328 。
此輸出顯示R2507的OSPF資料庫中網路200.1.1.0/24的外部LSA:
R2507# show ip ospf data external 200.1.1.0 OSPF Router with ID (7.7.7.1) (Process ID 1) Type- 5 AS External Link States LS age: 72 Options: (No TOS- capability, DC) LS Type: AS External Link Link State ID: 200.1.1.0 (External Network Number ) Advertising Router: 3.44.66.3 LS Seq Number: 80000001 Checksum: 0xF161 Length: 36 Network Mask: /24 Metric Type: 2 (Larger than any link state path) TOS: 0 Metric: 20 Forward Address: 3.3.4.4 External Route Tag: 0
OSPF允許ASBR將另一台路由器指定為外部路由的轉發地址。在這種情況下,ASBR(R2515)已指定3.3.4.4作為外部網路200.1.1.0的轉發地址。
RFC 2328 ,第16.4節(計算為外部路由),說明:
「如果轉發地址為非零,請在路由表中查詢轉發地址。匹配的路由表條目必須指定區域內或區域間路徑;如果不存在此類路徑,則對LSA不執行任何操作,並考慮清單中的下一個路徑。」
在本例中,到達轉發地址3.3.4.4的路由如下所示:
R2507# show ip route 3.3.4.4 Routing entry for 3.3.4.0/ 24 Known via "ospf 1", distance 110, metric 20,type extern 2, forward metric 70 Redistributing via ospf 1 Last update from 1.1.1.2 on Serial0, 00: 00: 40 ago Routing Descriptor Blocks: * 1.1.1.2, from 3.44.66.3, 00: 00: 40 ago, via Serial0 Route metric is 20, traffic share count is 1
由於匹配規則最長,3.3.4.4的轉發地址由外部路由3.3.4.0/24而不是區域間彙總路由3.0.0.0/8匹配。由於路由器沒有到轉發地址的內部OSPF路由,因此它不在路由表中安裝外部路由200.1.1.0/24。使用外部路由到達另一個外部路由可能會導致環路。因此OSPF不允許使用。
如何確保非零轉發地址作為區域內或區域間路由存在於路由表中?
第一個解決方案不是在ABR上進行彙總。
第二個解決方案不是配置任何LSA第3類過濾。如果過濾了第3類路由,則無法訪問show ip ospf database external命令輸出中顯示的轉發地址。這會使外部網路無法連線。在本例中為R2504。這會導致區域0中的路由器具有其他區域中的所有特定子網的區域間路由(而不是外部路由)。
使用以下命令刪除ABR上的彙總:
R2504(config)# router ospf 1 R2504(config- router)# no area 1 range 3.0.0.0 255.0.0.0
此命令在R2507的路由表中的結果如下所示:
R2507# show ip route Gateway of last resort is 0.0.0.0 to network 0.0.0.0 1.0.0.0/ 24 is subnetted, 1 subnets C 1.1.1.0 is directly connected, Serial0 3.0.0.0/ 24 is subnetted, 3 subnets O IA 3.3.4.0 [110/ 70] via 1.1.1.2, 00: 00: 48, Serial0 O IA 3.22.88.0 [110/ 80] via 1.1.1.2, 00: 00: 48, Serial0 O IA 3.44.66.0 [110/ 80] via 1.1.1.2, 00: 00: 48, Serial0 7.0.0.0/ 24 is subnetted, 1 subnets C 7.7.7.0 is directly connected, Serial1 O E2 200.1.1.0/ 24 [110/ 20] via 1.1.1.2, 00: 00: 48, Serial0 S* 0.0.0.0/ 0 is directly connected, Serial1 R2507# show ip route 3.3.4.4 Routing entry for 3.3.4.0/24 Known via "ospf 1", distance 110, metric 70, type inter area Last update from 1.1.1.2 on Serial1, 00:03:52 ago Routing Descriptor Blocks: * 1.1.1.2, from 3.3.4.2, 00:03:52 ago, via Serial1 Route metric is 74, traffic share count is 1
從輸出中,您可以看到地址3.3.4.4可通過到網路3.3.4.0/24的區域間路由到達。刪除ABR R2504上的總結後,路由器R2507會通過5類LSA和3類LSA獲知通往此網路的路由。由於OSPF優先使用區域內路由,而不是使用到同一網路的外部路由,因此它會將其安裝為區域間路由。由於R2507現在具有到達轉發地址3.3.4、4的區域間路由,因此外部網路200.1.1.0/24也安裝在其路由表中。
註:如果使用NSSA(非純末節區域),並且在NSSA ABR上執行了第3類LSA過濾,則存在轉發地址不可達的相同問題。
另一個解決方案是防止將子網3.3.4.0作為外部路由重分佈到OSPF中,因為OSPF在它上運行。ASBR(R2515)中的這些配置命令會建立路由對映。redistribute命令使用此命令僅允許將網路200.1.1.0/24重分發到OSPF。ABR(R2504)仍然將區域1到區域0的內部OSPF路由總結出來。
R2515# configure terminal R2515(config)# router ospf 1 R2515(config-router)# redistribute rip metric 20 subnets route-map rip_to_ospf_filter R2515(config-router)# exit R2515(config)# access-list 28 permit 200.1.1.0 0.0.0.255 R2515(config)# route-map rip_to_ospf_filter permit 10 R2515(config-route-map)# match ip address 28
此命令在R2507的路由表中的結果如下所示:
R2507# show ip route Gateway of last resort is 0.0.0.0 to network 0.0.0.0 1.0.0.0/ 24 is subnetted, 1 subnets C 1.1.1.0 is directly connected, Serial0 O IA 3.0.0.0/ 8 [110/ 70] via 1.1.1.2, 00: 07: 05, Serial0 7.0.0.0/ 24 is subnetted, 1 subnets C 7.7.7.0 is directly connected, Ethernet0 O E2 200.1.1.0/ 24 [110/ 20] via 1.1.1.2, 00: 00: 21, Serial0 S* 0.0.0.0/ 0 is directly connected, Ethernet0
路由表中唯一的外部路由是200.1.1.0/24。此網路位於路由表中,因為此外部網路(3.3.4.1)的轉發地址由總結路由3.0.0.0/8(區域間路由)覆蓋。
修訂 | 發佈日期 | 意見 |
---|---|---|
1.0 |
29-Dec-2005 |
初始版本 |