FA 是Forwarding Address的簡寫。FA是ASBR通告的TYPE 5 LSA中的字段,它的作用是告訴OSPF域內的路由器如何能夠更快捷地到達LSA 5所通告路由的下一跳地址。以免OSPF 內部路由器在廣播網絡上以ASBR爲下一跳,再由ASBR自己轉發到正確的下一跳,而產生額外的路由。簡單來說,FA字段的作用類似於BGP協議中的“第三方下一跳”概念,主要在廣播共享網絡中起作用。FA字段可以爲全0或者非0兩種選擇,有以下幾個規則:
1、當與引入路由的下一跳關聯(互連)的接口沒有啓動OSPF時,FA設置爲0;
例如在上面圖中,R8引入直連接口E1的路由,此接口沒有啓動OSPF,因此TYPE 5 的LSA中 FA字段爲0。
2、當下列所有條件均滿足的情況下,TYPE 5 LSA中FA字段設置爲非0:
1、在ASBR上,與引入外部路由下一跳關聯的接口啓動了OSPF,即位於Network
命令範圍內。
2、在ASBR上,與引入外部路由下一跳關聯的接口不能配置被動接口;
//前兩個規則是確保LSA能夠被通告。
3、在ASBR上,與引入外部路由下一跳關聯的接口配置的OSPF網絡類型不能是P2P或P2MP。
//確保網絡類型是Broadcast或NBMA 的共享網絡。
以上說了FA字段可能設置爲非0,那麼到底是一個什麼值呢?它是數據包應該被路由到的出口的接口地址。並不是loopback接口的IP地址,或者ROUTER ID指示的值什麼的?
1 OSPF協議中FA地址是如何影響外部路由選路的?
上面提到TYPE 5 LSA的FA字段要麼爲0,要麼非0。那麼對於路由選路有何影響嗎?
又有哪些注意點呢?
概括起來講就是在計算由TYPE 5 LSA描述的某個外部路由時,會查找生成該LSA的ASBR,如果不存在這個ASBR的表項,忽略這個LSA。
否則,檢查這個LSA的FA地址,這個地址就是轉發數據包應該被髮送到的地址。如果FA爲0,數據包應該被髮送到ASBR;如果FA非0,在OSPF路由表中查找到FA地址的表項,而且該表項必須被域內或者域間路由覆蓋,否則不考慮這個LSA。
前面賣了這麼多的關子,到底ospf在計算路由時如何參考FA地址?
前面賣了這麼多的關子,到底ospf在計算路由時如何參考FA地址?
一句話:如果FA非0,根據計算到FA地址的metric,而不是計算到ASBR的metric進行路由優選。
那麼在計算外部路由時又是如何依據它進行選路呢?
1、計算外部路由時,首先檢查通告TYPE 5 LSA的ASBR是否存在,否則忽略該LSA;
2、檢查TYPE 5 LSA的FA地址是否爲0。如爲0,說明路由必須經過ASBR轉發,那麼優選到ASBR metric 最短的路徑。當有多個最短路徑時,優選從較大area ID學習到的。
如果FA非0,那麼優選到FA地址 metric最短的路徑,而且到FA的路由必須時域內或域間的,否則忽略該表項。
注意以上的優選過程都是在比較了OSPF 域內、域間、外部類型1、外部類型2 四種優先級後,以及網絡前綴長度都相同的情況下進行的。
一、Type 5 LSA中的FA地址
在查看Type 5的LSA時,注意到其中存在一個FA(Forwarding Address,轉發地址)的信息。它的作用是什麼呢?
示例:以該網絡拓撲爲例。
具體配置如下:
R1:
int f0/0
ip address 192.168.1.1 255.255.255.0
router ospf 1
network 192.168.1.0 0.0.0.255 area 0
R2:
int f0/0
ip address 192.168.1.2 255.255.255.0
router ospf 1
network 192.168.1.0 0.0.0.255 area 0
redistribute rip subnets
router rip
network 192.168.1.0
R3:
int f0/0
ip address 192.168.1.3 255.255.255.0
int f0/1
ip address 192.168.2.1 255.255.255.0
router rip
network 192.168.1.0
network 192.168.2.0
在查看R2引入外部路由192.168.2.0/24對應產生的Type 5 LSA時,發現其中的FA爲192.168.1.3。
首先我們分析一下OSPF如何計算到達外部路由的?
步驟1:R2引入外部路由192.168.2.0/24,產生Type 5 LSA。
步驟2:R2將LSA在擴散到OSPF域中
步驟3:R1收到該LSA的信息
步驟4:R1計算到達192.168.2.0/24的路由
按照正常的邏輯(即LSA中的FA地址爲0.0.0.0時),R1收到的這個LSA是R2產生的,因此R1計算到達192.168.2.0/24路由,應該下一跳地址爲R2(即192.168.1.2)。 這樣從R1去往192.168.2.0/24將首先到達R2、在經過R3到達目的地,很明顯這樣的路徑不是最優的。
實際上,按照上圖的拓撲中進行的配置,R2產生的192.168.2.0/24對應的Type 5 LSA,其FA地址爲192.168.1.3。
在OSPF中計算路由時,將首先如何到達該FA地址(192.168.1.3),若能夠到達,則將能夠到達該FA地址的下一跳地址作爲外部路由的下一跳地址。
因此我們在R1上的路由表中看到192.168.2.0/24路由的下一跳爲192.168.1.3,這樣的路由是不是更優呢!!
結論1:
1)在OSPF引入外部路由時,若產生的Type 5 LSA的FA地址爲0.0.0.0,則其他路由器在計算到達該外部網絡時,將考慮如何到達ASBR(即產生該Type 5 LSA的路由器)來計算出外部路由的下一跳地址。
2)在OSPF引入外部路由時,若產生的Type 5 LSA的FA地址不爲0,則其他路由器在計算到達該外部網絡時,將考慮如何到達該FA地址來計算出外部路由的下一跳地址。
那麼OSPF中產生Type 5 LSA時,什麼時候FA地址不爲0.0.0.0呢?
若同時滿足以下三個條件:
a)引入的這條外部路由,其對應的出接口啓用了OSPF
b)引入的這條外部路由,其對應的出接口未設置爲passive-interface
c)引入的這條外部路由,其對應的出接口的OSPF網絡類型爲broadcast
則產生的Type 5 LSA,其FA地址等於該引入的外部路由的下一條地址。
對照上面的拓撲,判斷一下:
在R2上將通過RIP學習到的192.168.2.0/24的路由引入,很明顯R2的路由表中192.168.2.0/24的信息如下:
R 192.168.2.0/24 192.168.1.3 f0/0
條件a)——R2的f0/0口啓用了OSPF,因爲R2的network命令包含192.168.1.0 0.0.0.255——滿足
條件b)——在ospf中,R2的f0/0口未被配置爲被動接口——滿足
條件c)——R2的f0/0口對應的OSPF網絡類型爲broadcacst——滿足
所以R2產生的Type 5 LSA時,其FA地址爲192.168.1.3。
R1:
int f0/0
ip address 192.168.1.1 255.255.255.0
router ospf 1
network 192.168.1.0 0.0.0.255 area 0
R2:
int f0/0
ip address 192.168.1.2 255.255.255.0
router ospf 1
network 192.168.1.0 0.0.0.255 area 0
redistribute rip subnets
router rip
network 192.168.1.0
R3:
int f0/0
ip address 192.168.1.3 255.255.255.0
int f0/1
ip address 192.168.2.1 255.255.255.0
router rip
network 192.168.1.0
network 192.168.2.0
在查看R2引入外部路由192.168.2.0/24對應產生的Type 5 LSA時,發現其中的FA爲192.168.1.3。
首先我們分析一下OSPF如何計算到達外部路由的?
步驟1:R2引入外部路由192.168.2.0/24,產生Type 5 LSA。
步驟2:R2將LSA在擴散到OSPF域中
步驟3:R1收到該LSA的信息
步驟4:R1計算到達192.168.2.0/24的路由
按照正常的邏輯(即LSA中的FA地址爲0.0.0.0時),R1收到的這個LSA是R2產生的,因此R1計算到達192.168.2.0/24路由,應該下一跳地址爲R2(即192.168.1.2)。 這樣從R1去往192.168.2.0/24將首先到達R2、在經過R3到達目的地,很明顯這樣的路徑不是最優的。
實際上,按照上圖的拓撲中進行的配置,R2產生的192.168.2.0/24對應的Type 5 LSA,其FA地址爲192.168.1.3。
在OSPF中計算路由時,將首先如何到達該FA地址(192.168.1.3),若能夠到達,則將能夠到達該FA地址的下一跳地址作爲外部路由的下一跳地址。
因此我們在R1上的路由表中看到192.168.2.0/24路由的下一跳爲192.168.1.3,這樣的路由是不是更優呢!!
結論1:
1)在OSPF引入外部路由時,若產生的Type 5 LSA的FA地址爲0.0.0.0,則其他路由器在計算到達該外部網絡時,將考慮如何到達ASBR(即產生該Type 5 LSA的路由器)來計算出外部路由的下一跳地址。
2)在OSPF引入外部路由時,若產生的Type 5 LSA的FA地址不爲0,則其他路由器在計算到達該外部網絡時,將考慮如何到達該FA地址來計算出外部路由的下一跳地址。
那麼OSPF中產生Type 5 LSA時,什麼時候FA地址不爲0.0.0.0呢?
若同時滿足以下三個條件:
a)引入的這條外部路由,其對應的出接口啓用了OSPF
b)引入的這條外部路由,其對應的出接口未設置爲passive-interface
c)引入的這條外部路由,其對應的出接口的OSPF網絡類型爲broadcast
則產生的Type 5 LSA,其FA地址等於該引入的外部路由的下一條地址。
對照上面的拓撲,判斷一下:
在R2上將通過RIP學習到的192.168.2.0/24的路由引入,很明顯R2的路由表中192.168.2.0/24的信息如下:
R 192.168.2.0/24 192.168.1.3 f0/0
條件a)——R2的f0/0口啓用了OSPF,因爲R2的network命令包含192.168.1.0 0.0.0.255——滿足
條件b)——在ospf中,R2的f0/0口未被配置爲被動接口——滿足
條件c)——R2的f0/0口對應的OSPF網絡類型爲broadcacst——滿足
所以R2產生的Type 5 LSA時,其FA地址爲192.168.1.3。