NTP 协议
精确的时间对于网络,应用服务等至关重要,网络时间协议NTP(Network Time Protocol)是TCP/IP协议族里面的一个应用层协议,用来使客户端和服务器之间进行时钟同步,提供高精准度的时间校正。NTP服务器从权威时钟源(例如原子钟、GPS)接收精确的协调世界时UTC,客户端再从服务器请求和接收时间。NTP基于UDP报文进行传输,使用的UDP端口号为123。
NTP 时钟层级
NTP允许客户端从服务器请求和接收时间,而服务器又从权威时钟源(例如原子钟、GPS)接收精确的协调世界时UTC。
NTP以层级来组织模型结构,层级中的每层被称为Stratum。通常将从权威时钟获得时钟同步的NTP服务器的层数设置为Stratum 1,并将其作为主时间服务器,为网络中其他的设备提供时钟同步。
而Stratum 2则从Stratum 1获取时间,Stratum 3从Stratum 2获取时间,以此类推。时钟层数的取值范围为1~16,取值越小,时钟准确度越高。层数为1~15的时钟处于同步状态;层数为16的时钟被认为是未同步的,不能使用的。
NTP 原理
NTP最典型的授时方式是Client/Server方式,如下图所示:
image.png- 客户端首先向服务端发送一个NTP请求报文,其中包含了该报文离开客户端的时间戳t1
- NTP请求报文到达NTP服务器,此时NTP服务器的时刻为t2。当服务端接收到该报文时,NTP服务器处理之后,于t3时刻发出NTP应答报文。该应答报文中携带报文离开NTP客户端时的时间戳t1、到达NTP服务器时的时间戳t2、离开NTP服务器时的时间戳t3;
- 客户端在接收到响应报文时,记录报文返回的时间戳t4。
客户端用上述4个时间戳参数就能够计算出2个关键参数:
-
NTP 报文从客户端到服务器的往返延迟delay
-
客户端与服务器之间的时间差offset
可以解得时间差:
NTP客户端根据计算得到的offset来调整自己的时钟,实现与NTP服务器的时钟同步。
NTP Server
安装
# yum install ntp -y
NTP Server的主要配置文件为/etc/ntp.conf,日志存放在:/var/log/ntp/ntp.log
管理命令
-
查看本机和上层服务器时间同步结果
# ntpq -p
-
用来追踪某台时间服务器的对应关系
#
chrony
chrony相比于ntp server具有更精确的时间准确性,精度更高,同步时间更快。
安装
从 Centos 7.x 开始的最小发行版中都已经预装并开启了 Chrony,如果你的系统没有安装,可以用下面命令进行安装
# yum install -chrony
# systemctl start chronyd.service
# systemctl enable chronyd.service
chrony 有两个核心组件:
-
chronyd
守护进程,主要用于调整内核中运行的系统是按和时间服务器同步。 -
chronyc
命令行界面程序,用于查看何种性能监控及修改配置。
常用命令
-
显示时间同步源
# chronyc sources # -v 可查看详细
-
查看时间同步源的状态
# chronyc activity
-
查看当前系统的时间同步源状态信息(例如漂移率和偏移估算过程)
# chronyc sourcestats
配置文件解析
chrony 的配置文件放置在:/etc/chrony.conf。
参考资料
1、https://info.support.huawei.com/info-finder/encyclopedia/zh/NTP.html
2、
3、https://www.cnblogs.com/edisonfish/p/17215427.html
网友评论