鄭 昱 惠 子 陳 婷
(1.西安電子工程研究所 西安 710100;2.陜西應用物理化學研究所 西安 710061)
移動自組網具有無中心抗毀性好、無需基礎設施支持、支持高速動態變化的網絡拓撲等優點,使其非常適合應用于軍用戰術網絡和民用車載網絡[1]。自組網的核心是路由算法,如何使用一個性能優越的路由算法是自組網系統設計的關鍵。本文對BATMAN_Adv路由協議進行了研究,并基于該協議在ARM嵌入式開發平臺上實現了一種自組網系統。
BATMAN_Adv為移動Ad-Hoc網絡更優方案高級版(Better Approach To Mobile Ad-Hoc Networking Advanced)的英文縮寫,其源自于對BATMAN(Better Approach To Mobile Ad-Hoc Networking)路由協議的增強和改進。BATMAN路由協議采用了一種先驗式的自組網路由算法[2],它與OLSR等其他先驗式自組網路由算法不同,每個節點無需通過獲得全網的網絡拓撲來找尋到達目的節點的完整路由路徑,而只需要獲得通過哪些鄰居節點夠到達目的節點,并從中選擇到達目的節點的最佳鄰居節點作為數據的下一跳節點。這樣使得協議輕量化,能夠迅速適應快速變化的網絡拓撲,大大減輕了每個節點的處理數據量,從而解決了OLSR等之前的先驗式路由算法在網路規模擴大時對節點處理能力要求增加,處理時延增大的問題。
BATMAN_Adv路由協議是針對BATMAN路由協議的改進,其在保持BATMAN基本算法的基礎上,主要將路由協議由路由層實現改為MAC層實現,路由協議幀由UDP包改為以太網幀。這樣的改進首先使得BATMAN路由算法在軟件實現時可以從操作系統的用戶層實現轉為內核層實現,從而降低軟件處理的開銷;其次,形成一個虛擬的二層交換網絡,各節點如同在一個本地交換網絡中進行數據傳輸,它們無需了解全網拓撲情況;最后,由于在MAC層中運行,所以在其之上可以適配幾乎所有網絡協議,例如Ipv4、Ipv6、DHCP等,擴展性極強。雖然BATMAN_Adv在MAC層中運行,但是其并不依賴于特定的網絡硬件,可以支持任何采用以太網類型的底層網絡,例如Wifi、LAN、VPN等[3]。
下面根據BATMAN_Adv的最新實現協議對其各個關鍵技術方面進行研究分析。
BATMAN_Adv路由協議包含BATADV_IV_OGM,BATADV_BCAST, BATADV_CODED,BATADV_UNICAST,BATADV_UNICAST_FRAG,BATADV_UNICAST_4ADDR,BATADV_ICMP,BATADV_UNICAST_TVLV八種協議幀。其中,BATADV_IV_OGM協議幀主要用于節點發現、鏈路檢測等,BATADV_BCAST和BATADV_UNICAST主要用于承載上層廣播和單播的以太網幀。在這八種協議幀中,對于路由算法的正確運行來說最為關鍵的幀為BATADV_IV_OGM幀,下面就主要對OGM的幀結構進行相應的分析。
BATADV_IV_OGM除去協議名稱和版本號的前綴BATADV_IV后,一般稱其為OGM幀,OGM為Originator Message(源節點消息)的縮寫。其幀格式如圖1所示。

