周錦陽,宋 廣
(中國人民解放軍92785部隊,遼寧 葫蘆島 125200)
移動自組織網(wǎng)絡(luò)作為一種無中心、分布式和自組織的無線移動通信網(wǎng)絡(luò),源自美國夏威夷大學(xué)于1968年構(gòu)建的無線自組織網(wǎng)絡(luò)——ALOHA系統(tǒng)[1]。與傳統(tǒng)的蜂窩通信不同,移動自組織網(wǎng)絡(luò)中的所有節(jié)點地位均等,每個節(jié)點在自身發(fā)送和接收數(shù)據(jù)的同時,需要為其他節(jié)點提供數(shù)據(jù)轉(zhuǎn)發(fā)的路由服務(wù)。隨著自組織網(wǎng)絡(luò)研究的不斷發(fā)展,移動自組織網(wǎng)絡(luò)技術(shù)可廣泛應(yīng)用于軍事及民用領(lǐng)域,其應(yīng)用領(lǐng)域包括傳感器網(wǎng)絡(luò)[2]、災(zāi)后緊急救援[3]、車輛通信和無線局域網(wǎng)等[4-5]。
文獻(xiàn)[6-8]基于Andriod系統(tǒng)平臺,針對自組織網(wǎng)絡(luò)的不同TCP/IP協(xié)議層次,分別就802. 11DCF協(xié)議、路由協(xié)議和視頻應(yīng)用進(jìn)行了研究和開發(fā)應(yīng)用。文獻(xiàn)[9]基于IOS操作系統(tǒng),通過改進(jìn)AODV協(xié)議,實現(xiàn)了安卓用戶間的信息傳輸。文獻(xiàn)[10-11]基于數(shù)傳電臺,通過對MAC層和網(wǎng)絡(luò)層路由協(xié)議的研究,設(shè)計和實現(xiàn)了平臺間的自組織通信。
本文依托嵌入式Linux操作系統(tǒng),結(jié)合WiFi無線傳輸協(xié)議,設(shè)計了一種支持視頻圖像采集、傳輸?shù)囊苿幼越M織網(wǎng)絡(luò)通信平臺。通過平臺測試,驗證了平臺通信的穩(wěn)定性和連續(xù)性,為進(jìn)一步探索和研究相關(guān)內(nèi)容提供了有益參考。
移動自組織網(wǎng)絡(luò)是一種自組織、無中心、自適應(yīng)、節(jié)點對等及拓?fù)浣Y(jié)構(gòu)動態(tài)變化的多跳無線移動網(wǎng)絡(luò)[12],其典型網(wǎng)絡(luò)架構(gòu)如圖1所示。移動自組織網(wǎng)絡(luò)不依賴于預(yù)設(shè)基礎(chǔ)設(shè)施和網(wǎng)絡(luò),網(wǎng)絡(luò)節(jié)點能夠以任意可能速度和方向移動。所有節(jié)點可以自主進(jìn)入或退出網(wǎng)絡(luò),網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)靈活多變,具有良好的適應(yīng)性和抗毀傷能力。本文重點討論自組織路由協(xié)議在嵌入式ARM平臺上的開發(fā)應(yīng)用問題。
圖1 移動自組織網(wǎng)絡(luò)結(jié)構(gòu)
移動自組織網(wǎng)絡(luò)通信平臺包括嵌入式ARM系統(tǒng)、無線通信模塊、視頻采集模塊、LCD和電源模塊,其中嵌入式ARM系統(tǒng)采用深圳天漠科技有限公司的Devkit8500D嵌入式開發(fā)系統(tǒng),負(fù)責(zé)多節(jié)點間的自組織路由;無線通信模塊采用TOTOLINK-N200UP大功率無線網(wǎng)卡,負(fù)責(zé)實現(xiàn)單跳節(jié)點間的無線通信;視頻采集模塊采用CAM8100-U數(shù)字?jǐn)z像頭,負(fù)責(zé)節(jié)點周圍視頻圖像信息采集;LCD采用深圳天漠科技有限公司生產(chǎn)的4. 3寸LCD屏,負(fù)責(zé)采集視頻圖像信息的顯示;電源模塊采用5~13 V可調(diào)移動電源模塊,負(fù)責(zé)整個通信平臺供電。移動自組織網(wǎng)絡(luò)通信平臺結(jié)構(gòu)如圖2所示,移動自組織網(wǎng)絡(luò)通信平臺實物如圖3所示。
圖2 移動自組織網(wǎng)絡(luò)通信平臺結(jié)構(gòu)圖
圖3 移動自組織網(wǎng)絡(luò)通信平臺實物
嵌入式Linux操作系統(tǒng)體系結(jié)構(gòu)如圖4所示,主要包括4層:第1層為Boot Loader,主要負(fù)責(zé)設(shè)備上電或復(fù)位后對系統(tǒng)進(jìn)行引導(dǎo)和加載;第2層為Linux內(nèi)核及設(shè)備驅(qū)動,主要用于加載系統(tǒng)內(nèi)核模塊,用戶可依據(jù)硬件需求進(jìn)行Linux內(nèi)核裁剪、定制和設(shè)備驅(qū)動移植;第3層為根文件系統(tǒng),用于加載系統(tǒng)所需的庫函數(shù)和應(yīng)用程序,通過根文件系統(tǒng)可以實現(xiàn)文件的管理;第4層為應(yīng)用層,主要包含應(yīng)用程序和C庫,用戶可依據(jù)功能需求設(shè)計不同的應(yīng)用程序。
圖4 嵌入式Linux系統(tǒng)體系結(jié)構(gòu)
3. 1. 1 Boot Loader
Boot Loader為系統(tǒng)啟動后在操作系統(tǒng)內(nèi)核運行前執(zhí)行的一小段程序,具有非常嚴(yán)格的硬件依賴性,不同硬件的嵌入式平臺采用不同的Boot Loader程序。本文Boot Loader包括1級引導(dǎo)程序(x-loader)和2級引導(dǎo)程序(u-boot),為了實現(xiàn)嵌入式Linux系統(tǒng)在Devkit8500D嵌入式開發(fā)系統(tǒng)上的正常運行,進(jìn)行了x-loader和u-boot的編譯配置。
3. 1. 2 Linux內(nèi)核及設(shè)備驅(qū)動
為實現(xiàn)嵌入式Linux系統(tǒng)對外設(shè)的支持,進(jìn)行了Linux內(nèi)核定制(包括無線通信模塊、視頻采集單元和LCD的內(nèi)核模塊定制),以及無線通信模塊驅(qū)動移植。
(1) 無線通信模塊內(nèi)核模塊定制
TOTOLINK-N200UP無線網(wǎng)卡符合IEEE 802. 11b/g/n協(xié)議標(biāo)準(zhǔn),為了實現(xiàn)嵌入式Linux系統(tǒng)對IEEE 802. 11協(xié)議棧的支持,需定制相關(guān)內(nèi)核模塊。具體定制步驟如下:
Networking support-->Wirless-->Generic IEEE 802. 11 Networking Stack(mac 80211)。
(2) 視頻采集模塊內(nèi)核模塊定制
為了實現(xiàn)嵌入式Linux系統(tǒng)對CAM8100-U數(shù)字?jǐn)z像頭的支持,需定制USB video class(UVC)內(nèi)核模塊。具體定制步驟如下:
Device Drivers-->Multimedia devices-->Video capture adapters-->V4L USB devices-->UVC input events device support。
(3) LCD內(nèi)核模塊定制
為了實現(xiàn)嵌入式Linux系統(tǒng)對LCD模塊的支持,需定制相關(guān)內(nèi)核模塊。具體定制步驟如下:
Device Drivers-->Graphics support-->OMAP2/3 Display Subsystem support(EXPERIMENTAL)(OMAP2_DSS[=y])-->OMAP2/3 Display Device Drivers--> Devkit8500 LCD Panel(PANEL_DEVKIT8500_SHARP_PANEL[=y])-->PANEL_ TYPE(
(4) 無線通信模塊驅(qū)動移植
TOTOLINK-N200UP無線網(wǎng)卡采用雷凌RT3070芯片,在Linux內(nèi)核中添加其驅(qū)動[13]支持模塊后,需對其RT3070驅(qū)動進(jìn)行移植。驅(qū)動移植方法如下:① 在雷凌官網(wǎng)下載Linux版本的RT3070驅(qū)動并解壓;② 修改os/linux/目錄下的conf.mk文件:③ 修改Makefile文件,設(shè)置芯片型號,指定Linux內(nèi)核源碼和交叉編譯工具;④ 執(zhí)行make命令,編譯通過后會在os/linux/下生成rt3070sta.ko文件。
3. 1. 3 根文件系統(tǒng)
根文件系統(tǒng)是Linux系統(tǒng)啟動后掛載的首個文件系統(tǒng)[14],其他文件系統(tǒng)通過掛載到根文件系統(tǒng)后才能使用,通過文件系統(tǒng)可以實現(xiàn)文件的管理。
移動自組織網(wǎng)絡(luò)通信平臺在加電啟動后,需加載無線通信模塊驅(qū)動和自組織路由協(xié)議、配置無線通信模塊IP地址和網(wǎng)絡(luò)模式,所以需修改根文件系統(tǒng)的啟動項。具體操作步驟如下:① 將根文件系統(tǒng)解壓成映像文件;② 掛載映像文件;③ 修改系統(tǒng)啟動項;④ 卸裝鏡像文件;⑤ 將修改后的文件系統(tǒng)制作成壓縮文件。在操作步驟③中,系統(tǒng)啟動項文件為/etc/init.d/目錄下的rc文件,需在文件末尾加入添加如下配置:
insmod rt3070sta.ko ∥加載無線網(wǎng)卡驅(qū)動模塊
ifconfig ra0 up ∥啟動無線網(wǎng)卡
ifconfig ra0 192. 168. 0. 1 ∥配置無線網(wǎng)卡IP地址
iwconfig ra0 mode ad-hoc ∥設(shè)置無線網(wǎng)卡模式為ad hoc模式
insmod kaodv.ko ∥加載自組織路由協(xié)議模塊
3. 1. 4 應(yīng)用層
應(yīng)用層程序主要完成了視頻圖像的采集、壓縮、傳輸和顯示功能。嵌入式Linux系統(tǒng)通過設(shè)備文件讀寫的方式訪問控制USB攝像頭,通過調(diào)用V4L2模塊的API接口,實現(xiàn)視頻圖像的采集;采集后的視頻格式為YUV格式,需要較大傳輸帶寬,不利于無線傳輸,通過對視頻圖像進(jìn)行壓縮,將YUV格式轉(zhuǎn)化為JPEG格式;視頻傳輸采用基于UDP的socket通信,UDP傳輸是面向非連接的,無需保證傳輸?shù)目煽啃裕词箒G幀也不會影響到視頻顯示效果;視頻顯示采用Linux的圖形接口,基于FrameBuffer的圖像顯示,其具有硬件無關(guān)性,直接操作顯存,實現(xiàn)視頻圖像信息的顯示。
移動自組織網(wǎng)絡(luò)通信平臺采用嵌入式Linux操作系統(tǒng),利用Linux內(nèi)核netfilter框架的包過濾功能[ 15],在PRE_ROUTING及LOCAL_OUT兩個HOOK點設(shè)置鉤子函數(shù),對流出(發(fā)送數(shù)據(jù))和流入(接收數(shù)據(jù))節(jié)點的數(shù)據(jù)包進(jìn)行抓包,針對數(shù)據(jù)包的不同類型,加載不同的報文處理策略,實現(xiàn)移動自組織網(wǎng)絡(luò)通信平臺間的自組織路由功能。
3. 2. 1 發(fā)送數(shù)據(jù)處理
發(fā)送數(shù)據(jù)作為平臺自身產(chǎn)生的數(shù)據(jù)包,其處理流程如圖5所示。依據(jù)平臺節(jié)點是否存在目的路由,決定是否生成RREQ報文,并啟用RREQ發(fā)送策略。
圖5 發(fā)送數(shù)據(jù)處理流程
3. 2. 2 接收數(shù)據(jù)處理
接收數(shù)據(jù)作為外部節(jié)點流入平臺節(jié)點的數(shù)據(jù),其處理流程如圖6所示。設(shè)計數(shù)據(jù)包分為2種:數(shù)據(jù)報文和控制報文,其中控制報文包括:RREQ報文、RREP報文、HELLO報文和RERR報文。依據(jù)數(shù)據(jù)包的不同類型,采用不同的處理策略,從而實現(xiàn)自組織路由協(xié)議的路由建立和路由維護。
圖6 接收數(shù)據(jù)處理流程
在多跳實驗場景下,針對網(wǎng)絡(luò)時延和丟包率兩方面進(jìn)行性能測試,驗證移動自組織網(wǎng)絡(luò)通信平臺間的通信穩(wěn)定性。靜態(tài)測試如圖7所示,平臺S,M,D均靜止。通過平臺S發(fā)送到平臺D的ping擴展指令,記錄網(wǎng)絡(luò)時延和丟包率。
圖7 自組織通信平臺靜態(tài)測試示意
經(jīng)測試及結(jié)果統(tǒng)計,多跳時延結(jié)果如圖8所示,多跳丟包率如圖9所示。依據(jù)統(tǒng)計結(jié)果可知,對于2跳S-M1-D鏈路,當(dāng)發(fā)送1 KB大小的數(shù)據(jù)包時,鏈路平均時延穩(wěn)定在61 ms左右,上下波動不超過3 ms。隨著測試時間的增加,丟包率從1. 6%逐步趨近于0。由此可見,針對節(jié)點靜止的多跳自組織網(wǎng)絡(luò),鏈路時延穩(wěn)定性良好,數(shù)據(jù)包丟失僅出現(xiàn)在路由建立的初始階段,隨著測試時間的增長,丟包率趨近于0,鏈路通信狀態(tài)良好。
圖8 多跳時延測試結(jié)果
圖9 多跳丟包率
在多跳路由切換實驗場景下,針對網(wǎng)絡(luò)時延和丟包率進(jìn)行性能測試,驗證移動自組織網(wǎng)絡(luò)通信平臺的通信穩(wěn)定性和連續(xù)性。動態(tài)測試如圖10所示,平臺S,M1,M2均靜止,平臺D勻速往返運動。通過源節(jié)點S發(fā)送到目的節(jié)點D的ping擴展指令,記錄網(wǎng)絡(luò)時延和丟包率。
圖10 自組織通信平臺動態(tài)測試示意
經(jīng)測試及結(jié)果統(tǒng)計,路由切換時延結(jié)果如圖11所示,路由切換丟包率如圖12所示。依據(jù)統(tǒng)計結(jié)果可知,對于多節(jié)點路由切換鏈路,當(dāng)發(fā)送1 KB大小的數(shù)據(jù)包時,鏈路平均時延在61. 5 ms左右,上下波動不超過2 ms,丟包率穩(wěn)定在4. 7%左右,最大不超過5%。由此可見,針對多節(jié)點自組織網(wǎng)絡(luò)的路由切換,鏈路時延穩(wěn)定性良好,數(shù)據(jù)丟包率較小。
圖11 路由切換時延結(jié)果
圖12 路由切換丟包率
綜上分析可知:鏈路平均時延與所經(jīng)跳數(shù)相關(guān),跳數(shù)越多,時延越大;丟包率與路由切換頻率相關(guān),路由切換越頻繁,丟包率越大。
采用嵌入式ARM系統(tǒng),結(jié)合WiFi無線通信和數(shù)字?jǐn)z像頭視頻感知,設(shè)計并實現(xiàn)了一種支持視頻圖像采集、傳輸?shù)囊苿幼越M織網(wǎng)絡(luò)通信平臺。測試結(jié)果表明,移動自組織通信平臺具有良好的通信穩(wěn)定性和連續(xù)性。隨著嵌入式技術(shù)的發(fā)展和移動自組織網(wǎng)絡(luò)的應(yīng)用,未來還需要對自組織路由協(xié)議和工程應(yīng)用做進(jìn)一步研究,使之更廣泛地應(yīng)用于車聯(lián)網(wǎng)、物聯(lián)網(wǎng)及無線傳感器網(wǎng)絡(luò)等方向。