天天看点

网络时间的那些事及 ntpq 详解网络时间的那些事及 ntpq 详解

网络时间协议(英语:network time protocol,ntp)一种协议和软件实现,用于通过使用有网络延迟的报文交换网络同步计算机系统间的时钟。最初由美国特拉华大学的 david l. mills 设计,现在仍然由他和志愿者小组维护,它于 1985 年之前开始使用,是因特网中最老的协议之一。
网络时间的那些事及 ntpq 详解网络时间的那些事及 ntpq 详解

命令 "ntpq -q" 输出下面这样的一个表:

remote refid st t when poll reach delay offset jitter

==============================================================================

local(0) .locl. 10 l 96h 64 0 0.000 0.000 0.000

*ns2.example.com 10.193.2.20 2 u 936 1024 377 31.234 3.353 3.096

<a target="_blank"></a>

remote – 用于同步的远程节点或服务器。“local”表示本机 (当没有远程服务器可用时会出现)

refid – 远程的服务器进行同步的更高一级服务器

when – 最后一次同步到现在的时间 (默认单位为秒, “h”表示小时,“d”表示天)

delay – 从本地到远程节点或服务器通信的往返时间(毫秒)

jitter – 与远程节点同步的时间源的平均偏差(多个时间样本中的 offset 的偏差,单位是毫秒),这个数值的绝对值越小,主机的时间就越精确

" " – 无状态,表示:

没有远程通信的主机

"local" 即本机

(未被使用的)高层级服务器

远程主机使用的这台机器作为同步服务器

“x” – 已不再使用

“-” – 已不再使用

“#” – 良好的远程节点或服务器但是未被使用 (不在按同步距离排序的前六个节点中,作为备用节点使用)

“+” – 良好的且优先使用的远程节点或服务器(包含在组合算法中)

“*” – 当前作为优先主同步对象的远程节点或服务器

“o” – pps 节点 (当优先节点是有效时)。实际的系统同步是源于秒脉冲信号(pulse-per-second,pps),可能通过pps 时钟驱动或者通过内核接口。

refid 有下面这些状态值

.locl. – 本机 (当没有远程节点或服务器可用时)

.nist. –美国 nist 标准时间电话调制器

.acst. – 选播服务器

.auth. – 认证错误

.auto. – autokey (ntp 的一种认证机制)顺序错误

.bcst. – 广播服务器

.crypt. – autokey 协议错误

.deny. – 服务器拒绝访问;

.init. – 关联初始化

.mcst. – 多播服务器

.rate. – (轮询) 速率超出限定

.time. – 关联超时

.step. – 间隔时长改变,偏移量比危险阈值小(1000ms) 比间隔时间 (125ms)大

一个时间服务器只会报告时间信息而不会从客户端更新时间(单向更新),而一个节点可以更新其他同级节点的时间,结合出一个彼此同意的时间(双向更新)。

除非使用 iburst 选项,客户端通常需要花几分钟来和服务器同步。如果客户端在启动时时间与 ntp 服务器的时间差大于 1000 秒,守护进程会退出并在系统日志中记录,让操作者手动设置时间差小于 1000 秒后再重新启动。如果时间差小于 1000 秒,但是大于 128 秒,会自动矫正间隔,并自动重启守护进程。

precision 为四舍五入值,且为 2 的幂数。因此精度为 2precision (秒)

rootdelay – 与同步网络中主同步服务器的总往返延时。注意这个值可以是正数或者负数,取决于时钟的精度。

rootdisp – 相对于同步网络中主同步服务器的偏差(秒)

mintc – ntp 算法 pll/fll 最小时间常亮或“最快响应

offset – 由结合算法得出的系统时钟偏移量(毫秒)

frequency – 系统时钟频率

sys_jitter – 由结合算法得出的系统时钟平均偏差(毫秒)

clk_jitter – 硬件时钟平均偏差(毫秒)

jitter (也叫 timing jitter) 表示短期变化大于10hz 的频率, wander 表示长期变化大于10hz 的频率 (stability 表示系统的频率随时间的变化,和 aging, drift, trends 等是同义词)

ntp 软件维护一系列连续更新的频率变化的校正值。对于设置正确的稳定系统,在非拥塞的网络中,现代硬件的 ntp 时钟同步通常与 utc 标准时间相差在毫秒内。(在千兆 lan 网络中可以达到何种精度?)

那么… 间隔阈值(step threshold)的真实值是多少: 125ms 还是 128ms? pll/fll tc 的单位是什么 (log2 s? ms?)?在非拥塞的千兆 lan 中时间节点间的精度能达到多少?

感谢 camilo m 和 chris b的评论。 欢迎校正错误和更多细节的探讨。

谢谢 martin

<a href="http://nlug.ml1.co.uk/2012/01/man-ntpq-gentoo-brief-version/853" target="_blank">man ntpq (gentoo 简明版本)</a>

<a href="http://nlug.ml1.co.uk/2012/01/man-ntpq-long-version/855" target="_blank">man ntpq (长期维护版本)</a>

<a href="http://nlug.ml1.co.uk/2012/01/man-ntpq-gentoo-long-version/856" target="_blank">man ntpq (gentoo 长期维护版本)</a>

<a href="http://www.eecis.udel.edu/~mills/ntp/html/ntpq.html" target="_blank">ntpq – 标准 ntp 查询程序</a>

<a href="http://www.eecis.udel.edu/~mills/ntp/html/index.html" target="_blank">the network time protocol (ntp) 分布</a>

<a href="http://www.rmg.co.uk/harrison" target="_blank">john harrison and the longitude problem</a>

<a href="http://en.wikipedia.org/wiki/orders_of_magnitude_%28time%29" target="_blank">orders of magnitude of time</a>

<a href="http://en.wikipedia.org/wiki/greenwich_time_signal" target="_blank">greenwich time signal</a>

原文发布时间:2015-01-14

本文来自云栖合作伙伴“linux中国”

继续阅读