簡介
OSPF協定是IETF提出的一個使用鏈路狀態算法實現內部網關協定的標準(RFC2328,OSPFv2),由於鏈路狀態選路算法使用SPF計算最短路徑,在網站規模變大時比距離向量算法具有更好的拓展性,因此,OSPF也具有了更好的性能。OSPF的廣泛套用得益於其開放性。為了鼓勵OSPF的推廣,協定標準是完全開放的,其實現和使用無需任何許可費用。這最終使OSPF變得非常流行,成為了域間路由協定的主流和其他路由協定的替代。
OSPF支持負載均衡(LoadingBalancing)和基於服務類型的選路(TOSRouting),也支持多種路由形式,如特定主機路由和子網路由等。若存在到某個路由謎底網路的多條費用相等的最佳通路,OSPF能夠將流量均勻地分配到這幾條路由上。同時,OSPF可支持去往某個目的網路的多條路由,分別對應於某種服務類型(TOS)優先權。在進行分組選路時,路由器可根據IP分組頭中目的IP位址和TOS欄位來選擇路由。OSPF是最早能夠提供域內負載均衡和TOS選路的路由協定之一。
OSPF支持內部的層次化選路,將域區域網路絡劃分成若干區域(Area)。區域自包含的(Self-Contained),區域內的拓撲結構對其他區域隱藏。各個區域能夠合作地利用OSPF進行選路,同時又使個區域保留了獨立改變其內部拓撲結構的能力。這使得OSPF協定更易於拓展和整理,能夠使用於大規模網路。
在信息交換的安全性上,OSPF規定了路由器之間的任何信息交換在必要時都可以經過認證或鑑別(Authentication),以保證只有可信的路由器之間才能傳播選路信息。OSPF支持多種鑑別機制,並且允許各個區域間採用不同的鑑別機制。OSPF對鏈路狀態算法在廣播式網路(如乙太網)中的套用進行了最佳化,以儘可能地利用硬體廣播能力來傳遞鏈路狀態報文。通常鏈路狀態算法的拓撲圖中一個結點代表一個路由器。若K個路由器都連線到乙太網上,在廣播鏈路狀態時,關於這K個路由器的報文將達到K的平方個。為此,OSPF在拓撲結構圖允許一個結點代表一個廣播網路。每個廣播網路上所有路由器傳送鏈路狀態報文,報告該網路中的路由器的鏈路狀態。
層次劃分
OSPF為了便於拓展和管理,支持在AS內部繼續劃分選路層次。在一個AS中網路可以劃分成若干各區域(Area)。區域在OSPF中用來定義AS中的一個路由器和網路中的集合。在OSPF網路中,必須定義一個骨幹區域(區域0)。所有其他非骨幹區域(非0區域)都必須通過一個區域邊界路由器(ABR)連線到區域0。在一個區域內部的路由器之間相互發布和交換鏈路狀態通告,並為該區域建立一個統一的拓撲結構圖(即鏈路狀態資料庫)。在不同區域之間通過ABR相互傳遞有關某一特定網路和拓撲的概括性信息。這樣,對於每一個路由器來說,它保存了有關其所在區域中所有網路及路由器的完整信息,以及有關本區域以外網路及路由器的概括性信息。這樣,每一個路由器都能夠掌握足夠的信息來講分組通過某個合適的ABR轉發到另一個區域中。這種層次化有利於OSPF在大型網路中的拓展。報文格式
OSPF的訊息報文直接封裝在IP分組中傳送。在IP分組中,OSPF報文所對應的協定號W為89。OSPF的報文可以直接利用組播方式來傳達。例如,使用組播地址224.0.0.5可將一個報文傳送到所有的OSPF路由器上;使用組播地址224.0.0.6可將一個報文傳送到所有指派路由器及備用指派路由器上。OSPF報文由24位元組的報文頭即後面的數據區構成,其中,OSPF報文頭中的控制欄位包括:(1)版本號,1位元組,指出本報文所使用的OSPF協定的版本號。
(2)報文類型,1位元組,指出了報文的類型,報文類型的編碼定義入下:
(3)路由器標識,即報文傳送方路由器的32位IP位址。
(4)區域標識符,給出了32比特的區域標識符。
(5)校驗和,16為的校驗和用於保護整個OSPF報文,符合標準的IP校驗和算法。
(6)鑑別類型和鑑別數據,用於進行報文真實性的鑑別和認證。鑑別類型指定報文所使用的鑑別機制。類型0為無鑑別,類型1為簡單口令鑑別,類型2為密碼學鑑別。