圖1 OGM幀結構
其中,各主要域的具體表示如下:
1)類型:用于區分BATMAN_Adv八種不同的幀;
2)版本:用于表示協議版本信息;
3)TTL:OGM生存期,即OGM的最大轉發次數;
4)FLAG:用于表示路由的相關標識;
5)序號:用于區分新舊OGM幀,是路由選擇的關鍵信息,長度為4字節,循環使用;
6)源地址:生成該OGM的源節點地址;
7)上一跳地址:表示上一跳節點的地址;
8)TQ:表示鏈路的傳輸質量。
BATMAN_Adv通過統計和分析接收到OGM幀的數量來判斷已檢測到鏈路的質量。由于自組網網絡鏈路的不確定性,OGM幀在傳輸過程中可能延遲或者丟失,所以節點可能收到較早的OGM幀,這種較早的OGM幀所攜帶的鏈路信息早已失效,應該將其丟棄。BATMAN_Adv通過滑動窗口機制來維護一組有效的OGM幀序號。如圖2所示,假設窗口大小為8,當前最新OGM序號為100,則有效的OGM序號為93到100。說明只要收到的OGM幀的序號在這8個序號之內就說明該OGM幀為有效OGM幀,應該將其統計并分析;如果收到的OGM幀的序號不在這8個序號之內,則應該判斷該序號在滑動窗口的左側還是右側,如果在左側,則說明該幀為過期失效的OGM幀,應該不做統計分析,直接丟棄,如果在右側,則說明該幀比當前最新OGM序號還更新,應該調整滑動窗口,將最新OGM序號設置為該幀的序號,滑動窗口相應右移,并對其進行統計分析。

圖2 滑動窗口機制
BATMAN_Adv維護著一個源節點信息表,該表與傳統路由表的功能類似,用于存儲本節點所獲得的所有源節點的信息。
源節點信息表的基本單位為一個源節點信息單元,該單元存儲著本節點關于該源節點的所有信息,單元中的表項較多,不僅包含路由所需要的信息,還包含VLAN表、編碼表等子表項,以及維護源節點信息表的鏈表信息,所以下面只對其中最為核心的表項進行相應的分析。
1)orig:用于存儲該源節點的以太網MAC地址信息;
2)ifinfo_list:源節點硬件接口信息表,包含了router、last_real_seqno、last_ttl等子表項,其中router中包含了如何路由才能達到該源節點的信息,即到達該源節點的最優下一跳節點信息,last_real_seqno是最后收到的來源于該源節點的OGM幀序號,即1.3節中所指的當前最新OGM序號,last_ttl是最新收到數據包的TTL信息,在一個穩定的網絡拓撲中,兩節點之間傳輸的數據包的TTL不會有大的改變,所以通過該信息可以檢測目前網絡拓撲是否有變化;
3)last_seen:從該源節點收到的數據包的最新時間標識;
4)neigh_list:所有能夠到達該源節點的鄰居節點信息,能夠到達該源節點的鄰居節點可能有若干個,路由算法的核心功能就是從中選取一個最佳的鄰居節點作為到達該源節點的下一跳節點;
5)bcast_own_sum:用于統計本節點廣播發送的OGM包通過該源節點重新廣播后又發送回自己的數量,統計這個數量對于計算TQ值至關重要。
在BATMAN_Adv中每一個網絡節點都稱作一個源節點(Originator),每一個Originator周期性的廣播OGM幀,在鄰居節點收到OGM幀后,鄰居節點根據以下的判斷對OGM幀進行處理:
1)如果OGM幀的版本信息不對,則直接將其丟棄;
2)如果OGM幀中的上一跳地址與本節點地址一致,說明是本節點發送的OGM幀,則直接將其丟棄;
3)如果OGM幀中的源節點地址與本節點地址一致,說明是本節點發送的OGM幀經過鄰居節點又廣播回來的,可以推定本節點與該鄰居節點之間為雙向鏈路,標記與該鄰居節點為雙向鏈路,并丟棄該OGM幀;
4)如果OGM幀序號在滑動窗口范圍內,則依據1.3節所介紹的滑動窗口機制進行相應處理,且將該OGM重新廣播給其他節點。
為了防止OGM被無限制的廣播,所有節點在接收到OGM幀時如果發現該OGM幀已經被接收過或者該OGM幀的TTL為2時,都會將其丟棄,這樣保證了所有OGM幀只會在每個節點中轉發一次,這種選擇性的洪泛機制保證了全網不會因為OGM幀產生全網廣播風暴,從而保障數據的正常通信。
每個節點針對每一個鄰居節點維護一個本地TQ值,該值為回環鏈路狀態EQ與接收鏈路狀態RQ的比值,即
TQ = EQ / RQ
(1)
其中EQ是本節點發給該鄰居節點又由該鄰居節點轉發回本節點的OGM幀數,RQ是所有本節點收到由該鄰居節點發送的OGM幀數。
源節點在廣播OGM幀時將OGM幀中的TQ值初始化為255,OGM幀在廣播的過程中,任何接收到該OGM幀的節點將自己本地TQ值乘以收到OGM幀中的TQ值作為轉發的OGM幀的TQ值,這樣每個節點收到的該OGM幀的TQ值即是該節點到源節點整個鏈路的狀態質量。每個節點從各個鄰居節點中獲取到源節點鏈路的TQ值后,從中選擇TQ值最大的鄰居節點作為最佳下一跳鄰居節點,即是到達源節點的最佳下一跳路由節點。
如圖3所示,網絡拓撲中有A、B、C、D、E、F六個節點,假設兩鄰居節點之間相互的本地TQ值相等,鏈路中的數值為本地TQ值。下面介紹如何確定從A節點到F節點的最佳路由路徑。如前所述,全網各節點會周期性的發送OGM幀,F節點發送的OGM幀可以通過F-E-C-A和F-D-C-A兩條路徑到達A節點,該OGM幀的最初TQ值為255,經過C、D、E三個節點的廣播轉發后,其TQ值將乘以C、D、E三個節點的本地TQ值作為轉發OGM幀的TQ值,所以最后A節點通過兩條路徑收到的OGM幀中的TQ值分別為85和80,而由于A節點收到的兩個不同TQ值的OGM幀都由C節點轉發,即A節點到達F節點必須經過C節點,所以A節點到達F節點的最優下一跳節點為C節點。同理遞推,C節點通過兩條路徑收到的OGM幀中的TQ值分別為122和114,所以可以判斷C節點到達F節點的最優下一跳節點為E節點。最終得出A節點到F節點的最佳路由路徑為A-C-E-F。

