在车载通信领域,我们时常面临一个困惑,要是通信线路异常断开了怎么办?这里的异常断开不仅指物理上的断开,也可能是受电磁干扰等导致线路通信功能的异常等。解决此类问题,一个显而易见的金年会金字招牌信誉至上的解决方案就是增加冗余路径,即把数据传输2~n份以进行备份,这样就不用担心数据的丢失了。
原理很简单,但受限于成本因素及协议原理等,实现起来并不容易。常见的车载通信协议——can/lin/flexray/most/ethernet,只有flexray和ethernet能实现上述的冗余通信。flexray可使用双通道通信,两个通道可用来发送相同的信息,以牺牲通信速率的代价来换取冗余传输。但flexray通信速率有限,单通道最高通信速率为10mbps,该速率对传输车内线控信号足够,但用于传输无人驾驶相关的传感器信号,就捉襟见肘了。以太网可实现通信速率(百兆、千兆等)与冗余传输的兼顾,是一个优异的金年会金字招牌信誉至上的解决方案,但受限于汽车电气拓扑、芯片等的发展水平,现阶段该技术暂未推广,但不可否认该技术的强大。今天小怿就带领大家认识认识以太网实现冗余的方案,即tsn协议族中的ieee 802.1 cb协议。
ieee 802.1 cb协议定义了车载以太网中实现冗余传输的方案,协议全称frame replication and elimination for reliability,简称frer。下面将依次介绍该协议的应用场景、协议原理、实现方式等。
应用场景
理论上讲,整车各类数据流可进行以下区分,如表1所示:
上表中,关键性列为“高”的数据流,理应进行冗余传输,以实现更高级别的功能安全。一般来讲,是否使用冗余协议,由功能决定,如果某功能对数据的丢包无法容忍,那么,需考虑使用冗余协议frer以实现可靠传输。
使用frer实现冗余时,前提条件是网络中数据的传输有冗余路径—备选路径,这就对网络拓扑的形式提出了要求:网络中必须能够形成环路,以使talker端的数据能沿不同路径到达listener端。以下两图可直观理解frer对网络拓扑形式的需求。图1域控制器架构中,各域节点通过以太网连接在一起,域内各节点通过can/ethernet等互联,域节点之间未形成环形拓扑,因此,无法使用frer进行冗余设计。图2 zonal架构中,主干网上以太网节点数量增多,节点的处理能力及可靠性要求更高,网络中也形成了闭环,此时,可使用frer使数据沿不同路径传输,以实现高可靠性。
图 1 典型域控制器架构(来源于网络)
图 2 zonal架构(来源于网络)
总之,frer应用于对数据传输有高可靠性需求,且网络可提供数据传输冗余路径的以太网拓扑中。
协议原理
frer原理简单:talker端发送数据时,frer功能将数据包复制,沿不同路径传输;listener端接收数据时,frer功能删除复制的数据包,只保留一个数据包。当然,不强制要求作为终端节点的talker或listener支持frer功能,frer功能可通过网桥来实现,此时,网桥称为talker的代理或listener的代理。
下图中,end system a是数据流的talker端,end system g是数据流的listener端,两者之间有多个交换机relay system。终端a不具备frer功能,需由交换机b进行代理,此时,b称为talker(终端a)的frer代理;g具备frer功能,其不需要代理。虚线表示数据流及其流动方向,红色圆框表示节点具备的frer功能(主要功能,非全部功能)。
图 3 frer原理示意图
要想实现数据流沿不同路径(甚至是所有可能路径)的传输,需要由多个节点配合实现,各节点需具备不同的frer功能,以共同实现数据的冗余传输。frer功能组件如表2所示:
表 2 frer功能组件
上表中,sequencing function有3个子功能,见表3:
表 3 sequencing function子功能
frer所有的功能组件均与两个参数相关,即stream_handle子参数及sequence_number子参数。
stream_handle子参数与流识别功能相关,节点根据数据帧的mac、vlan、priority、ip等信息,判断数据帧是否需经过frer功能组件处理,如需进行处理,给其分配一个stream_handle子参数,该stream_handle子参数决定了数据帧会经过哪些frer组件的处理,所有具备frer功能的节点,其必须具备stream identification功能。
sequence_number子参数与数据帧的复制及删除相关,在talker端,对数据包按序进行编号,并将sequence_number编码至数据帧中;在数据接收方,根据sequence_number子参数判定数据帧是否是之前接收包的复制品,如果是,即删除。
以图3的系统为例,节点b、c、f及g具备frer功能的节点,以节点b及f为例,其内部详情如下。
节点b(交换机,talker端frer代理)
图 4 节点b内部frer协议栈示意图
节点b中,对于从a节点处来的数据流,其处理流程如下:
(1)stream identification组件使用ip地址等对数据流进行识别,如果需要进行frer处理,则传往高层由frer组件进行处理;如不需要,则通过nstf传输,不经过frer功能组件;
(2)sequence generation function组件对数据包进行编号,从0~65535循环;
(3)sequence encode function将(2)中的编号编码进数据帧中,以使数据帧携带编号信息;
(4)active destination mac and vlan stream identification组件改变数据包的mac、vlan等信息,进而使数据包沿不同的路径传输;其取代了流分离的功能。
节点f(交换机,两条路径在此交汇)
图 5 节点f内部frer协议栈示意图
节点f中,两条不同路径上的数据流在此处汇聚,节点f的处理流程如下:
(1)stream identification组件对数据流进行识别,对需经过frer功能组件处理的数据帧传往高层处理;
(2)sequence decode function组件去除数据帧中编码的sequence_number子参数等内容,以使数据帧能被stream transfer function识别;
(3)sequence recovery function根据数据包的sequence_number子参数,判断数据包是否是之前接收的数据包的复制包,如果不是,则保留该包,如果是,则删除。
(4)sequence encode function组件往数据帧中编码sequence_number子参数,以使报文携带编号信息,方便后续节点进行帧删除操作。
(5)stream identification组件视需改变数据帧的mac或vlan。
以上是frer协议的基本原理,其实,每一个frer功能组件的背后,都需进行复杂的参数配置,可能涉及复杂的算法,篇幅原因,本文不进行具体讲述。frer协议原理简单,但深入理解并使用不是一件容易的事。
实现方式
在第1章节提到过,frer应用于网络中能形成回环的网络,数据流的传输路径,需提前静态配置。
一般来讲,frer功能组件的布置很灵活。在静态配置好的数据传输路径上,节点或交换机根据其自身所在位置,选用合适的frer功能组件,各节点配合实现系统中数据流的冗余传输。各节点选用的frer组件,一般遵循以下原则:
(1)talker端(或talker的frer代理端)需支持流识别功能、序号生成功能、序号编码功能、流分离功能(可由流识别功能实现)
(2)listener端(或listener的frer代理端)需支持流识别功能、序号恢复功能及潜在错误检测功能、序号解码功能
(3)如果路径上某交换机是2~n条路径的交汇节点,该节点需支持流识别功能、序号恢复功能及潜在错误检测功能、序号编码/解码功能
(4)如果路径上某交换机处分离出2~n条路径,该节点需支持流识别功能、序号编码/解码功能、流分离功能(可由流识别功能实现)
(5)任何具备frer功能组件的节点,均需支持流识别功能
ieee 802.1 cb协议是tsn协议族的一个子协议,其用于实现车载ethernet网络中数据的冗余传输,适用于对数据传输有高可靠性传输需求的应用。随着智能驾驶汽车的发展,越来越多的传感器数据直接被用于车控,这类数据流与功能安全强相关,需考虑数据传输的可靠性需求。使用以太网传输传感器数据流,配合tsn协议实现数据传输的可靠性需求、通信qos及安全等,能较好地满足智能驾驶汽车对数据传输的需求。
tsn由一组协议组成,网络设计者可根据需求选取不同的协议,以实现不同的需求。tsn各协议按其功能,可分为以下几类:传输协议、时钟同步协议、qos服务质量协议、冗余及安全协议、资源管理协议等。ieee 802.1 cb协议是冗余协议,与其它协议关联性不强,可单独使用或配合其它协议使用,是车载以太网通信中需重点关注的一个协议。
tsn协议目前在车内的应用暂处于预研阶段,但随着智能驾驶的发展、域控制器及中央计算单元架构的演化及车规级芯片的量产,其必将在车载网络中发挥越来越重要的作用。
关注怿星科技公众号,获取更多资讯