时间触发协议(Time-Triggered Protocol,TTP)
文章目录
- 1 时间触发协议(Time-Triggered Protocol,TTP)
- 1.1 协议概述
- 1.2 拓扑结构
- 1.3 消息格式
- 1.4 通信调度
- 1.5 时钟同步
- 1.6 容错机制
1 时间触发协议(Time-Triggered Protocol,TTP)
1.1 协议概述
时间触发协议(Time-Triggered Protocol,TTP)是一种面向容错的分布式、高速、双通道总线型实时通信协议,同步传输带宽可达25Mb/s,异步传输带宽5Mb/s。由于TTP能提供分布式和严格确定性的通信服务,并采用冗余结构、错误隔离控制、时钟同步、成员机制和派系避免来保障分布式总线的通信性能,可应用于时间关键(time-critical)和安全关键(safety-critical)系统,如航空分布式控制系统等。TTP于2011年经被美国汽车工程师协会(Society of Automotive Engineers,SAE)采纳并制定为其正式标准AS6003。
TTP总线在发展过程中曾提出了TTP/A和TTP/C两种规范,其中前者适用于汽车电子等低成本的非关键应用,而后者面向航空航天应用设计。SAE根据应用的区别将车载网络划分了三个等级:等级A是一种低速通信方式,主要应用于车身控制方面;等级B是针对高速通信但与安全保障无关的应用;等级C是针对安全相关的应用,如刹车与汽车行驶控制等方面。等级C的通信方式具有以下要求:操作控制指令的传输是确定的并拥有较小的传输抖动,对所有的错误场景都有可选的备份操作模式,具有分布式时钟同步与错误隔离能力。针对等级C的通信要求,研究者提出了一种时间触发(time-triggered)的解决方法,在时间同步的基础上,形成时间触发结构(Time-Triggered Architecture,TTA),按照精确的资源使用计划来引导整个系统的活动,能够预知资源需求并提供恰到好处的资源来满足服务请求,并为所有的服务提供确定性的保障。
TTP则在TTA的框架下将时间触发机制进行细化,于1993年首次被提出:TTP总线是当前所有基于时间触发的确定性网络通信技术中首个被SAE组织标准化的通信协议。在过去的10年中,TTP已经被证明是适用于航空分布式控制系统的关键网络技术,从航空发动机控制、座舱系统以及电源管理到飞行控制等系统均能广泛应用,例如用于F-16飞机的全权数字引擎控制器(Honeywell公司制造)、空客A380飞机机电系统的机舱压力控制系统、波音B787“梦想”飞机的环境控制系统等。TTP中一系列保证实时性和可靠性的保障机制决定了它的应用前景和范围,在低速通信需求下,可以成为一种重要的机载网络组网技术选择。
1.2 拓扑结构
在TTA的架构模型中,典型组网方式分为总线型和星型两种,前者对应于TTP/C 规范,而后者对应于TTP/A规范。
-
TTP/C拓扑结构
一个典型的TTP/C总线型网络如图所示,主要由多个连接在一条双通道(dual-channel)总线的电子模块组成。每个电子模块称为TTP/C网络的节点(node),整个网络统称为一个集群(cluster)。一个总线形 TTP/C集群中的最大节点个数为64,节点间的最大距离可达到130m,不同集群之间也可以通过网关进行组网扩展。在下图中,一个节点中的单个模块称为最小可替换单元(SmallestReplaceable Unit,SRU),单个节点中的多个模块组成了容错单元(Fault TolerantUnits.FTUs),这些多组模块为节点提供了冗余备份功能。每个节点包含主机(host)、TTP/C控制器和主机之间通过主机接口(host interface)进行通信。所有节点连接在同一总线上,不同节点通过共享的总线介质以广播的形式传输数据,根据通信需求可以采用单通道模式或者双通道的冗余模式。

-
TTP/A拓扑结构
除了总线形的网络拓扑结构,TTP还支持另一种星形网络结构(TTP/A)如图所示。TTP/A也采用了双冗余网络的设计模式,拥有两个中心监护节点(central guardian),其他的所有节点均与这两个中心节点连接。相比于总线形的连接方式,星形节点在空间上更加独立,单个节点的故障问题不会蔓延到网络中的其他节点中去;同时,由于具有统一的监控中心,单个节点中不再需要完整独立的网络监控功能,这大大降低了整个控制系统的部署成本。TTP/A中单个节点的实现功能相比于TTP/C更加简单,最大的节点支持个数达到255,以便于TTP技术在更大的范围内进行推广和应用。