圖3 網絡拓撲演示
自組網設備通常是一種特殊的路由設備,由物理層、MAC層和路由層組成,而基于BATMAN_Adv的自組網設備由于路由協議運行在MAC層,不存在單獨的路由層劃分,所以可以歸類為一種特殊的交換設備,但是無論是路由設備還是交換設備,都需要物理層協議和MAC層協議的支持。
自組網與其他普通無線局域網最主要區別在于自組網分布式、無中心、支持多跳等特點。IEEE 802.11是目前無線局域網中被應用最廣的協議標準,其MAC層協議包含DCF模式[4],能夠很好的支持分布式網絡,其物理層協議也能夠提供較大的數據速率。如前文所述,自組網的核心在于路由協議,而本系統的重點也在于BATMAN_Adv路由協議的應用,所以本自組網系統采用較為成熟的IEEE 802.11協議作為自組網設備的MAC層和物理層協議。
在硬件選型方面,本系統采用Raspberry Pi 3B開發板作為系統硬件,如圖4所示,其板載基于IEEE 802.11n的無線網卡,可以使用該無線網卡作為系統的物理層和MAC層實現。該開發板體積小,功耗和成本低,可支持運行嵌入式Linux操作系統,非常適合作為自組網開發的驗證樣機平臺。

圖4 Raspberry Pi 3B
BATMAN_Adv在Linux系統中以內核驅動的方式運行,其實現方式有兩種:一種方式為使用BATMAN_Adv開源程序源代碼,在使用的Linux系統下進行編譯,形成內核模塊后載入操作系統中運行;另外一種方式為使用Linux內核自帶的BATMAN_Adv內核模塊,在Linux 2.6.38之后的所有內核版本中已經默認集成了BATMAN_Adv內核模塊,可以直接載入操作系統運行。
本系統使用的嵌入式Linux操作系統內核版本為Linux 3.0,包含BATMAN_Adv模塊,因此系統采用第二種方式實現BATMAN_Adv路由協議。雖然內核帶有BATMAN_Adv模塊,但是一般開發板廠商提供的內核鏡像都沒有將其編譯包含在內,所以需要自己對內核源碼進行編譯。編譯時可使用menuconfig工具來編輯.config內核配置文件[5],將BATMAN_Adv內核模塊選中,最后保存配置文件進行內核編譯。
Linux加載BATMAN_Adv內核模塊后,還需進行一定配置才能使得自組網設備正常運行起來。配置主要分為兩部分,第一部分是對無線網卡進行配置,使得無線網卡運行在AdHoc模式,第二部分是建立BATMAN_Adv虛擬網絡設備,將無線網卡綁定在該虛擬網絡設備上,并為該虛擬網絡設備設置IP地址。
以上配置成功后,各設備之間的自組網就已經建立起來了。
自組網設備是一個路由或交換設備,其自身并沒有需要傳輸的業務,所以自組網設備需要有業務輸入功能。開發板上的有線以太網卡能夠作為業務輸入的接口,但是需要做有線網卡到BATMAN_Adv虛擬網絡設備的數據轉發。實現數據轉發有兩種方式:一種是有線網卡與虛擬網絡設備采用不同的網絡地址,然后使用NAT技術進行地址轉換;另外一種是在MAC層上將有線網卡與虛擬網絡設備進行橋接。如前文所述,基于BATMAN_Adv的自組網設備是一種特殊的二層交換設備,所以采用以太網橋接的方式更符合其自身特點。
在實現時使用Linux中的Brctl命令進行以太網橋接,設定一個橋接虛擬網卡,并將虛擬網絡設備和有線網卡都加入到虛擬網卡中,即完成了以太網橋接功能。任意業務設備插入開發板有線網卡接口后就能像使用本地交換機一樣與自組網系統中的其他業務設備進行通信。
最終包含三個節點的自組網系統實現如圖5所示。

