首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于ARM的Ad Hoc网络平台的实现(2)

基于ARM的Ad Hoc网络平台的实现(2)

f、无线网卡的配置  无线网卡有managed、Ad-hoc两种模式。managed模式称为基础设施模式,又称接入点模式;Ad-hoc模式称为点对点模式或无中心模式,用来在无线网卡之间进行一跳通信。Ad Hoc网络就是在Ad-hoc模式基础上通过网络协议使得该网络支持多跳通信,因此该模式的使用和性能对Ad Hoc网络的影响至关重要,以下是Ad-hoc模式配置方法,rausb0表示无线网卡:
  1)、ifconfig rausb0 10.0.1.1 up
  设置节点IP为10.0.1.1。
  2)、iwpriv rausb0 set AdhocOfdm="2"
  设置rausb0为11g only模式,即54M速率模式,这是802.11g所能支持的最高速率。
  3)、iwconfig rausb0 channel 3
  设置信道为3。
  4)、iwconfig rausb0 mode ad-hoc essid bcnl
  设置网卡模式为ad-hoc,essid为“bcnl”。
  上述配置过程中使用的“iw”开头的命令都是无线工具集中的命令,其源码包是wireless_tools.29.tar.gz,经过交叉编译后即可使用。
  AODV路由协议的移植
  本文使用的代码是aodv-uu-0.9.5.tar.gz。AODV分为两个部分,一个是内核态模块kaodv.ko,一个是用户态模块aodvd。AODV主要部分工作在用户态,用于维护内核路由表。
  AODV需要内核支持,在内核配置时要选上netfilter选项。先编译内核态模块kaodv.ko,步骤如下:
  a、将aodv-uu-0.9.5/lnx目录的内容拷到内核源码包linux-2.6.18/net/ipv4/kaodv目录下,修改linux-2.6.18/net/ipv4/Kconfig,添加如下内容:
  config KAODV_UU
  tristate "support for aodv-uu adhoc routing protocol"
  b、在linux-2.6.18/net/ipv4/Makefile末尾添加如下的编译选项:
  obj-$(CONFIG_KAODV_UU) += kaodv/
  c、make menuconfig,找到如下的目录项:
  Networking --->
  
  • Networking support Networking options --->
      support for aodv-uu adhoc routing protocol选为模块编译。
      d、make modules将生成kaodv.ko。以下介绍用户态aodvd编译:
      将aodv-uu-0.9.5/Makefile做适当修改,使其在交叉编译的环境下只编译用户态部分。
      将得到的kaodv.ko和aodvd拷贝到根文件系统中,再烧写到ARM板上。
      insmod kaodv.ko
      ./ aodvd
      这样aodv协议就运行起来了。在协议移植中有两点需要注意:一是Makefile中ARM_CCFLAGS=-mbig-endian应该注释掉,否则运行时会产生大小端混乱的问题;二是将kaodv.ko和aodvd分开编译,因为同时编译时总是提示编译器缺少文件,甚至用其他交叉编译器依然不能解决问题,而这些错误大多是编译内核模块产生的。
      测试和结论
      为简单起见,本测试使用两个笔记本和一个ARM平台组建成Ad Hoc网络,如图4所示,A节点IP为10.0.1.1,B节点IP为10.0.1.2,C节点IP为10.0.1.3(经测试将ARM平台做通信端,A或C做中继,网络同样可以正常运行)。

    图4 测试拓扑示意图

      为了简单地实现C节点不在A节点一跳范围内,可以使用iptables实现过滤。
      在A节点执行:
      iptables –A INPUT –p ALL –m mac –mac-source C.mac –j DROP
      在C节点执行:
      iptables –A INPUT –p ALL –m mac –mac-source A.mac –j DROP
      以上的C.mac、A.mac是C和A的实际mac地址,这样A节点拒绝C发给它的数据包,C节点也拒绝A发给它的数据包,保证二者一跳不可达。
      在C节点ping -R 10.0.1.1,链路不通,说明过滤成功,B没有进行数据包转发。
      在各节点上运行AODV后,在C节点ping -R 10.0.1.1,结果如图5所示。

    图5 测试结果

      可见,B正确地进行了数据包转发,AODV协议正常运行,ARM平台成功运行。
      在A节点执行lftp 10.0.1.3,并下载普通文件。这样数据包由中间的ARM平台B转发,下载完成后,查看C节点的日志文件/var/log/vsftpd.log,发现上传和下载的速率基本相同,有将近700kBps的速率,达到5.4Mbps的速率。粗略估算聚合物电池供电能使ARM平台稳定运行8小时。
      通过以上测试,搭建一个Ad Hoc网络的ARM平台的目标已经达到。通过对有多个ARM平台的Ad Hoc网络进行测试,发现当某节点感知无线信号很弱时,无线网卡的essid存在自动变化的情况。
  • 继承事业,薪火相传
    返回列表