一、啥是NTP
网络时间协议NTP(Network Time Protocol)的主要开发者是美国特拉华大学的MILLS David L教授设计实现的,由时间协议、ICMP时间戳消息及IP时间戳选项发展而来。NTP用于将计算机客户或服务器的时间与另一服务器同步,使用层次式时间分布模型。在配置时,NTP可以利用冗余服务器和多条网络路径来获得时间的高准确性和高可靠性。即使客户机在长时间无法与某一时间服务器相联系的情况下,仍可提供高准确度时间。
二、NTP授时原理
NTP最典型的授时方式是Client/Server方式。如下图1所示,客户机首先向服务器发送一个NTP 包,其中包含了该包离开客户机的时间戳T1,当服务器接收到该包时,依次填入包到达的时间戳T2、包离开的时间戳T3,然后立即把包返回给客户机。客户机在接收到响应包时,记录包返回的时间戳T4。客户机用上述4个时间参数就能够计算出2个关键参数:NTP包的往返延迟d和客户机与服务器之间的时钟偏差t。客户机使用时钟偏差来调整本地时钟,以使其时间与服务器时间一致。
图1 Client/Server方式下NTP授时原理
图1中:T1为客户发送NTP请求时间戳(以客户时间为参照);T2为服务器收到NTP请求时间戳(以服务器时间为参照);T3为服务器回复NTP请求时间戳(以服务器时间为参照);T4为客户收到NTP回复包时间戳(以客户时间为参照);d1为NTP请求包传送延时,d2为NTP回复包传送延时;t为服务器和客户端之间的时间偏差,d为NTP包的往返时间。
现已经T1、T2、T3、T4,希望求得t以调整客户方时钟:
....................................................式(1)
假设NPT请求和回复包传送延时相等,即d1=d2,则可解得“
.....................................式(2)
根据式(1),t也可表示为:t=(T2-T1)+d1=(T2-T1)+d/2.....................式(3)
可以看出,t、d只与T2、T1差值及T3、T4差值相关,而与T2、T3差值无关,即最终的结果与服务器处理请求所需的时间无关。因此,客户端即可通过T1、T2、T3、T4计算出时差t去调整本地时钟。
三、NTPD配置
操作系统:CentOS6.5
NTP版本:4.2.6p5
启动脚本:/etc/init.d/ntpd
启动参数:/etc/sysconfig/ntpd
1.启动ntpd
# service ntpd start
2.修改系统时间
如果系统时间误差超过1000s
启动参数中无-g:则ntpd服务会退出,且ntpd服务无法启动
启动参数中有-g:则ntpd服务会退出,重启ntpd服务会强制与server同步
如果系统时间误差超过阈值128ms(可以加-x参数改为600s)
重启ntpd服务,会直接与server同步,及step至server时间
如果小于这个阈值,则会通过slew(0.5ms/s)去与server同步