关于网络计时技术的问题,其中一些问题很难回答。但有一个问题很容易回答:“我需要NTP还是PTP?”归根结底,这一切都取决于准确性。一般我会问“您需要什么样的时间传递精度?”不好意思,我是在用问题回答问题。应该这么说:你需要的精确度是微秒还是纳秒?如果答案是肯定的,您需要PTP(IEEE 1588)。如果答案以毫秒或秒为单位,则您需要NTP。
我们之前的文章:为什么PTP会如此准确。 而答案是由于硬件时间戳在PTP技术中普遍实现,但在NTP中没有。 在运行NTP的客户端和服务器设备中,允许使用硬件时间戳,但目前没有多少设备实现这一点。 此外,网络计时中最大的错误来源往往是由于交换机和路由器中排队时间的变化造成的。 NTP没有这方面的解决方案,PTP有。 解决方案是使用特殊的交换机和路由器,称为透明时钟或边界时钟。 关于这些设备的描述,请看之前的文章:IEEE 1588时钟类型介绍。 甚至还有正在进行的标准工作,使用CERN(欧洲核子研究中心)开发的技术。(没错,就是发现希格斯玻色子和发明万维网的人),将PTP扩展到皮秒。
如果你在想,我不需要协调高能粒子的测量,我只想把我的服务器和路由器的时钟设置在几毫秒之内,那么你就需要NTP。 但是,如果PTP更精确,为什么不所有都用PTP呢? 很好的问题,答案是:
- 易于实施
- 费用
- 稳健性
NTP更容易实现,因为免费的NTP客户端已经包含在你购买的任何计算机、服务器或路由器中。 只要把每个客户端指向哪个地址来询问时间就可以了。 你也可以很容易地下载和安装免费软件,其中包含已知的NTP服务器及其地址的列表。(免费下载基于windows的NTP服务器&客户端)
NTP更便宜,因为客户端是免费的,不需要特殊的交换机。大多数系统集成商购买专用服务器,因为这样可以省去将GPS接收器(以获得标准时间)与NTP服务器集成的麻烦。但是,每台服务器都可以让数千个客户端保持同步。
PTP和NTP都具有容错功能,如下图所示。
在PTP的情况下,一个从设备同步到一个主时钟,其他的主时钟也会监听,这样,如果活跃的主时钟因任何原因离开,它们就可以接管。这很好,但NTP做得更好。客户端从所有的服务器上获取时间,并忽略那些与其他服务器相比似乎偏离时间太远的服务器。
NTP已经存在了几十年,并且已经变得便宜容易和强大。好消息是,许多这些特性正逐渐被添加到IEEE 1588的世界中,所以很快你就能拥有NTP的简易性和稳健性以及Hadron Collider(强子对撞机)的准确性。