以太网中时间同步的那点事
爱因斯坦说:时间是人类认知的错觉。
海德格尔说:时间是人类存在的核心。
对于普通人来讲,时间就是大脑神经元中记忆碎片构建的意识。正是由于神经元的记忆特征,才能在“现在”随时的回忆“过去”。也就是说“过去”存在于“现在”之中,“过去”也就是“现在”,没有“现在”也就没有“过去”,更没有所谓的“将来”。
然而,如何去衡量什么是“过去”“现在”和“将来”呢?
我们的祖先曾经利用过圭表、日晷、铜壶滴漏和焚香计时的方法来记录时间,从此有了时辰的概念;根据地球、月球和太阳相互转动和自转的周期产生了更长的年、月、日的时间概念。
今天,时间的衡量已经到了更为精确的程度。我们使用石英振荡器来产生更为精确的“秒”、“微秒”、“纳秒”等更小的时间单位,甚至利用原子吸收或释放能量时发出的电磁波来计时,即原子钟。现在用在原子钟里的元素有氢(Hydrogen)、铯(Cesium)、铷(rubidium)等。原子钟的精度可以达到每2000万年才误差1秒。这为天文、航海、宇宙航行提供了强有力的保障。
如今,普通的FPGA开发板采用晶振来提供时间的计量,在某些场景下采用原子钟实现更高精度更稳定的时钟源。
采用FPGA对时间进行操作的方向主要包含两个,一个是使用FPGA对时间间隔进行测量;另外一个方向就是对不同系统的时间进行同步。第一个方向可以实现几皮秒甚至零点几皮秒的测试精度(Wang H , Zhang M , Yao Q . A new realization of time-to-digital converters based on FPGA internal routing resources.[J]. IEEE Trans Ultrason Ferroelectr Freq Control, 2013, 60(9):1787-1795.),第二个方向则可以实现纳秒级及亚纳秒的同步。本文主要介绍FPGA实现的时间同步。
时间同步的重要性
时间同步,自古有之。闰年(Leap Year)就是为了弥补因人为历法规定造成的年度天数与地球实际公转周期的时间差而设立的。而穿越剧中的故事情节,也必须有时间同步的概念后才能把事情叙述明白。
但在网络中,尤其是5G时代,对时间同步的要求越来越高。目前5G通信网的时钟同步发展正处于标准建议阶段,5G通信网对时钟源、以及时钟传递、末级节点时钟同步性能要求有显著提升,部分节点同步性能要求可能达到10~30纳秒水平,末级节点可能在百纳秒级水平。时间同步,比较重要的一个环节就是要有一个时间的基准源,GPS和北斗定位系统,除了定位之外,还有一个超级重要的功能就是授时功能,就是提供一个大家都可以接收到的基准时钟(后续介绍的1588时钟同步就必须要有一个基准时钟)。
另外,在航空航天和工业控制等领域,时间同步也起着越来越重要的作用。
数千架无人机组成的无人接表演需要时钟同步
时间同步技术研究现状
目前主流以太网时间同步技术主要基于NTP[1]、IEEE1588[2]、以及AS6802[3]三种时间同步协议来进行实现。NTP协议作为最早提出的时间同步协议,被广泛应用于传统以太网中,其同步精度可以达到毫秒级,但随着实时网络研究的兴起,航天航空、工业控制等领域实时性的需求不再满足于毫秒级的同步精度。
IEEE标准委员会于2002年通过的IEEE1588高精度时间同步协议相比NTP协议,其时间同步精度可以达到亚微秒级,有效解决了实时网络中时间同步精度不满足的问题。自从IEEE1588时间同步协议提出以来,得到了广泛的认可,许多厂商更是基于IEEE1588开发出了各自的产品[4]。目前,More Than IP 公司和 Arasan公司相继推出了支持IEEE1588协议的MAC模块,可实现精度为50ns的时钟同步[5][6];Hirschmann公司采用FPGA芯片实现IEEE1588时间同步的方式,其同步精度可达60ns[7]。IEEE 1588协议虽然可以提供很高的同步精度,但无法对于网络中潜在的故障节点进行容错过滤,同时IEEE1588协议中定义的主从时间同步模型,其时间同步精度过于依赖主时钟的稳定性,存在一定的局限性。
2011年颁布的开放标准AS6802[8],它继承了IEEE1588协议中的透明时钟机制[9],同时在同步处理过程中,增加了一系列容错机制[10],有效解决了IEEE 1588协议无法进行容错处理的缺陷;同时AS6802中引入了全局时间基准,网络节点的时间同步以其本地时间与全局时间基准的差值作为依据,来进行时间同步。因此同步精度[11]受网络中故障节点的影响。由于AS6802协议提出时间相对较晚,目前其相应的产品主要被TTTech公司垄断,用于汽车、飞机、航天航空系统中关键控制信号的传输;而在国内,AS6802协议的研究主要在各大航天所、研究所与高校的预研项目中进行开发研究,尚处于理论研究阶段。2011年,北京航空航天大学刘晚春[12]等人在SAE AS6802标准形成之际,对AS6802协议的时间同步机制进行了分析研究,并在特定的网络场景下,对其进行了仿真验证,为本设计提供了重要的理论基础;2013年,电子科技大学郭爱英[14]提出了一种基于FPGA的AS6802协议的实现方案,并对其进行了板级调试,但其在板级调试过程中,未能考虑实际情况下PHY侧引入时延,且缺少TTE的网络通信场景验证,尚不能投入实际应用之中;2017年,北京交通大学毛轶针对AS6802协议中定义的容错机制展开研究,设计了一套时间触发以太网容错时钟同步机制,并对其完成了仿真验证[15],为本设计中容错机制的引入,具有很好的借鉴作用。AS6802协议的高精度、高容错特性使其很好的适用于汽车、航天航空等具有高实时性、高可靠性需求的领域[16],因此对于AS6802协议进行研究,早日开发出能投入实际应用的产品,是国内学者急切需要解决的事情。
【参考文献】
[1] 赵龙. 基于NTP协议的网络授时研究[D].辽宁: 辽宁工程技术大学, 2006.
[2] IEEE Standard for a Precision ClockSynchronization Protocol for Networked Measurement and Control Systems. 2002.
[3] SAETechnical Standard. SAE AS6802[S]. SAE International. 2011-11.
[4] 曹强.OTN网络中基于IEEE1588的高精度时间同步的研究与实现[D].上海交通大学,2015.
[5] 宋仕坤. 基于以太网MAC IP核的IEEE1588协议的设计与实现[D].西安电子科技大学,2017.
[6] More Than IP Altera InternationalLimited 1588 Tri-Speed Ethernet MAC Core Product Brief. http://www.altera.com/products/ip/ampp/morethanip/documents/m-mtip-trimode1588macpbvl.0.pdf. 2006
[7] FastEthernet1588.ArasanChipSystemsInc.
http://arasan.com/products/wireline-interface/ethernet/fast-ethernet-ieee-1588/. 2010
[8] Precision ClockSynchronization-IEEE1588White Paper. Andreas Dreher,DirkMohl.
[9] 兰杰,朱晓飞,陈亚,李峭.时间触发以太网标准研究[J].航空标准化与质量,2013(05):24-27+56.
[10] 高鹏飞. 时间触发以太网交换机设计[D].西安电子科技大学,2014.
[11] 兰杰,熊华钢,李峭.时间触发以太网时钟同步的容错方法分析[J].计算机工程与设计,2015,36(01):11-16.
[12] 杨俊雄,徐亚军,何锋,刘志丹.时钟同步精度对TTE实时性影响研究[J].电光与控制,2016,23(08):33-38.
[13] 刘晚春,李峭,何锋,熊华钢.时间触发以太网同步及调度机制的研究[J].航空计算技术,2011,41(04):122-127.
[14] 郭爱英.时间触发以太网同步技术的研究与实现[D].电子科技大学,2013.
[15] 毛轶.时间触发以太网容错时钟同步机制的研究与硬件实现[D].北京交通大学,2017.
[16] Steinbach T, Lim H T, Korf F, et al. Tomorrow's In-Car Interconnect? A Competitive Evaluation of IEEE 802.1 AVB and Time-Triggered Ethernet (AS6802)[C]// Vehicular Technology Conference. IEEE, 2012:1-5.
1588时间同步原理
如果不进行时间同步,任由系统中的各个时钟自由运行,由于计时器件所使用的晶振存在相位或者频率漂移(例如受到温度影响,器件老化等因素),那么结果可能如下图虚线所示。
石英晶振精度的相对偏差常用PPM表示,其物理意义为精度偏差是标称频率的百万分之一,即1 ppm的晶振频偏将会导致每秒钟产生1微秒的计时误差;而市面上常见的石英晶振,其温度漂移可达到1 ppm/摄氏度甚至更高,若让其自由运行,最终时间将会产生很大的偏差。时间同步的目的是定期修正自由时钟的时间偏差,将其时间值约束在标准时钟的附近,如图中红线所示。一个只包含主时钟和从时钟的PTP系统通过交互PTP信息来实现主从时钟间的同步,其基本同步报文交互过程如下图所示。
以上公式得以成立的基本前提是假设主从时钟上下行链路延迟相等,即图2中Sync和Delay_Req在传输线路上所消耗的时间是一样的。但在实际应用中,即使在主从时钟直接相连的情况下,下行时延和上行时延在纳秒这一量级上都是不对等的,如果中间跨越了其它网络设备,这一不对等性将会扩大到微秒甚至毫秒量级,对最终的同步精度产生很大的影响,所以IEEE 1588不能较好的适用于对非对称性网络拓扑结构。在实际应用中为了进一步提高精度,需要尽可能的将打时间戳的位置选取到靠近物理连线的地方,并且需要采取适当的算法或外部补偿的方式来减小这种双向时延不对称性带来的同步误差。
传播时延的不对称性是影响1588时钟同步性能的主要因素。有研究表明,采用某种方法实现主从时钟上下行链路延迟尽可能相等的前提下,能够提升1588时钟同步的精度及其同步的稳定性。
在TSN的802.1AS协议及其REV协议中,明确定义了1588同步实现的具体方式和细节,但因其有主时钟的缘故,制定了相应的BMCA(最佳主时钟选择)算法及冗余策略来实现其可靠性。
尽管目前对设备灵活性和智能化的需求已成为无线网络研究的热点,但有线网络在具有传感器和执行器设备的实时网络中仍占有不可替代的地位。通过时钟同步系统将一个具有不同设备和协议的混合有线/无线通信系统集成在一起,将成为未来的主流。时间敏感网络(TSN)服务等技术有助于实现混合系统中的实时数据交互和时间同步。但是,由于效率低下,对于处理小型数据以太网帧和耗时的转发过程,限制了其在底层设备中的发展。因此,有线网络的时间同步机制仍然是必要的。除了精度和准确性,算法简单、性能更稳定、成本更低、通信资源占用率更低将是时间同步技术在有线网络领域的突破方向。(需要注意的是,此处所提的TSN中时间同步技术并非特指1588时间同步技术,而是指未来可能在TSN中应用的时间同步技术)
6802时间同步原理
相对于IEEE1588时间同步而言,AS6802协议在实现网络中各个设备之间的时间同步时,并没有选取某一个网络设备的时间作为最佳主时间,而是采用了分布式的时间同步方法,并且AS6802协议有很强大的容错机制(AS6802可以用严谨的数学证明来证明其可靠性),保证了时间同步的稳定可靠。
PCF业务是由AS6802协议规定的,用于时间同步的协议帧,其类型域为0x891d,其帧结构如图所示,PCF帧内容说明如下表中内容。
PCF帧与标准以太网帧完全兼容,其实现AS6802协议功能的字段都在以太网帧的payload域,在PCF帧中我们称其为PCF域。PCF域的具体内容见下图。
其中,Integration_Cycle表示同步的整合周期,表示目前的时间是同步集群周期的第几个基本周期。Membership_New表示PCF帧的成员向量,4字节,每个端系统SM会对应1比特,这样支持的SM数目最多为32个。Sync_Priority表示PCF帧的优先级,在AS6802同步中,CM不接收来自优先级不同的SM的帧,SM和SC不受优先级的影响,可以接收不同优先级CM的PCF帧。Sync_Domain表示同步域,在同一个同步域下的AS6802设备之间才可以进行PCF帧的交换。Type表示PCF帧的类型。PCF有三种类型的帧:冷启动帧(CS),冷启动应答帧(CA)和同步帧(IN)。Transparent_Clock表示透明时钟,这样有利于同步的级联与扩展。
AS6802协议具体建立同步过程如下图,具体步骤如下:
(1)TTE网络中的设备启动,进入非同步状态;
(2)TTE网络中SM是同步过程的发起者,首先向网络中的CM发送CS帧;
(3)CM将收到的CS帧进行固化后,向SM回复CS帧;
(4)SM对收到的CS帧同样进行固化处理,然后等待一个事先预设的固定时延即CS_offset后发送应答CA帧;
(5)CM将SM发来的应答CA帧进行固化后,向SM回复CA帧;自身进入等待IN帧状态,并启动等待IN超时计数,其上限值为事先设定的常量即Wait_IN_timeout;
(6)SM收到CM发来的CA帧后对其进行固化处理,然后等待一个事先预设的固定时延即CA_offset后发送IN帧;
(7)CM在Wait_IN_timeout时间内收到SM发来的IN帧,则进入同步状态,并且校准本地时间同时向SM回复IN帧,否则CM重新回到失步状态;
(8)SM收到CM发来的IN帧后,进入同步状态并且校准本地时间,否则进入失步状态。
在不同厂家设备实现6802同步时,CA帧的接收窗口的问题往往是其中最关键的问题。
时间同步精度的测量
对于时间同步精度的测量,往往是采用秒脉冲的方式进行。在不同的两个系统板卡上各引出一条按照各自板卡上同步后的时钟计量1秒时间出来的脉冲信号到同一个示波器上,通过对比相应的秒脉冲时间偏差进而得到同步时钟的偏差。如下图,笔者实验室实现的千兆以太网模式下6802同步或者1588同步可以实现10ns的同步误差,百兆以太网模式下则可以实现40ns左右的同步误差。
百兆模式下时间同步精度40ns
千兆模式下时间同步精度10ns
1588同步和6802同步的对比
一、应用场景
1、1588:多用于分布式网络拓补结构中,各网络节点功能有主次之分,且网络拓补环境较为稳定,不经常改变;
2、6802:多用于网络节点功能相似的拓补结构中,可适应网络拓补环境中经常添加网络节点或者移除网络节点的情况。
二、实现方式
1、IEEE 1588 多采用软、硬件结合的方式,实现高精度的时钟同步。软件部分实现 BMC 算法和 PTP 其他同步算法,硬件则主要负责时间戳的精确获取。
2、SAE AS6802协议定义了3种以太网封装的PCF同步帧,可完全采用硬件实现。
三、影响同步精度因素
1、IEEE 1588打时间戳的精确度以及上下行时延的对称性是直接影响时钟同步的精度。
2、SAE AS6802协议透明时钟的精确度直接影响时钟同步的精度。
四、同步帧区别
1、IEEE1588 标准定义了10种PTP报文实现时钟同步,包括事件报文和通用PTP报文。
2、SAE AS6802协议定义了3种以太网帧实现时钟同步,包括CS、CA、IN帧。
五、瓶颈
1、AS6802 中定义的单个集群最多只能包括32个SM。所以对于节点数目庞大的集群,如果使用 AS6802 同步技术实现所有节点间的时钟同步,需要把这个复杂集群划分为多个逻辑子集群。这种划分使得透明时钟的计算不仅包括多个SC,而且可能跨越多个子集群,这种情况会导致集群中最大链路延迟的计算量大且透明时钟的精确度低。
2、IEEE 1588标准是以传输线路的对称性为前提进行的延时测量,如果系统节点数目较多,规模庞大结构复杂,网络的对称性就会变差,同步精度就会降低,为此IEEE 1588v2中定义了透明时钟、延迟测量和非对称性补偿机制,有效减小了网络非对称性对时钟同步精度的影响。当网络中节点数目较多时,最优主时钟算法的计算量较大,这不仅损耗较多的系统整体资源,而且要求主站具有很高的数据运算和处理能力。
全文完。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。