羅宇立 毛席龍 趙寶康
(國防科技大學計算機學院,湖南 長沙 410073)
AODV協(xié)議在ARM平臺上的移植技術研究
羅宇立毛席龍趙寶康
(國防科技大學計算機學院,湖南長沙410073)
針對AODV協(xié)議大多在理論或是仿真中進行研究的問題,分析當前主流ARM平臺的體系架構和AODV協(xié)議的運行機制,研究AODV協(xié)議移植到主流ARM平臺的新方法。搭建了一個包含四個實際節(jié)點的驗證環(huán)境,運行了新的AODV協(xié)議,為AODV協(xié)議移植ARM平臺提供參考。
AODV協(xié)議;ARM平臺;代碼移植
AODV協(xié)議是AD-HOC網絡中典型的按需路由協(xié)議,其具有設計結構簡單、路由維護消耗資源少、適合于ARM處理器體系結構等諸多優(yōu)勢,適用于諸如物聯(lián)網、車聯(lián)網、傳感器網絡、無人機網絡這些采用ARM處理器并且網絡結構不復雜的網絡環(huán)境進行無線組網。當前在ARM平臺搭建AODV協(xié)議實驗環(huán)境主要存在兩個問題:一是目前學術領域對AODV協(xié)議的研究大多基于NS-2、OPENT等仿真模擬器,仿真實驗數據對比真實的環(huán)境實驗數據的可靠性還值得商榷[1];二是以前研究者移植AODV協(xié)議搭建實驗平臺的方法現在已經不再適用。隨著Linux內核更新,當前在售的Linux開發(fā)板內核版本普遍在3.0以上,而移植于ARM平臺的AODV協(xié)議AODV-UU-0.9.6是基于linux2.4.x及2.6.x內核編寫的,存在與最新的Linux內核不兼容的問題,因而編譯時需要對不兼容的數據結構、API接口以及協(xié)議實現中的一部分功能進行修改。本文主要以當前主流的ARM平臺為例研究了AODV協(xié)議在ARM平臺上進行移植時的關鍵技術。
2.1BBB開發(fā)平臺架構
BeagleBone Black(Rev C)(以下簡稱BBB)是一款處理器為TI AM3358的開發(fā)套件,為主流的開源ARM平臺,BBB集成了1GHz的基于ARM Cortex?-A8的處理器并板載4GB eMMC、512MB SDRAM,其擴展接口包括網口、USB Host、USB OTG、TF卡接口、串口、JTAG接口、HDMI D Type接口、ADC、I2C、SPI、PWM和LCD屏接口,可以通過串口、usb接口、網口等接口與PC進行通信。BBB在系統(tǒng)方面支持Debian、Android、Ubuntu等基于Linux系統(tǒng)的操作系統(tǒng),在其官網以及github等網站可以得到軟件支持。
2.2AODV協(xié)議機制
AODV[2]按需距離矢量協(xié)議是一種典型的按需路由協(xié)議。AODV綜合了DSR[3]和DSDV[4]的特點,它的路由發(fā)現過程類似DSR,但與DSR不同的是其RREQ報文不包含源路由的機制,而是采用逐跳轉發(fā),擴展環(huán)形樹搜索的方式尋找目的節(jié)點。同時在避免自環(huán)方面,AODV協(xié)議借鑒了DSDV的目的節(jié)點序列號的機制,確保了路由的最新。AODV協(xié)議路由發(fā)現和路由控制過程中主要有RREQ、RREP、RERR三種類型的報文。AODV協(xié)議中,一個源節(jié)點如果要與某個目的節(jié)點建立通信,它會首先查找自己路由表,如果沒有到達目的節(jié)點的路由,源節(jié)點會發(fā)起一個路由發(fā)現過程,它會廣播路由請求分組RREQ給它鄰居節(jié)點,RREQ會被鄰居節(jié)點轉發(fā),直到到達目的節(jié)點或一個擁有通往目的節(jié)點足夠新的路徑的中間節(jié)點。每個節(jié)點收到RREQ時,建立到達源節(jié)點的反向路徑,RREQ到達了目的節(jié)點或擁有一條通向目的節(jié)點足夠新的路徑的中間節(jié)點,這個節(jié)點就通過反向路徑傳播一個路由回復信息RREP給源節(jié)點,RREP通過反向路徑到達源節(jié)點的過程中,該條路徑上的每個節(jié)點會在它們的路由表中建立起通向目的節(jié)點的正向路徑,這樣兩個節(jié)點間路由就建立了起來,這條路由會一直持續(xù)除非路由中斷或者更新,更新是指中間節(jié)點又發(fā)現了擁有更大序列號的新路由或者序列號相同而跳數比原先路由跳數小的新路由。
本文選擇的AODV協(xié)議是目前唯一可以在ARM平臺編譯的AODV協(xié)議,版本為AODV-UU-0.9.6。協(xié)議代碼分兩部分別為核心層代碼和用戶層代碼[5],用戶層代碼位于主目錄下,為路由尋路算法,主要實現路由尋路功能,編譯后會生成aodvd可執(zhí)行文件;核心層代碼位于Lnx文件夾下,主要負責與Linux內核以及路由用戶層的交互,其模塊主要實現初始化和注銷內核、內核層與用戶層進行通信、顯示核心層線程處理流程信息、對內核路由表中地址編碼、數據包放入內核隊列、內核路由表信息到期列表等功能,核心層改變了原有的內核數據轉發(fā)功能,實現AODV協(xié)議算法功能,編譯后會生成kaodv.ko可插入內核模塊。由于當前開發(fā)平臺最新內核普遍升級,原協(xié)議核心層定義的數據結構、接口發(fā)生了變化,原有協(xié)議在新內核編譯時會發(fā)生錯誤,因此將AODVUU-0.96協(xié)議移植到ARM開發(fā)板時需要對核心層代碼進行修改。
協(xié)議移植按照配置硬件環(huán)境、配置軟件環(huán)境、更新BBB系統(tǒng)、編譯BBB內核源碼[6]、修改編譯AODV協(xié)議代碼、BBB運行協(xié)議這幾個步驟進行。
圖1 協(xié)議移植流程
3.1硬件環(huán)境配置
(1)BBB開發(fā)板。BBB原生自帶debian系統(tǒng),但內核版本可能較低,在搭建平臺前需將其系統(tǒng)更新為最新的linux內核為3.8.13-bone79的debian系統(tǒng)。
(2)8GBclass10級microsd卡。該存儲卡用于制作BBB系統(tǒng)鏡像。
(3)U盤。用于拷貝編譯完成的aodvd及kaodv.ko文件。
(4)USB無線網卡。實際測試選用芯片組為Ralink RT5730的騰達無線網卡,該網卡在BBB的3.8.13-bone79內核有原生的驅動支持,無需另外編譯加載網卡驅動,另外該網卡可以設置為AD-HOC模式。
3.2軟件環(huán)境配置
(1)PC端ubuntu系統(tǒng)。
(2)交叉編譯器。目前交叉編譯器版本較多,這里選擇特別針對BBB處理器優(yōu)化的交叉編譯器gcc-linaro-ARM-linux-gnueabihf。
(3)BBB內核源碼。需要與BBB系統(tǒng)內核版本一致的內核源碼,下載地址為git://github.com/beagleboard/kernel. git。內核源碼下載解壓后,將文件夾重命名為kernel。(如果內核源碼與BBB內核版本不一致,在移植加載kaodv.ko模塊時會出現invaid modules format的錯誤,協(xié)議無法運行)。
(4)BBB最新系統(tǒng)鏡像。當前BBB最新系統(tǒng)為Debian7.9,內核為3.8.13-bone79,可以在http://beagleboard.org/latest-images下載。
(5)Win32 Disk Imager工具。用于制作BBB最新debian系統(tǒng)鏡像。
(6)Putty。用于與BBB通信。
上述linux系統(tǒng)下的文件解壓后都放置在ubuntu系統(tǒng)/ home/x目錄下(x為用戶名)。
3.3更新BBB系統(tǒng)
(1)將下載完畢的最新debian系統(tǒng)解壓。
(2)使用Win32 Disk Imager軟件制作系統(tǒng)鏡像。
(3)將制作好系統(tǒng)鏡像的microsd卡插入BBB同時按住板上S2鍵,等待10分鐘BBB上4個LED燈全亮即表示新系統(tǒng)已更新至BBB的eMMC中。
3.4編譯BBB內核
BBB內核源碼在ubuntu系統(tǒng)下進行交叉編譯。具體步驟如下:
(1)設置環(huán)境變量。
為使系統(tǒng)能夠找到交叉編譯工具的各命令,需配置啟動腳本:
$gedit/etc/bash.bashrc在該腳本最后一行添加一個交叉編譯器的絕對路徑:Export PATH=$PATH:~/gcc-linaro-ARM-linux-gnueabihf-4.8-2014.03_linux/bin/
執(zhí)行/etc/bash.bashrc腳本,使其生效:
$source/etc/bash.bashrc
(2)編譯內核
終端下執(zhí)行下列命令編譯內核:
$sudo apt-get install lzop//安裝lzop包$cd~/kernel/kernel
$cp../configs/beaglebone.config
$make ARCH=ARM CROSS_COMPILE=ARM-linuxgnueabihf-zImage dtbs
3.5修改編譯AODV協(xié)議代碼
為使AODV協(xié)議適應新內核,需要對協(xié)議Lnx目錄下文件進行修改。
(1)kaodv-mod.h文件,重新定義static rwlock_t ifilock= RW_LOCK_UNLOCKED結構體。
(2)kaodv-mod.c文件,重新定義內核版本為當前BBB內核版本。
(3)kaodv-netlink.c文件,修改static DECLARE_MUTEX (kaodvnl_sem);重新定義新kaodv_netlink_init函數;新增結構體struct netlink_kernel_cfg。
(4)主目錄下及Lnx文件夾下Makefile文件,更改為協(xié)議編譯所需要的目標內核地址及編譯器。
(5)修改完畢后,在PC的ubuntu系統(tǒng)下進入AODV-UU-0.9.6協(xié)議主目錄,在終端輸入命令$make arm進行交叉編譯,編譯完成后會自動生成可在BBB上運行的模塊文件kaodv.ko及可執(zhí)行文件aodvd。
3.6BBB運行移植的協(xié)議
(1)配置網卡。打開putty輸入以下命令:
iwconfig wlan0 mode ad-hoc
iwconfig wlan0 essid“aodv”
ifconfig wlan0 up
ifconfig wlan0 192.168.1.1
(2)運行AODV協(xié)議
將編譯生成的模塊文件kaodv.ko及可執(zhí)行文件aodvd通過U盤拷貝至BBB,輸入chmod a+x aodvd給予權限。輸入insmod kaodv.ko插入協(xié)議模塊,輸入./aodvd運行協(xié)議。終端打印出字符如圖2所示,說明協(xié)議移植完成。
圖2 協(xié)議移植結果
協(xié)議移植完成后需要搭建環(huán)境測試移植后協(xié)議的可行性,在這里使用四個BBB。由于BBB的usb0默認地址為192.168.7.2,為防止地址沖突,在開始前需要將新加入的三個BBB的usb0地址更改,在此修改BBB的/etc/network/interfaces及/etc/udhcpd配置文件,將BBB的usb0地址分別變更為192.168.8.2、192.168.9.2及192.168.10.2。修改地址完畢后連接另外三塊BBB。
圖3 實驗拓撲結構
在另外三個BBB終端輸入以下命令:
iwconfig wlan1 mode ad-hoc
ifconfig wlan1 up
ifconfig wlan1 192.168.1.3/5/7
iwconfig wlan1 essid aodv
四個BBB加載模塊并運行協(xié)議,發(fā)現能夠找到并添加鄰居節(jié)點,環(huán)境完成搭建。
圖4 協(xié)議運行結果
本文概述了BBB硬件平臺的軟硬件性能,分析了AODV-UU-0.9.6協(xié)議的運行機制和結構,以BBB為例研究了移植AODV協(xié)議到最新ARM平臺的方法,最后使用四個BBB搭建了一個簡單的AD-HOC網絡并驗證了移植后協(xié)議的有效性,為下步實際測試和改進AODV協(xié)議提供參考。
[1]Isi.NS-2 Simulation Tool[OL].http://www.isi.edu/nsnam/ ns/,2016.
[2]C.E.Perkins,E.M.Royer.Ad-Hoc On-Demand Distance Vector Protocol[A].Ad Hoc Networking[C],C.E.Perkins(Ed.),addison-Wesley,2000:173-219.
[3]C.E.Perkins,P.bhagwat.Highly.Dynamic Destination-SequencedDistance-VectorRouting(DSDV)forMobileComputers[A].Computer Communications Review[C],SIGCOMM 94,1994,24(4):234-244.
[4]D.B.Johnson and D.A.maltz.Dynamic Source Routing in Ad Hoc Wireless Networks[A].Mobile Computing[C],Kluwer academic Publishers,1996:153-181.
[5]張愛民,梁書劍,馬志強.AODV-UU協(xié)議實現技術分析[J].信息技術,2011(06):119-121.
[6]Element.Element14 BeagleBone Black用戶手冊V2.0[OL].http://www.embest-tech.cn,2014.
Research on Transplantation Technology ofAODV Protocol onARM Platform
Luo YuliMao XilongZhao Baokang
(College of Computer,National University of Defense Technology,Changsha 410073,Hunan)
In allusion to the researches of AODV routing protocol mainly based on theory analysis or simulation,this paper researches on the architecture of ARM platform and the operation mechanism of AODV routing protocol,and proposes a new method of porting AODV routing protocol to ARM platform.The verification environment containing four actual nodes is set up.The new AODV routing protocol is running in it.And the technique is a useful reference for portingAODV protocol onARM platform.
AODV protocol;ARM platform;code porting
TN929.5
A
1008-6609(2016)06-0078-03
羅宇立,男,江蘇溧陽人,碩士研究生,研究方向:無線網絡協(xié)議。