1 IEEE1588概述

IEEE1588定义了为网络测量和控制系统提供精确时钟同步协议的标准,运营商、电力、制造、运输等各大行业的部分系统都需要一个能在低成本、易部署的以太网上为其提供高精度时钟同步的方法,IEEE1588能满足此需求。可以预见,IEEE1588将是这些业务系统的重要组成部分,在部署它之前需要对设备能力进行充分的测试,以确保满足业务要求。

IEEE1588分为两个版本,本文参照版本2——IEEE Std 1588-2008。

2 IEEE1588基本原理

2.1 IEEE1588几个基本概念

●域(Domain)是一个逻辑概念,属于同一个域的设备之间进行信息同步,不同域之间不需要同步。
●普通时钟(Ordinary Clock),在一个域中只有一个运行PTP协议的端口,既可以是主时钟,也可以是从时钟。
●边界时钟(Boundary Clock),在一个域中有多个运行PTP协议的端口,可以同时是主时钟和从时钟。
●端到端(End-to-end)E2E透明时钟,位于主从时钟之间,计算自身的驻留时间并累加到报文的修正域中。
●点到点(Peer-to-peer)P2P透明时钟,位于主从时钟之间,计算点到点链路时延和自身的驻留时间并累加到报文的修正域中。

2.2 主从关系的建立

在一个域中,普通时钟和边界时钟的每个端口都有各自独立的状态,各个端口通过最佳主时钟算法(BMC,Best Master Clock algorithm),比较收到的宣告(Announce)报文内容以及自身配置,计算端口状态,状态包括主、从、消极(既不是主时钟,也不向主时钟同步,出现在环路情况下),BMC算法在一个网段上只会选择一个主设备。此外,一个域中还存在一个超级主时钟(Grandmaster Clock),其它设备的都直接或间接向其同步。一个域中会达到一个相对稳定的状态,具体参见图1。


图1 主从关系的建立

2.3 PTP协议报文交互

PTP协议是IEEE1588的核心协议,设备之间通过运行PTP协议,交互PTP报文,实现时间和频率的同步。普通的PTP协议交互步骤如下(见图2):


图2 PTP协议报文交互

●主设备会发送sync报文,如果报文中包括发送此报文的时间戳且不再发Follow_up报文则称作一步时钟,如果随后再发送个Follow_up报文记录发送Sync报文的精确时间戳则称为两步时钟(一步时钟对芯片的精度要求更高),从设备收到这一个或两个报文后记录下两个时间t1(Sync发出时间),t2(从设备收到Sync报文时间)。

●从设备在t3时刻发送时延请求报文,主设备在t4时刻收到此报文,并将此时间戳放在时延响应报文中发给从设备,从设备此时又记录下了t3和t4。

2.4 同步计算方法

