目錄

簡介

必要條件

需求

採用元件

OSPF轉發地址

IOS和IOS-XR之間的差異

簡介

本檔案介紹IOS-XR和IOS裝置上的開放最短路徑優先(OSPF)轉送位址的概念，並比較IOS-XR和IOS裝置之間的OSPF行為。

必要條件

需求

Cisco建議您瞭解OSPF協定的基本知識。

採用元件

本文中的資訊係根據以下軟體和硬體版本：

- IOS-XR虛擬裝置版本：6.1.3、6.1.2、6.0.0、5.3.0、5.2.0

- Cisco IOS平台

OSPF轉發地址

本節討論OSPF中轉發地址的概念，如果您已經熟悉此概念，可以繼續下一部分。

當OSPF路由器將來自另一個源協定的路由重新分發到OSPF作為E1或E2時，它可以在該特定外部鏈路狀態通告(LSA)中設定轉發地址。 OSPF協定必須滿足這些條件才能設定該特定屬性。轉發地址可以填充（非零）或不填充（全零）。

所有這些條件都必須將轉發地址欄位設定為非零地址：

- 在下一跳介面的自治系統邊界路由器(ASBR)上啟用OSPF

- ASBR的下一跳介面在OSPF下是非被動介面

- ASBR的下一跳介面不是點對點介面

- ASBR的下一跳介面不是點對多點

- ASBR的下一跳介面地址屬於router ospf命令中指定的網路範圍。

- 除上述情況外，任何其他情況都會將轉發地址設定為0.0.0.0。

當轉發地址設定為全零(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和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轉發地址通過另一個源得知的情況下，流量不能被黑洞。