• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    AODV協(xié)議在ARM平臺(tái)上的移植技術(shù)研究

    2016-12-06 12:16:47羅宇立毛席龍趙寶康
    電腦與電信 2016年6期
    關(guān)鍵詞:源碼核心層網(wǎng)卡

    羅宇立 毛席龍 趙寶康

    (國(guó)防科技大學(xué)計(jì)算機(jī)學(xué)院,湖南 長(zhǎng)沙 410073)

    AODV協(xié)議在ARM平臺(tái)上的移植技術(shù)研究

    羅宇立毛席龍趙寶康

    (國(guó)防科技大學(xué)計(jì)算機(jī)學(xué)院,湖南長(zhǎng)沙410073)

    針對(duì)AODV協(xié)議大多在理論或是仿真中進(jìn)行研究的問(wèn)題,分析當(dāng)前主流ARM平臺(tái)的體系架構(gòu)和AODV協(xié)議的運(yùn)行機(jī)制,研究AODV協(xié)議移植到主流ARM平臺(tái)的新方法。搭建了一個(gè)包含四個(gè)實(shí)際節(jié)點(diǎn)的驗(yàn)證環(huán)境,運(yùn)行了新的AODV協(xié)議,為AODV協(xié)議移植ARM平臺(tái)提供參考。

    AODV協(xié)議;ARM平臺(tái);代碼移植

    1 引言

    AODV協(xié)議是AD-HOC網(wǎng)絡(luò)中典型的按需路由協(xié)議,其具有設(shè)計(jì)結(jié)構(gòu)簡(jiǎn)單、路由維護(hù)消耗資源少、適合于ARM處理器體系結(jié)構(gòu)等諸多優(yōu)勢(shì),適用于諸如物聯(lián)網(wǎng)、車(chē)聯(lián)網(wǎng)、傳感器網(wǎng)絡(luò)、無(wú)人機(jī)網(wǎng)絡(luò)這些采用ARM處理器并且網(wǎng)絡(luò)結(jié)構(gòu)不復(fù)雜的網(wǎng)絡(luò)環(huán)境進(jìn)行無(wú)線組網(wǎng)。當(dāng)前在ARM平臺(tái)搭建AODV協(xié)議實(shí)驗(yàn)環(huán)境主要存在兩個(gè)問(wèn)題:一是目前學(xué)術(shù)領(lǐng)域?qū)ODV協(xié)議的研究大多基于NS-2、OPENT等仿真模擬器,仿真實(shí)驗(yàn)數(shù)據(jù)對(duì)比真實(shí)的環(huán)境實(shí)驗(yàn)數(shù)據(jù)的可靠性還值得商榷[1];二是以前研究者移植AODV協(xié)議搭建實(shí)驗(yàn)平臺(tái)的方法現(xiàn)在已經(jīng)不再適用。隨著Linux內(nèi)核更新,當(dāng)前在售的Linux開(kāi)發(fā)板內(nèi)核版本普遍在3.0以上,而移植于ARM平臺(tái)的AODV協(xié)議AODV-UU-0.9.6是基于linux2.4.x及2.6.x內(nèi)核編寫(xiě)的,存在與最新的Linux內(nèi)核不兼容的問(wèn)題,因而編譯時(shí)需要對(duì)不兼容的數(shù)據(jù)結(jié)構(gòu)、API接口以及協(xié)議實(shí)現(xiàn)中的一部分功能進(jìn)行修改。本文主要以當(dāng)前主流的ARM平臺(tái)為例研究了AODV協(xié)議在ARM平臺(tái)上進(jìn)行移植時(shí)的關(guān)鍵技術(shù)。

    2 平臺(tái)及協(xié)議架構(gòu)

    2.1BBB開(kāi)發(fā)平臺(tái)架構(gòu)

    BeagleBone Black(Rev C)(以下簡(jiǎn)稱(chēng)BBB)是一款處理器為T(mén)I AM3358的開(kāi)發(fā)套件,為主流的開(kāi)源ARM平臺(tái),BBB集成了1GHz的基于ARM Cortex?-A8的處理器并板載4GB eMMC、512MB SDRAM,其擴(kuò)展接口包括網(wǎng)口、USB Host、USB OTG、TF卡接口、串口、JTAG接口、HDMI D Type接口、ADC、I2C、SPI、PWM和LCD屏接口,可以通過(guò)串口、usb接口、網(wǎng)口等接口與PC進(jìn)行通信。BBB在系統(tǒng)方面支持Debian、Android、Ubuntu等基于Linux系統(tǒng)的操作系統(tǒng),在其官網(wǎng)以及github等網(wǎng)站可以得到軟件支持。

    2.2AODV協(xié)議機(jī)制

    AODV[2]按需距離矢量協(xié)議是一種典型的按需路由協(xié)議。AODV綜合了DSR[3]和DSDV[4]的特點(diǎn),它的路由發(fā)現(xiàn)過(guò)程類(lèi)似DSR,但與DSR不同的是其RREQ報(bào)文不包含源路由的機(jī)制,而是采用逐跳轉(zhuǎn)發(fā),擴(kuò)展環(huán)形樹(shù)搜索的方式尋找目的節(jié)點(diǎn)。同時(shí)在避免自環(huán)方面,AODV協(xié)議借鑒了DSDV的目的節(jié)點(diǎn)序列號(hào)的機(jī)制,確保了路由的最新。AODV協(xié)議路由發(fā)現(xiàn)和路由控制過(guò)程中主要有RREQ、RREP、RERR三種類(lèi)型的報(bào)文。AODV協(xié)議中,一個(gè)源節(jié)點(diǎn)如果要與某個(gè)目的節(jié)點(diǎn)建立通信,它會(huì)首先查找自己路由表,如果沒(méi)有到達(dá)目的節(jié)點(diǎn)的路由,源節(jié)點(diǎn)會(huì)發(fā)起一個(gè)路由發(fā)現(xiàn)過(guò)程,它會(huì)廣播路由請(qǐng)求分組RREQ給它鄰居節(jié)點(diǎn),RREQ會(huì)被鄰居節(jié)點(diǎn)轉(zhuǎn)發(fā),直到到達(dá)目的節(jié)點(diǎn)或一個(gè)擁有通往目的節(jié)點(diǎn)足夠新的路徑的中間節(jié)點(diǎn)。每個(gè)節(jié)點(diǎn)收到RREQ時(shí),建立到達(dá)源節(jié)點(diǎn)的反向路徑,RREQ到達(dá)了目的節(jié)點(diǎn)或擁有一條通向目的節(jié)點(diǎn)足夠新的路徑的中間節(jié)點(diǎn),這個(gè)節(jié)點(diǎn)就通過(guò)反向路徑傳播一個(gè)路由回復(fù)信息RREP給源節(jié)點(diǎn),RREP通過(guò)反向路徑到達(dá)源節(jié)點(diǎn)的過(guò)程中,該條路徑上的每個(gè)節(jié)點(diǎn)會(huì)在它們的路由表中建立起通向目的節(jié)點(diǎn)的正向路徑,這樣兩個(gè)節(jié)點(diǎn)間路由就建立了起來(lái),這條路由會(huì)一直持續(xù)除非路由中斷或者更新,更新是指中間節(jié)點(diǎn)又發(fā)現(xiàn)了擁有更大序列號(hào)的新路由或者序列號(hào)相同而跳數(shù)比原先路由跳數(shù)小的新路由。

    本文選擇的AODV協(xié)議是目前唯一可以在ARM平臺(tái)編譯的AODV協(xié)議,版本為AODV-UU-0.9.6。協(xié)議代碼分兩部分別為核心層代碼和用戶層代碼[5],用戶層代碼位于主目錄下,為路由尋路算法,主要實(shí)現(xiàn)路由尋路功能,編譯后會(huì)生成aodvd可執(zhí)行文件;核心層代碼位于Lnx文件夾下,主要負(fù)責(zé)與Linux內(nèi)核以及路由用戶層的交互,其模塊主要實(shí)現(xiàn)初始化和注銷(xiāo)內(nèi)核、內(nèi)核層與用戶層進(jìn)行通信、顯示核心層線程處理流程信息、對(duì)內(nèi)核路由表中地址編碼、數(shù)據(jù)包放入內(nèi)核隊(duì)列、內(nèi)核路由表信息到期列表等功能,核心層改變了原有的內(nèi)核數(shù)據(jù)轉(zhuǎn)發(fā)功能,實(shí)現(xiàn)AODV協(xié)議算法功能,編譯后會(huì)生成kaodv.ko可插入內(nèi)核模塊。由于當(dāng)前開(kāi)發(fā)平臺(tái)最新內(nèi)核普遍升級(jí),原協(xié)議核心層定義的數(shù)據(jù)結(jié)構(gòu)、接口發(fā)生了變化,原有協(xié)議在新內(nèi)核編譯時(shí)會(huì)發(fā)生錯(cuò)誤,因此將AODVUU-0.96協(xié)議移植到ARM開(kāi)發(fā)板時(shí)需要對(duì)核心層代碼進(jìn)行修改。

    3 協(xié)議移植

    協(xié)議移植按照配置硬件環(huán)境、配置軟件環(huán)境、更新BBB系統(tǒng)、編譯BBB內(nèi)核源碼[6]、修改編譯AODV協(xié)議代碼、BBB運(yùn)行協(xié)議這幾個(gè)步驟進(jìn)行。

    圖1 協(xié)議移植流程

    3.1硬件環(huán)境配置

    (1)BBB開(kāi)發(fā)板。BBB原生自帶debian系統(tǒng),但內(nèi)核版本可能較低,在搭建平臺(tái)前需將其系統(tǒng)更新為最新的linux內(nèi)核為3.8.13-bone79的debian系統(tǒng)。

    (2)8GBclass10級(jí)microsd卡。該存儲(chǔ)卡用于制作BBB系統(tǒng)鏡像。

    (3)U盤(pán)。用于拷貝編譯完成的aodvd及kaodv.ko文件。

    (4)USB無(wú)線網(wǎng)卡。實(shí)際測(cè)試選用芯片組為Ralink RT5730的騰達(dá)無(wú)線網(wǎng)卡,該網(wǎng)卡在BBB的3.8.13-bone79內(nèi)核有原生的驅(qū)動(dòng)支持,無(wú)需另外編譯加載網(wǎng)卡驅(qū)動(dòng),另外該網(wǎng)卡可以設(shè)置為AD-HOC模式。

    3.2軟件環(huán)境配置

    (1)PC端ubuntu系統(tǒng)。

    (2)交叉編譯器。目前交叉編譯器版本較多,這里選擇特別針對(duì)BBB處理器優(yōu)化的交叉編譯器gcc-linaro-ARM-linux-gnueabihf。

    (3)BBB內(nèi)核源碼。需要與BBB系統(tǒng)內(nèi)核版本一致的內(nèi)核源碼,下載地址為git://github.com/beagleboard/kernel. git。內(nèi)核源碼下載解壓后,將文件夾重命名為kernel。(如果內(nèi)核源碼與BBB內(nèi)核版本不一致,在移植加載kaodv.ko模塊時(shí)會(huì)出現(xiàn)invaid modules format的錯(cuò)誤,協(xié)議無(wú)法運(yùn)行)。

    (4)BBB最新系統(tǒng)鏡像。當(dāng)前BBB最新系統(tǒng)為Debian7.9,內(nèi)核為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同時(shí)按住板上S2鍵,等待10分鐘BBB上4個(gè)LED燈全亮即表示新系統(tǒng)已更新至BBB的eMMC中。

    3.4編譯BBB內(nèi)核

    BBB內(nèi)核源碼在ubuntu系統(tǒng)下進(jìn)行交叉編譯。具體步驟如下:

    (1)設(shè)置環(huán)境變量。

    為使系統(tǒng)能夠找到交叉編譯工具的各命令,需配置啟動(dòng)腳本:

    $gedit/etc/bash.bashrc在該腳本最后一行添加一個(gè)交叉編譯器的絕對(duì)路徑:Export PATH=$PATH:~/gcc-linaro-ARM-linux-gnueabihf-4.8-2014.03_linux/bin/

    執(zhí)行/etc/bash.bashrc腳本,使其生效:

    $source/etc/bash.bashrc

    (2)編譯內(nèi)核

    終端下執(zhí)行下列命令編譯內(nèi)核:

    $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é)議適應(yīng)新內(nèi)核,需要對(duì)協(xié)議Lnx目錄下文件進(jìn)行修改。

    (1)kaodv-mod.h文件,重新定義static rwlock_t ifilock= RW_LOCK_UNLOCKED結(jié)構(gòu)體。

    (2)kaodv-mod.c文件,重新定義內(nèi)核版本為當(dāng)前BBB內(nèi)核版本。

    (3)kaodv-netlink.c文件,修改static DECLARE_MUTEX (kaodvnl_sem);重新定義新kaodv_netlink_init函數(shù);新增結(jié)構(gòu)體struct netlink_kernel_cfg。

    (4)主目錄下及Lnx文件夾下Makefile文件,更改為協(xié)議編譯所需要的目標(biāo)內(nèi)核地址及編譯器。

    (5)修改完畢后,在PC的ubuntu系統(tǒng)下進(jìn)入AODV-UU-0.9.6協(xié)議主目錄,在終端輸入命令$make arm進(jìn)行交叉編譯,編譯完成后會(huì)自動(dòng)生成可在BBB上運(yùn)行的模塊文件kaodv.ko及可執(zhí)行文件aodvd。

    3.6BBB運(yùn)行移植的協(xié)議

    (1)配置網(wǎng)卡。打開(kāi)putty輸入以下命令:

    iwconfig wlan0 mode ad-hoc

    iwconfig wlan0 essid“aodv”

    ifconfig wlan0 up

    ifconfig wlan0 192.168.1.1

    (2)運(yùn)行AODV協(xié)議

    將編譯生成的模塊文件kaodv.ko及可執(zhí)行文件aodvd通過(guò)U盤(pán)拷貝至BBB,輸入chmod a+x aodvd給予權(quán)限。輸入insmod kaodv.ko插入?yún)f(xié)議模塊,輸入./aodvd運(yùn)行協(xié)議。終端打印出字符如圖2所示,說(shuō)明協(xié)議移植完成。

    圖2 協(xié)議移植結(jié)果

    4 環(huán)境搭建

    協(xié)議移植完成后需要搭建環(huán)境測(cè)試移植后協(xié)議的可行性,在這里使用四個(gè)BBB。由于BBB的usb0默認(rèn)地址為192.168.7.2,為防止地址沖突,在開(kāi)始前需要將新加入的三個(gè)BBB的usb0地址更改,在此修改BBB的/etc/network/interfaces及/etc/udhcpd配置文件,將BBB的usb0地址分別變更為192.168.8.2、192.168.9.2及192.168.10.2。修改地址完畢后連接另外三塊BBB。

    圖3 實(shí)驗(yàn)拓?fù)浣Y(jié)構(gòu)

    在另外三個(gè)BBB終端輸入以下命令:

    iwconfig wlan1 mode ad-hoc

    ifconfig wlan1 up

    ifconfig wlan1 192.168.1.3/5/7

    iwconfig wlan1 essid aodv

    四個(gè)BBB加載模塊并運(yùn)行協(xié)議,發(fā)現(xiàn)能夠找到并添加鄰居節(jié)點(diǎn),環(huán)境完成搭建。

    圖4 協(xié)議運(yùn)行結(jié)果

    5 結(jié)束語(yǔ)

    本文概述了BBB硬件平臺(tái)的軟硬件性能,分析了AODV-UU-0.9.6協(xié)議的運(yùn)行機(jī)制和結(jié)構(gòu),以BBB為例研究了移植AODV協(xié)議到最新ARM平臺(tái)的方法,最后使用四個(gè)BBB搭建了一個(gè)簡(jiǎn)單的AD-HOC網(wǎng)絡(luò)并驗(yàn)證了移植后協(xié)議的有效性,為下步實(shí)際測(cè)試和改進(jìn)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]張愛(ài)民,梁書(shū)劍,馬志強(qiáng).AODV-UU協(xié)議實(shí)現(xiàn)技術(shù)分析[J].信息技術(shù),2011(06):119-121.

    [6]Element.Element14 BeagleBone Black用戶手冊(cè)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

    羅宇立,男,江蘇溧陽(yáng)人,碩士研究生,研究方向:無(wú)線網(wǎng)絡(luò)協(xié)議。

    猜你喜歡
    源碼核心層網(wǎng)卡
    職業(yè)教育教師核心能力結(jié)構(gòu)模型構(gòu)建、特征分析及實(shí)踐價(jià)值
    在DDS 中間件上實(shí)現(xiàn)雙冗余網(wǎng)卡切換的方法
    基于網(wǎng)頁(yè)源碼結(jié)構(gòu)理解的自適應(yīng)爬蟲(chóng)代碼生成方法
    基于圖神經(jīng)網(wǎng)絡(luò)的軟件源碼漏洞檢測(cè)方法
    企業(yè)如何保護(hù)源碼
    Server 2016網(wǎng)卡組合模式
    淺談寬帶IP城域網(wǎng)結(jié)構(gòu)規(guī)劃和建設(shè)
    校園網(wǎng)核心層設(shè)計(jì)探究
    基于數(shù)據(jù)結(jié)構(gòu)教輔系統(tǒng)的實(shí)驗(yàn)課程改革
    挑戰(zhàn)Killer網(wǎng)卡Realtek網(wǎng)游專(zhuān)用Dragon網(wǎng)卡
    德清县| 平乐县| 江油市| 上栗县| 通渭县| 潼关县| 五河县| 永安市| 大邑县| 伊金霍洛旗| 英德市| 房产| 临清市| 新兴县| 新龙县| 丰镇市| 唐海县| 镶黄旗| 丰顺县| 蕉岭县| 确山县| 桂东县| 新建县| 普陀区| 咸阳市| 金沙县| 藁城市| 滨州市| 博野县| 罗源县| 南昌市| 南涧| 六安市| 都匀市| 云梦县| 梨树县| 密山市| 甘南县| 武宁县| 讷河市| 襄城县|