-
TTP/C节点结构
每个TTP/C节点的内部结构如图所示,它主要划分为主机层和通信层,主机层负责从通信层接收处理应用数据或者向通信层发送应用数据,通信层负责在节点之间保证可靠的时间触发通信。主机层的CPU通常是可以运行操作系统处理应用数据的处理器,同时还提供用于连接控制对象的I/O接口。而通信层内TTP控制器的协议处理器会根据配置数据执行协议服务,它分别通过主机接口、物理层接口向主机和总线提供可靠的协议操作。

TTP网络节点的主机层主要负责执行分布式应用任务或者本地应用任务,通过I/O接口连接传感器、作动器等应用对象,同时还通过主机接口与通信层进行互联。相对于整体同步的通信层,主机层可以选用与通信层同步或者与通信层异步两种不同的模式运行。
如果系统结构完全采用时间触发结构(Time-Triggered Architecture,TTA),那么主机层的子系统就与通信层全局时钟同步,主机与TTP控制器之间的数据传输只会按照设计方案在特定的时刻发生,所以不会因数据访问产生冲突。这种时间触发结构在降低系统复杂度的同时也有利于改善资源利用。在分布式实时应用的场景中,TTA的主要优势表现在于:它利用已知的全局时钟简化了通信规则,建立了系统状态的离散性,保证了系统及时的验错机制,从而能实现系统的无缝集成。
而在通信层异步模式中,虽然通信层完全遵循确定性的调度方案,但是在任务的启动过程,或者任务队列排队调度过程中也会导致主机层的应用在接收数据时产生不确定延迟。在这种情况下,主机层基于本地设定或事件触发规则执行操作而通信层仍然按照确定性调度进行通信,不会受到主机层应用任务的影响,此时对主机接口的访问将由主机层的应用负责控制。
TTP网络的通信层包括TTP控制器和总线,通信层通过执行协议服务和控制总线访问实现可靠的时间触发通信。
通信层执行的协议服务是为了实现集群内各个节点之间的数据交换,协议服务可以分为两种类型,即通信服务与安全服务。通信服务用于实现可靠的数据传输,包括集群的启动、节点的整合、容错时钟的同步,集群模式的改变等内容。安全服务是为了检测错误而执行的服务,包括节点的成员关系(membership)、派系检测(clique detection)、主机或TTP 控制器的存活标志(life-sign)服务都属于安全服务。协议服务对调度设计的影响并不大,但它是网络通信正常运行的基本规则和保障。
TTP协议的主要特征集中体现于TTP控制器的主机接口和物理层接口的工作机制上。主机接口负责在通信层和主机层之间实现无冲突的数据交换,交换的数据包含三种类型,即消息数据、状态数据和控制数据。其中消息数据是由主机层产生发送给TTP控制器的应用数据,或者是TTP控制器从总线接收后发送给主机层的应用数据;状态数据由TTP控制器发送给主机层,用于告知主机当前协议执行的状态;控制数据由主机发送给TTP控制器,用于执行协议服务。主机接口将主机的应用程序与TTP控制器的通信协议进行了隔离,在出现错误时可以有效防止错误的蔓延,提高了系统工作的稳定性。
为了给TTP节点赋予安全相关特性,需要对TTP网络中的消息和系统构架进行配置,这些配置主要依赖于消息描述列表(MessageDescriptor List,MEDL)MEDL中包含了在设计之初就预先定义的TTP控制器与主机和集群中其他节点通信的时间信息,通信系统的所有行为控制信息全部都存储在MEDL之中。利用系统设计工具可以配置或验证这些配置信息,并能通过TTP网络对配置信息进行上传更新。
1.3 消息格式
TTP总线上传输的消息由帧进行组装,典型组装结构如图所示,它包含两头的协议开销和中间用于存储消息的帧身。头部的协议开销包含帧头和C-State,其中帧头用于存储模式变换请求(mode change request)、帧类型等信息:而C-State存储的是当前网络集群中各个TTP控制器的运行状态,它包含的信息一般有全局时间、时隙在集群中的位置、用于表示节点工作状态的成员关系表等内容,C-State会在每个时隙被TTP控制器更新一次。
帧尾部的协议开销通常是CRC校验码,TTP控制器在接收TTP帧时会将TTP帧内存储的CRC与根据TTP帧中数据计算得出的CRC进行比较,以此实现验错机制。

