歸建平,龍昭華,蔣貴全
(重慶郵電大學 計算機科學與技術學院,重慶 400065)
移動Ad hoc網絡(MANET)是由一組移動主機通過無線鏈路組成的一個自治系統,這些移動主機構成了拓撲結構動態變化的通信網絡[1]。多播是一種面向群組計算的通信傳播方式,它是將數據發送給由一個目的地址指定的一組節點。在 Ad hoc網絡這種帶寬資源緊張、系統資源有限的網絡環境中,多播能夠有效的節約帶寬、減少數據包傳送開銷,因此具有重要的應用價值。
本文開發的無線 Ad hoc網絡節點設備,是一個嵌入式移動通訊終端,該系統充分利用了嵌入式設備實時性強、可靠性高、成本低的特點,硬件核心采用美國 Ubicom公司的IP2022處理器,選用MAODV多播協議作為系統的路由協議,并結合嵌入式特性對路由協議進行了改進。
設備硬件的整體主要分為兩部分:MCU部分和射頻部分。MCU采用UBICOM公司的IP2022,完成控制功能和系統軟件算法。IP2022是美國UBICOM推出的一款功能強大的網絡通信處理器,IP2022自帶嵌入式操作系統,網絡協議模塊和各種接口協議模塊,可在一個芯片上支持通信物理層、Internet協議堆棧、特定設備應用和特定設備的外設軟件模塊,并可在 Internet上重構。同時,用戶可使用預創建軟件模塊和配置工具來對其進行編程和重編程,從而可為各種設備間和人機間的通信創建真正的單片式網絡應用方案。
射頻部分采用Nordic公司的nRF905,完成無線信號的發送和接收工作。兩者通過SPI總線連接。
根據無線自組網特點,參照OSI/RM,無線自組網體系結構[2]如圖1所示。

圖1 無線自組網體系結構
而結合具體的設計和對MAODV研究的需要,對其進行了精簡和改進,在這設備中采用的分層結構是:底層硬件、數據鏈路層、網絡層和應用層。
其中物理層完成無線信號編碼譯碼、發送和接收等工作;數據鏈路層負責相鄰節點之間的直接通訊,確保通訊的可靠性,完成信道接入協議;網絡層是無線自組網的重點,也是它與其它現有網絡的主要區別所在。網絡層連接應用層與數據鏈路層,主要功能為路由的發現及維護,確保源節點與目的節點之間的直接或多跳通訊,多播路由協議處于這一層,提供群組通信的底層支持。應用層連接實際的應用與網絡層,給應用提供方便的傳輸接口。
為了各層相互之間能夠有更好的獨立性,本系統采用一種特殊的調用機制。軟件的每個層次完成相應的功能,提供相應的接口,內部通過調用本層的函數實現。各層提供接口函數,這些接口函數只由主函數調用。
IETF的 MANET工作組推薦兩種應用環境的多播路由協議[3],即 MAODV和 ODMRP。由于樹狀結構多播路由協議在多播樹的初始化所需要的帶寬資源比其它結構要小,樹狀多播路由協議具有很高的分組轉發效率,同時MAODV協議和單播AODV協議很緊密的依賴關系,所以選擇MAODV作為該系統的路由協議。
MAODV是單播路由協議AODV的多播擴展,因此和AODV路由協議具有一些共同點,例如MAODV中的大部分控制報文就是基于 AODV中的格式。MAODV是采用雙向共享樹(Bi-direction Shared Tree)[4]的多播分發機制,多播分發樹是按需創建的,而且MAODV多播樹中的組成員都可以受理加入組申請。共享樹是一棵以管理點為根,包括所有組成員的樹。每棵共享樹都有自己的管理點,由管理點負責受理來自樹外節點的加入申請。共享樹中多播數據的分發分作兩步進行:多播數據源節點先將數據用單播方式發送到管理點,再由管理點沿多播樹的分枝分發多播數據?!半p向”是指多播樹中的節點同時設置指向樹中上游節點(父母節點)和下游節點(子節點)的指針。
MAODV的多播樹包含同一多播組成員以及連接它們的中間節點。每一個多播樹中存在一個組長(Group Leader),組長負責在網絡中申明多播樹的存在和狀態。根據節點在多播樹中擔任的角色不同,將所有節點分為三類:組成員(隸屬于多播樹中相應的多播組的端節點)、路由器(能夠將組成員連入到多播樹但不屬于多播組成員的中間節點)、組長(特殊組成員),如圖2所示。

圖2 MAODV多播樹
MAODV協議位于網絡層中,與在標準的TCP/IP協議棧上實現相比,在嵌入式系統中實現 MAODV有很多不同的地方,必須要考慮微控制器的處理速率、有限的內存空間和硬件的一些特性。MAODV協議是通過UDP協議的654端口進行收發的??紤]到NRF905的數據幀比較短小,在設計中就直接把MAODV路由包封裝在網絡層數據幀中的數據域中,然后把網絡層中的幀的類型域設為0x01,表示是這個幀傳輸的是路由信息。
由于路由中斷所導致的重新開啟路由發現降低了網絡的整體性能。因此,應該盡量減少路由發現次數,從而能夠相應地避免啟動路由發現所帶來的開銷。由此,考慮在網絡節點中多存幾條備用路由,這樣當目前所使用的路由發生中斷、不可再使用時,也有備用路由可以使用,這樣就可以繼續傳輸數據,不需要等待路由發現去尋找可用路由,從而也就減少了重新使用路由發現所帶來的開銷。如下頁圖3所示。
當節點接收到數據包時,首先,將數據包頭文件中的源路由與自己緩存中的路由比較,如果沒有完全一樣的路由,就將最新獲知的這條路由加入到該節點的緩沖中;然后,將該節點緩存中所有到達目的地的路由提取出來,根據每條路由的有效時間周期限制,將超過該時間限制的路由從緩存中刪除;其次,按照各條路由的序列號進行排序,如果存在序列號相同的路由,則比較其到目的地的跳數,如果跳數相同,那么就按路由的生存時間排序,從而得到按優先級排好序的路由。優先級最高的為當前可用路由,其他路由作為備用路由;最后將數據包沿當前可用路由發送。一旦數據包到達目的地,該數據包就被發送到目的地主機的網絡層軟件去處理。這樣處理使得到達目的節點的路由有多條,這樣在當前使用的路由中,由于節點中存儲著備用路由,從而能夠盡量減少重新啟動路由發現所帶來的巨大開銷。

圖3 路由改進框圖
本文詳細討論了基于MAODV路由協議的無線Ad hoc網絡節點設備的設計,包括軟硬件設計,著重分析了多播路由協議并給出有效的設計方案,使MAODV路由協議更加高效。但是由于MCU性能的制約,下一步需要考慮采用性能更高的的處理器,使其可以應用于大規模的網絡中。此外,還應該在考慮在網絡的拓撲變化快速的情況下對路由協議進行一些改進,同時要加入QoS和安全因素,例如如何避開那些通訊繁忙的節點,使系統的總體吞吐量更大,提高網絡的可靠性和質量。
[1] 鄭少仁,王海濤,趙志峰,等.Ad hoc網絡技術[M].北京:人民郵電出版社,2005.
[2] 英春,史美林.自組網體系結構研究[J].通信學報,1999,20(09):47-54.
[3] 龍昭華,賀政,蔣貴全.基于Ad hoc的按需路由協議DSR的優化研究與實現[J].通信技術,2007,40(09):46-48.
[4] 王新穎,吳釗,江小玲.基于節能的移動Ad Hoc網絡AODV路由協議改進[J].通信技術,2008,41(07):121-123.