2.3.2 TTE时钟同步控制

2.3.2.1 PCF帧格式

时钟同步控制是TTE网络最核心的部分,TTE网络将节点分为同步控制器(SM)、集中控制器(CM)和同步客户(SC)三类,各个节点通过发送协议控制帧(PCF)来实现时钟同步控制。

PCF帧格式与标准以太网MAC帧格式基本相同,只是将标准MAC帧格式中的帧长度字段定义为帧类型字段,其字段值为0x891d;将数据单元(载荷)字段划分为控制、数据长度、参数和数据等字段,见图2-8。

图2-8 PCF帧格式

其中,数据字段包含如下字段。

(1)整合周期(Integration_Cycle)字段:32位,表示该PCF帧所在的整合周期。一个整合周期包括整个时钟同步过程。在整个TTE同步和数据传送过程中,包含0到最大整合周期(max_intergration_cycle)-1个整合周期,即TTE最多可进行max_intergration_cycle-1次同步。

(2)当前成员(Membership_New)字段:32位,其中每一位代表网络中的一个同步控制器(SM),即网络中最多可以设置32个SM。每个SM在创建PCF帧时,将该字段的对应位设置为1。这样,由SM发送的PCF帧中,该字段只有一位被设置为1,其他位为0。而CM发送的PCF帧中,可以包含当前所有的SM和SC,即该字段中有多位被设置为1。

(3)同步优先级(Sync_Priority)字段:8位,在每个SM、CM和SC中预先配置的该设备同步优先级。

(4)同步域(Sync_Domain)字段:8位,在每个SM、CM和SC中预先配置的该设备同步域。

(5)类型(Type)字段:4位,指明该PCF帧的类型,其中,0x4为冷启动帧、0x8为冷启动确认帧、0x2为整合帧等。在网络正常运行情况下,SM/SC通过发送整合帧进行时钟同步。当发生下列两种情况时,SM/SC发送通过冷启动帧进行时钟同步:一是网络中所有节点都未实现同步,即网络处于加电启动过程;二是TTE网络中其他节点已经同步,该SM/SC是一个新加入的节点。而冷启动确认帧是各个节点对冷启动帧的响应。

(6)透明时钟(Transparent_Clock)字段:64位,表示该PCF帧从源节点到目的节点所产生的链路总延时。

2.3.2.2 时钟同步关键参数

1.透明时钟

透明时钟用于记录PCF帧经过网络传输的延迟时间。通过测量PCF帧在各节点的驻留时间以及传输时间,并累加到帧的透明时钟字段。透明时钟值保存在PCF帧的Trans-parent_Clock字段中,记录该PCF帧从源节点到目的节点所经过的传输总延迟。各种节点的透明时钟计算公式如下。

(1)发送节点:

其中,dynamic_send_delay0为发送节点的动态发送延迟,static_send_delay0为发送节点的静态发送延迟。

(2)中继节点:

其中,pcf_transparent_clocki-1为经过第>i-1个节点后的透明时钟值,dynamic_relay_delayi为中继节点>i的动态传送延迟,static_relay_delayi为中继节点>i的静态传送延迟,wire_delayi为节点>i-1到节点>i的链路延迟。

(3)接收节点:

其中,pcf_transparent_clockn-1为经过第>n-1个节点后的透明时钟值,dynamic_receive_delayn为接收节点>n的动态传送延迟,static_receive_delayi为接收节点>n的静态传送延迟,wire_delayi为节点>i-1到节点>i的链路延迟。

2.最大传输延迟

最大传输延迟表示整个网络系统中任意两个节点之间的最大传输延迟,计算公式如下:

式中,max_transmission_delay是一个离线得到的统计值,在网络拓扑构造完成后,max_transmission_delay是一个确定值。

3.集中算法延迟

集中算法延迟是指执行集中算法所需的时间开销。为了保证时间同步的精度,需要计算集中算法延迟时间,并且是不可忽略的,计算公式如下:

式中,max_observation_window为最大观察窗口,由系统的容错余度(窗口个数)和同步精度(观察窗口大小)来决定;calculation_overhead为集中算法的处理时间;dispatch_delay为帧的发送延迟。

