1.0 简介

美国国家半导体的DP83640精密PHYTER?实现了IEEE 1588精密时间协议(PTP)的时钟关键部分,允许高精度 IEEE 1588节点实现。当使用包含IEEE1588功能器件、边界时钟和透明时钟的网络时,利用非常简单的时钟伺服算法 来确定速率调整和时间校正,可以获得非常高的精度。不需 要复杂处理,只需要对协议测量进行简单平均或滤波即可。 当网路由不具有IEEE 1588能力的器件构成时,包延时偏差 (PDV)就很重要。简单时钟伺服不会提供很高精度的同 步。

本文描述了一种同步方法,它可以为较大PDV系统带 来更高的同步精度。这里描述的方法试图检测最小延时,或 “幸运包”。这个方法还利用了DP83640时钟控制机理来独 立控制时钟速率和时间校正,从而将时钟时间精度内的过冲 和摆动降低到最小。

2.0 背景

IEEE1588精确时间协议给从机提供了基本信息,用以确 定相对于最高级主时钟的频率以及时间偏差。基本算法包括 使用各自的同步和延时请求消息来测量主机到从机之间和从 机到主机的路径延时。 图1显示了最基本的IEEE 1588的时序图。

PTP实现网络高精度_PTP

主机到从机和从机到主机的延时为:

MSdelay = t2 - t1

SMdelay = t4 –t3

单向延时或称为平均路径延时正是这两个延时的平均值

MeanPathDelay = (MSdelay + SMdelay)/2

理想情况下,时间偏移为:

offset_from_master = MSdelay – meanPathDelay

在包含支持IEEE-1588网络元件(桥、开关、路由器)的网络中,包延时偏差基本上可以忽略。在边界时钟器件中,同步时钟在网络元件上得以保持,它与上游主机同步时间和速率,并充当下游器件的主机。在透明时钟器件中,因为PTP报文要经过这个器件,所以通过测量其停留时间来校 正包延时偏差。

PTP实现网络高精度_PTP_02

在无1588能力的网络中不做补偿,导致包延时变量大概 是几十或几百微妙的数量级。这些延时变得非常明显,使得 单一测量极度不正确。

在使用只有简单平均和滤波的基本算法的单开关条件 下,得到了图2在80%流量条件下的MTIE(最大时间间隔误差)测试波形。很容易看到,这种方法提供了相对较差的同 步,其误差达到100ms之大。

2.1 建议算法

在无1588能力元件的网络中,包延时可能在每个器件 的最小物理延时和通过每个器件的最大延时总和的范围内变 化。实践中,每个设备经常会有最小传输延时,因此主机到 从机产生最小的总包延时。基本操作是尝试检测最小延时, 或者“幸运延时”,利用这些包的结果进行速率和时间校 正。算法基本上可分为三级:平均路径延时测量、速率校正 和时间校正。

2.1.1 平均路径延时测量

在大多数网络中,最小路径延时是相对恒定的值。再 次配置网络能够引起步长变化,但是这种配置并不是经常性 的。因此有可能采用长期跟踪最小环回延时(即全部的同步 延时请求计算)的方式来检测最小平均路径。这种方法保持 最后N个平均路径延时测量记录,并从中找到最小值:

