网络时间协议简介
NTP(Network Time Protocol)是由美国德拉瓦大学的David L. Mills教授于1985年提出,除了可以估算封包在网络上的往返延迟外,还可独立地估算计算机时钟偏差,从而实现在网络上的高精准度计算机校时,它是设计用来在Internet上使不同的机器能维持相同时间的一种通讯协定。时间服务器(time server)是利用NTP的一种服务器,通过它可以使网络中的机器维持时间同步。在大多数的地方,NTP可以提供1-50ms的可信赖性的同步时间源和网络工作路径。
网络时间协议(NTP)的详细说明在
RFC-1305[Mills 1992]中。RFC-1305对NTP协议自动机在事件、状态、转变功能和行为方面给出了明确的说明。它以合适的算法以增强时钟的准确性,并且减轻多个由于同步源而产生的差错,实现了准确性低于毫秒的时间服务,以满足目前因特网中路径量测的需要。
NTP是一个跨越广域网或局域网的复杂的
同步时间协议,它通常可获得毫秒级的精度。RFC2030[Mills 1996]描述了SNTP(Simple Network Time Protocol),目的是为了那些不需要完整NTP实现复杂性的主机,它是NTP 的一个子集。通常让局域网上的若干台主机通过因特网与其他的NTP主机同步时钟,接着再向局域网内其他客户端提供时间同步服务。
注:清华大学网络中心的服务器采用NTP协议,所以同时支持NTP和SNTP客户端的时间同步请求。有关NTP更详细的资料,请访问David L. Mills的主页。
网络时间服务的层状结构
网络延时与时钟偏差的测量
Timestamp
Name
ID When Generated
Originate Timestamp T1 time request sent by client
Receive Timestamp T2 time request received at
server
t 为服务器和客户端之间的时间偏差;d 为两者之间的往返时间
∵T2=T1+t+d/2; T2-T1=t+d/2;
T4=T3-t+d/2; T3-T4=t-d/2;
∴d=(T4-T1)-(T3-T2);
t=((T2-T1)+(T3-T4))/2
[返回页面顶端]
网络时间服务的实现方式
•网络时间服务的实现方式
o无线时钟:服务器系统可以通过串口连
接一个无线时钟。无线时钟接收GPS
(全球卫星定位系统)的卫星发射的信
号来决定当前时间。无线时钟是一个非
常精确的时间源,但是需要花一定的费
用。
o时间服务器:还可以使用网络中NTP时
间服务器,通过这个服务器来同步网络
中的系统的时钟。
/~mill
s/ntp/servers.html列出了Internet
上有效的一级时间服务器。
o局域网内的同步:如果只是需要在本局
域网内进行系统间的时钟同步,那么就
可以使用局域网中任何一个系统的时
钟。你需要选择局域网中的一个节点的
时钟作“权威的”的时间源,然后其它的
节点就只需要与这个时间源进行时间同
步即可。使用这种方式,所有的节点都
会使用一个公共的系统时钟,但是不需
要和局域网外的系统进行时钟同步。如
果一个系统在一个局域网的内部,同时
又不能使用无线时钟,这种方式是最好
的选择。
o注:网络中心的一级服务器从GPS获得
精确时间。
•网络时间服务的工作模式
o Sever/Client mode:用户向一个多几
个服务器提出服务请求,根据所交换的
信息,从中选择认为最准确的时间,并
调整本地的时钟。
o Multicast/Broadcast mode:此种模
式是适用于用在高速的LAN上。利用一
个或多个服务器在固定的周期向某个多
播地址做广播。
o Symmetric mode:二个以上的
Server互相进行时间消息的通讯,可以
互相校正对方的时间,以维持整个
subnet的时间一致性。
o注:对校园网用户采用服务器/客户端模
式的时间服务。
•保持网络节点时间同步的机制
o ntpdate命令:此命令被用来立即同步
客户端和服务器的时间。这是同步客户
端和服务器的时间的最快方式。系统每
次启动的时候会使用这个命令,用来确
保客户端和服务器的时间的同步。这个
命令通常指定一个NTP服务器作为一
个参数,客户端的时钟被设置为和服务
器的时间匹配。当这个命令使用多个NTP服务器作为参数时,客户端会使用最低级的NTP服务器。如果级别相等,客户端会使用加权平均数。
o ntpd守护进程:此进程在后台持续运行,并且会定时校验客户端的时钟和NTP服务器的时间。xntpd守护进程通常是在系统启动的时候启动。因为客户端的时钟可能产生漂移,以致与实际的NTP时钟有差异。xntpd守护进程会周期性地发送一个NTP服务器的网络请求,并且与客户端的时钟对比,在必要的时候修正客户端的时间,同时将时间差存到名为/etc/ntp.drift文件。默认的xntpd时间检查的间隔为64秒,在第一次检查的时候,客户端的时钟和NTP服务器上的时钟的差异会被记录
下来,同时依靠这个时间差异来计划下一次检查。如果这个时间差异很大,下一次的时间检查会很快发生。如果这个差异很小,下一次的检查到来的时间会相应的延长。这样就避免每次都去查询