OSPF協議介紹
OSPF是一種典型的鏈路狀態路由協議。採用OSPF的路由器彼此交換並儲存整個網路的鏈路資訊,從而掌握全網的拓撲結構,獨立計算路由。因為RIP路由協議不能服務於大型網路,所以,IETF的IGP工作組特別開發出鏈路狀態協議——OSPF。目前廣為使用的是OSPF第二版,最新標準為RFC2328。
OSPF作為一種內部閘道器協議(Interior Gateway Protocol,IGP),用於在同一個自治域(AS)中的路由器之間釋出路由資訊。區別於距離向量協議(RIP),OSPF具有支援大型網路、路由收斂快、佔用網路資源少等優點,在目前應用的路由協議中佔有相當重要的地位。
基本概念和術語
1. 鏈路狀態
OSPF路由器收集其所在網路區域上各路由器的連線狀態資訊,即鏈路狀態資訊(Link-State),生成鏈路狀態資料庫(Link-State Database)。路由器掌握了該區域上所有路由器的鏈路狀態資訊,也就等於瞭解了整個網路的拓撲狀況。OSPF路由器利用“最短路徑優先演算法(Shortest Path First, SPF)”,獨立地計算出到達任意目的地的路由。
2. 區域
OSPF協議引入“分層路由”的概念,將網路分割成一個“主幹”連線的一組相互獨立的部分,這些相互獨立的部分被稱為“區域” (Area),“主幹”的部分稱為“主幹區域”。每個區域就如同一個獨立的網路,該區域的OSPF路由器只儲存該區域的鏈路狀態。每個路由器的鏈路狀態資料庫都可以保持合理的大小,路由計算的時間、報文數量都不會過大。
3. OSPF網路型別
根據路由器所連線的物理網路不同,OSPF將網路劃分為四種類型:廣播多路訪問型(Broadcast MultiAccess)、非廣播多路訪問型(None Broadcast MultiAccess,NBMA)、點到點型(Point-to-Point)、點到多點型(Point-to-MultiPoint)。
廣播多路訪問型網路如:Ethernet、Token Ring、FDDI。NBMA型網路如:Frame Relay、X.25、SMDS。Point-to-Point型網路如:PPP、HDLC。具體結構如後圖所示。
4. 指派路由器(DR)和備份指派路由器(BDR)
在多路訪問網路上可能存在多個路由器,為了避免路由器之間建立完全相鄰關係而引起的大量開銷,OSPF要求在區域中選舉一個DR。每個路由器都與之建立完全相鄰關係。DR負責收集所有的鏈路狀態資訊,併發布給其他路由器。選舉DR的同時也選舉出一個BDR,在DR失效的時候,BDR擔負起DR的職責。
點對點型網路不需要DR,因為只存在兩個節點,彼此間完全相鄰。 協議組成 OSPF協議由Hello協議、交換協議、擴散協議組成。本文僅介紹Hello協議,其他兩個協議可參考RFC2328中的具體描述。
當路由器開啟一個埠的OSPF路由時,將會從這個埠發出一個Hello報文,以後它也將以一定的間隔週期性地傳送Hello報文。OSPF路由器用Hello報文來初始化新的相鄰關係以及確認相鄰的路由器鄰居之間的通訊狀態。
對廣播型網路和非廣播型多路訪問網路,路由器使用Hello協議選舉出一個DR。在廣播型網路裡,Hello報文使用多播地址224.0.0.5週期性廣播,並通過這個過程自動發現路由器鄰居。在NBMA網路中,DR負責向其他路由器逐一發送Hello報文。
協議操作
第一步:建立路由器的鄰接關係
所謂“鄰接關係”(Adjacency)是指OSPF路由器以交換路由資訊為目的,在所選擇的相鄰路由器之間建立的一種關係。 路由器首先發送擁有自身ID資訊(Loopback埠或最大的 IP地址)的Hello報文。與之相鄰的路由器如果收到這個Hello報文,就將這個報文內的ID資訊加入到自己的Hello報文內。
如果路由器的某埠收到從其他路由器傳送的含有自身ID資訊的Hello報文,則它根據該埠所在網路型別確定是否可以建立鄰接關係。
在點對點網路中,路由器將直接和對端路由器建立起鄰接關係,並且該路由器將直接進入到第三步操作:發現其他路由器。若為MultiAccess 網路, 該路由器將進入選舉步驟。
第二步:選舉DR/BDR
不同型別的網路選舉DR和BDR的方式不同。
MultiAccess網路支援多個路由器,在這種狀況下, OSPF需要建立起作為鏈路狀態和LSA更新的中心節點。選舉利用Hello報文內的ID和優先權(Priority)欄位值來確定。優先權欄位值大小從0到255,優先權值最高的路由器成為DR。如果優先權值大小一樣,則ID值最高的路由器選舉為DR, 優先權值次高的路由器選舉為BDR。優先權值和ID值都可以直接設定。
第三步:發現路由器
在這個步驟中,路由器與路由器之間首先利用Hello報文的ID資訊確認主從關係,然後主從路由器相互交換部分鏈路狀態資訊。每個路由器對資訊進行分析比較,如果收到的資訊有新的內容,路由器將要求對方傳送完整的鏈路狀態資訊。這個狀態完成後,路由器之間建立完全相鄰(Full Adjacency)關係,同時鄰接路由器擁有自己獨立的、完整的鏈路狀態資料庫。
在MultiAccess網路內,DR與BDR互換資訊,並同時與本子網內其他路由器交換鏈路狀態資訊。
在Point-to-Point 或 Point-to-MultiPoint網路中,相鄰路由器之間互換鏈路狀態資訊。
第四步: 選擇適當的路由器
當一個路由器擁有完整獨立的鏈路狀態資料庫後,它將採用SPF演算法計算並建立路由表。OSPF路由器依據鏈路狀態資料庫的內容,獨立地用SPF演算法計算出到每一個目的網路的路徑,並將路徑存入路由表中。
OSPF 利用量度(Cost)計算目的路徑,Cost最小者即為最短路徑。在配置OSPF路由器時可根據實際情況,如鏈路頻寬、時延或經濟上的費用設定鏈路Cost大小。Cost越小,則該鏈路被選為路由的可能性越大。
第五步:維護路由資訊
當鏈路狀態發生變化時,OSPF通過Flooding 過程通告網路上其他路由器。OSPF路由器接收到包含有新資訊的鏈路狀態更新報文,將更新自己的鏈路狀態資料庫,然後用SPF演算法重新計算路由表。在重新計算過程中,路由器繼續使用舊路由表,直到SPF完成新的路由表計算。新的鏈路狀態資訊將傳送給其他路由器。值得注意的是,即使鏈路狀態沒有發生改變,OSPF路由資訊也會自動更新,預設時間為30分鐘。(未完待續)