博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
网络时间的那些事及 ntpq 详解
阅读量:6427 次
发布时间:2019-06-23

本文共 5238 字,大约阅读时间需要 17 分钟。

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

(也许其他发行版也是?)中  只有简短的描述:“打印出该服务器已知的节点列表和它们的状态概要信息。

我还没见到关于这个命令的说明文档,因此这里对此作一个总结,可以补充进 "" man page 中。更多的细节见这里 “”(原作者),和 .

 是一个设计用于通过  网络 ( 或者 ) 来同步计算机时钟的协议。引用 :

网络时间协议(英语:Network Time Protocol,NTP)一种协议和软件实现,用于通过使用有网络延迟的报文交换网络同步计算机系统间的时钟。最初由美国特拉华大学的 David L. Mills 设计,现在仍然由他和志愿者小组维护,它于 1985 年之前开始使用,是因特网中最老的协议之一。

想了解更多有关时间和 NTP 协议的知识,可以参考 “”和 。早期的“Network Time Protocol (Version 3) RFC” (, or , Appendix E, The NTP Timescale and its Chronometry, p70) 包含了对过去 5000 年我们的计时系统的变化和关系的有趣解释。维基百科的文章 和  提供了更宏观的视角。

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

 
  1. remote refid st t when poll reach delay offset jitter
  2. ==============================================================================
  3. LOCAL(0) .LOCL. 10 l 96h 64 0 0.000 0.000 0.000
  4. *ns2.example.com 10.193.2.20 2 u 936 1024 377 31.234 3.353 3.096

更多细节

表头

  • remote – 用于同步的远程节点或服务器。“LOCAL”表示本机 (当没有远程服务器可用时会出现)
  • refid – 远程的服务器进行同步的更高一级服务器
  • st – 远程节点或服务器的 (级别,NTP 时间同步是分层的)
  • t – 类型 (u:  或  客户端, b:  或 客户端, l: 本地时钟, s: 对称节点(用于备份), A: 选播服务器, B: 广播服务器, M: 多播服务器, 参见““)
  • when – 最后一次同步到现在的时间 (默认单位为秒, “h”表示小时,“d”表示天)
  • poll – 同步的频率:建议在 NTPv4 中这个值的范围在 4 (16秒) 至 17 (36小时) 之间(即2的指数次秒),然而观察发现这个值的实际大小在一个小的多的范围内 :64 (26 )秒 至 1024 (210 )秒
  • reach – 一个8位的左移移位寄存器值,用来测试能否和服务器连接,每成功连接一次它的值就会增加,以 显示
  • delay – 从本地到远程节点或服务器通信的往返时间(毫秒)
  • offset – 主机与远程节点或服务器时间源的时间偏移量,offset 越接近于0,主机和 NTP 服务器的时间越接近(以表示,单位为毫秒)
  • jitter – 与远程节点同步的时间源的平均偏差(多个时间样本中的 offset 的偏差,单位是毫秒),这个数值的绝对值越小,主机的时间就越精确

字段的统计代码

表中第一个字符(统计代码)是状态标识(参见 ),包含 " ","x","-","#","+","*","o":

  • " " – 无状态,表示:
    • 没有远程通信的主机
    • "LOCAL" 即本机
    • (未被使用的)高层级服务器
    • 远程主机使用的这台机器作为同步服务器
  • x” – 已不再使用
  • -” – 已不再使用
  • #” – 良好的远程节点或服务器但是未被使用 (不在按同步距离排序的前六个节点中,作为备用节点使用)
  • +” – 良好的且优先使用的远程节点或服务器(包含在组合算法中)
  • “*” – 当前作为优先主同步对象的远程节点或服务器
  • o” – PPS 节点 (当优先节点是有效时)。实际的系统同步是源于秒脉冲信号(pulse-per-second,PPS),可能通过PPS 时钟驱动或者通过内核接口。

参考 .

refid

