我先详细描述下我的情况以及遇到的问题:
我修改了AODV-UU-0.9.6协议,使其可以移植到linux3.0.1的内核上,但移植了之后测试多跳的时候出现了问题。
三个节点都是ARM板(OK6410)+Linux3.0.1系统(以下称为节点A,B,C)。
我将kaodv.ko编译进了内核,然后放入了ARM中,网络的配置也都是按照网上所说,模式为ad-hoc,网络都配置在了一个网段192.168.1。然后将三个节点分别执行./aodvd应用程序,每个节点都能搜到剩余的两个相邻节点,查看路由表也能看到邻节点的路由,A,B,C都能相互ping通。
起初我用iptables的方式在节点A屏蔽了C的mac地址,其实说屏蔽也不对,就是用这个命令过滤掉C发来的包,让A只接受又B转发过来的包。
iptables –A INPUT –p ALL –m mac –mac-source 74:e5:0b:ef:66:f2 –j DROP
此时A的路由列表中没有C了,只剩下了B,然后节点A和节点C就不能ping通了(也就是没有通过B进行转发),后来我看大家的帖子说iptables有可能与AODV内的hooc函数有冲突,所以我进行了拉开测试:
将A与C放的足够远,使之搜索不到对方的路由,再加入B,使之既能搜索到A也能搜索到C,此时A的路由列表中只有B,C的路由列表中也只有B,但这时用A去pingC,仍然不能ping通,也就证明中间节点B没有实现转发。
我看了大家之前讨论的帖子我打开内核里的IP:advanced router选项,ip_forward也设置的是1。
这个问题已经卡了我半个月了,我所能尝试的各种方法全都试过了,真的不知道错在哪里,恳请大神拯救!!!版本相关:
内核 Linux3.0.1
交叉编译器 arm-linux-gcc-4.3.2
路由协议 aodv-uu-0.9.6.tar
网卡 rt3070命令:
#insmod rt3070sta.ko
#ifconfig ra0 up
#iwconfig ra0 mode ad-hoc essid aodv-test
#ifconfig ra0 192.168.1.2 up
# insmod kaodv.ko
#./ aodvd恳请大神拯救!!!!!!!
我修改了AODV-UU-0.9.6协议,使其可以移植到linux3.0.1的内核上,但移植了之后测试多跳的时候出现了问题。
三个节点都是ARM板(OK6410)+Linux3.0.1系统(以下称为节点A,B,C)。
我将kaodv.ko编译进了内核,然后放入了ARM中,网络的配置也都是按照网上所说,模式为ad-hoc,网络都配置在了一个网段192.168.1。然后将三个节点分别执行./aodvd应用程序,每个节点都能搜到剩余的两个相邻节点,查看路由表也能看到邻节点的路由,A,B,C都能相互ping通。
起初我用iptables的方式在节点A屏蔽了C的mac地址,其实说屏蔽也不对,就是用这个命令过滤掉C发来的包,让A只接受又B转发过来的包。
iptables –A INPUT –p ALL –m mac –mac-source 74:e5:0b:ef:66:f2 –j DROP
此时A的路由列表中没有C了,只剩下了B,然后节点A和节点C就不能ping通了(也就是没有通过B进行转发),后来我看大家的帖子说iptables有可能与AODV内的hooc函数有冲突,所以我进行了拉开测试:
将A与C放的足够远,使之搜索不到对方的路由,再加入B,使之既能搜索到A也能搜索到C,此时A的路由列表中只有B,C的路由列表中也只有B,但这时用A去pingC,仍然不能ping通,也就证明中间节点B没有实现转发。
我看了大家之前讨论的帖子我打开内核里的IP:advanced router选项,ip_forward也设置的是1。
这个问题已经卡了我半个月了,我所能尝试的各种方法全都试过了,真的不知道错在哪里,恳请大神拯救!!!版本相关:
内核 Linux3.0.1
交叉编译器 arm-linux-gcc-4.3.2
路由协议 aodv-uu-0.9.6.tar
网卡 rt3070命令:
#insmod rt3070sta.ko
#ifconfig ra0 up
#iwconfig ra0 mode ad-hoc essid aodv-test
#ifconfig ra0 192.168.1.2 up
# insmod kaodv.ko
#./ aodvd恳请大神拯救!!!!!!!
在安装好aodv-uu-0.9.6之后,
1、首先需要停用net-manager。执行命令:
/etc/init.d /network -manager stop
如果之后想要重新启动network-manager ,执行以下命令:
/etc/init.d /network -manager restart
2、需要开启路由转发功能
执行命令:
vi /etc/sysctl.conf
在文档的后面添加:
net.ipv4.ip_forward = 1
3、多跳实验
3台电脑以L形放置
B--------------C
|
|
|
A
A 和C之间不能直接通讯,直接找一个建筑物拐角处,将3个节点按上面的位置安放。
保持aodvd一直运行,使用ping -R IP 来实现路由路径查询
你能不能将aodv-uu-0.9.6协议移植到linux3.0.1的教程发我一份,谢谢!