內(nèi)部網(wǎng)關(guān)協(xié)議OSPF
1.引言
OSPF(Open Shortest Path Firest)的名字是開(kāi)放最短路徑優(yōu)先。OSPF運(yùn)用的是鏈路狀態(tài)協(xié)議,與RIP的距離向量協(xié)議是不同的。與RIP相比OSPF的三個(gè)要點(diǎn)與RIP不同:
①向本自治系統(tǒng)中的所有路由器發(fā)送消息。這里使用的是洪泛法(flooding)。
②發(fā)送的信息是與本路由器相鄰的所有路由器的鏈路狀態(tài)。鏈路狀態(tài)就是用來(lái)說(shuō)明該路由器與那些路由器相鄰以及該鏈路的“度量”。這個(gè)度量可以自行定義,而不是像RIP那樣的單一(跳數(shù)),可以定義為表示費(fèi)用、距離、時(shí)延、帶寬等等。所以SOPF比RIP要靈活許多。
③只有當(dāng)鏈路狀態(tài)發(fā)生變化的時(shí)候,路由器才向所有路由器用泛洪法發(fā)送此消息,這與RIP的定期交換路由表信息不同。
經(jīng)過(guò)交換細(xì)心,所有的路由器最終都能建立一個(gè)鏈路狀態(tài)數(shù)據(jù)庫(kù)(記錄的數(shù)據(jù)都是某兩臺(tái)相鄰路由器之間的鏈路狀態(tài)),這個(gè)數(shù)據(jù)庫(kù)實(shí)際上就是全網(wǎng)的拓?fù)浣Y(jié)構(gòu)圖,且這個(gè)數(shù)據(jù)庫(kù)在所有路由器中是一致的(這稱為鏈路狀態(tài)數(shù)據(jù)庫(kù)的同步)。有了鏈路狀態(tài)數(shù)據(jù)庫(kù)中的數(shù)據(jù),路由器就可以使用特定的算法(例如,使用Dijkstra最短路徑算法)自己構(gòu)造路由表。(注意RIP是不知道全網(wǎng)的拓?fù)浣Y(jié)構(gòu)的,只能知道下一跳路由器。)
其實(shí)按照上邊的泛洪法,OSPF的鏈路狀態(tài)數(shù)據(jù)庫(kù)能較快地進(jìn)行更新,由此路由器的路由表更新也較快。OSPF的更新過(guò)程收斂得快是其重要優(yōu)點(diǎn)。
值得注意的是,OSPF不用UDP而是直接用IP數(shù)據(jù)報(bào)傳送。OSPF構(gòu)成的數(shù)據(jù)報(bào)就很短。這樣可以減少路由信息的通信量。
2.劃分區(qū)域
由于要運(yùn)用泛洪法所以如果網(wǎng)絡(luò)中的路由器過(guò)多的話,那么運(yùn)用OSPF效果不佳。所以當(dāng)OSPF運(yùn)用于規(guī)模很大的網(wǎng)絡(luò)時(shí),OSPF將一個(gè)自治系統(tǒng)在劃分為若干個(gè)更小的區(qū)域。每個(gè)區(qū)域都有一個(gè)32位的標(biāo)示符,如下圖:
這樣泛洪法只需要在各個(gè)區(qū)域中運(yùn)用,但是此時(shí)區(qū)域中的路由器只知道該區(qū)域的拓?fù)浣Y(jié)構(gòu),而不知道全網(wǎng)的拓?fù)浣Y(jié)構(gòu)。為了使每個(gè)區(qū)域之間可以進(jìn)行通信,OSPF運(yùn)用了層次結(jié)構(gòu)的區(qū)域劃分。
在上層的區(qū)域叫做主干區(qū)域(標(biāo)示符0.0.0.0)。主干區(qū)域的作用就是用來(lái)連通其他在下層的區(qū)域。從其他區(qū)域來(lái)的信息都由區(qū)域邊界路由器(R347)來(lái)概括,這些路由器同時(shí)也屬于主干區(qū)域,是主干路由器。另外自治系統(tǒng)之間的信息交互使用自治系統(tǒng)邊界路由器(R6)。
3.OSPF的五種分組類型
OSPF共有以下五種分組類型:
(1)問(wèn)候分組——用來(lái)發(fā)現(xiàn)和維持臨站的可達(dá)性。
(2)數(shù)據(jù)庫(kù)描述分組——向臨站給出自己的鏈路狀態(tài)數(shù)據(jù)庫(kù)中的所有鏈路狀態(tài)項(xiàng)目的摘要信息
(3)鏈路狀態(tài)請(qǐng)求分組——向?qū)Ψ秸?qǐng)求發(fā)送某些鏈路狀態(tài)項(xiàng)目的詳細(xì)信息。
(4)鏈路狀態(tài)更新分組——用洪泛法對(duì)全網(wǎng)跟新鏈路狀態(tài)。
(5)鏈路狀態(tài)確認(rèn)分組——對(duì)鏈路更新分組的確認(rèn)。
當(dāng)某路由器的鏈路狀態(tài)發(fā)送變化的時(shí)候就需要運(yùn)用泛洪法發(fā)送更新報(bào)文,收到的路由器需要發(fā)送確認(rèn)報(bào)文,確認(rèn)報(bào)文只需要發(fā)送一次(下圖的白箭頭為確認(rèn)報(bào)文)。
博客原文地址:http://blog.csdn.net/sicofield/article/details/9701641






















