APP下载

基于Android的BATMAN协议应用框架的研究

2013-08-20刘旭东何泾沙

电子设计工程 2013年20期
关键词:网络连接结点数据包

刘旭东,何泾沙

(北京工业大学 软件学院,北京 100124)

随着移动互联时代的来临,越来越多的服务已经向终端转移。Android系统作为目前主流的移动设备操作系统,以其免费的特征,以及强大的功能,已经受到越来越多的终端厂家的广泛使用。如何利用Android系统实现更多的互联功能成为一个重要的研究领域。移动ad hoc网络是目前比较热门的研究领域,如何将移动ad hoc网络引入Android这种移动操作系统成为一个非常有意义的研究问题[1-2]。利用ad hoc网络将装载Android系统的移动设备连接起来,实现在没有基础设施的情况下的互联互通,这将会在发生重大灾害的时候实现网络的组建,实现快速救援。在日常生活领域,越来越多的家电使用Android系统,如果能将家电自动组网连接,将会极大的提高生活的便利性。

在Android系统中构建一套可以广泛应用的移动ad hoc网络连接框架,可以为应用程序提供一种高效的连接方式,也可以节省目前移动网络连接带来的相关费用。在目前传统使用ad hoc网络路由协议中,并没有哪一种协议特别适合用于Android设备建立ad hoc网络。BATMAN (The Better Approach To Mobile Adhoc Networking)协议作为最新为移动网络设计的路由协议,在多方面都适合Android使用。通过修改BATMAN协议的内容,使得整个协议更好的适用于Android组成的ad hoc网络,也将极大提高网络的传输效率。

1 相关工作

1.1 Android系统

Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于便携设备,如智能手机和平板电脑。Android操作系统最初由Andy Rubin开发,主要支持手机。2005年由Google收购注资,并组建开发手机联盟开发改良随后,逐渐扩展到平板电脑及其他领域上。2008年10月第一部Android智能手机发布。目前Android的手机已经占领了接近一半的手机市场。在Android的系统中,由于是开源系统,因此可以修改Android的内核,已达到一些附加功能。

对于Android系统,系统本身并没有提供ad hoc网络连接的功能与相关机制,但是整个ad hoc的网络实现对于现实应用场景的使用是非常有意义的。由于Android具有开源的特性,一种方式是通过修改系统的内核,并进行重新编译达到ad hoc的网络功能,但是这样的做法需要系统重新安装,对于目前使用的客户极为不方便。因此,本文通过在Android系统的基础上通过构建一种应用的框架实现ad hoc网络连接的做法,更加符合当前的要求。因此,本论文旨在通过了解Android的基本结构,实现一个网络通信框架,通过这个框架,可以使得使用框架的应用之间实现ad hoc网络的通信功能。

1.2 ad hoc网络路由协议

由于Android系统具有无线的网络连接,通过WiFi连接,具备了构建ad hoc网络的基础,为了能够建立移动ad hoc网络连接,Android设备通过Wifi与其他设备进行连接,虽然这样可以建立两个设备的连接,并不能够实现多跳的网络。因此,为了实现多跳的网络,必须采用一种路由协议。传统的移动ad hoc网络多采用OLSR协议。OLSR是Optimized Link State Routing的简称,主要用于MANET网络(Mobile Ad hoc network)路由协议。OLSR是根据MANET的要求,在传统的LS(Link state)协议的基础上优化的。OLSR中的关键概念是多点转播(MPRs),同传统LS协议相比,在网络中分布着部分链路状态信息,尤其适合大而密集型的网络。

但是,对于Android这种移动ad hoc网络,当节点不断增加时,整个的网络就变得异常的缓慢。BATMAN协议是一种非常好的替代方式,通过采用BATMAN协议,可以很好地进行移动ad hoc网络的连接[3]。本论文通过在Android上实现BATMAN协议,实现一种网络框架。BATMAN框架是建立在TCP协议之上,通过无线网络连接,实现移动ad hoc网络的多跳连接,并且在连接的基础上进行相应的数据交换[4-5]。

