1.void AODVRouting::initialize(int stage)//初始化操作

2.void AODVRouting::handleMessage(cMessage *msg)//消息处理主函数

3.INetfilter::IHook::Result AODVRouting::ensureRouteForDatagram(INetworkDatagram *datagram)//这个函数应该是本节点模型开始路由发现的入口,先确定路由,“从这里开始让节点动起来”

4.AODVRouting::AODVRouting()//构造函数

5.bool AODVRouting::hasOngoingRouteDiscovery(const L3Address& target)//判断是不是正在执行对该目的地址的路由发现,也就是是否存在已发送且没返回的RREQ,是则True,否则Flase(bool :0为假,非0为真)

6.void AODVRouting::startRouteDiscovery(const L3Address& target, unsigned timeToLive)//开始路由发现,发RREQ

7.L3Address AODVRouting::getSelfIPAddress() const//获取自身IP地址

8.void AODVRouting::delayDatagram(INetworkDatagram *datagram)//准备开始路由发现之前,先缓存数据包操作(防止丢失)

9.void AODVRouting::sendRREQ(AODVRREQ *rreq, const L3Address& destAddr, unsigned int timeToLive)//发送RREQ,大部分操作为计算TTL,然后赋值给数据包RREQ和自消息WaitForRREP

10.void AODVRouting::sendRREP(AODVRREP *rrep, const L3Address& destAddr, unsigned int timeToLive)//发送RREP,准备RREPACK定时器

11.AODVRREQ *AODVRouting::createRREQ(const L3Address& destAddr)//创建一个新的RREQ包,大部分操作是在查本地有无目的节点序列号,然后设置一个新本节点的RREQ包ID号(对于源节点的RREP,对应到目的节点或中间节点就是RREQ)

12.AODVRREP *AODVRouting::createRREP(AODVRREQ *rreq, IRoute *destRoute, IRoute *originatorRoute, const L3Address& lastHopAddr)//制作RREP

13.AODVRREP *AODVRouting::createGratuitousRREP(AODVRREQ *rreq, IRoute *originatorRoute)//中间节点发现有到目的节点的路由后,继续发送一个RREP包到目的节点

14.void AODVRouting::handleRREP(AODVRREP *rrep, const L3Address& sourceAddr)//处理RREP

15.void AODVRouting::updateRoutingTable(IRoute *route, const L3Address& nextHop, unsigned int hopCount, bool hasValidDestNum, unsigned int destSeqNum, bool isActive, simtime_t lifeTime)//更新路由表记录信息,按照后面的参数更新route

16.void AODVRouting::sendAODVPacket(AODVControlPacket *packet, const L3Address& destAddr, unsigned int timeToLive, double delay)//实际的发包函数,使用了UDP,这是因为AODV的应用环境就是如此

17.void AODVRouting::handleRREQ(AODVRREQ *rreq, const L3Address& sourceAddr, unsigned int timeToLive)//处理RREQ

