本產品的文件集力求使用無偏見用語。針對本文件集的目的,無偏見係定義為未根據年齡、身心障礙、性別、種族身分、民族身分、性別傾向、社會經濟地位及交織性表示歧視的用語。由於本產品軟體使用者介面中硬式編碼的語言、根據 RFP 文件使用的語言,或引用第三方產品的語言,因此本文件中可能會出現例外狀況。深入瞭解思科如何使用包容性用語。
思科已使用電腦和人工技術翻譯本文件,讓全世界的使用者能夠以自己的語言理解支援內容。請注意,即使是最佳機器翻譯,也不如專業譯者翻譯的內容準確。Cisco Systems, Inc. 對這些翻譯的準確度概不負責,並建議一律查看原始英文文件(提供連結)。
本檔案介紹IOS-XR和IOS裝置上的開放最短路徑優先(OSPF)轉送位址的概念,並比較IOS-XR和IOS裝置之間的OSPF行為。
Cisco建議您瞭解OSPF協定的基本知識。
本文中的資訊係根據以下軟體和硬體版本:
本節討論OSPF中轉發地址的概念,如果您已經熟悉此概念,可以繼續下一部分。
當OSPF路由器將來自另一個源協定的路由重新分發到OSPF作為E1或E2時,它可以在該特定外部鏈路狀態通告(LSA)中設定轉發地址。 OSPF協定必須滿足這些條件才能設定該特定屬性。轉發地址可以填充(非零)或不填充(全零)。
所有這些條件都必須將轉發地址欄位設定為非零地址:
當轉發地址設定為全零(0.0.0.0)時,這意味著路由器必須遞迴到OSPF拓撲中的該特定節點,才能正確將流量路由到目標。與距離向量協定相比,作為鏈路狀態路由協定的OSPF有一個很大的不同之處在於,鏈路狀態使其可以完整地檢視特定區域內的拓撲,路由器可以計算到達拓撲中某個節點的最短路徑,並全面瞭解所有裝置及其成本。它不一定路由到字首,而是路由到節點,這是很大的區別。
當轉送位址設定為非零值時,路由器會檢查通往該轉送位址所連線的節點的最短路徑是什麼。
本節檢視拓撲以作進一步說明:
圖1
在圖1中,增強型內部網關路由協定(EIGRP)在共用網段192.168.1.0/24上的R2和R3之間運行。R1也連線到共用網段192.168.1.0/24,儘管沒有EIGRP。R2配置為將172.16.3.3/32從EIGRP重分發到OSPF,作為外部E2路由。OSPF在R2到R4、R1到R4、R1到Transit_Router和R4到XR5之間運行。XR5路由器軟體是IOS-XR。
本節說明了轉發地址的重要性。假設您有來自172.16.3.3/32的流量來自雲網路,此流量到達Transit_Router,並根據路由表進行轉發。
檢查Transit_Router的路由表中是否有字首172.16.3.3/32。
Transit_Router#show ip route 172.16.3.3
Routing entry for 172.16.3.3/32 Known via "ospf 1", distance 110, metric 20, type extern 2, forward metric 2 Last update from 192.168.70.1 on GigabitEthernet1, 00:00:04 ago Routing Descriptor Blocks: * 192.168.70.1, from 2.2.2.2, 00:00:04 ago, via GigabitEthernet1 <- You see the prefix is from advertising router with router-id 2.2.2.2 Route metric is 20, traffic share count is 1 Transit_Router#
下一跳是192.168.70.1指向R1。由於R2將網路172.16.3.3/32重分配到OSPF,因此您可以假設您必須路由到R2才能到達目的地172.16.3.3/32。
您可以從Transit_Router對172.16.3.3/32執行traceroute。
Transit_Router#traceroute 172.16.3.3 timeout 1 Type escape sequence to abort. Tracing the route to 172.16.3.3 VRF info: (vrf in name/id, vrf out name/id) 1 192.168.70.1 7 msec 5 msec 8 msec <- R1 2 192.168.1.3 10 msec 11 msec 17 msec <- R3
當R1收到目的地為172.16.3.3/32的流量時,它實際上被直接路由到R3。在R1上運行show ip route,檢視指向172.16.3.3的路由表。
R1#show ip route 172.16.3.3 Routing entry for 172.16.3.3/32 Known via "ospf 1", distance 110, metric 20, type extern 2, forward metric 1 Last update from 192.168.1.3 on GigabitEthernet0/0, 02:04:54 ago Routing Descriptor Blocks: * 192.168.1.3, from 2.2.2.2, 02:04:54 ago, via GigabitEthernet0/0 <-- Next-hop goes directly towards R3 over the shared segment Route metric is 20, traffic share count is 1
由於轉發地址的原因,R1的下一跳地址為192.168.1.3,該下一跳指向R3。如果您在R1和R3之間沒有任何路由協定。請驗證transit_Router上的外部LSA。
Transit_Router#show ip ospf database external 172.16.3.3 OSPF Router with ID (6.6.6.6) (Process ID 1) Type-5 AS External Link States LS age: 1641 Options: (No TOS-capability, DC, Upward) LS Type: AS External Link Link State ID: 172.16.3.3 (External Network Number ) Advertising Router: 2.2.2.2 LS Seq Number: 80000004 Checksum: 0x8299 Length: 36 Network Mask: /32 Metric Type: 2 (Larger than any link state path) MTID: 0 Metric: 20 Forward Address: 192.168.1.3 <-R3 interface towards the shared segment External Route Tag: 0
您可以看到,轉送位址已填入IP位址192.168.1.3,這表示如果您要路由到172.16.3.3/32,則必須向192.168.1.3遞迴。這現在意味著,當R1收到目的地為172.16.3.3/32的封包時,它也有針對172.16.3.3/32的5類LSA,其轉送位址為192.168.1.3,且直接連線到Gi0/0介面。因此,R1將資料包路由到192.168.1.3。
轉發地址有助於緩解次優路由。如果未在型別5的LSA上設定轉發地址,則需要通過R2的ASBR路由所有發往172.16.3.3的資料包。
若要驗證這一點,可以將轉發地址重置為0.0.0.0,然後從Transit_Router運行traceroute。
Transit_Router#show ip ospf database external 172.16.3.3 OSPF Router with ID (6.6.6.6) (Process ID 1) Type-5 AS External Link States LS age: 14 Options: (No TOS-capability, DC, Upward) LS Type: AS External Link Link State ID: 172.16.3.3 (External Network Number ) Advertising Router: 2.2.2.2 LS Seq Number: 80000005 Checksum: 0x196F Length: 36 Network Mask: /32 Metric Type: 2 (Larger than any link state path) MTID: 0 Metric: 20 Forward Address: 0.0.0.0 <- Recurse towards the ASBR (RID 2.2.2.2) External Route Tag: 0 Transit_Router#
您可以看到轉發地址設定為0.0.0.0,如前所述,這意味著現在必須將資料包路由到R2的ASBR。當您從Transit_Router向172.16.3.3運行traceroute時,此流量將沿著ASBR R2的路徑前進。
您可以在以下位置看到:
Transit_Router#traceroute 172.16.3.3 Type escape sequence to abort. Tracing the route to 172.16.3.3 VRF info: (vrf in name/id, vrf out name/id) 1 192.168.70.1 17 msec 12 msec 3 msec <-R1 2 192.168.14.4 3 msec 18 msec 7 msec <-R4 3 192.168.24.2 15 msec 8 msec 5 msec <-R2 4 192.168.1.3 8 msec 11 msec 7 msec <-R3 Transit_Router#
本節介紹當您通過另一個來源知道轉發地址時IOS和IOS-XR裝置之間的區別。
在IOS中,當您在資料庫中有一個OSPF外部路由並且設定了轉發地址時,必須通過OSPF區域間或區域內路由知道轉發地址。如果通過OSPF區域內或區域間路由不知道轉發地址,則路由器不會將外部OSPF路由安裝到路由資訊庫(RIB)中。
檢驗將轉發地址配置為通過靜態路由獲知時會發生的情況。
圖2
在圖2拓撲中,R2被配置為EIGRP和OSPF之間的重分發點。路由器將172.16.3.3/32從EIGRP重分發到OSPF域。您可以對R4和XR5進行檢查,以確保當轉發地址通過另一個源得知時存在哪些差異。此處顯示了R4上的OSPF資料庫。
R4# show ip ospf database external 172.16.3.3
OSPF Router with ID (4.4.4.4) (Process ID 1) Type-5 AS External Link States LS age: 4 Options: (No TOS-capability, DC, Upward) LS Type: AS External Link Link State ID: 172.16.3.3 (External Network Number ) Advertising Router: 2.2.2.2 LS Seq Number: 80000002 Checksum: 0x8697 Length: 36 Network Mask: /32 Metric Type: 2 (Larger than any link state path) MTID: 0 Metric: 20 Forward Address: 192.168.1.3 External Route Tag: 0
檢查如何路由到轉發地址。
R4# show ip route 192.168.1.3 Routing entry for 192.168.1.0/24 Known via "ospf 1", distance 110, metric 2, type intra area <- Here you see it is know via OSPF intra area Last update from 192.168.24.2 on GigabitEthernet0/0, 00:00:23 ago Routing Descriptor Blocks: 192.168.24.2, from 1.1.1.1, 00:00:23 ago, via GigabitEthernet0/0 Route metric is 2, traffic share count is 1 * 192.168.14.1, from 1.1.1.1, 00:04:42 ago, via GigabitEthernet0/1 Route metric is 2, traffic share count is 1 R4#
您可以看到,路由器通過區域內路由獲取轉發地址,這意味著它可以在RIB中安裝外部LSA。您可以看到外部LSA安裝在RIB中。
R4#show ip route 172.16.3.3 Routing entry for 172.16.3.3/32 Known via "ospf 1", distance 110, metric 20, type extern 2, forward metric 2 Last update from 192.168.24.2 on GigabitEthernet0/0, 00:01:02 ago Routing Descriptor Blocks: 192.168.24.2, from 2.2.2.2, 00:01:02 ago, via GigabitEthernet0/0 Route metric is 20, traffic share count is 1 * 192.168.14.1, from 2.2.2.2, 00:04:57 ago, via GigabitEthernet0/1 Route metric is 20, traffic share count is 1
為指向ASBR(即R2)的轉發地址配置靜態路由
R4#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R4(config)#ip route 192.168.1.0 255.255.255.0 192.168.24.2
對轉發地址運行show ip route。
R4# show ip route 192.168.1.3 Routing entry for 192.168.1.0/24 Known via "static", distance 1, metric 0 Routing Descriptor Blocks: * 192.168.24.2 Route metric is 0, traffic share count is 1
您可以看到,轉發地址不是通過OSPF獲知的,而是靜態的,這意味著現在172.16.3.3的外部LSA無法通過必須使用的標準。
R4#show ip ospf database external 172.16.3.3 OSPF Router with ID (4.4.4.4) (Process ID 1) Type-5 AS External Link States LS age: 480 Options: (No TOS-capability, DC, Upward) LS Type: AS External Link Link State ID: 172.16.3.3 (External Network Number ) Advertising Router: 2.2.2.2 LS Seq Number: 80000001 Checksum: 0x8896 Length: 36 Network Mask: /32 Metric Type: 2 (Larger than any link state path) MTID: 0 Metric: 20 Forward Address: 192.168.1.3 External Route Tag: 0
最後,檢查是否已將外部路由從OSPF資料庫安裝到RIB中。
R4#show ip route 172.16.3.3 % Network not in table
如您所見,路由器不會將外部LSA從OSPF資料庫安裝到RIB中,因為轉發地址是通過靜態而不是區域內或區域間的OSPF得知的。
這裡的邏輯是,OSPF不認為另一個用於路由至轉發地址的源可信,因此路由器不得考慮任何具有不通過OSPF獲知的轉發地址的外部LSA。
本節介紹在IOS-XR上檢驗行為的相同測試。在XR5上,您有外部LSA:
RP/0/0/CPU0:XR4#show ospf database external 172.16.3.3 Mon Mar 26 06:26:24.656 UTC OSPF Router with ID (192.168.60.1) (Process ID 1) Type-5 AS External Link States Routing Bit Set on this LSA LS age: 930 Options: (No TOS-capability, DC) LS Type: AS External Link Link State ID: 172.16.3.3 (External Network Number) Advertising Router: 2.2.2.2 LS Seq Number: 80000001 Checksum: 0x8896 Length: 36 Network Mask: /32 Metric Type: 2 (Larger than any link state path) TOS: 0 Metric: 20 Forward Address: 192.168.1.3 External Route Tag: 0
當您為指向R4的轉發地址配置靜態路由時,檢查路由器是否將外部LSA安裝到資料庫中。
RP/0/0/CPU0:XR4#show route 192.168.1.3 Mon Mar 26 06:33:21.587 UTC Routing entry for 192.168.1.0/24 Known via "static", distance 1, metric 0 <- The forwarding address is now known via static Installed Mar 26 06:31:55.133 for 00:01:26 Routing Descriptor Blocks 192.168.60.4 <- Next-hop is R4 Route metric is 0, Wt is 1 No advertising protos.
您可以看到轉發地址是通過靜態獲知的。現在,驗證是否已將外部LSA安裝到RIB中。
RP/0/0/CPU0:XR4#show route 172.16.3.3 Mon Mar 26 06:42:24.830 UTC Routing entry for 172.16.3.3/32 Known via "ospf 1", distance 110, metric 20, type extern 2 Installed Mar 26 06:25:09.841 for 00:17:15 Routing Descriptor Blocks 192.168.60.4, from 2.2.2.2, via GigabitEthernet0/0/0/0 Route metric is 20 No advertising protos. RP/0/0/CPU0:XR4#
您可以看到IOS和IOS-XR之間的差異。外部LSA安裝在RIB中,即使轉發地址是通過靜態獲知的。路由器仍然具有通往外部字首的連線。
RP/0/0/CPU0:XR4#ping 172.16.3.3 Mon Mar 26 06:44:25.772 UTC Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 172.16.3.3, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 1/9/19 ms RP/0/0/CPU0:XR4#
IOS-XR似乎將外部LSA填充到RIB中,但沒有考慮遞迴的轉發地址,這意味著它向ASBR遞迴,而不是查詢到RIB的轉發地址。
該測試向您表明可以考慮該路由。您可以為指向null0的轉發地址配置靜態路由,並檢查是否仍然存在指向外部字首的連線。
RP/0/0/CPU0:XR4#show ospf database external 172.16.3.3 Mon Mar 26 06:55:36.296 UTC OSPF Router with ID (192.168.60.1) (Process ID 1) Type-5 AS External Link States Routing Bit Set on this LSA LS age: 667 Options: (No TOS-capability, DC) LS Type: AS External Link Link State ID: 172.16.3.3 (External Network Number) Advertising Router: 2.2.2.2 LS Seq Number: 80000002 Checksum: 0x8697 Length: 36 Network Mask: /32 Metric Type: 2 (Larger than any link state path) TOS: 0 Metric: 20 Forward Address: 192.168.1.3 External Route Tag: 0 RP/0/0/CPU0:XR4#show route 192.168.1.3 Mon Mar 26 06:55:38.966 UTC Routing entry for 192.168.1.0/24 Known via "static", distance 1, metric 0 (connected) Installed Mar 26 06:47:15.030 for 00:08:23 Routing Descriptor Blocks directly connected, via Null0 Route metric is 0, Wt is 1 No advertising protos.
檢查從XR5到172.16.3.3的連線。
RP/0/0/CPU0:XR4#ping 172.16.3.3 Mon Mar 26 06:56:45.261 UTC Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 172.16.3.3, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 1/7/19 ms RP/0/0/CPU0:XR4#traceroute 172.16.3.3 Mon Mar 26 06:56:51.251 UTC Type escape sequence to abort. Tracing the route to 172.16.3.3 1 192.168.60.4 0 msec 0 msec 0 msec 2 192.168.14.1 0 msec 0 msec 0 msec 3 192.168.1.3 9 msec 9 msec 0 msec RP/0/0/CPU0:XR4
在這些測試中,您瞭解了轉發地址的重要性,以及設定該地址後如何解釋路由。此外,如果設定了轉發地址(必須使用),則假定該假設可能是錯誤的,因為它取決於平台。當轉發地址通過OSPF區域內或區域內已知時,會使用它,否則會填充它,但不會用於遞迴。XR上的行為提供了某種程度的保證,在外部LSA轉發地址通過另一個源得知的情況下,流量不能被黑洞。