BATMAN的原始实现是在Linux上完成的,虽然Android系统是在Linux的基础之上实现的,但是BATMAN的代码并不能够在Android上顺利运行。Android系统使用Java作为应用开发的语言,BATMAN的C语言代码如果想要在Android上运行,需要使用 JNI(Java Native Interface)技术将 BATMAN的路由协议生成链接库。因此,为了能够使BATMAN顺利运行,需要重新修改BATMAN代码,并进行重新的编译。

2 BATMAN协议

BATMAN协议是一种用于移动ad hoc网络的路由协议。它主要通过一种OMG包进行路由信息的传播。每个网络中的结点定期向其邻居结点广播发送OMG包,每个收到OMG包的邻居结点通过OMG信息更新自己的路由信息,并且根据不同的情况选择丢弃OMG包,或者继续将信息广播给相应的邻居结点。

每个收到OMG的结点,首先将会将OMG包存入相应的缓存中,以便跟踪相应的路由信息。每个节点也会更新信息源上次的活跃时间,并且确保目前的路由信息是最新的路由信息。由于移动ad hoc网络具有移动的特点,因此,很多情况下原本可以连接的结点,很可能在某一段时间不能够进行连接,为了能够适应网络移动性的问题,每个节点都会有一个计时器,当某个邻居结点在一段时间没无法连接时,将会对其路由条目。图1展示了运行BATMAN协议的结点的运行方法。

图1 结点i运行BATMAN协议流程图Fig.1 Flow chart of running BATMAN protocol on node i

在这个流程图中,描述了多跳的工作机制,当一个来自双向连接的结点OMG到达结点时,或者当一个结点已经成为孤立结点,无法继续连接时,将会进行更新路由表的操作。当某个应用想要发送信息时,首先需要调用GETNextHop(packet)从路由表中获取相应的邻居结点,如果存在达到终点的邻居结点,将会使用Send(packet)进行发送。当从其他结点获取到待发送的信息时,首先判断目标结点是不是当前结点,如果当前节点是目标结点,则收取信息,如果当前结点不是目的结点,判断终点的地址,选择转发或者丢弃。

3 Android系统中实现BATMAN框架

3.1 开启Android设备ad hoc网络连接

目前广泛使用的Android系统中,主要使用两种比较常见的无线连接方式,一种是蓝牙连接,另一种是WiFi(IEEE 802.11g)。当前Android系统中都有支持这两种连接的API[6]。3G网络目前也非常常见,但是由于3G连接依赖于基础网络设施,因此不适用于移动的ad hoc网络。蓝牙虽然是为ad hoc网络设计,但是其传输距离有限,为了实现大范围的ad hoc网络,这种方式并不适合[7]。WiFi提供了一种更远距离的连接,并且具有更大的带宽。因此,在WiFi的基础上建立ad hoc网络是可能的,而且能够给很多应用提供便利。

默认情况下,Android设备并不能够进行ad hoc网络连接,只能连接到固定的网络访问点。为了能够开启网络连接的ad hoc模式,必须了解整个网络的运行过程。Android设备中,使用wpa_supplicant工具操作网络,并且使用wpa_supplicant.conf作为其配置文件。为了能够实现连接,必需修改上述的两个文件,由于每个Android设备通过芯片的驱动程序完成对其设备的控制,能够进行ad hoc网络连接的芯片必须能够支持无线扩展API(Wireless Extension API),这样才能控制芯片完成ad hoc网络连接。因此,目前只有在能够应用无线扩展API的芯片上才能完成ad hoc网络连接。

为了能够使设备支持无线扩展API,可以通过交叉编译,为设备编译出可以应用到设备上的相关文件[10-11]。通过重新编译Android系统的相关部分的源代码,可以实现BCM4329和BCM4330无线芯片的ad hoc网络控制。三星公司在其官方网站上公布了以上两种芯片相关的源代码,因此使用这两种芯片的Android设备都可以实现ad hoc网络连接,表1中列出了使用这些芯片的设备。理论上通过这种方法,可以控制芯片的ad hoc模式连接方式,包括使用这种芯片的iPhone4s和NOKIA Lumia系列。