圖5 系統實現圖
為了驗證自組網系統的基本性能,進行如下測試:
1)點到點無線性能測試
主要對自組網系統點到點單跳情況下的吞吐量、丟包率、時延進行測試,使用Send/Recv測試軟件進行測試吞吐量,使用Ping命令進行測試時延。
吞吐量測試的結果如圖6所示:

圖6 吞吐量測試結果
丟包率測試的結果如圖7所示:

圖7 丟包率測試結果
時延測試的結果如圖8所示:

圖8 時延測試結果
根據測試結果可得該自組網系統的點到點平均吞吐量為45Mbps左右,在速率為36Mbps情況下丟包率為0,平均時延為7ms。
2)端到端無線性能和功能測試
通過降低各節點發射功率形成如圖9所示的鏈狀拓撲,對自組網系統端到端兩跳情況下的中繼功能和性能進行測試。

圖9 測試拓撲圖
中繼功能測試結果為當節點A與節點C無法直接通信,當節點B開啟后作為中繼節點,節點A就能夠通過節點B中繼后與節點C通信,當節點B關閉后,節點A又無法與節點C通信。
節點A到節點C的端到端吞吐量測試的結果如圖10所示:

圖10 吞吐量測試結果
節點A到節點C的端到端丟包率測試的結果如圖11所示:

圖11 丟包率測試結果
節點A到節點C的端到端時延測試的結果如圖12所示:

