APP下载

LTE-V2X 协议栈开发及通信测试①

2022-06-29刘建蓓张志伟杜绎如阮仕峰唐书宇

计算机系统应用 2022年6期
关键词:接收端数据包时延

郭 星, 刘建蓓, 张志伟, 惠 飞, 杜绎如, 阮仕峰, 唐书宇

1(长安大学 信息工程学院, 西安 710064)

2(中交第一公路勘察设计研究院有限公司, 西安 710065)

通信技术与智能交通系统的迅速发展使得车联网(Internet of vehicles, IoV)成为目前的研究热点. 车联网能够借助新一代通信技术, 使得车与车(vehicle to vehicle,V2V)、车与人(vehicle to pedestrian, V2P)、车与路边设施(vehicle to infrastructure, V2I)能够实现全方位动态信息实时交互, 即实现V2X 通信(vehicle to everything,V2X)[1], 进一步提升汽车智能化水平, 实现智能、高效、安全的智能运输系统. 车联网环境下, 汽车在分享自身信息的同时也接收其他汽车的信息及路况信息, 从而增强自身的环境感知能力达到协同控制, 对驾驶员提前预警潜在的危险, 减少交通事故、交通堵塞的发生.

目前, 行业内对于V2X 通信技术路线包括两条,一条是基于IEEE1609 系列标准的车载环境无线接入(wireless access in vehicular environment, WAVE)技术,是一种由IEEE 制定的专用于车联网环境中的无线接入技术. WAVE 理论研究发展较早, 目前在欧美、日本积极开展了相关的技术研究以及测试工作. 另一条技术路线是由我国主导推动的基于3GPP R14 的长期演进车对外界信息交互技术LTE-V2X (long term evolutionvehicle to everything)[2,3]. 2017 年3 月, 3GPP完成了Release 14 版本的LTE-V2X 标准化[4], 其作为面向车路协同的通信综合解决方案, 在高速移动环境中实现低时延、高可靠、高速率、安全的通信, 满足车联网的多种应用. 而目前在国内, 正处于LTE-V2X 相关标准制定阶段, 主要以大唐、华为、高通等通信产业链企业、车企和电信运营商为主的产业阵营推进发展[5].

LTE-V2X 对LTE 蜂窝网络环境下的车辆主动安全应用进行了通信优化, 采用蜂窝方式与直通方式相结合的方式, 支持包括V2I、V2V、V2P 等各类场景应用. 蜂窝式利用基站作为集中式的控制中心和数据信息转发中心, 来完成集中式调度、拥塞控制和干扰协调[6], 用户设备通过上行链路(uplink, UL)向基站传输V2X 消息, 基站再通过下行链路(downlink, DL) 将V2X 消息传输给其他用户设备, 用户设备与基站之间通过Uu 接口通信. 直通式加入了副链路(sidelink,SL)的概念, 使得车辆消息不需要经过基站的转发, 通过设备到设备通信接口PC5 完成车车之间的直接通信. LTE-V2X 中, 可以设置普通路侧单元(road side unit, RSU)和基站类型的RSU, 两种RSU 与用户设备通信所使用的接口不同, 从而进一步增强对各类V2X操作场景的支持. 如图1 为LTE-V2X 的应用场景, 在该场景中, 基站类型RSU 发挥中继功能作用, 通过基站转发无线蜂窝数据, 在车辆间进行数据交换, 这种方式采用LTE-V2X-Cell 相关协议, 而当需要车车直接进行通信时, 采用LTE-V2X-Direct 相关协议完成数据交换.

图1 LTE-V2X 车联网场景

