OSPF(Open Shortest Path First開放式最短路徑優先)是一個內部網關協議(Interior Gateway Protocol,簡稱IGP),用於在單一自治系統(autonomous system,AS)內決策路由。與RIP相對,OSPF是鏈路狀態路由協議,而RIP是距離向量路由協議。
IETF—爲了滿足建造越來越大基於I P網絡的需要,形成了一個工作組,專門用於開發開放式的、鏈路-狀態路由協議,以便用在大型、異構的I P網絡中。新的路由協議以已經取得一些成功的一系列私人的、和生產商相關的、最短路徑優先( SPF )路由協議爲基礎,SPF在市場上廣泛使用。包括OSPF在內,所有的SPF路由協議基於一個數學算法—D i j k s t r a算法。這個算法能使路由選擇基於鏈路-狀態,而不是距離向量。
O S P F由I E T F在2 0世紀8 0年代末期開發,O S P F是S P F類路由協議中的開放式版本。最初的O S P F規範體現在RFC 11 3 1中。這個第1版( O S P F版本1 )很快被進行了重大改進的版本所代替,這個新版本體現在RFC 1247文檔中。RFC 1247 OSPF稱爲O S P F版本2是爲了明確指出其在穩定性和功能性方面的實質性改進。這個O S P F版本有許多更新文檔,每一個更新都是對開放標準的精心改進。接下來的一些規範出現在RFC 1583、2 1 7 8和2 3 2 8中。
O S P F版本2的最新版體現在RFC 2328中。最新版只會和由RFC 2138、1 5 8 3和1 2 4 7所規範的版本進行互操作。鏈路是路由器接口的另一種說法,因此OSPF也稱爲接口狀態路由協議。OSPF通過路由器之間通告網絡接口的狀態來建立鏈路狀態數據庫,生成最短路徑樹,每個OSPF路由器使用這些最短路徑構造路由表。
OSPF路由協議是一種典型的鏈路狀態(Link-state)的路由協議,一般用於同一個路由域內。在這裏,路由域是指一個自治系統(Autonomous System),即AS,它是指一組通過統一的路由政策或路由協議互相交換路由信息的網絡。在這個AS中,所有的OSPF路由器都維護一個相同的描述這個AS結構的數據庫,該數據庫中存放的是路由域中相應鏈路的狀態信息,OSPF路由器正是通過這個數據庫計算出其OSPF路由表的。
作爲一種鏈路狀態的路由協議,OSPF將鏈路狀態廣播數據包LSA(Link State Advertisement)傳送給在某一區域內的所有路由器,這一點與距離矢量路由協議不同。運行距離矢量路由協議的路由器是將部分或全部的路由表傳遞給與其相鄰的路由器。
OSPF包頭
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| version | type | packet length
|
+---------------+---------------+-------------------------------+
| router ID |
+---------------------------------------------------------------+
| area ID |
+-------------------------------+-------------------------------+
| checksum | authentication type |
+-------------------------------+-------------------------------+
| authentication |
+---------------------------------------------------------------+
| authentication |
+---------------------------------------------------------------+
OSPF快速收斂的一個關鍵原因是它使用了區。記住,IETF使用OSPF想達到的兩個主要目標是:
改善網絡的可擴展性。
快速收斂。
取得兩個目標的關鍵是把網絡分成更小的區。一個區是一些網絡端系統、路由器以及傳輸線路的集合體。每個區由一個惟一的區號定義,這個區號配置在每一個路由器內。定義了相同區號的路由器接口成爲相同區的組成部分。理想情況下,這些區號不是任意定義的。相
反,應該選擇區的邊界以使不同區之間的流量最小。每個區應反映實際的交通模式而非地理或政治邊界。當然,這是理論上的理想情況,在特定環境下可能是不實用的。
OSPF網絡中能支持的區數量受限於區I D的大小。這個域是3 2位的二進制數。因此, 3 2位二進制數的理論最大值應是每一位置爲1,其對應的十進制數爲4 294 967 295。顯然,能支持的實際最大數比這個理論上的最大數小得多。實際上,網絡設計的好壞將決定能在其中支持的最大區數。
1. 路由器類型需要重點記住的是O S P F是一個鏈路-狀態協議。因此,鏈路以及與鏈路相接的路由器端口定義爲區號。基於區成員關係, O S P F網絡中有三種不同類型的路由器:
內部路由器。
區邊界路由器。
骨幹路由器。
具有多個接口的路由器可以屬於兩個或多個區。這樣的路由器成爲區邊界路由器。也就是說,它們把自身的區號與骨幹互聯起來。骨幹路由器是至少有一個接口定義爲屬於區0的路由器。一個區邊界路由器也可能是一個骨幹路由器。任何一個與區0互聯的
區邊界路由器也將成爲骨幹路由器。
內部路由器使其所有定義接口屬於同一區,但這個區不是0區。使用這三種基本的路由器,可以建造高效且可擴展的O S P F網絡。
考慮左圖顯示的三種不同類型的O S P F路由器,需要重點注意的是O S P F支持兩種不同類型的路由:
區內路由
區間路由
它們的名字含義相當明顯。區內路由是自含的,只限於一個區內部的路由器之間的路由。區間路由需要在不同的區之間交換數據。所有的區間路由必須經過區0傳輸,不允許非0區直接和其他區通信。這個層次限制確保了O S P F具有良好的可擴展性,而不會導致鏈路和路由器的混亂。
3. 網絡之間路由
O S P F可以用於互聯不同的網絡。這個網絡可以是另一個完整的O S P F網絡或是一個實現了完全不同路由協議的網絡。把O S P F網絡與其他不同的路由協議相互聯是一項複雜的工作,並要使用一種稱爲路由再分配的技術。這個術語描述了從一個網絡到另一個網絡路由信息的彙總和重新分佈。從非O
S P F網絡來的路由信息彙總和重新分佈到O S P F網絡內。
A S的實際定義有些不固定。這其實沒有關係。真正重要的是O S P F允許爲一個網絡分配自治系統號。一個非常大的O S P F網絡能分成兩個或多個自治系統。這些系統可以通過第四種類型的O S P F路由器—自治系統邊界路由器(autonomous system border router ASBR)來進行互聯。A S B R彙總所有自身A S的路由信息並把彙總情況轉發給對應相鄰的A S B R。A S B R的作用非常類似於一個區邊界路由器。顯然,二者的區別是它們組成了自治系統之間的邊界而不是一個自治系統或網絡內的區邊界。
O S P F是相當複雜的路由協議,有許多性能和穩定性方面增強的特點。因此, O S P F使用大量的數據結構就不是奇怪的現象。每個數據結構或信息類型,用於執行一個特定的任務。所有數據結構共享一個通用頭,稱爲O S P F頭。O S P F頭長度爲2 4字節,包括以下各域:版本號—分配O S P F頭的第一個字節用於標識版本號。當前的版本是2,但是可能會遇到更老的路由器還在運行RFC 11 3 1版本1。RFC 1247、1 5 8 3、2 1 7 8和2 3 2 8都對O S P F版本2的向後兼容作了規範。因此無需進一步的標識。
類型—第二個字節指出5種O S P F報文類型中哪一種附加在頭結構後面。5種類型( H E L L O、數據庫描述、鏈路-狀態請求、鏈路-狀態更新和鏈路-狀態應答)用數字標識。
報文長度—O S P F頭中下面兩個字節用於通知接收節點報文的總長度。報文總長度包括數據和頭
路由器I D—區中的每個路由器被分配一個惟一的、4字節的標識號。O S P F路由器在發送任何O S P F消息給其他路由器之前,用自己的I D號填充該域。
區I D—頭中用4字節標識區號。
校驗和—每個O S P F頭包括一個2字節的校驗和域,用於檢查在傳輸過程中對報文造成的破壞。發送方對每個消息運行數學計算,然後把結果存儲在這個域中。接收方對接收到的報文運行相同的算法並把結果與存儲在校驗和域中的結果進行比較。如果報文無損到達,兩個結果應一樣;不相同,說明O S P F報文在傳輸過程中被破壞。接收方會簡單地把受損報文丟棄。
認證類型—O S P F能通過認證O S P F信息的發送者來防止會導致假路由信息這樣的攻擊。兩字節的認證類型域標識信息中使用的各種認證形式。
認證—頭中剩下的9個字節攜帶的是認證數據,接收方利用此信息來確定信息的發送者。O S P F允許網絡管理員使用各種級別的認證:從無認證,到簡單認證,到最強大的M D認證,基本結構中包含O S P F節點所需的用於決定報文是否應接收並作進一步處理,還是應丟棄的所有信息。在傳輸過程中受損的(校驗和指出這一點)及沒有通過認證的報文會被丟棄。
O S P F使用5種不同的報文類型。每種類型用於支持不同的,專門的網絡功能。這5種類型是:
HELLO報文(類型1 )。
數據庫描述報文(類型2 )。
鏈路-狀態請求報文(類型3 )。
鏈路-狀態更新報文(類型4 )。
鏈路-狀態應答報文(類型5 )。
這5種報文類型有時用編號指明,而不是用名字。所以, O S P F類型5報文實際上是指鏈路-狀態應答報文。所有這些報文類型使用O S P F頭。
當O S P F中的兩個路由器初始化連接時要交換數據庫描述( D D )報文。這個報文類型用於描述,而非實際地傳送O S P F路由器的鏈路-狀態數據庫內容。由於數據庫的內容可能相當長,所以可能需要多個數據庫描述報文來描述整個數據庫。實際上,保留了一個域用於標識數據庫描述報文序列。接收方對報文的重新排序使其能夠真實地複製數據庫描述報文。
D D交換過程按詢問/應答方式進行,在這個過程中,一個路由器作爲主路由器。另一個路由器作爲從路由器,主路由器向從路由器發送它的路由表內容。顯然,主從之間的關係會因每個D
D交換的不同而不同。網絡中的所有路由器會在不同時刻作用,在這個過程中既可能是
主又可能是從。
考慮到實際上有四種不同類型的O S P F路由器—區內路由器、區邊界路由器、自治系統邊界路由器、骨幹路由器—很明顯每種路由器類型有不同的對等實體集,路由器與這些對等實體交換L S A。
內部區路由器
內部的區路由器必須直接和區中的其他路由器交換L S A,其中包括每一個區內部路由器,也包括作爲區成員的區邊界路由器。圖1 3 - 6顯示了本章前面提及的O S P F例子網絡中,在整個區1中轉發或洪泛L S A的情形。需要重點注意的是相同區中的O S P F路由器無需彼此直接相連就能共享L S A信息。O S P F路由器直接把L S A報文發送到區中每一個知道的路由器,並且使用任何可用的鏈路來轉發那些報文。
蘊含在圖1 3 - 5中不太被注意的一點是收斂能夠相當快地發生。其中有兩個原因,第一個原因是O S P F路由器能同時直接尋址併發送L S A至區中所有的路由器(洪泛),這和R I P使用的“鄰居至鄰居”的收斂方法完全不同。這樣的結果是區內的路由器幾乎同時收斂到新拓撲結構。
中國協議分析網:http://www.cnpaf.net/
《現代交換原理與通信網技術》—北京郵電大學出版社