嵌入式爱好者

查看: 5129|回复: 0

[Linux] AODV协议移植到S3C6410平台上时不能实现多跳

[复制链接]

1

主题

1

帖子

16

积分

扫一扫,手机访问本帖
发表于 2017-3-17 13:14:06 | 显示全部楼层 |阅读模式
我先详细描述下我的情况以及遇到的问题:
我修改了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

恳请大神拯救!!!!!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2024-5-3 19:16

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表