DSR協(xié)議是最早采用按需路由思想的路由協(xié)議。它包括路由發(fā)現(xiàn)和路由維護(hù)兩個(gè)過(guò)程。它的主要特點(diǎn)是使用了源路由機(jī)制進(jìn)行分組轉(zhuǎn)發(fā)。這種機(jī)制最初是IEEE 802.5協(xié)議用于在網(wǎng)橋互聯(lián)的多個(gè)令牌環(huán)網(wǎng)中的結(jié)點(diǎn)尋找路由。DSR協(xié)議借鑒了這種機(jī)制,并加人了按需思想而形成。它的優(yōu)點(diǎn)在于中間結(jié)點(diǎn)不用維護(hù)去往全網(wǎng)所有結(jié)點(diǎn)的路由信息,而且可以避免出現(xiàn)路由環(huán)路。它的缺點(diǎn)是每個(gè)數(shù)據(jù)分組都攜帶了路徑信息,造成協(xié)議開(kāi)銷較大,而且也不適合網(wǎng)絡(luò)直徑大的自組網(wǎng),網(wǎng)絡(luò)可擴(kuò)展性不強(qiáng)。
該協(xié)議的路由發(fā)現(xiàn)過(guò)程如下:
①RREQ分組。結(jié)點(diǎn)有分組要發(fā)時(shí),動(dòng)態(tài)地廣播“路由請(qǐng)求分組”RREQ。RREQ分組應(yīng)包括信宿、請(qǐng)求分組發(fā)送結(jié)點(diǎn)地址、本分組ID、路由記錄。{請(qǐng)求分組發(fā)送結(jié)點(diǎn)地址+本分組ID}用于唯一地識(shí)別RREQ,以便于RREQ的接收處理,這里稱為RREQ標(biāo)識(shí)。路由記錄將積累地記下RREQ分組逐跳傳播時(shí)所順序經(jīng)過(guò)的結(jié)點(diǎn)地址,從而完成路由發(fā)現(xiàn)的功能。
?、诮Y(jié)點(diǎn)對(duì)RREQ分組的處理。
(a)如果在最近收到的f歷史RREQ列表”中已存在,則丟棄該RREQ分組,不作進(jìn)一步的處理;
(b)如果“路由記錄”中包括本結(jié)點(diǎn),則丟棄該RREQ分組,不作進(jìn)一步的處理;
(c)如果本結(jié)點(diǎn)就是RREQ指定的信宿,發(fā)送“路由回答分組”RREP,否則將本結(jié)點(diǎn)的地點(diǎn)添加到“路由記錄”的后面,重新廣播更新后的RREQ分組。
?、坌潘薜穆酚苫卮餜REP。RREP包含有由信宿接收到RREQ分組的路由記錄。RREP的目的是如何把這個(gè)路由記錄告訴給信源。先假設(shè)網(wǎng)絡(luò)中所有的鏈路是雙向的。如果信宿到信源的“反向路由”存在,則RREP分組沿“反向路由”點(diǎn)到點(diǎn)傳輸?shù)叫旁?如果信宿到信源的“反向路由”不存在,則按RREQ中的“路由記錄”(前向路由)進(jìn)行反向傳送。
?、艽嬖趩蜗蜴溌贰P潘迗?zhí)行與信源相同的反向路由發(fā)現(xiàn)過(guò)程,所不同的是信宿RREQ分組稍帶傳送RREP分組。
按需路由協(xié)議中,沒(méi)有周期性的網(wǎng)絡(luò)測(cè)試過(guò)程,各結(jié)點(diǎn)需要執(zhí)行路由維護(hù)進(jìn)程,動(dòng)態(tài)地監(jiān)視活動(dòng)路由的運(yùn)行情況。該協(xié)議的路由維護(hù)過(guò)程如下:
?、佟爸鹛鳰AC確認(rèn)”的網(wǎng)絡(luò)。這種網(wǎng)絡(luò)中,鏈路的故障或變化由MAC層通告,結(jié)點(diǎn)將發(fā)送“路由錯(cuò)誤分組”RRER到信源;信源結(jié)點(diǎn)將刪除該路由,重新進(jìn)行路由發(fā)現(xiàn)。
?、凇爸鹛鳰AC不確認(rèn)”的網(wǎng)絡(luò)。這種情況下,可利用無(wú)線傳輸?shù)目臻g廣播性,實(shí)現(xiàn)等效的“被動(dòng)ACK”。當(dāng)結(jié)點(diǎn)A轉(zhuǎn)發(fā)分組到下一跳B時(shí),B到C的分組轉(zhuǎn)發(fā)可被A監(jiān)聽(tīng)到。
?、劾谩岸说蕉舜_認(rèn)”的路由維護(hù)。端到端的確認(rèn)(如TCP層的確認(rèn)機(jī)制)也可以實(shí)現(xiàn)路由維護(hù),信源端將檢測(cè)到并發(fā)起新的路由請(qǐng)求。
(2)AODV協(xié)議
AODV協(xié)議是在DSDV協(xié)議基礎(chǔ)上,結(jié)合類似DSR中的按需路由機(jī)制進(jìn)行改進(jìn)后提出的。不同之處在于AODV采用了逐跳轉(zhuǎn)發(fā)分組方式,而DSR是源路由方式。因此,AODV在每個(gè)中間結(jié)點(diǎn)隱式保存了路由請(qǐng)求和回答的結(jié)果,而DSR將結(jié)果顯示保存在路由請(qǐng)求和路由回答分組中。此外,AODV的另一個(gè)顯著特點(diǎn)是它加人了組播路由協(xié)議擴(kuò)展,并支持QoS。它的缺點(diǎn)是不支持單向信道,原因是AODV協(xié)議基于雙向信道的假設(shè)工作,路由回答分組直接沿著路由請(qǐng)求的反方向回到源結(jié)點(diǎn)。AODV與DSR的路由發(fā)現(xiàn)有所不同,該協(xié)議的路由發(fā)現(xiàn)過(guò)程如下:
①RREQ分組。結(jié)點(diǎn)在需要(沒(méi)有到信宿的活動(dòng)路由)時(shí),向其鄰居廣播RREQ分組用于路由發(fā)現(xiàn)。RREQ分組包括信源地址、信源序列號(hào)、廣播ID、信宿地址、信宿序列號(hào)、跳計(jì)數(shù)。
(a)(信源地址+廣播ID)唯一地標(biāo)識(shí)了一個(gè)RREQ分組;
(b)信源序列號(hào)由信源結(jié)點(diǎn)維護(hù),用于表示“到信源的反向路由”的新舊;
(c)信宿序列號(hào)表示信源可接受的“到信宿的前向路由”的新舊,等于過(guò)去接收到的有關(guān)信宿的最大序列號(hào)??梢?jiàn),結(jié)點(diǎn)需要為每一個(gè)信宿維護(hù)一個(gè)信宿序列號(hào);
(d)RREQ的跳計(jì)數(shù)=0。
?、趯?duì)RREQ的處理。接收到RREQ的結(jié)點(diǎn)的處理方法為:創(chuàng)建一個(gè)表項(xiàng),先不分配有效的序列號(hào),用于記錄反向路徑。如果在“路由發(fā)現(xiàn)定時(shí)”內(nèi)已收到一個(gè)具有相同標(biāo)識(shí)的RREQ分組,則拋棄該分組,不作任何的處理,否則對(duì)該表項(xiàng)進(jìn)行更新如下:
(a)信源序列號(hào)=RREQ分組的信源序列號(hào);
(b)下一跳結(jié)點(diǎn)=廣播RREQ的鄰居;
(c)跳數(shù)=RREQ分組的“跳計(jì)數(shù)”字段值;
(d)設(shè)置表項(xiàng)的“過(guò)時(shí)定時(shí)器”。
如果該結(jié)點(diǎn)是信宿,結(jié)點(diǎn)的路由表中有到信宿的活動(dòng)表項(xiàng),且表項(xiàng)的信宿的序列號(hào)大于RREQ中的信宿序列號(hào)(新),則該結(jié)點(diǎn)將產(chǎn)生“路由回答分組”RREP,并發(fā)送到信源,否則更新RREQ分組,并廣播更新后的RREQ分組。
(a)信宿序列號(hào)=本結(jié)點(diǎn)收到的該信宿相關(guān)的最大序列號(hào);
(b)跳計(jì)數(shù)加1。
?、跼REP的產(chǎn)生。產(chǎn)生RREP的條件如上所述。RREP分組各字段設(shè)置如下。
信宿結(jié)點(diǎn)產(chǎn)生的RREP:
(a)如果收到的相應(yīng)RREQ的信宿序列號(hào)與信宿維護(hù)的當(dāng)前序列號(hào)相等,則信宿將自己維護(hù)的序列號(hào)加1,否則不變;
(b)信宿序列號(hào)=信宿維護(hù)的序列號(hào);
(c)跳計(jì)數(shù)=0;
(d)定時(shí)器值。
中間結(jié)點(diǎn)產(chǎn)生的RREP:
(a)本結(jié)點(diǎn)所獲得的該信宿的最大序列號(hào);
(b)跳計(jì)數(shù)=本結(jié)點(diǎn)到信宿的跳數(shù);
(c)更新本結(jié)點(diǎn)維護(hù)的“前向路由表項(xiàng)”的下一跳和“反向路由表項(xiàng)”的前一跳。
?、軐?duì)RREP的處理。結(jié)點(diǎn)對(duì)接收到的RREP的處理方法為:如果沒(méi)有與RREP分組中的信宿相匹配的表項(xiàng),則先創(chuàng)建一個(gè)“前向路表”的空表項(xiàng),否則滿足如下條件對(duì)已有表項(xiàng)進(jìn)行更新:
(a)現(xiàn)有表項(xiàng)的信宿序列號(hào)小于RREP分組中的信宿序列號(hào);
(b)現(xiàn)有的表項(xiàng)沒(méi)有激活;
(c)信宿序列號(hào)相同,但RREP分組的“跳計(jì)數(shù)”值小于表項(xiàng)相對(duì)應(yīng)的值;通過(guò)更新或創(chuàng)建,產(chǎn)生一個(gè)新的前向路徑;
(d)下一跳=廣播RREP的鄰居結(jié)點(diǎn);
(e)信宿序列號(hào)=RREP中的信宿序列號(hào);
(f)跳計(jì)數(shù)加1。
按照上述的過(guò)程,任何轉(zhuǎn)發(fā)RREP的結(jié)點(diǎn),都記錄了到信宿的下一跳,當(dāng)RREP到達(dá)信源時(shí),結(jié)點(diǎn)地址匹配,不再轉(zhuǎn)發(fā)RREP,信源到信宿的前向路徑已建立起來(lái)了。信源可以沿這條前向路徑進(jìn)行分組傳輸。
該協(xié)議的路由維護(hù)過(guò)程如下:
?、倥c活動(dòng)路由無(wú)關(guān)的結(jié)點(diǎn)移動(dòng),并不影響信源到信宿的尋徑。
?、谌绻旁唇Y(jié)點(diǎn)移動(dòng)導(dǎo)致路由不可用,則由信源重新發(fā)起路由發(fā)現(xiàn)的過(guò)程。
③當(dāng)信宿結(jié)點(diǎn)或活動(dòng)路由的中間結(jié)點(diǎn)移動(dòng),導(dǎo)致鏈路中斷,則鏈路的“上游結(jié)點(diǎn)”主動(dòng)發(fā)送一個(gè)RREP,該RREP的信宿序列號(hào)大于其所獲取的信宿序列號(hào),跳計(jì)數(shù)的值設(shè)為∞,并傳播到所有的活動(dòng)鄰居。該過(guò)程重復(fù),直至所有的相關(guān)信源結(jié)點(diǎn)被通告到。信源結(jié)點(diǎn)如果需要,可重發(fā)起路由發(fā)現(xiàn)過(guò)程。
AODV與DSR的比較:
?、貲SR使用源路由技術(shù)進(jìn)行路由發(fā)現(xiàn),AODV通過(guò)“路由請(qǐng)求分組”洪泛進(jìn)行路由發(fā)現(xiàn),DSR在一次路由發(fā)現(xiàn)過(guò)程中結(jié)點(diǎn)獲取的路由信息遠(yuǎn)遠(yuǎn)多于AODV。從這個(gè)角度看,AODV進(jìn)行“路由發(fā)現(xiàn)”可能更頻繁,所帶來(lái)的開(kāi)銷比較大。
?、贒SR在一次路由發(fā)現(xiàn)過(guò)程中或獲取到多個(gè)替代的路由,而AODV只響應(yīng)一個(gè)路由,后續(xù)的在定時(shí)內(nèi)的申請(qǐng)被丟棄。
上述的表驅(qū)動(dòng)路由協(xié)議和按需路由協(xié)議統(tǒng)稱為平面型路由協(xié)議,還有一類路由協(xié)議混合了二者優(yōu)點(diǎn),稱為層次性路由協(xié)議或混合型路由協(xié)議。在平面型路由協(xié)議中,所有節(jié)點(diǎn)功能都是對(duì)等的;在層次型路由協(xié)議中,各層次由若干個(gè)節(jié)點(diǎn)組成,在層次內(nèi)的節(jié)點(diǎn)之間采用表驅(qū)動(dòng)路由算法,在各層次間采用按需路由算法,代表性的協(xié)議有區(qū)域路由協(xié)議(zone routing protocol,ZRP)。ZRP協(xié)議是第一個(gè)利用分級(jí)結(jié)構(gòu)混合使用按需和主動(dòng)路由策略的自組網(wǎng)路由協(xié)議。ZRP中,分級(jí)被稱作域(zone)。域形成算法較為簡(jiǎn)單,它是通過(guò)一個(gè)重要的協(xié)議參數(shù)-區(qū)域半徑,指定每個(gè)結(jié)點(diǎn)維護(hù)的區(qū)域大小,即所有距離不超過(guò)區(qū)域半徑的結(jié)點(diǎn)都屬于該區(qū)域。一個(gè)結(jié)點(diǎn)可能同時(shí)屬于多個(gè)區(qū)域。為了綜合利用按需路由和主動(dòng)路由的各自優(yōu)點(diǎn),ZRP規(guī)定每個(gè)結(jié)點(diǎn)采用DVA主動(dòng)路由協(xié)議維護(hù)去往區(qū)域內(nèi)結(jié)點(diǎn)的路由,采用類似DSR協(xié)議中的按需路由機(jī)制尋找去往區(qū)域外結(jié)點(diǎn)的路由。ZRP協(xié)議的性能很大程度上由區(qū)域半徑參數(shù)決定。通常,小的區(qū)域半徑適合在移動(dòng)速度較快的結(jié)點(diǎn)組成的密集網(wǎng)絡(luò)中使用;大的區(qū)域半徑適合在移動(dòng)速度慢的結(jié)點(diǎn)組成的稀疏網(wǎng)絡(luò)中使用。
評(píng)論