根据构成与功能的不同,总线上传输的TTP帧可以分为以下几种类型:第一种是包含隐性C-State的TTP帧,即N帧:第二种是包含显性C-State的TTP帧,即I帧或X帧;第三种是用于网络冷启动的冷启动帧。
-
N帧
N帧即普通帧(normal frame),它的头部协议开销只有帧头而不包含C-State这种帧的C-State信息被隐含在CRC中,它主要负责总线数据传输任务,其结构如图所示。

N帧各部分的定义:帧类型被设为0,代表属于隐性C-State帧;模式转换需求按照主机需求进行设置:应用数据段的大小在每个时隙中可以不同,但不能够超过帧身长度的限制:CRC根据帧头、应用数据和发送端C-State计算得出。
-
I帧或X帧
I帧即初始化帧(initialization frame),它的头部协议开销包含显性的C-State但是这种帧不包含应用数据,所以只能用于节点的集成配置,其结构如图所示。

I帧各部分的定义:帧类型被设为1,代表属于显性C-State帧;模式转换需求按照主机需求进行设置;帧头之后应当有C-State;CRC根据帧头和帧内C-State计算得出。
X帧即扩展帧(extendedframe),它既包含显性C-State 又包含应用数据,可以将X帧看作是I帧与N帧的结合,其功能也是I帧与N帧的功能的综合体,如图所示。

X帧各部分的定义:帧类型被设为1,代表属于显性C-State帧;模式转换需求按照主机需求进行设置;帧头之后应有C-State;包含两个CRC,第一个CRC根据帧头和C-State计算得出,第二个CRC根据帧头、C-Sate、应用数据以及第一个CRC计算得出;应用数据的长度也不能超过TTP帧身长度的限制。
-
冷启动帧
冷启动帧(cold start fame)用于初始化TTP 网络集群的通信,它的构成与I帧类似,但是其中部分数据被设定成了特殊值,只有负责初始化集群的节点才能发送冷启动帧。
冷启动帧各部分的定义:帧类型被设为1,代表属于显性C-State帧:模式转换需求被设为0,代表无转换需求;C-State中的全局时间被设为主机的启动时间;C-State 集群位置中的时隙位置应当被设为第一个TDMA周期:C-State中的DMC和集群模式都被设为0;成员关系表中除去冷启动节点以外的所有节点所对应的位置都被设为0:CRC根据帧头和C-State计算得到。

通过分析TTP总线传输的各类TTP帧的构成可以发现,在参与消息传输的各类帧中,基本上都包含了用于传输消息的数据段以及用于支持协议服务的协议开销参数,这说明总线时隙内每次消息传输的过程都伴有协议开销对时间资源的占用,即真正的消息传输过程都是在协议开销占用的资源之间完成的。
1.4 通信调度
TTP/C协议以时间触发机制为核心,总线网络中的消息基于时分多址(Time Division Multple Access,TDMA)方式进行调度。每个节点只能在设定的时间区间中向总线发送消息帧,该区间称为节点时隙(SRU/FTU slot),节点时隙重复出现的一个周期称为TDMA周期(TDMA round),而周期性出现的多个TDMA 周期被称为集群周期(cluster cycle)。不同节点占有的时隙长度可以不同,同一节点时隙在每个TDMA周期中的位置和长度都是固定不变的,但是同一节点可以在不同的TDMA 周期中传输不同的帧。另外,同一节点在同一时隙上两个通道内传输的帧也可以是不同的。

为了提高总线利用率,TTP协议还提供复用时隙(multiplexed slots)机制,即允许多个节点共享同一个时隙,这些节点被分配到不同TDMA周期中相同位置的时隙。如图所示,一个集群周期由四个TDMA周期构成,TDMA 周期的第四个时隙被设为复用时隙,且在连续的四个TDMA周期中依次被节点3、4、3、5占用在采用复用时隙机制的情况下,每个TDMA周期中一个节点仍然最多只拥有一个时隙、但是总线利用率却得到提高。

节点时隙的具体构成如图所示,包括预发送阶段(Pre-Send Phase,PSP)、传输阶段(Transmission Phase,TP)、接收后阶段(Post-Receive Phase,PRP)和空闲阶段(idle phase,IDLE)四个部分。PSP阶段TTP控制器为发送或接收数据做准备工作;TP阶段进行帧的传输,其起始时刻被称为启动时刻(Action Time,AT),即预计发送或接收帧的时刻;PRP阶段TTP控制器将分析接收到的,并根据接收数据进行协议操作;IDLE阶段,协议操作被暂停并等待下个PSP阶段的到来。一个时隙应以PSP起始时刻开始,直到下个PSP起始时刻结束;而一个时隙的PRP、IDLE阶段跟下个时隙的PSP阶段共同构成了帧间间隔(Inter-Frame Gap,IFG)。

