支持携带存储转发机制的移动自组织网络路由方法与流程

文档序号:15594287发布日期:2018-10-02 19:19阅读:407来源:国知局
本发明属于无线传感器网络和移动自组织网络
技术领域
:,涉及一种支持存储携带转发机制的移动自组织网络路由协议的设计与实现。具体讲,涉及支持携带存储转发机制的移动自组织网络路由协议。
背景技术
::现有的移动自组织网络路由协议都是针对单一场景而设计的,例如manet(移动自组织网络)协议是针对全连通的场景而设计的,在缺乏端到端路径情况下manet协议不能正常工作;dtn(时延容忍网络)在全连通的场景下路由效率并不高并且应用程序的开发要面向bundle(覆盖层)接口。因此针对间歇性和全连通共存的场景,本发明借鉴dtn存储-携带-转发机制,设计了一种具备容断能力的manet路由协议——scfp(支持携带存储转发机制的移动自组织网络路由协议)协议。现有的国内外对dtn与manet路由相结合方面的研究大致可以分为两类:1)基于manet和dtn整合方法;2)根据网络环境,在dtn和manet之间进行自适应切换。基于dtn和manet整合的方法,文献[1]-文献[6](文献[1]:ottj,kutscherd和warmanc于2006年公开的《integratingdtnandmanetrouting》;文献[2]:kretschmerc,rhrups和schindelhauerc于2009年公开的《dt-dymo:delay-tolerantdynamicmaneton-demandrouting》;文献[3]:johnw和vaniac于2010年公开的《hymad:hybriddtn-manetroutingfordenseandhighlydynamicwirelessnetworks》;文献[4]:espositof和mattai于2009年公开的《preda:predicateroutingfordtnarchitecturesovermanet》;文献[5]:samuelh和zhuangw于2009年公开的《preissb.dtnbaseddominatingsetroutingformanetinheterogeneouswirelessnetworking》;文献[6]:pantr,tupana和mekbungwanpetal于2010年公开的《dtnoverlayonolsrnetwork》)是将dtn和manet协议进行结合,利用manet和dtn工作在不同的协议层实现两者的相互补充。在网络场景中,网络整体上是不连通的,但在一个小范围内的节点可以组成一个相对稳定的拓扑结构,这些稳定区域可以采用manet协议进行路由,而这些小范围的拓扑之间可以采用dtn路由协议。这类方法所针对的网络场景本质上仍为间歇性连接场景,manet协议只是利用此场景下部分节点的局部连接特性来减小数据传输延迟。因此,需要对现有的manet和dtn协议进行修改,使二者路由信息能够彼此获知,使得此种方式不具有普适性。自适应切换方法,文献[7]-文献[12](文献[7]:tiex,venkataramania和balasubramaniana于2011年公开的《r3:robustreplicationroutinginwirelessnetworkswithdiverseconnectivitycharacteristics》;文献[8]:kawamotoy,nishiyamah和katon于2013年公开的《towardterminal-to-terminalcommunicationnetworks:ahybridmanetanddtnapproach》;文献[9]:itom,nishiyamah和katon于2013年公开的《anovelroutingmethodforimprovingmessagedeliverydelayinhybriddtn-manetnetworks》;文献[10]:musolesim,hailess和mascoloc于2005年公开的《context-awareadaptiveroutingfordelaytolerantmobilenetworks》;文献[11]:delosieresl和nadjm-tehranis于2012年公开的《batmanstore-and-forward:thebestofthetwoworlds》;文献[12]:xiaoshanchang,zenghuazhao,bingxuediao和taoli于2016年公开的《experimentalstudyofdisruption-toleranttransportprotocolformobileadhocnetworkswithconnectiondiversity》)需要节点根据所处的网络环境进行自适应切换,这就要求节点能够对网络环境做出准确判断,因而会导致数据传输延迟较高。这两类方法都需要节点同时运行manet和dtn协议,对无线节点来说不仅意味着过高的能耗,而且协议切换时需要对数据包格式进行转换,这不可避免造成效率上的损失。此外,使用dtn协议时应用程序面向的是bundle接口,对于大多数的互联网用户来说更希望面向socket(套接字)编程。文献[13](张万松,王师原,徐悦竹和印桂生于2014年公开的《一种在dtn网络中基于节点属性模型的散发等待路由方法》)判定所有邻节点的运动夹角,并根据节点运动属性模型公式确定源节点向该邻节点传递消息副本的个数。此方法导致一个消息存在多个副本造成了数据冗余,且节点运动夹角具有瞬时性,不能确保该节点始终按一个方向运动,因此不能保证数据包能够准确投递给目的节点。文献[14](王占伟和邹光楠于2015年公开的《一种面向空间环境dtn网络的数据转发方法》)通过查询周期性构建的虚拟拓扑路由表寻找接收节点,当接收节点处于空闲状态时,发送节点的bundle层构造bundle块根据路由算法进行数据转发。若没有接收节点则启动bundle层的托管机制等待可用的下一跳连接。该发明中路由表不具有实时性,且每次查询只选择一个接收节点,不能确保网络获得较好的投递率。现有的中国发明专利,文献[15](李长乐,董伟伟和郭涛于2016年公开的《基于链路质量和节点转发能力的路由协议涉及方法》)采用机会转发方式,根据优先级表确定邻节点集,转发过程中一次选择一个优先级最高的节点作为中继节点进行数据的转发,若此次转发失败,则重新选取次优节点再次进行转发。此方法虽然采用了机会转发方式选择了邻节点集,但在数据转发过程中仍然只选取一个节点进行数据转发,转发失败时需要源节点重启邻节点选取机制,再次进行数据转发,因此增加了端到端时延且造成了网络资源的浪费。本发明提出的scfp选取转发节点集后,每个节点都将接收到需转发数据,优先级最高的节点转发失败后次优节点立即转发,因此降低了端到端时延,且无需源节点重新发送数据而节省了网络资源。【参考文献】[1]ottj,kutscherd,warmanc.integratingdtnandmanetrouting[c]proceedingsofthe2006sigcommworkshoponchallengednetworks.acm,2006:221-228.[2]kretschmerc,rhrups,schindelhauerc.dt-dymo:delay-tolerantdynamicmaneton-demandrouting[a].the29thieeeinternationalconferenceondistributedcomputingsystemsworkshops[c].montreal,quebec,canada,2009.493-498.[3]johnw,vaniac.hymad:hybriddtn-manetroutingfordenseandhighlydynamicwirelessnetworks[j].computercommunications,2010,33(13):1483-1492.[4]espositof,mattai.preda:predicateroutingfordtnarchitecturesovermanet[a].proceedingsofthe28thieeeconferenceonglobaltelecommunications,globecom'09[c].2009.5018-5023.[5]samuelh,zhuangw,preissb.dtnbaseddominatingsetroutingformanetinheterogeneouswirelessnetworking[j].mobilenetworksandapplications,2009,14(2):154-164.[6]pantr,tupana,mekbungwanpetal.dtnoverlayonolsrnetwork[c]//proceedingsofthesixthasianinternetengineeringconference.acm,2010:56-63.[7]tiex,venkataramania,balasubramaniana.r3:robustreplicationroutinginwirelessnetworkswithdiverseconnectivitycharacteristics[c]//proceedingsofthe17thannualinternationalconferenceonmobilecomputingandnetworking.acm,2011:181-192.[8]kawamotoy,nishiyamah,katon.towardterminal-to-terminalcommunicationnetworks:ahybridmanetanddtnapproach[c].computeraidedmodelinganddesignofcommunicationlinksandnetworks(camad),2013ieee18thinternationalworkshopon.ieee,2013:228-232.[9]itom,nishiyamah,katon.anovelroutingmethodforimprovingmessagedeliverydelayinhybriddtn-manetnetworks[c]globalcommunicationsconference(globecom),2013ieee.ieee,2013:72-77.[10]musolesim,hailess,mascoloc.context-awareadaptiveroutingfordelaytolerantmobilenetworks[c]proc.wowmom.2005.[11]delosieresl,nadjm-tehranis.batmanstore-and-forward:thebestofthetwoworlds[c]//pervasivecomputingandcommunicationsworkshops(percomworkshops),2012ieeeinternationalconferenceon.ieee,2012:721-727.[12]xiaoshanchang,zenghuazhao,bingxuediao,taoli.experimentalstudyofdisruption-toleranttransportprotocolformobileadhocnetworkswithconnectiondiversity.inproceedingsofispaaugust2016.[13]张万松,王师原,徐悦竹,印桂生.一种在dtn网络中基于节点属性模型的散发等待路由方法[p].中国发明专利,cn104168189a.2014-11-26.[14]王占伟,邹光南.一种面向空间环境dtn网络的数据转发方法[p].中国发明专利,cn102883397b.2015-07-08.[15]李长乐,董伟伟,郭涛.基于链路质量和节点转发能力的路由协议涉及方法[p].中国发明专利,cn105657777a.2016-06-08。技术实现要素:为克服现有技术的不足,本发明旨在提出一种支持存储携带转发机制的移动自组织网络路由协议,用于解决目前现有的无线自组织网络路由协议在其所针对的场景外不能高效工作的问题。为此,本发明采用的技术方案是,支持携带存储转发机制的移动自组织网络路由方法,使用传输控制协议/用户数据报协议socket接口,节点通过邻居探测机制构建出优先级转发表;机会转发方式通过查询优先级转发表选取转发节点集;若数据转发失败,则网络处于间歇性连接状态,此时实现数据的网络层存储;周期性的邻居探测机制探测到网络恢复全连通状态时,则对数据进行重新封装及转发;其中,基于优先级的机会转发具体步骤如下:1.1路由度量设计路由度量routingmetric是路由算法用以确定到达目的节点最佳路径的度量标准,在间歇性连接与全连通并存的网络场景下,路由度量需要满足3个条件:1)路由度量能够反应全连通和间歇性连接的网络特性,保证最佳的路由性能;2)尽可能小的路由开销;3)路由过程不产生回路;综合考虑全连通状态下链路时延、间歇性连接状态下最小期望延迟估计、节点存储能力三个指标,路由开销计算公式为cost=ω1delaynorm+ω2meednorm+ω3buffernorm(1)其中ω1、ω2、ω3为权重,根据scfp协议实际的运行环境选取;由于三个指标之间存在不同的量纲,因此delaynorm、meednorm,buffernorm分别为归一化处理后的传输延迟、最小期望延迟估计和节点存储空间,最小估计期望延迟meed是在最小期望延迟med基础上经过指数滑动平均处理得到的,两个节点接触状态与等待时延的关系,当接触状态up时,意味着节点彼此进入对方的通信范围,等待时延变为0,对应的meed值计算公式如下:d=αd+(1-α)di(2)c=βc+(1-β)ci(3)其中di为断开的时间间隔,ci为连通的时间,d为平均不连通时间,c为平均连通时间,α,β为调和因子;1.2机会转发节点根据优先级转发表选择到目的节点开销最低的几个节点作为转发子集,并将排序结果放在数据包的头部,收到数据包的节点按照定义好的顺序进行转发,优先级最高的节点在收到数据包后立即回复ack并向下一个转发子集转发数据,优先级低的节点将数据放入发送缓冲区等待twait时间,发送缓冲区定义为等待转发的数据,在twait时间内侦听到高优先级节点发送ack则丢弃已收到的数据包,反之,优先级次之的节点回复ack并转发数据,转发子集中节点的相互协调需要彼此间能够侦听到,但存在转发节点不存在直接邻接关系的情况,造成数据的重复发送,为此,每个节点记录过去一段时间本节点转发的数据包,一个数据包用包括源地址、目的地址和id的三元组做唯一标识,其中id为源节点生成的数据包编号,转发过程中保持不变,节点在收到数据时先查询是否收到过该数据包,如果收到过则丢弃数据包,反之使数据包进入机会转发流程。网络层数据的存储和转发节点按照转发策略进行转发时,如果经过多次重传仍没有发送成功,则认为网络发生了间歇性中断,因此当前节点为最优的数据存储节点,存储策略是按照数据的目的地址进行存储的,即把发往同一目的节点的数据包存储到同一个文件中,存储区管理策略如下:1)基于优先级策略:根据数据包到达目的节点路径代价设置优先级,通过查询优先级表得到,到达目的节点的代价越高,优先级越低。在节点存储空间紧张的情况下,保留优先级高的消息,优先级低的消息被丢弃;2)相同优先级清除策略:对于优先级相同的节点,根据数据存入时间进行清除,在节点存储空间不足的情况下,越早存入的数据先被清除;节点通过邻居探测机制探测到目的节点出现或者有到达目的的路径时,从存储的文件中读取数据封装成标准数据格式,进行重新转发,在将存储的数据恢复为标准的格式时是将数据重新填充到数据data和尾tail之间,内核线程负责打开存储数据的文件,将文件读取到一个缓冲区,然后创建sk_buff结构体,将数据拷贝到相应的数据存储区,sk_buffer是linuxtcp/ip堆栈中用于管理数据缓存的结构。网络状态维护采用邻居探测机制对网路进行维护,邻居探测机制有两个作用:1)邻居节点根据上文中的路由度量计算出本节点和邻居节点之间的链路开销,为优先级转发表的构建提供数据;2)当网络由间歇性连接恢复为全连通时通过邻居探测机制发现到达目的节点的路径,实现存储数据包的重传;优先级转发表记录节点经由各个邻居节点到达目的节点的路径开销,为此需要每个节点运行邻居探测机制了解本节点与邻居节点之间的直连链路开销,节点之间通过交换各自了解的信息和运行相应的算法构建出优先级转发表;邻居探测机制可通过周期性发送hello分组和接收邻居节点返回helloack分组实现链路开销的计算,具体通过三种方式:1)只在节点计算出与邻居节点之间的链路开销变化幅度超过20%时发送更新报文;2)在本节点向邻居节点发送数据包过程中停止发送hello分组;3)当链路不存在时推迟路由更新产生,直到本节点与邻居节点链路恢复时间超过预定值。机会转发中在网络发生间歇性中断或者由于外界干扰导致数据包转发失败的情况下,需要节点对于转发出去的数据在维护缓冲区放置,如果在规定时间内收到下一组转发节点的ack,表明数据转发成功,节点可将该数据删除,反之节点对数据包进行重传;重传规则如下:1)scfp协议从优先级表中选择一组比原先转发子集次之的节点作为新的转发子集替换原先的转发子集;2)如果转发节点较少无法产生新的转发子集,继续采用原有的转发子集;3)设定重传次数为2次;如果数据包经过多次重传仍然没有发送成功,则可以认为此时网络发生了间歇性中断,scfp协议进入网络层存储阶段。本发明的特点及有益效果是:本发明针对的是间歇性连接与全连通共存的网络场景,在此种环境下,现有的路由协议均不能取得较好的性能。对于manet协议不具有极端环境下处理方案的问题,本发明在传统manet路由协议基础上实现了dtn存储-携带-转发机制,提高了网络的可靠性。并为所针对场景设计了新的路由度量,以充分反映该种网络的特性。此外,路由过程中节点采用机会转发的方式转发数据,提高了网络的投递率并降低网络时延。附图说明:附图1是scfp功能模块图;附图2是meed等待时延与接触状态;附图3是机会转发流程;附图4是实验床拓扑结构;附图5是仿真场景一;附图6是仿真场景而节点运动轨迹;附图7吞吐率比较图。(a)是1跳吞吐率,(b)是2跳吞吐率,(c)是3跳吞吐率;附图8是实验二投递率比较;附图9是仿真场景一中不同跳数下的投递率;附图10不同节点通信性能示意图。(a)是仿真场景二中不同节点密度下端到端时延,(b)是不同节点密度下投递率,(c)是不同节点密度下转发次数;附图11是滑动窗口;附图12是优先级格式;附图13是sk_buff结构图;附图14是缓冲区结构图;附图15是scfp在协议栈中的位置;附图16scfp分组示意图。(a)是scfp分组格式,(b)是scfp固定头部;附图17是scfp模块在openwrt内核中的位置。具体实施方式本发明提供如下技术方案:支持存储携带转发机制的移动自组织网络scfp路由协议,在该方法中针对节点稀疏且大部分时间处于全连通状态,某些时刻处于间歇性连接状态下的网络场景,旨在全连通场景下获得较高的吞吐率;在间歇性连接场景下提高投递率;保持应用层接口不变,仍然使用tcp/udp(传输控制协议/用户数据报协议)socket接口。scfp协议必须在网络层实现存储-携带-转发功能,才能对应用层保持透明。scfp路由流程图及总体功能模块如附图1,节点通过邻居探测机制构建出优先级转发;机会转发方式通过查询优先级转发表选取转发节点集;若数据转发失败,则网络处于间歇性连接状态,此时实现数据的网络层存储;周期性的邻居探测机制探测到网络恢复全连通状态时,则对数据进行重新封装及转发。scfp设计需要解决如下几个问题:1)scfp协议采用机会转发的方式根据优先级转发表选择一组节点作为转发节点并安排好个节点的转发次序,提高数据转发成功的概率。在转发子集中,优先级最高的节点收到数据后立即转发并回复ack(确认字符),若为转发成功则优先级次之节点重复上述动作。2)scfp协议在网络发生间歇性中断的情况下,为了减少数据的丢失,在网络层对数据进行存储和管理。当节点存储数据时,需要频繁探测到目的节点的路径是否恢复,如果网络恢复到全连通状态,那么节点重新发送存储的数据。3)scfp协议针对的是间歇性连接与全连通并存的场景,使每个节点只维护到目的节点的状态估计,并不对数据能否成功转发到目的节点做出保证,以此来解决路由频繁更新的问题。在此场景下,现有的路由度量已不再适用,需要设计出满足此种场景下网络特性且开销较小,不产生回路的新的路由度量。scfp具体设计分为以下几个部分:1.基于优先级的机会转发scfp摒弃传统manet确定下一跳的路由方式,采用机会转发方式充分利用无线信道的广播特性选择下一跳转发节点集来完成转发,从而提高传输的可靠性。此外,机会转发可以减少数据包转发的次数,从而间接提高网络的吞吐率。采用机会转发的方式需要解决两个问题:1)如何为转发节点分配转发次序。2)由于可能会有多个转发节点同时接收到数据,为避免数据重复发送以及节点同时发送造成的冲突碰撞需要对转发节点进行协调。因此,针对我们所研究的场景设计新的路由度量来充分体现场景特性,以此构建优先级转发表来解决问题一,通过引入ack机制解决问题二。1.1路由度量设计路由度量(routingmetric)是路由算法用以确定到达目的节点最佳路径的度量标准,在间歇性连接与全连通并存的网络场景下,路由度量需要满足3个条件:1)路由度量能够反应全连通和间歇性连接的网络特性,保证最佳的路由性能。2)尽可能小的路由开销。3)路由过程不产生回路。综合考虑全连通状态下链路时延、间歇性连接状态下最小期望延迟估计、节点存储能力三个指标,路由开销计算公式为cost=ω1delaynorm+ω2meednorm+ω3buffernorm(1)其中ω1、ω2、ω3为权重,根据scfp协议实际的运行环境选取,当网络大部分时间处于全连通状态时ω1比例较高,反之则ω2、ω3比例较高。由于三个指标之间存在不同的量纲,因此delaynorm、meednorm,buffernorm分别为归一化处理后的传输延迟、最小期望延迟估计和节点存储空间。最小估计期望延迟(meed)是在最小期望延迟(med)基础上经过指数滑动平均处理得到的,以减少med值频繁变化造成路由不稳定的情况。meed计算方法如附图2,两个节点接触状态与等待时延的关系,当接触状态up时,意味着节点彼此进入对方的通信范围,等待时延变为0,对应的meed值计算公式如下:d=αd+(1-α)di(2)c=βc+(1-β)ci(3)其中di为断开的时间间隔,ci为连通的时间,d为平均不连通时间,c为平均连通时间,α,β为调和因子。1.2机会转发机会转发过程如附图3。节点根据优先级转发表选择到目的节点开销最低的几个节点作为转发子集,并将排序结果放在数据包的头部。收到数据包的节点按照定义好的顺序进行转发。优先级最高的节点在收到数据包后立即回复ack并向下一个转发子集转发数据。优先级低的节点将数据放入发送缓冲区等待twait时间(发送缓冲区定义为等待转发的数据),在twait时间内侦听到高优先级节点发送ack则丢弃已收到的数据包。反之,优先级次之的节点回复ack并转发数据。转发子集中节点的相互协调需要彼此间能够侦听到,但存在转发节点不存在直接邻接关系的情况,造成数据的重复发送。为此,每个节点记录过去一段时间本节点转发的数据,一个数据可用三元组(源地址,目的地址,id)唯一标识,其中id为源节点生成的数据包编号,转发过程中保持不变。节点在收到数据时先查询是否收到过该数据包,如果收到过则丢弃数据包,反之使数据包进入机会转发流程。机会转发方式给转发子集中的每个节点转发数据的机会,从而提高数据转发成功的概率。然而在网络发生间歇性中断或者由于外界干扰导致数据包转发失败的情况下,需要节点对于转发出去的数据在维护缓冲区(维护缓冲区用于本节点已经发送出去等待来自下一个转发列表中节点的确认的数据)放置一段时间,如果在规定时间内收到下一组转发节点的ack,表明数据转发成功,节点可将该数据删除。反之节点对数据包进行重传。重传规则如下:1)scfp协议从优先级表中选择一组比原先转发子集次之的节点作为新的转发子集替换原先的转发子集。2)如果转发节点较少无法产生新的转发子集,继续采用原有的转发子集。3)设定重传次数为2次。如果数据包经过多次重传仍然没有发送成功,则可以认为此时网络发生了间歇性中断,scfp协议进入网络层存储阶段。2.网络层数据的存储和转发节点按照转发策略进行转发时,如果经过多次重传仍没有发送成功,则认为网络发生了间歇性中断,因此当前节点为最优的数据存储节点。本发明设计的存储策略是按照数据的目的地址进行存储的,即把发往同一目的节点的数据包存储到同一个文件中。由于间歇性中断时间具有不确定性,可能造成节点需要长时间保存数据,这将导致节点后续存储空间越来越小。因此设计存储区管理策略如下:1)基于优先级策略:根据数据包到达目的节点路径代价设置优先级,可通过查询优先级表得到。到达目的节点的代价越高,优先级越低。在节点存储空间紧张的情况下,保留优先级高的消息,优先级低的消息被丢弃。2)相同优先级清除策略:对于优先级相同的节点,根据数据存入时间进行清除。在节点存储空间不足的情况下,越早存入的数据先被清除。节点通过邻居探测机制探测到目的节点出现或者有到达目的的路径时,从存储的文件中读取数据封装成标准数据格式,进行重新转发。内核线程负责打开存储数据的文件,将文件读取到一个缓冲区,将数据拷贝到相应的数据存储区。3.网络状态维护采用邻居探测机制对网路进行维护,邻居探测机制有两个作用:1)邻居节点根据上文中的路由度量计算出本节点和邻居节点之间的链路开销,为优先级转发表的构建提供数据;2)当网络由间歇性连接恢复为全连通时通过邻居探测机制发现到达目的节点的路径,实现存储数据包的重传。优先级转发表记录节点经由各个邻居节点到达目的节点的路径开销,为此需要每个节点运行邻居探测机制了解本节点与邻居节点之间的直连链路开销。节点之间通过交换各自了解的信息和运行相应的算法构建出优先级转发表。邻居探测机制可通过周期性发送hello分组和接收邻居节点返回helloack分组实现链路开销的计算。为降低开销、减少更新,可通过三种方式:1)只在节点计算出与邻居节点之间的链路开销变化幅度超过20%时发送更新报文;2)在本节点向邻居节点发送数据包过程中停止发送hello分组;3)当链路不存在时推迟路由更新产生,直到本节点与邻居节点链路恢复时间超过预定值。下面结合实施例和附图对本发明作进一步的说明。本发明使用滑动窗口来实现对节点之间断开和接通时间的估计,如附图11所示,seq表示hello分组的id号,1表示收到对应id的hello分组,0表示丢失了hello分组。滑动窗口维护30个大小的窗口,用于记录本节点发送出去的hello分组收到helloack和丢失情况。为防止外部干扰导致的hello分组丢失,规定连续丢失三个hello分组则认为该节点和邻居节点发生了一次断开,由此根据公式4计算出meed值。meed算法中的α和β参数参照tcp协议对于rtt样本值的估计均设置为7/8。对于三个指标存在不同量纲的问题,采用min-max离差标准化处理方式,计算公式为计算出的链路开销存储在邻居表数据中。邻居表中记录本节点到邻居节点的链路开销和点的mac等信息,邻居结构中的last_ack_time字段记录本节点最后一次收到邻居节点helloack的时间。若当前系统时间与last_ack_time差值超过meed,则认为该邻居节点不存在,从邻居表中删除此节点信息并产生更新报文。本发明通过一个二维数组实现优先级转发表,格式如表3。由于通过索引方式查询优先级表,所有用一个一维数据记录ip地址和索引之间的映射关系。节点查询优先级表获得转发子集中的节点排序结果并添加到数据包的头部,格式如附图12,其中选项类型域表示何种scfp选项;选项长度域长度为8bits;id字段域表示数据包的编号。每个节点在向下一组节点转发数据时将本节点的地址放入上一跳地址域中,下一组转发节点不再将上一跳节点作为转发节点,避免产生回路。节点通过数据包头部信息获知自身转发顺序,之后按照机会转发策略进行数据的转发。表3优先级表所有的数据包根据加入的时间被组织成一个双向链表。一个新的数据包加入后会为其启动一个内核定时器,超时时间设置为twait。twait依据节点的转发次数设定,第n个节点等待时间如公式6,其中tsend由多个部分组成如公式7。ieee(国际电工电子工程学会)802.11采用csma/ca(载波侦听多路访问/冲突避免)协议竞争信道,节点在发送数据包之前会在dcf帧间距(dcfinter-framesapce,difs)时间段tdifs内对信道进行监听,如果信道忙会随机退避时间tbackoff,否则发送数据,发送数据需要时间ttrans。twait(n)=(n-1)*tsend(6)tsend=tdifs+tbackoff+ttrans(7)每个数据包加入时需要记录创建时间,并设置超时时间为ttimeout=n*tsend,其中n表示节点选择的转发子集中节点的个数。如果在ttimeout时间内收到来自转发列表中的确认,那么节点可将维护缓冲区的数据删除,反之scfp协议启动重传机制,如果重传失败则在网络层存储。网络层的数据存储通过在sk_buffer结构体(见附图13)中维护数据包存储区的指针信息(包括头head,数据data,尾tail,结束end指针)和各层操作数据时所需的必要信息,sk_buffer是linuxtcp/ip堆栈中用于管理数据缓存的结构,而数据包真正存储在内存中一个单独的区域内。在内存中建立一个具有10个单元的缓冲池,每个单元长度为2000byte,如附图14。每个缓冲区单元通过一个变量来设置是否填充完毕;重传失败处理例程负责将超时的数据填充到缓冲单元;内核线程负责检查缓冲区单元是否填充完毕,如果填充完毕就将数据写入到文件中(文件以目的地址进行命名方便查找),并将缓冲池单元设置为空,以便重传失败处理例程可以继续使用该单元进行数据的填充。对于存储到外存的数据,本发明采用列表记录文件创建时间、存储数据的目的地址、优先级和文件创建时间。恢复连接重传数据包时,1)调用内核函数alloc_skb函数分配一个structsk_buff结构,分配的空间大小为mac头部、scfp选项、ip头部、传输层头部和应用层数据以及两个数据字节对齐空间。2)进行初始定位,确定data指针从什么位置开始写入数据。通过skb_reserve函数预留数据的存储空间,将data和tail指针下来所需字节长度,并调用skb_push函数在data和tail指针之间预留scfp选项、ip(网际协议)头部、传输层头部和应用层数据长度。3)从文件中读取的数据拷贝到真正的数据区。4)重新设置mac层、ip层、传输层头部指针,将其指向正确的位置。所有填充完毕后,调用发包函数进行发送。如附图15所示为scfp协议在协议栈中的位置,scfp协议插入到ip分组和传输层头部之间,使用一个固定长度的头部来存放控制消息,如附图16。其他分组选项添加到固定头部之后,scfp协议的结束由头部长度字段来控制,协议号域用于指明传输层使用的协议,ip头部的protocol域修改为scfp协议号168,ip头部total_length域加上scfp固定头部长度和选项长度。scfp协议作为一个内核模块在openwrt系统中实现,如附图17所示,通过虚拟出一个网络接口并借助linux下netfilter框架实现其功能。为验证本发明scfp协议的性能,在实验床以及仿真软件ns2(网络模拟2)中对scfp进行评估。实验床搭建如附图4,采用iptables工具对mac(媒体介入控制)层地址进行过滤,实现一个强制多条环境,借助linux下crontab工具模拟出网络间歇性连接和全连通动态变化的场景。仿真场景一如附图5,与实验床相一致来验证实验床结果的可靠性。仿真场景二如附图6,红蓝箭头表示数据包转发路径,橙色箭头表示节点运动方向。网络拓扑在1500m*1500m的区域内,实验参数如表1,仿真时间为600s,每秒产生一个512b的数据包。表1实验参数实验一设计一个udp套接字程序,nodea作为客户端不断向noded服务器端发送字符串,测试scfp协议在网络层实现数据存储的功能,结果如表2。实验结果表明,scfp洗衣在发生间歇性中断的情况下能够实现网络层存储,在回复全连通的情况下能够实现数据重新封装和转发。表2实验结果实验二分别测试了1跳、2跳和3跳情况下scfp协议的吞吐率和投递率,并与prophet(先知路由)及dsr(动态源路由协议)协议作对比。吞吐率实验结果如附图7,从图中可以得出scfp协议吞吐率比dsr低15%左右,这是因为scfp协议在后台需要运行发送hello分组的线程、数据文件写入与重新封装线程造成系统负载过重。由于在回复全连通的情况下使用prophet协议开销高,因此scfp协议吞吐率要比prophet高。dsr作为反应式路由协议发现到达目的路径时间长,而scfp工作在内核空间效率要比dsr协议高。投递率实验结果如附图8,scfp协议在不同跳数下投递率均比dsr高,说明scfp协议上实现的存储携带转发机制能够改善传统manet的投递率。实验三测试仿真场景一中不同跳数下的投递率,实验结果如附图9,可得scfp协议随着跳数增加投递率远高于dsr协议,表明网络间歇性终端情况下scfp协议实现数据存储,并在网络恢复的情况下实现数据重发,可明显改善投递率。实验四测试仿真场景二中对各协议在不同节点密度中投递率、数据包转发次数和端到端时延的对比,结果如附图10。实验结果说明scfp协议随着节点密度增加,投递率平稳上升,数据包转发次数最小且增长缓慢,端到端时延平缓下降,相比于dsr与prophet具有稳定而良好的性能。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1