路由协议aodv-uu-0.9.6在Linux系统实现上多跳出现问题

myfuturexfr1 2015-01-31 09:34:44
我先详细描述下我的情况以及遇到的问题:
我想搭建的场景为:模拟组建一个ad hoc网络,有一个主控节点可以通过路由协议来控制其他几个节点的移动性。具体实现:3个arm板置于可以有轮的小车上,通过电路的连接,arm板可以通过程序来控制小车的移动。
我们现在是四个节点组成的ad-hoc网络,所用的路由协议为aodv-uu-0.9.6。一个节点是台式电脑(以下成为节点1),另外三个节点都是ARM板(mini6410)+Linux系统(以下成为节点2,3,4)置于小车上来实现移动性,我们将kaodv.ko编译进了内核然后放入了ARM中,网络的配置也都是按照网上所说,模式为ad-hoc,网络都配置在了一个网段192.168.1。然后将四个节点启动
aodvd应用程序,每个节点都能搜到剩余的三个相邻节点(因为几个arm板位置比较近),查看路由表也能看到邻节点的路由,但都是一跳的;
起初我们用iptables的方式屏蔽了节点1发往节点2的数据,然后节点1和节点2就不能ping通了(也就是不能找到中间节点进行转发),然后我们人为的在节点1的路由表中加入了经由 节点3 中继,目的节点为节点2的路由表项,此时节点1和 节点2 就可以
ping通了。
后来我们用了远距离断开链路的方式将节点1和节点2的一跳链路断开,节点3 放在了他们之间,保证节点1,2都能分别和节点3
ping通,但是就是不能寻找到节点1 和节点2的路由,ping的时候一直显示目的节点不可达。你看这是什么问题呢?
另,我觉得有必要把我们前期的编译工作说明一下,看是否是前期出了问题:

版本相关:
Linux 系统 Fedora9
内核 Linux2.6.38
交叉编译器 arm-linux-gcc-4.5.1
路由协议 aodv-uu-0.9.6.tar
(1)下载tar包后对其进行解压。
(2)PC版本和ARM版本分别执行命令make和make arm生成aodvd。
(3)进入lns文件夹执行make命令生成kaodv.ko。
(4)网络环境配置搭建如下所示:
#iwconfig wlan3 mode ad-hoc essid aodv-test
#ifconfig wlan3 192.168.1.1 up
# insmod kaodv.ko
#./ aodvd
跪求大神给予指导~~跪谢!!
...全文
1551 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
devstone 2016-09-24
  • 打赏
  • 举报
回复
大家有没有在linux内核3.5以上编译过这个路由协议啊, 今天试了下出现了好多的错误,没有头绪了,网上基本都是在2.6内核版本上进行的
can123dao 2016-01-18
  • 打赏
  • 举报
回复
我现在边编译都通不过了!!!!!! 楼主可否把AODV的两层目录下的Makefile分享一下!
meteorego 2015-11-26
  • 打赏
  • 举报
回复
请问下:现在有没有人做出来呀,遇到什么问题了?大家都交流交流呗....
justin_zheng 2015-11-01
  • 打赏
  • 举报
回复
我觉得iptables是不是和aodv-uu冲突啊??我是靠拉长距离可以实现多跳,但是我想在板子(tiny6410)上使用NAT,但内核编译一加入NAT的功能后,aodv-uu就不能正常运行了,无法找到邻居节点。。你的内核是编译了哪些模块?
abraham2015 2015-07-16
  • 打赏
  • 举报
回复
请问楼主解决了吗?
lili88881216 2015-06-07
  • 打赏
  • 举报
回复
有谁解决了吗?我的也不能实现转发!
cjjb09010405 2015-03-07
  • 打赏
  • 举报
回复
好的啊 我的QQ是1430429215 我也是用了iptables命令过滤之后,再运行aodv协议时,用route查看路由表 里面没有转发的路由,只有可以直达的一跳路由 不知道是路由协议没有运行正确 还是不能转发的问题
myfuturexfr1 2015-03-06
  • 打赏
  • 举报
回复
引用 22 楼 cjjb09010405 的回复:
没有呢,就是不能自动转发,最近刚回到学校在忙其他事儿的,你的搞得怎么样啦
我也刚回来两天,我突然想起来我这边用了iptables以后,路由表中就没有转发的路由,这是不是说明路由协议没有运行正确呢。。留下你的QQ或者邮箱什么的吧,方便联系~~
cjjb09010405 2015-03-06
  • 打赏
  • 举报
回复
没有呢,就是不能自动转发,最近刚回到学校在忙其他事儿的,你的搞得怎么样啦
myfuturexfr1 2015-03-02
  • 打赏
  • 举报
回复
引用 19 楼 cjjb09010405 的回复:
我的ARM板etc配置文件下也没有sysctl.conf文件,我试了简单的设置,用命令sysctl net.ipv4.ip_forward查看,sysctl -w net.ipv4.ip_forward=1将其设置为1,但是这个重启后不能保存,这个方法设置后仍然不能转发,不知道是不是我的内核编译时没有打开router选项
多跳问题解决了没?
myfuturexfr1 2015-02-04
  • 打赏
  • 举报