Min_meanPathDelay(n) = min(meanPathDelay[n+1-N:n]

其中,Min_meanPathDelay(n)为第n次测量记录中保留的N个数据中的最小值。

进行速率校正和时间校正时确定最小平均路径是关键。

2.1.2 速率校正

速率校正通过测量跟随的同步周期并测量每个消息从 主机开始与到达从机之间的差异进行。这给出了从机频率相 对于主机频率的一个基本比值并可以用来校正频率差。因为 包延时偏差可能很明显,这可能使任何单一的速率测量有很 大的不精确性。

例如,如果同步周期每秒8个同步,误差在 125ms内可能是100us或者接近1000ppm。如果算法是平均 所有速率测量,也许需要成百上千秒来测量速率以得到合理 的估算。使用低廉的振荡器时会发生短期频率变化,平均时 间较长会导致不能对这种频率变化进行控制。 可替代的方法是,建议的算法利用平均路径延时测量来 检测短时等待包时,只使用这些包检测对主机的频率偏移。

如果包满足一个好的最小环回延时要求,通过比较上一个 “好包”时间来测量速率。*估“好包”时,需要在质量和 数量上进行权衡。如果质量过于严格,就可能无法获得足够 的信息来跟踪频率变化。但如果不够严格,速率计算结果中 可能包含过量的偏差。

图3表明用于决定速率的同步消息之间的最基本的关系。

PTP实现网络高精度_PTP_03

从这个图中,速率比值为

rate_ratio(n) = (T2(n) – T2) / (T1(n) –T1)

另外,为准备另一个测量,需要设置:

T1=T1(n),T2=T2(n)

由于测量中存在误差,仍然需要一些平均或滤波测量。

为了简化,使用指数移动平均或平滑函数来跟踪速率。这个等式为:

rate_avg(n) = Rate_avg(n-1)

+α(rate_ratio(n) – rate_avg(n-1))

α的典型值通常设为0.1,但是在某些诸如提高或降低速率的延长周期场合,这个值可能会有所增加。

2.1.3 时间校正

确定时间偏移的典型方法是使用同步消息来确定对主机 的偏差。常使用平均或滤波的方式来平滑连接,并避免每次 测量的过量校正。对于时间校正来说,利用两个不同的机制 来检测和校正时间偏差。

第一个机制的基本想法是寻找最小延时。基本算法是在 最近的延时中检测最小的主机到从机的延时。为防止过量校 正,也对时间校正进行了限制。这种算法依赖于大量的同步 消息,比IEEE-1588网络本身需要的同步报文更多。另外, 在延时请求测量之后,算法可能使用主机到从机延时或从机 到主机延时中产生更小偏差的一个延时。在一个方向的流量 变得拥堵的情况下,另一个方向可以提供更精确的时间偏差 的测量。这个方法基于它拥有的最好信息而在每个周期都进 行校正。如果没有收到真实的最小延时消息报文,这将导致 不适当的校正。原因是算法不能确定测量误差是由时间偏差 还是由包延时偏差引起的。

第二个时间校正机制是尝试只使用延时来进行校正,前 提是这些延时已经确定为真实最小延时包。它有助于避免对 时间值的无效校正。这个机制的基本想法是使用同步和延时 请求来进行时间校正。对于同步消息,如果主机到从机延时 小于最小平均路径延时,测量结果就显示至少有一个主机到 从机延时减去最小平均路径延时的时间偏差。这种情况下, 时间校正是基于偏差测量进行的。如果主机到从机的延时高 于最小平均路径延时,无法知道误差是由时间偏差引起的还 是包延时偏差引起的,所以不会做校正。对于延时请求消息 也相似,如果从机到主机的延时小于最小平均路径延时,测 量结果就显示有至少为平均路径延时减去从机到主机延时的 时间偏差发生。注意,这里检测到的时间偏差是正的,而主 机到从机延时测量中的结果是负的。

两个方法都是通过调节一段时间内的精准时间协议的时 钟速率来进行时间校正。为了避免速率的大波动,每一个校 正都限制幅值。这将有助于降低由于时间偏移的快速校正而 引起的时间间隔误差。在第二个机理中通过保持时间误差值 进行处理。当因接收到的同步或延时请求引起的新误差计算 出来时,如果这个新误差代表了一个更大的偏差,时间误差 就更新为新值。否则,时间误差保持不变。基于时间误差, 只能进行有限的校正并从时间误差中去除。因此,在完成校 正之前,偏移测量可能进行多次校正。

PTP实现网络高精度_PTP_04

第二个机理很少有无效的校正,但是呈现出更长的无校 正周期;基于速率校正误差,很可能会出现漂移。尽管第二 个机理在重流量和多开关的条件下显得更好,但两者的总体 结果相似。由于第二个机理产生更好的结果,结论部分详述 这些结果。

3.0 测试平台

测试时钟伺服算法的*估平台是基于FPGA的常规*估 平台,ALP(模拟测试发射平台)。ALP平台包含一个小的 FPGA来实现MAC接口、数据包缓冲和与DP83640以太网物 理层设备进行通讯的MDIO管理界面。ALP板子包括与PC主 机通讯的USB接口。在PC主机上,ALP软件运行PTP协议来 建立和分析包并控制PHY中的PTP硬件的操作。ALP平台合 并了支持两个独立的PHY器件的逻辑和连接。

测试平台对包和控制的处理能力进行了限制,它限制了 可以处理的同步周期的数量。每秒多达8个同步脉冲时同步工 作良好,但是超过这个值则不能维持速率。由于电信和其它 的应用需要的速率是每秒大约100个同步消息,这个平台不 能提供嵌入式平台能够提供的相同等级下的同步。DP83640 硬件没有限制器件工作在更高同步速率环境中的器件。

这个 限制特殊针对*估平台。 ALP平台提供了一个GUI和支持Python脚本语言的脚本 机理。通过ALP GUI,在Python中运行PTPv2协议和时钟伺服算法可以得到全面测试。

对于最简单的测试,由单HP网络设备开关组成网络。使 用独立的ALP平台并设置为想提供网络的规定比例利用率的 开关发送广播流量来产生额外的流量。针对有主机、从机之 间三个开关组成的网络的测试也做过。

PTP主机使用一个OCXO作为参考时钟源,PTP从机使 用的是一个廉价TCXO参考。

4.0 测试结果

建议算法通过流量负载达到80%以上的单开关或者多开关来测试性能。设定主机每秒发送8个同步消息,而从机相对 于每个同步消息,发送一个延时-响应消息。流量负荷通过随 机大小的广播包来产生,变化内部包间隔以产生特定流量。 流量通过测试网络中的一个开关的可用端口引入。时间误差 数据采用DP83640 PTP主机的事件时间戳能力来捕获并保存以备*估。除计算标准偏差外,在每个流量条件下,还产生 MTIE和TDEV(时间偏差)图。测试持续时间最短为4小时, 最长为8小时。

PTP实现网络高精度_PTP_05

4.1 单开关结果

下图显示了单开关在20%,50%和80%流量负载时的 MTIE,TDEV的结果。除了测试结果,测试图形还显示了通 信规格中的两个屏蔽。这个结论很容易满足G.823对于PDH 接口的要求,但不能完全满足G.811 PRC要求。需要进一步 优化,尤其是提高同步速度,来满足PRC要求。

PTP实现网络高精度_PTP_06

4.2 多开关测试

测试是在三个开关网络中完成的,三个开关由一个DLink DES1105 5端口开关、一个Linksys SD205 5端口开关和一个 HP网络设备8000M组成。测试结果是在三个开关20%,50% 的利用率,流量注入到第三个开关的条件下得到的。如所期 望,这个结果不如单开关好,但是仍然显示出所示满足规格 的潜力。如下图形表明不同流量条件下的MTIE和TDEV。

PTP实现网络高精度_PTP_07

4.3 其它测试结果

虽然没有得到具体的结果,但是算法表现为对流量在0到 80%之间变化的良好响应。如果流量超过80%,算法仍然需要精简以便处理明显更少的最小延时包。

PTP实现网络高精度_PTP_08

5.0 其它机会

这个文档描述了一种工作算法,但仍有很大可能在将来 的开发中提高和测试这种算法。以下列出了一些可能: 增加同步速率:增加同步速率需要将平台移到可以支持 更高包速率,可能达到100同步/秒或者更高这样的平台上。 这可能需要移到诸如飞思卡尔的MCF5234BCCKIT Coldfire 这样的嵌入式平台。

PTP实现网络高精度_PTP_09

这样做允许对算法进行很多改进,例如 为每个速率和时钟校正做许多延时测量等。 改善速率适应性:一些最大误差是由于算法在跟踪本地 振荡器频率变换时的响应缓慢造成的。跟踪速率并且进行调 整的改进算法在整体结果上具有很大的提高。 更大的网络上测试:具有更多实际流量条件的更大网络 上进行扩展测试。

VLAN标签上测试:使能VLAN标签、允许基于VLAN优 先级域,处理PTP包的IEEE802.1Q优先级可以提高测试结 果。

6.0 结论

这个文档描述了由无IEEE1588能力的器件组成的网络 中,使用DP83640以太网物理层设备来同步时钟的一种算 法。此算法虽然不能在所有条件下提供完整的解决方案,但 表明了这种解决方案的可行性。每秒8个同步消息条件下,系统可以准确的在重负载单开关中进行同步。在更大的同步 消息速度下,期望这个算法在更大的网络中有更高的精确等级。