先前已經介紹過RIP、IGRP和EIGRP等等路由演算法,接下來本文將說明OSPF路由協定。OSPF是以最短路徑為主的路由協定,全名是Open Shortest Path First。OSPF路由協定是屬於IGP(Interior Gateway Protocol)協定,而且也是Classless的Link State路由協定。
2.在Backbone Area內,Router B被稱為「自治系統邊界路由器(Autonomous System Boundary Router,ASBR)」,用來連接外部路由網域和自治系統。
3.在Non-Backbone Area中,路由器D和路由器E在OSPF路由協定中稱為Area Border Routers(ABRs),而在IS-IS路由協定中則被稱做L1/L2 Routers。這種路由器用於連接不同的Area,並維護所連接的Area的Link-State路由資料庫,當然也負責轉送封包到其他的Area。
4.在Non-Backbone Area內,除了ABR(也就是L1/L2 Routers)之外的其他路由器,在OSPF路由協定中都稱為Non-Backbone Internal Router,而在IS-IS路由協定中則稱做L1 Routers。因為這種路由器是接在Non-Backbone Area的內部,所以其接觸的網路只限於Non-Backbone Area內部,也因此,這些路由器只需要維護所屬Area相對應的路由資料庫即可。
而Router A當然是屬於其他的自治系統。另外,ABR會向內部Area內的其他路由器發送預設路由設定,讓所有其他路由器的預設路由都指向ABR,如此一來,當Non-Backbone Internal Router要發送網路封包至其他Area的時候,就會送到ABR的手上。
階層性路由方式
OSPF路由協定的運作方式,事實上是階層式的,藉由階層式的概念,OSPF路由協定可以將大型的網路分成多個「區域」,每一個區域稱為Area。
當然,原本的大型網路必須是同一個自治系統,OSPF路由協定才有辦法為這個大型網路做處理。
分成各個區域後,區域與區域之間可以做路由,也能夠互相傳遞資料,這種區域之間的傳遞路由,稱之為Inter-area Routing。
不過,位於同一個區域內,如果要重新計算路由路徑,都會發生在同一個區域之中,也就是說,這樣的動作並不會影響到其他的區域的運作。關於OSPF路由協定的階層式架構,可以用圖2來說明:
|
▲圖2 OSPF路由協定的階層式架構。 |
在圖2中,區域0就是Backbone Area,而區域1和區域2都稱之為Non-backbone Area。
由該圖的架構中可以看出這裡的三個區域都是分別獨立的,因此區域2若發生網路的問題,則區域0和區域1並不需要透過最短路徑優先演算法重新計算路由路徑,因為各個區域之間互相獨立,並不直接影響。
由於具備這樣獨特的設計,因此OSPF路由協定具有以下這些優點:
- 1.減少最短路徑優先演算法的計算次數
- 2.降低路由表格(Routing Table)的資料筆數
- 3.減少Link-State頻繁更新所造成的負擔
- 4.雖然透過階層式架構分成多層,仍然保有處於相同自治系統的好處。
- 5.加快網路路徑收斂的速度
最短路徑優先演算法
「最短路徑優先演算法」的英文名稱是Shortest Path First Algorithm,有時候會簡稱SPF演算法。這個演算法是以「最短路徑」為考量來計算出由某一台路由器設備到達其他各個路由器設備的最佳網路路徑。
計算的時候,這個演算法會利用一個樹狀結構來比較到達各個路由器設備的路徑距離,而每次計算的時候,會把每一台路由器設備放到樹狀結構的最頂端,之後才會開始進行比較的動作。如圖3所示:
|
圖3 網路架構圖範例1。 |
圖3顯示的就是要計算以路由器A為起始點到達每一段網路的花費。藉由標示出各段網路路徑的成本,就可以得知從路由器A到達每一段網路的成本是多少,以便決定最佳的網路路徑。
若是想從路由器A發送網路封包到220.110.8.0的網路區段,那麼最好的路徑如下:先由路由器A發送給路由器C,再由路由器C發送給路由器B,接著路由器B再透過路由器D傳送資料到220.110.8.0的網路。
因為從路由器A透過路由器C傳給路由器B,其成本只要5+5=10,但是若從路由器A直接發送給路由器B則成本要15。
OSPF路由協定計算各段網路成本的公式如下,也就是10的8次方除以網路頻寬值,而網路頻寬值的單位是bps:
由這個計算公式也可以輕易地看出,如果網路速度越快,頻寬就越大,其公式中的分母就越大,成本就越小。相反地,網路慢的區段算出來的成本就會比較高。
此外,OSPF路由協定的LSA封包會透過穩定的方式傳送到同一個區域內的每一台路由器,以便保證每一台路由器的資料都是相同的。
每一台路由器設備會把這些資料儲存到自己的Topological Database內,然後每一台路由器設備再去計算屬於自己的路由資訊。
計算的時候,會將自己當作是演算法中的根節點(Root Node),也就是從網路路徑的出發點來開始計算。
這裡所提到的最短路徑優先演算法是採用Dijkstra的演算法來計算,雖然每一台路由器設備都會計算屬於自己的路徑,但這些路由器設備所根據的資料都是相同的。