<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } -->
图解 AODV 协议 (demo)
本文的分析基于 ns-2.33 中的 aodv 协议源码
所参考的文献
AODV 的中文 RFC 文档
aodv.cc 文档注解
所使用的软件
openoffice
yEd
freemind
eclipse
前言
路由协议的最终目的,是获得和维护一个到目的节点的有效路由,所以,整个协议的目的直指路由表。那么首先看一下 AODV 的路由表的格式:
。。。。。。
1 AODV::recv( )
起点从 AODV::recv( ) 开始 :
AODV::recv ( ) 函数负责接收传递过来的数据包,根据数据包的不同类型做相应的操作。
<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } -->
recv() 调用了很多函数,在此不一一例举,删繁就简,只选取重要的:
<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } -->
1.1 recvAODV( )
recvAODV( ) 负责接收AODV 包,根据不同的类型作不同的处理。整个过程很简单,在此直接用代码表示,不作解释。
switch (ah-> ah_type ) {
case AODVTYPE_RREQ:
recvRequest(p);
break ;
case AODVTYPE_RREP:
recvReply(p);
break ;
case AODVTYPE_RERR:
recvError(p);
break ;
case AODVTYPE_HELLO:
recvHello(p);
break ;
}
所调用的函数: