詞語解釋
——隨著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é)議,一般用于同一個(gè)路由域內(nèi)。在這里,路由域是指一個(gè)自治系統(tǒng)(Autonomous System),即AS,它是指一組通過統(tǒng)一的路由政策或路由協(xié)議互相交換路由信息的網(wǎng)絡(luò)。在這個(gè)AS中,所有的OSPF路由器都維護(hù)一個(gè)相同的描述這個(gè)AS結(jié)構(gòu)的數(shù)據(jù)庫,該數(shù)據(jù)庫中存放的是路由域中相應(yīng)鏈路的狀態(tài)信息,OSPF路由器正是通過這個(gè)數(shù)據(jù)庫計(jì)算出其OSPF路由表的。
——作為一種鏈路狀態(tài)的路由協(xié)議,OSPF將鏈路狀態(tài)廣播數(shù)據(jù)包LSA(Link State Advertisement)傳送給在某一區(qū)域內(nèi)的所有路由器,這一點(diǎn)與距離矢量路由協(xié)議不同。運(yùn)行距離矢量路由協(xié)議的路由器是將部分或全部的路由表傳遞給與其相鄰的路由器。
2.數(shù)據(jù)包格式
——OSPF路由協(xié)議的數(shù)據(jù)包格式如下圖所示:
附圖 1:OSPF路由協(xié)議數(shù)據(jù)包格式
——在OSPF路由協(xié)議的數(shù)據(jù)包中,其數(shù)據(jù)包頭長為24個(gè)字節(jié),包含如下8個(gè)字段:
* Version number-定義所采用的OSPF路由協(xié)議的版本。
* Type-定義OSPF數(shù)據(jù)包類型。OSPF數(shù)據(jù)包共有五種:
* Hello-用于建立和維護(hù)相鄰的兩個(gè)OSPF路由器的關(guān)系,該數(shù)據(jù)包是周期性地發(fā)送的。
* Database Des cription-用于描述整個(gè)數(shù)據(jù)庫,該數(shù)據(jù)包僅在OSPF初始化時(shí)發(fā)送。
* Link state request-用于向相鄰的OSPF路由器請(qǐng)求部分或全部的數(shù)據(jù),這種數(shù)據(jù)包是在當(dāng)路由器發(fā)現(xiàn)其數(shù)據(jù)已經(jīng)過期時(shí)才發(fā)送的。
* Link state update-這是對(duì)link state請(qǐng)求數(shù)據(jù)包的響應(yīng),即通常所說的LSA數(shù)據(jù)包。
* Link state acknowledgment-是對(duì)LSA數(shù)據(jù)包的響應(yīng)。
* Packet length-定義整個(gè)數(shù)據(jù)包的長度。
* Router ID-用于描述數(shù)據(jù)包的源地址,以IP地址來表示。
* Area ID-用于區(qū)分OSPF數(shù)據(jù)包屬于的區(qū)域號(hào),所有的OSPF數(shù)據(jù)包都屬于一個(gè)特定的OSPF區(qū)域。
* Checksum-校驗(yàn)位,用于標(biāo)記數(shù)據(jù)包在傳遞時(shí)有無誤碼。
* Authentication type-定義OSPF驗(yàn)證類型。
* Authentication-包含OSPF驗(yàn)證信息,長為8個(gè)字節(jié)。
3.OSPF基本算法
3.1 SPF算法及最短路徑樹
——SPF算法是OSPF路由協(xié)議的基礎(chǔ)。SPF算法有時(shí)也被稱為Dijkstra算法,這是因?yàn)樽疃搪窂絻?yōu)先算法SPF是Dijkstra發(fā)明的。SPF算法將每一個(gè)路由器作為根(ROOT)來計(jì)算其到每一個(gè)目的地路由器的距離,每一個(gè)路由器根據(jù)一個(gè)統(tǒng)一的數(shù)據(jù)庫會(huì)計(jì)算出路由域的拓?fù)浣Y(jié)構(gòu)圖,該結(jié)構(gòu)圖類似于一棵樹,在SPF算法中,被稱為最短路徑樹。在OSPF路由協(xié)議中,最短路徑樹的樹干長度,即OSPF路由器至每一個(gè)目的地路由器的距離,稱為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)算法概括為以下四個(gè)步驟:
當(dāng)路由器初始化或當(dāng)網(wǎng)絡(luò)結(jié)構(gòu)發(fā)生變化(例如增減路由器,鏈路狀態(tài)發(fā)生變化等)時(shí),路由器會(huì)產(chǎn)生鏈路狀態(tài)廣播數(shù)據(jù)包LSA(Link-State Advertisement),該數(shù)據(jù)包里包含路由器上所有相連鏈路,也即為所有端口的狀態(tài)信息。
所有路由器會(huì)通過一種被稱為刷新(Flooding)的方法來交換鏈路狀態(tài)數(shù)據(jù)。Flooding是指路由器將其LSA數(shù)據(jù)包傳送給所有與其相鄰的OSPF路由器,相鄰路由器根據(jù)其接收到的鏈路狀態(tài)信息更新自己的數(shù)據(jù)庫,并將該鏈路狀態(tài)信息轉(zhuǎn)送給與其相鄰的路由器,直至穩(wěn)定的一個(gè)過程。
當(dāng)網(wǎng)絡(luò)重新穩(wěn)定下來,也可以說OSPF路由協(xié)議收斂下來時(shí),所有的路由器會(huì)根據(jù)其各自的鏈路狀態(tài)信息數(shù)據(jù)庫計(jì)算出各自的路由表。該路由表中包含路由器到每一個(gè)可到達(dá)目的地的Cost以及到達(dá)該目的地所要轉(zhuǎn)發(fā)的下一個(gè)路由器(next-hop)。
第4個(gè)步驟實(shí)際上是指OSPF路由協(xié)議的一個(gè)特性。當(dāng)網(wǎng)絡(luò)狀態(tài)比較穩(wěn)定時(shí),網(wǎng)絡(luò)中傳遞的鏈路狀態(tài)信息是比較少的,或者可以說,當(dāng)網(wǎng)絡(luò)穩(wěn)定時(shí),網(wǎng)絡(luò)中是比較安靜的。這也正是鏈路狀態(tài)路由協(xié)議區(qū)別與距離矢量路由協(xié)議的一大特點(diǎn)。
4.OSPF路由協(xié)議的基本特征
——前文已經(jīng)說明了OSPF路由協(xié)議是一種鏈路狀態(tài)的路由協(xié)議,為了更好地說明OSPF路由協(xié)議的基本特征,我們將OSPF路由協(xié)議與距離矢量路由協(xié)議之一的RIP(Routing Information Protocol)作一比較,歸納為如下幾點(diǎn):
——RIP路由協(xié)議中用于表示目的網(wǎng)絡(luò)遠(yuǎn)近的唯一參數(shù)為跳(HOP),也即到達(dá)目的網(wǎng)絡(luò)所要經(jīng)過的路由器個(gè)數(shù)。在RIP路由協(xié)議中,該參數(shù)被限制為最大15,也就是說RIP路由信息最多能傳遞至第16個(gè)路由器;對(duì)于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é)議對(duì)VLSM有良好的支持性。
——RIP路由協(xié)議路由收斂較慢。RIP路由協(xié)議周期性地將整個(gè)路由表作為路由信息廣播至網(wǎng)絡(luò)中,該廣播周期為30秒。在一個(gè)較為大型的網(wǎng)絡(luò)中,RIP協(xié)議會(huì)產(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)定時(shí),網(wǎng)絡(luò)中的路由信息是比較少的,并且其廣播也不是周期性的,因此OSPF路由協(xié)議即使是在大型網(wǎng)絡(luò)中也能夠較快地收斂。
——在RIP協(xié)議中,網(wǎng)絡(luò)是一個(gè)平面的概念,并無區(qū)域及邊界等的定義。隨著無級(jí)路由CIDR概念的出現(xiàn),RIP協(xié)議就明顯落伍了。在OSPF路由協(xié)議中,一個(gè)網(wǎng)絡(luò),或者說是一個(gè)路由域可以劃分為很多個(gè)區(qū)域area,每一個(gè)區(qū)域通過OSPF邊界路由器相連,區(qū)域間可以通過路由總結(jié)(Summary)來減少路由信息,減小路由表,提高路由器的運(yùn)算速度。一個(gè)典型的OSPF網(wǎng)絡(luò)結(jié)構(gòu)可以參見附圖二
附圖2:OSPF典型結(jié)構(gòu)
——OSPF路由協(xié)議支持路由驗(yàn)證,只有互相通過路由驗(yàn)證的路由器之間才能交換路由信息。并且OSPF可以對(duì)不同的區(qū)域定義不同的驗(yàn)證方式,提高網(wǎng)絡(luò)的安全性。
——OSPF路由協(xié)議對(duì)負(fù)載分擔(dān)的支持性能較好。OSPF路由協(xié)議支持多條Cost相同的鏈路上的負(fù)載分擔(dān),目前一些廠家的路由器支持6條鏈路的負(fù)載分擔(dān)。
5.區(qū)域及域間路由
——前文已經(jīng)提到過,在OSPF路由協(xié)議的定義中,可以將一個(gè)路由域或者一個(gè)自治系統(tǒng)AS劃分為幾個(gè)區(qū)域。在OSPF中,由按照一定的OSPF路由法則組合在一起的一組網(wǎng)絡(luò)或路由器的集合稱為區(qū)域(AREA)。
——在OSPF路由協(xié)議中,每一個(gè)區(qū)域中的路由器都按照該區(qū)域中定義的鏈路狀態(tài)算法來計(jì)算網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),這意味著每一個(gè)區(qū)域都有著該區(qū)域獨(dú)立的網(wǎng)絡(luò)拓?fù)鋽?shù)據(jù)庫及網(wǎng)絡(luò)拓?fù)鋱D。對(duì)于每一個(gè)區(qū)域,其網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)在區(qū)域外是不可見的,同樣,在每一個(gè)區(qū)域中的路由器對(duì)其域外的其余網(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將其路由域或一個(gè)AS劃分成很多個(gè)區(qū)域的重要原因。
——隨著區(qū)域概念的引入,意味著不再是在同一個(gè)AS內(nèi)的所有路由器都有一個(gè)相同的鏈路狀態(tài)數(shù)據(jù)庫,而是路由器具有與其相連的每一個(gè)區(qū)域的鏈路狀態(tài)信息,即該區(qū)域的結(jié)構(gòu)數(shù)據(jù)庫,當(dāng)一個(gè)路由器與多個(gè)區(qū)域相連時(shí),我們稱之為區(qū)域邊界路由器。一個(gè)區(qū)域邊界路由器有自身相連的所有區(qū)域的網(wǎng)絡(luò)結(jié)構(gòu)數(shù)據(jù)。在同一個(gè)區(qū)域中的兩個(gè)路由器有著對(duì)該區(qū)域相同的結(jié)構(gòu)數(shù)據(jù)庫。
——我們可以根據(jù)IP數(shù)據(jù)包的目的地地址及源地址將OSPF路由域中的路由分成兩類,當(dāng)目的地與源地址處于同一個(gè)區(qū)域中時(shí),稱為區(qū)域內(nèi)路由,當(dāng)目的地與源地址處于不同的區(qū)域甚至處于不同的AS時(shí),我們稱之為域間路由。
OSPF的骨干區(qū)域及虛擬鏈路(Virtual-link)
——在OSPF路由協(xié)議中存在一個(gè)骨干區(qū)域(Backbone),該區(qū)域包括屬于這個(gè)區(qū)域的網(wǎng)絡(luò)及相應(yīng)的路由器,骨干區(qū)域必須是連續(xù)的,同時(shí)也要求其余區(qū)域必須與骨干區(qū)域直接相連。骨干區(qū)域一般為區(qū)域0,其主要工作是在其余區(qū)域間傳遞路由信息。所有的區(qū)域,包括骨干區(qū)域之間的網(wǎng)絡(luò)結(jié)構(gòu)情況是互不可見的,當(dāng)一個(gè)區(qū)域的路由信息對(duì)外廣播時(shí),其路由信息是先傳遞至區(qū)域0(骨干區(qū)域),再由區(qū)域0將該路由信息向其余區(qū)域作廣播。骨干區(qū)域與其余區(qū)域的關(guān)系可以以附圖三來說明。
附圖3:骨干區(qū)域及域間路由
——在實(shí)際網(wǎng)絡(luò)中,可能會(huì)存在backbone不連續(xù)的或者某一個(gè)區(qū)域與骨干區(qū)域物理不相連的情況,在這兩種情況下,系統(tǒng)管理員可以通過設(shè)置虛擬鏈路的方法來解決。
——虛擬鏈路是設(shè)置在兩個(gè)路由器之間,這兩個(gè)路由器都有一個(gè)端口與同一個(gè)非骨干區(qū)域相連。虛擬鏈路被認(rèn)為是屬于骨干區(qū)域的,在OSPF路由協(xié)議看來,虛擬鏈路兩端的兩個(gè)路由器被一個(gè)點(diǎn)對(duì)點(diǎn)的鏈路連在一起。在OSPF路由協(xié)議中,通過虛擬鏈路的路由信息是作為域內(nèi)路由來看待的。下面我們分兩種情況來說明虛擬鏈路在OSPF路由協(xié)議中的作用。
1.當(dāng)一個(gè)區(qū)域與area0沒有物理鏈路相連時(shí)
——前文已經(jīng)提到,一個(gè)骨干區(qū)域Area 0必須位于所有區(qū)域的中心,其余所有區(qū)域必須與骨干區(qū)域直接相連。但是,也存在一個(gè)區(qū)域無法與骨干區(qū)域建立物理鏈路的可能性,在這種情況下,我們可以采用虛擬鏈路。虛擬鏈路使該區(qū)域與骨干區(qū)域間建立一個(gè)邏輯聯(lián)接點(diǎn),該虛擬鏈路必須建立在兩個(gè)區(qū)域邊界路由器之間,并且其中一個(gè)區(qū)域邊界路由器必須屬于骨干區(qū)域。這種虛擬鏈路可以以下圖來說明。
附圖4:虛擬鏈路(1)
——在上圖所示的例子中,區(qū)域1與區(qū)域0并無物理相連鏈路,我們可以在路由器A及路由器B之間建立虛擬鏈路,這樣,將區(qū)域2作為一個(gè)穿透網(wǎng)絡(luò)(Transit-network),路由器B作為接入點(diǎn),區(qū)域1就與區(qū)域0建立了邏輯聯(lián)接。
2.當(dāng)骨干區(qū)域不連續(xù)時(shí)
——OSPF路由協(xié)議要求骨干區(qū)域area0必須是連續(xù)的,但是,骨干區(qū)域也會(huì)出現(xiàn)不連續(xù)的情況,例如,當(dāng)我們想把兩個(gè)OSPF路由域混合到一起,并且想要使用一個(gè)骨干區(qū)域時(shí),或者當(dāng)某些路由器出現(xiàn)故障引起骨干區(qū)域不連續(xù)的情況,在這些情況下,我們可以采用虛擬鏈路將兩個(gè)不連續(xù)的區(qū)域0連接到一起。這時(shí),虛擬鏈路的兩端必須是兩個(gè)區(qū)域0的邊界路由器,并且這兩個(gè)路由器必須都有處于同一個(gè)區(qū)域的端口,以下圖為例:
附圖 5:虛擬鏈路(2)
——在上圖的例子中,穿過區(qū)域1的虛擬鏈路將兩個(gè)分為兩半的骨干區(qū)域連接到一起,路由器A與B之間的路由信息作為OSPF域內(nèi)路由來處理。
——另外,當(dāng)一個(gè)非骨干區(qū)域的區(qū)域分裂成兩半時(shí),不能采用虛擬鏈路的方法來解決。當(dāng)出現(xiàn)這種情況時(shí),分裂出的其中一個(gè)區(qū)域?qū)⒈黄溆嗟膮^(qū)域作為域間路由來處理。
殘域(Stub area)
——在OSPF路由協(xié)議的鏈路狀態(tài)數(shù)據(jù)庫中,可以包括AS外部鏈路狀態(tài)信息,這些信息會(huì)通過flooding傳遞到AS內(nèi)的所有OSPF路由器上。但是,在OSPF路由協(xié)議中存在這樣一種區(qū)域,我們把它稱為殘域(stub area),AS外部信息不允許廣播進(jìn)/出這個(gè)區(qū)域。對(duì)于殘域來說,訪問AS外部的數(shù)據(jù)只能根據(jù)默認(rèn)路由(default-route)來尋址。這樣做有利于減小殘域內(nèi)部路由器上的鏈路狀態(tài)數(shù)據(jù)庫的大小及存儲(chǔ)器的使用,提高路由器計(jì)算路由表的速度。
——當(dāng)一個(gè)OSPF的區(qū)域只存在一個(gè)區(qū)域出口點(diǎn)時(shí),我們可以將該區(qū)域配置成一個(gè)殘域,在這時(shí),該區(qū)域的邊界路由器會(huì)對(duì)域內(nèi)廣播默認(rèn)路由信息。需要注意的是,一個(gè)殘域中的所有路由器都必須知道自身屬于該殘域,否則殘域的設(shè)置沒有作用。另外,針對(duì)殘域還有兩點(diǎn)需要注意:一是殘域中不允許存在虛擬鏈路;二是殘域中不允許存在AS邊界路由器。
6.OSPF協(xié)議路由器及鏈路狀態(tài)數(shù)據(jù)包分類
6.1 OSPF路由器分類
——當(dāng)一個(gè)AS劃分成幾個(gè)OSPF區(qū)域時(shí),根據(jù)一個(gè)路由器在相應(yīng)的區(qū)域之內(nèi)的作用,可以將OSPF路由器作如下分類:
——內(nèi)部路由器:當(dāng)一個(gè)OSPF路由器上所有直聯(lián)的鏈路都處于同一個(gè)區(qū)域時(shí),我們稱這種路由器為內(nèi)部路由器。內(nèi)部路由器上僅僅運(yùn)行其所屬區(qū)域的OSPF運(yùn)算法則。
——區(qū)域邊界路由器:當(dāng)一個(gè)路由器與多個(gè)區(qū)域相連時(shí),我們稱之為區(qū)域邊界路由器。區(qū)域邊界路由器運(yùn)行與其相連的所有區(qū)域定義的OSPF運(yùn)算法則,具有相連的每一個(gè)區(qū)域的網(wǎng)絡(luò)結(jié)構(gòu)數(shù)據(jù),并且了解如何將該區(qū)域的鏈路狀態(tài)信息廣播至骨干區(qū)域,再由骨干區(qū)域轉(zhuǎn)發(fā)至其余區(qū)域。
——AS邊界路由器:AS邊界路由器是與AS外部的路由器互相交換路由信息的OSPF路由器,該路由器在AS內(nèi)部廣播其所得到的AS外部路由信息;這樣AS內(nèi)部的所有路由器都知道至AS邊界路由器的路由信息。AS邊界路由器的定義是與前面幾種路由器的定義相獨(dú)立的,一個(gè)AS邊界路由器可以是一個(gè)區(qū)域內(nèi)部路由器或是一個(gè)區(qū)域邊界路由器。
——指定路由器—DR:在一個(gè)廣播性的、多接入的網(wǎng)絡(luò)(例如Ethernet、TokenRing及FDDI環(huán)境)中,存在一個(gè)指定路由器(Designated Router),指定路由器主要在OSPF協(xié)議中完成如下工作:
——指定路由器產(chǎn)生用于描述所處的網(wǎng)段的鏈路數(shù)據(jù)包—network link,該數(shù)據(jù)包里包含在該網(wǎng)段上所有的路由器,包括指定路由器本身的狀態(tài)信息。
——指定路由器與所有與其處于同一網(wǎng)段上的OSPF路由器建立相鄰關(guān)系。由于OSPF路由器之間通過建立相鄰關(guān)系及以后的flooding來進(jìn)行鏈路狀態(tài)數(shù)據(jù)庫是同步的,因此,我們可以說指定路由器處于一個(gè)網(wǎng)段的中心地位。
——需要說明的是,指定路由器DR的定義與前面所定義的幾種路由器是不同的。DR的選擇是通過OSPF的Hello數(shù)據(jù)包來完成的,在OSPF路由協(xié)議初始化的過程中,會(huì)通過Hello數(shù)據(jù)包在一個(gè)廣播性網(wǎng)段上選出一個(gè)ID最大的路由器作為指定路由器DR,并且選出ID次大的路由器作為備份指定路由器BDR,BDR在DR發(fā)生故障后能自動(dòng)替代DR的所有工作。當(dāng)一個(gè)網(wǎng)段上的DR和BDR選擇產(chǎn)生后,該網(wǎng)段上的其余所有路由器都只與DR及BDR建立相鄰關(guān)系。在這里,一個(gè)路由器的ID是指向該路由器的標(biāo)識(shí),一般是指該路由器的環(huán)回端口或是該路由器上的最小的IP地址。DR和BDR在一個(gè)廣播性網(wǎng)絡(luò)中的作用可用下圖來說明。
附圖 6:DR及BDR選擇
6.2 OSPF鏈路狀態(tài)廣播數(shù)據(jù)包種類
——隨著OSPF路由器種類概念的引入,OSPF路由協(xié)議又對(duì)其鏈路狀態(tài)廣播數(shù)據(jù)包(LSA)作出了分類。OSPF將鏈路狀態(tài)廣播數(shù)據(jù)包共分成5類,分別為:
類型1:又被稱為路由器鏈路信息數(shù)據(jù)包(Router Link),所有的OSPF路由器都會(huì)產(chǎn)生這種數(shù)據(jù)包,用于描述路由器上聯(lián)接到某一個(gè)區(qū)域的鏈路或是某一端口的狀態(tài)信息。路由器鏈路信息數(shù)據(jù)包只會(huì)在某一個(gè)特定的區(qū)域內(nèi)廣播,而不會(huì)廣播至其它的區(qū)域。
——在類型1的鏈路數(shù)據(jù)包中,OSPF路由器通過對(duì)數(shù)據(jù)包中某些特定數(shù)據(jù)位的設(shè)定,告訴其余的路由器自身是一個(gè)區(qū)域邊界路由器或是一個(gè)AS邊界路由器。并且,類型1的鏈路狀態(tài)數(shù)據(jù)包在描述其所聯(lián)接的鏈路時(shí),會(huì)根據(jù)各鏈路所聯(lián)接的網(wǎng)絡(luò)類型對(duì)各鏈路打上鏈路標(biāo)識(shí),Link ID。表一列出了常見的鏈路類型及鏈路標(biāo)識(shí)。
鏈路類型 具體描述 鏈路標(biāo)識(shí)
1 用于描述點(diǎn)對(duì)點(diǎn)的網(wǎng)絡(luò) 相鄰路由器的路由器標(biāo)識(shí)
2 用于描述至一個(gè)廣播性網(wǎng)絡(luò)的鏈路 DR的端口地址
3 用于描述至非穿透網(wǎng)絡(luò),即stub網(wǎng)絡(luò)的鏈路 stub網(wǎng)絡(luò)的網(wǎng)絡(luò)號(hào)碼
4 用于描述虛擬鏈路 相鄰路由器的路由器標(biāo)識(shí)
表格1: 鏈路類型及鏈路標(biāo)識(shí)
——類型2:又被稱為網(wǎng)絡(luò)鏈路信息數(shù)據(jù)包(Network Link)。網(wǎng)絡(luò)鏈路信息數(shù)據(jù)包是由指定路由器產(chǎn)生的,在一個(gè)廣播性的、多點(diǎn)接入的網(wǎng)絡(luò),例如以太網(wǎng)、令牌環(huán)網(wǎng)及FDDI網(wǎng)絡(luò)環(huán)境中,這種鏈路狀態(tài)數(shù)據(jù)包用來描述該網(wǎng)段上所聯(lián)接的所有路由器的狀態(tài)信息。
——指定路由器DR只有在與至少一個(gè)路由器建立相鄰關(guān)系后才會(huì)產(chǎn)生網(wǎng)絡(luò)鏈路信息數(shù)據(jù)包,在該數(shù)據(jù)包中含有對(duì)所有已經(jīng)與DR建立相鄰關(guān)系的路由器的描述,包括DR路由器本身。類型2的鏈路信息只會(huì)在包含DR所處的廣播性網(wǎng)絡(luò)的區(qū)域中廣播,不會(huì)廣播至其余的OSPF路由區(qū)域。
——類型3和類型4:類型3和類型4的鏈路狀態(tài)廣播在OSPF路由協(xié)議中又稱為總結(jié)鏈路信息數(shù)據(jù)包(Summary Link),該鏈路狀態(tài)廣播是由區(qū)域邊界路由器或AS邊界路由器產(chǎn)生的。Summary Link描述的是到某一個(gè)區(qū)域外部的路由信息,這一個(gè)目的地地址必須是同一個(gè)AS中。Summary Link也只會(huì)在某一個(gè)特定的區(qū)域內(nèi)廣播。類型3與類型4兩種總結(jié)性鏈路信息的區(qū)別在于,類型3是由區(qū)域邊界路由器產(chǎn)生的,用于描述到同一個(gè)AS中不同區(qū)域之間的鏈路狀態(tài);而類型4是由AS邊界路由器產(chǎn)生的,用于描述不同AS的鏈路狀態(tài)信息。
——值得一提的是,只有類型3的Summary Link才能廣播進(jìn)一個(gè)殘域,因?yàn)樵谝粋(gè)殘域中不允許存在AS邊界路由器。殘域的區(qū)域邊界路由器產(chǎn)生一條默認(rèn)的Summary Link對(duì)域內(nèi)廣播,從而在其余路由器上產(chǎn)生一條默認(rèn)路由信息。采用Summary Link可以減小殘域中路由器的鏈路狀態(tài)數(shù)據(jù)庫的大小,進(jìn)而減少對(duì)路由器資源的利用,提高路由器的運(yùn)算速度。
——類型5:類型5的鏈路狀態(tài)廣播稱為AS外部鏈路狀態(tài)信息數(shù)據(jù)包。類型5的鏈路數(shù)據(jù)包是由AS邊界路由器產(chǎn)生的,用于描述到AS外的目的地的路由信息,該數(shù)據(jù)包會(huì)在AS中除殘域以外的所有區(qū)域中廣播。一般來說,這種鏈路狀態(tài)信息描述的是到AS外部某一特定網(wǎng)絡(luò)的路由信息,在這種情況下,類型5的鏈路狀枋數(shù)據(jù)包的鏈路標(biāo)識(shí)采用的是目的地網(wǎng)絡(luò)的IP地址;在某些情況下,AS邊界路由器可以對(duì)AS內(nèi)部廣播默認(rèn)路由信息,在這時(shí),類型5的鏈路廣播數(shù)據(jù)包的鏈路標(biāo)識(shí)采用的是默認(rèn)網(wǎng)絡(luò)號(hào)碼0.0.0.0。
幾種類型的鏈路數(shù)據(jù)包的描述請(qǐng)見下圖:
附圖 7:OSPF鏈路廣播數(shù)據(jù)包類型
7.OSPF協(xié)議工作過程
——OSPF路由協(xié)議針對(duì)每一個(gè)區(qū)域分別運(yùn)行一套獨(dú)立的計(jì)算法則,對(duì)于ABR來說,由于一個(gè)區(qū)域邊界路由器同時(shí)與幾個(gè)區(qū)域相聯(lián),因此一個(gè)區(qū)域邊界路由器上會(huì)同時(shí)運(yùn)行幾套OSPF計(jì)算方法,每一個(gè)方法針對(duì)一個(gè)OSPF區(qū)域。下面對(duì)OSPF協(xié)議運(yùn)算的全過程作一概括性的描述。
7.1 區(qū)域內(nèi)部路由
——當(dāng)一個(gè)OSPF路由器初始化時(shí),首先初始化路由器自身的協(xié)議數(shù)據(jù)庫,然后等待低層次協(xié)議(數(shù)據(jù)鏈路層)提示端口是否處于工作狀態(tài)。
——如果低層協(xié)議得知一個(gè)端口處于工作狀態(tài)時(shí),OSPF會(huì)通過其Hello協(xié)議數(shù)據(jù)包與其余的OSPF路由器建立交互關(guān)系。一個(gè)OSPF路由器向其相鄰路由器發(fā)送Hello數(shù)據(jù)包,如果接收到某一路由器返回的Hello數(shù)據(jù)包,則在這兩個(gè)OSPF路由器之間建立起OSPF交互關(guān)系,這個(gè)過程在OSPF中被稱為adjacency。在廣播性網(wǎng)絡(luò)或是在點(diǎn)對(duì)點(diǎn)的網(wǎng)絡(luò)環(huán)境中,OSPF協(xié)議通過Hello數(shù)據(jù)包自動(dòng)地發(fā)現(xiàn)其相鄰路由器,在這時(shí),OSPF路由器將Hello數(shù)據(jù)包發(fā)送至一特殊的多點(diǎn)廣播地址,該多點(diǎn)廣播地址為ALLSPFRouters。在一些非廣播性的網(wǎng)絡(luò)環(huán)境中,我們需要經(jīng)過某些設(shè)置來發(fā)現(xiàn)OSPF相鄰路由器。在多接入的環(huán)境中,例如以太網(wǎng)的環(huán)境,Hello協(xié)議數(shù)據(jù)包還可以用于選擇該網(wǎng)絡(luò)中的指定路由器DR。
——一個(gè)OSPF路由器會(huì)與其新發(fā)現(xiàn)的相鄰路由器建立OSPF的adjacency,并且在一對(duì)OSPF路由器之間作鏈路狀態(tài)數(shù)據(jù)庫的同步。在多接入的網(wǎng)絡(luò)環(huán)增中,非DR的OSPF路由器只會(huì)與指定路由器DR建立adjacency,并且作數(shù)據(jù)庫的同步。OSPF協(xié)議數(shù)據(jù)包的接收及發(fā)送正是在一對(duì)OSPF的adjacency間進(jìn)行的。
——OSPF路由器周期性地產(chǎn)生與其相聯(lián)的所有鏈路的狀態(tài)信息,有時(shí)這些信息也被稱為鏈路狀態(tài)廣播LSA(Link State Advertisement)。當(dāng)路由器相聯(lián)接的鏈路狀態(tài)發(fā)生改變時(shí),路由器也會(huì)產(chǎn)生鏈路狀態(tài)廣播信息,所有這些廣播數(shù)據(jù)是通過Flood的方式在某一個(gè)OSPF區(qū)域內(nèi)進(jìn)行的。Flooding算法是一個(gè)非常可靠的計(jì)算過程,它保證在同一個(gè)OSPF區(qū)域內(nèi)的所有路由器都具有一個(gè)相同的OSPF數(shù)據(jù)庫。根據(jù)這個(gè)數(shù)據(jù)庫,OSPF路由器會(huì)將自身作為根,計(jì)算出一個(gè)最短路徑樹,然后,該路由器會(huì)根據(jù)最短路徑樹產(chǎn)生自己的OSPF路由表。
7.2 建立OSPF交互關(guān)系adjacency
——OSPF路由協(xié)議通過建立交互關(guān)系來交換路由信息,但是并不是所有相鄰的路由器會(huì)建立OSPF交互關(guān)系。下面將OSPF建立adjacency的過程簡要介紹一下。
——OSPF協(xié)議是通過Hello協(xié)議數(shù)據(jù)包來建立及維護(hù)相鄰關(guān)系的,同時(shí)也用其來保證相鄰路由器之間的雙向通信。OSPF路由器會(huì)周期性地發(fā)送Hello數(shù)據(jù)包,當(dāng)這個(gè)路由器看到自身被列于其它路由器的Hello數(shù)據(jù)包里時(shí),這兩個(gè)路由器之間會(huì)建立起雙向通信。在多接入的環(huán)境中,Hello數(shù)據(jù)包還用于發(fā)現(xiàn)指定路由器DR,通過DR來控制與哪些路由器建立交互關(guān)系。
——兩個(gè)OSPF路由器建立雙向通信這后的第二個(gè)步驟是進(jìn)行數(shù)據(jù)庫的同步,數(shù)據(jù)庫同步是所有鏈路狀態(tài)路由協(xié)議的最大的共性。在OSPF路由協(xié)議中,數(shù)據(jù)庫同步關(guān)系僅僅在建立交互關(guān)系的路由器之間保持。
——OSPF的數(shù)據(jù)庫同步是通過OSPF數(shù)據(jù)庫描述數(shù)據(jù)包(Database Des cription Packets)來進(jìn)行的。OSPF路由器周期性地產(chǎn)生數(shù)據(jù)庫描述數(shù)據(jù)包,該數(shù)據(jù)包是有序的,即附帶有序列號(hào),并將這些數(shù)據(jù)包對(duì)相鄰路由器廣播。相鄰路由器可以根據(jù)數(shù)據(jù)庫描述數(shù)據(jù)包的序列號(hào)與自身數(shù)據(jù)庫的數(shù)據(jù)作比較,若發(fā)現(xiàn)接收到的數(shù)據(jù)比數(shù)據(jù)庫內(nèi)的數(shù)據(jù)序列號(hào)大,則相鄰路由器會(huì)針對(duì)序列號(hào)較大的數(shù)據(jù)發(fā)出請(qǐng)求,并用請(qǐng)求得到的數(shù)據(jù)來更新其鏈路狀態(tài)數(shù)據(jù)庫。
——我們可以將OSPF相鄰路由器從發(fā)送Hello數(shù)據(jù)包,建立數(shù)據(jù)庫同步至建立完全的OSPF交互關(guān)系的過程分成幾個(gè)不同的狀態(tài),分別為:
——Down:這是OSPF建立交互關(guān)系的初始化狀態(tài),表示在一定時(shí)間之內(nèi)沒有接收到從某一相鄰路由器發(fā)送來的信息。在非廣播性的網(wǎng)絡(luò)環(huán)境內(nèi),OSPF路由器還可能對(duì)處于Down狀態(tài)的路由器發(fā)送Hello數(shù)據(jù)包。
——Attempt:該狀態(tài)僅在NBMA環(huán)境,例如幀中繼、X.25或ATM環(huán)境中有效,表示在一定時(shí)間內(nèi)沒有接收到某一相鄰路由器的信息,但是OSPF路由器仍必須通過以一個(gè)較低的頻率向該相鄰路由器發(fā)送Hello數(shù)據(jù)包來保持聯(lián)系。
——Init:在該狀態(tài)時(shí),OSPF路由器已經(jīng)接收到相鄰路由器發(fā)送來的Hello數(shù)據(jù)包,但自身的IP地址并沒有出現(xiàn)在該Hello數(shù)據(jù)包內(nèi),也就是說,雙方的雙向通信還沒有建立起來。
——2-Way:這個(gè)狀態(tài)可以說是建立交互方式真正的開始步驟。在這個(gè)狀態(tài),路由器看到自身已經(jīng)處于相鄰路由器的Hello數(shù)據(jù)包內(nèi),雙向通信已經(jīng)建立。指定路由器及備份指定路由器的選擇正是在這個(gè)狀態(tài)完成的。在這個(gè)狀態(tài),OSPF路由器還可以根據(jù)其中的一個(gè)路由器是否指定路由器或是根據(jù)鏈路是否點(diǎn)對(duì)點(diǎn)或虛擬鏈路來決定是否建立交互關(guān)系。
——Exstart:這個(gè)狀態(tài)是建立交互狀態(tài)的第一個(gè)步驟。在這個(gè)狀態(tài),路由器要決定用于數(shù)據(jù)交換的初始的數(shù)據(jù)庫描述數(shù)據(jù)包的序列號(hào),以保證路由器得到的永遠(yuǎn)是最新的鏈路狀態(tài)信息。同時(shí),在這個(gè)狀態(tài)路由器還必須決定路由器之間的主備關(guān)系,處于主控地位的路由器會(huì)向處于備份地位的路由器請(qǐng)求鏈路狀態(tài)信息。
——Exchange:在這個(gè)狀態(tài),路由器向相鄰的OSPF路由器發(fā)送數(shù)據(jù)庫描述數(shù)據(jù)包來交換鏈路狀態(tài)信息,每一個(gè)數(shù)據(jù)包都有一個(gè)數(shù)據(jù)包序列號(hào)。在這個(gè)狀態(tài),路由器還有可能向相鄰路由器發(fā)送鏈路狀態(tài)請(qǐng)求數(shù)據(jù)包來請(qǐng)求其相應(yīng)數(shù)據(jù)。從這個(gè)狀態(tài)開始,我們說OSPF處于Flood狀態(tài)。
——Loading:在loading狀態(tài),OSPF路由器會(huì)就其發(fā)現(xiàn)的相鄰路由器的新的鏈路狀態(tài)數(shù)據(jù)及自身的已經(jīng)過期的數(shù)據(jù)向相鄰路由器提出請(qǐng)求,并等待相鄰路由器的回答。
——Full:這是兩個(gè)OSPF路由器建立交互關(guān)系的最后一個(gè)狀態(tài),在這時(shí),建立起交互關(guān)系的路由器之間已經(jīng)完成了數(shù)據(jù)庫同步的工作,它們的鏈路狀態(tài)數(shù)據(jù)庫已經(jīng)一致。
——整個(gè)建立交互關(guān)系的全過程可以用下圖來表示:
附圖 8: OSPF協(xié)議的adjacency過程
7.3 域間路由
——前面一節(jié)描述了OSPF路由協(xié)議的單個(gè)區(qū)域中的計(jì)算過程。在單個(gè)OSPF區(qū)域中,OSPF路由協(xié)議不會(huì)產(chǎn)生更多的路由信息。為了與其余區(qū)域中的OSPF路由器通訊,該區(qū)域的邊界路由器會(huì)產(chǎn)生一些其它的信息對(duì)域內(nèi)廣播,這些附加信息描繪了在同一個(gè)AS中的其它區(qū)域的路由信息。具體路由信息交換過程如下:
——在OSPF的定義中,所有的區(qū)域都必須與區(qū)域0相聯(lián),因此每一個(gè)區(qū)域都必須有一個(gè)區(qū)域邊界路由器與區(qū)域0相聯(lián),這一個(gè)區(qū)域邊界路由器會(huì)將其相聯(lián)接的區(qū)域內(nèi)部結(jié)構(gòu)數(shù)據(jù)通過Summary Link廣播至區(qū)域0,也就是廣播至所有其它區(qū)域的邊界路由器。在這時(shí),與區(qū)域0相聯(lián)的邊界路由器上有區(qū)域0及其它所有區(qū)域的鏈路狀態(tài)信息,通過這些信息,這些邊界路由器能夠計(jì)算出至相應(yīng)目的地的路由,并將這些路由信息廣播至與其相聯(lián)接的區(qū)域,以便讓該區(qū)域內(nèi)部的路由器找到與區(qū)域外部通信的最佳路由。
7.4 AS外部路由
——一個(gè)自治域AS的邊界路由器會(huì)將AS外部路由信息廣播至整個(gè)AS中除了殘域的所有區(qū)域。為了使這些AS外部路由信息生效,AS內(nèi)部的所有的路由器(除殘域內(nèi)的路由器)都必須知道AS邊界路由器的位置,該路由信息是由非殘域的區(qū)域邊界路由器對(duì)域內(nèi)廣播的,其鏈路廣播數(shù)據(jù)包的類型為類型4。
8.OSPF路由協(xié)議驗(yàn)證
——在OSPF路由協(xié)議中,所有的路由信息交換都必須經(jīng)過驗(yàn)證。在前文所描述的OSPF協(xié)議數(shù)據(jù)包結(jié)構(gòu)中,包含有一個(gè)驗(yàn)證域及一個(gè)64位長度的驗(yàn)證數(shù)據(jù)域,用于特定的驗(yàn)證方式的計(jì)算。
——OSPF數(shù)據(jù)交換的驗(yàn)證是基于每一個(gè)區(qū)域來定義的,也就是說,當(dāng)在某一個(gè)區(qū)域的一個(gè)路由器上定義了一種驗(yàn)證方式時(shí),必須在該區(qū)域的所有路由器上定義相同的協(xié)議驗(yàn)證方式。另外一些與驗(yàn)證相關(guān)的參數(shù)也可以基于每一個(gè)端口來定義,例如當(dāng)采用單一口令驗(yàn)證時(shí),我們可以對(duì)某一區(qū)域內(nèi)部的每一個(gè)網(wǎng)絡(luò)設(shè)置不同的口令字。
——在OSPF路由協(xié)議的定義中,初始定義了兩種協(xié)議驗(yàn)證方式,方式0及方式1,分別介紹如下:
——驗(yàn)證方式0:采用驗(yàn)證方式0表示OSPF對(duì)所交換的路由信息不驗(yàn)證。在OSPF的數(shù)據(jù)包頭內(nèi)64位的驗(yàn)證數(shù)據(jù)位可以包含任何數(shù)據(jù),OSPF接收到路由數(shù)據(jù)后對(duì)數(shù)據(jù)包頭內(nèi)的驗(yàn)證數(shù)據(jù)位不作任何處理。
——驗(yàn)證方式1:驗(yàn)證方式1為簡單口令字驗(yàn)證。這種驗(yàn)證方式是基于一個(gè)區(qū)域內(nèi)的每一個(gè)網(wǎng)絡(luò)來定義的,每一個(gè)發(fā)送至該網(wǎng)絡(luò)的數(shù)據(jù)包的包頭內(nèi)都必須具有相同的64位長度的驗(yàn)證數(shù)據(jù)位,也就是說驗(yàn)證方式1的口令字長度為64bits,或者為8個(gè)字符。
9.小結(jié)
——前文介紹了OSPF路由協(xié)議的概念及該協(xié)議的工作原理。OSPF路由協(xié)議定義于RFC1247及RFC1583,該協(xié)議提供了一個(gè)不同的網(wǎng)絡(luò)通過同一種TCP/IP協(xié)議交換網(wǎng)絡(luò)信息的途徑。作為一種鏈路狀態(tài)的路由協(xié)議,OSPF具備許多優(yōu)點(diǎn):快速收斂,支持變長網(wǎng)絡(luò)屏蔽碼,支持CIDR以及地址summary,具有層次化的網(wǎng)絡(luò)結(jié)構(gòu),支持路由信息驗(yàn)證等。所有這些特點(diǎn)保證了OSPF路由協(xié)議能夠被應(yīng)用到大型的、復(fù)雜的網(wǎng)絡(luò)環(huán)境中。
掃碼付費(fèi)即可復(fù)制
X
雷電過電壓的形成 | 雷電流波形 | 雷暴日 | 供電線路符號(hào) | IT方式供電系統(tǒng) | TN方式供電系統(tǒng) | TT方式供電系統(tǒng) | 建筑工程供電 | 數(shù)字蜂窩技術(shù) | 校驗(yàn) | 奇偶校驗(yàn) | DSRC |