回复
引用 15 楼 cjjb09010405 的回复:
你好,查看路由表有一跳可达的路由地址,没有转发可达的目标地址;在编译内核时打开router选项是指在内核编译用make menuconfig命令进行配置时,需要把router选项选进去,这样设置ip_forward=1才有效????求回复,非常感谢!!!
你尝试用以下方式设置ip_forward的值了么? 保持开机自动启动 vi /etc/sysctl.conf 修改以下字符 # Controls IP packet forwarding net.ipv4.ip_forward = 0 #0为关闭,1为开启 修改后保存即可,下次开机后可自动加载。 为何我的找不到/etc/sysctl.conf文件
myfuturexfr1 2015-02-04
  • 打赏
  • 举报
回复
引用 19 楼 cjjb09010405 的回复:
我的ARM板etc配置文件下也没有sysctl.conf文件,我试了简单的设置,用命令sysctl net.ipv4.ip_forward查看,sysctl -w net.ipv4.ip_forward=1将其设置为1,但是这个重启后不能保存,这个方法设置后仍然不能转发,不知道是不是我的内核编译时没有打开router选项
额。。这样呀,我也只是修改了一下,没有试能否转发,话说make meunconfig中有router这个选项么。。不能没选吧,要不怎么能实现一跳呢。。好惆怅,过年要回家了,来年再战,有了新的情况及时来更新哦~~
LouisScola 2015-02-04
  • 打赏
  • 举报
回复
引用 15 楼 cjjb09010405 的回复:
你好,查看路由表有一跳可达的路由地址,没有转发可达的目标地址;在编译内核时打开router选项是指在内核编译用make menuconfig命令进行配置时,需要把router选项选进去,这样设置ip_forward=1才有效????求回复,非常感谢!!!
想问这么多自己去单独开个贴
cjjb09010405 2015-02-04
  • 打赏
  • 举报
回复
我的ARM板etc配置文件下也没有sysctl.conf文件,我试了简单的设置,用命令sysctl net.ipv4.ip_forward查看,sysctl -w net.ipv4.ip_forward=1将其设置为1,但是这个重启后不能保存,这个方法设置后仍然不能转发,不知道是不是我的内核编译时没有打开router选项
myfuturexfr1 2015-02-03
  • 打赏
  • 举报
回复
引用 11 楼 cjjb09010405 的回复:
没懂这个ip_forward在哪里查看和设置,求指导,囧~~
其实大部分Linux的VPN模块(ppp),基本上都采用了路由转发。当然,如果想用Linux实现最基本的路由(交换机)功能,前提也需要开启内核转发服务。在进行Linux内核转发时,需要在proc文件系统的proc/sys目录设置转发的参数,可以使用下面的方法查看该参数的值 cat /proc/sys/net/ipv4/ip_forward 1、开启Linux内核转发 echo "1" > /proc/sys/net/ipv4/ip_forward SSH执行以上命令,1为开启,0为关闭。 2、保持开机自动启动 vi /etc/sysctl.conf 修改以下字符 # Controls IP packet forwarding net.ipv4.ip_forward = 0 #0为关闭,1为开启 修改后保存即可,下次开机后可自动加载。 关于如何实现NAT功能,可以配合iptables或ppp,具体请参考以后的教程。 试试~~
myfuturexfr1 2015-02-03
  • 打赏
  • 举报
回复
引用 14 楼 LouisScola 的回复:
[quote=引用 13 楼 cjjb09010405 的回复:] 楼主你试过了吗?你问题解决了没啊?我用命令查看ip_forward原来是0,设置为1以后,终端1和3之间想通过2转发还是ping不通啊,请问你解决了吗?
第一,先看路由表中是否有路由。 第二,ip_forward必须在内核编译打开router选项,设置ip_forward=1才有效[/quote] 您的意思是说 即使没有打开router选项和设置ip_forward=1,路由表中也应该有转发的路由项?
cjjb09010405 2015-02-03
  • 打赏
  • 举报
回复
没懂这个ip_forward在哪里查看和设置,求指导,囧~~
cjjb09010405 2015-02-03
  • 打赏
  • 举报
回复
你好,查看路由表有一跳可达的路由地址,没有转发可达的目标地址;在编译内核时打开router选项是指在内核编译用make menuconfig命令进行配置时,需要把router选项选进去,这样设置ip_forward=1才有效????求回复,非常感谢!!!
LouisScola 2015-02-03
  • 打赏
  • 举报
回复
引用 13 楼 cjjb09010405 的回复:
楼主你试过了吗?你问题解决了没啊?我用命令查看ip_forward原来是0,设置为1以后,终端1和3之间想通过2转发还是ping不通啊,请问你解决了吗?
第一,先看路由表中是否有路由。 第二,ip_forward必须在内核编译打开router选项,设置ip_forward=1才有效
cjjb09010405 2015-02-03
  • 打赏
  • 举报
回复
楼主你试过了吗?你问题解决了没啊?我用命令查看ip_forward原来是0,设置为1以后,终端1和3之间想通过2转发还是ping不通啊,请问你解决了吗?
加载更多回复(10)

18,829

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 专题技术讨论区
社区管理员
  • 专题技术讨论区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