表1 部分Android设备的无线芯片列表Tab.1 Android device's wireless chip list

3.2 带有缓存机制的BATMAN协议

标准的BATMAN协议虽然应用于ad hoc网络,但是当数据终点无法到达时,标准协议的做法是丢弃这些无法到达的数据包。由于移动ad hoc网络与传统的ad hoc网络的最大不同点就在于其移动性。而且由Android构建的ad hoc网络中节点的移动性更加强烈,同时每个节点相遇的几率也更大,因此为了能够以最大效率的提高传输率,在每个Android设备中加入一个缓存,能够最大的效率实现网络通信。

经过改进后,原有的BATMAN协议结点将会按照如下步骤实现网络传输。

1)判断下一跳节点联通性,可以联通则立刻发送。无法连接,进入步骤2)。

2)将数据包存入临时缓存,进入步骤3)。

3)每个结点定时检查缓存,如果连接重新建立立刻传输,否则进入步骤4)。

4)检查每个节点包的存入时间,如果超时,立刻丢弃数据包。超时定义如下:

其中,WINDOWS_SIZE是整个节点的数据窗口大小,ORIGINATOR_INTERVAL是节点检查缓存的时间间隔。

在Android设备中加入缓存,并且定期检查每个暂存数据包的连通性会增加整个节点的负担,但是目前的Android设备具有较大的内存和较强的处理能力,对于增加的处理内容和存储要求并不会影响整个节点的正常工作,因此是一个比较理想的方案。

3.3 Android应用框架架构

对于ad hoc的框架,使用TCP进行数据的传输是非常实用的,并且能够保证数据包能够到达邻居结点。在TCP协议的基础上,构建BATMAN协议层,在这个层次上实现BATMAN协议的相关机制。最后提供相应的网络接口,应用程序可以通过调用这些接口建立ad hoc网络,并且实现相应的功能。图2展示了整个应用框架的基本结构。通过系统的分层实现,可以提升整个架构的可维护性,以及提升系统的复用性。

图2 BATMAN框架的基本结构Fig.2 Architecture of BATMAN framework

在Android系统中,可以使用JNI进行C或者C++程序的开发,通过JNI编译成为Android系统可识别的静态类库,因此整个系统采用C++作为开发语言,开发整个应用框架,并且最终编译成为Android的类库供应用开发者使用。整个框架的设计基于面向对象的开发方法,进行封装,力图开发出简单实用的Android下的应用框架。图3为整个框架的UML类图。通过这个图能够很清晰的看出整个框架的设计方式。框架实现后,将会为应用程序提供多个实用的网络连接接口。通过调用接口,可以实现采用同样应用框架的应用间实现ad hoc网络连接。

图3 Android中BATMAN框架类图Fig.3 BATMAN framework class diagram

Android中的应用和程序都是使用Java作为编程语言,并且将会编译成为“.dex”文件用于执行。Android应用中,仅有Activity是用户可见的部分。BATMAN的C语言代码使用NDK(Native Development Kit)将 C代码转化为 Android可执行代码。并通过JNI将应用框架载入到应用程序中,实现程序的开发。

4 框架执行效率

基于BATMAN协议的ad hoc网络框架在日常的应用中具有应用价值,其执行效率也是一个框架性能的重要指标。通过在Android上建立应用框架能够有效的提高实用性。通过在不同的应用场景中进行测试,可以得到此应用框架的最终执行效率。框架执行效率的测试场景为北京工业大学的教学楼内,使用10部已经加载了BATMAN的Android手机进行相应的测试工作,测试人员使用Android手机在同一楼层中随机移动,最后从系统中获取相应的日志对相关的数据进行统计,得到执行效率的相关数据。