refid 有下面这些状态值

  • 一个IP地址 – 远程节点或服务器的 
  • .LOCL. – 本机 (当没有远程节点或服务器可用时)
  • .PPS. – 时间标准中的“”(秒脉冲)
  • .IRIG. –  时间码
  • .ACTS. – 美国  电话调制器
  • .NIST. –美国 NIST 标准时间电话调制器
  • .PTB. – 德国  时间标准电话调制器
  • .USNO. – 美国  电话调制器
  • .CHU. –  (, Ottawa, ON, Canada) 标准时间无线电接收器
  • .DCFa. –  (, Mainflingen, Germany) 标准时间无线电接收器
  • .HBG. –  (LF Prangins, Switzerland) 标准时间无线电接收器
  • .JJY. –  (LF Fukushima, Japan) 标准时间无线电接收器
  • .LORC. – -C station () 标准时间无线电接收器,注:  (被  废弃)
  • .MSF. –  (LF, Anthorn, Great Britain) 标准时间无线电接收器
  • .TDF. –  (MF, Allouis, France)标准时间无线电接收器
  • .WWV. –  (HF, Ft. Collins, CO, America) 标准时间无线电接收器
  • .WWVB. –  (LF, Ft. Collins, CO, America) 标准时间无线电接收器
  • .WWVH. –  (HF, Kauai, HI, America) 标准时间无线电接收器
  • .GOES. – 美国;
  • .GPS. – 美国 ;
  • .GAL. – 欧洲 ;
  • .ACST. – 选播服务器
  • .AUTH. – 认证错误
  • .AUTO. – Autokey (NTP 的一种认证机制)顺序错误
  • .BCST. – 广播服务器
  • .CRYPT. – Autokey 协议错误
  • .DENY. – 服务器拒绝访问;
  • .INIT. – 关联初始化
  • .MCST. – 多播服务器
  • .RATE. – (轮询) 速率超出限定
  • .TIME. – 关联超时
  • .STEP. – 间隔时长改变,偏移量比危险阈值小(1000ms) 比间隔时间 (125ms)大

操作要点

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

时:

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

当第一次启动时,时间频率文件(通常是 ntp.drift 文件,记录时间偏移)不存在,守护进程进入一个特殊模式来矫正频率。当时钟不符合时这会需要 900 秒。当校正完成后,守护进程创建时间频率文件进入普通模式,并分步校正剩余的偏差。

NTP 0 层(Stratum 0 )的设备如原子钟(铯,铷),GPS 时钟或者其他标准时间的无线电时钟为 1 层(Stratum 1)的时间服务器提供时间信号。NTP 只报告 时间(统一协调时,Coordinated Universal Time)。客户端程序使用从 UTC 导出本地时间。

NTP 协议是高精度的,使用的精度小于纳秒(2的 -32 次方)。主机的时间精度和其他参数(受硬件和操作系统限制)使用命令 “ntpq -c rl” 查看(参见  通用变量和 )。

“ntpq -c rl”输出参数

  • precision 为四舍五入值,且为 2 的幂数。因此精度为 2precision (秒)
  • rootdelay – 与同步网络中主同步服务器的总往返延时。注意这个值可以是正数或者负数,取决于时钟的精度。
  • rootdisp – 相对于同步网络中主同步服务器的偏差(秒)
  • tc – NTP 算法  (phase locked loop,锁相环路) 或  (frequency locked loop,锁频回路) 时间常量
  • mintc – NTP 算法 PLL/FLL 最小时间常亮或“最快响应
  • offset – 由结合算法得出的系统时钟偏移量(毫秒)
  • frequency – 系统时钟频率
  • sys_jitter – 由结合算法得出的系统时钟平均偏差(毫秒)
  • clk_jitter – 硬件时钟平均偏差(毫秒)
  • clk_wander – 硬件时钟偏移( – 百分之一)

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

操作要点(续)

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

对于 UTC 时间,可以每两年插入一次用于同步地球自传的变化。注意本地时间为时时间会有一小时的变化。在重同步之前客户端设备会使用独立的 UTC 时间,除非客户端使用了偏移校准。

