鄭 昱 惠 子 陳 婷
(1.西安電子工程研究所 西安 710100;2.陜西應用物理化學研究所 西安 710061)
移動自組網具有無中心抗毀性好、無需基礎設施支持、支持高速動態(tài)變化的網絡拓撲等優(yōu)點,使其非常適合應用于軍用戰(zhàn)術網絡和民用車載網絡[1]。自組網的核心是路由算法,如何使用一個性能優(yōu)越的路由算法是自組網系統(tǒng)設計的關鍵。本文對BATMAN_Adv路由協議進行了研究,并基于該協議在ARM嵌入式開發(fā)平臺上實現了一種自組網系統(tǒng)。
BATMAN_Adv為移動Ad-Hoc網絡更優(yōu)方案高級版(Better Approach To Mobile Ad-Hoc Networking Advanced)的英文縮寫,其源自于對BATMAN(Better Approach To Mobile Ad-Hoc Networking)路由協議的增強和改進。BATMAN路由協議采用了一種先驗式的自組網路由算法[2],它與OLSR等其他先驗式自組網路由算法不同,每個節(jié)點無需通過獲得全網的網絡拓撲來找尋到達目的節(jié)點的完整路由路徑,而只需要獲得通過哪些鄰居節(jié)點夠到達目的節(jié)點,并從中選擇到達目的節(jié)點的最佳鄰居節(jié)點作為數據的下一跳節(jié)點。這樣使得協議輕量化,能夠迅速適應快速變化的網絡拓撲,大大減輕了每個節(jié)點的處理數據量,從而解決了OLSR等之前的先驗式路由算法在網路規(guī)模擴大時對節(jié)點處理能力要求增加,處理時延增大的問題。
BATMAN_Adv路由協議是針對BATMAN路由協議的改進,其在保持BATMAN基本算法的基礎上,主要將路由協議由路由層實現改為MAC層實現,路由協議幀由UDP包改為以太網幀。這樣的改進首先使得BATMAN路由算法在軟件實現時可以從操作系統(tǒng)的用戶層實現轉為內核層實現,從而降低軟件處理的開銷;其次,形成一個虛擬的二層交換網絡,各節(jié)點如同在一個本地交換網絡中進行數據傳輸,它們無需了解全網拓撲情況;最后,由于在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協議幀主要用于節(jié)點發(fā)現、鏈路檢測等,BATADV_BCAST和BATADV_UNICAST主要用于承載上層廣播和單播的以太網幀。在這八種協議幀中,對于路由算法的正確運行來說最為關鍵的幀為BATADV_IV_OGM幀,下面就主要對OGM的幀結構進行相應的分析。
BATADV_IV_OGM除去協議名稱和版本號的前綴BATADV_IV后,一般稱其為OGM幀,OGM為Originator Message(源節(jié)點消息)的縮寫。其幀格式如圖1所示。
圖1 OGM幀結構
其中,各主要域的具體表示如下:
1)類型:用于區(qū)分BATMAN_Adv八種不同的幀;
2)版本:用于表示協議版本信息;
3)TTL:OGM生存期,即OGM的最大轉發(fā)次數;
4)FLAG:用于表示路由的相關標識;
5)序號:用于區(qū)分新舊OGM幀,是路由選擇的關鍵信息,長度為4字節(jié),循環(huán)使用;
6)源地址:生成該OGM的源節(jié)點地址;
7)上一跳地址:表示上一跳節(jié)點的地址;
8)TQ:表示鏈路的傳輸質量。
BATMAN_Adv通過統(tǒng)計和分析接收到OGM幀的數量來判斷已檢測到鏈路的質量。由于自組網網絡鏈路的不確定性,OGM幀在傳輸過程中可能延遲或者丟失,所以節(jié)點可能收到較早的OGM幀,這種較早的OGM幀所攜帶的鏈路信息早已失效,應該將其丟棄。BATMAN_Adv通過滑動窗口機制來維護一組有效的OGM幀序號。如圖2所示,假設窗口大小為8,當前最新OGM序號為100,則有效的OGM序號為93到100。說明只要收到的OGM幀的序號在這8個序號之內就說明該OGM幀為有效OGM幀,應該將其統(tǒng)計并分析;如果收到的OGM幀的序號不在這8個序號之內,則應該判斷該序號在滑動窗口的左側還是右側,如果在左側,則說明該幀為過期失效的OGM幀,應該不做統(tǒng)計分析,直接丟棄,如果在右側,則說明該幀比當前最新OGM序號還更新,應該調整滑動窗口,將最新OGM序號設置為該幀的序號,滑動窗口相應右移,并對其進行統(tǒng)計分析。
圖2 滑動窗口機制
BATMAN_Adv維護著一個源節(jié)點信息表,該表與傳統(tǒng)路由表的功能類似,用于存儲本節(jié)點所獲得的所有源節(jié)點的信息。
源節(jié)點信息表的基本單位為一個源節(jié)點信息單元,該單元存儲著本節(jié)點關于該源節(jié)點的所有信息,單元中的表項較多,不僅包含路由所需要的信息,還包含VLAN表、編碼表等子表項,以及維護源節(jié)點信息表的鏈表信息,所以下面只對其中最為核心的表項進行相應的分析。
1)orig:用于存儲該源節(jié)點的以太網MAC地址信息;
2)ifinfo_list:源節(jié)點硬件接口信息表,包含了router、last_real_seqno、last_ttl等子表項,其中router中包含了如何路由才能達到該源節(jié)點的信息,即到達該源節(jié)點的最優(yōu)下一跳節(jié)點信息,last_real_seqno是最后收到的來源于該源節(jié)點的OGM幀序號,即1.3節(jié)中所指的當前最新OGM序號,last_ttl是最新收到數據包的TTL信息,在一個穩(wěn)定的網絡拓撲中,兩節(jié)點之間傳輸的數據包的TTL不會有大的改變,所以通過該信息可以檢測目前網絡拓撲是否有變化;
3)last_seen:從該源節(jié)點收到的數據包的最新時間標識;
4)neigh_list:所有能夠到達該源節(jié)點的鄰居節(jié)點信息,能夠到達該源節(jié)點的鄰居節(jié)點可能有若干個,路由算法的核心功能就是從中選取一個最佳的鄰居節(jié)點作為到達該源節(jié)點的下一跳節(jié)點;
5)bcast_own_sum:用于統(tǒng)計本節(jié)點廣播發(fā)送的OGM包通過該源節(jié)點重新廣播后又發(fā)送回自己的數量,統(tǒng)計這個數量對于計算TQ值至關重要。
在BATMAN_Adv中每一個網絡節(jié)點都稱作一個源節(jié)點(Originator),每一個Originator周期性的廣播OGM幀,在鄰居節(jié)點收到OGM幀后,鄰居節(jié)點根據以下的判斷對OGM幀進行處理:
1)如果OGM幀的版本信息不對,則直接將其丟棄;
2)如果OGM幀中的上一跳地址與本節(jié)點地址一致,說明是本節(jié)點發(fā)送的OGM幀,則直接將其丟棄;
3)如果OGM幀中的源節(jié)點地址與本節(jié)點地址一致,說明是本節(jié)點發(fā)送的OGM幀經過鄰居節(jié)點又廣播回來的,可以推定本節(jié)點與該鄰居節(jié)點之間為雙向鏈路,標記與該鄰居節(jié)點為雙向鏈路,并丟棄該OGM幀;
4)如果OGM幀序號在滑動窗口范圍內,則依據1.3節(jié)所介紹的滑動窗口機制進行相應處理,且將該OGM重新廣播給其他節(jié)點。
為了防止OGM被無限制的廣播,所有節(jié)點在接收到OGM幀時如果發(fā)現該OGM幀已經被接收過或者該OGM幀的TTL為2時,都會將其丟棄,這樣保證了所有OGM幀只會在每個節(jié)點中轉發(fā)一次,這種選擇性的洪泛機制保證了全網不會因為OGM幀產生全網廣播風暴,從而保障數據的正常通信。
每個節(jié)點針對每一個鄰居節(jié)點維護一個本地TQ值,該值為回環(huán)鏈路狀態(tài)EQ與接收鏈路狀態(tài)RQ的比值,即
TQ = EQ / RQ
(1)
其中EQ是本節(jié)點發(fā)給該鄰居節(jié)點又由該鄰居節(jié)點轉發(fā)回本節(jié)點的OGM幀數,RQ是所有本節(jié)點收到由該鄰居節(jié)點發(fā)送的OGM幀數。
源節(jié)點在廣播OGM幀時將OGM幀中的TQ值初始化為255,OGM幀在廣播的過程中,任何接收到該OGM幀的節(jié)點將自己本地TQ值乘以收到OGM幀中的TQ值作為轉發(fā)的OGM幀的TQ值,這樣每個節(jié)點收到的該OGM幀的TQ值即是該節(jié)點到源節(jié)點整個鏈路的狀態(tài)質量。每個節(jié)點從各個鄰居節(jié)點中獲取到源節(jié)點鏈路的TQ值后,從中選擇TQ值最大的鄰居節(jié)點作為最佳下一跳鄰居節(jié)點,即是到達源節(jié)點的最佳下一跳路由節(jié)點。
如圖3所示,網絡拓撲中有A、B、C、D、E、F六個節(jié)點,假設兩鄰居節(jié)點之間相互的本地TQ值相等,鏈路中的數值為本地TQ值。下面介紹如何確定從A節(jié)點到F節(jié)點的最佳路由路徑。如前所述,全網各節(jié)點會周期性的發(fā)送OGM幀,F節(jié)點發(fā)送的OGM幀可以通過F-E-C-A和F-D-C-A兩條路徑到達A節(jié)點,該OGM幀的最初TQ值為255,經過C、D、E三個節(jié)點的廣播轉發(fā)后,其TQ值將乘以C、D、E三個節(jié)點的本地TQ值作為轉發(fā)OGM幀的TQ值,所以最后A節(jié)點通過兩條路徑收到的OGM幀中的TQ值分別為85和80,而由于A節(jié)點收到的兩個不同TQ值的OGM幀都由C節(jié)點轉發(fā),即A節(jié)點到達F節(jié)點必須經過C節(jié)點,所以A節(jié)點到達F節(jié)點的最優(yōu)下一跳節(jié)點為C節(jié)點。同理遞推,C節(jié)點通過兩條路徑收到的OGM幀中的TQ值分別為122和114,所以可以判斷C節(jié)點到達F節(jié)點的最優(yōu)下一跳節(jié)點為E節(jié)點。最終得出A節(jié)點到F節(jié)點的最佳路由路徑為A-C-E-F。
圖3 網絡拓撲演示
自組網設備通常是一種特殊的路由設備,由物理層、MAC層和路由層組成,而基于BATMAN_Adv的自組網設備由于路由協議運行在MAC層,不存在單獨的路由層劃分,所以可以歸類為一種特殊的交換設備,但是無論是路由設備還是交換設備,都需要物理層協議和MAC層協議的支持。
自組網與其他普通無線局域網最主要區(qū)別在于自組網分布式、無中心、支持多跳等特點。IEEE 802.11是目前無線局域網中被應用最廣的協議標準,其MAC層協議包含DCF模式[4],能夠很好的支持分布式網絡,其物理層協議也能夠提供較大的數據速率。如前文所述,自組網的核心在于路由協議,而本系統(tǒng)的重點也在于BATMAN_Adv路由協議的應用,所以本自組網系統(tǒng)采用較為成熟的IEEE 802.11協議作為自組網設備的MAC層和物理層協議。
在硬件選型方面,本系統(tǒng)采用Raspberry Pi 3B開發(fā)板作為系統(tǒng)硬件,如圖4所示,其板載基于IEEE 802.11n的無線網卡,可以使用該無線網卡作為系統(tǒng)的物理層和MAC層實現。該開發(fā)板體積小,功耗和成本低,可支持運行嵌入式Linux操作系統(tǒng),非常適合作為自組網開發(fā)的驗證樣機平臺。
圖4 Raspberry Pi 3B
BATMAN_Adv在Linux系統(tǒng)中以內核驅動的方式運行,其實現方式有兩種:一種方式為使用BATMAN_Adv開源程序源代碼,在使用的Linux系統(tǒng)下進行編譯,形成內核模塊后載入操作系統(tǒng)中運行;另外一種方式為使用Linux內核自帶的BATMAN_Adv內核模塊,在Linux 2.6.38之后的所有內核版本中已經默認集成了BATMAN_Adv內核模塊,可以直接載入操作系統(tǒng)運行。
本系統(tǒng)使用的嵌入式Linux操作系統(tǒng)內核版本為Linux 3.0,包含BATMAN_Adv模塊,因此系統(tǒng)采用第二種方式實現BATMAN_Adv路由協議。雖然內核帶有BATMAN_Adv模塊,但是一般開發(fā)板廠商提供的內核鏡像都沒有將其編譯包含在內,所以需要自己對內核源碼進行編譯。編譯時可使用menuconfig工具來編輯.config內核配置文件[5],將BATMAN_Adv內核模塊選中,最后保存配置文件進行內核編譯。
Linux加載BATMAN_Adv內核模塊后,還需進行一定配置才能使得自組網設備正常運行起來。配置主要分為兩部分,第一部分是對無線網卡進行配置,使得無線網卡運行在AdHoc模式,第二部分是建立BATMAN_Adv虛擬網絡設備,將無線網卡綁定在該虛擬網絡設備上,并為該虛擬網絡設備設置IP地址。
以上配置成功后,各設備之間的自組網就已經建立起來了。
自組網設備是一個路由或交換設備,其自身并沒有需要傳輸的業(yè)務,所以自組網設備需要有業(yè)務輸入功能。開發(fā)板上的有線以太網卡能夠作為業(yè)務輸入的接口,但是需要做有線網卡到BATMAN_Adv虛擬網絡設備的數據轉發(fā)。實現數據轉發(fā)有兩種方式:一種是有線網卡與虛擬網絡設備采用不同的網絡地址,然后使用NAT技術進行地址轉換;另外一種是在MAC層上將有線網卡與虛擬網絡設備進行橋接。如前文所述,基于BATMAN_Adv的自組網設備是一種特殊的二層交換設備,所以采用以太網橋接的方式更符合其自身特點。
在實現時使用Linux中的Brctl命令進行以太網橋接,設定一個橋接虛擬網卡,并將虛擬網絡設備和有線網卡都加入到虛擬網卡中,即完成了以太網橋接功能。任意業(yè)務設備插入開發(fā)板有線網卡接口后就能像使用本地交換機一樣與自組網系統(tǒng)中的其他業(yè)務設備進行通信。
最終包含三個節(jié)點的自組網系統(tǒng)實現如圖5所示。
圖5 系統(tǒng)實現圖
為了驗證自組網系統(tǒng)的基本性能,進行如下測試:
1)點到點無線性能測試
主要對自組網系統(tǒng)點到點單跳情況下的吞吐量、丟包率、時延進行測試,使用Send/Recv測試軟件進行測試吞吐量,使用Ping命令進行測試時延。
吞吐量測試的結果如圖6所示:
圖6 吞吐量測試結果
丟包率測試的結果如圖7所示:
圖7 丟包率測試結果
時延測試的結果如圖8所示:
圖8 時延測試結果
根據測試結果可得該自組網系統(tǒng)的點到點平均吞吐量為45Mbps左右,在速率為36Mbps情況下丟包率為0,平均時延為7ms。
2)端到端無線性能和功能測試
通過降低各節(jié)點發(fā)射功率形成如圖9所示的鏈狀拓撲,對自組網系統(tǒng)端到端兩跳情況下的中繼功能和性能進行測試。
圖9 測試拓撲圖
中繼功能測試結果為當節(jié)點A與節(jié)點C無法直接通信,當節(jié)點B開啟后作為中繼節(jié)點,節(jié)點A就能夠通過節(jié)點B中繼后與節(jié)點C通信,當節(jié)點B關閉后,節(jié)點A又無法與節(jié)點C通信。
節(jié)點A到節(jié)點C的端到端吞吐量測試的結果如圖10所示:
圖10 吞吐量測試結果
節(jié)點A到節(jié)點C的端到端丟包率測試的結果如圖11所示:
圖11 丟包率測試結果
節(jié)點A到節(jié)點C的端到端時延測試的結果如圖12所示:
圖12 時延測試結果
根據測試結果可得該自組網系統(tǒng)兩跳情況下平均吞吐量為35Mbps左右,在速率為20Mbps情況下丟包率約等于0,平均時延為13ms。
通過以上測試可以得出BATMAN_Adv具有良好的系統(tǒng)性能,在多跳情況下,網絡性能并沒有大幅度的下降。
BATMAN_Adv是一種高效的輕量級自組網路由算法。它具有路由收斂快,協議開銷低,魯棒性強等優(yōu)點。并且它作為開源協議,已有現成開源實現代碼,可根據應用需求進行進一步改進,大大降低自組網路由開發(fā)的難度。因此,本文提出了一種基于BATMAN_Adv路由協議的無線自組網系統(tǒng)設計與實現,并在最后進行了相應的測試。該系統(tǒng)無論在軍事領域還是在民用領域都具有很好的應用前景。
《火控雷達技術》征稿簡則
《火控雷達技術》是國家科委批準的,由西安電子工程研究所主辦的國內外公開發(fā)行的科技類刊物。先后被《中國期刊全文數據庫》、中國核心期刊(遴選)數據庫、《中文科技期刊數據庫》、《中國學術期刊綜合評價數據庫》等收錄。本刊以理論與實踐相結合為指導方針,側重于工程應用。主要報導國內外同行在雷達、通訊等電子領域內的研究成果、技術發(fā)展動態(tài)及有關的新理論、新概念、新技術、新方法。為了把刊物辦得更好,進一步明確投稿要求,特制定本簡則。
1 投稿約定
1)稿件撰寫格式按國家科技論文撰寫標準GB7713執(zhí)行。
2)來稿要求有一定的創(chuàng)新性,觀點明確、重點突出、文字簡練。字數一般不超過5000字(含圖、表)。
3)凡屬國家基金資助項目,國家、省、部、委重點攻關課題,國際、國內學術會議宣讀論文,碩、博士生論文,請予以注明,將優(yōu)先刊用。
4)多個作者不同單位的,要標明全部作者單位。作者通信地址要寫至二級單位。第一作者需附簡歷,包括:出生年、性別、職稱(學位)、研究方向或主要科研項目。
5)文中的圖(JPG格式)、表要有圖釋和表題。坐標圖中,橫、縱坐標須標明標示、量和單位。
2 中英文摘要及參考文獻要求
2.1 摘要
來稿須有中、英文摘要及關鍵詞。中文摘要300字左右。關鍵詞3~5個。
2.2 參考文獻
參考文獻應是文中直接引用的公開出版物,在文中引用處用"[文獻序號(右上角標])"順序標注。序號與文末參考文獻編碼一致。文末參考文獻著錄格式按國家標準GB7714執(zhí)行。
1)期刊文獻 作者.題目[J].刊名,出版年,卷(期):起止頁碼.
2)專著 作者.書名[M].版本(第一版可不標注).出版地:出版社,出版年:起止頁碼.
3)論文集 作者. 論文題目[C].//編者.論文集名.出版地:出版者,出版年:起止頁碼.
4)學位論文 作者.題目[D].保存城市名:保存單位(寫到二級單位),出版年.
5)標準 起草責任者.標準代號 標準順序號-發(fā)布年,標準名稱[S].出版地:出版者,出版年.
6)科技報告 作者.題目[R].報告題目及編號.出版地:出版者,出版年:起止頁碼.
7)專利 專利所有者.題名:專利國別,專利號[P].公告日期.
8)電子文獻 作者.題名[EB/OL].出版地:出版者,發(fā)表或更新日期[引用日期].電子文獻地址.
3 其他約定
1)來稿采用與否一般在3個月內答復,逾期未接到通知者,稿件可自行處理。稿件一般不退,請自留底稿。
2)請勿一稿多投。來稿一經發(fā)表,付給稿酬并贈送當期刊物一本。作者著作權使用費、上網服務費都在所付稿酬中一次性付清。
3)稿件涉及他人利益者,編輯部不承擔任何連帶責任。
4)稿件錄用,文責自負。編輯有權作適當改動,不允許改動者請預先說明。
4 廣告征集
本刊征集企業(yè)的形象宣傳、雷達/通訊領域的產品廣告以及各種相關信息。
5 投稿要求:請作者網上電子郵件投稿,E-mail:hkldjs@163.com聯系電話:(029)85617147