国内对于车联网研究起步相对较晚, 但发展势头迅猛. 为实现车联网通信, 行业内一些相关的车企及终端设备厂商也纷纷推出各自支持国标协议栈的V2X通信终端, 如万集科技、东软、星云互联以及高新兴等. 然而由于在技术标准中相关规定较泛化, 导致不同企业在开发过程中对标准的理解有偏差, 出现定位信息不准确、通信设备底层硬件不兼容、消息帧结构不一致、通信性能不稳定等问题[7], 产品体系结构间存在差异, 因此目前还不能实现全面互联互通, V2X 通信产品的商业化规模应用仍需努力推进. 国内一些高校和科研机构也在车联网方面展开研究, 这些研究主要集中在理论分析与模型仿真中[8], 也有部分试验场内部测试[9]与车联网终端设计[10,11], 但都缺少LTE-V2X 协议栈的设计与实现以及针对协议栈的通信测试. 因此, 设计一款满足协议要求、实现可靠通信的LTE-V2X 协议栈对于推进车联网设备成熟落地具有重要意义.

1 LTE-V2X 协议栈总体设计

LTE-V2X 协议栈是实现V2X 通信的前提, 采集到的车辆状态信息和位置信息由协议栈进行编码封装,并通过不同的空中接口发送到其他车辆设备、路侧设备或基站. 根据3GPP 发布的TS22.185[12]、TR 36.885[13]以及中国IMT-2020(5G)推进组[14]对LTE-V2X 协议栈的性能要求, LTE-V2X 协议栈应满足的主要性能要求如表1 所示.

表1 LTE-V2X 协议栈性能要求

协议栈总体分层如图2 所示, LTE-V2X 协议栈应该包括应用层、网络层、数据链路层和物理层. 相比于WAVE 系统协议栈[15], LTE-V2X 协议栈网络层有着明显变化. 在WAVE 中无线资源按照信道划分来分别提供不同的业务, 而在LTE 系统中, 无线资源都在资源池中, 发送消息时选取空闲的资源块进行发送, 以此提高资源的利用率[16]. 因此LTE 系统没有信道概念,即没有WAVE 系统中信道切换相关内容, 而是增添适配层对协议栈原语进行适配.

图2 协议栈总体分层

其中, 协议栈各层的功能为:

1) 应用层. 主要包括用户应用和消息层, 消息层即不同的应用程序中所使用的短程无线接入专用通信消息的数据帧和数据元素的集合, 向上支持用户应用, 向下对接网络层.

2) 网络层. 网络层由数据子层和管理子层两部分构成. 数据子层传输应用间的数据流, 以及不同管理实体间或管理实体与用户应用间的数据流. 管理子层主要实现系统配置与维护功能.

2 硬件平台设计

通过对协议栈总体功能以及协议栈各层进行分析,协议栈硬件平台设计应包含两部分: 搭载协议栈的主控平台和通信模组. 其中, 网络层以上的相关协议在主控平台运行, 网络层以下的数据发送与传输由通信模组实现.

考虑到车联网主控平台需要具备优异处理能力以及低功耗低成本等特性, 本文采用恩智浦处理器平台IMX6QP 搭建协议栈主控平台. 该处理器是基于Cortex A9 架构的4 核ARM 芯片, 运行频率可达1.2 GHz, 性能优越, 并且该平台提供高清多媒体接口(high definition multimedia interface, HDMI)、全球定位系统(global positioning system, GPS)接口、千兆以太网接口及用于汽车应用的车辆控制器局域网(controller area network,CAN)接口等, 满足扩展需求, 适合汽车应用开发.

通信模组采用中兴通讯的ZM8350 通信模组, 该模组支持5.9 GHz 频段的单PC5 接口, 可驱动V2V,V2I 以及V2P 的信息交换, 并支持高精度定位. 定位模块采用北斗接收机, 可接收北斗系统和GPS 系统的定位数据. 设备整体图与具体硬件组成如图3 所示, 其中通信模组与主控平台固定置于设备内部.

图3 设备硬件组成

3 LTE-V2X 协议栈设计