4.PCF预定接收时间

PCF预定接收时间与实际接收时间相减便可以得到接收时间偏差。时钟同步采用时序保持算法,由于所有PCF帧的传输延迟都是一个定值,并且CM的处理延迟也是一个定值,因此可以预先测算出CM的预定接收时间值和SMC(SM或SC)的预定接收时间值,计算公式如下:

式中,sm_dispatch_pit为SM发送PCF帧的发送时间;max_transmission_delay为最大传输延迟;compression_master_delay为集中算法延迟。pit代表时间点(points in time)。

2.3.2.3 时钟同步关键算法

1.时序保持算法

时序保持算法用于消除网络传输延时对时间同步的影响。引入网络传输延时的因素包括发送延迟、链路延迟和接收延迟。对于高精度的时间同步,这些延迟是必须考虑的。时序保持算法通过PCF帧中的透明时钟对PCF帧到达时间进行修正,以恢复各个PCF帧的时序关系。

TTE通过时序保持算法实现了时序保持功能,该算法的作用就是在已知receive_pit(接收节点物理上接收到PCF帧的时间点)的情况下计算permanence_pit(经过时序保持算法处理后得到的时序时间点),使得网络因自身原因而失序的各个PCF帧恢复其原始的发送时间顺序,即保证PCF帧的接收顺序与其发生顺序相一致。由于网络抖动造成了PCF帧延迟与实际PCF帧延迟存在一定的偏差,采用时序保持算法来纠正PCF帧因网络抖动造成的延迟偏差所导致的PCF帧接收失序。

TTE采用了透明时钟机制,PCF帧经过各个中继节点传输,所产生的延迟累加到PCF帧的Transparent_Clock字段中,也就是PCF帧在网络中的延迟。因此,即使在网络传输中PCF帧出现一些微小错误(如时钟漂移等),一个接收节点仍能确定它实际的延迟。

时序保持算法的流程如下。

(1)接收节点接收到PCF帧,读取本地时钟值,记为receive_pit,并启动时序保持算法;

(2)读取PCF帧的Transparent_Clock字段得到透明时钟值pcf_transparent_clock,即为PCF帧在网络中传输的实际总延迟;

(3)计算permanence_delay:permanence_delay=max_transmission_delaypcf_transparent_clock;

(4)计算permanence_pit:permanence_pit=receive_pit+permanence_delay。

通过时序保持算法,接收节点可以得到整个网络的最大传输延迟max_transmission_delay,并且还可以计算出时序保持延迟permanence_delay,将网络抖动造成的接收节点延迟偏差转换到接收节点中。

通过时序保持功能,透明时钟机制可以提取产生网络抖动的接收节点。由于所有的PCF帧到达目的节点后,都是在permanence_pit时间点上才认为该PCF帧是有效的,因此可以将所有PCF帧的网络延迟视为一个恒定值,即max_transmission_delay。

2.集中算法

由于各节点时钟的稳定性以及环境等因素影响,各个SM的时钟可能存在着偏差,可能导致PCF帧的发送时间不一致。为了消除各个PCF帧之间的时间偏差,CM将通过集中算法来生成一个新PCF帧。在执行集中算法时,首先根据接收到的属于同一个整合周期的所有PCF帧的permanence_pit值,计算出一个偏差均衡值,以该均衡值为基础生成一个新PCF帧,作为全局时钟的基准,并在该PCF帧的Membership_New字段中设置当前所有成员,然后将该PCF帧广播到当前所有成员,包括各个SM和SC。

集中算法的作用是根据CM接收到的属于同一个整合周期的所有PCF帧中的perm-anence_pit值,计算出compression_pit值,并将所有PCF帧的Membership_New整合为一个值。在时钟同步运行中,所有的SM在同一时间点local_clock=0向CM发送PCF帧。由于时钟晶振存在偏差,SM的PCF帧发送时间和CM接收后的permanence_pit存在一定的偏差,因此需要将这些存在偏差的PCF帧进行集中整合。

