IEEE1588精确网络时钟同步协议简介 I

[首发于cnblogs,转载请注明。作者:byeyear/告别年代    Email:east3@163.com]

在阅读本文之前,假定您对以太网和NTP有一定的了解。

至少您应该大致理解以下名词或缩写:

NTP,MAC,PHY,TimeStamp

IEEE1588是一个主要运行于以太网的网络时钟同步协议,主要目标是在局域网范围内实现高于微秒级的同步精度。与常见的时钟同步协议NTP相比,区别在于下面几点:

1. TimeStamp是在硬件级打上去的,这样相比于NTP就没有了App发起packet到硬件将packet发送出去之间的延迟,所以1588能做到很高的精度。TimeStamp可以在MAC层打,也可以在PHY层打。打在MAC层实现较方便,但精度不如打在PHY层,因为在MAC和PHY之间存在着数据抖动。一般来说,做在MAC层能实现100ns以内的同步误差,打在PHY层能实现25ns以内的同步误差。但是也正因为在硬件层打TimeStamp,所以实现1588要求修改ETH硬件,并修改底层协议栈,实现起来较复杂。顺便说下,协议本身并不强制在硬件级打TimeStamp,纯软件的实现也是存在的,但其同步精度无法保证,一般将纯软件实现作为验证协议栈的一种手段,而不用于现场环境。

2.  IEEE1588使用广播或组播传递协议包,这就限制了1588只能用在支持广播或组播的网络上。

3.  IEEE1588没有专门的时间服务器,但存在着主从层次结构。网络上运行该协议的设备通过协议包的交换确立主从层次结构,并在网络拓补发生改变时重新确立主从层次。

IEEE1588协议有两个版本,分别是早期的1588-2002和最新的1588-2008。协议包不兼容。不过现在支持该协议的设备都使用了新版协议,所以兼容性基本上不是问题。

该协议也被接纳为IEC标准:IEC-61588。

我们国家有该协议的翻译稿:

GB/T 25931-2010 网络测量和控制系统的精确时钟同步协议

在后面的介绍中,若不作特别说明,均针对1588-2008。

实际上,1588本身并不限制仅用于以太网,只要是支持广播或组播的网络(比如CAN/485等),理论上都可以运行该协议。不过目前市场上能看到的支持该协议的硬件几乎都是以太网的,所以我们的介绍也将以Ethernet为例子。

原文地址:https://www.cnblogs.com/byeyear/p/2717346.html