V2X 消息构造以及消息内容填充是协议栈需要实现的主要功能. 上层应用通过协议栈接口对协议栈进行消息注入与传出, 通过创建本地套接字方式进行通信. 图4 为协议栈数据流, 其中车联网相关信息由传感器采集, 在消息层创建消息帧并填充, 消息帧编码后送入网络层, 网络层根据消息类型对消息帧进行封装并送入接入层, 接入层对数据包封装后交给物理层由相应的空中接口发送. 在接收端, 接入层在指定频段接收到数据包后先进行筛选, 拆封帧头送入网络层, 网络层根据数据子层封装的帧头再次筛选, 剥离数据子层帧头送入应用层解码, 最终将信息交给上层应用.

图4 协议栈数据流

协议栈各层之间均为模块化设计, 每一层开发完成后都进行独立封装, 每层暴露相关接口与其他层进行交互.

3.1 协议栈网络层设计

协议栈网络层是协议栈核心内容, 包括数据子层和管理子层两部分, 图5 为管理子层与数据子层主要操作流程. 管理子层实现对消息订阅者以及提供者的管理, 并对消息订阅者及提供者发出的请求进行处理,生成专用业务公告(dedicated service advertisement,DSA)消息. 数据子层是协议栈的关键协议, 负责对应用层传输的消息进行封装, 并对MAC 层的消息进行解封, 再按照消息中帧头规定的参数对数据进行传递, 最终形成专用短消息(dedicated short message, DSM). 数据子层的设计中, 有关接入层的相关接口由通信模组提供. 管理子层和数据子层处于并列状态, 管理子层和数据子层的具体设计需根据各自功能来完成.

图5 管理子层与数据子层相关操作

3.1.1 管理子层设计

管理子层说明如何获取消息传输时需要的参数,其中专用管理实体(dedicated management entity,DME)负责不同通信实体之间的调度, 包含4 项功能:应用注册、根据应用要求发送或接收DSA、管理信息库(management information base, MIB)配置与维护, 各项功能的具体设计如下.

1) 应用注册

上层应用需先在DME 处注册成为一个用户应用后, 才可以使得DME 管理DSM.

2) 短消息服务管理

车联网通信中, 上层应用需要发送DSM 到其他设备, DME 接受请求后, 在管理信息库中生成对应的服务请求条目, 上层应用将相关数据传入数据子层, 由专用短消息协议(dedicated short message protocol, DSMP)创建DSM 帧头, 适配层创建适配层帧头. 在接收端接收到DSM 时, DME 识别DSM 中的应用标识, 筛选收到的DSM 是否为上层应用所感兴趣的, 从而决定是否采用该DSM 帧.

3) 业务公告服务管理

DSA 用于向车辆用户广播可选服务信息, 发送端上层应用向DME 发起服务请求, DME 在管理信息库生成请求条目. 由于DME 不具备直接向接入层传递数据帧的能力, DME 根据请求生成DSA 并向DSMP 发起请求, 之后在数据子层由DSMP 进行下一步封装,DSA 帧构建流程如图6, DSA 帧头定义为struct DME_DSA_Hdr, 包含DSA 帧头定义及DSA 扩展域定义. DSA消息的帧包含帧头和应用信息两部分, 这些内容都应封装在DSM 的data 部分, 与设置好的DSM 帧头一同打包, 通过套接字发送. 在接收端想要接收感兴趣的消息时, 同样向DME 发起服务请求, 由DME 判断该公告是否有感兴趣的内容从而选择是否采用.

图6 DSA 帧构建流程

4) MIB 配置与维护

MIB 负责对协议栈的应用配置信息及状态信息进行存储与维护, DME 可通过发起查询或设置请求对MIB进行操作. MIB 数据库结构体定义为struct tDMEMIB,声明数据库中各项数据并存储临时MIB 数据. DME_MIB_Set()与DME_MIB_Get()函数分别用于将管理数据库信息保存到MIB 文件或读取MIB 文件, 业务的应用标识对应一个MIB 信息表.

3.1.2 数据子层设计

