由计算机网络系统组成的分布式系统
,若想协调一致进行:IT行业的“整点开拍”、“秒杀”、“Leader选举”,通讯行业的“同步组网”之类业务处理,毫秒级甚至微秒级的时间同步
是重要基础之一。算法
世界时UT
,能够简单理解为按照地球自转一周来计量24小时的时间标准,因为地球自转速率的变化,世界时的秒长会有微小的变化,天天的快慢能够达到千分之几秒。缓存
世界时不许,所以国际组织定义了TAI时间
,即国际原子时( International Atomic Time),其起点是1958年的开始(世界时UT),以铯原子钟走秒连续计时的时间。服务器
计算机网络广泛使用的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秒。spa
北京时间也就是东八区时间
,在UTC时间基础上加8小时,中国的北京标准时间由位于陕西的国家授时中心发播。计算机网络
由GPS系统经过卫星信号发播的原子时间
,GPS时间用自1980年1月6日零点(UTC时间)起的星期数和该星期内内的秒数来表示。unix
工程上,GPS接收机会根据闰秒数将GPS时间换算为咱们一般使用的UTC时间。GPS时间的源头是美国海军天文台的守时原子钟组。code
由北斗卫星导航系统经过卫星信号发播的原子时间
,一样,北斗接收机会根据闰秒数将北斗时间换算为咱们一般使用的UTC时间。
北斗时间的时钟源是位于北京的解放军时频中心
的守时原子钟组,陕西的国家授时中心好尴尬:(。
时间的导数就是频率
,机械发条、石英晶体振荡器、原子钟等各类时钟源经过产生频率信号,按照频率均匀打拍计数,模拟时间的等间隔流逝,就有了可见的“时间”。
手表有准和不许的,反映的就是频率准不许,时钟频率和标准频率的误差能够用频率准确度
来衡量。1E-9量级表示1秒会差1ns,咱们使用的我的电脑,它的守时时钟是个32. 768kHz的石英晶振,准确度大概只有2E-5量级(20ppm),也就是说1秒会差0.02ms,1天会跑偏大概2秒。
广义的“时间同步”包括的时间和频率
的同步。上级时钟将时间频率信号经过各类有线(以太网、SDH数字网、同轴电缆、电话等)、无线(卫星、长波、电台、微波、WIFI、Zigbee等)链路传递给下级时钟,下级时钟接受时间频率信息后,与上级时钟保持相位、频率的一致。
上级时钟主动发播时间信息,下级用户端被动接受时间信息,并调整本地时钟使时差控制在必定范围内。
要想提升授时精度,用户端必须计算出时间信息在传播链路中的延时,GPS/北斗等卫星授时,能够经过用户端定位与卫星之间距离肯定电磁传输延时,消除大部分偏差,而电缆、网络等若是是单向授时方式就没法准确计算单向链路时延了。
用户端将接受的时间信息原路返回给上级时钟服务端,服务端将往返时间除以二即获得单向链路时延,再把单向时延告诉客户端,在此基础上,客户端获得服务端更准确的时间信息。好比:北斗单向卫星授时精度100ns,双向卫星授时精度可作到20ns。
网络时间同步,特指在计算机网络内的服务器与客户端之间利用网络报文
交换实现的时间同步。
鉴于计算机网络传输路径的不肯定性和中间路由交换设备转发报文时间的不肯定性,经过单播或多播实现的单向网络授时是不可靠的。所以,前辈们发明的网络时间同步技术NTP/PTP等,基本原理都是经过对网络报文打时间戳(标记),往返交换报文计算传输时延和同步偏差。
频率同步
指的是主从时钟的频率偏差保持在必定范围内,频率同步有2种类型:
第1种是直接传递模拟频率信号,好比用电缆或光缆传递10MHz、5Mhz、2.048MHz等标准频率,或者传递bit位宽脉冲;
第2种是经过测量获得的主从时钟时差,经过锁定主从相差实现频率锁定(PLL),或者间接计算频率误差,完成频率修正。
计算机网络时间同步只是时间同步的一种应用场景,其时间传递的链路多是SDH网、以太网、WIFI无线网络等。
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时间同步精度。
为克服NTP的各类缺点,PTP(Precision Time Protocol,精确时间同步协议)应运而生,最新协议是IEEE1588v2,可实现亚微秒量级的时间同步精度。
基本原理
主从节点在网络链路层打时间戳,利用支持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网络的时延稳定性可大幅提高网络时间同步精度。
以太网最先只能传输数据信号,有另外独立的频率同步网络,随着以太网的快速发展,SyncE(Synchronized Ethernet)同步以太网技术诞生后,企业们有了新的选择。
基本原理
时钟节点利用以太网(1000M、1G、10G等)物理层的空闲间隙,传递
位宽时钟信号
,实现时钟频率信号(25M、125M等)的自上而下传递。
协议控制
相似于SDH网络等时间间隔传递的SSM同步状态信息,同步以太网(Sync-E)利用链路层ESMC协议封装传递SSM信息,SSM信息包含时钟质量信息,接收端据此选择合适的上级网络时钟。
应用
通常商业PHY片提供SyncE功能选项,开启该功能模式,便可利用PHY恢复出来的频率信号,校准本地时钟频率或分频后用于本地计时。
2016-5-25: 增长世界时,NTP和PTP计时方式。