2023年11月30日发(作者:)

北⽃GPS同步时钟(授时系统)技术原理详解

1. 前⾔

由计算机⽹络系统组成的 分布式系统 ,若想协调⼀致进⾏: IT ⾏业的 整点开拍 秒杀 “Leader 选举 ,通信⾏业

同步组⽹ 之类业务处理,毫秒级甚⾄微秒级的 时间同步 是重要基础之⼀。

2. 术语描述

2.0 世界时

世界时 UT ,可以简单理解为按照地球⾃转⼀周来计量 24 ⼩时的时间标准,由于地球⾃转速率的变化,世界时的秒长会有微⼩的变化,每

天的快慢可以达到千分之⼏秒。

2.1 TAI 时间

世界时不准,因此国际组织定义了 TAI 时间 , 即国际原⼦时( International Atomic Time ),其起点是 1958 年的开始(世界

UT ),以铯原⼦钟⾛秒连续计时的时间。

2.2 UTC 时间

计算机⽹络普遍使⽤的 UTC 时间(协调世界时) ,由国际计量局 BIPM 综合全世界多个守时实验室的钟组计算得到,为了使 UTC 时间与

地球⾃转 1 天的时间(世界时 UT )协调⼀致,每隔 1 2 年, BIPM 会通告在 UTC 时间 6 30 ⽇或 12 31 ⽇最后⼀分钟

⼀秒 减⼀秒 等闰秒调整。也就是说, UTC 时间会出现 60 秒或少了 59 秒的情况。

最近⼀次闰秒是 UTC 时间 2015 6 ⽉底:

2015 年 6 30 ⽇, 23 59 59

2015 年 6 30 ⽇, 23 59 60

2015 年 7 1 ⽇, 0 0 0

由于存在闰秒, UTC 时间与 TAI 时间是有差别的, UTC = TAI - n ,这个 n 现在( 2016 1 ⽉)是 36 秒,也就是说 UTC 时间

TAI 时间慢了 36 秒。

2.3 北京时间

北京时间也就是 东⼋区时间 ,在 UTC 时间基础上加 8 ⼩时,中国的北京标准时间由位于陕西的国家授时中⼼发播。

2.4 GPS 时间

GPS 系统通过卫星信号发播的 原⼦时间 GPS 时间⽤⾃ 1980 1 6 ⽇零点( UTC 时间)起的星期数和该星期内内的秒数来表

⽰。

⼯程上, GPS 接收机会根据闰秒数将 GPS 时间换算为我们通常使⽤的 UTC 时间。 GPS 时间的源头是美国海军天⽂台的守时原⼦钟组。

2.5 北⽃( BDS )时间

由北⽃卫星导航系统通过卫星信号发播的 原⼦时间 ,同样,北⽃接收机会根据闰秒数将北⽃时间换算为我们通常使⽤的 UTC 时间。

