本文主要介绍Audio Video Bridging,又称音频视频桥接技术,简称AVB,用于汽车多媒体传输,AVB是基于车载以太网通信,处理音频和视频流比较常用的一种方式。
首先,我们来看一个汽车网络架构,从图中可知以太网将用作主干网来连接车外,比如OBD,同时也连接车内不同域,未来将会应用更广泛,这里AVB主要用于抬头显示Head Unit和音视频节点间的通信。
AVB最主要的特性就是确定性延时,必须通过传输时间策略,确保每个音频和视频流在确切的时间到达对端,这一特性对时间敏感通信极其重要,这里音频设备麦克风和抬头显示的播放器之间的音频流传输就是时间敏感通信。
对于ISO OSI七层参考模型,想必大家都不陌生了,而AVB所处位置如下图所示。
AVB协议是一个系列的协议,如上图中绿色和橘色框所示。因此在AVB的下层是以太网物理层,图中未体现, 其实还应该包括部分以太网MAC层内容,AVB协议上层为音视频传输协议1722,简称AVTP,AVTP协议主要用于封装音视频流,而AVB系统协议为AVTP提供基础架构,确保AVTP流的确定性传输。
AVTP报文格式
上面介绍AVB协议是一系列AVB协议组成,主要协议有:
1.AVB系统协议
简称IEEE 802.1BA,定义AVB系统内容。
2.流预留协议
简称IEEE802.1Qat,定义AVB网络相关通信路径可以为Talker和Listener这对通信对象预留多少带宽。
3.时间同步协议
简称IEEE802.1AS,AS协议为了确保网络中所有AVB节点在同一个时间基准下,当多个Listener播放器需要播放同一个音频时,必须采用时间同步机制来保证大家的时间是同步的。
4.交换机流整形协议
简称IEEE802.1Qav,在流量带宽预留成功之后,必须保证从Talker到Listener之间帧的传输不能超出最大延时。
AVB网络系统包括端节点和AVB交换机,终端节点如下图白色框所示,既可以做Talker,也可以是Listener,甚至同时是Talker和Listener角色,这些都没有限制,终端节点本身就是可以为时间敏感数据流的源点和终点,而AVB交换机,如图中所示AVB Bridge,除了提供整车交换机功能外,还提供时间敏感数据转发功能。
2
AVB系列协议详细介绍
接下来,详细介绍AVB四种系列协议:
1.系统协议
BA协议定义了一些AVB系统的配置方式以便快速创建AVB网络,可以配置的选项有协议选择,配置参数和流程配置,但因为该协议暂时还不成熟,因此未得到广泛应用。
2.流预留协议
为了管理通信路径预留的资源,保证局域网的服务质量QoS,Qat协议最重要的工作由多流属性注册协议,多流属性注册协议是基于多注册协议,多注册协议用于在局域网中传递确定的属性。
该协议允许流端点注册是否需要talk或者listen特定流,如下图所示红色箭头表示talker宣贯消息,此时talker以广播的形式发送,以询问网络中所有端点,当有端点需要侦听时,绿色箭头所示通信路径代表应答者已经做好侦听AVB云的准备,其中AVB云由AVB交换机或者网桥组成,一旦listener希望接收流,必须保证流预留的资源和所希望达到的服务质量参数。
如下图所示,AVB网络由很多AVB节点和网桥组成,当左上角的AVB节点需要提供一个数据流给网络中其他节点,该节点作为talker通过Talker advertise消息来广播有数据要发送,如下图(Talker Advertise),在收到talker advertise后左下角的终端节点需要侦听数据流,该节点作为Listener通过Listener ready消息来单播告诉Talker已经准备好接收数据流,如下图(Listener Ready)。
如果所需带宽可用,AVB系统关于该流通信的整个路径的交换机和终端节点都将会对带宽资源进行锁定。
Talker Advertise
Listener Ready
3.时间同步协议
AS协议目标是建立通用的时间基准,以确保多个播放器同时播放同一个音频sample,而时间同步协议包含两部分内容,网络中最佳时钟选择和最佳时钟时间信息的分发,而在车辆系统中AVB系统比较简单,节点比较单一并且固定,因此主时钟的选择是静态定义不支持动态选择,那主时钟是如何在网络中分发自己的时钟信息的呢?在AVB系统中基于时间同步信息是从主时钟发送给时钟树的其他设备,已达到共享自己的时钟信息。
AVB系统中有四个设备,如下图所示,左边设备为主时钟Grandmaster,GM直连TimeAwareSystem以便在时间20发送synchronization同步消息,经过link delay = 2之后synchronization消息被系统2接收,之后主时钟GM发送第二个消息给time aware system这个消息叫Follow-up,跟随消息包含三个字段:
- 第一个字段为Synchronization消息的发送时间20;
- 第二个字段为synchronization消息相对于主时钟的延时这里为0;
- 第三个字段为rate ratio用来表示主时钟速率和当前节点时钟速率的比率,当前节点时钟即为主时钟所以该值为1;
经过一段驻留时间5之后同步消息会被发送到系统3,现在的问题是系统2发出同步消息的时间是多少?这个时间需要通过跟随消息来传递以便系统3计算时间,一旦主时钟GM发送完同步消息那就需要在20基础上加链路延时2,还要加上消息在系统2中的驻留时间5,但是链路延时和驻留时间的参考时钟是系统2的,而系统2的时钟比率是1.01,因此将链路延时和驻留时间乘以系统2的速率比率以换算成主时钟时间,最终系统2发送的同步消息时间是27.07,这样在跟踪消息中第一个字段仍为主时钟源时间20,第二个字段为系统2中相对于主时钟时间的延时7.07,第三个字段需要传输系统2的时钟速率比率1.01,以便系统3来计算自己的速率比率。
系统3的处理完全等同于系统2,系统3发送同步消息之后也同样需要发送跟随消息,Follow-up中第一个字段仍为主时钟源时间20,第二个字段为系统3中相对于主时钟时间的延时,第三个字段需要传输系统2的时钟速率。
3.流量整形协议
流量整形协议Qav是实施在交换机系统中避免包堆积和保证不超出链路的最大允许传输延时,如图仅为举例说明,图中有2个端口分别是交换机流量的进端口Ingress Port和出端口Egress Port,交换机有2个主要任务,一个是为队列分配帧,另一个是从队列中选择帧来发送。图中,在出端口前面定义了3个队列,分别对应三种类型的数据。
正常情况下有三种流量类型:
- 有很强的时间需求的严格时间流量类型A,对应队列2;
- 有较强的时间需求的严格时间流量类型B,对应队列1;
- 无时间需求的尽力而为数据类型,对应队列0;
如何判断输入帧是哪一种流量类型,主要依赖于输入帧中VLAN Tag中3比特表达的优先级,其中优先级和流量类型或者队列有一一对应关系,如果流量类型设置为类型B则表示对该流量进行队列选择是会选择队列1。
之后发送选择会优先选择更高队列的帧转发给出端口,这里只有队列1和队列2没有AVB帧要发送的情况下,采用严格优先级策略发送队列0中非AVB帧。
综上队列的发送选择策略有严格优先级和基于信用流量整形,严格优先级算法用于无AVB流量的队列0,基于信用流量整形算法用于队列1和队列2。
基于信用流量整形算法的具体机制如下:
- 开始一个橘色非AVB帧正在发送,如果这个时候队列1有几个AVB帧需要发送,此时它不能打断正在发送的非AVB帧,另外一个重要的点AVB发送的条件是信用credit必须大于0,因此绿色AVB帧的发送必须等到信用大于0。
- 发送完绿色AVB帧后,导致信用下降为负数,虽然还有更多帧等待发送但还是要等待信用大于0,之后红色AVB帧得以被发送。
- 剩余红色,黄色,蓝色AVB帧均遵循以上规则发送,必须严格基于信用。