圖12 時延測試結果
根據測試結果可得該自組網系統兩跳情況下平均吞吐量為35Mbps左右,在速率為20Mbps情況下丟包率約等于0,平均時延為13ms。
通過以上測試可以得出BATMAN_Adv具有良好的系統性能,在多跳情況下,網絡性能并沒有大幅度的下降。
BATMAN_Adv是一種高效的輕量級自組網路由算法。它具有路由收斂快,協議開銷低,魯棒性強等優點。并且它作為開源協議,已有現成開源實現代碼,可根據應用需求進行進一步改進,大大降低自組網路由開發的難度。因此,本文提出了一種基于BATMAN_Adv路由協議的無線自組網系統設計與實現,并在最后進行了相應的測試。該系統無論在軍事領域還是在民用領域都具有很好的應用前景。
《火控雷達技術》征稿簡則
《火控雷達技術》是國家科委批準的,由西安電子工程研究所主辦的國內外公開發行的科技類刊物。先后被《中國期刊全文數據庫》、中國核心期刊(遴選)數據庫、《中文科技期刊數據庫》、《中國學術期刊綜合評價數據庫》等收錄。本刊以理論與實踐相結合為指導方針,側重于工程應用。主要報導國內外同行在雷達、通訊等電子領域內的研究成果、技術發展動態及有關的新理論、新概念、新技術、新方法。為了把刊物辦得更好,進一步明確投稿要求,特制定本簡則。
1 投稿約定
1)稿件撰寫格式按國家科技論文撰寫標準GB7713執行。
2)來稿要求有一定的創新性,觀點明確、重點突出、文字簡練。字數一般不超過5000字(含圖、表)。
3)凡屬國家基金資助項目,國家、省、部、委重點攻關課題,國際、國內學術會議宣讀論文,碩、博士生論文,請予以注明,將優先刊用。
4)多個作者不同單位的,要標明全部作者單位。作者通信地址要寫至二級單位。第一作者需附簡歷,包括:出生年、性別、職稱(學位)、研究方向或主要科研項目。
5)文中的圖(JPG格式)、表要有圖釋和表題。坐標圖中,橫、縱坐標須標明標示、量和單位。
2 中英文摘要及參考文獻要求
2.1 摘要
來稿須有中、英文摘要及關鍵詞。中文摘要300字左右。關鍵詞3~5個。
2.2 參考文獻
參考文獻應是文中直接引用的公開出版物,在文中引用處用"[文獻序號(右上角標])"順序標注。序號與文末參考文獻編碼一致。文末參考文獻著錄格式按國家標準GB7714執行。
1)期刊文獻 作者.題目[J].刊名,出版年,卷(期):起止頁碼.
2)專著 作者.書名[M].版本(第一版可不標注).出版地:出版社,出版年:起止頁碼.
3)論文集 作者. 論文題目[C].//編者.論文集名.出版地:出版者,出版年:起止頁碼.
4)學位論文 作者.題目[D].保存城市名:保存單位(寫到二級單位),出版年.
5)標準 起草責任者.標準代號 標準順序號-發布年,標準名稱[S].出版地:出版者,出版年.
6)科技報告 作者.題目[R].報告題目及編號.出版地:出版者,出版年:起止頁碼.
7)專利 專利所有者.題名:專利國別,專利號[P].公告日期.
8)電子文獻 作者.題名[EB/OL].出版地:出版者,發表或更新日期[引用日期].電子文獻地址.
3 其他約定
1)來稿采用與否一般在3個月內答復,逾期未接到通知者,稿件可自行處理。稿件一般不退,請自留底稿。
2)請勿一稿多投。來稿一經發表,付給稿酬并贈送當期刊物一本。作者著作權使用費、上網服務費都在所付稿酬中一次性付清。
3)稿件涉及他人利益者,編輯部不承擔任何連帶責任。
4)稿件錄用,文責自負。編輯有權作適當改動,不允許改動者請預先說明。
4 廣告征集
本刊征集企業的形象宣傳、雷達/通訊領域的產品廣告以及各種相關信息。
5 投稿要求:請作者網上電子郵件投稿,E-mail:hkldjs@163.com聯系電話:(029)85617147