罗宇立 毛席龙 赵宝康
(国防科技大学计算机学院,湖南 长沙 410073)
AODV协议在ARM平台上的移植技术研究
罗宇立毛席龙赵宝康
(国防科技大学计算机学院,湖南长沙410073)
针对AODV协议大多在理论或是仿真中进行研究的问题,分析当前主流ARM平台的体系架构和AODV协议的运行机制,研究AODV协议移植到主流ARM平台的新方法。搭建了一个包含四个实际节点的验证环境,运行了新的AODV协议,为AODV协议移植ARM平台提供参考。
AODV协议;ARM平台;代码移植
AODV协议是AD-HOC网络中典型的按需路由协议,其具有设计结构简单、路由维护消耗资源少、适合于ARM处理器体系结构等诸多优势,适用于诸如物联网、车联网、传感器网络、无人机网络这些采用ARM处理器并且网络结构不复杂的网络环境进行无线组网。当前在ARM平台搭建AODV协议实验环境主要存在两个问题:一是目前学术领域对AODV协议的研究大多基于NS-2、OPENT等仿真模拟器,仿真实验数据对比真实的环境实验数据的可靠性还值得商榷[1];二是以前研究者移植AODV协议搭建实验平台的方法现在已经不再适用。随着Linux内核更新,当前在售的Linux开发板内核版本普遍在3.0以上,而移植于ARM平台的AODV协议AODV-UU-0.9.6是基于linux2.4.x及2.6.x内核编写的,存在与最新的Linux内核不兼容的问题,因而编译时需要对不兼容的数据结构、API接口以及协议实现中的一部分功能进行修改。本文主要以当前主流的ARM平台为例研究了AODV协议在ARM平台上进行移植时的关键技术。
2.1BBB开发平台架构
BeagleBone Black(Rev C)(以下简称BBB)是一款处理器为TI AM3358的开发套件,为主流的开源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在系统方面支持Debian、Android、Ubuntu等基于Linux系统的操作系统,在其官网以及github等网站可以得到软件支持。
2.2AODV协议机制
AODV[2]按需距离矢量协议是一种典型的按需路由协议。AODV综合了DSR[3]和DSDV[4]的特点,它的路由发现过程类似DSR,但与DSR不同的是其RREQ报文不包含源路由的机制,而是采用逐跳转发,扩展环形树搜索的方式寻找目的节点。同时在避免自环方面,AODV协议借鉴了DSDV的目的节点序列号的机制,确保了路由的最新。AODV协议路由发现和路由控制过程中主要有RREQ、RREP、RERR三种类型的报文。AODV协议中,一个源节点如果要与某个目的节点建立通信,它会首先查找自己路由表,如果没有到达目的节点的路由,源节点会发起一个路由发现过程,它会广播路由请求分组RREQ给它邻居节点,RREQ会被邻居节点转发,直到到达目的节点或一个拥有通往目的节点足够新的路径的中间节点。每个节点收到RREQ时,建立到达源节点的反向路径,RREQ到达了目的节点或拥有一条通向目的节点足够新的路径的中间节点,这个节点就通过反向路径传播一个路由回复信息RREP给源节点,RREP通过反向路径到达源节点的过程中,该条路径上的每个节点会在它们的路由表中建立起通向目的节点的正向路径,这样两个节点间路由就建立了起来,这条路由会一直持续除非路由中断或者更新,更新是指中间节点又发现了拥有更大序列号的新路由或者序列号相同而跳数比原先路由跳数小的新路由。
本文选择的AODV协议是目前唯一可以在ARM平台编译的AODV协议,版本为AODV-UU-0.9.6。协议代码分两部分别为核心层代码和用户层代码[5],用户层代码位于主目录下,为路由寻路算法,主要实现路由寻路功能,编译后会生成aodvd可执行文件;核心层代码位于Lnx文件夹下,主要负责与Linux内核以及路由用户层的交互,其模块主要实现初始化和注销内核、内核层与用户层进行通信、显示核心层线程处理流程信息、对内核路由表中地址编码、数据包放入内核队列、内核路由表信息到期列表等功能,核心层改变了原有的内核数据转发功能,实现AODV协议算法功能,编译后会生成kaodv.ko可插入内核模块。由于当前开发平台最新内核普遍升级,原协议核心层定义的数据结构、接口发生了变化,原有协议在新内核编译时会发生错误,因此将AODVUU-0.96协议移植到ARM开发板时需要对核心层代码进行修改。
协议移植按照配置硬件环境、配置软件环境、更新BBB系统、编译BBB内核源码[6]、修改编译AODV协议代码、BBB运行协议这几个步骤进行。
图1 协议移植流程
3.1硬件环境配置
(1)BBB开发板。BBB原生自带debian系统,但内核版本可能较低,在搭建平台前需将其系统更新为最新的linux内核为3.8.13-bone79的debian系统。
(2)8GBclass10级microsd卡。该存储卡用于制作BBB系统镜像。
(3)U盘。用于拷贝编译完成的aodvd及kaodv.ko文件。
(4)USB无线网卡。实际测试选用芯片组为Ralink RT5730的腾达无线网卡,该网卡在BBB的3.8.13-bone79内核有原生的驱动支持,无需另外编译加载网卡驱动,另外该网卡可以设置为AD-HOC模式。
3.2软件环境配置
(1)PC端ubuntu系统。
(2)交叉编译器。目前交叉编译器版本较多,这里选择特别针对BBB处理器优化的交叉编译器gcc-linaro-ARM-linux-gnueabihf。
(3)BBB内核源码。需要与BBB系统内核版本一致的内核源码,下载地址为git://github.com/beagleboard/kernel. git。内核源码下载解压后,将文件夹重命名为kernel。(如果内核源码与BBB内核版本不一致,在移植加载kaodv.ko模块时会出现invaid modules format的错误,协议无法运行)。
(4)BBB最新系统镜像。当前BBB最新系统为Debian7.9,内核为3.8.13-bone79,可以在http://beagleboard.org/latest-images下载。
(5)Win32 Disk Imager工具。用于制作BBB最新debian系统镜像。
(6)Putty。用于与BBB通信。
上述linux系统下的文件解压后都放置在ubuntu系统/ home/x目录下(x为用户名)。
3.3更新BBB系统
(1)将下载完毕的最新debian系统解压。
(2)使用Win32 Disk Imager软件制作系统镜像。
(3)将制作好系统镜像的microsd卡插入BBB同时按住板上S2键,等待10分钟BBB上4个LED灯全亮即表示新系统已更新至BBB的eMMC中。
3.4编译BBB内核
BBB内核源码在ubuntu系统下进行交叉编译。具体步骤如下:
(1)设置环境变量。
为使系统能够找到交叉编译工具的各命令,需配置启动脚本:
$gedit/etc/bash.bashrc在该脚本最后一行添加一个交叉编译器的绝对路径:Export PATH=$PATH:~/gcc-linaro-ARM-linux-gnueabihf-4.8-2014.03_linux/bin/
执行/etc/bash.bashrc脚本,使其生效:
$source/etc/bash.bashrc
(2)编译内核
终端下执行下列命令编译内核:
$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协议代码
为使AODV协议适应新内核,需要对协议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文件,更改为协议编译所需要的目标内核地址及编译器。
(5)修改完毕后,在PC的ubuntu系统下进入AODV-UU-0.9.6协议主目录,在终端输入命令$make arm进行交叉编译,编译完成后会自动生成可在BBB上运行的模块文件kaodv.ko及可执行文件aodvd。
3.6BBB运行移植的协议
(1)配置网卡。打开putty输入以下命令:
iwconfig wlan0 mode ad-hoc
iwconfig wlan0 essid“aodv”
ifconfig wlan0 up
ifconfig wlan0 192.168.1.1
(2)运行AODV协议
将编译生成的模块文件kaodv.ko及可执行文件aodvd通过U盘拷贝至BBB,输入chmod a+x aodvd给予权限。输入insmod kaodv.ko插入协议模块,输入./aodvd运行协议。终端打印出字符如图2所示,说明协议移植完成。
图2 协议移植结果
协议移植完成后需要搭建环境测试移植后协议的可行性,在这里使用四个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加载模块并运行协议,发现能够找到并添加邻居节点,环境完成搭建。
图4 协议运行结果
本文概述了BBB硬件平台的软硬件性能,分析了AODV-UU-0.9.6协议的运行机制和结构,以BBB为例研究了移植AODV协议到最新ARM平台的方法,最后使用四个BBB搭建了一个简单的AD-HOC网络并验证了移植后协议的有效性,为下步实际测试和改进AODV协议提供参考。
[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协议实现技术分析[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
罗宇立,男,江苏溧阳人,硕士研究生,研究方向:无线网络协议。