Adhoc网络基于博弈论的按需距离矢量路由协议的制作方法

文档序号:7898945阅读:162来源:国知局
专利名称:Ad hoc网络基于博弈论的按需距离矢量路由协议的制作方法
技术领域
本发明涉及无线网络通信领域的路由实现方法,具体地说,涉及一种Ad hoc网络基于博弈论的按需距离矢量路由协议。
背景技术
Ad hoc网络是一种由若干个具有接收和发送功能的节点构成的无固定的组网设备、多跳传输数据、节点自适应组网的对等式网络。在这种网络中,没有中心控制节点,每个节点地位平等,可以任意移动,并且可以以任何方式动态地保持与其它节点的联系。与需要基础设施的无线网络相比,Ad hoc网络不需要依赖任何固定的网络基础设施就能够实现快速地自动组网,这样就比传统的无线网络更加便捷、灵活、投资廉价,且抗毁性强。Ad hoc网络作为移动网络的一种特殊形式,由于它不需要固定的基站,各节点均可以自由移动,且能实现动态的链接,加上其具有生存性极强、创建与移动极为方便的特点,弥补了蜂窝系统与有线网络的不足,在许多特殊情况下有着不可替代的作用,可以广泛应用于国防战备、航海航空、灾难援救、偏远地区等一些无法得到有线网络支持或只需要建立临时通信的环境。因此,Ad hoc网络在军事和民用通信领域都拥有非常广阔的应用前景。由于Ad hoc网络不依赖任何预先设置的基础设施进行通信,网络中的每个节点不仅是信源或者信宿,同时还要充当路由器对数据包进行转发,要使得其节点能够动态的任意移动,这就要求移动设备尽量小型化。Ad hoc网络是一个能量受限的系统,移动节点大多以电池作为动力,与固定有源节点相比,Ad hoc网络中节点能量供给具有高成本和短时特性,其网络特性与能量消耗密切相关。如何节约和有效地利用节点的有限能量,是Ad hoc网络在实际应用中遇到的一个不可避免而又急待解决的问题。而且这些路由协议在路由过程当中都是假设节点会无偿地转发路由分组,但是实际中的网络并不像理论分析中那样遵循预定的机制进行通信,而是存在许多自私节点。所谓自私节点,就是为了保存自身能量以延长工作寿命而不积极参与网络分组转发甚至路由发现和路由维护的节点。Ad hoc网络中的每个节点都是理智的, 都会为了节约自身的资源而不愿意转发与自身无关的分组,因此就表现出自私性。也正是由于节点这种潜在的“自私”行为,每个节点在决策时都必须考虑其它节点对自己即将做出的行动的反应,也就是说,每个节点的决策将依赖于网络中其它节点(尤其是邻居节点)的行为。Ad hoc网络已经成为近年来国际上前沿和热点的研究领域,并成为无线网络通信技术的一个新的发展方向。路由协议是确保Ad hoc网络运行的关键,作为Ad hoc网络研究领域的热点之一,其研究一直受到广泛地关注。在传统的Ad hoc网络路由协议中,主要以路径经过转发数据的节点的多少作为设计的标准来选择最小跳数的路由,最小跳数路由大多数情况下并不能提供最大的吞吐量,并且由于使路由跳数的最小化导致每一跳传输距离的最大化,从而导致接收端信号强度的最小化和无线链路丢包率的最大化,给网络带来不必要的重传和拥塞。由于忽视了网络中终端节点的能量有限,很有可能导致网络中存在多条最小跳数路径均选择一个关键节点来频繁转发数据,致使该节点能量迅速耗竭。由于
4关键节点过早地停止工作,网络出现分割。分割之后的网络,使得很多节点需要发送数据时无法找到到目的节点的有效路径,从而寻找路由和数据传输失败,网络的整体性能也随之迅速下降。这种现象在以缺乏持续供电设备为特点的Ad hoc网络中尤其突出。

