我们都知道GNSS终端具备授时功能,能够提供精确的时间信息。今天我们就来讨论一下GNSS终端输出时间信息的几种不同接口形式。目前常用的时间信息输出接口形式包括:
- • PPS+TOD
- • B码
- • 网络授时NTP
- • 网络授时PTP
在上两篇文章:
我们介绍了PPS+TOD和B码的接口形式。这次我们介绍另外一种时间信息的输出接口形式:NTP网络授时。
本篇文章主要分为3部分内容:
- • 为什么要用NTP网络授时
- • NTP网络授时的原理
- • 怎么使用NTP网络授时
为什么要用NTP网络授时
前面我们介绍了两个授时方法,PPS+TOD和B 码授时。PPS授时传输的信号是同步脉冲,而B码授时传输的信号是脉宽调制的信号。这两种信号只适合于短距离的传输。
- •
如果我们需要:
- 在单位的两个办公区之间传递时间;
- 在楼宇之间传递时间;
- 在城市的两个地点传输时间;
- 在国家的两个城市之间传递时间;
- 在地球上的两个地点之间传递时间;
上面提到的PPS授时和B码显然是没法用的。
那我们应该用什么方式来传递时间呢?这就是我们今天要介绍的另外一种授时方式:NTP 网络授时。
NTP网络授时,顾名思义,就是用网络来进行时间的传递和同步。在现代社会中,不论是一个单位的两个办公区之间、楼宇之间、城市之间,世界上的两个地点之间,都能够通过网络连接在一起。
NTP授时在局域网内传递
所以利用NTP网络授时,可以将时间传递到任意远的地方。
NTP授时的基本原理
下面这个系统是最简单的NTP授时原理的框图系统。系统有两个部件组成:时间服务器 Server 和客户端 Client ,它们之间通过网线直接连接。
NTP时间服务器和客户端
时间是怎么同步的
在这个系统中,NTP时间服务器Server 的时间是准确的,客户端Client 的时间是不准确的,客户端的时间跟服务器的时间存在一个偏差。
NTP授时的目的:客户端需要把自己的时间跟服务器的时间保持同步。
服务器端有自己的晶振,有自己的时钟系统,产生了自己的时间系统。
客户端也有自己的晶振,也有自己的时钟系统,也会产生自己的时间系统。
就像两个电子钟,同一时刻,两个电子钟显示的时间是不相同的。
我们假设同一时刻,服务器端显示的时间是Ts,客户端显示的时间是Tc, Ts跟Tc之间相差△T。
只要我们把这个△T计算出来,就达到了客户端时间跟服务器端时间同步的目的。
NTP授时的基本流程是这样的:
- 客户端首先向服务器发出一个请求 IP数据包,同时把这个数据包的发送时刻Tc1写在数据包的某个字段中。这里要记住,这个发送时刻Tc1是客户端时间系统里的时间。
Tc1时间
- 服务器端收到这个数据包之后,把接收到该数据包的时刻Ts1记录下来。这里也要记住,这个接收时刻Ts1是服务器端时间系统里的时间。
- 服务器端再向客户端返回一条用于回复的IP数据包,并记录发送数据包的时刻Ts2,这个发送时刻Ts2是服务器端时间系统里的时间。服务器端返回的数据包中,把上面的三个时间都包含在数据包的字段里面,分别是:
- • 客户端上一次发送数据包的时刻Tc1
- • 服务器端收到数据包的时刻Ts1。
- • 服务器端本次发送数据包的时刻Ts2
三个时间
- 客户端接收服务器端发送给自己的数据包,并记录下接收数据包的时刻Tc2。
这样我们就得到了四个时间,分别是Tc1,Ts1,Ts2,Tc2。
其中Tc1,Tc2是客户端系统中的时间,Ts1和Ts2是服务器系统中的时间。
没法直接计算。
下面这个是NTP数据包的字段定义,其中红色框内的部分就是上面说的3个时间Tc1,Ts1,Ts2。
NTP时间协议
前面我们假设服务器端的时间系统和客户端的时间系统相差△T。假设客户端到服务器端的的网络传输延迟是 d1,服务器端到客户端的网络传输时延是 d2。
我们就可以得到下面的方程:
这里我们再做一个假设,我们假设客户端到服务器端的网络传输时延,等于服务器端到客户端的网络传输时延,双向传输是对称的,也就是 d1=d2。
将上面的方程联合解算,我们可以得到
然后我们就可以把△T计算出来:
有了△T,客户端就可以跟服务器的时间同步了。
NTP授时的精度
网络环境的影响
通过上面对NTP授时原理的介绍,我们很容易想到一个问题。在上面的计算方法中,我们假设d1=d2,实际中 d1是否等于 d2呢?
这个跟当前的网络环境有关系。
如果是最简单的NTP授时系统,只有一个服务器跟一个客户端,中间通过网线连接,我们可以近似认为 d1是等于 d2的,这种方式下授时的精度也是最高的。
直连模式下NTP授时
还有一种情况是在局域网里面,服务器通过交换机跟客户终端连接,由于系统网络拓扑图相对简单,不存在路由的问题,因此在这种局域网的条件下,我们也可以认为 d1 和 d2之间差异很小,授时的精度也还可以。
局域网下NTP授时
那如果服务器和客户端分别在一个城市的两个地点、两个城市之间或者地球的任意两个地方的,服务器跟客户端之间的网络拓扑就非常复杂,中间会经过很多个路由器。如果是地球上的两个地点,还要通过海底光缆。服务器跟客户端的每次网络传输的路径可能都不同,时延相差很大,d1 跟 d2 也会有比较大的差异,这个时候授时的精度自然就很差。
NTP时间在全球传递
CPU处理延时的影响
影响NTP授时精度的,还有另外一个因素:CPU的处理延迟。
前面定义的d1 网络传输延迟是数据包从客户端的网口到服务器的网口的传输时延,d2 也类似。
传输延时
但实际上在客户端在IP数据包里面写入的时刻Tc1,并不是数据包在客户端网络端口处的时间,而是CPU把IP数据包组帧之后,执行数据发送的时刻。
同样的,服务器接收到IP数据包的时刻Ts1,也不是IP数据包到达服务器网口的时刻,而是服务器的CPU把数据包解析之后的时刻。
在上面的NTP授时的计算公式中,没有考虑CPU的处理延时,主板上总线的延迟等因素。而这个延时同样会影响NTP的授时精度。
NTP授时精度
考虑到上面的两个因素,NTP授时精度肯定要比PPS授时精度、B码授时精度差得多。
一般来讲,
如果客户端在和服务器用网线直接连接,这个时候传输路径相同且稳定,NTP授时精度最高,可以到1ms。
如果客户端在和服务器在同一个局域网里面,NTP授时精度大概能在10ms以下。
如果客户端在和服务器处于广域网,授时精度一般在几十 ms ~百ms量级。
在《北斗卫星导航系统定时型终端通用规范》中定义了NTP授时的同步精度如下:
相关规范对NTP授时的要求
我们普通人怎么利用NTP授时
网络授时
首先就要找到NTP授时服务器,其实世界上有很多开放的NTP授时服务器,如下面这个网页所介绍的公共 NTP 网络时间服务器地址大全 Public NTP Server - http://DNS.iCoA.CN
公开的NTP授时服务器
举例:
如果我们普通的个人计算机时间不准的话,也可以做NTP授时来校准时间。
Window Internet时间校准
在Windows的Internet时间设置里面,我们可以把时间服务器的网址写上去,然后选择同步的时间就可以了。在这里我们选择了微软公司的时间服务器的地址http://time.windows.com,这样设置之后,相当于我们个人电脑的时间就从微软时间服务器的时间同步起来了。
NTP授时广域网的授时精度在100ms量级,对个人用户来讲,100ms的时间精度已经完全足够了。
后续
网络授时是不是就没有办法实现高精度的时间同步了呢?比如说1us以下、几百ns、几十ns的时间同步。我们将在下一个章节PTP授时中为大家揭晓。