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

这几天一直在做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, make等。kernel-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并将其添加到路由表中,协议运转正常。

时间: 2024-11-10 01:17:50

组建ad-hoc网络,通过aodv协议实现互通的相关文章

ns3模拟无线Ad hoc 网络通信

Ad hoc网络 Ad hoc网是一种多跳的.无中心的.自组织无线网络,又称为多跳网(Multi-hop Network).无基础设施网(Infrastructureless Network)或自组织网(Self-organizing Network).整个网络没有固定的基础设施,每个节点都是移动的,并且都能以任意方式动态地保持与其它节点的联系.在这种网络中,由于终端无线覆盖取值范围的有限性,两个无法直接进行通信的用户终端可以借助其它节点进行分组转发.每一个节点同时是一个路由器,它们能完成发现以

网络的分层协议总结

OSI七层模型OSI 中的层            功能                                                        TCP/IP协议族 应 用层                 文件传输,电子邮件,文件服务,虚拟终 端         TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 表示层                 数据格式化,代码转换,数据加密                                   

Ansible 七(ad hoc任务)

Ansible 七(ad hoc任务) ansible任务 ad hoc任务就是执行shell命令.或shell脚本. ansible ad-hoc命令 可以执行一些简单的命令,不需要将这些执行的命令特别保存下来. 适合执行简单的命令. ansible playbook 可以解决比较复杂的任务,可以将命令保存下来. 适合执行配置管理或部署客户机. 并行性和shell命令 重启webservers主机组里的所以机器,每次重启10台 ansible webservers -a "/sbin/rebo

iOS开发最最基础之打包Ad Hoc应用

首先,介绍下什么是Ad Hoc? Ad Hoc简单的定义是:把iOS工程打包成ipa包后,通过Ad Hoc证书签名做分发测试的行为. Ad Hoc证书可以分为两类: 1.99美元的开发者账号生成的. 2.299美元的开发者账号生成的. 由于我没有299美元的开发者账号,故本文只针对99美元的开发者账号的情况作阐述. 接下来,我将从以下5点进行操作描述: 1.AppID(如果有配置好了,可以忽略). 2.certificate 3.device 4.profile 5.Xcode打包 1.AppI

iOS程序发布测试-生成ad hoc证书

转自: http://blog.sina.com.cn/s/blog_68444e230100srdn.html iOS程序发布测试3-生成ad hoc证书 iOS证书分2种,1种是开发证书,用来给你(开发人员)做真机测试的:1种是发布证书,发布证书又分发布到app store的(这里不提及)和发布测试的ad hoc证书. 那ad hoc证书和开发证书区别在哪里?如果你的tester(团队测试人员.客户)都能将测试设备拿到你面前,直接插到你的mac开发机上,你可以直接将程序"灌"进去,

解决SQL Server 阻止了对组件 &#39;Ad Hoc Distributed Queries&#39; 的 STATEMENT&#39;OpenRowset/OpenDatasource&#39; 的访问的方法

报错内容是:SQL  Server 阻止了对组件 'Ad Hoc Distributed Queries' 的  STATEMENT'OpenRowset/OpenDatasource'  的访问,因为此组件已作为此服务器安全配置的一部分而被关闭.系统管理员可以通过使用 sp_configure 启用 'Ad Hoc  Distributed Queries'.有关启用 'Ad Hoc Distributed Queries' 的详细信息,请参阅 SQL  Server 联机丛书中的 "外围应用

Ad Hoc Distributed Queries的启用与关闭

启用Ad Hoc Distributed Queries: exec sp_configure 'show advanced options',1 reconfigure exec sp_configure 'Ad Hoc Distributed Queries',1 reconfigure 关闭Ad Hoc Distributed Queries: exec sp_configure 'Ad Hoc Distributed Queries',0 reconfigure exec sp_conf

ios开发 ad hoc怎么用

简单的说就是这样 ad hoc 方式是苹果用来给未上线的app做测试用的,首先你要在苹果开发平台上申请一个ad hoc的证书,再在profile中生成一个ad hoc 的profile文件(只需要在生成的时候选中该证书就行),然后下载下来就可以了. ios中怎么生成adhoc描述文件 hypo421 | 浏览 338 次  2016-03-02 10:04 2016-03-02 10:47 最佳答案 ad hoc 方式是苹果用来给未上线的app做测试用的,首先你要在苹果开发平台上申请一个ad h

Protocol Informatics【基于网络轨迹的协议逆向工程文献学习】

Protocol Informatics[基于网络轨迹的协议逆向工程文献学习]by tsy 声明: 1)本报告由博客园bitpeach撰写,版权所有,免费转载,请注明出处,并请勿作商业用途.恕作者著作权限制,本页面仅上传图片版本的文献学习文稿. 2)若本文档内有侵权文字或图片等内容,请联系作者bitpeach删除相应部分. 3)本文档内容涉及Protocol Informatics论文主题,该论文为协议逆向工程的入门经典之作,非常值得基于网络轨迹的协议逆向工程的学习. 论文标题为<Network