1.5 时钟同步
-
时钟机制
TTP的分布式容错时钟机制是网络实时性与安全性的前提。为了实现整个网络的时钟同步并正确执行协议内容,TTP控制器的本地时钟同步需要全局时钟,同时全局时钟的调整又依赖于本地时钟。
TTP时钟机制中主要的计时参数包括微时标(micro-tick)、宏时标(macro-tick)、精度(precision)。微时标是定义宏时标的基础,表示的是TTP控制器本地物理时钟的最小晶振周期,代表了本地时钟的时间粒度。宏时标定义的是全局时间的粒度,每个宏时标都由若干个微时标构成,与TTP控制器服务或是收发帧有关的时间参数都应当以宏时标为基准。
为了保证时钟同步的顺利实现,每个节点上的宏时标长度必须相同,而每个节点的本地时钟的微时标长度可以不同。因此,一个集群中每个节点上的宏时标与微时标的长度比值可以不同,这个比值可以在配置信息中进行设置,如图所示。

实际情况下的节点时钟会发生偏移,各节点宏时标偏移的最大允许值称为精度,通过时钟同步机制可以把时钟偏移维持在小于精度的区间内。
-
同步步骤
TTP的时钟同步主要包括三个步骤:
- 根据节点TTP控制器检测帧的实际到达时刻(启动时刻AT)与计算所得的预计到达时刻,计算两者之间的时间偏差值;
- TTP控制器根据记录的偏差值,由容错平均(Fault-Tolerant Average,FTA)算法计算本地时钟状态修正项(Clock State Correction Temm,CSCT)的值;
- TTP控制器根据计算得到的时钟状态修正项对本地时钟进行调整。
-
同步偏差检测
时钟偏差值的检测原理如图所示,图中发送端的时钟早于接收端的时钟,这就导致TTP帧到达接收端的实际接收时刻treceptionr也要早于计算所得的预计接收时刻tAT’r。在理想同步状态下这两个时刻完全相等,而在实际情况中这两者之间的差值 Δ \Delta Δdif则被用于检测时钟偏差。

接收窗口 Δ \Delta Δrw定义的是接收端能够有效接收某个特定TTP帧的时间区间,该窗口关于预计接收时刻tAT’r对称,其宽度在配置信息中进行设置,大小如式(3-1)所示,其中 ε \varepsilon ε为时钟漂移值。不在接收窗内接收到的帧被认为是无效帧,无效帧的时间参数不会被用于时钟同步。
Δ \Delta Δrw = [ \big[ [tAT’r - ε \varepsilon ε , tAT’r + ε ] \varepsilon\big] ε](式3-1)
启动时刻AT是TTP控制器预计开始发送或接收帧的时刻,它在配置数据中由离线设计决定。上图中发送端预计开始发送的启动时刻为tATs,发送延迟为 Δ \Delta Δdelays,实际发送时刻为tAT’s,它们的关系如式(3-2)所示。
tAT’s = tATs + Δ \Delta Δdelays (式3-2)接收端的预计接收时刻为tAT’r,也即为延迟接收时刻,它的值由式(3-3)给出,其中tATr为起始接收时刻, Δ \Delta Δcorrs,r为时钟修正项。
tAT’r = tATr + ε \varepsilon ε + Δ \Delta Δcorrs,r (式3-3)以预计接收时刻tAT’r为参照,式(3-4)和式(3-5)给出了发送端与接收端的时间参数之间的关系,其中 Δ \Delta Δprops,r为传输延迟。每个时隙中对应的一组发送、接收端都应满足这两项条件,且时钟修正项 Δ \Delta Δcorrs,r和传输延迟 Δ \Delta Δprops,r的值都要遵循时隙配置。
Δ \Delta Δprops,r + Δ \Delta Δdelays = Δ \Delta Δcorrs,r + ε \varepsilon ε (式3-4)
Δ \Delta Δprops,r ≥ \geq ≥ 0 (式3-5)接收端根据本地时钟的时间粒度检测TTP帧的实际到达时刻treceptionr,任何接收到的帧的实际到达时刻与预计到达时刻之间的差值都将由式(3-6)算出,代表的是发送端时钟与接收端时钟之间的偏差值。
Δ \Delta Δdif = treceptionr - tAT’r (式3-6) -
计算状态修正项
在每个时隙内节点TTP控制器会检测出时钟偏差值 Δ \Delta Δdif,而时钟状态修正项CSCT则由容错平均算法FTA根据 Δ \Delta Δdif计算得出,具体步骤如图所示。

