歸建平,龍昭華,蔣貴全
(重慶郵電大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,重慶 400065)
移動(dòng)Ad hoc網(wǎng)絡(luò)(MANET)是由一組移動(dòng)主機(jī)通過(guò)無(wú)線(xiàn)鏈路組成的一個(gè)自治系統(tǒng),這些移動(dòng)主機(jī)構(gòu)成了拓?fù)浣Y(jié)構(gòu)動(dòng)態(tài)變化的通信網(wǎng)絡(luò)[1]。多播是一種面向群組計(jì)算的通信傳播方式,它是將數(shù)據(jù)發(fā)送給由一個(gè)目的地址指定的一組節(jié)點(diǎn)。在 Ad hoc網(wǎng)絡(luò)這種帶寬資源緊張、系統(tǒng)資源有限的網(wǎng)絡(luò)環(huán)境中,多播能夠有效的節(jié)約帶寬、減少數(shù)據(jù)包傳送開(kāi)銷(xiāo),因此具有重要的應(yīng)用價(jià)值。
本文開(kāi)發(fā)的無(wú)線(xiàn) Ad hoc網(wǎng)絡(luò)節(jié)點(diǎn)設(shè)備,是一個(gè)嵌入式移動(dòng)通訊終端,該系統(tǒng)充分利用了嵌入式設(shè)備實(shí)時(shí)性強(qiáng)、可靠性高、成本低的特點(diǎn),硬件核心采用美國(guó) Ubicom公司的IP2022處理器,選用MAODV多播協(xié)議作為系統(tǒng)的路由協(xié)議,并結(jié)合嵌入式特性對(duì)路由協(xié)議進(jìn)行了改進(jìn)。
設(shè)備硬件的整體主要分為兩部分:MCU部分和射頻部分。MCU采用UBICOM公司的IP2022,完成控制功能和系統(tǒng)軟件算法。IP2022是美國(guó)UBICOM推出的一款功能強(qiáng)大的網(wǎng)絡(luò)通信處理器,IP2022自帶嵌入式操作系統(tǒng),網(wǎng)絡(luò)協(xié)議模塊和各種接口協(xié)議模塊,可在一個(gè)芯片上支持通信物理層、Internet協(xié)議堆棧、特定設(shè)備應(yīng)用和特定設(shè)備的外設(shè)軟件模塊,并可在 Internet上重構(gòu)。同時(shí),用戶(hù)可使用預(yù)創(chuàng)建軟件模塊和配置工具來(lái)對(duì)其進(jìn)行編程和重編程,從而可為各種設(shè)備間和人機(jī)間的通信創(chuàng)建真正的單片式網(wǎng)絡(luò)應(yīng)用方案。
射頻部分采用Nordic公司的nRF905,完成無(wú)線(xiàn)信號(hào)的發(fā)送和接收工作。兩者通過(guò)SPI總線(xiàn)連接。
根據(jù)無(wú)線(xiàn)自組網(wǎng)特點(diǎn),參照OSI/RM,無(wú)線(xiàn)自組網(wǎng)體系結(jié)構(gòu)[2]如圖1所示。
圖1 無(wú)線(xiàn)自組網(wǎng)體系結(jié)構(gòu)
而結(jié)合具體的設(shè)計(jì)和對(duì)MAODV研究的需要,對(duì)其進(jìn)行了精簡(jiǎn)和改進(jìn),在這設(shè)備中采用的分層結(jié)構(gòu)是:底層硬件、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層和應(yīng)用層。
其中物理層完成無(wú)線(xiàn)信號(hào)編碼譯碼、發(fā)送和接收等工作;數(shù)據(jù)鏈路層負(fù)責(zé)相鄰節(jié)點(diǎn)之間的直接通訊,確保通訊的可靠性,完成信道接入?yún)f(xié)議;網(wǎng)絡(luò)層是無(wú)線(xiàn)自組網(wǎng)的重點(diǎn),也是它與其它現(xiàn)有網(wǎng)絡(luò)的主要區(qū)別所在。網(wǎng)絡(luò)層連接應(yīng)用層與數(shù)據(jù)鏈路層,主要功能為路由的發(fā)現(xiàn)及維護(hù),確保源節(jié)點(diǎn)與目的節(jié)點(diǎn)之間的直接或多跳通訊,多播路由協(xié)議處于這一層,提供群組通信的底層支持。應(yīng)用層連接實(shí)際的應(yīng)用與網(wǎng)絡(luò)層,給應(yīng)用提供方便的傳輸接口。
為了各層相互之間能夠有更好的獨(dú)立性,本系統(tǒng)采用一種特殊的調(diào)用機(jī)制。軟件的每個(gè)層次完成相應(yīng)的功能,提供相應(yīng)的接口,內(nèi)部通過(guò)調(diào)用本層的函數(shù)實(shí)現(xiàn)。各層提供接口函數(shù),這些接口函數(shù)只由主函數(shù)調(diào)用。
IETF的 MANET工作組推薦兩種應(yīng)用環(huán)境的多播路由協(xié)議[3],即 MAODV和 ODMRP。由于樹(shù)狀結(jié)構(gòu)多播路由協(xié)議在多播樹(shù)的初始化所需要的帶寬資源比其它結(jié)構(gòu)要小,樹(shù)狀多播路由協(xié)議具有很高的分組轉(zhuǎn)發(fā)效率,同時(shí)MAODV協(xié)議和單播AODV協(xié)議很緊密的依賴(lài)關(guān)系,所以選擇MAODV作為該系統(tǒng)的路由協(xié)議。
MAODV是單播路由協(xié)議AODV的多播擴(kuò)展,因此和AODV路由協(xié)議具有一些共同點(diǎn),例如MAODV中的大部分控制報(bào)文就是基于 AODV中的格式。MAODV是采用雙向共享樹(shù)(Bi-direction Shared Tree)[4]的多播分發(fā)機(jī)制,多播分發(fā)樹(shù)是按需創(chuàng)建的,而且MAODV多播樹(shù)中的組成員都可以受理加入組申請(qǐng)。共享樹(shù)是一棵以管理點(diǎn)為根,包括所有組成員的樹(shù)。每棵共享樹(shù)都有自己的管理點(diǎn),由管理點(diǎn)負(fù)責(zé)受理來(lái)自樹(shù)外節(jié)點(diǎn)的加入申請(qǐng)。共享樹(shù)中多播數(shù)據(jù)的分發(fā)分作兩步進(jìn)行:多播數(shù)據(jù)源節(jié)點(diǎn)先將數(shù)據(jù)用單播方式發(fā)送到管理點(diǎn),再由管理點(diǎn)沿多播樹(shù)的分枝分發(fā)多播數(shù)據(jù)。“雙向”是指多播樹(shù)中的節(jié)點(diǎn)同時(shí)設(shè)置指向樹(shù)中上游節(jié)點(diǎn)(父母節(jié)點(diǎn))和下游節(jié)點(diǎn)(子節(jié)點(diǎn))的指針。
MAODV的多播樹(shù)包含同一多播組成員以及連接它們的中間節(jié)點(diǎn)。每一個(gè)多播樹(shù)中存在一個(gè)組長(zhǎng)(Group Leader),組長(zhǎng)負(fù)責(zé)在網(wǎng)絡(luò)中申明多播樹(shù)的存在和狀態(tài)。根據(jù)節(jié)點(diǎn)在多播樹(shù)中擔(dān)任的角色不同,將所有節(jié)點(diǎn)分為三類(lèi):組成員(隸屬于多播樹(shù)中相應(yīng)的多播組的端節(jié)點(diǎn))、路由器(能夠?qū)⒔M成員連入到多播樹(shù)但不屬于多播組成員的中間節(jié)點(diǎn))、組長(zhǎng)(特殊組成員),如圖2所示。
圖2 MAODV多播樹(shù)
MAODV協(xié)議位于網(wǎng)絡(luò)層中,與在標(biāo)準(zhǔn)的TCP/IP協(xié)議棧上實(shí)現(xiàn)相比,在嵌入式系統(tǒng)中實(shí)現(xiàn) MAODV有很多不同的地方,必須要考慮微控制器的處理速率、有限的內(nèi)存空間和硬件的一些特性。MAODV協(xié)議是通過(guò)UDP協(xié)議的654端口進(jìn)行收發(fā)的??紤]到NRF905的數(shù)據(jù)幀比較短小,在設(shè)計(jì)中就直接把MAODV路由包封裝在網(wǎng)絡(luò)層數(shù)據(jù)幀中的數(shù)據(jù)域中,然后把網(wǎng)絡(luò)層中的幀的類(lèi)型域設(shè)為0x01,表示是這個(gè)幀傳輸?shù)氖锹酚尚畔ⅰ?/p>
由于路由中斷所導(dǎo)致的重新開(kāi)啟路由發(fā)現(xiàn)降低了網(wǎng)絡(luò)的整體性能。因此,應(yīng)該盡量減少路由發(fā)現(xiàn)次數(shù),從而能夠相應(yīng)地避免啟動(dòng)路由發(fā)現(xiàn)所帶來(lái)的開(kāi)銷(xiāo)。由此,考慮在網(wǎng)絡(luò)節(jié)點(diǎn)中多存幾條備用路由,這樣當(dāng)目前所使用的路由發(fā)生中斷、不可再使用時(shí),也有備用路由可以使用,這樣就可以繼續(xù)傳輸數(shù)據(jù),不需要等待路由發(fā)現(xiàn)去尋找可用路由,從而也就減少了重新使用路由發(fā)現(xiàn)所帶來(lái)的開(kāi)銷(xiāo)。如下頁(yè)圖3所示。
當(dāng)節(jié)點(diǎn)接收到數(shù)據(jù)包時(shí),首先,將數(shù)據(jù)包頭文件中的源路由與自己緩存中的路由比較,如果沒(méi)有完全一樣的路由,就將最新獲知的這條路由加入到該節(jié)點(diǎn)的緩沖中;然后,將該節(jié)點(diǎn)緩存中所有到達(dá)目的地的路由提取出來(lái),根據(jù)每條路由的有效時(shí)間周期限制,將超過(guò)該時(shí)間限制的路由從緩存中刪除;其次,按照各條路由的序列號(hào)進(jìn)行排序,如果存在序列號(hào)相同的路由,則比較其到目的地的跳數(shù),如果跳數(shù)相同,那么就按路由的生存時(shí)間排序,從而得到按優(yōu)先級(jí)排好序的路由。優(yōu)先級(jí)最高的為當(dāng)前可用路由,其他路由作為備用路由;最后將數(shù)據(jù)包沿當(dāng)前可用路由發(fā)送。一旦數(shù)據(jù)包到達(dá)目的地,該數(shù)據(jù)包就被發(fā)送到目的地主機(jī)的網(wǎng)絡(luò)層軟件去處理。這樣處理使得到達(dá)目的節(jié)點(diǎn)的路由有多條,這樣在當(dāng)前使用的路由中,由于節(jié)點(diǎn)中存儲(chǔ)著備用路由,從而能夠盡量減少重新啟動(dòng)路由發(fā)現(xiàn)所帶來(lái)的巨大開(kāi)銷(xiāo)。
圖3 路由改進(jìn)框圖
本文詳細(xì)討論了基于MAODV路由協(xié)議的無(wú)線(xiàn)Ad hoc網(wǎng)絡(luò)節(jié)點(diǎn)設(shè)備的設(shè)計(jì),包括軟硬件設(shè)計(jì),著重分析了多播路由協(xié)議并給出有效的設(shè)計(jì)方案,使MAODV路由協(xié)議更加高效。但是由于MCU性能的制約,下一步需要考慮采用性能更高的的處理器,使其可以應(yīng)用于大規(guī)模的網(wǎng)絡(luò)中。此外,還應(yīng)該在考慮在網(wǎng)絡(luò)的拓?fù)渥兓焖俚那闆r下對(duì)路由協(xié)議進(jìn)行一些改進(jìn),同時(shí)要加入QoS和安全因素,例如如何避開(kāi)那些通訊繁忙的節(jié)點(diǎn),使系統(tǒng)的總體吞吐量更大,提高網(wǎng)絡(luò)的可靠性和質(zhì)量。
[1] 鄭少仁,王海濤,趙志峰,等.Ad hoc網(wǎng)絡(luò)技術(shù)[M].北京:人民郵電出版社,2005.
[2] 英春,史美林.自組網(wǎng)體系結(jié)構(gòu)研究[J].通信學(xué)報(bào),1999,20(09):47-54.
[3] 龍昭華,賀政,蔣貴全.基于A(yíng)d hoc的按需路由協(xié)議DSR的優(yōu)化研究與實(shí)現(xiàn)[J].通信技術(shù),2007,40(09):46-48.
[4] 王新穎,吳釗,江小玲.基于節(jié)能的移動(dòng)Ad Hoc網(wǎng)絡(luò)AODV路由協(xié)議改進(jìn)[J].通信技術(shù),2008,41(07):121-123.