软件定义的VANET系统设计与实现
2020-10-20孔祥会赵国锋邓炳光周继华
孔祥会,赵国锋,邓炳光,周继华,张 蕾,徐 川
1(重庆邮电大学 通信与信息工程学院,重庆 400065) 2(重庆市金美通信有限责任公司,重庆 400030) 3(中国电信股份有限公司技术创新中心,北京 102209)
1 引 言
车载自组织网络[1](Vehicular Ad hoc Network,VANET)使用车辆无线环境接入协议[2](Wireless Access in Vehicular Environments,WAVE)为处于移动的车辆构建了一张高速通信网络,有效提升了驾驶安全性与交通运输效率,是当下的研究热点之一.WAVE协议由IEEE 802.11p[3]协议与IEEE 1609.x[4]协议组成,通过在车载节点(On Board Unit,OBU)与路边节点(Road Side Unit,RSU)中预置WAVE协议,VANET建立了由车辆与车辆通信(Vehicle-to-Vehicle,V2V)和车辆与路边节点通信(Vehicle-to-Infrastructure,V2I)两种通信方式组成的网络架构.随着车联网对通信方式的可扩展性、灵活性和可编程性等需求的不断增长,传统VANET架构弊端逐渐显现.当前VANET具有节点功能耦合度高、网络架构单一的不足,这导致VANET节点功能难以更新,新业务难以部署,网络运行与管理成本不断增加.
软件定义网络[5](Software Defined Network,SDN)将逻辑上的集中控制功能从底层设备中分离出来,支持上层应用的灵活部署,提升了网络操作的可编程性,有望解决VANET中存在的网络问题.近几年,研究人员相继提出基于SDN技术的VANET方案,用于改善VANET中存在的信道分配、功率控制、路由、安全等问题.在文献[6]中,作者提出了一种基于SDN的名为ESCiVA的信道分配方案,该方案提升了信道分配的公平性,减轻信道之间的干扰.在文献[7]中,作者提出了一种基于SDN的VANET功率选择、路由选择方案,使用全局网络状态优化路由选择方式,得到了良好的效果.文献[8]与文献[9]提出了一类基于SDN的VANET安全模型,实现了VANET中的可编程安全性.
VANET系统面向实际部署设计,其网络架构应尽可能满足不同业务的需求以及后续的功能升级需求,并且灵活地在真实场景部署.但上述研究方案针对特定类型业务设计,其网络架构局限于当前场景,同时上述方案均基于仿真设计,未考虑实际场景下的部署成本和部署难度等问题.在实际场景中测试解决方案,能够发现方案在真实场景应用中存在的不足之处,从而进行改进,推动技术发展.在文献[10]中,作者提出了一种符合WAVE特性的OBU设备的构建方法,在文献[11]中,作者介绍了一种基于Openwrt设备实现IEEE 802.11p协议的方法,在文献[12]中,作者提出了一种低成本的OBU、RSU设备,并搭建了传统VANET架构进行了测试.尽管文献[10,11]描述了一种符合WAVE特定设备的构建方法,但并没有搭建完整测试平台,实用性较差,文献[12]基于传统的VANET架构进行了设备开发与平台搭建,但缺乏对SDN功能的支持,不具备可编程等特性,不能满足当前研究的需求.
本文通过在VANET中重构网络节点、引入SDN架构,设计并实现了一种低成本、灵活、可编程的软件定义的VANET系统.系统使用NETGEAR硬件与Openwrt软件重构了OBU模块和RSU模块,实现了WAVE协议,同时将Openwrt无线网络子系统功能和网络控制功能抽象为可编程接口,部署代理软件管理节点功能,保证节点的可编程特性与易扩展特性,满足新架构的需求.系统设计了控制单元与应用模块,实现平台的集中管理架构,能够在应用模块中编程部署各类VANET业务,实现对VANET的灵活控制,提升VANET的网络表现,同时本文设计了一种基于本系统的信道时间控制方案,提升VANET的信道利用率.
2 系统设计
2.1 系统架构设计
软件定义VANET系统设计为四个模块:应用模块、控制单元、RSU模块、OBU模块,系统架构示意图如图1所示.
系统模块之间连接方式为:OBU之间根据WAVE协议进行V2V通信,并通过V2I通信连接至RSU,RSU通过低时延有线通信连接至控制单元与应用模块,进而实现系统模块间的相互通信.OBU代理软件与RSU代理软件将Openwrt无线子系统网络功能与WAVE功能模块封装为用户层程序,用户通过代理软件管理OBU/RSU的网络功能.控制单元收集网络状态信息、管理网络节点,执行控制策略.应用模块提供可编程接口,用户只需从控制单元北向接口读取状态信息,然后根据业务策略进行处理,通过控制单元北向接口下发控制策略至网络节点,完成应用部署.应用模块中的用户不需要了解下层的实现细节即可通过编程部署新业务,极大地减轻了用户的开发成本.
相较于现有的VANET系统相关方案,本文提出的软件定义的VANET系统通过模块化设计和二次开发接口设计,使得系统架构更加灵活且可扩展性高.通过层层递进的可编程接口,系统在应用模块中能够提供功能丰富的可编程接口,能够灵活的部署诸如功率控制、信道分配等多种类型业务.同时,控制单元能够方便的连接至边缘计算和云计算平台,进一步丰富了系统的实用性.
2.2 模块设计
2.2.1 OBU模块设计
OBU模块中开发了OBU代理软件,该软件封装了安全消息收发功能、GPS功能、高精度定时器功能、信道协调功能和基于文件调试的功率控制、信道带宽控制等功能,模块设计图如图1中OBU模块所示.
安全消息收发为车联网节点的基础功能,通过定时在CCH中广播和接收安全信息实现车辆间距离、碰撞概率的计算,保证车辆在行驶时的安全性.GPS用于接收节点位置、速度信息,同时提供统一时钟源,实现车辆之间的时钟同步.高精度定时器用于安全消息发送、信道切换等事件的高精度触发,精度在毫秒级以内.信道协调功能控制了控制信道(Control Channel,CCH)与服务信道(Service Channel,SCH)的切换时间比例与多个SCH的选择.功率控制功能实现对节点的无线发射功率进行实时控制.信道带宽控制能够动态的更改当前节点的物理信道带宽.上述功能模块均在用户态基于开源软件开发,每个功能模块均设计了参数控制接口,具备可编程接口与二次开发能力.
2.2.2 RSU模块设计
RSU模块中开发了RSU代理软件,该软件实现了安全消息收发功能、GPS功能、高精度定时器功能、信道协调功能、功率控制功能、信道带宽控制功能、OBU控制帧下发功能、基于监听接口的网络状态信息收集功能、集中控制消息处理和OpenFlow流表控制功能,模块设计图如图1中RSU模块所示.
图1 系统架构图Fig.1 System structure
OBU控制帧下发功能从控制单元接收控制消息进行处理封装后在CCH中进行广播,实现对覆盖范围内车辆的控制,控制帧每100ms下发一次.基于监听接口的网络状态信息收集功能对网络节点数量、信道使用状况等网络状态信息进行实时收集.集中控制消息处理接收来自控制单元的控制消息,对控制消息的目标节点、目标业务进行分析整合后下发至对应模块.OVSwitch实现了对OpenFlow协议的支持,控制单元能够对RSU的流表进行实时控制.上述功能模块均在用户态基于开源软件开发,每个功能模块均设计了参数控制接口,提供本模块的二次开发能力和上层的编程接口.
2.2.3 控制单元设计
控制单元的功能由如下几项构成:网络状态信息处理、控制策略执行、南北向接口.控制单元设计图如图1中控制单元所示.
网络状态信息处理功能收集节点上传、监听接口获取、控制器链路发现三项信息,进而生成网络视图与节点的详细网络状态.控制策略功能接收可编程接口命令,完成对RSU、OBU的管理与信道、流表等节点网络功能的控制.北向接口使用RESTAPI软件实现,设计了网络视图查询接口、节点状态查询接口、网络控制接口、节点控制接口.针对南向接口,控制单元在OpenFlow协议基础之上新增了TCP/UDP控制通道,将OBU与RSU控制消息分开发送,提高控制通道的可靠性与灵活性.
2.2.4 应用模块设计
应用模块不限制使用的软件以及平台,只要能够访问控制单元的北向接口均可以实现业务的远程部署.研究人员能够在应用模块获取当前网络的全部拓扑信息与详细的节点网络状态信息,例如:RSU的发射功率、信道带宽、区域信道拥塞状态、流表、信道切换状态等状态信息;OBU的发射功率、信道带宽、车辆位置、车辆速度、车辆安全情况等状态信息.
应用模块为研究人员提供了丰富的控制接口,包括:OBU发射功率、工作信道、带宽、传输速率、信道切换时间、安全消息内容;RSU的发射功率、工作信道、带宽、传输速率、信道切换时间、安全消息内容、流表控制、OBU接入控制、安全消息控制帧.应用模块中,用户无需关系底层设备的技术细节,仅通过简单的编程就可以实现新应用的部署与测试.
2.3 应用部署方案设计
本文以信道时间控制应用为例,描述了一种基于软件定义的VANET系统的信道时间控制方案及其在系统中的实现流程.
WAVE协议将信道时间每100ms划分为一帧,进一步将100ms划分至CCH与SCH,网卡在一帧时间内在CCH与SCH之间进行切换,完成各类消息的发送.以Ttotal代表一帧时间长度,TCCH代表CCH间隔长度,TSCH代表SCH间隔长度,三者关系满足公式(1).
Ttotal=TCCH+TSCH
(1)
传统VANET协议将TCCH与TSCH以固定值50ms进行划分,但由于VANET业务的特殊性,可能会出现CCH与SCH信道业务流量大小不对等情况发生.VANET中车辆按照固定频率发送安全数据,当车辆较少时,CCH发送数据量很小,信道占用率较低,假如此时车辆正在SCH中执行文件下载和视频观看等业务,在车辆数目较小的情况下仍然会引起SCH的拥塞,出现TSCH不能满足SCH需求而TCCH大量空闲的情况.
参考文献[13]描述了一种VANET中可变CCH间隔方案,通过动态改变CCH/SCH信道时间的分配比例提升总体通信质量,但传统VANET架构中,研究人员只能通过车辆自身信息进行策略制定,无法使用全局状态,且需要更新所有OBU、RSU节点中的代码实现业务的部署,而基于软件定义VANET系统,研究人员无需关心底层实现,只需在应用模块中部署策略代码即可轻松获取全局网络状态信息,实现设计方案的部署.
基于软件定义的VANET系统,本文设计了TCCH、TSCH动态调整应用方案,方案不再局限于固定的50ms切换时间,而是根据CCH与SCH的信道占用率动态调整TCCH、TSCH,以提高信道总体利用率.以RCCH和RSCH分别代表CCH与SCH在上一帧内的信道使用率,以UCCH和USCH代表上一帧内CCH与SCH中的信道占用时间,则RCCH和RSCH的计算公式如公式(2)和公式(3)所示.
(2)
(3)
在VANET中,CCH信道通信质量应首先被保证,在CCH空闲时,通过适当缩减TCCH,增加TSCH来实现更高的信道利用率.TCCH、TSCH动态调整方案流程可以概括如下,
1)每100ms评估一次RCCH,占用率过高则增加TCCH,单次评估增加2ms,增加上限为10ms,重新进行步骤1),反之,CCH占用率较低则跳至步骤2);
2)评估RSCH,占用率过高则增加TSCH,单次评估增加2ms,增加上限为10ms,跳至步骤1).
方案在软件定义的VANET系统中实现的业务流向图如图2所示.
编程人员在应用模块中使用Channel_information()等函数读取所有RSU控制区域的信道状态信息,例如丢包率、收发包数目、信道使用时间.编程人员根据上述信息部署应用策略,计算新的信道时间分配规则,使用Set_ChannelSwitchTime()等可编程接口函数下发分配规则,实现对RSU及其覆盖范围的OBU的控制,灵活的完成业务部署.Channel_information()与Set_ChannelSwitchTime()的执行经过Node_Status_Upload()、Control_Message()函数到达RSU,进一步通过Beacon_send()、WSMP_send()函数到达OBU,从而到达节点驱动接口,对信道持续时间比例完成更改.但应用模块中,编程人员无需关心上述复杂的实现过程,只需专注于业务策略的制定,极大地简化了业务的部署流程.
3 系统实现
本文对OBU、RSU的重构工作进行了详细描述.
Atheros公司是一家专注于生产网络板卡的企业,其生产的AR9220系列无线网卡在硬件参数上最高支持6.1GHz频率,虽然该网卡本身不支持IEEE 802.11p协议,但其驱动完全开源,可对其网卡驱动ath9k进行修改后得到符合IEEE 802.11p协议规定的设备.市面上存在大量采用该公司生产的无线网卡的路由器,设备种类丰富,价格低廉.Openwrt是一款基于Linux内核的嵌入式操作系统,其最大的特点是该系统完全开源,且具有丰富的开源软件支持,允许开发者自由的对设备功能进行修改,Openwrt系统广泛的应用在路由器设备之上.本文选用了搭载AR9220无线网卡的路由器作为OBU与RSU节点的无线发射设备.
基于Openwrt系统与ath9k驱动程序,本文对OBU与RSU的实现工作进行了阐述,包括:1)IEEE 802.111p协议实现;2)1609.4协议实现;3)安全消息收发、控制消息处理、功率控制等功能模块的实现.系统的实现图如图3所示.
图3 系统实现图Fig.3 System implementation
3.1 IEEE 802.11p协议实现
IEEE 802.11p由802.11a修改而来,定义了WAVE物理层(PHY)与媒体介入控制层(MAC)标准.IEEE 802.11p与IEEE 802.11a的主要区别在于:
1)WAVE设备工作在5.850-5.925GHz频段,包含一个CCH和六个SCH,最大发射功率为33dbm,OFDM参数略有修改;
2)WAVE设备能够切换至OCB(Outside of the Context of a BSS)模式以10MHZ带宽进行通信.
可用的信道与发射功率因国家和地区而异,为保证设备均工作在合法频段与合法功率范围之内,ath9k 驱动程序与Openwrt系统均对设备做出了限制.Openwrt内核使用法规数据库(wireless-regdb)与CRDA软件限制设备的运行参数,本文对存储监管数据的db.txt文件中的信道与功率范围字段进行修改从而符合IEEE 802.11p协议规定.Ath9k内部驱动文件对网卡的运行参数做出了限制,首先修改配置文件regdb.c中ieee80211_regdomain regdom_US结构体和regd.c文件中ATH9K_5GHZ_ALL结构体,增加设备支持的频率范围,接着修改common-init.c文件,新增172至184信道的定义,最后修改ath9k/mac.h文件,调整OFDM的调制参数.
由于车辆的快速移动特性,VANET中两个车辆之间的有效交互时间非常短,传统无线网络中的连接建立方式不再适用于当前网络.WAVE中定义了OCB(Outside of the Context of a BSS)工作模式,此模式下,车辆不需要加入某一特定网络,所有车辆自由广播自身安全信息并接收来自其它车辆的安全信息,保证信息发送的高效性.IW是Openwrt系统中一款管理无线网卡工作特性的软件,本文使用IW工具将网卡切换为OCB工作模式.本文使用文件调试机制在驱动层面修改网卡的发送带宽,满足协议的规定.
3.2 1609.4协议实现
IEEE1609.4定义了WAVE中的多信道服务,协议规定CCH主要用于发送安全消息和部分控制消息,SCH可用于IPV6数据在内的任意类型消息传送.为了能够保证所有消息在正确的信道中传输,单网卡WAVE设备应能够选择性的调谐到CCH和SCH,调谐一般以50ms为切换间隔,预留4ms保护间隔,设备应在保护间隔内完成信道切换操作以保证消息的正确发送与接收.为了能够满足1609.4协议中规定的功能,网络节点需要满足如下要求:
1)具备统一的时钟源为信道切换提供依据;
2)开发快速信道切换接口,切换时间应小于保护间隔.
1609.4协议建议使用GPS标准时钟作为时钟源.Ntpd是一款Linux环境下的时钟同步软件,本文使用该软件将本地设备系统时间同步为GPS的IPPS时钟源提供的时间,实现网络中所有节点的时钟同步.
mac80211模块处理网络子系统中的设备注册和接口配置功能,当通道进行切换时,硬件的中断屏蔽保存在寄存器中,发送和接收被禁用,停用PCU和DMA之后,硬件配置将被重置,之前禁用的所有功能将被唤醒或初始化.为实现快速的信道切换,本文在mac80211子系统中添加了信道切换API,处理来自用户空间的信道切换配置命令,实现信道切换功能.
3.3 功能模块实现
GPS功能模块使用GPSD软件侦听当前节点的位置信息,提取出经纬度、加速度、速度等数据以文件形式保存至Openwrt系统临时目录,每100ms对数据进行一次更新,并使用文件读写锁保证数据完整性,为其它功能模块提供数据支持.
高精度定时器功能模块从同步后的系统时钟中获取时钟源,接收来自其它模块的注册任务,在时间到达后触发任务.例如,安全消息收发、信道协调、文件调试等功能模块计算当前时间与目标任务执行时间点之间的时间差,将该时间差以回调事件形式注册到定时器,当时间到达后定时器执行回调函数,完成定时事件的触发.
WAVE规定CCH中只允许安全信息与部分控制信息的发送,其余信息不得在CCH中发送.在Openwrt中,无线子系统使用mac80211控制数据发送队列,本文通过在mac80211中新增安全消息专属队列、更改下半部软中断,使系统设备能够在安全时隙中将安全消息送入CCH队列,并将其它发送队列屏蔽,实现CCH期间安全消息对网卡的独占性.
VANET中,车辆每100ms在CCH中广播一次安全消息,安全消息使用数据链路层头部的类型字段0x88dc标识,数据帧内容由车辆状态信息和自定义附加字段构成.安全消息收发功能模块包括发送与接收两个单元.发送单元在高精度定时器注册发送时间,时间到达后发送函数被执行,函数将在Openwrt系统临时目录读取位置信息,与其它车辆状态信息共同生成数据帧,然后送入CCH专属队列进行发送.接收单元使用单独线程保持对数据帧类型为0x88dc的数据的接收,解析数据后通过经纬度、加速度、行驶方向计算车辆在下一时刻的距离,从而判断安全状态.安全距离的设置接受上层控制,当安全状态不佳时,单元将广播警告帧.
监听接口功能模块首先使用IW创建虚拟网卡,接着使用libpcap对虚拟网卡覆盖范围的数据进行监听,通过解析radiotap帧头部、分析网卡占用时间等操作生成网络状态数据.
功率控制功能和信道带宽控制功能通过ath9k 提供的debugfs机制实现,通过此机制能够访问ath9k的主结构体ath_softc,对驱动状态进行实时控制.功率控制提供了在网卡性能范围内的发射功率实时调整功能.信道带宽控制提供了10MHZ和20MHZ两种发送带宽的调整功能.
4 部署与测试
4.1 平台部署
NETGEAR WNDR 3800是一款专为WiFi无线服务设计的路由器,路由器参数如下:CPU频率680MHZ、18MB Flash、128MB RAM、Atheros AR9220无线网卡、12V POE适配器供电.该设备成本较低,能够运行Openwrt系统,使用ath9k无线驱动,且具备GPS模块接口、运行稳定,符合系统对物理硬件的需求.本文选用此款路由器与环天GPS接收器作为硬件设备,在Ubuntu16.04平台上对Openwrt源码与修改后的Openwrt无线子系统代码进行交叉编译,生成OBU固件与RSU固件安装至硬件设备.控制单元选择floodlight控制器进行开发,在Ubuntu16.04主机上运行.应用模块使用C++代码开发,运行在windows 10主机之上.Ubuntu主机、windows主机与RSU通过以太网交换机进行连接.
4.2 性能测试
本文首先对设备通信的时延与吞吐量进行了测试,测试设备为两台OBU,测试参数为:5880MHz频率、10MHz带宽、24dbm发射功率、OBU相距10米距离静置.时延通过Ping软件测试,共进行10次测试,每次测试持续5分钟,单次测试结果取5分钟内时延的平均值.吞吐量通过Iperf软件测试,共进行10次测试,每次测试持续5分钟,单次测试结果取5分钟内吞吐量的平均值.测试结果如图4所示.
图4 时延与吞吐量测试图Fig.4 Delay and throughput test
从图4(a)中可以看出10次时延测试的结果稳定在1.4ms左右,远小于车联网中要求的100ms通信时延,符合WAVE协议规定.从图4(b)中可以看出节点间平均吞吐量稳定在12 Mbits/sec至13Mbits/sec之间.在10MHz带宽时,IEEE 802.11p协议的理论吞吐量13.5Mbits/秒,考虑到无线信道的不稳定性和实际通信中开销的不确定性,上述测试结果符合WAVE协议规定.
接着本文对在不同距离下节点间的丢包率进行了测试,测试设备为OBU、RSU,测试参数为:5880MHz频率、10MHz带宽、24dbm发射功率.在户外空旷道路条件下,以50米为调整间隔不断增加测试设备间的距离,测得节点间距离与丢包率的关系图如图5所示.
图5 丢包率测试图Fig.5 Packet loss rate test
从图5中可以看出,OBU与RSU在距离小于250米时丢包率较低,当距离超过250米后,丢包率上升严重.在最大发射功率33dbm下,VANET节点的理论通信距离为300米,最大通信距离为1000米,本文在24dbm的发射功率下的测试结果的有效通信距离在250米左右,符合WAVE协议规定.
4.3 功能模块测试
本文对信道切换功能与安全消息收发功能进行了测试.
信道切换功能测试首先使用两台RSU分别工作在178与179信道,保持信道监听,记录信道中数据产生与消失的时刻.接着使用一台OBU在178保持发送数据,并在某一时刻将信道切换至179信道.最后计算178信道上数据消失时刻与179信道数据出现时刻之差作为信道切换需要的时间.经过多次测试,平均信道切换时间为2.9ms,小于4ms的保护间隔限制.
安全消息收发测试使用两台安全距离预先设置为5米的OBU,将两台OBU相距20米放置,随后将OBU距离不断减小,直至相邻.使用笔记本电脑登录其中一台OBU设备,观察到安全消息处理模块在控制台正确输出了与实际设备距离匹配的数值,在车辆距离小于5米左右时,控制台发出了安全警告,测试结果证明安全消息收发功能有效工作.
4.4 应用测试
本文以第二章中提出的信道时间控制实例对系统可编程接口进行了测试.首先部署系统,将TCCH、TSCH动态调整方案在应用模块中使用C++代码调用本文描述的数据读取接口与控制接口进行实现.使用1个RSU与5个OBU进行测试,OBU在CCH中定时发送安全消息,在SCH中则使用iperf软件发送大量IP数据,模拟SCH占用率高的状态,CCH占用率低的情况.依次部署原始方案与改进方案,对所有节点信道持续时间统计,得到测试结果如图6所示.
图6 信道时间测试图Fig.6 Channel time test
从图6中可以看出,使用原始方案后,在CCH占用率低,SCH占用率高时,TSCH并未发生变化,始终保持在50ms.使用改进方案后,在CCH占用率低,SCH占用率高时,TCCH、TSCH按照预先规定的策略进行变化,TSCH每经过100ms的轮次增加2ms,在第5次增长到60ms,而后保持.
经过100s之后,统计使用原始方案的5个OBU中iperf成功发送的数据量为70.4Mbyte,统计使用改进方案的5个OBU中iperf成功发送的数据量为83.9Mbyte,同时所有OBU节点的安全消息收发模块均正常接收到了来自其它OBU的安全消息.以PThroughput代表改进方案与原始方案的吞吐量提升率,其计算公式如公式(4)所示.
(4)
应用测试结果表明,在不影响整体通信质量的前提下,改进后方案的SCH的总体吞吐量比原始固定方案提升了19.2%.
上述应用测试方案部署全部在应用单元完成,证明软件定义的VANET系统应用模块提供的编程接口能够有效获取节点信道占用状态,并下发调整命令至所有节点,节点能够接收并正确执行下发的命令,实现新业务的灵活部署,不需要更改下层网络设备固件.
从实验结果可以看出,系统能够在通用硬件上实现,网络节点设备性能指标均符合WAVE协议规定,节点功能模块有效工作,应用层支持研究人员灵活部署相关应用以提升VANET的网络性能.
5 结束语
本文设计并实现了一个低成本、灵活的软件定义VANET系统,通过重构OBU、RSU,新增控制单元与应用模块实现了系统的可编程特性.测试结果表明,系统硬件性能符合WAVE协议标准,且具备丰富的可编程接口,解决了当前VANET节点耦合度高,架构灵活性差,缺乏实际设备的问题,能够在应用模块灵活部署应用方案,提升VANET性能表现.