侯睿,周烁,余俊乐,张嫣
(中南民族大学 计算机科学学院,武汉 430074)
近年来,车辆自组织网络(Vehicular ad-hoc Networks,VANET)作为智能交通系统(Intelligent Transport System,ITS)的重要组成部分,其现有的架构,通信技术,路由方式,服务质量等方面已经被众多学者进行了广泛研究[1].VANET通过无线网络技术将车载单元(On Board Unit,OBU)和基础设施进行连接,从而提供车辆与车辆(Vehicle-to-Vehicle,V2V)、车辆与RSU(Vehicle-to-RSU,V2R)及RSU与RSV(RSU-to-RSU,R2R)等通信模式[2].由于VANET具有高移动性、高动态拓扑和时断时续的连通性,使得传统的以IP地址为中心的传输模式已经无法有效地在这样一个高度动态的网络中实现稳定、高效、快速的数据访问,以数据内容本身为中心的新一代网络体系——信息中心网络(Information Centric Networking,ICN)便应运而生.而命名数据网络(Named Data Networking,NDN)作为ICN中最有前途的解决方案之一,其在网内缓存、耦合路由等方面的优势可以潜在地提高VANET内容检索和数据转发的可伸缩性和效率[3],因此将NDN应用于VANET之中(V-NDN)成为国内外的研究热点.
在V-NDN中,内容消费者(Consumer)为请求数据向网络发送请求包(interest packet),由网络中的路由器根据数据内容名称检索到存储着对应数据的内容发布者(Producer),Producer将此数据封装成数据包(data packet),data包会沿着interest包的路由转发路径反向“原路返回”至Consumer[4].但由于Consumer和Producer的移动性会导致数据包在转发过程中丢失,从而影响用户的体验质量(Quality of Experience,QoE)和服务质量(Quality of Service,QoS)[5].
近年来,为了应对在V-NDN中频繁的连接中断和网络变化带来的挑战,文献[6]提出了一种基于树结构的interest包转发方法,该方法利用树的结构合并不同车辆的导航路线重叠而产生的相同interest包,从而避免不必要的interest包重发.文献[7]提出了一种关键数据的分发算法,该方法利用邻居车辆有效地传播关键数据,使Consumer能够快速获取紧急数据.上述两种方法均只适用于道路交通等特定信息的路由转发,并不适用于所有类型的数据信息.文献[8]提出一种基于地理位置的转发策略,通过邻居节点间交换的位置等信息选择下一跳转发节点.由于车辆的高移动性,邻居节点每次位置移动都要进行节点信息更新,由此可能会导致转发者选择开销增大而影响路由.同时文献[9]提出的基于位置的数据转发方法使用Dijkstra算法计算数据转发的最短路径,并根据自适应发现和选择机制实现动态环境下的数据交互.但该方法的计算复杂度高,并依赖于车辆的密度.文献[10]提出了一个增量路由更新机制,当车辆进入新路段时,通过自动交互地修改数据转发表的记录来进行路由转发,但车辆需要提前设置行驶路线,且后期不会在未经允许的情况下更改导航路线,此方法无法满足车辆在道路上随机移动形式的情况.
为避免以上方法出现的问题,本文提出一种适用于V-NDN中的基于RSU协助的数据转发方法,首先RSUs将被划分为不同的区域,由特定的控制路由器(Control Router,CR)进行管理,并利用RSU协助将数据包转发至移动节点,从而减少路由消耗,增加数据包的交付率.
NDN中节点的数据结构由三部分组成:内容缓存(Content Store,CS),待定转发表(Pending Interest
Table,PIT),转发兴趣表(Forwarding Information Base,FIB).其中CS是存储节点转发过的data包的数据内容,以应对未来潜在的数据请求;PIT是记录节点已经转发过的interest包,但还未被满足的数据请求接口信息;FIB是存储关于数据转发接口的信息,以便根据路由表和内容名称路由interest包.NDN中节点处理数据包的过程如图1所示.当节点为请求数据发送interest包给下一跳转发节点,转发节点首先查询CS,若CS中有对应数据,则将此数据封装成data包,并从接收到该interest包的接口返回data包,否则继续查找PIT.若PIT中发现匹配项,此时需要将interest包进来的接口添加到PIT对应项的接口列表.当有相应的data包返回时,按照PIT里记录的接口列表分别给每个节点回复一个data包,并将该data包的数据内容存储到CS中,以服务后续其他节点的需求.若查找CS和PIT都没有得到匹配项,则需要继续查找FIB.若FIB中有对应项,根据FIB中对应内容名称的接口列表向其他节点转发该interest包[11].若上述三个部件中都没有相应的匹配结果,表明该节点无法处理此interest包,此时interest包将被丢弃.通过以上过程,NDN节点可以正确路由转发interest包,并分发相应的data包.
图1 节点处理数据包的过程Fig.1 The process of node processing data packet
为了有效解决由于节点移动导致的网络拓扑变化,通信链路断裂等问题,本文对V-NDN中RSU节点的数据结构FIB和PIT进行了修改,如表1所示.FIB表中包含数据名称前缀、转发接口、移动状态三项;PIT表中包含名称前缀、传入接口、移动状态三项。其中FIB表中“名称前缀”表示数据内容的名称聚合后的路由前缀,“接口号”表示经由哪些接口转发,以获得与名称对应的数据内容;“移动状态”项有三种形式:00,01,11;当移动状态项为00时,表示接口对应的节点处于当前RSU的通信范围内;移动状态项为01时,表示接口对应的节点处于当前RSU所属的CR通信范围;移动状态项为11时,表示接口对应的移动节点已经离开了当前RSU所属的CR通信范围;PIT表中的“传入接口”记录请求相同内容的interest包的接收端口.
表1 FIB 和 PIT的组成结构Tab.1 The structure of FIB and PIT
(b) PIT结构
NDN中存在两种类型的包:interest包和data包.为了满足必要的数据转发需求,本文添加了移动状态包(Move_State包)和切换兴趣包(Handover_Interest包),如图2所示.
图2 Move_State包和Handover_Interest包格式Fig.2 The structure of Move_State packet and Handover_Interest packet
其中Move_State包是表示当前移动车辆节点的移动状态,移动车辆节点离开当前所连接的RSU通信范围前发送Move_State包给RSU,告知其节点移动状态等信息;Handover_Interest包是用来通知移动车辆节点已经离开了当前控制路由器的通信范围,仅当移动车辆节点连接到新的CR范围内的RSU时被发送.
为了有效地进行移动车辆间的数据传输,本文在路边有序放置一些基础设施节点RSUs ,通过RSUs 辅助完成车辆间的通信,相对于无基础设施支持的移动车辆通信方式,此方法更加容易实现且能获得较高的数据传输性能.本文首先将道路上分布的RSUs进行区域划分,每个区域设置一个CR进行管理,提高网络传输效率.如图3所示,单一区域内的数据传输为域内传输,多个区域间的数据传输为域间传输.
图3 车辆与网络间的切换Fig.3 Handover between vehicle and network
如图4所示,Consumer为请求数据向当前所在的RSU发送interest包,interest包需要被逐跳转发至存储有相应数据的Producer.当interest包被转发到 Producer初始所在的RSU(c_RSU)时,若Producer仍然处于c_RSU的传输范围内,则interest包可以被成功转发,interest包转发过程如图4中path_1所示.若Producer检测到其通信的c_RSU信号强度低于检测到新RSU信号强度时,表明Producer即将离开当前c_RSU通信范围,此时其向c_RSU发送一个Move_State包.c_RSU接收到此包后,根据Producer对应的接口号更新相应的FIB条目中的移动状态,即将移动状态标志从00改为01或11,其中当前RSU为移动方向上的边缘RSU,则移动状态标志修改为11,否则修改为01,并根据节点的移动方向获取将要连接的下一跳RSU(n_RSU),更新FIB表中的转发接口为n_RSU.
图4 interest包转发过程Fig.4 Interest packet forwarding process
(1)若c_RSU和n_RSU同属于一个CR区域,当前需要执行域内通信.例如,Producer从RSU1_2移动到了RSU1_1的通信范围,此时需要更新RSU1_2的FIB中Producer对应的接口号,即将此接口号改为RSU1_1的转发接口.当interest包转发至Producer原先所在的RSU1_2时检测到Producer的移动状态位为01,则根据FIB表将interest包转发给RSU1_1,并由RSU1_1将其转发给Producer,具体interest包转发过程如图4中path_2所示.
(2)若c_RSU和n_RSU不属于同一CR区域,则此时要执行域间通信.此时以CR1范围内的RSU1_2和CR2范围内的RSU2_1为例,即,Producer断开与RSU1_2的连接,当interest返回RSU1_2时,Producer移动至RSU2_1通信范围内.当RSU1_2根据FIB中的对应接口信息查询到Producer的下一跳RSU2_1与其不属于同一CR区域范围内,此时RSU1_2接收到interest包后将其转发给CR1,CR1重新接收采用等待-存储-不转发的模式.当Producer断开当前RSU1_2的通信,并连接到新的RSU2_1时,立刻向其发送一个Handover_Interest包,RSU2_1根据接收到的信息,立刻在其FIB中添加一个有关Producer的新条目,以便后续数据的转发,并根据包中的相关信息将Handover_Interest包转发给CR1,具体转发路径如图4中path_3所示.此时,CR1将沿着Handover_Interest包的转发路径反向传输 interest包,直至interest包被转发给Producer,具体interest包的转发路径如图4中path_4所示.最后,RSUs将会进行自动路由更新,删除RSU1_2和CR1中有关interest包的转发接口信息,以便在后续接收到相关请求时,能够快速满足请求.
若RSU的FIB中某个条目对应的移动状态标记为01或者11,且此状态持续T时间后仍未接收到interest包,则默认Producer已经离开了当前RSU的通信范围,且无法在通过简单的逐跳转发找到Producer,此时RSU在收到interest包会将其丢弃,并删除interest包的相关条目,减少路由等待时间,从而提高路由效率.
当Producer成功接收到interest包后,会将其缓存的数据封装成data包进行回传,data包会沿着interest包的反向转发路由路径返回至Consumer发送interest包时所连接的RSU(c_RSU).若此时Consumer仍处于c_RSU网络的通信范围内,则c_RSU会直接将data包交付给Consumer,具体data包转发过程如图5中path_1所示;若此时由于Consumer的移动性导致其离开了当前c_RSU网络的通信范围.Consumer在检测到即将驶离当前c_RSU的通信范围时还未收到data包,此时向c_RSU发送一个Move_State包以更新当前c_RSU的PIT中的条目,将更新PIT中接口信息和移动状态标志.当data包回传至c_RSU时,此时需要检测下一跳n_RSU与c_RSU是否处于同一CR的区域范围.以上两种情况的路由过程与interest包转发过程类似.
图5 Data包转发过程Fig.5 Data packet forwarding process
(1)若c_RSU与n_RSU属于同一CR区域范围内,如图5所示,假设Consumer在RSU1_2通信范围内发送interest包请求数据,若data包回传至RSU1_2时,Consumer断开与RSU1_2的连接,与CR1范围内的RSU1_1连接,data包的回传路径如图5中path_2所示.
(2)若c_RSU与n_RSU不属于一个CR区域范围内,若Consumer离开CR1范围内的RSU1_2的通信范围,并连接CR2范围内的RSU2_1,data包的回传路径如图5中path_3所示.
本方法在一定程度上避免过度依赖位置进行通信,不用确切的知道车辆节点移动的信息,只需确定当前车辆节点可能会移动到哪一个RSU的通信范围内,由此进行数据转发,从而减少搜索目标车辆所造成的路由消耗.
在仿真实验中,本文为基于RSU协助的数据传输方法(RSU-assisted),并设置相邻4个RSUs为一个区域,在初始状态每个车辆节点被随机放置于道路,设置每个车辆节点为随机移动,实验参数如表2所示.为验证方法是否能够实现车辆节点在高速动态环境下快速、高效的数据收发,本文选择 V-NDN和NDN中基于位置的数据转发路由方法(RNDN)作为对比对象.
表2 实验参数Tab.2 Experimental parameters
本文主要从数据收发消耗的平均传输时延和数据包成功交付率两方面进行实验分析.其中,平均时延可以反映数据传输的实时性,平均时延越小,表示数据收发所消耗的时间越短,网络服务质量越好;数据包成功交付率可以反映数据通信链路的稳定情况,数据包交付率越高,表示路由协议的数据传输稳定性越好.
(1)平均时延.
平均时延:Consumer完成数据收发的时间与Consumer发送interest包的数量的比值;
其中,图6和图7显示了Consumer的数量变化和车辆节点的速度变化对平均传输时延的影响.如图6所示,在不同Consumer数量的影响下,V-NDN,RNDN,RSU-assisted三者所需的平均时延的比较.随着Consumer数量的不断增大,V-NDN和RSU-assisted需要消耗的平均时延处于平稳状态,而RNDN消耗的平均时延逐渐递减,但变化较小.如图7所示,当节点速度不断增大时,V-NDN,RNDN,RSU-assisted三者消耗的平均时延均会不断增加,其中节点速度的变化对RSU-assisted的影响相对较小.总的来说,分别在Consumer数量变化和节点速度变化下,RSU-assisted消耗的平均时延明显低于其他两种路由方法.
图6 平均时延随Consumer数量的变化情况Fig.6 Average delay varies with the number of Consumers
图7 平均时延随车辆速度变化的曲线Fig.7 The curve of average delay with vehicle speed
(2)data包成功交付率.
data包交付率:Consumer实际接收到的data包的数量与Consumer发送interest包的数量的比值.
图8和图9显示了Consumer的数量变化和车辆节点的速度变化对数据包成功交付率的影响.如图8所示,随着Consumer数量的逐渐增多,V-NDN,RNDN,RSU-assisted三者产生的交付率无明显变化,其中V-NDN,RNDN呈现微弱的下降趋势,这说明RSU-assisted的交付率基本不受Consumer的数量变化的影响.如图9所示,随着车辆节点速度的不断增大,V-NDN,RNDN,RSU-assisted三者的数据包交付率明显呈下降趋势,其中V-NDN受到的影响最大.由于本文提出的RSU-assisted方法综合考虑了数据链路的稳定性,减少了数据包的重发,因此RSU-assisted在平均传输时延和数据成功交付率方面均有一定的优势.
图8 交付率随Consumer数量的变化情况Fig.8 Delivery rate varies with the number of consumers
图9 交付率随车辆速度变化的曲线Fig.9 The curve of delivery rate with vehicle speed
本文针对在V-NDN中车辆的高移动性和网络拓扑结构的快速变化导致网络频繁中断,使得数据包在传输过程中丢失,从而降低通信效率这一问题,提出了一种基于RSU协助的数据转发方法,该方法首先将RSUs进行区域划分,然后利用RSU协助数据传输.仿真结果表明本文的数据转发方法能够有效地降低数据传输时延、提高数据包的成功交付率.此外,本文仅研究了V2R的通信,即通过RSU协助数据包在多个移动节点间传输,在后续的研究中V2V的数据传输也是需要考虑的重点.