测试的第一个指标是数据包送达率,由于测试过程中是节点是随机移动的,使用本文的应用框架进行数据传输,在可以连接的范围内主要的数据送达率可以达到80%以上,基本能够满足日常的简单数据传输功能。图4给出了在900 s内的数据送达率的情况。

图4 BATMAN应用框架数据包送达率Fig.4 Packets delivery ratio

另一个比较重要的数据是数据包的延迟,通过一系列的测试,本框架的数据包延迟可以控制在50 ms内,这样的数据包延迟在日常的应用中是可以接受的。图5给出了发送0到6万个包的平均包延迟。

图5 BATMAN应用框架包延迟Fig.5 Packets delay

通过以上的测试,能够全面的了解基于Android的BATMAN协议应用框架的相应执行效率,为应用层的使用提供了全面的参考。

5 框架应用

经过测试,整个应用框架效率较高。在实际的应用场景中,通过采用此框架构建一个用于网络传输的Android应用程序。使用3台Android手机作为测试手机构建一个简单的ad hoc网络,在网络中进行数据传输。具体的应用截屏如图6所示。在这个应用程序中,程序自动发现采用同样使用此框架开发的应用程序,并且列出其在网络中的IP地址。

图6 使用ad hoc应用框架程序截图Fig.6 Ad hoc application framework program screenshot

6 结 论

Android系统作为目前主流智能设备的操作系统,虽然提供了强大的网络功能,但是并没有完全支持ad hoc网络,通过对BATMAN协议的理解,以及Android开发的整体认识,在Android系统上开发出一个支持BATMAN协议的网络框架,不但可以方便的使得使用Android系统的设备完成自组网连接,而且可以应用到智能家电、灾难救援等领域,具有极强的研究和使用价值。

[1]JHE-YI H,CHIEN-CHENG S,WEI-HSIANG L,et al.Android-based Mobile payment service protected by 3-factor authentication and virtual private ad hoc networking[C].Hong Kong, China,2012:111-116.

[2]HANNO W,TOBIAS H,BACKHAUS R,et al.Establishing Mobile ad-hoc networks in 802.11 infrastructure mode[C]//Las Vegas, NV, United states,2011:49-51.

[3]LAURENTD,NADJM-TEHRANIS.Batmanstore-andforward:The best of the two worlds[C].Department of Computer and Information Science, Linkoping University,SE-581 83 Linkoping, Sweden,2012:721-727.

[4]ELIS K,HIYAMA M,MAKOTO I,et al.Performance comparison of OLSR and Batman routing protocols by a MANET testbed in stairs environment[C]//Graduate School of Engineering, Fukuoka Institute of Technology (FIT), 3-30-1 Wajiro-Higashi, Higash, 2012:339-349.

[5]JOSH T,JEFF R,NICK M.Off grid communications with android meshing the Mobile world [C]//Accuvant LABS Research Consulting Group, Bedford, MA, United States,2012:401-405.

[6]WOOK S,KIYOMOTO S,KAZUHIDE F,et al.A formal model to analyze the permission authorization and enforcement in the Android framework[C]//KDDI R and D Laboratories,Inc., Saitama 356-8502, Japan,2010:944-951.

[7]WANG Jie,YU Xue,ZENG Yu,et al.The design and realization of campus information release platform based on android framework [C]//SchoolofManagement, Capital Normal University, Beijing 100089, China,2013:121-128.

猜你喜欢

网络连接结点数据包
个性化设置 Win10 的网络连接信息
运动想象的大尺度动态功能网络连接
SmartSniff
Ladyzhenskaya流体力学方程组的确定模与确定结点个数估计
中小型网络组建技术
基于Libpcap的网络数据包捕获器的设计与实现
基于Raspberry PI为结点的天气云测量网络实现
视觉注意的数据包优先级排序策略研究
移动IPV6在改进数据包发送路径模型下性能分析
基于DHT全分布式P2P-SIP网络电话稳定性研究与设计