发明内容
本发明的目的是提供一种根据节点信誉度和能量剩余值来选择链路的Ad hoc网络基于博弈论的按需距离矢量路由协议。Ad hoc网络基于博弈论的按需距离矢量路由协议,包括下列步骤
1)各个节点通过监控邻居节点的接发报文数,建立信誉度监控机制;
2)源节点选择至少一个邻居节点发送包括信誉度门限值、能量状态门限值和路由基本信息的路由请求数据包;
3)邻居节点根据数据包中路由基本信息判断是否处理过相同路由请求数据包 如果是,则丢弃该路由请求数据包;
如果不是,则节点根据路由请求数据包中路由基本信息更新路由表;
4)邻居节点根据路由基本信息判断自己为目的节点或者中间节点
如果该节点为目的节点,则从路由表中选择自身状态效用值最大的链路,向源节点单播包含多个参数的响应报文;
如果该节点为中间节点,则将当前能量状态值和能量状态门限值做比较,若少于能量状态门限值则丢弃路由请求数据包,若大于则将信誉表里上一跳节点的信誉度与信誉度门限值相比较,若低于信誉度门限值则将其判断为自私节点并对其实施提高节点信誉度的激励机制,并转步骤5),否则接受该路由请求数据包并转步骤5);
5)中间节点检测自身路由表,若有到达目的节点的有效路由,则向上一跳节点返回包含多个参数的响应报文,若没有则将自身状态效用值累加到所述路由请求数据包并转发;
6)源节点接收包含多个参数的响应报文,根据响应报文的信息更新自身路由表,并开始向目的节点发送数据;
7)链路上各个节点周期性向邻居节点广播HELLO包,在预设时间内没有收到邻居节点返回的响应,则认为通向该邻居节点的链路断开,节点不可达,然后向该不可达节点发送 RREQ包进行链路修复,若有到不可达节点有效路由的中间节点或不可达节点收到RREQ包后就回复一个RREP包给发送RREQ包的节点,路由重新建立,如果链路修复失败,该发送 RREQ包的节点就向所有邻居节点广播RERR包。所述RERR包中的不可达节点列表不仅包括了链路断开的邻居节点,还包括了以这个节点为下一跳路由的目的节点。通过广播RERR包,网络内的其它节点就知道链路已经断开了。所述步骤1)中的信誉度监控方法为各个节点设置第一和第二计数器,第一计数器用于计算邻居节点接收到的数据包数
《⑴,第二计数器用于计算邻居节点转发数据包的数,然后计算出邻居节点信誉
P f (t)
度,所述信誉度为Gl ( ) = 二 ,,,最后各个节点根据信誉度值更新自身信誉表。
当前节点为上一跳邻居节点转发数据包后,只有所述上一跳邻居节点会更新当前节点的信誉度,其余邻居节点只作监听。步骤3)中,所述判断方法为邻居节点创建到上一跳节点的反向路由,然后查找自身路由表和数据包中的信息,若自身路由表中存在该反向路由则丢弃该数据包。步骤3)中,更新路由表的方法包括从自身路由表中查找通往源节点的反向路由,如果没有,该节点利用路由请求数据包中的源节点序列号作为路由表项中的目的节点序列号,建立一条通向源节点的反向路由;如果有,当路由请求数据包中的源节点序列号比节点路由表项中保存的大或相同,但路由请求数据包中的的链路自身状态效用值比节点路由表项中保存的大时,则对反向路由表项进行更新。步骤4)中目的节点接收到所述路由请求数据包后,立刻启动计时器,预设时间内重复检查自身路由表,从中选择一条自身状态效用值最大的最佳链路,当计时器超时,则向源节点单播响应报文。步骤4)中对自私节点实施激励机制。若自私节点选择转发数据包,则它的上一跳节点更新自身信誉表,为其增加一定的信誉度作为补偿。步骤5)中当前节点的路由表中存在到达目的节点的有效路由,就生成一个包含多个参数的路由响应报文,中间节点把目的节点IP地址和序列号拷贝到响应报文里的相应字段,并把发来路由请求数据包的上一跳节点放入正向路由表项中的前驱节点字段,而把到目的节点的下一跳节点放入反向路由表项中的前驱节点字段,以此来更新路由表项,然后向上一跳节点发送该包含多个参数的路由响应报文。中间节点响应路由请求数据包时,检查路由请求数据包的G标志是否被置位如果未置位,则只需向源节点单播该路由响应报文,如果被置位,则向源节点单播路由响应报文后,还要向目的节点单播一个无请求路由响应报文,以通知目的节点创建一条通往源节点的路由;
中间节点接收包含多个参数的响应报文时,首先查找是否有到达上一跳节点的路由, 若没有,则创建一条到达目的节点的正向路由,否则当满足响应报文中的源节点序列号比节点路由表项中保存的大,或者序列号相同,但包含多个参数的响应报文中的链路自身状态效用值比节点路由表项中保存的大时,则更新正向路由表项,同时,将通往源节点反向路由表项中的前驱节点设为发来包含多个参数的响应报文的上一跳节点。步骤6)中还包括
6. 1)源节点接收到包含多个参数的响应报文,根据响应报文中的路由信息判断是否为对应于同一个路由请求数据包的不同响应报文,如果是则转步骤6. 2),不是则转步骤 6. 3)
6. 2)如果是,则与其他对应于同一个路由请求数据包的不同响应报文中的链路自身状态效用值相比较,若是小于,则丢弃,否则转步骤6. 3)
6.3)比较响应报文和路由请求数据包中目的节点序列号的大小,若是响应报文中的目的节点序列号大于或等于路由请求数据包中目的节点序列号,则源节点更新自身路由表, 否则丢弃响应报文。与现有技术相比,本发明的优点在于
该路由协议带有对自私节点的检测机制,并在路由准则,自身状态效用函数的选取上,充分考虑到节点的能量状态和节点的自私行为的密切关联性,定义其为节点的剩余能量和信誉度的函数。该路由协议很好地解决了节点的剩余能量与自私行为之间的矛盾,选用自身状态效用函数最大的链路为最佳链路,这也是最可靠,最有保障的传输路径。


