網絡工程師(40):化妝成不同鏈路狀態的路由們
我們前面説過,除了Type-1和Type-2,其他類型的LSA都不過是“穿着不同LSA外衣的路由”而已。
我們曾經説過,ABR是一個“勤勞的搬運工”,它會把骨幹區域的路由一條一條搬到所連接的非骨幹區域,反過來也一樣,把非骨幹區域的路由一條條搬到骨幹區域。
一條一條搬路由?這太明目張膽了吧,OSPF可是號稱“鏈路狀態”的路由協議,直接搬路由,你讓我“鏈路狀態路由協議”的面子往哪擱?
有了,把這些路由化妝成“鏈路狀態”的樣子吧。
於是,Type-3類LSA出現了:
我們看,Type-3把路由偽裝的跟真的LSA似的,但我們仔細一看,LSID就是路由前綴,Netmask是掩碼,Metric是開銷,還有Advertising Router呢,一樣也不少。
Type-3類LSA實際上就是ABR把區域內Type-1和Type-2所包含的所有鏈路狀態變成一條條路由,扔到另一個區域。Advertising Router是誰,誰扔路由就是誰。
所以,Type-3類LSA一定是ABR生成的。
如果區域已經有了Type-3,ABR會不會像扔Type-1和Type-2一樣也扔過去呢?
當然會,這個區域中的Type-3是一定是其他ABR扔過來的,肯定也要把它們扔過去,不然怎麼訪問呢?只是扔過去的時候,要把Advertising Router變一下,誰扔寫誰嘛。
如果把Type-1、Type-2稱為區域內路由,那麼Type-3顯然就是區域間路由。
到此為止,整個OSPF路由域依靠Type-1、Type-2和Type-3完成了互通。
不過,還有一種情況需要考慮:某台OSPF路由器會不會連接了其他路由器,並存在其他OSPF沒有的路由?如果OSPF沒有這條路由,也就意味着所有OSPF路由器都無法訪問它。
當然,一個企業網運行兩種或兩種以上的動態路由協議是非常少見的,但是動態路由協議和靜態路由共存卻很常見。
那麼,這些靜態路由怎麼才能讓OSPF訪問呢?
OSPF允許把其他路由引入到OSPF中(有的叫路由重分發),不過還是一樣的問題,需要化個妝:OSPF引入的外部路由,需要化妝成Type-5類LSA。
LSID當然還是這條外部路由的前綴,Netmask是掩碼,Advertising Router依然是誰引入寫誰,而且誰引入,誰就是ASBR。
External Type表示這條外部路由的類型,這裏是Type 2。什麼是外部路由的類型呢?我們先思考一個問題:不同的路由協議,開銷的計算方法相同嗎?
毫無疑問,當然不同。也就是説,原則上不同路由協議的開銷並沒有可比性。如果你問我2個蘋果加3個梨等於多少,我會一腳把你踢飛,嘿嘿。
同樣,OSPF把一條外部路由引入到OSPF中,那這條路由的開銷怎麼算?默認情況下,OSPF把外部路由的開銷都寫成1,並且把這條外部路由的類型設置為Type 2。
Type 2的意思,就是這條路由的開銷不管是多少(即使是1),都非常非常大,OSPF中的開銷可以忽略不計。
所以,一條Type 2的外部路由,不管在OSPF域中的哪台路由器上,開銷都一樣,默認是1,不會累加OSPF內部鏈路的開銷。
有Type 2,有沒有Type 1呢?有,Type 1外部路由會累加OSPF內部鏈路開銷。當然,如果你想把外部路由修改成Type 1,需要你手動設置。
Forwarding Address是轉發地址,通常為0.0.0.0,意思是其他OSPF路由器要訪問這條外部路由,下一跳是Advertising Router裏的內容,也就是ASBR的RID。如果轉發地址不寫0.0.0.0,那就是告訴其他OSPF路由器,訪問這條外部路由的下一跳是這個轉發地址,而不再是ASBR的RID,目的是為了優選最優路徑。
External Route Tag是外部路由標籤,沒有什麼實際含義,只是給外部路由打個標籤而已,通常會用於比如路由控制等方面。
注意Forwarding Address,當它為0.0.0.0時,其他OSPF路由器要訪問這條外部路由,下一跳是ASBR的RID!
所有OSPF路由器都知道ASBR的RID嗎?
上圖中,RTA引入了外部路由,是ASBR,其RID為1.1.1.1。在區域0中,RTA會發送Type-1類LSA,RTB與RTA同在區域0中,所以RTB會收到RTA發的Type-1,知道ASBR就是RTA,ASBR的RID對RTB來説是可達的,所以外部路由的下一跳1.1.1.1對RTB來説是可達的。
但是RTC就不行了,它收不到RTA發的Type-1,不知道要找ASBR的RID該從哪裏去,也就是説,這條外部路由的下一跳1.1.1.1對RTC來説不可達,RTC無法訪問外部路由。
怎麼辦呢?
RTB作為ABR,既然知道ASBR在哪,別吃獨食啊,分享一下唄。
所以,RTB會向區域1扔一條Type-4類LSA,目的很簡單,告訴區域1説:ASBR引入了外部路由,泛洪到了所有區域,不過你們這個區域肯定不知道ASBR在哪,來吧,我知道。如果你們要訪問外部路由,找我就好了。
這樣一來,RTC上外部路由的下一跳,就變成了RTB,而不再是區域0中的RTA。
LSID當然就是ASBR的RID,Advertising Router就是產生這條Type-4的ABR的RID。
綜上所述,ABR要在區域之間傳遞路由,並讓這些路由穿上了Type-3外衣,化妝成鏈路狀態的樣子;ASBR要把引入的外部路由傳遞到所有的OSPF區域,並讓這些路由穿上了Type-5的外衣,也化妝成了鏈路狀態的樣子;而Type-4是ABR告訴不知道ASBR在哪的相鄰區域,要去ASBR,找我就行。
這樣一來,OSPF不僅有自己的區域內路由、區域間路由,還可以引入外部路由,應對複雜的網絡環境更加得心應手。
小Q:OSPF引入外部明細路由和引入缺省路由的方法有什麼不同?