——隨著Internet技術(shù)在全球范圍的飛速發(fā)展,OSPF已成為目前Internet廣域網(wǎng)和Intranet企業(yè)網(wǎng)采用最多、應(yīng)用最廣泛的路由協(xié)議之一。OSPF(Open Shortest Path First)路由協(xié)議是由IETF(Internet Engineering Task Force)IGP工作小組提出的,是一種基于SPF算法的路由協(xié)議,目前使用的OSPF協(xié)議是其第二版,定義于RFC1247和RFC1583。
1.概述
——OSPF路由協(xié)議是一種典型的鏈路狀態(tài)(Link-state)的路由協(xié)議,一般用于同一個路由域內(nèi)。在這里,路由域是指一個自治系統(tǒng)(Autonomous System),即AS,它是指一組通過統(tǒng)一的路由政策或路由協(xié)議互相交換路由信息的網(wǎng)絡(luò)。在這個AS中,所有的OSPF路由器都維護(hù)一個相同的描述這個AS結(jié)構(gòu)的數(shù)據(jù)庫,該數(shù)據(jù)庫中存放的是路由域中相應(yīng)鏈路的狀態(tài)信息,OSPF路由器正是通過這個數(shù)據(jù)庫計算出其OSPF路由表的。
——作為一種鏈路狀態(tài)的路由協(xié)議,OSPF將鏈路狀態(tài)廣播數(shù)據(jù)包LSA(Link State Advertisement)傳送給在某一區(qū)域內(nèi)的所有路由器,這一點與距離矢量路由協(xié)議不同。運行距離矢量路由協(xié)議的路由器是將部分或全部的路由表傳遞給與其相鄰的路由器。
2.數(shù)據(jù)包格式
——OSPF路由協(xié)議的數(shù)據(jù)包格式如下圖所示:
附圖 1:OSPF路由協(xié)議數(shù)據(jù)包格式
——在OSPF路由協(xié)議的數(shù)據(jù)包中,其數(shù)據(jù)包頭長為24個字節(jié),包含如下8個字段:
* Version number-定義所采用的OSPF路由協(xié)議的版本。
* Type-定義OSPF數(shù)據(jù)包類型。OSPF數(shù)據(jù)包共有五種:
* Hello-用于建立和維護(hù)相鄰的兩個OSPF路由器的關(guān)系,該數(shù)據(jù)包是周期性地發(fā)送的。
* Database Description-用于描述整個數(shù)據(jù)庫,該數(shù)據(jù)包僅在OSPF初始化時發(fā)送。
* Link state request-用于向相鄰的OSPF路由器請求部分或全部的數(shù)據(jù),這種數(shù)據(jù)包是在當(dāng)路由器發(fā)現(xiàn)其數(shù)據(jù)已經(jīng)過期時才發(fā)送的。
* Link state update-這是對link state請求數(shù)據(jù)包的響應(yīng),即通常所說的LSA數(shù)據(jù)包。
* Link state acknowledgment-是對LSA數(shù)據(jù)包的響應(yīng)。
* Packet length-定義整個數(shù)據(jù)包的長度。
* Router ID-用于描述數(shù)據(jù)包的源地址,以IP地址來表示。
* Area ID-用于區(qū)分OSPF數(shù)據(jù)包屬于的區(qū)域號,所有的OSPF數(shù)據(jù)包都屬于一個特定的OSPF區(qū)域。
* Checksum-校驗位,用于標(biāo)記數(shù)據(jù)包在傳遞時有無誤碼。
* Authentication type-定義OSPF驗證類型。
* Authentication-包含OSPF驗證信息,長為8個字節(jié)。
3.OSPF基本算法
3.1 SPF算法及最短路徑樹
——SPF算法是OSPF路由協(xié)議的基礎(chǔ)。SPF算法有時也被稱為Dijkstra算法,這是因為最短路徑優(yōu)先算法SPF是Dijkstra發(fā)明的。SPF算法將每一個路由器作為根(ROOT)來計算其到每一個目的地路由器的距離,每一個路由器根據(jù)一個統(tǒng)一的數(shù)據(jù)庫會計算出路由域的拓?fù)浣Y(jié)構(gòu)圖,該結(jié)構(gòu)圖類似于一棵樹,在SPF算法中,被稱為最短路徑樹。在OSPF路由協(xié)議中,最短路徑樹的樹干長度,即OSPF路由器至每一個目的地路由器的距離,稱為OSPF的Cost,其算法為:Cost = 100×106/鏈路帶寬
——在這里,鏈路帶寬以bps來表示。也就是說,OSPF的Cost 與鏈路的帶寬成反比,帶寬越高,Cost越小,表示OSPF到目的地的距離越近。舉例來說,F(xiàn)DDI或快速以太網(wǎng)的Cost為1,2M串行鏈路的Cost為48,10M以太網(wǎng)的Cost為10等。
3.2 鏈路狀態(tài)算法
——作為一種典型的鏈路狀態(tài)的路由協(xié)議,OSPF還得遵循鏈路狀態(tài)路由協(xié)議的統(tǒng)一算法。鏈路狀態(tài)的算法非常簡單,在這里將鏈路狀態(tài)算法概括為以下四個步驟:
當(dāng)路由器初始化或當(dāng)網(wǎng)絡(luò)結(jié)構(gòu)發(fā)生變化(例如增減路由器,鏈路狀態(tài)發(fā)生變化等)時,路由器會產(chǎn)生鏈路狀態(tài)廣播數(shù)據(jù)包LSA(Link-State Advertisement),該數(shù)據(jù)包里包含路由器上所有相連鏈路,也即為所有端口的狀態(tài)信息。
所有路由器會通過一種被稱為刷新(Flooding)的方法來交換鏈路狀態(tài)數(shù)據(jù)。Flooding是指路由器將其LSA數(shù)據(jù)包傳送給所有與其相鄰的OSPF路由器,相鄰路由器根據(jù)其接收到的鏈路狀態(tài)信息更新自己的數(shù)據(jù)庫,并將該鏈路狀態(tài)信息轉(zhuǎn)送給與其相鄰的路由器,直至穩(wěn)定的一個過程。
當(dāng)網(wǎng)絡(luò)重新穩(wěn)定下來,也可以說OSPF路由協(xié)議收斂下來時,所有的路由器會根據(jù)其各自的鏈路狀態(tài)信息數(shù)據(jù)庫計算出各自的路由表。該路由表中包含路由器到每一個可到達(dá)目的地的Cost以及到達(dá)該目的地所要轉(zhuǎn)發(fā)的下一個路由器(next-hop)。
第4個步驟實際上是指OSPF路由協(xié)議的一個特性。當(dāng)網(wǎng)絡(luò)狀態(tài)比較穩(wěn)定時,網(wǎng)絡(luò)中傳遞的鏈路狀態(tài)信息是比較少的,或者可以說,當(dāng)網(wǎng)絡(luò)穩(wěn)定時,網(wǎng)絡(luò)中是比較安靜的。這也正是鏈路狀態(tài)路由協(xié)議區(qū)別與距離矢量路由協(xié)議的一大特點。
4.OSPF路由協(xié)議的基本特征
——前文已經(jīng)說明了OSPF路由協(xié)議是一種鏈路狀態(tài)的路由協(xié)議,為了更好地說明OSPF路由協(xié)議的基本特征,我們將OSPF路由協(xié)議與距離矢量路由協(xié)議之一的RIP(Routing Information Protocol)作一比較,歸納為如下幾點:
——RIP路由協(xié)議中用于表示目的網(wǎng)絡(luò)遠(yuǎn)近的唯一參數(shù)為跳(HOP),也即到達(dá)目的網(wǎng)絡(luò)所要經(jīng)過的路由器個數(shù)。在RIP路由協(xié)議中,該參數(shù)被限制為最大15,也就是說RIP路由信息最多能傳遞至第16個路由器;對于OSPF路由協(xié)議,路由表中表示目的網(wǎng)絡(luò)的參數(shù)為Cost,該參數(shù)為一虛擬值,與網(wǎng)絡(luò)中鏈路的帶寬等相關(guān),也就是說OSPF路由信息不受物理跳數(shù)的限制。并且,OSPF路由協(xié)議還支持TOS(Type of Service)路由,因此,OSPF比較適合應(yīng)用于大型網(wǎng)絡(luò)中。
——RIP路由協(xié)議不支持變長子網(wǎng)屏蔽碼(VLSM),這被認(rèn)為是RIP路由協(xié)議不適用于大型網(wǎng)絡(luò)的又一重要原因。采用變長子網(wǎng)屏蔽碼可以在最大限度上節(jié)約IP地址。OSPF路由協(xié)議對VLSM有良好的支持性。
——RIP路由協(xié)議路由收斂較慢。RIP路由協(xié)議周期性地將整個路由表作為路由信息廣播至網(wǎng)絡(luò)中,該廣播周期為30秒。在一個較為大型的網(wǎng)絡(luò)中,RIP協(xié)議會產(chǎn)生很大的廣播信息,占用較多的網(wǎng)絡(luò)帶寬資源;并且由于RIP協(xié)議30秒的廣播周期,影響了RIP路由協(xié)議的收斂,甚至出現(xiàn)不收斂的現(xiàn)象。而OSPF是一種鏈路狀態(tài)的路由協(xié)議,當(dāng)網(wǎng)絡(luò)比較穩(wěn)定時,網(wǎng)絡(luò)中的路由信息是比較少的,并且其廣播也不是周期性的,因此OSPF路由協(xié)議即使是在大型網(wǎng)絡(luò)中也能夠較快地收斂。
——在RIP協(xié)議中,網(wǎng)絡(luò)是一個平面的概念,并無區(qū)域及邊界等的定義。隨著無級路由CIDR概念的出現(xiàn),RIP協(xié)議就明顯落伍了。在OSPF路由協(xié)議中,一個網(wǎng)絡(luò),或者說是一個路由域可以劃分為很多個區(qū)域area,每一個區(qū)域通過OSPF邊界路由器相連,區(qū)域間可以通過路由總結(jié)(Summary)來減少路由信息,減小路由表,提高路由器的運算速度。一個典型的OSPF網(wǎng)絡(luò)結(jié)構(gòu)可以參見附圖二
附圖2:OSPF典型結(jié)構(gòu)
——OSPF路由協(xié)議支持路由驗證,只有互相通過路由驗證的路由器之間才能交換路由信息。并且OSPF可以對不同的區(qū)域定義不同的驗證方式,提高網(wǎng)絡(luò)的安全性。
——OSPF路由協(xié)議對負(fù)載分擔(dān)的支持性能較好。OSPF路由協(xié)議支持多條Cost相同的鏈路上的負(fù)載分擔(dān),目前一些廠家的路由器支持6條鏈路的負(fù)載分擔(dān)。
5.區(qū)域及域間路由
——前文已經(jīng)提到過,在OSPF路由協(xié)議的定義中,可以將一個路由域或者一個自治系統(tǒng)AS劃分為幾個區(qū)域。在OSPF中,由按照一定的OSPF路由法則組合在一起的一組網(wǎng)絡(luò)或路由器的集合稱為區(qū)域(AREA)。
——在OSPF路由協(xié)議中,每一個區(qū)域中的路由器都按照該區(qū)域中定義的鏈路狀態(tài)算法來計算網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),這意味著每一個區(qū)域都有著該區(qū)域獨立的網(wǎng)絡(luò)拓?fù)鋽?shù)據(jù)庫及網(wǎng)絡(luò)拓?fù)鋱D。對于每一個區(qū)域,其網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)在區(qū)域外是不可見的,同樣,在每一個區(qū)域中的路由器對其域外的其余網(wǎng)絡(luò)結(jié)構(gòu)也不了解。這意味著OSPF路由域中的網(wǎng)絡(luò)鏈路狀態(tài)數(shù)據(jù)廣播被區(qū)域的邊界擋住了,這樣做有利于減少網(wǎng)絡(luò)中鏈路狀態(tài)數(shù)據(jù)包在全網(wǎng)范圍內(nèi)的廣播,也是OSPF將其路由域或一個AS劃分成很多個區(qū)域的重要原因。
——隨著區(qū)域概念的引入,意味著不再是在同一個AS內(nèi)的所有路由器都有一個相同的鏈路狀態(tài)數(shù)據(jù)庫,而是路由器具有與其相連的每一個區(qū)域的鏈路狀態(tài)信息,即該區(qū)域的結(jié)構(gòu)數(shù)據(jù)庫,當(dāng)一個路由器與多個區(qū)域相連時,我們稱之為區(qū)域邊界路由器。一個區(qū)域邊界路由器有自身相連的所有區(qū)域的網(wǎng)絡(luò)結(jié)構(gòu)數(shù)據(jù)。在同一個區(qū)域中的兩個路由器有著對該區(qū)域相同的結(jié)構(gòu)數(shù)據(jù)庫。
——我們可以根據(jù)IP數(shù)據(jù)包的目的地地址及源地址將OSPF路由域中的路由分成兩類,當(dāng)目的地與源地址處于同一個區(qū)域中時,稱為區(qū)域內(nèi)路由,當(dāng)目的地與源地址處于不同的區(qū)域甚至處于不同的AS時,我們稱之為域間路由。
OSPF的骨干區(qū)域及虛擬鏈路(Virtual-link)
——在OSPF路由協(xié)議中存在一個骨干區(qū)域(Backbone),該區(qū)域包括屬于這個區(qū)域的網(wǎng)絡(luò)及相應(yīng)的路由器,骨干區(qū)域必須是連續(xù)的,同時也要求其余區(qū)域必須與骨干區(qū)域直接相連。骨干區(qū)域一般為區(qū)域0,其主要工作是在其余區(qū)域間傳遞路由信息。所有的區(qū)域,包括骨干區(qū)域之間的網(wǎng)絡(luò)結(jié)構(gòu)情況是互不可見的,當(dāng)一個區(qū)域的路由信息對外廣播時,其路由信息是先傳遞至區(qū)域0(骨干區(qū)域),再由區(qū)域0將該路由信息向其余區(qū)域作廣播。骨干區(qū)域與其余區(qū)域的關(guān)系可以以附圖三來說明。
附圖3:骨干區(qū)域及域間路由
——在實際網(wǎng)絡(luò)中,可能會存在backbone不連續(xù)的或者某一個區(qū)域與骨干區(qū)域物理不相連的情況,在這兩種情況下,系統(tǒng)管理員可以通過設(shè)置虛擬鏈路的方法來解決。
——虛擬鏈路是設(shè)置在兩個路由器之間,這兩個路由器都有一個端口與同一個非骨干區(qū)域相
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點擊舉報。