数据子层包括DSMP 和适配层. DSMP 主要功能是在不同通信实体间传输数据. 数据从一个通信实体发送, 通过请求原语request, 分别经过应用层、网络层、数据链路层和物理层逐层完成数据的传递, 数据在底层通过空中接口发送, 到达接收端的接入层, 在接收端实体再经过逐层传递, 最终将数据传输到接收端的应用层, 交付给各个应用.

当数据从上层应用层接入之后, 首先封装DSM 帧头, DSM 帧头用来标定数据在向上层以及下层传输的部分参数, 包括DSMP 版本、可选域指示、预留、扩展域、应用标识、数据长度以及数据, DSM 帧头定义为struct DSMP_Hdr, 并嵌套DSMP 扩展域结构体struct DSMP_Ext, DSM 消息帧结构如图7. 其中数据部分以及数据长度都是由应用层处理, 并进行数据的填充和封装. 本文中DSMP 版本取值为0, DSMP 可选域指示取值为1 表示后面的扩展域出现, 取值为0 表示后面的扩展域不出现. 其中, 预留域的预留比特取值0,扩展域预留可用于其他信息, 包含其他信息标识、其他信息长度和其他信息内容3 部分, 应用标识AID 用于区分应用服务商的各种不同应用. 数据长度表示应用层数据实体的字节长度, 数据即为数据实体. 构建不同DSM 帧头接口的定义见表2.

图7 DSM 消息帧结构

表2 DSMP 帧头创建相关接口

适配层的功能是提供底层接入技术与上层之间的传输适配, 接收由上层发来的DME 数据包或DSMP数据包, 根据待发送数据包所使用底层接口的不同, 将数据包传输到对应的底层接入接口并传输数据包, 或根据底层接入的数据包区分其相应的上层协议类型, 将数据包递交给上层协议栈. 如果适配层无法区分接受到的数据包相应的上层协议类型, 则丢弃该数据包. 适配层帧包含适配层帧头及适配层有效载荷, 适配层帧头为协议类型, 用于指示上层数据包所使用的协议类型,适配层帧头定义为struct ADA_Hdr, 适配层有效载荷封装上层数据包, 创建适配层帧头接口为CreatAdaHdr().

适配层帧头、DSM 帧头、DSM 消息体初始化完成后, 将以上内容放到同一缓冲区, 即形成一个完整的DSM 消息.

3.2 协议栈应用层开发

应用层处于协议栈的上层, 负责对顶级应用层和下层网络层传输的消息分别进行封装和解封, 按照其他帧头规定的参数进行数据传递, 并在不同的通信实体间进行数据收发.

按照国标规定, 协议栈应用层分为用户应用和消息层, 消息层需要完成5 类基本消息体数据结构的定义, 包括车辆基本安全信息(basic safety message, BSM),地图消息(map message, MAP), 信号相位与时序消息(signal phase and timing message, SPAT), 路侧单元信息(roadside information, RSI)路侧安全信息(roadside safety message, RSM). 5 个消息体由专用于数据表示的抽象语法标记(abstract syntax notation one, ASN.1)语言进行描述, 适用于结构化数据传输[17], 遵循“消息集–数据帧–数据元素”的逻辑, 数据集编解码采用非对齐压缩编码规则(unaligned packet encoding rules, UPER).

3.2.1 BSM 消息体设计

根据ASN.1 标准对于BSM 消息定义以及消息体数据集之间的嵌套关系, 结构体BSM 定义包含两个部分: 结构体BSMRequired 和结构体BSMOptional.BSMRequired 包含位置、速度、高度、经纬度、航向角等车辆基本信息, BSMOptional 包含方向盘角度置信度、位置综合精度、防抱死制动状态、制动踏板状态等. 这些信息由CAN 总线以及GPS 定位模块获取,CAN 总线信息及定位数据通过同步信号对齐, 存储在消息层, 通过BSMCreate()函数创建BSM 并填充相关信息.

