誰懂啊!OSPF路由協議看這篇就夠了!

2023.06.09

誰懂啊!OSPF路由協議看這篇就夠了!


為了解決這個問題,OSPF協議指定一台路由器作為“組長”——DR(Designated Router,指定路由器)來負責傳遞信息。所有的路由器都只將路由信息發送給DR,再由DR將路由信息發送給本網段內的其他路由器。

趣解路由系列發布之後,文檔君收到了好多關於OSPF的留言。為了滿足各位粉絲們的要求,這不,文檔君帶著大量OSPF乾貨,來啦~

PART.01RIP為啥“過氣”?

如果想好好說說OSPF,那就不得不從最“古老”的路由協議之一—RIP(Routing Information Protocol,路由信息協議)開始講起。

RIP最突出的特性是使用跳數(報文經過路由器的個數)作為路由好壞的度量:跳數最小即認為該路由最優。

圖片

隨著網絡的發展,鏈路(設備之間的傳輸通道)的種類和特性不斷升級變化,僅僅考慮跳數已經不能客觀反映路由的優劣了。

例如到達同一個目的地,有兩條路徑:A→B,A→C→D→B。

圖片

雖然A→B路徑最短,但是實際應用的時候並不合適,以網絡帶寬和鏈路狀態來衡量網絡質量會更加合理,比如在上圖中採用帶寬更大的A→C→D→B路徑效果更好。

同時,RIP限制最大跳數為15,跳數16就變成了RIP路由協議“不可到達的遠方”~因此RIP無法用於搭建大規模的網絡。

圖片

RIP“過氣”不只因為可擴展性差,還有收斂速度慢、易產生環路的缺點,但是在這裡就不過多介紹啦~

圖片

PART.02OSPF是如何計算路由的?

接下來,就要隆重介紹下動態路由協議中的當紅炸子雞—OSPF(Open Shortest Path First,開放最短路徑優先)啦!

與RIP不同,OSPF是一種鏈路狀態路由協議,它可以收集路由器週邊的拓撲變化,並形成一個靠譜的路由結構。

如果說RIP提供的是路標,只告訴你下一步該怎麼走,轉來轉去還是容易迷路(產生環路)。那麼OSPF提供的就是地圖了,每個運行OSPF協議的路由器上都有一張完整的網絡圖。地圖在手,迷路不再有!

圖片

圖片

OSPF的花費(cost)可以是路由距離、鏈路的吞吐量或鏈路的可靠性,這種路由度量相比於RIP協議的跳數更加靈活和準確,並且適用於更大更複雜的網絡。

以下圖所示的網絡為例,說明OSPF計算出路由的過程。

下圖是由四台路由器組成的網絡,連線旁邊標註了從一台路由器到另一台路由器所需要的花費(cost)。為簡化問題,我們假定同一鏈路連接的兩台路由器之間互相發送報文所需花費是相同的。

圖片

首先,每台路由器都根據自己周圍的網絡拓撲結構生成一條LSA(鏈路狀態廣播),並通過相互之間發送OSPF協議報文將這條LSA發送給網絡中其他所有的路由器。這樣每台路由器都收到了其他路由器的LSA。將所有的LSA放在一起稱作LSDB(鏈路狀態數據庫)。顯然,這四台路由器的LSDB都是相同的。

圖片

其次,由於一條LSA是對一台路由器周圍網絡拓撲結構的描述,那麼LSDB則是對整個網絡拓撲結構的描述。路由器將LSDB轉換成一張矢量權重圖,這張圖便是對整個網絡拓撲結構的真實反映。那麼,這四台路由器得到的是一張完全相同的圖。

圖片

最後也是最重要的是,每台路由器都會以自己為根節點,使用最短路徑優先(SPF)算法計算出一顆最短路徑樹(選擇cost值最小的那條路徑),通過最短路徑樹生成到網絡中其他路由器的最短路由,形成路由表。這4台路由器各自得到的路由表是不同的。

圖片

從上面的分析可以得出,OSPF協議計算出路由主要有以下3個主要步驟。

  1. 描述本路由器周邊的網絡拓撲結構,並生成LSA。
  2. 將自己生成的LSA在自治系統里傳播,並同時收集所有的其他路由器生成的LSA。
  3. 根據收集的所有LSA計算出路由。

