码迷,mamicode.com
首页 > 其他好文 > 详细

组建ad-hoc网络,通过aodv协议实现互通

时间:2014-11-25 19:09:39      阅读:266      评论:0      收藏:0      [点我收藏+]

标签:des   style   http   io   ar   color   os   使用   sp   

这几天一直在做aodv协议的实现与组建ad-hoc网络。

根据很多前辈的经验与自己实际操作的结果。做一个自己备份用的小的总结出来。

【此教程为第一部分,是在已经配置好开发板aodv的情况下,配置PC端AODV,配置开发板aodv在第二部分教程。

测试目标:

Linux下的pc端与开发板端组建ad-hoc网络,并实现aodv路由协议,相互ping通

测试环境:

1.物理主机ubuntu10.04(kernel: 2.6.25.7)

a) 【虚拟机下ubuntu10.04平台:kernel 2.6.38.7也已测试通过】

2.开发板:FriendlyARM tiny210 V2 (开发板平台:linux 2.6.35.7)

3.Aodv-uu版本:aodv-uu-0.9.6

4.交叉编译工具:arm-linux-gcc 4.5.1

测试过程:

1.首先应编译一个新的内核。

配置内核

在编译内核之前首先要配置内核,也就是决定哪些功能编入内核,哪些功能编入模块。编入内核的功能可以直接被内核调用,编成模块的功能使用前需将模块挂载入内核。未编入内核和模块的功能将不能使用。

为保证编译过程的顺利进行,首先需安装编译的基本环境。使用命令apt-get install build-essential kernel-package libncurses5-dev libqt3-headers。其中build-essential  为基本的编程库gcc, makekernel-package  Debian 系统里生成 kernel-image 的一些配置文件和工具。libncurses5-dev meke menuconfig要调用的。

-------------------

Make menuconfig

手工定制内核,重新编译内核将netfilter模块加进去。

Networking support --->
   Networking options --->
      Networking packet filtering framework (Netfilter) --->
         IP: Netfilter configuration --->
            <*> IP Userspace queueing via NETLINK (OBSOLETE)

然后编译,编译内核过程请参考本人博客教程。

2.编译好内核之后开始编译aodv-uu-0.9.6

a) 解压源代码包

编译前需要改动的信息:

lnx/kaodv-debug.h程序中添加头文件 #include 

lnx/kaodv-netlink.c中将 static DECLARE_MUTEX(kaodvnl_sem); 

改为 static DEFINE_SEMAPHORE(kaodvnl_sem);

b) Make

c) Make install

这之后会把生成的kaodv.ko模块放到/lib/modules/linux-2.6.35.7/aodv下。再以后要启动aodv用户态时,要先加载此目录下的模块到内核中。

3.组建ad-hoc网络

【后来做的时候发现,把wifi模块放到了PC机上,用iwconfig命令能够看到设备,ifconfig wlan1 up也能够起来,但是就是不能够iwlist wlan1 scan搜索到任何网络,或者是ifconfig wlan1 up总提示不正常,资源暂时不能用之类的,这些都是没有装对应无线网卡驱动的问题。装好驱动就没事了。至于说的装驱动,我们测试平台用的无线网卡为rt3070,这个无线网卡用命令lsmod |grep rt* 已经可以看到有rt2870sta的驱动和rt2800usb,所以我们可以用命令加载这个模块,至于为什么会出现这种情况,我暂时还没有研究,可参见文章http://ubuntuforums.org/showthread.php?t=2154070 即可解决此种问题。】

【同样的,之前一直不是很清楚,如果只有两个终端,那么还要aodv协议干嘛用,所以只有两台设备的话,编译aodv确实没什么用处。不用编译aodv,直接组建上ad-hoc网络也可以。】

【这里有一步非常重要,弄了好长时间,一直连不上ad-hoc,原因在于pc端所采用的系统为desktop系统,这里就有了图形用户的界面,而在这个系统下会有两种配置网络的方式,一种为network-manager,一种为/etc/network/interfaces/etc/init.d/networking,这两种方式不能够同时进行,也就是说再用下边的这种方法设置ip的情况下,要把network-manager禁用掉,不然会冲突。

停用network-manager即可。具体方法如下:

root@ubuntu :# /etc/init.d/network-manager stop

 

如之后想继续使用network-manager,则 /etc/init.d/network-manager restart即可。

参考:http://www.linuxidc.com/Linux/2010-10/29031.htm

http://hi.baidu.com/tawnde/item/103a150d1e9abce6f45ba685

 

 

1.发起发:

    iwconfig wlan0 mode ad-hoc

    iwconfig wlan0 essid "aodv-adhoc"

    ifconfig wlan0 up

    ifconfig wlan0 192.168.1.1

    

2.接入方:

    iwconfig wlan0 mode ad-hoc

    ifconfig wlan0 up

    ifconfig wlan0 192.168.1.3

    iwlist wlan0 scan (确保能搜到aodv-adhoc网络)

    iwconfig wlan0 essid aodv-adhoc

    iwconfig wlan0 查看cell是否为iwlist搜出aodv-adhoc对应的cell,如果一致,则接入成功。

    

3.加载aodv模块【两端都需要加载】

    insmod kaodv.ko

    

4.运行aodv协议【两端都需要运行】

    ./aodvd

 

    20:02:17.416 host_init: Attaching to rausb0, override with -i .

    20:02:17.548 aodv_socket_init: RAW send socket buffer size set to 221184

    20:02:17.548 aodv_socket_init: Receive buffer size set to 221184

    20:02:17.548 main: In wait on reboot for 15000 milliseconds. Disable with "-D".

    20:02:17.548 hello_start: Starting to send HELLOs!

    20:02:20.217 neighbor_add: 192.168.1.1 new NEIGHBOR!

    20:02:20.217 rt_table_insert: Inserting 192.168.1.1 (bucket 0) next hop 192.168.1.1

    20:02:20.217 nl_send_add_route_msg: ADD/UPDATE: 192.168.1.1:192.168.1.1 ifindex=3

    显示发现邻居192.168.1.1并将其添加到路由表中,协议运转正常。


组建ad-hoc网络,通过aodv协议实现互通

标签:des   style   http   io   ar   color   os   使用   sp   

原文地址:http://my.oschina.net/floristgao/blog/348649

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!