Chinaunix首页 | 论坛 | 博客
  • 博客访问: 525171
  • 博文数量: 122
  • 博客积分: 2024
  • 博客等级: 上尉
  • 技术积分: 1484
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-08 21:17
文章分类

全部博文(122)

文章存档

2012年(2)

2011年(25)

2010年(95)

分类:

2010-03-10 17:02:41

软件开始对维护的数据结构(host,rt_table,log等),用于不同机器间aodv通信的socket,和与uuaodv内核模块,路由表通信的netlink socket进行初始化,然后调用hello_start()发送第一个hello消息。

1,hello的发送

hello_start()--->hello_send()
hello_send()--->rrep_create(),aodv_socket_send(),timer_set_timeout().
首先创建一个ttl为1的rrep消息,通过上面的函数广播出去(uuaodv就是一个处理aodv命令的服务器),设置个时钟,1s左右再调用hello_send(),循环往复,以至无穷。

aodv_socket_send()
做一些检查,通过sendto()将数据发送出去

2,aodv_socket的初始化和数据的接收
aodv_socket_init(),创建socket,并且当有数据到达这个socket时调用aodv_socket_read.
aodv_socket_read()---->recvmsg(),aodv_socket_process_packet()
接受数据,并调用第二个函数进行具体的处理


aodv_socket_process_packet()
把数据包的源地址加入到邻居列表(uuaodv维护的列表和系统路由表)
并根据收到消息的类型,调用hello_process(),rreq_process(),rrep_process(),rerr_process(),rrep_ack_process()进行具体的处理


3,对hello消息的处理
就是更新一下hello对应的邻居路由信息

4,其他的参照AODV的处理流程,跟HELLO类似
阅读(1596) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-05-08 22:52:16

谢谢,我也在研究AODV,刚刚拜读源码