- 鸿课堂∣大唐高鸿王世良:C-V2X模组架构的定义与思考 - 高鸿智联 — C114通信网
一、C-V2X终端对于模组的要求
我们先从C-V2X的系统架构作为切入口。
下图展示了一个最简单的C-V2X系统。路侧设备RSU和车载设备OBU可以通过C-V2X的PC5接口直接通信,还可以通过C-V2X的Uu接口,也就是我们最常用的4G/5G移动网络与后台的云之间的相互通信。当然回传接口,尤其是对RSU而言可以不用4G/5G移动网络,而采用以太光纤等有线网络。另外,在现有的系统中,RSU一般会配备一些路侧设备和基础设施,常见的有红绿灯,雷达、摄像头等。
在这个系统当中,C-V2X模组主要服务的对象是两类终端——RSU和OBU。
从网络角度分析,这两类终端设备的地位不同。RSU是固定网络设备,而OBU是移动网络设备。
从技术角度分析,RSU和OBU的组成类似。核心部件都需要有MCU((Microcontroller Unit),配备GNSS(Global Navigation Satellite System)模组获取位置和时钟信息,需要HSM(Hardware Security Module)进行信息安全的处理,还需要Uu模组负责回传,最主要的是需要PC5的模组来负责直接通信,因此PC5模组是RSU和OBU通用的核心部件。
C-V2X网络通信方式与传统的4G/5G蜂窝数据不同。4G/5G网络都会部署基站,基站对于接入的终端(手机等移动设备)具有控制功能,因此在链路上两者的定义也不同。我们一般称一个为downlink,一个为uplink。但是对于C-V2X PC5直接通信而言,所有设备的地位在通信角度上都是对等的,因此在链路上不能用downlink/uplink作为区分。在3GPP的标准上,我们叫sidelink。所以从通信对等的角度来看,RSU和OBU是完全相同的,仅在所承载的业务上存在区别,两者完全可以使用同一款模组。
由上述可见,C-V2X模组也是一个通信模组。但是与常见的通信模组相比有显著差异——传统通信系统只需要做好底层通信,而C-V2X却是独立自成体系的协议族。
传统通信系统在网络协议中,需要解决的是物理层和数据链路层的通信,网络层可以直接复用IP协议,传输层可以复用TCP、UDP协议,应用层可以复用HTTP、MQTT协议,这些都是特别成熟的协议,也有丰富的生态业务。
C-V2X模组的物理层和数据链路层为3GPP定义的LTE-V2X,网络层则是CCSA定义的DSMP,应用层是基于CCSA定义的消息级的应用场景。
与传统的通信系统相比,C-V2X系统具有以下特点:
第一、它是一个从物理层到应用层都进行了定义、自成体系的一个系统;
第二、它是一个跨多行业的系统,涉及通信圈、汽车圈、交通圈等;
第三、不同于传统通信主要关注单播,C-V2X是一个优先关注广播的系统,主要用于发送短消息。因此,在指标方面并不会要求特别高的数据吞吐量,而是对丢包和时延更加敏感。
第四、C-V2X的模组是一个针对车联网深度优化的系统,在增强了针对性的同时也牺牲了普适性,因此需要一定程度的跨层优化才能达到性能最优。比如说LTE-V2X的数据传输基于半持续调度的机制,因此,应用层在发送数据时,就只有在数据包的起点和周期与底层的半持续调度机制匹配起来时才能取得丢包和时延的最优,并不能像传统通信那样只要有数据就可以随时发送。另外,系统在容量大时都会发生拥塞,那么底层系统发生拥塞时,底层会返回测量结果,这时也需要应用层来考虑降负荷。因此,C-V2X是一个需要跨层优化的系统。
综上所述,C-V2X通信系统是一个特点鲜明的系统,因此也要求C-V2X模组具有更多的可能性,这就是跟其他通信模组的不同之处。二、如何定义C-V2X模组
C-V2X对于模组的具体要求,主要包括四点:车规级、合规性、灵活性和开放性。
1、车规级是对硬件的要求,主要如下:
尺寸:(SMT要求≤40mmmm)
工作温度:(-40~+85℃)
高温高湿:(+85℃,85%RH 1000小时)
温度冲击:(-40~+85℃ 1000次)
2、合规性是指根据符合行业标准,保证互联互通。
由于C-V2X是一套自成体系的标准而且还是新技术,相关标准也尚在完善过程中,在这个背景下,合规性也就显得异常重要。以空口配置为例,之前的车联网系统采用的空口配置都是10兆赫兹带宽,资源池的配置是整个带宽一个资源池,每个子信道的大小为10,共5个子信道,无论是OBU还是RSU都共享相同的资源池。另外Bitmap的长度是20,这样就不需要考虑预留子帧的问题。
随着为车联网应用正式颁发了20兆赫兹专用带宽以后,CCSA定义了新的配置,将20兆分成了两个10兆的资源池,每个资源池的大小能源为10兆,每个池的子信道大小仍是10,每个资源池有5个子信道。其中,低频的资源池是OBU发送专用,高频的资源池为RSU发送专用,同时两个资源池都可以作为接收资源池。另外Bitmap的长度也修改为100,由于100不能被10240整除,所以就需要考虑预留子帧。
空口配置仅仅是合规性的一个例子,其他例子还包括不同业务使用的AID是否规范,接口字段是否符合标准定义。以上这些都会对C-V2X模组在应用过程中能否正常收发数据产生影响,所以合规性也是C-V2X模组的一个重要方面。
3、灵活性是指,可以根据具体需求选择应用逻辑的处理方式。
在车联网的系统里,C-V2X模组的功能涵盖到协议栈的哪一层是一个比较值得深入探讨的问题。下图呈现了C-V2X协议栈层结构,自下而上分别是射频、物理层、MAC层、RLC层、PDCP层、网络层(其中网络层又分成了DSM层和适配层两个子层)、安全层、消息层和应用场景。那么C-V2X模组应该将接口开放到哪一层呢?
按照传统模组的思路,可以将接口开放到数据链路层之上,之下的部分属于传统通信圈的特长,而之上的部分则为应用圈的特长。
我们为了便于区分,将第一种称为通信的归通信,第二种称为应用的归应用,这两种方式在应用过程中需要根据具体需求而定。
通信的归通信:如果开放到数据链路层,那么对OBU而言,高层可以由Tier 1或者主机厂完成开发,RSU可以由RSU的制造商或者运营商负责开发。
应用的归应用:接口也可以开放到应用层,因为应用层之下的处理流程都在标准上进行了详细的定义,包括帧的格式,数据收发的行为等。如果C-V2X模组将在这几部分的工作都完成,那么在处理应用场景时,就不需要关注数据传输的细节和影响互联互通的流程,仅需要关注应用逻辑的处理。
通信的归通信方式
按照这种方式划分需要再仔细研究网络层的标准,下图展示了网络层数据面的处理,数据面的处理是比较简单的。
来自应用层的数据先到达DSMP层,加上DSMP的包头,然后再到达适配层,再加上适配层的包头,最后作为接入层的净荷发送到PDCP层,作为PDCP的SDU。比较复杂一点的是控制面,按照标准的规定,在发送或接收一个数据包时,随着数据包要附带一些原语作为控制字段来指示上层或下层应该如何对数据包进行处理。以发送为例,来自应用层的数据包需要指示这个数据包的AID和优先级,数据包到达网络层之后,网络层会将这些数据再指示给适配层。
但是,适配层在向接入层发送时就不能直接发,因为这两个字段空口都不认识,因此适配层就需要做一个工作,就是将AID和优先级进行转换。AID需要转化成destination Layer-2 ID,优先级则需要转换成PPPP。这个工作的完成需要基于3GPP定义的一个配置文件MO(Management Object Configuration),MO保存着AuthorizedV2XServiceList,也就是授权的V2X列表这样一个字段,这个字段将规定的某个具体的AID应该映射成哪个destination Layer-2 ID。另外,这个配置文件中还包存着PPPPtoPDBMappingRule的一个字段,它规定了PPPP到PDB的映射规则。那么再往前一步,从优先级到PPPP的映射则是在CCSA的网络层规范中完成的,这个工作也需要适配层来负责。
因此从界面清晰的角度来讲,3GPP标准范畴的处理,最好应该封装在模组内部,也就是说如果采用通信归通信这种划分方式的话,最合适的切割界面应该是在DSM层与适配层之间。
应用的归应用方式
下图展示了网络层、安全层、应用层这些高层更多的处理细节,我们从下往上看可以得到多种划分方式。
如果在网络层与与安全性层之间划分,这两层中间传递的数据定义都非常明确,是标准的成帧数据。
如果再向上一层划分在安全层与消息层之间,这两层之间的数据定义也非常明确,是标准的成帧数据,如果划分在这一层,那么C-V2X模组即保证了向高层递交的数据都是合法的,这样能够大大地简化应用的处理。
如果再向上半层,可能就不是很合适。这一层的数据对于发送侧是ASN.1编码前的杂乱数据,对于接收侧则是ASN.1解码后的杂乱数据,这些数据都没有标准的帧格式定义。如果在两层之间,可能还是在两个处理器之间进行传输的话,那无疑还要再进行一次解帧与组帧的过程,从端到端传输的角度而言就增加了四次的处理,分别是两次解帧和两次组帧,那么对于时延敏感的C-V2X应用而言,这是有害无益的。
当然划分的接口可以再向上移一步,对于数据进行一定的预处理,这样一来可以减少传输的数据量;再者经过预处理之后,可以减轻应用处理器处理应用场景时的复杂度,这样做就是有意义的了。但是这个接口没有标准化,需要根据具体的应用场景进行自定义。
最后,划分的接口可以再向上移一步,可以对数据进行完整的处理,并最终输出交通安全预警。这种方式比较适合于辅助驾驶,因为预警的结果可以直接输出到HMI进行提示就行了。自动驾驶如果按照这种方式划分,并不是很合适,因为自动驾驶的主处理器,需要更多的细节与其他传感的数据进行融合。
除了上述业务层面,模组的管理也很重要,它极大地决定了模组的易用性。比如前面讲的各种空口的配置,首先模组能够提供支持,其次是需要灵活,如果每个配置都要单独版本,那么使用时将会非常的不方便,最好的处理方式是一个版本可以通过修改参数完成不同配置之间的切换。
*4、开放性要求模组保证拥有各类接口,提供功能自定义和升级服务
模组要开放,能够提供各类的接口,允许用户自定义修改,不管模组的功能涵盖了哪一层,其内部都是很复杂的。因此,能够及时反馈十分重要,例如内部的状态随时可查,如果发生了异常,能够及时的通知应用进行处理。比如,GNSS因为信号原因等因素突然失锁了,如果时锁时间过长,就会导致模组的时钟失步。此时的模组实际上已经不能与其他模组通信了,这就需要模组能够主动地通知应用进行干预,比如提醒驾驶员卫星信号出现异常,提示驾驶员更加谨慎地驾驶等等;其次,在模组发生异常时应该能够记录并提取日志,以便于分析异常,或者判断其处理是否合理;另外,对于模组而言,尤其是产业上,在培育阶段,固件升级是在所难免的,所以模组能够提供升级能力也是一个必选项。