GNSS终端的授时之三:NTP网络授时

我们都知道GNSS终端具备授时功能,能够提供精确的时间信息。今天我们就来讨论一下GNSS终端输出时间信息的几种不同接口形式。目前常用的时间信息输出接口形式包括:

  • • PPS+TOD
  • • B码
  • • 网络授时NTP
  • • 网络授时PTP

在上两篇文章:

GNSS终端的授时功能之一:最简单的PPS+TOD

GNSS终端的授时功能之二:B码

我们介绍了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授时的基本流程是这样的:

  1. 客户端首先向服务器发出一个请求 IP数据包,同时把这个数据包的发送时刻Tc1写在数据包的某个字段中。这里要记住,这个发送时刻Tc1是客户端时间系统里的时间。

Tc1时间

  1. 服务器端收到这个数据包之后,把接收到该数据包的时刻Ts1记录下来。这里也要记住,这个接收时刻Ts1是服务器端时间系统里的时间
  2. 服务器端再向客户端返回一条用于回复的IP数据包,并记录发送数据包的时刻Ts2,这个发送时刻Ts2是服务器端时间系统里的时间。服务器端返回的数据包中,把上面的三个时间都包含在数据包的字段里面,分别是:
  • • 客户端上一次发送数据包的时刻Tc1
  • • 服务器端收到数据包的时刻Ts1。
  • • 服务器端本次发送数据包的时刻Ts2

三个时间

  1. 客户端接收服务器端发送给自己的数据包,并记录下接收数据包的时刻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授时中为大家揭晓。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值