考虑TTP是单一总线型的网络,某个节点发送到总线上的消息可以被所有节点监测到,因此一个节点可以针对其他每个节点发送来的帧分别检测出其时钟偏差值,在最近检测的四个偏差值中去掉最大最小值然后求平均值,就可以得到本地时钟状态修正项CSCT的值。
如果计算所得CSCT超过了精度范围,那么节点会被判定为存在发送错误,这一判定信息会被传递给主机,主机会暂时中止运行该节点。如果计算所得CSCT是有效的,那么本地时钟会根据CSCT进行调整。
-
修正本地时钟
为了保证所有节点时钟的偏移保持在精度范围以内,TTP控制器要根据CSCT值调整本地时钟的macro-tick。具体调整策略包含两种:第一种调整策略是每经过一个macro-tick时间长度就将每个macro-tick中包含的micro-tick延长或缩短一个,如此逐步修正直到延长或缩短的micro-tick个数达到CSCT值的规定个数结束;第二种调整策略是一次性的把一个macro-tick中包含的micro-tick个数调整到CSCT所要求的值。
例如在下图中,第二个macro-tick中包含micro-tick个数减少了一个,而在调整结束后第三个macro-tick中包含的micro-tick个数又恢复成原有的正常值。

由上述原理可以看出,TTP的时钟机制对调度设计提出的限制体现在两个方面:一方面,TTP时钟对计时参数的规定以及时钟同步的原理决定了每个节点的时隙长度必须以相同的macro-tick长度作为长度单位;另一方面,TTP时钟同步的FTA算法要求在检测偏差并去除最大最小值后仍能求出均值作为CSCT。因此一个TTP网络为了实现时钟同步至少应当包含四个节点,其相关的TTP调度设计的对象也应当至少包含四个节点。
1.6 容错机制
容错机制是网络安全性和稳定性的基本保障,在TTP协议规范中,以时钟同步机制为前提,基于成员关系(membership)机制由确认算法(acknowledgement algorithm)实现网络容错。
-
成员关系机制
成员关系(membership)机制通过成员向量(member vector)完成对节点状态的记录和更新,成员向量是用于记录网络各个节点状态信息的参数,它存储在每个节点本地的 TTP 控制器以及部分TTP帧的C-State当中。
所有能在特定时隙发送消息的节点称为成员节点,每个成员节点在成员向量中都有一个对应的成员标示位。作为成员节点的TTP控制器在接收到帧时将对帧中的成员向量进行检测,依据检测的结果判断当前时隙对应节点的工作状态,从而更新本地C-State中的成员向量。其中接收帧的检测结果和对节点工作状态判断的对应关系见下表。
对接收帧的判定结果 对节点工作状态的判定结果 正确帧 节点状态正常 错误帧 节点状态错误 无效帧 节点状态错误 无接收帧 不更新节点状态 每个成员节点对接收帧的检测以及对本地成员向量的更新都在该节点时隙中的PRP阶段完成,所以也是节点接收后协议开销的一部分。
-
派系避免
派系避免机制体现了TTP网络是一个容错的网络系统。TTP网络通过确认算法实现容错机制,这一算法通过派系失效(Clique Avoidance,CA)算法和隐含确认(Implicit Acknowledgement,IA)算法来具体实现。派系失效算法为节点判断是否存在接收故障的准则,它的基本原理是:如果一个节点存储的成员关系信息与网络中大多数节点都不一致,那么该节点将暂时被踢出网络,即不再作为有效的成员节点参与通信。而隐含确认算法则是节点用于判断是否存在发送故障的准则,它规定在通信过程中发送者不会收到单独的返回确认消息,而是要通过检测后继广播者的成员关系表来判断自身是否存在发送故障。
在实际的TTP网络通信中,以上容错机制将通过成员节点间的CRC校验过程来实现,一个节点将针对它的最近两个后继节点(即最近与该节点存在通信行为的两个节点),通过比较接收帧中的CRC和计算得出的CRC来判断自身是否存在接收和发送故障。