闰秒发生时,会对当天时间增加或减少一秒。闰秒的调整在 UTC 时间当天的最后一秒。如果增加一秒,UTC 时间会出现 23:59:60。即 23:59:59 到 0:00:00 之间实际上需要 2 秒钟。如果减少一秒,时间会从 23:59:58 跳至 0:00:00 。另见 .

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

感谢 Camilo M 和 Chris B的评论。 欢迎校正错误和更多细节的探讨。

谢谢 Martin

附录

  •  从 1900 开始而 UNIX 的从 1970开始.
  •  是逐渐进行的,因此时间的完全同步可能会画上几个小时。
  •  可以被记录到 
  •  – 均方根
  •  – 锁相环路
  •  – 锁频回路
  •  – 百万分之一,用于描述频率的变化

另见

  • NTP 的简明
  • 一个更多细节的简明历史 “Mills, D.L., A brief history of NTP time: confessions of an Internet timekeeper. Submitted for publication; please do not cite or redistribute” ()
  •  标准文档
  • Network Time Protocol (Version 3) RFC – , or . Appendix E, The NTP Timescale and its Chronometry, p70, 包含了对过去 5000 年我们的计时系统的变化和关系的有趣解释。
  • 维基百科:  和 
  •  – The 10,000 Year Clock
  • John C Taylor – 

其他

SNTP (Simple Network Time Protocol, ,简单网络协议)基本上也是NTP,但是少了一些基于 实现的 NTP 的一些不再需要的内部算法。

Win32 时间  是 SNTP 的非标准实现,没有精度的保证,并假设精度几乎有 1-2 秒的范围。(因为没有系统时间变化校正)

还有一个 Precision Time Protocol(精准时间协议)。见维基百科:。软件程序为 。虫咬的功能是这是一个  高精度主从同步系统,精度在毫秒级,使用 (TAI, ,无闰秒)。数据报时间戳需要在网卡中启用。支持 PTP 的网络会对数据报记录时间戳以减少交换机路由器的影响。也可以在不记录时间戳的网络中使用 PTP 但可能应为时间偏差太大而无法同步。因此使用这个需要对网络进行设置。

更老的时间同步协议

  • DTSS – DEC公司的数字时间同步服务, 被 NTP 所取代。例子: 。 (哪里有关于 DTSS 的文章或文档吗?)
  • ,使用  或  13 端口同步
  •  和 ,使用  协议同步
  • ,使用 TCP 或 UDP 37 号端口同步
原文发布时间:2015-01-14
本文来自云栖合作伙伴“linux中国”

转载地址:http://vubga.baihongyu.com/

你可能感兴趣的文章
Python+Excel+Unittest+HTMLTestRunner实现数据驱动接口自动化测试(一)
查看>>
iOS Developer:真机测试
查看>>
单例模式的实现——延迟初始化占位类替代双重检验加锁以达到延迟初始化和线程安全的目的。...
查看>>
Qt编程之对QGraphicsItem点击右键弹出菜单
查看>>
颠覆你的时空观-----理解傅立叶transform
查看>>
CSS3动画制作的简单示例
查看>>
集成Reveal到你的从Xcode工程中
查看>>
常用STL整理 (施工中 2017.8.11更新)
查看>>
Java设计模式之单例模式
查看>>
部署lnmp
查看>>
从mount -o一些理解结合cfs进行描述,窥探该项目全局。
查看>>
Day46 前端基础--JavaScript
查看>>
Windows 8 下面万一蓝屏了怎么办?
查看>>
【内容】MVP 三剑客活动
查看>>
软件工程作业3
查看>>
HDU5857 Median 模拟
查看>>
函数方法that与apply
查看>>
xml
查看>>
delphi正则表达式学习笔记(一)
查看>>
Delphi 设置WebBrowser 代理服务器 与 UserAgent
查看>>