引言
根據(jù)是否在一個(gè)自治域內(nèi)部使用,動(dòng)態(tài)路由協(xié)議分為內(nèi)部網(wǎng)關(guān)協(xié)議(IGP)和外部網(wǎng)關(guān)協(xié)議(EGP)。這里的自治域指一個(gè)具有統(tǒng)一管理機(jī)構(gòu)、統(tǒng)一路由策略的網(wǎng)絡(luò)。自治域內(nèi)部采用的路由選擇協(xié)議稱為內(nèi)部網(wǎng)關(guān)協(xié)議,常用的有RIP、OSPF;外部網(wǎng)關(guān)協(xié)議主要用于多個(gè)自治域之間的路由選擇,常用的是BGP和BGP-4。
路由協(xié)議(Routing Protocol):用于路由器動(dòng)態(tài)尋找網(wǎng)絡(luò)最佳路徑,保證所有路由器擁有相同的路由表,一般路由協(xié)議決定數(shù)據(jù)包在網(wǎng)絡(luò)上的行走路徑。這類協(xié)議的例子有OSPF,RIP等路由協(xié)議,通過提供共享路由選擇信息的機(jī)制來支持被動(dòng)路由協(xié)議。路由選擇協(xié)議消息在路由器之間傳送。路由選擇協(xié)議允許路由器與其他路由器通信來修改和維護(hù)路由選擇表。
1路由和路由協(xié)議
顧名思義,動(dòng)態(tài)路由協(xié)議是一些動(dòng)態(tài)生成(或?qū)W習(xí)到)路由信息的協(xié)議。在計(jì)算機(jī)網(wǎng)絡(luò)互聯(lián)技術(shù)領(lǐng)域,我們可以把路由定義如下,路由是指導(dǎo)IP報(bào)文發(fā)送的一些路徑信息。動(dòng)態(tài)路由協(xié)議是網(wǎng)絡(luò)設(shè)備如路由器(Router)學(xué)習(xí)網(wǎng)絡(luò)中路由信息的方法之一,這些協(xié)議使路由器能動(dòng)態(tài)地隨著網(wǎng)絡(luò)拓?fù)渲挟a(chǎn)生(如某些路徑的失效或新路由的產(chǎn)生等)的變化,更新其保存的路由表,使網(wǎng)絡(luò)中的路由器在較短的時(shí)間內(nèi),無需網(wǎng)絡(luò)管理員介入自動(dòng)地維持一致的路由信息,使整個(gè)網(wǎng)絡(luò)達(dá)到路由收斂狀態(tài),從而保持網(wǎng)絡(luò)的快速收斂和高可用性。
路由器學(xué)習(xí)路由信息、生成并維護(hù)路由表的方法包括直連路由(Direct)、靜態(tài)路由(Static)和動(dòng)態(tài)路由(Dynamic)。直連路由是由鏈路層協(xié)議發(fā)現(xiàn)的,一般指去往路由器的接口地址所在網(wǎng)段的路徑,該路徑信息不需要網(wǎng)絡(luò)管理員維護(hù),也不需要路由器通過某種算法進(jìn)行計(jì)算獲得,只要該接口處于活動(dòng)狀態(tài)(Active),路由器就會(huì)把通向該網(wǎng)段的路由信息填寫到路由表中去,直連路由無法使路由器獲取與其不直接相連的路由信息。
2 動(dòng)態(tài)路由協(xié)議的分類
按照區(qū)域(指自治系統(tǒng)),動(dòng)態(tài)路由協(xié)議可分為內(nèi)部網(wǎng)關(guān)協(xié)議IGP(Interior Gateway Protocol)和外部網(wǎng)關(guān)協(xié)議EGP(Exterior Gateway Protocol),按照所執(zhí)行的算法,動(dòng)態(tài)路由協(xié)議可分為距離向量路由協(xié)議(Distance Vector)、鏈路狀態(tài)路由協(xié)議(Link State),以及思科公司開發(fā)的混合型路由協(xié)議。
3 OSPF協(xié)議的特點(diǎn)
OSPF全稱為開放最短路徑優(yōu)先?!伴_放”表明它是一個(gè)公開的協(xié)議,由標(biāo)準(zhǔn)協(xié)議組織制定,各廠商都可以得到協(xié)議的細(xì)節(jié)。“最短路徑優(yōu)先”是該協(xié)議在進(jìn)行路由計(jì)算時(shí)執(zhí)行的算法。OSPF是目前內(nèi)部網(wǎng)關(guān)協(xié)議中使用最為廣泛、性能最優(yōu)的一個(gè)協(xié)議,它具有以下特點(diǎn):
◆ 可適應(yīng)大規(guī)模的網(wǎng)絡(luò);
◆ 路由變化收斂速度快;
◆ 無路由自環(huán);
◆ 支持變長子網(wǎng)掩碼(VLSM);
◆ 支持等值路由;
◆ 支持區(qū)域劃分;
◆ 提供路由分級管理;
◆ 支持驗(yàn)證;
◆ 支持以組播地址發(fā)送協(xié)議報(bào)文。
采用OSPF協(xié)議的自治系統(tǒng),經(jīng)過合理的規(guī)劃可支持超過1000臺路由器,這一性能是距離向量協(xié)議如RIP等無法比擬的。距離向量路由協(xié)議采用周期性地發(fā)送整張路由表來使網(wǎng)絡(luò)中路由器的路由信息保持一致,這個(gè)機(jī)制浪費(fèi)了網(wǎng)絡(luò)帶寬并引發(fā)了一系列的問題,下面對此將作簡單的介紹。為了完善這些協(xié)議,只能采取若干措施,在自環(huán)發(fā)生前,降低其發(fā)生的概率,在自環(huán)發(fā)生后,減小其影響范圍和時(shí)間。
在IP(IPV4)地址日益匱乏的今天,能否支持變長子網(wǎng)掩碼(VLSM)來節(jié)省IP地址資源,對一個(gè)路由協(xié)議來說是非常重要的,OSPF能夠滿足這一要求。在采用OSPF協(xié)議的網(wǎng)絡(luò)中,如果通過OSPF計(jì)算出到同一目的地有兩條以上代價(jià)(Metric)相等的路由,該協(xié)議可以將這些等值路由同時(shí)添加到路由表中。從衡量路由協(xié)議性能的角度,我們可以看出,OSPF協(xié)議確實(shí)是一個(gè)比較先進(jìn)的動(dòng)態(tài)路由協(xié)議,這也是它得到廣泛采用的主要原因。
4 OSPF協(xié)議的工作原理
上文提到,OSPF協(xié)議是一種鏈路狀態(tài)協(xié)議,那么OSPF是如何來描述鏈路連接狀況呢?
抽象模型Model 1表示路由器的一個(gè)以太網(wǎng)接口不連接其他路由器,只連接了一個(gè)以太網(wǎng)段。此時(shí),對于運(yùn)行 OSPF的路由器R1,只能識別本身,無法識別該網(wǎng)段上的設(shè)備(主機(jī)等);抽象模型Model 2表示路由器R1通過點(diǎn)對點(diǎn)鏈路(如PPP、HDLC等)連接一臺路由器R2;抽象模型Model 3表示路由器R1通過點(diǎn)對多點(diǎn)(如Frame Relay、X.25等)鏈路連接多臺路由器R3、R4等,此時(shí)路由器R5、R6之間不進(jìn)行互聯(lián);抽象模型Model 4表示路由器R1通過點(diǎn)對多點(diǎn)(如Frame Relay、X.25等)鏈路連接多臺路由器R5、R6等,此時(shí)路由器R5、R6之間互聯(lián)。以上抽象模型著重于各類鏈路層協(xié)議的特點(diǎn),而不涉及具體的鏈路層協(xié)議細(xì)節(jié)。該模型基本表達(dá)了當(dāng)前網(wǎng)絡(luò)鏈路的連接種類。
在OSPF協(xié)議中,分別對以上四種鏈路狀態(tài)類型作了描述:
對于抽象模型Model 1(以太網(wǎng)鏈路),使用Link ID(連接的網(wǎng)段)、Data(掩碼)、Type(類型)和Metric(代價(jià))來描述。此時(shí)的Link ID即為路由器R1接口所在網(wǎng)段,Data為所用掩碼,Type為3(Stubnet),Metric為代價(jià)值。
對于抽象模型Model 2(點(diǎn)對點(diǎn)鏈路),先使用Link ID(連接的網(wǎng)段)、Data(掩碼)、Type(類型)和Metric(代價(jià))來描述接口路由,以上各參數(shù)與Model 1相似。接下來描述對端路由器R2,四個(gè)參數(shù)名不變,但其含義有所不同。此時(shí)Link ID為路由器R2的Router ID,Data為路由器R2的接口地址,Type為1(Router),Metric仍為代價(jià)值。
對于抽象模型Model 3(點(diǎn)對多點(diǎn)鏈路,不全連通),先使用Link ID(連接的網(wǎng)段)、Data(掩碼)、Type(類型)和Metric(代價(jià))來描述接口路由,以上各參數(shù)與Model 1相似。接下來分別描述對端路由器R3、R4的方法,與在Model 2中描述R2類似。
對于抽象模型Model 4(點(diǎn)對多點(diǎn)鏈路,全連通),先使用Link ID(網(wǎng)段中DR的接口地址)、Data(本接口的地址)、Type(類型)和Metric(代價(jià))來描述接口路由。此時(shí)Type值為2(Transnet),然后是本網(wǎng)段中DR(指定路由器)描述的連接通告。
5 計(jì)算路由
路由器完成周邊網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)的描述(生成LSA)后,發(fā)送給網(wǎng)絡(luò)中的其他路由器,每臺路由器生成鏈路狀態(tài)數(shù)據(jù)庫(LSDB)。路由器開始執(zhí)行SPF(最短路徑優(yōu)先)算法計(jì)算路由,路由器以自己為根節(jié)點(diǎn),把LSDB中的條目與LSA進(jìn)行對比,經(jīng)過若干次的遞歸和回溯,直至路由器把所有LSA中包含的網(wǎng)段都找到路徑(把該路由填入路由表中),此時(shí)意味著所到達(dá)的該段鏈路的類型標(biāo)識為3(Stubnet)。
6 確保LSA在路由器間傳送的可靠性
從上文可以知道,作為鏈路狀態(tài)協(xié)議的OSPF的工作機(jī)制,與RIP等距離向量的路由協(xié)議是不一樣的。距離向量路由協(xié)議是通過周期性地發(fā)送整張路由表,來使網(wǎng)絡(luò)中的路由器的路由信息保持一致。
在路由器R1初始化完成后,它將向路由器R2發(fā)送Hello數(shù)據(jù)包。此時(shí)R1并不知道R2的存在,因此在數(shù)據(jù)包中不包含R2的信息(參數(shù)seen=0)。而R2在接收到該數(shù)據(jù)包后,將向R1發(fā)送Hello包。此時(shí)在路由器R1和R2之間就建立了鄰接關(guān)系,它們就可以把LSA發(fā)送給對方。當(dāng)然,在發(fā)送時(shí)OSPF考慮到要盡量減少占用的帶寬,它采用了一些技巧,我們將在下一節(jié)簡單介紹這些內(nèi)容。
眾所周知,IP協(xié)議是一種不可靠的、面向無連接的協(xié)議,它本身沒有確認(rèn)和錯(cuò)誤重傳機(jī)制。那么,在這種協(xié)議基礎(chǔ)之上,要做到數(shù)據(jù)包丟失或出錯(cuò)后進(jìn)行重傳,上層協(xié)議必須本身具備這種可靠的機(jī)制。OSPF采取了與TCP類似的確認(rèn)和超時(shí)重傳機(jī)制。鏈路狀態(tài)數(shù)據(jù)庫描述(DD)數(shù)據(jù)包中包含了一些參數(shù),序列號(seq)、報(bào)文號(I)、結(jié)尾標(biāo)識(M)及主從標(biāo)志(MS)。
7 高效率地進(jìn)行LSA的交換
在RIP等距離向量路由協(xié)議中,路由信息的交互是通過周期性地傳送整張路由表的機(jī)制來完成的,該機(jī)制使距離向量路由協(xié)議無法高效地進(jìn)行路由信息的交換。在OSPF協(xié)議中,為了提高傳輸效率,在進(jìn)行鏈路狀態(tài)通告(LSA)數(shù)據(jù)包傳輸時(shí),使用包含LSA頭(Head)的鏈路狀態(tài)數(shù)據(jù)庫描述數(shù)據(jù)包進(jìn)行傳輸,因?yàn)槊總€(gè)LSA頭中不包含具體的鏈路狀態(tài)信息,它只含有各LSA的標(biāo)識(該標(biāo)識唯一代表一個(gè)LSA),所以,該報(bào)文非常小。
由此可見,OSPF協(xié)議采用增量傳輸?shù)姆椒▉硎灌徑勇酚善鞅3忠恢碌逆溌窢顟B(tài)數(shù)據(jù)庫(LSDB)。
8 小結(jié)
綜上所述,我們可以歸納出在OSPF協(xié)議中使用到的五種協(xié)議報(bào)文,并簡單介紹了它們的作用,我們作個(gè)簡單的小結(jié):
◆ Hello報(bào)文,通過周期性地發(fā)送來發(fā)現(xiàn)和維護(hù)鄰接關(guān)系;
◆ DD(鏈路狀態(tài)數(shù)據(jù)庫描述)報(bào)文,描述本地路由器保存的LSDB(鏈路狀態(tài)數(shù)據(jù)庫);
◆ LSR(LS Request)報(bào)文,向鄰居請求本地沒有的LSA;
◆ LSU(LS Update)報(bào)文,向鄰居發(fā)送其請求或更新的LSA;
◆ LSAck(LS ACK)報(bào)文,收到鄰居發(fā)送的LSA后發(fā)送的確認(rèn)報(bào)文。
OSPF協(xié)議采用的特殊機(jī)制
指定路由器和備份指定路由器
在OSPF協(xié)議中,路由器通過發(fā)送Hello報(bào)文來確定鄰接關(guān)系,每一臺路由器都會(huì)與其他路由器建立鄰接關(guān)系,這就要求路由器之間兩兩建立鄰接關(guān)系,每臺路由器都必須與其他路由器建立鄰接關(guān)系,以達(dá)到同步鏈路狀態(tài)數(shù)據(jù)庫的目的,在網(wǎng)絡(luò)中就會(huì)建立起n×(n-1)/2條鄰接關(guān)系(n為網(wǎng)絡(luò)中OSPF路由器的數(shù)量),這樣,在進(jìn)行數(shù)據(jù)庫同步時(shí)需要占用一定的帶寬。
為了解決這個(gè)問題,OSPF采用了一個(gè)特殊的機(jī)制:選舉一臺指定路由器(DR),使網(wǎng)絡(luò)中的其他路由器都和它建立鄰接關(guān)系,而其他路由器彼此之間不用保持鄰接。路由器間鏈路狀態(tài)數(shù)據(jù)庫的同步,都通過與指定路由器交互信息完成。這樣,在網(wǎng)絡(luò)中僅需建立n-1條鄰接關(guān)系。
要被選舉為指定路由器,該路由器應(yīng)符合以下要求:
◆ 該路由器是本網(wǎng)段內(nèi)的OSPF路由器;
◆ 該OSPF路由器在本網(wǎng)段內(nèi)的優(yōu)先級(Priority)>0;
◆ 該OSPF路由器的優(yōu)先級最大,如果所有路由器的優(yōu)先級相等,路由器號(Router ID)最大的路由器(每臺路由器的Router ID是唯一的)被選舉為指定路由器。
滿足以上條件的路由器被選舉為指定路由器,而第二個(gè)滿足條件的路由器則當(dāng)選為備份指定路由器。
指定路由器和備份指定路由器的選舉,是由路由器通過發(fā)送Hello數(shù)據(jù)報(bào)文來完成的。
OSPF協(xié)議中的區(qū)域劃分
OSPF協(xié)議在大規(guī)模網(wǎng)絡(luò)的使用中,鏈路狀態(tài)數(shù)據(jù)庫比較龐大,它占用了很大的存儲空間。在執(zhí)行最小生成數(shù)算法時(shí),要耗費(fèi)較長的時(shí)間和很大的CPU資源,網(wǎng)絡(luò)拓?fù)渥兓母怕室泊蟠笤黾?。這些因素的存在,不僅耗費(fèi)了路由器大量的存儲空間,加重了路由器CPU的負(fù)擔(dān),而且,整個(gè)網(wǎng)絡(luò)會(huì)因?yàn)橥負(fù)浣Y(jié)構(gòu)的經(jīng)常變化,長期處于“動(dòng)蕩”的不可用的狀態(tài)。
OSPF協(xié)議之所以能夠支持大規(guī)模的網(wǎng)絡(luò),進(jìn)行區(qū)域劃分是一個(gè)重要的原因。
OSPF協(xié)議允許網(wǎng)絡(luò)方案設(shè)計(jì)人員根據(jù)需要把路由器放在不同的區(qū)域(Area)中,兩個(gè)不同的區(qū)域通過區(qū)域邊界路由器(ABR)相連。在區(qū)域內(nèi)部的路由信息同步,采取的方法與上文提到的方法相同。在兩個(gè)不同區(qū)域之間的路由信息傳遞,由區(qū)域邊界路由器(ABR)完成。它把相連兩個(gè)區(qū)域內(nèi)生成的路由,以類型3的LSA向?qū)Ψ絽^(qū)域發(fā)送。
OSPF協(xié)議使用區(qū)域號(Area ID)來區(qū)分不同的區(qū)域,其中,區(qū)域0為骨干區(qū)域(根區(qū)域)。因?yàn)樵趨^(qū)域間不再進(jìn)行鏈路狀態(tài)信息的交互(實(shí)際上,在區(qū)域間傳遞路由信息采用了可能導(dǎo)致路由自環(huán)的遞歸算法),OSPF協(xié)議依靠維護(hù)整個(gè)網(wǎng)絡(luò)鏈路狀態(tài)來實(shí)現(xiàn)無路由自環(huán)的能力,在區(qū)域間無法實(shí)現(xiàn)。
9 結(jié)束語
本文對OSPF動(dòng)態(tài)路由協(xié)議的主要原理和特性作了簡單的介紹,沒有涉及到自治系統(tǒng)(AS)以外的路由及路由聚合。
OSPF協(xié)議采用路由器間建立和維護(hù)鄰接關(guān)系,維護(hù)鏈路狀態(tài)信息數(shù)據(jù)庫,采用最短生成樹算法,避免了路由自環(huán)。同時(shí),又采用了一些特殊的機(jī)制,保證了它在大規(guī)模網(wǎng)絡(luò)中的可用性。
-
拓?fù)?/span>
+關(guān)注
關(guān)注
4文章
341瀏覽量
29602 -
網(wǎng)絡(luò)
+關(guān)注
關(guān)注
14文章
7565瀏覽量
88794 -
路由器
+關(guān)注
關(guān)注
22文章
3732瀏覽量
113788
發(fā)布評論請先 登錄
相關(guān)推薦
評論