CM在接收到各个SM发送来的PCF帧后将执行集中算法,将接收到的非同步PCF帧整合为一个趋近全局同步时间点的PCF帧。集中算法整合各SM发送来的PCF帧,计算出compression_pit,并在该时间点到达时执行本地时钟同步,等待dispatch_pit产生新PCF帧,然后将新PCF帧广播到各SM和SC。

集中算法不在CM的本地时钟到达某个特定时间点启用,而通过接收PCF帧来激活集中算法,然后收集在该PCF帧观察窗口内的其他PCF帧进行整合。因此集中算法能够识别正常的SM发来的PCF帧,从而产生新的PCF帧,个别出错的SM早发或迟发PCF帧,都不会影响CM的集中算法正常执行。

CM接收到PCF帧后,将执行如下的操作流程。

(1)接收PCF帧后,执行时序保持算法,得到PCF帧的permanence_pit;

(2)根据PCF帧的Membership_New字值判断是否执行集中算法:若Membership_New仅有一位为1,则执行集中算法;否则不执行集中算法,转到步骤(4);

(3)预置PCF帧的compression_function时间事件,再等待>T>T为该PCF帧的permanence_delay)后执行集中算法;

(4)执行时钟同步算法,校正本地时钟,产生新的PCF帧;

(5)向各个节点广播新PCF帧或者向各个连接端口转发接收到的新PCF帧。

3.时钟修正算法

CM通过集中算法计算出整个网络的各SM时间偏差均衡值,完成对CM本地时间的修正,并生成一个新PCF帧,然后广播到各SM和SC。各SM和SC根据CM返回的PCF帧,计算出PCF预定接收时间与实际接收时间的差值,也就是本地时钟与全局时钟的偏差,对本地时钟进行修正,从而实现全网时间同步。

对于SM/SC,假设在所有接收PCF帧的信道中最好的信道上接收到第>i个PCF帧,则时钟校正参数为

对于CM,假设在所有接收PCF帧的信道中最好的信道上接收的PCF帧经过集中算法之后,选取max(cm_compressed_pit),则时钟校正参数为

CM/SM/SC的时钟校正为

2.3.2.4 全局时钟同步协议

全局时钟同步协议的目标是使TTE网络上所有端系统和交换机的本地时钟同步,为下一步的TT数据传输做好准备。时钟同步协议将在一个整合周期内完成同步,在整个TTE工作过程中,时钟同步可以定期执行,同步次数可以设置,最多可以同步max_intergration_cycle-1次。

TTE网络通过两步消息处理机制来实现全网时钟同步,时钟同步算法由底层硬件实现,图2-9给出了时钟同步流程示意图。

图2-9 TTE网络时钟同步流程

第一步,同步控制器(SM)准时向集中控制器(CM)发送PCF帧。不是在任何时间都可以发送PCF帧,而是SM在本地时钟到达规定的时间点(local_clock=0)时才发送PCF帧。PCF帧的内容与SM的本地时钟有关,如发送时间。在传输给CM的过程中,PCF帧记录相关的延迟信息,包括传播延迟、动态发送/接收延迟、静态发送/接收延迟等。

第二步,CM在接收到与之相连的各链路发送来的PCF帧后,经过时序保持算法和集中算法计算出一个新的时钟值,并记录到一个新PCF帧中,然后将该PCF帧发送给SM和SC,其中SC只是简单地接收PCF帧,本身并不主动参与时钟同步。SM和SC根据新PCF帧携带的时钟信息来校正各自的本地时钟,从而实现全网的时间同步。

在单同步域的情况下,全局时钟同步算法的PCF帧处理过程如图2-10所示。该算法包含两个子算法:时序保持算法和集中算法,时序保持算法在SM、CM和SC上都要执行,而集中算法只在CM上执行。

图2-10 PCF帧处理过程

根据时钟同步流程,时钟同步算法分两步进行,第一步是PCF帧从SM到CM,第二步是新PCF帧从CM到SM/SC。

第一步:

(1)一旦SM的local_clock=0,在sm_dispatch_pit时刻,SM创建并准备发送PCF帧。

(2)在sm_send_pit时刻,SM将PCF帧发送到信道上。