IEEE1588有个前提:主从设备之间的双向时延需要相对稳定(IEEE1588支持双向时延不同,可以通过异步时延(Delay Asymmetry)进行修正,但仍要求双向时延稳定,Delay Asymmetry的测量不在IEEE1588标准中规定,需要通过其它方法测出双向的时延。在普通以太网的链路上基本能够满足此要求,但以太网设备如路由器交换机等则很难满足,在设备出现拥塞时会将一部分报文缓存,引入了不确定的报文在设备内驻留的时间,但报文从相反方向进入设备时可能没有拥塞,这样双向时延有可能相差很大,所以PTP协议最好不要跨越不感知PTP报文的路由器或交换机来同步时钟。

当从设备知道了4个时间后就计算出了从设备与主设备之间的传输时延,Delay=[(t2-t1)+(t4-t3)]/2。从设备与主设备的时间偏差为Offset=t2-(t1+Delay)=[(t2-t1)-(t4-t3)]/2。从设备根据计算出来的偏差修改本地时间,完成了时钟同步。

在多跳组网环境中通过,相连的两台设备建立主从关系,将时钟一跳一跳同步下去,这样精度会随着跳数增加显著降低,积累误差逐渐增加,而PTP跨越不感知PTP报文的设备也会使精度降低,这样就产生了一个问题,如何在多跳的大型网络中进行高精度的同步时钟,解决方法就是引入透明时钟。透明时钟用来减少网络抖动的影响,进行非对称性修正,透明时钟没有主从状态,能够减少大型网络中的积累误差。透明时钟包括端到端(E2E)透明时钟和点到点(P2P)透明时钟。

2.5 E2E透明时钟

E2E可以理解为对直连模式的扩展,允许主设备和从设备之间有多台设备,但这些设备需要感知PTP报文,即作为E2E透明时钟。E2E透明时钟设备需要在报文中将该报文在设备里的驻留时间累加到修正域中,对所有经过的PTP报文都进行此操作。在普通PTP报文交互的基础上,增加了两个数值,一个是报文从主设备到从设备的时间修正值c1(可以经过任意跳E2E透明时钟,最终得到的值),另一个是反向时间修正值c2,此时Delay=[(t2-t1-c1)+(t4-t3-c2)]/2,从设备与主设备的时间偏差为Offset=t2-t1-Delay-c1(此处只介绍了一步时钟的情况,两步时钟参见标准)。简单的说E2E模式下把主设备和从设备之间的不稳定的驻留时间扣除,利用稳定的双向传输时间之和除以二来计算Delay,之后再进行同步。

2.6 P2P透明时钟

P2P对协议流程进行了优化,不只计算驻留时间,还计算出了链路时延,并把二者加在一起放到修正域中,逐跳传播累加,直到从设备。当从设备收到Sync报文时已经知道了总的传输时间和驻留时间,这样就可以直接计算出Offset并同步了,不用再发送时延请求,主设备也不用再回应时延应答了。P2P透明时钟通过和其相连的PTP设备交互对端时延请求报文和对端时延响应报文,能够知道4个时间t1,t2,t3,t4,通过Delay=[(t2-t1)+(t4-t3)]/2的计算方法算出链路时延(见图3)。


图3 P2P透明时钟

 

E2E透明时钟会修正和转发所有的PTP报文,P2P透明时钟只修正和转发Sync和Follow_up报文。P2P时钟的特点是Sync和Follow_up报文只需单向(主设备向从设备)传播,不需要反向(从设备向主设备)的时延请求和确认,网络中两台设备之间的链路时延已经计算出,这样网络路径切换后从时钟能够快速在新路径上完成时钟同步。

2.7 各种时钟模式适用的网络拓扑

时钟模式适用的网络拓扑并不是绝对的,需综合考虑网络特点、设备支持的IEEE1588功能等,在降低管理维护难度的同时,确保时钟同步准确、稳定。

(1)层次化网络拓扑

这种拓扑的网络结构扁平,边界时钟数量少,普通时钟数量多,时钟同步的级数少,不需要引入透明时钟,用普通的主从时钟方式即可(见图4)。


图4 层次化网络拓扑

(2)线性网络拓扑

这种拓扑的网络层级较多,但是为线性结构,此时中间设备可以作为E2E透明时钟,边界时钟或普通时钟设备和每个普通时钟设备之间均需要建立主从关系(见图5)。


图5 线性网络拓扑

(3)多链接网络拓扑

这种拓扑为网状或部分网状结构,存在很多冗余链路(PTP协议不能防止也不支持环路,需要依赖路由或生成树协议提供一个单路径环境),此时中间设备可以作为P2P透明时钟,边界时钟或普通时钟设备和每个普通时钟设备之间均需要建立主从关系。此网络拓扑部署P2P透明时钟能够利用其快速完成重计算的优点(见图6)。


图6 多链接网络拓扑

3 测试方法

(1)测试内容

●精度测试:包括主从时钟精度测试、点到点透明时钟精度测试和端到端透明时钟精度测试。需要在多种线路时延环境下测试精度,包括异步时延环境下,模拟真实网络环境。

BMC测试,在多个时钟设备环境中确定主从时钟状态,动态修改时钟参数,主从时钟重新选择测试。

多域测试和标准中的其它一些参数测试。

●性能测试:主时钟设备支持多个从时钟设备的能力,透明时钟修正多个主从设备之间时钟同步的能力。

●负面测试:在正常处理流程中对PTP报文进行丢弃、乱序、重复、抖动、延时发送、修改内容。

(2)测试方法

思博伦(Spirent)公司提供两种产品用于测试IEEE1588——Anue和TestCenter,两种产品可以独立或组合使用,能够满足不同用户的测试需求,提供全面的IEEE1588测试解决方案,测试组网参考图7。


图7 测试组网示意图

(3)Anue测试IEEE1588的方法

Anue本身不生成PTP协议报文,不参与协议报文交互,可以对被测设备或系统进行精度和负面测试,适用于测试带有T1/E1时钟输入输出接口的设备,能够直接给被测系统或设备输入参考时钟,并可以产生漂移,通过接收其输出时钟,直接进行比较。

 

测试主时钟输出时钟的精度,即测试主时钟的漂移。Anue通过T1/E1将参考时钟输入给主时钟,在100M/1G/10G以太端口上接收报文,比较时钟信息,测量精度。此时,可以用TestCenter与主时钟设备之间进行路由发布/撤销(如果主时钟是三层设备),并在主从设备之间产生不同负载、字节大小的流量,进行测试。

测试从时钟精度,其实是测试整个1588主从时钟系统的时钟精度,类似于组网测试,测试整个系统能否满足上层业务对时钟精度的要求。如果主设备的时钟精度已经过测试,精度较高,则测试结果主要反映了从时钟设备的精度。如图7所示,从时钟设备也通过T1/E1将从主时钟同步来的信息输入给Anue,由Anue进行分析。此测试仍可用TestCenter的路由通告和流量收发为背景。

测试透明时钟精度。E2E透明时钟修正系数主要用于避免由于双向驻留时间不同而产生的时钟同步不准的问题,有两种测试方法:一是测试出PTP报文的真实驻留时延,比对PTP报文中修正域的时间值,二者之差越小说明驻留时间越准确;二是将透明时钟放置于主从设备之间,对比放置透明时钟前后从时钟同步时钟的精度变化来衡量透明时钟精度。第一种方法直接测试透明时钟本身,测试方法相对复杂,准确度易受到质疑,第二种方法测试有透明时钟参与的系统的时钟精度。第一种测试方法能够对比不同设备驻留时间的准确程度,第二种方法能够测试被测设备作为透明时钟对系统时间精度产生的影响。P2P透明时钟修正系数相比与E2E透明时钟修正系数,多了点到点链路时延,采用上面的第一种测试方法难度加大,建议采用第二种测试方法。测试时需制造驻留时间较大的情况,如制造拥塞,测试此时被测系统的精度。仍可用TestCenter的路由通告和流量收发为背景。

除此之外还可以用Anue进行线路损伤,如增加相同的双向传输时延来模拟在不同时延情况下1588系统的时钟同步精度,增加不同的双向传输时延测试异步时延修正功能的准确性等。

还可以用Anue对PTP报文进行丢弃、乱序、重复、抖动、延时发送、修改内容等负面测试。如修改透明时钟的修正系数,缓存多个协议报文后再同时发出,扰乱协议报文的发送顺序等。

(4)TestCenter测试IEEE1588的方法

IEEE1588测试对仪表精度要求较高,在测试被测设备或系统之前可以对仪表进行自环验证,评估一下仪表。两个口测试接口建立主从关系,得到一些统计值,观察这些数值的稳定性,简单环境下这些数值应该相对稳定,如链路时延,Offset等。此时,可以在这两个端口之间发送流量,测试流量的转发的时延,这个时延统计应该与IEEE1588计算的链路时延差别不大。

TestCenter支持完整的PTP协议栈,支持将PTP报文封装到以太网,IPv4/UDPIPv6/UDP上,支持单播和组播发送协议报文,支持一步时钟和两步时钟,支持E2E时钟模式和P2P时钟模式。可以对被测设备或系统进行精度测试,BMC算法测试,多域测试,性能测试和标准中的其它一些参数测试,也能够对报文进行丢弃、产生CRC错、时间戳错的负面测试。

TestCenter能够同时或单独模拟主从时钟设备,对被测主时钟设备、从时钟设备、透明时钟设备或整个时钟系统进行精度测试,可以提供当前Offset,Offset正向和反向最大值,Offset偏差,当前链路时延,最小链路时延,最大链路时延,平均链路时延等参数。

进行BMC测试时,TestCenter可以模拟大量普通时钟,发出Announce报文,测试被测设备选择主时钟的准确性,模拟的时钟能够通过批量动态修改参数,让被测设备重新参与计算,进行主时钟重新选择。

性能测试主要针对于主时钟设备和透明时钟设备。主时钟设备时整个系统中最重要的设备,它的性能、精度和稳定性是整个系统的基础,主时钟支持的从时钟的数量也限制了系统的规模,是衡量主时钟的一个重要指标。在不同时钟模式下,需要分别测试报文封装为以太,IPv4,IPv6,目的地址组播和单播报文,一步时钟和两步时钟情况下支持的从时钟的数量(需保证精度在合理范围内),可以结合域的功能和背景路由及流量。

在测试中可以用Anue对全部或某些PTP报文进行丢弃、乱序、重复、抖动、延时发送、修改内容等负面测试,增加链路时延模拟各种网络环境。

 

4 结束语

本文仅对IEEE1588基本原理和概念进行了简单介绍,详细内容参照标准。思博伦公司提供了业界最全面的IEEE1588测试方案而且还在不断丰富,本文只介绍主要测试方法,具体功能以设备为准。