NTP服务,理论上可以精确到纳秒,但是实际的精确程度根据操作系统和设备而不同。‘
NTP守护进程不仅可以调整自己计算机的系统时间。此外,每个守护进程可以是其他NTP守护进程的客户端、服务器或对等端:
这些特性可用于建立分层时间同步结构。时间同步结构的层次结构称为层状结构。层数越小,在层次结构中级别就越高。在层次结构的顶端有一个守护进程,它有最准确的时间,因此最小的stratum数。
默认情况下,守护进程的stratum 级别总是比它的参考时间源的stratum低一级。顶级守护进程通常使用无线电时钟作为参考时间源。默认情况下,无线电时钟的层数为0,因此使用该无线电时钟作为参考时间的守护进程将是1层时间服务器,它在NTP层次结构中具有最高的优先级。在大型网络中,安装一个或多个一级时间服务器是一种很好的做法,它使每个部门的几台服务器计算机可以获得参考时间。这样各部门的服务器就成为了二级时间服务器,可以作为各部门的工作站和其他网络设备的参考时间源。
与电信应用中使用的词不同,例如,根据它们的绝对精度对振荡器进行分类,NTP上下文中的术语stratum并不表示某一类精度,它只是层次结构级别的一个指标。
每个NTP守护进程可以配置为使用几个独立的参考时间源。每个参考时间源在一定的间隔内被周期性地查询(轮询),然后时间源被划分为时间一致的时间源组。这允许一组“好的”时间源(NTP术语中的truechimers)对一组较小的“坏的”时间源(所谓的folsetickers)进行投票。然后从truechimers组中选择所谓的系统同伴。
ntp守护进程从名为ntp.conf的文件中读取配置。Unix系统中此文件在/etc文件夹下。
在大多数安装中,ntp.conf文件至少包含一个或多个以关键字server开头的行。每一行指定一个参考时间源,它可以是网络上的另一台计算机,也可以是连接到本地计算机的无线电时钟。
参考时间源使用IP地址或主机名指定,这些地址或主机名可以由名称服务器解析。如果一个IP地址代表网络上的一个真实节点,那么NTP守护进程假定另一个NTP守护进程运行在具有该地址的计算机上。此外,NTP还使用一些伪IP地址来指定特殊的参考时间源。
例如,NTP使用的伪IP地址为127.127.8.n 访问安装在本地计算机上的Meinberg无线电时钟。为了访问自己的系统时钟(也称为本地时钟),NTP使用伪IP地址127.127.1.0。这个IP地址不能与127.0.0.1混淆,127.0.0.1是本地主机的IP,即计算机的环回接口。
在类unix系统上,解析驱动程序用于从Meinberg制造的参考时钟中读取时间,并通过串行端口连接。解析驱动程序是NTP包的一部分,但必须在编译NTP包时显式激活。大多数Linux发行版都带有一个预编译的NTP包,其中已启用了解析驱动程序。但是,旧Solaris版本附带的NTP包是在没有解析驱动程序的情况下构建的。
在Meinberg软件下载页面上还有一个用于Meinberg PC插件卡的Linux驱动程序。除了配置和监控插件卡的方法之外,这个驱动程序还提供了一个软件接口,允许NTP的解析驱动程序从插件卡读取参考时间,而不是通过Linux下的串行端口。通过串行端口直接连接的设备不需要这个驱动程序。
下面描述的配置步骤必须由在系统上具有足够权限的用户完成,例如root。解析驱动程序通过符号链接/dev/refclock-n访问无线电时钟,其中n是0到3范围内的索引数,因为解析驱动程序可以同时处理多达四个参考时钟。
每个符号链路必须指向一个代表现有无线电时钟的物理设备。在大多数情况下,物理设备是串行的已对外连接无线电时钟的端口。然而,在Linux下,这个链接也可以指向一个代表插件卡的设备节点。
每个参考时钟也必须在ntp.conf文件中使用伪IP地址127.127.8.n的服务器行指定。n必须与上面提到的符号设备名/dev/refclock-n对应的索引号。
伪IP地址必须后跟mode m参数,该参数指定设备所代表的无线电时钟类型。的下表列出了可以与Meinberg无线电时钟一起使用的模式值:
例如,如果将单个无线电时钟连接到串行端口/dev/ttySo,则必须使用该命令为时钟设置符号链接
ln -s /dev/ttyS0 /dev/refclock-0
server 127.127.1.0# local clock
fudge 127.127.1.0 stratum 0 # disciplined by radio clock
Configuration of computers without external reference clock is quite simple. For each computer which is to be used as reference time source, a line must be added to the file ntp.conf. Additionally, the computer’s local clock can configured to be used by the NTP service if none of the other time servers on the network can be reached. Since the time servers on the network shall be preferred, the local clock’s stratum should be forced to a high number:
server 127.127.1.0# local clock fudge 127.127.1.0 stratum 12# not disciplined server ntp_server_1 iburst server ntp_server_2 iburst server ...
where ntp_server_1, ntp_server_2, etc. must be the real host names or IP addresses of existing NTP servers. The keyword iburst causes quick synchronization at program start. Older NTP versions do not support iburst.
[应用摘自:https://www.meinbergglobal.com/english/info/ntp.htm]
没有外部参考时钟的计算机配置非常简单。对于要用作参考时间源的每台计算机,必须在ntp.conf文件中添加一行。此外,如果网络上没有其他时间服务器,可以将计算机的本地时钟配置为由NTP服务使用。由于需要优先选择网络上的时间服务器,因此需要将本地时钟的strotum强制设置为较大的数字:
server 127.127.1.0# local clock
fudge 127.127.1.0 stratum 12# not disciplined
server ntp_server_1 iburst
server ntp_server_2 iburst
server ...
由上述描述可知,如果希望某些时钟源不被优先选择就将stratum设置为较大的值。
其中“ntp_server_1”、“ntp_server_2”等必须为已存在的NTP服务器的真实主机名或IP地址。关键字iburst在程序启动时引起快速同步。旧的NTP版本不支持iburst。
在运行过程中,NTP守护进程计算系统时钟相对于参考时间的漂移。守护进程可以将漂移速率保存到一个文件中,以便在下次重新启动时可用。如果守护进程需要维护漂移文件以提高同步速度,则必须通过添加如下行来指定该文件的位置
driftfile /etc/ntp.drift
添加以上配置到ntp.conf文件
https://kb.meinbergglobal.com/kb/time_sync/ntp/ntp_official_documentation/start