PTP通信端口的时钟是边界时钟,每个PTP端口提供独立的PTP通信。其中,边界时钟通常用在确定性较差的网络设备(如交换机和路由器)上。从通信关系上又可把时钟分为主时钟和从时钟,理论上任何时钟都能实现主时钟和从时钟的功能,但一个PTP通信子网内只能有一个主时钟。整个系统中的最优时钟为最高级时钟GMC(Grandmaster Clock),有着最好的稳定性、精确性、确定性等。根据各节点上时钟的精度和级别以及UTC(通用协调时间)的可追溯性等特性,由最佳主时钟算法(Best Master Clock)来自动选择各子网内的主时钟;在只有一个子网的系统中,主时钟就是最高级时钟GMC。每个系统只有一个GMC,且每个子网内只有一个主时钟,从时钟与主时钟保持同步。图1所示的是一个典型的主时钟、从时钟关系示意。
file:///C:/DOCUME~1/WHOAMI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-32326.png
图1 主时钟、从时钟关系示意图
同步的基本原理包括时间发出和接收时间信息的记录,并且对每一条信息增加一个“时间戳”。有了时间记录,接收端就可以计算出自己在网络中的时钟误差和延时。为了管理这些信息,PTP协议定义了4种多点传送的报文类型和管理报文,包括同步报文(Sync),跟随报文(Follow_up),延迟请求报文(Delay_Req),延迟应答报文(Delay_Resp)。这些报文的交互顺序如图2所示。收到的信息回应是与时钟当前的状态有关的。同步报文是从主时钟周期性发出的(一般为每两秒一次),它包含了主时钟算法所需的时钟属性。总的来说同步报文包含了一个时间戳,精确地描述了数据包发出的预计时间。
file:///C:/DOCUME~1/WHOAMI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-13009.png
图2 PTP报文与交换顺序
由于同步报文包含的是预计的发出时间而不是真实的发出时间,所以Sync报文的真实发出时间被测量后在随后的Follow_Up报文中发出。Sync报文的接收方记录下真实的接收时间。使用Follow_Up报文中的真实发出时间和接收方的真实接收时间,可以计算出从属时钟与主时钟之间的时差,并据此更正从属时钟的时间。但是此时计算出的时差包含了网络传输造成的延时,所以使用Delay_Req报文来定义网络的传输延时。
Delay_Req报文在Sync报文收到后由从属时钟发出。与Sync报文一样,发送方记录准确的发送时间,接收方记录准确的接收时间。准确的接收时间包含在Delay_Resp报文中,从而计算出网络延时和时钟误差。同步的精确度与时间戳和时间信息紧密相关。纯软件的方案可以达到毫秒的精度,软硬件结合的方案可以达到微秒的精度。
PTP协议基于同步数据包被传播和接收时的最精确的匹配时间,每个从时钟通过与主时钟交换同步报文而与主时钟达到同步。这个同步过程分为漂移测量阶段和偏移测量与延迟测量阶段。
第一阶段修正主时钟与从时钟之间的时间偏差,称为漂移测量。如图3所示,在修正漂移量的过程中,主时钟按照定义的间隔时间(缺省是2s)周期性地向相应的从时钟发出惟一的同步报文。这个同步报文包括该报文离开主时钟的时间估计值。主时钟测量传递的准确时间T0 K,从时钟测量接收的准确时间T1 K。之后主时钟发出第二条报文——跟随报文 |