图1为本发明的请求过程; 图2为本发明的响应过程;
图3为本发明实施例示意图。
具体实施例方式一种Ad hoc网络基于博弈论的按需距离矢量路由协议,包括 1.路由发现
AODV-GT路由协议的路由发现过程如下 (1)产生路由请求
当节点需要和网络中的某个节点通信而又没有到此目的节点的有效路径时,AODV-GT 路由协议就启动路由发现过程,它会广播一个带有路由基本信息的RREQ包。在广播该RREQ 包之前,源节点会缓存该路由请求的识别码(RREQ ID)和源节点自己的IP地址(两者联合起来标志一个唯一的RREQ包)。当该节点再次收到从邻居节点转发过来的同样的RREQ包时,就直接将其丢弃。(2)处理并转发路由请求
当中间节点收到RREQ包,首先创建到上一跳节点(广播RREQ的邻居节点)的路由。然后判断是否处理过相同的RREQ包, 如果是,则丢弃该信息包,
否则在节点路由表中查找是否有一条通往源节点的反向路由, 如果没有,该节点利用RREQ包中的源节点序列号作为路由表项中的目的节点序列号, 建立一条通向源节点的反向路由,当节点收到RREP包而要传送给发送RREQ包的源节点时需要使用这条反向路由。如果有,当RREQ包中的源节点序列号比节点路由表项中保存的大,或者序列号相同,但RREQ包中的链路自身状态效用值比节点路由表项中保存的大时,则对反向路由表项进行更新。如果当前节点不是目的节点,节点先把当前能量状态与RREQ包里的能量状态门限值进行比较,如果小,就直接丢弃RREQ包,说明此节点能量太低,不具备转发数据的能力,即使参与合作,通信质量太差,没有任何保证。如果大,再把信誉表里的信誉度跟RREQ 包里的信誉度门限值进行比较,
如果大,节点就把自己的自身状态效用值累加到RREQ包的链路自身状态效用的字段里,对其进行更新,并向所有邻居节点转发更新后的RREQ包;
如果小,该节点被认为是自私节点,但它具有一定的数据转发的能量,为了得到更多的通信链路,这时就对这样的自私节点进行信誉度激励,使之参与路由发现。(3)产生路由应答
7如果当前节点的路由表中存在到达目的节点的有效路由,就生成一个路由应答RREP 包。中间节点把目的节点IP地址和序列号拷贝到RREP包里的相应字段,并把发来RREQ包的上一跳节点放入正向路由表项中的前驱节点字段,而把到目的节点的下一跳节点放入反向路由表项中的前驱节点字段,以此来更新路由表项。若是中间节点回复路由应答,那还要检查RREQ包的G标志是否被置位如果未置位,则只需向源节点单播该RREP包,如果被置位,则向源节点单播RREP包后,还要向目的节点单播一个无请求RREP包,以通知目的节点创建一条通往源节点的路由。如果当前节点就是目的节点,立即启动计时器,设置一个等待时间,这个等待时间
同看门狗的监听周期 ; 一样长。在等待时间里,目的节点在多跳链路中选择一条自身状
态效用值最大的最佳链路。当计时器超时,目的节点马上产生路由应答RREP包,并设置好 RREP包里的相应字段,然后沿着这条最佳链路向源节点单播该包。(4)处理并转发路由应答
收到RREP包的中间节点,首先查找是否有到达上一跳节点的路由,若没有,则创建一条到达目的节点的正向路由。否则,看节点路由表中该正向路由表项是否需要更新。当满足RREP包中的源节点序列号比节点路由表项中保存的大,或者序列号相同,但RREP包中的链路自身状态效用值比节点路由表项中保存的大时,则更新正向路由表项。同时,将通往源节点反向路由表项中的前驱节点设为发来RREP的上一跳节点。如果当前节点不是源节点,则找出路由表中通向源节点的反向路由(在处理RREQ 包时已建立,这时刚好要用到),节点根据反向路由的表项信息,决定接下来将RREP包单播给哪个节点。若当前节点是源节点,它就可立即使用该正向路由来进行数据发送。AODV-GT路由协议的路由请求和路由应答过程分别如图2和图3所示。2.路由维护
由于Ad hoc网络具有动态拓扑的特点,已经建立的路由随着节点的移动会发生改变, 网络中任何节点的关闭或移动都会导致部分链路的断裂和新链路的产生。因此路由维护在 Ad hoc网络通信中也是非常重要的。路由维护是对Ad hoc网络中的通信链路进行监测和修复,保证通信链路的连通性。在AODV-GT路由协议中,路由维护包括定期发送HELLO包、链路修复及修复失败后发送 RERR包以通知该链路断开。活跃路由上的节点通过周期性地向邻居节点广播HELLO包来检查该路由上各段链路的连接情况,非活跃路由上的节点则不需要。如果一定时间后,邻居节点还收不到再次确认连接的HELLO包,则该节点就认为这条链路断开,广播RREQ包给这个不可达的邻居节点开始进行链路修复过程。当有到不可达节点有效路由的中间节点或不可达节点收到此 RREQ包后就回复一个RREP包给该节点,这样链路就修复成功,路由重新建立。如果链路修复失败,该节点就向所有邻居节点广播RERR包,RERR包中的不可达节点列表不仅包括了链路断开的邻居节点,还包括了以这个节点为下一跳路由的目的节点。通过广播RERR包,网络内的其它节点就知道链路已经断开了。其中每个节点使用看门狗机制来监听信号范围内所有邻居节点的行为。看门狗用两个计数器1和2来跟踪每个邻居节点,计数器1记录节点j收到的从节点i发送过来需要转发的数据包的数量,用《ω表示;计数器2记录节点j成功为节点
i转发的数据包的数量,用¥⑴表示。这两个值在监听过程中保持更新。如图3所示,当节点i要向节点η发送数据包时,就需要通过中间节点j的转发。 节点i把数据包发送给节点j,节点e、f、g和i都会在节点j转发数据包给节点η的同时监听节点j的行为。它们把监听到的要发送的数据包拷贝到自己的缓存区里,缓存区里每
增加一个数据包,计数器1就加1,如果在每个包的转发时间~内,节点j转发一个数据包,
监听节点就会从缓存区里移除一个数据包,计数器2就加1。若超出转发时间%,则计数器
2的值不变,但继续从缓存区里移除数据包。把节点j在节点i的信誉度定义为
权利要求
1.一种Ad hoc网络基于博弈论的按需距离矢量路由协议,其特征在于,包括下列步骤1)各个节点通过监控邻居节点的接发报文数,建立信誉度监控机制;2)源节点选择至少一个邻居节点发送包括信誉度门限值、能量状态门限值和路由基本信息的路由请求数据包;3)邻居节点根据数据包中路由基本信息判断是否处理过相同路由请求数据包 如果是,则丢弃该路由请求数据包;如果不是,则节点根据路由请求数据包中路由基本信息更新路由表;4)邻居节点根据路由基本信息判断自己为目的节点还是中间节点如果该节点为目的节点,则从路由表中选择自身状态效用值最大的链路,向源节点单播包含多个参数的响应报文;如果该节点为中间节点,则将当前能量状态值和能量状态门限值做比较,若少于能量状态门限值则丢弃路由请求数据包,若大于则将信誉表里上一跳节点的信誉度与信誉度门限值做比较,若低于信誉度门限值则将其判断为自私节点并对其实施提高节点信誉度的激励机制,并转步骤5),否则接受该路由请求数据包并转步骤5);5)中间节点检测自身路由表,若有到达目的节点的有效路由,则向上一跳节点返回包含多个参数的响应报文,若没有则将自身状态效用值累加到所述路由请求数据包并转发;6)源节点接收包含多个参数的响应报文,根据响应报文的信息更新自身路由表,并开始向目的节点发送数据;7)链路上各个节点周期性向邻居节点广播HELLO包,在预设时间内没有收到邻居节点返回的响应,则认为通向该邻居节点的链路断开,节点不可达,然后向该不可达节点发送 RREQ包进行链路修复,若有到不可达节点有效路由的中间节点或不可达节点收到RREQ包后就回复一个RREP包给发送RREQ包的节点,路由重新建立,如果链路修复失败,该发送 RREQ包的节点就向所有邻居节点广播RERR包。
2.根据权利要求1所述的Adhoc网络基于博弈论的按需距离矢量路由协议,其特征在于,所述步骤1)中的信誉度监控方法为各个节点设置第一和第二计数器,第一计数器用于计算邻居节点接收到的数据包数^ ω,第二计数器用于计算邻居节点转发的数据包数W,然后计算出邻居节点信誉 度,所述信誉度为
3.根据权利要求2所述的Adhoc网络基于博弈论的按需距离矢量路由协议,其特征在于,当前节点为上一跳邻居节点转发数据包后,只有所述上一跳邻居节点会更新当前节点的信誉度,其余邻居节点只作监听。
4.根据权利要求1所述的Adhoc网络基于博弈论的按需距离矢量路由协议,其特征在于,步骤3)中,所述判断方法为邻居节点创建到上一跳节点的反向路由,然后查找自身路由表和数据包中的信息,若自身路由表中存在该反向路由则丢弃该数据包。
5.根据权利要求1所述的Adhoc网络基于博弈论的按需距离矢量路由协议,其特征在于,步骤3)中,更新路由表的方法包括从自身路由表中查找通往源节点的反向路由,如果没有,该节点利用路由请求数据包中的源节点序列号作为路由表项中的目的节点序列号, 建立一条通向源节点的反向路由;如果有,当路由请求数据包中的源节点序列号比节点路由表项中保存的大或相同,但路由请求数据包中的链路自身状态效用值比节点路由表项中保存的大时,则对反向路由表项进行更新。
6.根据权利要求1所述的Adhoc网络基于博弈论的按需距离矢量路由协议,其特征在于,步骤4)中目的节点接收到所述路由请求数据包后,立刻启动计时器,预设时间内重复检查自身路由表,从中选择一条自身状态效用值最大的最佳链路,当计时器超时,则向源节点单播响应报文。
7.根据权利要求1所述的Adhoc网络基于博弈论的按需距离矢量路由协议,其特征在于,所述步骤4)中对自私节点实施激励机制,若自私节点选择转发数据包,则它的上一跳节点更新自身信誉表,为其增加一定的信誉度作为补偿。
8 根据权利要求1所述的Adhoc网络基于博弈论的按需距离矢量路由协议,其特征在于,步骤5)中当前节点的路由表中存在到达目的节点的有效路由,就生成一个包含多个参数的路由响应报文,中间节点把目的节点IP地址和序列号拷贝到响应报文里的相应字段, 并把发来路由请求数据包的上一跳节点放入正向路由表项中的前驱节点字段,而把到目的节点的下一跳节点放入反向路由表项中的前驱节点字段,以此来更新路由表项,然后向上一跳节点发送该包含多个参数的路由响应报文。
9.根据权利要求8所述的Adhoc网络基于博弈论的按需距离矢量路由协议,其特征在于中间节点响应路由请求数据包时,检查路由请求数据包的G标志是否被置位如果未置位,则只需向源节点单播该路由响应报文,如果被置位,则向源节点单播路由响应报文后,还要向目的节点单播一个无请求路由响应报文,以通知目的节点创建一条通往源节点的路由;中间节点接收包含多个参数的响应报文时,首先查找是否有到达上一跳节点的路由, 若没有,则创建一条到达目的节点的正向路由,否则当满足响应报文中的源节点序列号比节点路由表项中保存的大,或者序列号相同,但包含多个参数的响应报文中的链路自身状态效用值比节点路由表项中保存的大时,则更新正向路由表项,同时,将通往源节点反向路由表项中的前驱节点设为发来包含多个参数的响应报文的上一跳节点。
10.根据权利要求1所述的Adhoc网络基于博弈论的按需距离矢量路由协议,其特征在于,所述步骤6)还包括·6. 1)源节点接收到包含多个参数的响应报文,根据响应报文中的路由信息判断是否为对应于同一个路由请求数据包的不同响应报文,如果是则转步骤6. 2),不是则转步骤 ·6. 3);·6. 2)如果是,则与其他对应于同一个路由请求数据包的不同响应报文中的链路自身状态效用值相比较,若是小于,则丢弃,否则转步骤6. 3);·6.3)比较响应报文和路由请求数据包中目的节点序列号的大小,若是响应报文中的目的节点序列号大于或等于路由请求数据包中目的节点序列号,则源节点更新自身路由表, 否则丢弃响应报文。
全文摘要
本发明根据博弈论模型下节点自私行为的分析结果,设计出了一种基于博弈论的按需距离矢量路由协议。该路由协议带有对自私节点的检测机制,并在路由准则(自身状态效用函数)的选取上,充分考虑到节点的能量状态和节点的自私行为的密切关联性,定义其为节点的剩余能量和信誉度的函数。该路由协议很好地解决了节点的剩余能量与自私行为之间的矛盾,选用自身状态效用函数最大的链路为最佳链路,这也是最可靠,最有保障的传输路径。
文档编号H04W40/10GK102271380SQ20111025822
公开日2011年12月7日 申请日期2011年9月2日 优先权日2011年9月2日
发明者周杰英, 赵环, 邓义晖, 郭长飞, 雷淳, 黄安泓 申请人:中山大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1