在完成BSM 消息的构造后形成.asn 文件, 使用编解码编辑器asnlc, 在BSMEncode_To_()函数中选择UPER 编码方式对.asn 文件进行编译, 生成应用层设计所需要的消息体数据结构, 最终将BSM 填充到DSM中并发送.

3.2.2 其他消息体设计

其余4 类消息体(MAP、SPAT、RSI、RSM)构造与BSM 消息相同, 但消息传输机制不同. 这四类消息是通过RSU 广播给车辆, 之后在车辆之间进行消息的传输. 车辆接收消息的过程为: RSU 填充消息报头(信道号、优先级等), RSU 结合MAP 数据部分进行套接字传输, 对消息进行广播. 消息的发送过程为: 车辆设置消息报头, 车辆对消息进行套接字传输, 发送预定义的DSM 并进行广播.

4 LTE-V2X 通信性能测试

LTE-V2X 协议栈开发完成后需要进行实际场景下的通信测试, 包括消息收发测试及通信性能测试. 测试需两套协议栈分别作为发送端和接收端, 测试中使用Putty 软件通过串口连接两套设备进行操作.

4.1 消息收发测试

测试内容主要包括5 类消息集在协议栈上的发送与接收, 即协议栈支持发送端设置BSM、MAP、SPAT、RSM、RSI 五类消息类型. 测试主要面向车车通信, 因此在消息收发测试中使用BSM 消息进行测试, 发送端程序运行结果如图8(a). 接收端运行接收消息程序, 监听空中接口发来的消息, 结果如图8(b).

图8 消息收发测试

发送端构造BSM 消息后对消息体进行打印输出,BSM 消息体具体内容见图9, 主要包括用户标识、当前车辆位置信息、车辆各类加速度信息、车辆档位、刹车等状态信息、车辆尺寸信息、划分的车辆类型以及其他扩展信息. 消息填充完成之后调用底层接口发送消息, 接收端接收到BSM 消息后提取数据包中的消息体, 对消息体进行分割并打印消息体内容. 由测试结果可以看出发送端和接收端消息内容打印一致, 协议栈收发消息运行正常, 能够实现基本消息的收发.

图9 BSM 消息体具体内容

4.2 通信性能测试

为测试协议栈在不同真实场景下的通信能力, 本文选取静止与直行两种典型交通场景, 使用2 辆搭载协议栈的车辆开展通信测试. 在实际场景中车辆通信100 m 范围以内的通信较为关键, 因此测试着重关注车辆运动状态下100 m (半径)范围内的设备通信情况.

4.2.1 测试指标选取

本文选取时延(Delay)和丢包率(PER)两个指标测试协议栈的通信能力. 其中时延是指从数据分组(或报文)从发送端应用层服务数据单元开始到达接收端应用层服务数据单元所需的单向传输时间. 一般情况下, LTE-V2X 的端到端时延与接入层参数、网络拥塞状况等相关, 最终影响时延、分组丢失率等一系列指标. 对于LTE-V2X 现阶段的应用需求, 为了满足实际车联网应用, 端到端时延应保持在100 ms以内[18]. 丢包率是指在一定覆盖范围和信道质量条件下, 接收端丢失应当收到数据包的概率. 按照要求在规定覆盖范围内, 对于普通安全应用最大时延100 ms 的要求下接收可靠性不得低于80%.

4.2.2 测试场景及结果分析

1) 静止场景下通信测试

如图10 所示两辆测试车分别静止停在直行道路上不同的位置, 其中一方为发送端另一方为接收端. 测试过程中发送端以10 Hz 频率发送数据包大小为300 字节的BSM 消息, 每次发送200 个数据包共发送10 次, 消息发送方式为半静态调度. 查询并记录发送端与接收端的日志, 分别计算每次实验的时延与丢包率,实验结果如图11 所示. 最后将两辆测试车分别静止停在直行道路相距200 m 的位置上, 测试过程中发送端以10 Hz 频率分别发送数据包大小为150 字节、300 字节、600 字节的BSM 消息, 每次发送200 个数据包共发送10 次, 计算不同数据包长度下的通信时延和丢包率, 实验结果如图12 所示.

