OSPF協(xié)議介紹
一、基本概念和術(shù)語(yǔ)
1. 鏈路狀態(tài)
OSPF路由器收集其所在網(wǎng)絡(luò)區(qū)域上各路由器的連接狀態(tài)信息,即鏈路狀態(tài)信息(Link-State),生成鏈路狀態(tài)數(shù)據(jù)庫(kù)(Link-State Database)。路由器掌握了該區(qū)域上所有路由器的鏈路狀態(tài)信息,也就等于了解了整個(gè)網(wǎng)絡(luò)的拓?fù)錉顩r。OSPF路由器利用“最短路徑優(yōu)先算法(Shortest Path First, SPF)”,獨(dú)立地計(jì)算出到達(dá)任意目的地的路由。
2. 區(qū)域
OSPF協(xié)議引入“分層路由”的概念,將網(wǎng)絡(luò)分割成一個(gè)“主干”連接的一組相互獨(dú)立的部分,這些相互獨(dú)立的部分被稱為“區(qū)域”(Area),“主干”的部分稱為“主干區(qū)域”。每個(gè)區(qū)域就如同一個(gè)獨(dú)立的網(wǎng)絡(luò),該區(qū)域的OSPF路由器只保存該區(qū)域的鏈路狀態(tài)。每個(gè)路由器的鏈路狀態(tài)數(shù)據(jù)庫(kù)都可以保持合理的大小,路由計(jì)算的時(shí)間、報(bào)文數(shù)量都不會(huì)過(guò)大。
3. OSPF網(wǎng)絡(luò)類型
根據(jù)路由器所連接的物理網(wǎng)絡(luò)不同,OSPF將網(wǎng)絡(luò)劃分為四種類型:廣播多路訪問(wèn)型(Broadcast multiAccess)、非廣播多路訪問(wèn)型(None Broadcast MultiAccess,NBMA)、點(diǎn)到點(diǎn)型(Point-to-Point)、點(diǎn)到多點(diǎn)型(Point-to-MultiPoint)。
廣播多路訪問(wèn)型網(wǎng)絡(luò)如:Ethernet、Token Ring、FDDI。NBMA型網(wǎng)絡(luò)如:Frame Relay、X.25、SMDS。Point-to-Point型網(wǎng)絡(luò)如:PPP、HDLC。
4. 指派路由器(DR)和備份指派路由器(BDR)
在多路訪問(wèn)網(wǎng)絡(luò)上可能存在多個(gè)路由器,為了避免路由器之間建立完全相鄰關(guān)系而引起的大量開(kāi)銷,OSPF要求在區(qū)域中選舉一個(gè)DR。每個(gè)路由器都與之建立完全相鄰關(guān)系。DR負(fù)責(zé)收集所有的鏈路狀態(tài)信息,并發(fā)布給其他路由器。選舉DR的同時(shí)也選舉出一個(gè)BDR,在DR失效的時(shí)候,BDR擔(dān)負(fù)起DR的職責(zé)。
點(diǎn)對(duì)點(diǎn)型網(wǎng)絡(luò)不需要DR,因?yàn)橹淮嬖趦蓚€(gè)節(jié)點(diǎn),彼此間完全相鄰。 協(xié)議組成OSPF協(xié)議由Hello協(xié)議、交換協(xié)議、擴(kuò)散協(xié)議組成。本文僅介紹Hello協(xié)議,其他兩個(gè)協(xié)議可參考RFC2328中的具體描述。
當(dāng)路由器開(kāi)啟一個(gè)端口的OSPF路由時(shí),將會(huì)從這個(gè)端口發(fā)出一個(gè)Hello報(bào)文,以后它也將以一定的間隔周期性地發(fā)送Hello報(bào)文。OSPF路由器用Hello報(bào)文來(lái)初始化新的相鄰關(guān)系以及確認(rèn)相鄰的路由器鄰居之間的通信狀態(tài)。
對(duì)廣播型網(wǎng)絡(luò)和非廣播型多路訪問(wèn)網(wǎng)絡(luò),路由器使用Hello協(xié)議選舉出一個(gè)DR。在廣播型網(wǎng)絡(luò)里,Hello報(bào)文使用多播地址224.0.0.5周期性廣播,并通過(guò)這個(gè)過(guò)程自動(dòng)發(fā)現(xiàn)路由器鄰居。在NBMA網(wǎng)絡(luò)中,DR負(fù)責(zé)向其他路由器逐一發(fā)送Hello報(bào)文。
二、協(xié)議操作
第一步:建立路由器的鄰接關(guān)系
所謂“鄰接關(guān)系”(Adjacency)是指OSPF路由器以交換路由信息為目的,在所選擇的相鄰路由器之間建立的一種關(guān)系。
路由器首先發(fā)送擁有自身ID信息(Loopback端口或最大的IP地址)的Hello報(bào)文。與之相鄰的路由器如果收到這個(gè)Hello報(bào)文,就將這個(gè)報(bào)文內(nèi)的ID信息加入到自己的Hello報(bào)文內(nèi)。
如果路由器的某端口收到從其他路由器發(fā)送的含有自身ID信息的Hello報(bào)文,則它根據(jù)該端口所在網(wǎng)絡(luò)類型確定是否可以建立鄰接關(guān)系。
在點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)中,路由器將直接和對(duì)端路由器建立起鄰接關(guān)系,并且該路由器將直接進(jìn)入到第三步操作:發(fā)現(xiàn)其他路由器。若為MultiAccess 網(wǎng)絡(luò), 該路由器將進(jìn)入選舉步驟。
第二步:選舉DR/BDR
不同類型的網(wǎng)絡(luò)選舉DR和BDR的方式不同。
MultiAccess網(wǎng)絡(luò)支持多個(gè)路由器,在這種狀況下, OSPF需要建立起作為鏈路狀態(tài)和LSA更新的中心節(jié)點(diǎn)。選舉利用Hello報(bào)文內(nèi)的ID和優(yōu)先權(quán)(Priority)字段值來(lái)確定。優(yōu)先權(quán)字段值大小從0到255,優(yōu)先權(quán)值最高的路由器成為DR。如果優(yōu)先權(quán)值大小一樣,則ID值最高的路由器選舉為DR,優(yōu)先權(quán)值次高的路由器選舉為BDR。優(yōu)先權(quán)值和ID值都可以直接設(shè)置。
第三步:發(fā)現(xiàn)路由器
在這個(gè)步驟中,路由器與路由器之間首先利用Hello報(bào)文的ID信息確認(rèn)主從關(guān)系,然后主從路由器相互交換部分鏈路狀態(tài)信息。每個(gè)路由器對(duì)信息進(jìn)行分析比較,如果收到的信息有新的內(nèi)容,路由器將要求對(duì)方發(fā)送完整的鏈路狀態(tài)信息。這個(gè)狀態(tài)完成后,路由器之間建立完全相鄰(Full Adjacency)關(guān)系,同時(shí)鄰接路由器擁有自己獨(dú)立的、完整的鏈路狀態(tài)數(shù)據(jù)庫(kù)。
在MultiAccess網(wǎng)絡(luò)內(nèi),DR與BDR互換信息,并同時(shí)與本子網(wǎng)內(nèi)其他路由器交換鏈路狀態(tài)信息。
Point-to-Point 或 Point-to-MultiPoint網(wǎng)絡(luò)中,相鄰路由器之間信息。
第四步: 選擇適當(dāng)?shù)穆酚善?
當(dāng)一個(gè)路由器擁有完整獨(dú)立的鏈路狀態(tài)數(shù)據(jù)庫(kù)后,它將采用SPF算法計(jì)算并創(chuàng)建路由表。OSPF路由器依據(jù)鏈路狀態(tài)數(shù)據(jù)庫(kù)的內(nèi)容,獨(dú)立地用SPF算法計(jì)算出到每一個(gè)目的網(wǎng)絡(luò)的路徑,并將路徑存入路由表中。
OSPF利用量度(Cost)計(jì)算目的路徑,Cost最小者即為最短路徑。在配置OSPF路由器時(shí)可根據(jù)實(shí)際情況,如鏈路帶寬、時(shí)延或經(jīng)濟(jì)上的費(fèi)用設(shè)置鏈路Cost大小。Cost越小,則該鏈路被選為路由的可能性越大。
第五步:維護(hù)路由信息
當(dāng)鏈路狀態(tài)發(fā)生變化時(shí),OSPF通過(guò)Flooding 過(guò)程通告網(wǎng)絡(luò)上其他路由器。OSPF路由器接收到包含有新信息的鏈路狀態(tài)更新報(bào)文,將更新自己的鏈路狀態(tài)數(shù)據(jù)庫(kù),然后用SPF算法重新計(jì)算路由表。在重新計(jì)算過(guò)程中,路由器繼續(xù)使用舊路由表,直到SPF完成新的路由表計(jì)算。新的鏈路狀態(tài)信息將發(fā)送給其他路由器。值得注意的是,即使鏈路狀態(tài)沒(méi)有發(fā)生改變,OSPF路由信息也會(huì)自動(dòng)更新,默認(rèn)時(shí)間為30分鐘。
相關(guān)文章
防火墻是關(guān)鍵控制還是全網(wǎng)服務(wù)
防火墻是關(guān)鍵控制還是全網(wǎng)服務(wù)...2007-09-09使用cisco路由器實(shí)現(xiàn)IPV6 tunnel
使用cisco路由器實(shí)現(xiàn)IPV6 tunnel...2007-09-09