如果衡量一个设计是否优雅的标准是看它能否经受住时间的考验,以及能否适应不断变化的需求,那么大卫·米尔斯David L. Mills在发明网络授时协议(NTP)时就拥有了最优雅的设计。为了满足对更高精度的需求,NTP逐渐被精确定时协议(PTP)代替,该协议现已被写入IEEE 1588标准。同时,PTP也通过使用不同的子集适应了许多用例,如电信、电力、工业及汽车应用,以及使用IEEE 1588-2019 Annex M(White Rabbit) 子集的亚纳秒同步应用。
虽然PTP功能强大、用途广泛,但在支持单播的网络中,PTP会产生握手、定时器和订阅等相关开销。PTP数据包交换序列如下图所示:
Meta(前身为 Facebook)最近为PTP开发了一个子集,该子集利用了其数据中心中使用的单播数据包交换和网络中透明时钟,建立了一个定义明确的同质同步架构。
下图显示了使用的数据包交换顺序( https://github.com/facebook/time/tree/main/ptp/sptp)。该协议被称为Simplified Unicast PTP、simple PTP或sPTP。
客户端发送DELAY REQUEST数据包,来启动与服务器的交换。客户端记录时间戳t3,而服务器则记录DELAY REQUEST数据包中的CorrectionField_2(CF_2)和Rx 时间戳t4。
然后,服务器发送SYNC数据包,在originTimestamp字段中添加时间戳t4,并记录Tx时间戳t1。服务器还发送一个包含Tx时间戳t1的ANNOUNCE数据包和来自DELAY REQUEST数据包的CF_2。
客户端记录接收到的SYNC数据包的t2和CF_1。它还记录来自ANNOUNCE数据包和CF_2的数据。
通过这种交换,客户端可以访问t1、t2、t3、t4、CF_1 和 CF_2,从而计算平均路径延迟和偏移指标。
除了实施简单、无需服务器与客户端协商、由客户端驱动交换和资源消耗低等优点,sPTP还为网络监控提供了潜在的优势,即集中监控任何远程客户端绝对时间误差的能力。
要了解如何在数据中心分组网络中监控同步,让我们来看看OCP数据中心子集中的参考网络图。
考虑到所需资源的减少,每个服务器都有可能同时部署sPTP从时钟timeReceiver和sPTP主时钟timeTransmitter的功能。客户端将向最优时钟(Grandmaster)发出DELAY REQUEST,并处理接收到的SYNC和 ANNOUNCE/FOLLOW_UP报文,以驯服自己的时钟。
此外,如果使用透明时钟和单播数据包交换,服务器还可以使用自己的时钟生成t1和t4,定期用自己的SYNC和ANNOUNCE/FOLLOW_UP报文响应监控设备的DELAY REQUEST。
这就有可能解决当从时钟timeReceiver只有网络提供的PTP参考时间,没有其他参考时间时,如何验证交付时间准确性的问题。
在这里,我们看到时间通过红色路径从最优时钟传送到客户端,同时通过黄色路径进行监控。功能强大的监测仪器可以定期对所有客户端进行轮询,比较时域和最优时钟,以确保时间来源的准确性,并通过持续的性能监测确保网络同步的精准度。此外,监测仪器还可根据同步失败的示意指向特定设备,进而探测网络设备,检查网络中各点是否保持时间同步。