北⽃时间的时钟源是位于北京的解放军 时频中⼼ 的守时原⼦钟组,陕西的国家授时中⼼好尴尬 :(

2.6 频率

时间的导数就是 频率 ,机械发条、⽯英晶体振荡器、原⼦钟等各种时钟源通过产⽣频率信号,按照频率均匀打拍计数,模拟时间的等间隔

流逝,就有了可见的 时间

2.7 频率准确度

⼿表有准和不准的,反映的就是频率准不准,时钟频率和标准频率的偏差可以⽤ 频率准确度 来衡量。 1E-9 量级表⽰ 1 秒会差 1ns ,我

们使⽤的个⼈电脑,它的守时时钟是个 32. 768kHz 的⽯英晶振,准确度⼤概只有 2E-5 量级( 20ppm ),也就是说 1 秒会

0.02ms 1 天会跑偏⼤概 2 秒。

2.8 时间同步

⼴义的 时间同步 包括的 时间和频率 的同步。上级时钟将时间频率信号通过各种有线(以太⽹、 SDH 数字⽹、同轴电缆、电话

等)、⽆线(卫星、长波、电台、微波、 WIFI Zigbee 等)链路传递给下级时钟,下级时钟接受时间频率信息后,与上级时钟保持相

位、频率的⼀致。

3. 时间同步原理

3.1 单向授时

上级时钟主动发播时间信息,下级⽤户端被动接受时间信息,并调整本地时钟使时差控制在⼀定范围内。

要想提⾼授时精度,⽤户端必须计算出时间信息在传播链路中的延时, GPS/ 北⽃等卫星授时,可以通过⽤户端定位与卫星之间距离确定电

磁传输延时,消除⼤部分误差,⽽电缆、⽹络等如果是单向授时⽅式就⽆法准确计算单向链路时延了。

3.2 双向授时

⽤户端将接受的时间信息原路返回给上级时钟服务端,服务端将往返时间除以⼆即得到单向链路时延,再把单向时延告诉客户端,在此基础

上,客户端得到服务端更准确的时间信息。⽐如:北⽃单向卫星授时精度 100ns ,双向卫星授时精度可做到 20ns

3.3 ⽹络时间同步

⽹络时间同步,特指在计算机⽹络内的服务器与客户端之间利⽤ ⽹络报⽂ 交换实现的时间同步。

鉴于计算机⽹络传输路径的不确定性和中间路由交换设备转发报⽂时间的不确定性,通过单播或多播实现的单向⽹络授时是不可靠的。因

此,前辈们发明的⽹络时间同步技术 NTP/PTP 等,基本原理都是通过对⽹络报⽂打时间戳(标记),往返交换报⽂计算传输时延和同步误

差。

3.4 频率同步

频率同步 指的是主从时钟的频率误差保持在⼀定范围内,频率同步有 2 种类型 :

1 种是直接传递模拟频率信号,⽐如⽤电缆或光缆传递 10MHz 5Mhz 2.048MHz 等标准频率,或者传递 bit 位宽脉冲;

2 种是通过测量得到的主从时钟时差,通过锁定主从相差实现频率锁定( PLL ),或者间接计算频率偏差,完成频率修正。

4. 计算机⽹络时间同步

计算机⽹络时间同步只是时间同步的⼀种应⽤场景,其时间传递的链路可能是 SDH ⽹、以太⽹、 WIFI ⽆线⽹络等。

4.1 NTP

Network Time Protocol )从 1985 年诞⽣来,⽬前仍在在⼤部分的计算机⽹络中起着同步系统时间的作⽤。

基本原理

服务器和客户端之间通过⼆次报⽂交换,确定主从时间误差,客户端校准本地计算机时间,完成时间同步,有条件的话进⼀步校准本地时钟

频率。

时间同步过程

服务器在 UDP 132 端⼝提供授时服务,客户端发送附带 T1 时间戳( Timestamp )的查询报⽂给服务器,服务器在该报⽂上添加到

达时刻 T2 和响应报⽂发送时刻 T3 ,客户端记录响应报到达时刻 T4

改个维基的图:

时差计算

维基这个图中⽤蓝⾊标注了主从直接来回链路的 时延 Sigma

Sigma = (t4-t1)-(t3-t2)

因此,假设来回⽹络链路是对称的,即传输时延相等,那么可以计算客户端与服务器之间的 时间误差 Delta 为:

Delta = t2-t1-Sigma/2=((t2-t1)+(t3-t4))/2

客户端调整⾃⾝的时间 Delta ,即可完成⼀次时间同步。

计时⽅式

NTP 采⽤ UTC 时间计时, NTP 时间戳 包括⾃ 1900-01-01 00:00:00 开始的 UTC 总秒数,当前秒的亚秒数。

当正闰秒时, 60 秒和下⼀分钟的 0 秒的 NTP 总秒数⼀致的,因此 NTP 报⽂专门定义了闰秒指⽰域来提⽰。

误差分析

局域⽹内计算机利⽤ NTP 协议进⾏时间同步,时间同步精度在 5ms 左右,主要误差包括:

1 )计算机打时间戳的位置在应⽤层,受协议栈缓存、任务调度等影响,不能在⽹络报⽂到来时马上打戳;

2 )各种中间⽹络传输设备带来的传输时延不确定性以及链路的不对称性,将进⼀步降低 NTP 时间同步精度。

4.2 PTP

为克服 NTP 的各种缺点, PTP(Precision Time Protocol ,精确时间同步协议 ) 应运⽽⽣,最新协议是 ,可实现亚微秒量级的时间同步

精度。

基本原理

主从节点在⽹络链路层打时间戳,利⽤⽀持 IEEE1588 协议的 PHY ⽚,精准记录时间同步⽹络报⽂接受或发送的时刻。交换机、路由器

