张 宇,高雅洁,薛燕芳,黄 晨,洪 俊
(1.上海汽车集团商用车技术中心,上海 200082;2.上海蔚赫信息科技有限公司,上海 201102;3.江苏大学 汽车工程研究院,江苏 镇江 212013)
车载以太网受到汽车行业内部及通讯技术人员的广泛关注,娱乐系统和高级驾驶辅助系统(ADAS)对传输带宽的迫切需求推动了以太网介入汽车网络的进程[1-2].在车载网络有限的带宽资源内,越来越多的网络节点使得各类数据在传输过程中必定存在时延,因此,不管是传统CAN网络还是新兴的车载以太网,时延无疑是最基本的问题[3-6],也是车载系统需要解决的核心问题,很多学者对此展开研究[7-13].
文献[7]全方面对比分析了AVB和AFDX,指出AVB可以满足工业以太网的实时性要求.文献[8]着重对比分析了AVB和TTE协议的各方面内容,基于它们的整形和排队机制,并通过研究所搭建的硬件测试模型,指出它们在汽车上具有很大的应用前景.李海宁[9]通过在数据传输段添加标志位,利用示波器同时对两个数据传输链路进行波形观测,检测链路传输总延迟时间.李冀川等[11]受PTP协议启发,设计了一种反射式的网络传输延迟测试方法.文献[12]给出一个AVB应用实例,是麦克风输入与扩音器输出,中间主要是两类处理器,比较这两类处理器的时延.文献[13]提及到Vehicle Spy和CANoe这两个测试工具,并在这基础上搭建了仿真平台,做了数据分析.由此可见,车载以太网有很好的发展前景,同时也带来了测试方面的问题,虽然时延测试方面有很多研究,但是其不足之处在于,是通过配置脚本报文实现,其通用性并不是很强.
从历史上看,由于分组传输的不确定性,汽车多媒体应用要避免使用分组交换网络的实现.IEEE AVB任务组解决了这个问题,他们为汽车中的那些低时延应用开发了一个基于标准的高可靠分组网络.由于有线以太网布线简单可靠,非常适合通过AVB协议用在汽车部署中,AVnu联盟的主要市场焦点是成功将AVB部署在汽车空间的流媒体音视频应用中[2].
SRP通常被称为IEEE802.1Qat-2010(或“Qat”)标准,整体纳入到IEEE802.1Q标准中.SRP是一个许可控制机制,负责保证数据传输开始前,任何A/V流的发送方和接受方的整条路径上有足够的带宽,SRP负责在整个二层桥接(交换)网络上配置预留带宽.但是汽车行业的当前趋势是不使用SRP,而是静态预配置预留带宽.这并不是意味着汽车AVB网络不需要流预留,而是因为汽车网络属于封闭系统,其带宽能力和流带宽要求都是已知的,利用一个协议来动态协商带宽预留得到的结果始终相同,而这样做反而使效率会很低,在汽车应用中,通过配置端点和交换机上的相关资源,可在接通电源时取消流预留[2].
带宽预留:① 包含时间敏感性流的带宽预留协议MSRP;② 定义延迟的边界和A,B类流量的优先级;③ 在每个端口上为每类流量预留整条路径的带宽资源;④ AVB流量的带宽预留比例可以达到75%,剩下的带宽可用于最大努力流.
如图1所示,带宽预留成功,Talker声明注册,Listener响应Ready.
图1 带宽预留成功
预留失败原因有两种:原因1如图2所示,其时延超出范围,Listener响应Not Ready;原因2如图3所示,其带宽不足,Talker声明注册失败.
图2 带宽预留失败(1)
图3 带宽预留失败(2)
为了创建一个侧重于以太网时间敏感性应用(比如音频和视频)的简单并且易于管理的标准,IEEE802设立了IEEE802.1AS任务组.由于是基于先前的IEEE1588工作成果进行设计,IEEE802.1AS(被称为“广义的精确时间协议”或简称“gPTP”)是IEEE1588的PTP模式的一个专属子集,这是其同步模式的核心象征[2].
在gPTP LAN中,有一个节点被指定为主时钟,并担任整个gPTP域/子网的主计时器,主时钟可以手动选择也可以预先指定.
BMCA是gPTP的主时钟选择机制.选择算法启动时,所有可以成为主时钟的端点都会参与“竞选”,除了选择网络的主时钟之外,这个算法还用于确定以主时钟为根的时间同步树的范围(gPTP域或子网).在每一个gPTP链路对中,一个设备担任ClockMaster,另一个则是Clockslave,这种主/从关系适用于整个分层gPTP域,并以主时钟为最高级.
最佳主时钟算法如图4所示,每个AVB设备都会广播发送announce报文,将自身的时钟质量信息放在报文中,当一个AVB设备接收到其他AVB设备的announce报文时,会比较自身和所接收到的AVB设备的时钟质量,如果自身的时钟质量更佳,则继续广播发送报文,反之则停止发送报文,最终整个gPTP域上只有一个announce报文,此时可以确定主/从时钟.
图4 最佳主时钟选择机制
在确定主时钟后,在初始阶段进行链路时滞的测量,如图5所示.
图5 时钟同步与链路时滞测量
主时钟发送PDelayRequest报文,从时钟收到该报文后响应PDelayResponse报文,紧接着将T2,T3打包进PDelayRespFollowUp报文,发送至主时钟,计算确定链路时滞,之后进行时钟同步,且每125 ms会有一次时钟同步,如图5所示.由主时钟发送同步报文Sync至从时钟,同时将发送报文的时间戳打包在Follow_Up报文中,发送至从时钟进行时间同步.
尽管在AVB问世之前,IEEE802.1Q网络就已具备优先级和转发能力,但及时传递只能通过非常仔细且繁冗的计划和准备来保证.AVB在IEEE802.1Q的现有能力之上构建,定义了VLAN优先级标签之间的紧密关系以及端点和交换机间合成帧的转发行为,允许网络架构师依赖具有保证和界限时延的音视频传输.
实现这一功能的条件:一方面是通过流预留协议(SRP)增加许可控制;另一方面要求是流量整形机制.
CBS流量整形机制如图6所示,图中有A类、B类、和C类(非AVB流)数据流,A类数据流优先级最高,B类其次,C类最低,当A,B类的信用值大于等于0时,才可以传输数据,数据传输的同时,其信用值也在下降;当A,B类信用值都大于0时,A类数据先传输;当链路上有A,B类数据处于等待传输的状态,其信用值是随时间增加的;C类数据只有在链路处于空闲状态时才能够传输;每类数据的传输并不能被打断,只有当传输完完整的一帧数据时才能够被打断.通过流量整形实现一个公平机制,所有数据都可以传输.
图6 CBS流量整形机制
IEEE1722为时间敏感性应用,定义了以AVTP为核心的二层传输协议,AVTP用在支持gPTP,SRP和FQTSS协议的网络中,且AVTP能够传输音视频的数据和时间信息.流AVTPDU帧组成结构,如图7所示.
图7 流AVTPDU结构示意图
图7中CD:区分流报头还是控制报头;子类型:标识AVTP携带的协议(各协议决定如何将报文封装在AVTP帧内;SV:标识Stream_id是否有效;版本:AVTP版本;type_specific_data:依据控制AVTPDU或流AVTPDU帧而改变;Stream_id:流地址.type_specific_data的结构不同,其他一样;control_data:高层命令代码等;Status:帧的状态(具体意义由协议决定);control_data_length(bytes):表明AVTPDU净荷长度.Mr:表示媒体时钟的源设备发生了变化,不是真假标记,而是作为边沿触发,每次Mr比特切换时,表明时钟源发生变化;r:预留;gv:表示gataway_info字段是否有效;tv:表示avtp_timestamp字段是否有效;Sequence_num:关联AVTP流量的连续帧,每传输完一个帧,Talker将该字段值加1,达到OXFF后重置为OX00;tu:若gPTP系统有严重问题,值为1,表明时间戳可能不能全球同步;avtp_timestamp:包含媒体的显示时间;Gataway_info: AVTP网关使用,桥接IEEE1394设备.
通过英特佩斯RAD_Galaxy建立车载以太网仿真系统,在Vehicle Spy中监控和采集总线数据,最后结合Wireshark分析数据传输时延.
试验台设备如表1所示,其中主要设备是BMW G38的360°环视系统、测试设备RAD_Galaxy和对应软件Vehicle Spy.
表1 试验设备汇总表
BMW G38 360°环视系统主要由两部分组成:4个以太网摄像头和环视主机,如图8所示.以太网摄像头将高清数据通过百兆以太网传输给环视主机,主机一旦捕捉到视频图像,将会对图像进行畸变校正、缩放、拼接和整合压缩处理,然后通过以太网非屏蔽双绞线将数据传输到以太网交换机上,经由交换机再转发至后面的显示屏上.
图8 BMW G38的环视系统框架结构图
Galaxy作为EthernetSwitch以及Ethernet-CAN总线网关,同时作为Ethernet,CAN总线的监控采集设备;PC端使用VehicleSpy软件进行总线数据的监控和发送,同时用于分析数据的延时;在上汽提供车载信息娱乐和360°环视安全辅助系统等相关信息基础上,完成仿真系统的搭建,如图9所示.RAD-Galaxy有12个BroadR-Reach端口,最多可同时监控6路车载以太网通讯内容.基于Active TAP模式,可测量6对BroadR-Reach端口之间的通讯,并在上位机中记录分析.
图9 RAD_Galaxy设备
RAD_Galaxy作为中间设备,介入到每个设备之间,监控以太网络上传输的数据,原理如图10所示.
图10 试验台搭建原理图
4个摄像头分别接到RAD_Galaxy博通以太网1,3,5和7端口,相对应的主机接到4个摄像头的线路分别接到端口2,4,6和8,同时可以将主机数据输出端口接到端口9,最后用千兆以太网网线连接RAD_Galaxy和电脑,这样就可以在电脑端监控每条线路上的数据报文.最终所搭建的试验台如图11所示.
图11 车载以太网测试试验台
试验台的主要目的是监控和采集报文数据,而在Vehicle Spy中有3种模式可供选择,为了保证所采集报文的完整性,如图12所示,选取Tap-Low Latency模式,即RAD_Galaxy只有转发作用,没有过滤错误帧等,如图13所示,在TAP模式中,RAD_Ga-laxy会将链路上的报文复制发送至上位机.
图12 端口监控模式
图13 TAP工作原理
在数据报文分析部分,运用Vehicle Spy软件采集一段试验台开机、正常运行、关机这一套动作的报文数据,同时可借助Wireshark分析报文组成结构、交互过程,获得报文的基本信息,以研究时延.其主要包含3部分:① 对比数据报文中的信息,解析协议;② 分析报文中的时间戳,并得出时间戳与实践的相对关系;③ 通过时间戳与时间的映射关系,计算每个数据帧的时延。
通过Vehicle Spy软件抓获的报文数据如图14所示,在其中可以简单的给出报文的解析结果,但是不足之处在于未能解析出IEEE1722协议,所以未能解析出内部的部分数据.基于此,将报文格式转换成pcap格式,如图15所示,在Wireshark中进行报文数据的解析.然而在Wireshark中也未能解析出相关的协议,然而Wireshark能够支持解析IEEE1722协议,所以问题在于报文数据方面,对比标准的IEEE1722报文数据在Wireshark中的构成,将报文数据中的0x88b5字段全部替换为0x22f0,再进行解析,可以解析成IEEE1722协议;同时通过观察发现,不是每条数据报文携带的时间戳都有效,所以将时间戳为1(即报头中时间戳有效)的数据报文筛选出来(每个分组只有一个时间戳),构成新的数据文档,即在该系统的数据中,将提取出含有0x22f00283的数据报文,至此就可以基于报文内的AVTP显示时间戳进行数据处理.
图14 Vehicle Spy报文界面
图15 Wireshark报文分析界面
在前述筛选出的报文数据中,选取一条数据进行解析,展开如图16所示.
结合解析结果,车载以太网与传统以太网在底层在IEEE802.1Q范畴内,两者的差异主要在于IEEE1722协议方面,在Wireshark协议库中,对应的是0x22f0,所以从下面数据的22f0字段开始,结合图16分析,第一位CD值取0,代表是流AVTPDU;后七位是AVBTP的子类型,值为02,所以这一个字节结果为02,即数据第二行第三列的值;后一位表明AVTP的流地址是否有效,值为1,说明有效,其后三位是AVTP的版本号,为0,这四位转成十六进制为8;紧接着四位值为3,即0011,第一位是媒体时钟重置标志位;媒体时钟重置标志位后一位是预留位,再后一位表明网关是否有效,此处值为1,说明有效.再后一位表明时间戳是否有效,值为1,说明有效;所以这个字节段值为83,对应第二行第四列.紧接着后面一个字节是关联AVTP流量的连续帧,每传输完一个帧,Talker会将该字段的值加1(达到0xFF后重置为0x00),对应第二行第五列.接下来一个字节为00,前七位是预留位,值取0,其后一位为tu位,表明报文时间戳是否正确,如果gPTP系统有一个严重的问题,Talker会将tu比特设置为1,在这种情况下,表明报文的时间戳(包含在avtp_timestamp字段)可能不能全球同步,所以此处时间戳没有问题.接下来的8个字节是流地址,即数据段fc d6 bd 00 00 02 10 0c.紧跟着就是时间戳字段:88 73 06 75,共4个字节,转成十进制就是解析出来的值:2 289 239 669.再往后4个字节段是网关信息,接着两个字节表明流数据的长度,以及再接着两个字节是协议的报头,最后剩下的是AVTPDU的实际媒体数据,其结构由子类型字段决定.至此,完成对数据报文构成的分析.无论是从结构还是内容来分析,其与协议所定义报文格式相一致,协议旨在标准化报头格式,因此,根据报文解析时间戳并进行时延分析具有通用性,且便于实现自动化时延计算.
图16 数据报文解析
时延分析如图17所示,抓包时间戳在RAD_Galaxy抓包点处,AVTP显示时间戳即在AVTP显示时间点处,这两个时间戳可以从报文数据中获取,所以定义最大时延值:
图17 时延分析区间
tdelaymax=AVTPts-tr+tCBS+tp,
(1)
式中:tdelaymax表示最大时延值;AVTPts表示AVTP显示时间点;tr表示抓包时间;tCBS表示排队整形时延;tp表示打包编码时间.
所以有必要解析AVTP显示时间戳,其对应avtp_timestamp字段,而avtp_timestamp的值计算如下:
avtp_timestamp=
(AS_sec×109+AS_ns)mod(232),
(2)
式中:AS_sec为gPTP秒字段,而AS_ns为gPTP纳秒字段.avtp_timestamp是一个32比特的数字,所以约每4.295 s变化一次.
由于avtp_timestamp的值不能直接参与时延值的计算,所以需要将其转换成标准时间戳,从而计算出时延值.在Wireshark中已经分析出AVTP显示时间戳和抓获报文的时间戳,那么可以根据式(2)进行逆推,即
(3)
tdelaymax=tB-tr,
(4)
式中:tB表示AVTP显示时间戳转换成的标准时间戳;tAS表示gPTP所携带的时间戳.解析结果如18,19所示.
图18 gPTP报文数据解析
图19 流报文数据解析
其中avtp_timestamp值为3 865 159 366;gPTP同步的时间戳为1 539 760 738.802 258 660;则显示时间戳逆推得时间戳为1 539 760 738.852 251 334;则时延值为0.049 765 674 s.
在所搭建的试验台中采集报文数据,根据AVB协议的组成结构进行时延的计算分析,在协议解析和时延分析方面具有普适性.其对建立车载以太网网络规范体系和进行系统设计开发,进行关键技术的研究与开发,制定整车基础通信协议有重要借鉴意义.