NTP协议详解
文。7:reserved for private use,内部使用预留。
Stratum
8 时钟的层数,定义了时钟的准确度。层数为1 的时钟准确度最高,从1 到15 依次递减。
bits
8
Poll Interval
轮询时间,即发送报文的最小间隔时间。
bits
Precision
8 时钟的精度。
bits
32
说明
当网络内存在多台时间服务器时,可以通过选择算法综合各时间服务器的层数和时间偏移量等,来提高本地时钟的准确性。
NTP 协议是基于UDP 进行传输的,使用端口号为123。NTP 中没有提供对等体确定或有效回路管理的机制,数据的完整性通过IP 和UDP 的校验和来保证。重发检测 由处理报文算法实现。 NTP 的优势
至此,ME60A 拥有足够信息来计算以下两个重要参数: NTP 消息来回一个周期的时延:Delay=(T4-T1)-(T3-T2)。 ME60A 相对ME60B 的时间差:Offset=((T2-T1)+(T3-T4))/2。
ME60A 根据这些信息来设定自己的时钟,实现与ME60B 的时钟同步。 说明 以上是NTP 工作原理的简略描述,在RFC1305 中,NTP 使用复杂的算法来确保时钟同步的精确性。
层数是对始终同步情况的一个分级标准,代表了一个时钟的精确度,取值范围1 ~ 16,数值越小,精确度越高。1 表示时钟准确度最高,16 表示未同步。 时钟过滤
时钟过滤针对本地时钟的同一个对等体,用来从这个给定的对等体选择最好的时间样本。 时钟选择
时钟选择是一种选择参考时钟的方法,基于时钟选择算法。适用于客户端同时存在多个远端对等体的情况。 比如:一个客户端配置了多个服务器端和多个对等体端。客户端分别向各个服务器端和对等体端发送NTP 报文。在接收到返回的NTP 报文后或定时器时间到时,利用 时钟选择算法选出一个最优的,作为参考时钟进行同步。
关于本章
介绍了NTP 的概念、原理及华为的实现和应用。
3.1 NTP 协议概述
介绍NTP 协来自百度文库的基本概念。
3.2 NTP 协议原理
介绍NTP 协议的实现原理。
3.3 NTP 的应用
介绍NTP 协议在实际中的应用。
3.4 参考资料清单
介绍本文档所用到的参考资料。
3.1 NTP 协议概述
3.2 NTP 协议原理
介绍NTP 协议的实现原理。 3.2.1 NTP 的实现模型 3.2.2 网络结构 3.2.3 NTP 报文格式 3.2.4 NTP 的工作模式 3.2.5 NTP 事件处理 3.2.6 NTP 的动态连接和静态连接 3.2.7 NTP 访问控制
3.2.1 NTP 的实现模型
(可选)验证信息。
bits
NTP 控制报文格式如图5 所示。 图5 NTP 控制报文
表2 NTP 控制报文字段含义
字段名
长度
含义
00
2 bits
保留位。NTP 本身不做处理。
VN(Version Number) 3 bits
NTP 的版本号,目前值为3。
Timestamp bits
Originate 64 NTP 报文离开源端时的本地时间。
Timestamp bits
Receive
64
NTP 报文到达目的端的本地时间。
Timestamp bits
Transmit
64
目的端应答报文离开服务器端的本地时间。
Timestamp bits
96
Authenticator
介绍NTP 协议的基本概念。 3.1.1 NTP 简介 3.1.2 NTP 协议的基本概念
3.1.1 NTP 简介
NTP 的引入 NTP 是从时间协议(Time Protocol)和ICMP 时间戳报文(ICMP TimeStamp Message)演变而来,在准确性和健壮性方面进行了特殊的设计,理论上精度可达十亿
当接收到一个NTP 的回应报文时,接收进程根据报文中携带的信息,计算出本地时钟和远端对等体时钟间的偏移量,并将其与对确定误差和对等体选择有用的信息一 起写进数据文件。 更新进程
在接收到一个NTP 的回应报文后,处理来自每一个对等体的偏移数据,并用特定的选择算法选择出一个最优的对等体。 这步操作可能包括对少量对等体的多次观察,或者对许多对等体的少量观察。这取决于所需要的准确度。 本地时钟进程 本地时钟为各项系统进程提供了稳定的时间信息、并为网络中的其它用户提供了时钟参考。 根据更新进程中产生的偏移数据,使用特定方法对本地时钟的相位和频率进行调节。常用的调节方法有:
发送进程 发送进程由定时器控制,收集数据文件中的信息并向远端对等体发送NTP 报文。每个发出的NTP 报文中都包含时间戳,以及确定层次和管理关联所必须的信息。报文
发送速度取决于当地时钟和远端对等体所需要的准确度。 接收进程
接收进程接收NTP 报文(也可能包括其它协议的报文),并收集来自与主机直连的Radio Clocks 的信息。
数据包在ME60A 和ME60B 之间单向传输需要1 秒。 ME60A 和ME60B 处理NTP 数据包的时间都是1 秒。 图1 NTP 实现图
系统时钟同步的工作过程如下: 1. ME60A 发送一个NTP 报文给ME60B,该报文中带有它离开ME60A 时的时间戳10:00:00am(T1)。 2. 此NTP 报文到达ME60B 时,ME60B 加上到达时间戳11:00:01am(T2)。 3. 此NTP 报文离开ME60B 时,ME60B 再加上离开时间戳11:00:02am(T3)。 4. ME60A 接收到该响应报文时,加上新的时间戳10:00:03am(T4)。
3.2.3 NTP 报文格式
NTP 数据报文和控制报文都是封装在UDP 报文中。 NTP 数据报文如图4 所示。 图4 NTP 数据报文
表1 NTP 数据报文字段含义
字段名
长 含义
度
LI(Leap
2 值为“11”时表示告警状态,时钟不能被同步。为其他值时NTP 本身不做处理。
Indicator) bits
在正常情况下,同步子网中的主服务器和次级服务器呈现出一种分层主从结构,在这种分层结构中,主服务器位于根部,次级服务器向叶子节点靠近,层数递增,准 确性递减。
随着层数从1 开始递增,可获得的样本的准确度逐层降低,降低的程度取决于网络路径和本地时钟的稳定性。为了避免对每一特定结构进行误差估计时所必须的单调 乏味的计算,采用根据相对于同步子网的根的延迟和离差按比例计算平均度量误差非常有用。
当一台服务器通向各条路径的距离都达到极限值时,这台服务器将脱离子网,自动运行在它最后一次确定的时间和频率。由于这些计算精度很高,尤其是频率,所以 当一台具有比较稳定的振荡器的服务器长时间脱离子网时,它的计时误差可以保持在一天不大于几毫秒。
当有多台主服务器时,通过算法来选择最小同步距离的服务器。但是,当这些主服务器处于大致相同的距离时,可能会是在它们中间进行随机选择。 如果任何两台主服务器之间的偏差与同步距离相比较小,则使用随机选择将不会降低准确性 如果任何两台主服务器之间的偏差与同步偏差量相比较大时,则建议使用过滤算法和选择算法,在可利用的服务器中选择最好的,丢弃较差的服务器
采用分层(Stratum)的方法来定义时钟的准确性,可以迅速同步网络中各台设备的时间。 支持访问控制和MD5 验证。 支持采用单播、组播或广播方式发送协议报文。
NTP 的实现 NTP 实现过程如图1所示。ME60A 和ME60B 通过广域网相连,它们都有自己独立的系统时钟,通过NTP 实现系统时钟自动同步。 作如下假设: 在ME60A 和ME60B 的系统时钟同步之前,ME60A 的时钟设定为10:00:00am,ME60B 的时钟设定为11:00:00am。 ME60B 作为NTP 时间服务器,ME60A 的时钟与ME60B 的时钟同步。
对本地时钟进行一步更新。 对本地时钟进行渐进的相位调节使偏差逐步较少到零。
3.2.2 网络结构
如图3 所示,同步子网由主时间服务器、二级时间服务器、客户端和它们之间互连的传输路径组成。 图3NTP 网络结构
主时间服务器直接同步到主参考时钟,主参考时钟通常是Radio Clock 或卫星定位系统等。 二级时间服务器通过网路中的主时间服务器或者其它二级服务器取得同步。二级时间服务器通过NTP 将时间信息传送到局域网内部的其它主机。
Root Delay
到主参考时钟的总往返延迟时间。
bits
Root Dispersion
32 本地时钟相对于主参考时钟的最大误差。
bits
Reference Identifier
32 标识特定参考时钟。
bits
Reference 64 本地时钟最后一次被设定或更新的时间。如果值为0 表示本地时钟从未被同步过。
时钟偏移量
时钟偏移量是本地时钟与参考时钟之间的时间差。在数值上等于将本地时钟调节到与所选参考时钟一致所要调节的量。 往返延迟
往返延迟是客户端收回NTP 报文的时刻,与发出该NTP 报文的时刻之间的时间差。它规定了本地时钟在指定时间内将一条信息发送到参考时钟的能力。 离差
离差是本地时钟相对于参考时钟的最大误差。 层数
客户端设备为每个远端对等体运行三个进程,分别为:发送进程、接收进程、更新进程。这三个进程操作数据文件中的同一分块,通过报文传送系统互相连接。 当一个客户端设备同时存在多个对等体时,会在数据文件中划分出多个区域,每一个对等体对应一个特定的区域。 NTP 的实现模型如图2 所示。 图2 NTP 实现模型
这种设计的结果是,当一台或多台主/次级服务器或它们之间的网络路径发生故障时,子网的分层主从分层结构将自动发生重构以获得最精确和最可靠的时间;当子网 中所有的正常情况下的主服务器都失效,一台或多台备用主服务器继续运行。然而,当子网中所有的主服务器都失效时,其它次级服务器将在它们内部达到同步,这时接 近达到预先选择的最大值“极限值”。
3.1.2 NTP 协议的基本概念
时间戳 NTP 时间戳由64 位无符号定点数表示,这个定点数是一个相对于1900 年1 月1 日0 点的秒数,整数部分位于前32 位,小数部分位于后32 位。 Originate Timestamp(peer.xmt, pkt.xmt):表示NTP 报文离开发送端时的当地时间(如T1),时间戳格式。 Receive Timestamp(peer.rec, pkt.rec):表示NTP 报文到达远端对等体时的当地时间(如T2),时间戳格式。当远端对等体不可达时,该值被置为0。 Transmit Timestamp (peer.org, pkt.org):表示远端对等体返回NTP 报文时的当地时间(如T3),时间戳格式。当对等体不可达时,该值被置为0。 Reference Timestamp(sys.reftime, peer.reftime, pkt.reftime):表示NTP 报文回到发送端时的当地时间(如T4),时间戳格式。如果本地时钟从未被同步过,值 为0。
VN(Version 3 NTP 的版本号,目前值为3。 Number) bits
Mode
3 NTP 的工作模式。不同值表示的含义如下:0:reserved,保留。1:symmetric active,主动对等体模式。2:symmetric passive,被动对等体模 bits 式。3:client,客户模式。4:server,服务器模式。5:broadcast,广播模式。6:reserved for NTP control messages,NTP 控制报
分之一秒。 NTP 协议应用于分布式时间服务器和客户端之间,实现客户端和服务器的时间同步,从而使网络内所有设备的时钟基本保持一致。服务器和客户端的概念是相对而言
的,提供时间标准的设备称为时间服务器,接收时间同步的设备称为客户端。 NTP 协议包含如下信息:
本地时钟和时间服务器的特征 估计本地时钟和时间服务器的误差的方法 NTP 协议实现过程中用到的时钟过滤、时钟选择等算法。