(3)在cm_receive_pit时刻,CM接收到该PCF帧,并启动消息时序保持算法,在已知cm_receive_pit的情况下,计算cm_permanence_pit,使得因网络自身原因而失序的各个PCF帧恢复其原始的发送时间顺序,保证PCF帧的接收顺序与其发生顺序相一致,即

其中,max_transmission_delay值是SM/SC和CM之间的最长传输延迟,当网络拓扑确定后,该值也就确定了;pcf_transparent_clockn是PCF帧中携带的信息。

(4)在cm_permanence_pit时刻,CM启动集中算法,根据同一个整合周期的所有PCF帧中的permanence_pit值,计算出cm_compressed_pit值,即

式中,cm_compressed_delay=cm_permanence_pit1+max_observation_window+calculation_overhead+compression_correction是集中算法执行过程中的延迟。

(5)CM根据计算出的cm_compressed_pit值,经过一个延迟时间clock_corr_delay后,计算并校正本地时钟:local_clock=local_clock+clock_corr。

在CM中执行的时钟同步服务主要是CM本地时钟部分,其中:

CM将挑选所有接收PCF帧的信道中最好的信道,假设在该信道上接收的PCF帧经过集中算法之后,选取max(cm_compressed_pit)。

第二步:

(6)经过延迟dispatch_delay时间后,在cm_dispatch_pit时刻,准备发送一个新的PCF帧。

(7)在cm_send_pit时刻,将新PCF帧发送出去。

(8)在smc_receive_pit时刻,SM/SC接收到该PCF帧,并调用时序保持算法。在smc_permanence_pit时刻,完成时序保持算法,恢复了PCF帧原始的发送顺序。此时,smc_permanence_pit的计算公式如下:

(9)经过延迟clock_corr_delay后,在smc_clock_corr_pit时刻,完成时钟纠正。

同样,SM/SC将挑选所有接收PCF帧的信道中最好的信道,假设在该信道上接收到第>i个PCF帧。时钟纠正参数,时钟偏差计算公式如下:

上述的时钟同步过程在两种情况下被触发:一是SM的本地时钟到达规定的时间点(local_clock=0),通过发送整合帧来启动时钟同步过程;二是新加入的SM/CM节点加电启动,通过发送冷启动帧来启动时钟同步过程。对于新加入或者已有的SC节点,只能通过CM的整合帧进行时钟同步,而不能主动发送冷启动帧或者整合帧来参与时钟同步。

下面是一个新加入网络的SM节点从加电启动到实现系统同步的过程:

(1)一个新加入的SM节点加电启动后,如果该SM接收到一个整合帧,则表明网络处于同步状态,该SM将利用整合帧来修正本地时钟;如果该SM接收到一个冷启动帧,则表明网络系统正在初始化同步,该SM发送冷启动响应帧到CM进行响应,等待接收CM的冷启动响应帧来修正本地时钟;如果没有接收到任何PCF帧,则主动向CM发送一个冷启动帧,请求时间同步。

(2)CM接收到冷启动帧后,向其他各个节点发送冷启动帧,通知进入冷启动同步状态。

(3)各SM接收到冷启动帧后,发送冷启动响应帧到CM,对冷启动同步进行响应。

(4)CM通过集中算法对各个冷启动响应帧进行计算,并形成一个新冷启动响应帧,并发送给各SM。

(5)各SM接收到CM的新冷启动响应帧后,进入时钟同步操作状态,完成本地时钟纠正。这时,网络系统进入同步状态。

文献[2]使用OPNET仿真工具对TTE时钟同步算法进行了仿真实验,以验证执行时钟同步操作之后的每个节点时钟是否满足设定的时间精度要求。

仿真场景如下:

(1)网络拓扑结构设置为双通道星形结构。

(2)网络节点设置为2个CM交换机节点、4个SC交换机节点、16个SM终端节点、8个SC终端节点。

(3)网络链路采用100Base-T,即传输速率为100Mbps。

(4)设置网络中所有节点同时启动,每个节点的本地时钟都是从零开始计时,并且始终保持同步状态。

(5)仿真时间设置为3s。

仿真实验结果表明,时钟同步算法能够在95ns内完成时钟同步,具有很高的时间精度,从而保证整个网络系统能够以较高的时间精度进行实时数据传输。