OSPF計算路由的方法就是這麼簡單~~

那為什麼說OSPF更適合大型網絡呢?

PART.04OSPF如何適應大型網絡的?

我們一起來看看OSPF適應大型網絡有哪些高招!

回想我們上學的時候,老師是怎麼管理一個班的學生呢?

文檔君替你回答:當然是分小組、選組長啦!

分小組:劃分網絡區域

OSPF應用於大型網絡時,比如網絡中可能有幾十台或者上百台路由器。

當這些路由器運行OSPF協議,並傳遞、收集LSA時,網絡中會充斥著這些協議報文,這樣的LSDB容量會很大,運行SPF算法會很慢,不利於路由的正常計算和轉發。

圖片

OSPF中通過設置區域來解決這個問題。如圖所示,將一個大型網絡分割成若干個小網絡,每個小網絡稱為一個區域(Area),用一個數字來對區域編號。其中,區域0稱為骨幹區域,其他非0編號的區域稱之為非骨幹區域,並規定非骨幹區域必須和骨幹區域相連。

圖片

經過這樣的處理後,OSPF有以下優點。

  • 只有同一區域內路由器的LSDB會保持同步,路由的變化首先在本區域內更新。
  • 路由更新信息在傳遞給別的區域時,可在區域邊界路由器(ABR)上進行路由聚合,以減少通告到其他區域的LSA數量,可將網絡拓撲變化帶來的影響最小化。

這樣可以很好地解決路由計算和轉發速度慢的問題。當然,在實際組網應用時,OSPF還根據不同的區域特點,定義了很多計算路由的優化方法,這裡就不一一展開描述了。

我們知道在OSPF協議中要求每個區域與骨幹區域(Area 0)必須直接相連,但是實際組網中,網絡情況非常複雜,有時候在劃分區域時,無法保證每個區域都滿足這個要求。這時候就需要虛鏈接技術來解決這個問題。

虛鏈接是指在兩台ABR之間,穿過一個非骨幹區域(也稱為轉換區域,Transit Area),建立的一條邏輯上的連接通道(需在兩端的ABR上同時配置)。

圖片

如上圖所示,在路由器C和路由器E之間建立了一條虛鏈接,使Area3和骨幹區域Area0之間有了邏輯連接,Area1為轉換區域。

“邏輯通道”是指兩台ABR之間的其他運行OSPF的路由器只是轉發報文,相當於在兩個ABR之間形成了一個點到點的連接,因此在這個連接上,與物理口一樣可以配置接口的各類參數。

選組長:OSPF選舉

在廣播和NBMA(Non-Broadcast Multiple Access,非廣播多路訪問)類型的網絡上,任意兩台路由器都需要傳遞路由信息。如果網絡中有N台路由器,那麼則要建立“N×(N-1)/2”次的傳遞。這是沒有必要的,而且浪費了寶貴的帶寬資源。

圖片

為了解決這個問題,OSPF協議指定一台路由器作為“組長”——DR(Designated Router,指定路由器)來負責傳遞信息。所有的路由器都只將路由信息發送給DR,再由DR將路由信息發送給本網段內的其他路由器。

兩台不是DR的路由器(DR Other)之間不再建立鄰接關係,也不再交換任何路由信息。這樣在同一個網段之間只需要建立N-1個鄰接關係,每次路由變化只需要進行2×(N-1)次的傳遞即可。

圖片

選組長的方法雖然非常有效,但是萬一組長不在,整個組的同學誰來負責管理呢?

所以OSPF也定義了“副組長”—BDR(Backup Designate Router,備用指定路由器)。

BDR是DR的一個備份。在選舉DR的同時也選舉出BDR,BDR也和本網段內的所有路由器建立鄰接關係並交換路由信息。

圖片

一旦DR失效,BDR會立即變成DR。由於不需要重新選舉,而且鄰接關係事先已經建立,所以BDR替代DR的過程非常短暫。BDR成功“上位”為DR後,還需要再重新選舉出一個新的BDR,但是這個選舉過程不會影響路由的計算。

通過前面對OSPF的介紹,不知道粉絲們是否有所收穫呢?