OSPF起源
IETF—為了滿足建造越來越大基于IP網絡的需要,形成了一個工作組,專門用于開發開放式的、鍊路-狀态路由協議,以便用在大型、異構的IP網絡中。新的路由協議以已經取得一些成功的一系列私人的、和生産商相關的、最短路徑優先(SPF)路由協議為基礎,SPF在市場上廣泛使用。包括OSPF在内,所有的SPF路由協議基于一個數學算法—D i j k s t r a算法。這個算法能使路由選擇基于鍊路-狀态,而不是距離向量。
路由協議OSPF全稱為Open Shortest Path First,也就開放的最短路徑優先協議,因為OSPF是由IETF開發的,它的使用不受任何廠商限制,所有人都可以使用,所以稱為開放的,而最短路徑優先(SPF)隻是OSPF的核心思想,其使用的算法是Dijkstra算法,最短路徑優先并沒有太多特殊的含義,并沒有任何一個路由協議是最長路徑優先的,所有協議,都會選最短的。
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網絡中能支持的區數量受限于區ID的大小。這個域是32位的二進制數。因此,32位二進制數的理論最大值應是每一位置為1,其對應的十進制數為4 294 967 295。顯然,能支持的實際最大數比這個理論上的最大數小得多。實際上,網絡設計的好壞将決定能在其中支持的最大區數。
1.路由器類型
需要重點記住的是O S P F是一個鍊路-狀态協議。因此,鍊路以及與鍊路相接的路由器端口定義為區号。基于區成員關系, O S PF網絡中有三種不同類型的路由器:
内部路由器。
區邊界路由器。
骨幹路由器。
具有多個接口的路由器可以屬于兩個或多個區。這樣的路由器成為區邊界路由器。也就是說,它們把自身的區号與骨幹互聯起來。骨幹路由器是至少有一個接口定義為屬于區0的路由器。一個區邊界路由器也可能是一個骨幹路由器。任何一個與區0互聯的
區邊界路由器也将成為骨幹路由器。
内部路由器使其所有定義接口屬于同一區,但這個區不是0區。使用這三種基本的路由器,可以建造高效且可擴展的O S P F網絡。
2.路由類型
考慮左圖顯示的三種不同類型的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網絡内。
O S P F網絡把所有以這種方式學習來的路由标記為外部的。互聯兩個不同的O S P F網絡更簡單一些,因為無需把一種路由信息耗費轉變為另一協議能理解的形式。而且, O S P F使建造自治系統成為可能,一個自治系統( A S )是一個自含網絡。字面上講, A S是一個網絡管理員或一組網絡管理員使用一個路由協議的系統。
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具有如此可擴展性的一個原因是它的路由更新機制。O S P F使用L S A在O S P F節點之中共享路由信息。這些廣播信息會在整個區中進行傳播但不會超越一個區。因此,區中的每一個路由器都知道本區的拓撲。然而,一個區的拓撲對區外是不可知的。
考慮到實際上有四種不同類型的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使用的“鄰居至鄰居”的收斂方法完全不同。這樣的結果是區内的路由器幾乎同時收斂到新拓撲結構。



















