1 研究背景及研究现状:
进入21世纪,经济全球化进程加快。人类社会进入了一个科学技术迅猛发展的历史时期,智能交通系统(Intelligent Transportation System,ITS)应运而生。智能交通系统是人们在较完善的交通基础设施上,把通信、计算机、信息、自动控制和系统集成等技术加以运用,建立的一个集安全、高效、便捷、舒适、环保的综合系统。智能交通系统可用来加强交通设施、载体和用户之间的联系,保证系统内运行的可控性和有序性,提高运行效率,减少事故,降低污染。21世纪将是公路交通智能化的世纪,人们将要采用这一先进的一体化的交通综合管理系统,对道路、车辆的行踪进行实时监控、调度[1]。
车载自组织网络(Vehicle Ad hoc Network,VANET)在智能交通系统中起着重要作用。VANET是在传统的移动自组织网络(MANET)基础上发展起来的,是一种特殊的移动自组织网--是一种由装备了无线通信收发装置的车辆,组成的一个临时性的多跳自组织网络。VANET作为智能交通系统的基础部分,具有极高的研究价值和应用前景。概括来说,车载自组织网络(VANET)通过车间通信和车与路侧单元通信,能够提供两大类应用。一类是安全应用,主要为解决行车安全、舒适,比如前方事故预警、提示道路阻塞、提醒限速、为司机选择最佳行车路线或免费紧急通道;另一类是用户应用,主要是提供增值业务,为乘客在车内提供娱乐功能。比如天气情况;Internet连接以分享音乐、看电影、聊天、玩游戏;对附近旅游景点、酒店、加油站进行筛选;对产品、服务进行内容、价格、位置的查询;商业结构也可以通过VANET进行发布商业广告。
如图1所示,在VANET中,行驶在路面的车辆作为网络节点是重要组成部分,每一辆车都配有车载单元(也称OBU)用来提供无线通信。路侧单元(也称RSU)作为静止的基础设施被统一的部署在公路两侧,在车辆进入通信范围内提供无线接入的端口。所有的RSU都通过有线线路(像光纤)或其他线路接入到高宽带、低延迟、低错误率的主干网络。主干网络可以通过Internet与中心网络进行相连。因此RSU可以简单、快捷、准确地通过主干网络、中心网络相互之间进行交换信息或同步信息。
目前,由于VANET在解决道路安全、交通拥堵、协助驾驶、道路资源共享等方面上的优势,引起了世界各国研究人员和科研机构、汽车制造商的密切关注[2-5]。近年来,各国政府、大型汽车制造商针对VANET开展了深入而有效的工作:积极开展车载自主网络环境下相关通信协议、标准等热点问题的研究,并启动了一系列的相关科研项目。尽管对车载自组织网络的研究,已经取得了一些可观成果。但正如文献[6]所描述的,仍面临着一系列的理论难题和技术瓶颈。车载自组网的应用主要包括两个方面:一是道路安全方面;二是快速发展的商业服务。而车辆之间的信息交互是这两个方面实现的前提,可靠的信息交互必然建立在稳定的路由之上,那路由协议研究就成为VANET领域不可或缺的部分。目前,在VANET网络中并没有具体标准的路由协议。不过国内外学者针对VANET各类场景提出了大量路由机制[7-9],其中大多都是根据传统的MANET中可靠路由机制改进得来,包括基于拓扑的、基于位置的、基于概率的等。其中基于拓扑的泛洪式路由协议AODV协议是其中的典型代表,它是一种按需路由,其在数据需要发送时,找到相关路径。在AODV协议的基础上,针对VANET移动快、拓扑变化频繁等实际情况,研究学者们提出了很多基于AODV的改进方案。文献[10]中,Marina MK和Das SR提出了AOMDV协议:路由发现时,不在仅仅保存一条路径,而是保存源节点和目的节点间建立多条路由,以备一条路径断裂,快速启用备用路径,继续进行数据传输;G.Quddus,R.Khan和R.Iablald 等人在文献[11]中提出了改进的AODV-RFC协议,文中指出利用利用路由失败系数作为度量稳定性,建立更加可靠稳定的路由协议。文献[12][13],提出利用车辆的移动信息(比如速度、位置)进行移动预测,以选择一条稳定的路由。文献[14],利用节点列队占用情况,利用跨层协作进行选择性转发控制包,得到改善网络吞吐量和提高业务公平性的目的。论文[15]中提出了改进版第一论文网专业提供论文写作和写作论文的服务,欢迎光临www.dylw.net的SAODV用来提高AODV的安全性,文中利用数字标签技术鉴定非关键域,利用哈希链表鉴定RREQ和RREP控制包的跳数等信息域。
2 AODV路由协议
AODV协议是Perkins和Royer针对基于距离矢量路由算法(DSDV)的改进而提出的。AODV路由协议是反应式路由的典型代表。它是一种完全按需、多跳式的路由协议。AODV避免了每个节点时刻保持活跃状态、不断更新路由列表信息的弊端;只有在两个节点进行通信时,才启动路由发现和路由维护工作。AODV集DSDV和DSR共同的优点于一身,即使用了DSDV的目的序列号机制保持路由的最新状态,避免路由环路,同时也使用DSR按需路由的思想,以一种高效的方式选路,降低网络负荷。
AODV协议包括四种控制包——RREQ包(路由请求包)、RREP包(路由回复包)、RERR包(路由错误包)和HELLO包,并通过这些控制包达到路由发现过程和路由维护过程两大重要过程。
路由寻找:当源节点要向目的节点发送数据时,首先查看本地路由表看是否有到目的节点的路由。有则直接按照现有路由发送数据;没有就发起路由寻找。路由寻找初始阶段,源节点向周边邻居节点广播RREQ控制包。中间节点收到RREQ,通过<源节点IP地址,RREQ ID>查看是否已经收到同样的包,如果收到,立即丢弃。如果没有收到,缓存该数据包信息,同时查看路由表是否有到源节点的反向路由。如果没有,直接建立一条到源节点的反向路由。有的话,比较反向路由的序列号和RREQ中的源节点序列号,若RREQ中序列号较大,用RREQ更新反向路由。建立反向路由后,检查路由表是否有到目的节点的最新路由(即路由表的目的序列号不小于RREQ包中的目的序列号),如果没有直接转发该RREQ控制包。直到该RREQ被转发至目的节点或有到目的节点最新路由的中间节点。这些节点收到RREQ,就沿着已经建立的反向路由向源节点回复RREP。中间节点收到RREP后,在路由表里建立或更新到目的节点的正向路由。然后转发RREP,直到转发至源节点。源节点收到RREP,建立至目的节点的正向路由。这
样整个路由寻找功能就实现了。
路由维护:AODV协议通过周期性发送HELLO控制包进行链路检测、本地链路修复和链路断裂后向其他相关节点发送RERR控制包三种方式共同达到路由维护的目的。网络中,移动节点周期性向通信半径内所有邻居发送HELLO包,用来检测邻居节点的存活状况、与邻居节点间链路的有效性。如果邻居节点在一定时间内没有再次收到邻居发送的HELLO包,就认为邻居节点已经离开该节点的通信半径,认为与该邻居的链路无效。这时,链路断裂处的上游节点就会进行本地路由修复。发起本地修复的节点,向目的节点广播到目的节点的RREQ包,并等待目的节点的RREP回复包。整个RREQ和RREP的处理流程同路由寻找过程一样。如果一定时间内,该节点收到RREP包,则本地修复成功,重新建立了一条到达目的节点的路由。如果没有收到,则认为修复失败,该节点就会将该邻居节点和以该邻居节点作为下一跳的路由表中的目的节点均认为不可到达节点,并创建一个不可到达列表,同时会发送关于不可到达节点的RERR包。中间节点收到RERR后,将路由表里将不可到达节点作为目的节点的路由条目中的目的序列号设置为无效,同时向源节点转发RERR包,源节点收到RERR后重新启动到目的节点的路由寻找过程。
3 改进的AODV路由算法ARSU-AODV
在实际VANET中,节点会快速移动,导致节点间的链路维持时间将缩短,链路断裂的风险也会加大。一旦节点间链路断裂,将导致整条路由的失效,从而大大降低AODV路由协议的可靠性。现在针对AODV路由协议的改进方案,大多只考虑车载单元,没有把路侧单元考虑进来。针对VANET这一实际情况,我们把RSU考虑进来,提出了对AODV改进方案,即基于RSU辅助建立AODV路由协议(ARSU-AODV)。
在改进的基于RSU(路侧单元)辅助建立路由的算法里,我们假设所有节点都能够通过GPS获得自身地理位置信息、速度,并且把信息封装到HELLO包里,通过HELLO包,自身相关信息也可被邻居节点获知。同时我们把RSU当成速度为零、地理位置一定的‘OBU’(车载单元),并且每个RSU维护一张信息表:
AODV中,OBU会周期性的向周围邻居广播HELLO包。当OBU进入RSU的覆盖范围,OBU周期广播的HELLO包,被RSU监听到。RSU查看所维护的信息表中OBU节点列表部分。如果该OBU不在列表里,意味着OBU第一次驶入该RSU范围内或者很久以前驶入过,但信息已过期被删除信息记录。将该OBU的相关信息添加到信息列表中,并且向该节点以单播的形式发送通知包到该节点。通知包包含该RSU自身信息(例如RSU ID、地理位置、IP地址等)以及邻居RSU列表等相关信息。OBU将通知包里的信息添加到自身维护路由表里,这样OBU就知道最近一次所接入RSU及下次可能接入的RSU的相关信息,以便后面的路由寻找时使用。RSU告知OBU其邻居RSU列表的目的是:无论OBU朝哪个方向行驶,其进入的下一个RSU范围一第一论文网专业提供论文写作和写作论文的服务,欢迎光临www.dylw.net定是邻居RSU列表中的一员,当然OBU也可能不进入他们的任意一个RSU的范围。
每一个RSU都会定期的更新维护自身信息表,可以看出信息表里RSU自身信息、邻居RSU列表是永远不会变化的,只有OBU节点列表信息会发生变化。对于RSU覆盖范围内的所有OBU节点(即RSU信息表中OBU列表里所属RSU ID设置为自身ID的OBU节点),若一定时间范围(由于HELLO包广播的周期为1s,这里设置为大约2s)内没有再次收到某一节点广播的HELLO包,RSU便认为该OBU已经驶出RSU的覆盖范围了,直接删除OBU列表里该RSU信息。对于最近被用来通信且属于其他RSU范围的中间节点的OBU,在使用完之后,设置一定的预留时间(Reserved Time),以便近期再次使用。若是在预留时间内没有再次启用,同样直接删除;若是再次启用,可直接快速定位到所属RSU。通信时,节点根据信息表里该OBU节点所属RSU,先与定位到的RSU通信,RSU再在自己范围内寻找这个中间节点OBU,并借助该OBU完成通信。当然,通信时作为中间节点的OBU可能已经驶离其所属RSU范围。若是这种情况,按照下面的路由寻找重新找路;若是没有驶离,按照原有路由记录方式进行通信。通信完成后,重新设置预留时间。
路由寻找过程:(1)在考虑RSU情况下,源OBU节点和目的OBU节点通信可以分为四种情况:两节点都在RSU覆盖范围内;两节点均不在RSU覆盖范围内;源节点在、目的节点不在RSU覆盖范围内;源节点不在、目的节点在RSU覆盖范围内;这里到RSU发送的RREQ和RREP在原来AODV的数据格式进行稍微改动。
RREQ控制包数据格式:
注:RREQ包数据格式基本上和原AODV的类似,只是标志位,原AODV的标志位分:J|R|G|D|U,这里改进的算法里,再在标志位里加上CR:表示OBU请求建立与RSU之间的路由,该种请求包只有RSU能处理,OBU接收到只能转发;
RREP控制包数据格式:
注:RREP包数据格式基本上和原AODV相同,原AODV标志位为:R|A,这里新的算法,再在标志位加上RR:表示RSU回复的控制包。
当源OBU节点向目的OBU节点发送数据时,首先检查内核路由表,如果有到目的节点的路由,则直接按该路发送数据;如果没有则启动路由寻找:
(1)源OBU节点首先检查路由表内最近所属RSU是否为空(默认设置为NULL):如果为NULL,说明源OBU节点近期内没有和RSU交互,就以AODV的方式广播到附近RSU的RREQ请求包,RREQ的标志位设置为CR,请求到附近RSU的路由。当附近的RSU收到RREQ请求包时,沿已经建立反向路由回复标志位设为RR的RREP控制包,整个过程类似于AODV源节点到目的节点路由寻找的过程。源OBU节点,等待ALLOWED_CONNECT_TIME后,如果没有收到RSU的回复,则认为距离RSU较远,借助RSU建立路由的方式适合于当前情景,直接启动传统的AODV路由寻找机制。
(2)如果OBU节点当前路由表里最近所属RSU不为NULL,则向最近所属RSU和邻居RSU列表里的所有邻居RSU发送到目的OBU节点的RREQ路由寻找;或者最近所属RSU是否为空,但是通过(1)收到了附近RSU第一论文网专业提供论文写作和写作论文的服务,欢迎光临www.dylw.net回复的RREP包,建立了到附近RSU的路由,则向该附近RSU发送到目的OBU节点的RREQ路由寻找。RSU收到RREQ请求包,检查自身信息表,同时通过外部主干网查询所有RSU信息表,查看是否包含目的OBU节
点IP信息。如果包含,说明目的OBU节点现属于某一RSU的覆盖范围或者某一RSU有到目的节点的最新路由,这时源节点就可以首先通过向RSU发送数据,然后RSU通过主干网或者根据已有最新路由向目的OBU节点转发数据的方式,进行通信。
(3)如果所有RSU信息表中都不包含目的OBU节点的IP地址,说明目的OBU不在RSU通信范围内。所有的RSU向附近OBU节点以原AODV路由寻找方式,转发RREQ请求包。但是RREQ请求包的跳数在转发前被设置为2,即RSU只向2跳范围内的OBU寻找目的节点,这样能够避免多跳转发引起的全网网络阻塞。
(4)RSU转发RREQ后,设置等待时间为ASSISTED_CONNECT_TIME,若这段时间内,收到目的节点回复的RREP包,则把RREP生存时间设置为MY_ROUTE_TIMEOUT,同时把该RREP按照以建立的反向路由回复给源OBU节点;如果规定时间内没有收到回复的RREP包,说明目的节点距离任意一个RSU的范围都较远,不利于借助RSU建立路由。在等待时间末,回复给源OBU节点一个到目的OBU节点的生存时间为0的RREP回复包。
(5)若是源节点收到一个RREP包的生存时间为0,说明此时场景不适合通过RSU辅助建立路由,则自动启动传统AODV的路由寻找。
4 仿真结果
我们采用当前比较流行的网络仿真软件NS2软件,分别对AODV和改进后的ARSU-AODV协议进行了分析,通过6组源节点到目的节点数据通信的仿真分别对二种路由丢包率、端到端的延迟、协议开销等进行比较,衡量二者的性能。仿真参数设置如下:
其中RSU沿道路两旁,按照泊松分布进行部署,大于每千米部署8个RSU。OBU和RSU的通信范围均设置为250m。
丢包率=(发送包数量-接收包数量)/发送包数量。它反应了路由的稳定性和网络的拥塞程度。由图2可以看出原AODV和改进后的ARSU-AODV协议的丢包率都不高,都低于20%。但从整体上可以看出ARSU-第一论文网专业提供论文写作和写作论文的服务,欢迎光临www.dylw.netAODV的丢包率更低。这是由于在RSU存在的情况下,可以更加快速的寻找到目的节点的路由。同时通过RSU辅助建立路由,在依靠RSU发送数据时,由于RSU和RSU通过高宽带、低延迟、低错误率的主干网络相连,保证了数据的可靠传输。
由于端到端的延迟与节点的移动速度有关,图3给出是两种路由下不同速度下6组节点的平均延迟。可看出速度越大,两种路由协议下延迟都会变大,这是由于节点速度越大,网络越不稳定,就会使链路中断,导致重新发起路由查找,加大延迟。比较二者可看出,改进后的路由ARSU-AODV,在RSU存在的情况下,RSU可作为数据转发的中间节点,或者可以快速的辅助建立新的路由,这都使端到端的延迟降低。
路由开销=(发送总包数-应用层总包数)/发送总包数,它是源节点往目的节点发送数据时,建立路由和维护路由所付出的网络代价,它包括4种控制包HELLO包、RREQ包、RREP包和RERR包。通过图4可看出,两种路由歇息路由开销的比重都比较大,而且随着速度的增大开销也会变大。这是由于节点速度增大后,拓扑变化剧烈,链路断裂的概率变大,这势必造成路由开销变大。由于基于RSU辅助建立的AODV路由,节点会与RSU交互,发送数据包会增多,使ARSU-AODV开销略大。
5 结论
在本文中,针对VANET实际场景,我们对原有AODV提出了基于RSU辅助AODV路由协议(ARSU-AODV)改进。它将路侧单元考虑进来,以便快速的建立稳定的路由。仿真结果表明,ARSU-AODV路由协议,除了路由开销较AODV稍大之外,能一定程度上降低端到端的延迟和丢包率。
[参考文献]
[1]ITS_百度百科:http://baike.baidu.com/view/39610.htm.
[2]LuoJ,Hubaux JP.A survey of Inter-vehicle communication. Technical Report,Switzerland:EPFL,IC(informatique & Communications),2004.
[3]BlumJJ,Eskandarian A,Hoffman LJ.Challenges of intervehicle ad hoc networks.IEEE Trans.On Intelligent Transportation System,2004,347—351.
[4]2006.http://www.sigrnobile.org/workshops/vanet2006/index.html
[5]BlumJJ,Eskandarian A,Hoffman LJ.Challenges of intervehicle ad hoc networks.IEEE Trans.On Intelligent Transportation System,2004,347—351.
[6]J.Lou,J-P.Hubaux,"A Survey of Inter-Vehicle Communication", Technical Report,School of Computer and Communication Science, EPFL, Switzerland, 2004.
本文选自《无线互联科技》2014年第4期,版权归原作者和期刊所有。