图10 静止场景

图11 静止场景下不同距离协议栈通信性能测试

从测试结果可以看出, 在600 m 通信范围内通信距离对通信时延影响不大, 每处平均值约为16 ms, 时延在5 ms 左右上下浮动, 上分位数值均在20 ms 以内.当通信距离增加至800 m 时, 通信时延较之前有所增大但变化不明显, 平均值和上分位数分别在20 ms 和22 ms 左右. 丢包率在600 m 通信范围内相对稳定, 平均值在3%左右, 总体值在4%以内. 随着通信距离增至800 m, 丢包率较之前有明显的增加, 平均值接近6%且数据上下浮动较大. 由静止场景下通信性能测试结果可以看出, 通信距离为800 m 时通信时延与丢包率相对较大, 原因是LTE-V2X 其本身存在有效通信距离的限制. 而在数据包长度变化条件下, 由图12 可以看出随着数据包长度的增加, 通信时延略有增加且小于5 ms, 丢包率仍保持在3%左右, 由此可见数据包长度对于时延及丢包率的影响并不明显.

图12 静止场景下不同数据包长度协议栈通信性能测试

2) 直行道路下通信测试

如图13 所示, 两辆测试车辆在直行道路上以相同的速度匀速行驶(跟驰), 车辆间距保持在50 m 左右,分别测试车速为20 km/h、40 km/h、60 km/h 的时延与丢包率. 其中, 前方车辆作为发送端, 后方跟驰车辆为接收端, 其他相关参数设置同静止场景实验, 跟驰场景下实验结果如图14.

图13 跟驰场景

图14 跟驰场景下协议栈通信性能测试

跟驰场景下, 通信时延随速度增大而增大, 而丢包率受速度影响较小, 数据相对稳定, 平均丢包率均小于3%. 相较于静止场景下, 动态场景下时延异常值增多,但总体数据特征相似, 平均值均小于20 ms.

上述两种场景下的协议栈通信性能测试结果表明车辆距离对于时延与丢包率均有影响. 其中静止场景测试中随着车辆相距距离增大, 时延与丢包率都有所增加. 跟驰场景测试中随着车速逐渐增加时延变化较为明显, 而丢包率与速度呈弱相关. 除此之外, 在两种不同场景下通信时延与丢包率虽有所波动, 但仍符合车联网普通安全相关应用的需求, 说明协议栈总体通信性能良好.

5 结论与展望

本文针对目前车联网通信需求以及标准要求, 为LTE-V2X 协议栈提供一套切实可行的系统硬件平台和软件解决方案, 并对设计的协议栈进行不同场景下的通信测试. 测试结果表明该协议栈能够实现V2X 消息收发, 满足实际车联网场景的应用, 为车联网通信终端落地提供现实借鉴意义. 然而, 本文协议栈设计中没有考虑通信安全问题, 且测试指标选取与测试场景设置相对单一, 未能模拟真实道路路况或多车信号耦合干扰下系统的通信性能. 未来应进一步完善通信安全机制, 设计高速移动场景与包含遮蔽物场景下的多指标通信测试, 并考虑多车环境下的通信拥塞等问题.

猜你喜欢

接收端数据包时延
基于时隙ALOHA与NOMA的通信系统性能分析
基于光载波携能的制导武器无线携能通信研究
基于扰动观察法的光通信接收端优化策略
计算机网络总时延公式的探讨
计算机网络总时延公式的探讨
基于物联网的IT运维可视化管理系统设计与实现
手机无线充电收发设计
《舍不得星星》特辑:摘颗星星给你呀
C#串口高效可靠的接收方案设计
基于盲波束形成的MIMO雷达稳健参数估计