等⽹络中间节点准确记录时间同步报⽂在其中停留的时间,实现对链路时延的准确计算。

时间同步过程

PTP 默认使⽤ 组播 协议,⼆层或四层 UDP 组播都可以,⼀般我们使⽤基于 UDP 组播,使⽤ 319 320 两个端⼝。

PTP 定义了三种⾓⾊: OC BC TC 。我们⼀般接触的是 OC :主时钟和从时钟,交换机、路由器⼀般是 BC TC

由于硬件性能有限,⽹络报⽂发送时记录的时刻信息,可以在随后的 Follow_Up 跟随报⽂中发出,这就是 PTP 的双步模式 (Two-step)

下图是两 OC 主从时钟之间的同步过程:

· a. 主时钟向从时钟发送 Sync 报⽂,并在本地记录发送时间 t1 ;从时钟收到该报⽂后,记录接收时间 t2

· b. 时钟发送 Sync 报⽂之后,紧接着发送⼀个携带有 t1 Follow_Up 报⽂。

· c. 从时钟向主时钟发送 Delay_Req 报⽂,⽤于发起反向传输延时的计算,并在本地记录发送时间 t3 ;主时钟收到该报⽂后,记录

接收时间 t4

· d. 主时钟收到 Delay_Req 报⽂之后,回复⼀个携带有 t4 Delay_Resp 报⽂。

时差计算

NTP ⼀样的原理,从时钟根据拥有的 t1 t4 这四个时间戳,由此可计算出主、从时钟间的往返总延时为:

Sigma = (t4-t1)-(t3-t2)

假设⽹络是对称的,从时钟相对于主时钟的时钟偏差为:

Delta = t2-t1-Sigma/2=((t2-t1)+(t3-t4))/2

计时⽅式

NTP 不同, PTP 采⽤ TAI 世界原⼦时间计时,⽽且 PTP 计时的起点与 unix 时间⼀致,即 UTC 时间 1970 1 1 0 点。

PTP 主钟会告知从钟,当前 UTC 相对于 TAI 的累计偏移量,从钟据此计算当前准确的 UTC 时间。

误差分析

PTP 能准确记录报⽂发送和接受的时间,也能计算中间链路的延时,剩下影响最⼤的就是 ⽹络链路的不对称性 了。

在实际⼯程中,⽹络中间链路设备不⽀持 PTP 协议,⼤⼤降低了 PTP 的同步精度。⽬前, PTP 主要应⽤在通信同步⽹、电⼒同步⽹等⾏

业⽹络系统⾥。

同步拓扑

PTP 域中所有的时钟节点都按⼀定层次组织在⼀起,可通过 BMC Best Master Clock ,最佳主时钟)协议动态选举出最优时钟,最优

时钟的时间最终将被同步到整个 PTP 域中。

BMC 算法与 STP Spaning Tree Protocl )⽣成树协议类似,最终形成 ⽆环路 的树形⽹络拓扑,且都是动态选举,能适应最佳主时钟

切换的变化。

扩展应⽤ ——PTP over SDH

充分利⽤各⾏业已有的 SDH 通信⽹络,利⽤ PTP-E1 信号 转换设备,架设 PTP 同步⽹络,除了需要考虑链路倒换问题之外, SDH ⽹络

的时延稳定性可⼤幅提升⽹络时间同步精度。

4.3 SyncE 同步以太⽹

以太⽹最早只能传输数据信号,有另外独⽴的频率同步⽹络,随着以太⽹的快速发展, SyncE Synchronized Ethernet 技术诞⽣

后,企业们有了新的选择。

基本原理

时钟节点利⽤以太⽹( 1000M 1G 10G 等)物理层的空闲间隙,传递 位宽时钟信号 ,实现时钟频率信号( 25M 125M 等)

的⾃上⽽下传递。

协议控制

类似于 SDH ⽹络等时间间隔传递的 SSM 同步状态信息,同步以太⽹( Sync-E )利⽤链路层 封装传递 SSM 信息, SSM 信息包含时钟

质量信息,接收端据此选择合适的上级⽹络时钟。

应⽤

⼀般商业 PHY ⽚提供 SyncE 功能选项,开启该功能模式,即可利⽤ PHY 恢复出来的频率信号,校准本地时钟频率或分频后⽤于本地计

时。