18.IRoute *AODVRouting::createRoute(const L3Address& destAddr, const L3Address& nextHop, unsigned int hopCount, bool hasValidDestNum, unsigned int destSeqNum,
void AODVRouting::receiveSignal(cComponent *source, simsignal_t signalID, cObject *obj DETAILS_ARG)//其它模块有变化,便调用这个函数,使节点做出调整

19.void AODVRouting::handleLinkBreakSendRERR(const L3Address& unreachableAddr)// 处理链路层反馈的通往某节点的链路断开,处理完本节点后,开始发送RERR

20.AODVRERR *AODVRouting::createRERR(const std::vector& unreachableNodes) //建立报错RERR

21.void AODVRouting::handleRERR(AODVRERR *rerr, const L3Address& sourceAddr)//处理RERR,把自己去往这些地址的下一跳是RERR发送节点的路由置成不活动,准备删除

22.bool AODVRouting::handleOperationStage(LifecycleOperation *operation, int stage, IDoneCallback *doneCallback)//改变本节点工作状态,由LifeCycle模块执行,ScenarioManager模块来配置调度

23.void AODVRouting::clearState()//关闭本节点前需要清理状态

24.void AODVRouting::handleWaitForRREP(WaitForRREP *rrepTimer)//等待RREP的超时时间已到,看看是否到了次数限制,没有的话则继续发RREQ

25.void AODVRouting::forwardRREP(AODVRREP *rrep, const L3Address& destAddr, unsigned int timeToLive)//向着源节点继续返回RREP

26.void AODVRouting::forwardRREQ(AODVRREQ *rreq, unsigned int timeToLive)//向前继续广播RREQ

27.void AODVRouting::completeRouteDiscovery(const L3Address& target)//完成路由发现,这里有模拟传输数据的一些命令,一定要记住!!!

28.void AODVRouting::sendGRREP(AODVRREP *grrep, const L3Address& destAddr, unsigned int timeToLive)//发送给目的节点GRREP,为了使目的节点建立到源节点的路由

29.AODVRREP *AODVRouting::createHelloMessage()//创建HelloMessage包

30.void AODVRouting::sendHelloMessagesIfNeeded()//一个HELLO_INTERVAL内发送一个1跳的RREP消息给邻居节点建立1跳的“路由”,只有当处于一个活动路由之中的时候,节点才会发送HELLO消息

31.void AODVRouting::handleHelloMessage(AODVRREP *helloMessage)//这里来处理beacon信息

32.void AODVRouting::expungeRoutes()//用来定期清理路由表内的过期路由记录

33.void AODVRouting::scheduleExpungeRoutes()//设定清理过期路由的自消息计时器

34.INetfilter::IHook::Result AODVRouting::datagramForwardHook(INetworkDatagram *datagram, const InterfaceEntry *inputInterfaceEntry, const InterfaceEntry *& outputInterfaceEntry, L3Address& nextHopAddress)//如果节点收到一个传送中数据包,则此函数被调用,首先查看本节点是否是目的节点,然后更新1跳和去源目的节点的路由生存时间,然后如果本地没有到该目的节点的活动路由,则要发送RERR

35.void AODVRouting::sendRERRWhenNoRouteToForward(const L3Address& unreachableAddr)//把这个不可到达的节点加入到不可到达节点集合,然后发送RERR

36.void AODVRouting::cancelRouteDiscovery(const L3Address& destAddr)//用来停止发送数据包,估计可以外部调用!!!

37.bool AODVRouting::updateValidRouteLifeTime(const L3Address& destAddr, simtime_t lifetime)//更新路由表中某目的节点路由的生存时间

38.AODVRREPACK *AODVRouting::createRREPACK()//建立RREPACK
void AODVRouting::sendRREPACK(AODVRREPACK *rrepACK, const L3Address& destAddr)//发送RREPACK

39.void AODVRouting::handleRREPACK(AODVRREPACK *rrepACK, const L3Address& neighborAddr)//处理RREPACK,把到发ack包的这个邻居节点路由设置为活动的,并且取消等待rrepack计时器

40.void AODVRouting::handleRREPACKTimer()//当RREPACK没有按时收到,则把当初发出RREP的下一跳节点加入黑名单,并启动黑名单消除计时器,在一定时间后回复它的正常

41.void AODVRouting::handleBlackListTimer()//搜索黑名单节点的解禁时间,如果到时的节点则解禁,然后找到最近要解禁的节点解禁时间,赋值启动黑名单解禁计时器

42.AODVRouting::~AODVRouting()//析构函数

AODV协议代码详述相关推荐

  1. aodv协议C语言代码,AODV协议的运行方式

    这也是一个网管必须具备的知识.那么在前面的文章中,我们已经对AODV协议的基础内容作了介绍,在这里我们主要讲解一下它的运行方式. (a)AODV路由发现 AODV路由协议是一种典型的按需驱动路由协议, ...

  2. 基于ns2和ns3进行AODV协议改进仿真

    记录研二时协议改进的心酸历程 AODV改进和仿真建议: 1.文献阅读: 2.学会仿真: 3.路由协议源代码修改和改进: AODV改进和仿真建议: 背景:研一暑假(2021.07)导师告诉我研究方向,并 ...

  3. 图解AODV协议(demo)

    <!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --> 图解 AODV 协议 (demo) 本文的分析基于 ns-2.33 中 ...

  4. 树莓派linux系统配置AODV协议,linux上模拟AODV路由协议 下面一些信息求各路大神解释!!...

    满意答案 rrg655nxta 2014.02.28 采纳率:44%    等级:12 已帮助:8227人 我想这应该是AODV建立连接和维护连接的过程.要弄清楚这些语句具体是什么意思,必须要查看实现 ...

  5. 基于NS2的AODV协议的修改与仿真的实现

    最近在用ns2帮别人做移动自组网aodv协议的改进仿真实验,学习了路由仿真方面的不少知识,顺手记录下来. ns2的安装 查阅网上资料发现ns2可以在cygwin上安装,为了省事就用cygwin安装了n ...

  6. Android 系统(269)---native保活5.0以上方案推演过程以及代码详述

    Android 进程常驻(4)----native保活5.0以上方案推演过程以及代码详述 这是一个轻量级的库,配置几行代码,就可以实现在android上实现进程常驻,也就是在系统强杀下,以及360获取 ...

  7. Android 系统(268)---native保活5.0以下方案推演过程以及代码详述

    Android 进程常驻(3)----native保活5.0以下方案推演过程以及代码详述 这是一个轻量级的库,配置几行代码,就可以实现在android上实现进程常驻,也就是在系统强杀下,以及360获取 ...

  8. AODV协议的运行方式

    (a)AODV路由发现 AODV路由协议是一种典型的按需驱动路由协议,该算法可被称为纯粹的需求路由获取系统,那些不在活跃路径上的节点不会维持任何相关路由信息,也不会参与任何周期路由表的交换.此外,节点 ...

  9. Ad hoc网络路由协议概述4——按需路由协议(2)AODV协议 (Ad-hoc on-demand distance vector algorithm protocol)

    目录 1 一点前言 2 路由发现 2.1 相关概念 2.2 AODV的路由发现过程 2.3 与DSDV协议的对比 3 路由表管理及维护 3.1 更新路由表的策略 4 AODV协议的特点 4.1 优点 ...

  10. AODV协议的NS2仿真

    无线传感网技术团队科研原始记录 姓名:赵亮 时间:2017.12.30 周次:18 记录编号:3 科研方向: 无线传感网 原始记录       本周继续在NS2下进行仿真工作. 1. Trace文件格 ...

最新文章

  1. KMP----next数组 最长相同前后缀 递归求法解释
  2. 吴恩达等ML大神对话:如何用机器学习应对气候变化 | NeurIPS 2019
  3. 应用打包Ubuntu下部署ScriptCase应用一例
  4. android重启应用
  5. xpath IE 7
  6. tomcat端口被占用
  7. centos 7 局域网丢包排查_宽带发生故障怎么办?教你几招轻松排查
  8. java cookie包_Java cookie的使用
  9. Siri背后语音识别巨头Nuance的衰落
  10. Thrift编译错误解决方法
  11. 如何在vue中使用阿里图标库
  12. 利用DHT网络原理制作bt采集蜘蛛
  13. Android开发——项目实例(一)迷你背单词软件
  14. 姓周取名:周姓漂亮有涵养的女孩名字
  15. java treemap的排序_Java TreeMap的排序(转)
  16. HLS 开发学习(五) 稀疏矩阵向量乘法
  17. java-net-php-python-ssm巴音学院餐饮安全与卫生防御管理系统计算机毕业设计程序
  18. 百度地图JSAPI标注旋转
  19. 【最全最详细】publiccms使用教程
  20. FTP主动模式和被动模式!

热门文章

  1. AD教程系列 | 4 - 创建集成库文件
  2. python内点法_最优化问题(三) 之 外点法(罚函数法)
  3. 怎么使用svn下载到本地
  4. 图书管理系统~~学生管理测试用例
  5. 我们短暂的人类世和即将到来的算法世
  6. 这样的科幻不该被埋没,吐血推荐!
  7. FIT2CLOUD飞致云荣膺“2021年度OSCHINA优秀开源技术团队”奖项
  8. Could not read JSON: Cannot construct instance of `java.util.ArrayList$SubList`
  9. css中1cm等于多少px,px和rem换算(1rem等于多少px)
  10. 转载:《算法刷题LeetCode(中文版)》LeetCode题解,151道题完整版