




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
NTP协议一、NTP数据帧格式 下图所示是NTP数据帧的帧头格式: 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |LI | VN |Mode | Stratum | Poll | Precision | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Seconds | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Seconds Fraction | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 原始时间戳(64) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 接收时间戳(64) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 传送时间戳 (64) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 参考时间戳(64) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1、LI 闰秒标识器:使用两个比特表示,用来预警最近一分钟插入一秒或者删除一秒。 LI Value 含义 00 0 无预告 01 1 最近一分钟有61秒 10 2 最近一分钟有59秒 11 3 警告状态(时钟未同步)2、 VN 版本号:用三个比特表示的当前NTP的版本。3、Mode 模式:用三个比特来表示模式 mode 含 义 0 保留 1 对称性激活 2 被动的对称性 3 客户端 4 服务器 5 广播 6 为NTP控制性系保留 7 为自用保留在点对点模式下,客户端机在请求中设置此字段为3,服务器在回答时设置此字段为4;在广播模式下,服务器在回答时设置此字段为5。4、stratum(层):这是一个8bits的整数(无符号),表示当前时钟的层次水平, stratum 含义 0 未指定或难以获得 1 主要参考(如无线电时钟钟,校正的原子时钟) 2-255 第二参考(via NTP)5、 Poll(轮询)间隔:八位signed integer,表示连续信息之间的最小间隔,用2的二次幂来表示,比如值为6的话表示最小间隔为64秒。6、Precision 精度:八位signed integer,表示本地时钟精度,用最接近的2的二次幂来表示,比如50Hz(20ms)或者60Hz(16.67ms)可以表示成值 -5(31.25ms)原始时间戳:客户端发送的时间,64bits,如果该客户端不可达,值设为0;接收时间戳:服务端接受到的时间,64bits,如果该客户端不可达,值设为0;传送时间戳:服务端送出应答的时间,64bits;参考时间戳:本地时钟被修改的最新时间,64bits,如果WTP从未被同步,值设为0。时间戳会记录四个关键时刻的本地时间,但是在某些时刻时间戳是不可得到的,比如主机重启、协议第一次启动,在这种情况下,64个比特被设为0,标识这个值是无效的或者没定义的。NTP时间戳的帧格式:NTP的时间戳使用一个64比特的无符号定点数来表示,前32比特表示整数部分,后32比特表示分数部分(Seconds Fraction )。时间戳的记录以秒的形式从1900年1月1日的0:0:0算起,在Seconds Fraction 部分,无意义的低位应设置为0。这种格式方便于表示多精度算法和用于UDP/TIME 的表示(单位:秒)的变换。它精度是大约是200皮秒。实际实现中NTP提供的时间精度在WAN为数十毫秒,在局域网上则为亚毫秒级或者更高。在Internet上绝大多数能 提供了1-50 ms 的精确度,精确度的大小取决于同步源和网络路径等特性 0 + + + + + + .+ + + + + + + 。+ + + + + + . + + + + + +前32位表示整数后32位表示分数时间戳共计64比特 具体记录时,计算当前时间与1900年1月1日0:0:0的时间间隔,以秒为单位写成二进制形式,整数部分填入前32位,分数部分填入后32位,无意义的低位设置为0.比如当前时间为1902年1月1日1:1:1,与1900的参考时间相差(365*2*24*60*60+3661)63075661秒,转换成二进制为00000011110000100111010101001101. Xxxxxxxxx因为,所以因为只有32位表示秒数,所以当到2036年时数据会溢出()。所以以136年为一个周期置零,会用一些外部的方法来表示是相对1900年的时间还是2036年的时间。二、NTP的通信模型互联网中运用NTP进行时间同步和分配所涉及的设备和通路的集合称为时间同步子网络。时间同步子网络以分层主从结构模式运行,其结构示意图见于图1。在这种结构中,少许几个高层设备可以为大量的低层设备提供同步信息。 第0级设备处于该子网络的特殊位置,是时间同步网络的基准时间参考源。它位于子网络的顶端,目前普遍采用全球卫星定位系统,即由GPS播发的UTC时间代码,本身并不具有NTP。出于对精确度和可靠性的考虑,下层设备同时引用若干个上层设备作为参考源;而且也可以引用同层设备作为参考源。NTP能够时间参考源中选择最好的几个时间源来推断现行时间。在同层设备配置为互为参考时,NTP会在两个对等机间进行自动选择,以精确度高者作为两者共同的参考源,而绝非两者互相引用。NTP工作在时间同步子网络1级以下的其他各级设备中。图1中,在第1级和第2级上用机盒图式表示的设备是网络时间服务器,或者称为NTP时间服务器;用计算机主机和工作站图式表示的是一般互联网中的对应物,在时间同步子网络中它们均被视为时间服务器的时间客户机(下面简称服务器和客户机)。服务器可以是专用设备,也可以是备有专用时钟电路的通用计算机。出于对精确度和可靠性的考虑,下层设备同时引用若干个上层设备作为参考源;而且也可以引用同层设备作为参考源。NTP以客户机和服务器方式进行通信。每次通信共计两个包。客户机发送一个请求数据包,服务器接收后回送一个应答数据包。两个数据包都带有时间戳。NTP根据这两个数据包代的时间戳确定时间误差,并通过一系列算法来消除网络传输的不确定性的影响。在数据包的传送方式上,有客户机和服务器一对一的点对点方式,还有多个客户机对一个服务器的广播/多播方式。两者工作方法基本相同。处于两种方式下的客户机在初始时和服务器进行如同点对点的简短信息交换,据此对往返延时进行量化判断。此后广播/多播客户机只接收广播/多播消息的状态,并根据第一次信息交换的判断值修正时间。不同之处在于时间服务器在广播方式下周期性地向广播地址发送时间刷新信号;而在多播方式下周期性地向多播地址发送时间刷新信号。在广播/多播方式下一个服务器可以为大量的客户机提供时间,但精度较低。三、NTP的通信模式NTP在以下5个模式中运行,用host-mode(peer.mode)变量来表示:symmetric active, symmetric passive, client, server and broadcast这五种模式1.服务器/客户端模式在服务器/客户端模式中,客户端向服务器发送时钟同步报文,报文中的Mode字段设置为3(客户模式)。服务器端收到报文后会自动工作在服务器模式,并发送应答报文,报文中的Mode字段设置为4(服务器模式)。客户端收到应答报文后,进行时钟过滤和选择,并同步到优选的服务器。在该模式下,客户端能同步到服务器,而服务器无法同步到客户端。2.对等体模式在对等体模式中,主动对等体和被动对等体之间首先交互Mode字段为3(客户端模式)和4(服务器模式)的NTP报文。之后,主动对等体向被动对等体发送时钟同步报文,报文中的Mode字段设置为1(主动对等体),被动对等体收到报文后自动工作在被动对等体模式,并发送应答报文,报文中的Mode字段设置为2(被动对等体)。经过报文的交互,对等体模式建立起来。主动对等体和被动对等体可以互相同步。如果双方的时钟都已经同步,则以层数小的时钟为准。3.广播模式在广播模式中,服务器端周期性地向广播地址55发送时钟同步报文,报文中的Mode字段设置为5(广播模式)。客户端侦听来自服务器的广播报文。当客户端接收到第一个广播报文后,客户端与服务器交互Mode字段为3(客户模式)和4(服务器模式)的NTP报文,以获得客户端与服务器间的网络延迟。之后,客户端就进入广播客户端模式,继续侦听广播报文的到来,根据到来的广播报文对系统时钟进行同步。4.组播模式在组播模式中,服务器端周期性地向用户配置的组播地址(若用户没有配置组播地址,则使用默认的NTP组播地址)发送时钟同步报文,报文中的Mode字段设置为5(组播模式)。客户端侦听来自服务器的组播报文。当客户端接收到第一个组播报文后,客户端与服务器交互Mode字段为3(客户模式)和4(服务器模式)的NTP报文,以获得客户端与服务器间的网络延迟。之后,客户端就进入组播客户模式,继续侦听组播报文的到来,根据到来的组播报文对系统时钟进行同步。四、NTP的通信原理通常情况下,在设置的初始,在5至10分钟有内6次交换。 一旦同步后,每10分钟与服务器时间进行一次同步。NTP的基本工作原理如下图所示。Device A和Device B通过网络相连,它们都有自己独立的系统时钟,需要通过NTP实现各自系统时钟的自动同步。为便于理解,作如下假设: 在Device A和Device B的系统时钟同步之前,Device A的时钟设定为10:00:00am,Device B的时钟设定为11:00:00am。 Device B作为NTP时间服务器,即Device A将使自己的时钟与Device B的时钟同步。 NTP报文在Device A和Device B之间单向传输所需要的时间为1秒。 Device A发送一个NTP报文给Device B,该报文带有它离开Device A时的时间戳,该时间戳为10:00:00am(T1)。 当此NTP报文到达Device B时,Device B加上自己的时间戳,该时间戳为11:00:01am(T2)。 当此NTP报文离开Device B时,Device B再加上自己的时间戳,该时间戳为11:00:02am(T3)。 当Device A接收到该响应报文时,Device A的本地时间为10:00:03am(T4)。至此,Device A已经拥有足够的信息来计算两个重要的参数: NTP报文的往返时延Delay=(T4-T1)-(T3-T2)=2秒。 Device A相对Device B的时间差offset=(T2-T1)+(T3-T4)/2=1小时。这样Device A就能根据这些信息来设定自己的时钟,使之与Device B的时钟同步。五、精度误差:NTP理论上最大精度是大约是200皮秒。实际实现中NTP提供的时间精度在广域网为数十毫秒,在局域网上则为亚毫秒级或者更高。在Internet上绝大多数地方能提供了1-50 ms 的精确度,精确度的大小取决于同步源和网络路径等特性。NTP可达到的精度受到本地时钟硬件固有框架、严格的硬件控制和过程延迟的很大影响,由于时钟速率间的微小差别和peers间精度的差异都会给时间同步的计算带来误差;必须依据相关的规定来调节软件的逻辑时钟的时间和频率来修正由于NTP产生的误差。802.11的时间精度大概能达到微秒级。1、 网络的对称性 通过两次测量来估计链路延迟一般估算方法是假设链路是对称的,即时间服务器到客户端的延迟等于客户端到时间服务器的延迟。这种假设是理想化的,实际的无线链路往往受到各种因素的影响,例如多径、时变而不能完全对称。2、 网络拓扑结构 简单的点对点拓扑结构能达到较高的同步精度,而一些复杂的网络容易受到网络延迟抖动的影响且精度与网络负载的情况相关。六、 事件进程6.1符号表示时钟补偿 ,Roundtrip延迟,dispersion,小写希腊字母表示与peer相关的变量,大写希腊字母表示与主要参考源相关的变量,根据roundtrip延迟和dispersion可以得到同步的距离。 表示上一次跟新时的间隔 表示skew rate的最大值Sys.clock:当前本地时间,是由硬件时钟的机制得到的Peer.update:时间戳格式下表示本地时间, when the most recent NTP message was received. It is used in calculating the skew dispersion.Skew:频率的差值Maximum Skew (NTP.MAXSKEW): This is the maximum offset error due to skew of the localclock over the interval determined by NTP.MAXAGE, in seconds. The ratiois interpreted as the maximum possible skew rate due to all causes.Maximum Clock Age (NTP.MAXAGE): This is the maximum interval a reference clock will beconsidered valid after its last update, in seconds. Clock offset represents the amount to adjust the local clock to bring it into correspondence with the reference clock.(时钟补偿指的是本地时钟与对应的参考时钟的差值)Roundtrip delay provides the capability to launch a message to arrive at the reference clock at a specified time.(Roundtrip delay指信息发出达到响应端的时间)Dispersion represents the maximum error of the local clock relative to the reference clock.(相对于参考时钟,本地时钟所允许的最大错误) 每次有关的peer变量跟新后,所有和这个peer关联的分布都需要根据skew-error accumulation来跟新,这种计算总结如下 相关变量说明:6.2 传输过程 除了client mode with a broadcast server和sever mode in all cases,当peer计时器衰减到零,开始执行传输过程。前者是不会发送信息的,后者只会对接收到信息作出响应时才会发送信息。begin transmit procedure初始化packet buffer,复制数据变量,skew的值是计算累积skew-error必须的 pkt.peeraddr peer.hostaddr; /* copy system and peer variables */pkt.peerport peer.hostport;pkt.hostaddr peer.peeraddr;pkt.hostport peer.peerport;pkt.leap sys.leap;pkt.version NTP.VERSION;pkt.mode peer.mode;pkt.stratum sys.stratum;pkt.poll peer.hostpoll;pkt.precision sys.precision;pkt.rootdelay sys.rootdelay;if(sys.leap = or (sys.clock sys.reftime) NTP.MAXAGE) skew NTP.MAXSKEW;else skew (sys.clock sys.reftime);pkt.rootdispersion sys.rootdispersion + (1 sys.precision) + skew;pkt.refid sys.refid;pkt.reftime sys.reftime; pkt.xmt用来验证回复,所以需要保证值得准确性,此外还需要注意时间戳的复制顺序,以确保不会迅速的衰落。 ; /* copy timestamps */pkt.rec peer.rec;pkt.xmt sys.clock;peer.xmt pkt.xmt;在鉴权实现后,进行加密的呼叫。如果鉴权是允许的,鉴权器的加密的延迟会是同步迅速衰落,所以在实现的时候需要用一个系统状态变量(NTP协议中未规定)包含着计算得到的加密延迟的补偿来修正本地时间戳。#ifdef(authentication implemented) /* see Appendix C */ call encrypt; #endefsend packet; 可达性寄存器每次向左移一比特,用0表示空位。若寄存器全是0,则呼叫clear procedure清空clock filter并重新选择同步源。如果这个连接没有由初始化过程进行配置,这个连接遣散。peer.reach peer.reach 1; /* update reachability */if(peer.reach =0 and peer.config =0) begin demobilize association; exit;Endif 如果在先前的两个轮询间隔中,有效数据在filter register中移动的至少一位,有效数据计数器增加。 否则有效数据计数器和poll间隔都将衰落。时候选择进程会呼叫进行重新选择同步源。if(peer.reach & 6 0) /* test two low-order bits (shifted) */ if(peer.valid NTP.SHIFT) /* valid data received */ peer.valid peer.valid +1; else peer.hostpoll peer.hostpoll +1;else begin peer.valid peer.valid 1; /* nothing heard */ peer.hostpoll peer.hostpoll 1); call clock-filter(0, 0, NTP.MAXDISPERSE); call clock-select; /* select clock source */ endifcall poll-update;end transmit procedure;NOTE: 广播服务器直接响应client with 包含着正确信息的和pkt.rec。其他情况下服务器知识纯粹的广播本地时间with ,且pkt.rec设为0;6.3 接收进程一个NTP信息一被接收,该进程就会被执行。该进程使得接收到的信息变得有效,解释变量模式并呼叫其他进程来过滤数据,选择同步源。如果数据中的版本标志与当前版本不匹配,则丢弃该数据。如果同附录B中描述的NTP的控制信息被应用了,且数据的模式是6,control-message进程被呼叫。来源和目的地的IP和UDP头的网络地址和ports和相应的peer相匹配。begin receive procedure if(pkt.version NTP.VERSION) exit; #ifdef(control messages implemented) if(pkt.mode = 6) call control-message; #endef for(all associations) /* access control goes here */ match addresses and ports to associations; if(no matching association) call receive-instantiation procedure; /* create association */在鉴权完成后呼叫解密过程 #ifdef(authentication implemented) /* see Appendix C */ call decrypt; #endef如果packet mode 是非零的使用如下步骤的模式的值, 否则这个peer 是一个旧的版本a模式的值由3.3节确定。if(pkt.mode = 0) /* for compatibility with old versions */ mode (see Section 3.3);elsemode pkt.mode; case(mode, peer.hostmode) /* see Table 5 */如果数据被丢弃或者连接终止,若先前没有配置error: if(peer.config = 0) demobilize association; /* see no evil */ break;如果接收到的数据头和数据是有效的,呼叫clock-update进程来跟新时间,如果这个连接是先前没有配置的则弃置。recv: call packet; /* process packet */ if(valid header) begin /* if valid header, update local clock */ peer.reach peer.reach |1; if(valid data) call clock-update; endif else if(peer.config =0) demobilize association; break;发射数据的进程中会及时的回复消息,如果先前没有配置,连接终止xmit: call packet; /* process packet */ peer.hostpoll peer.peerpoll; /* send immediate reply */ call poll-update; call transmit; if(peer.config = 0) demobilize association; break;跟新时钟的呼叫进程如下:pkt: call packet; /* process packet */ if(valid header) begin /* if valid header, update local clock */ peer.reach peer.reach |1; if(valid data) call clock-update; endif else if(peer.config =0)begin peer.hostpoll peer.peerpoll; /* send immediate reply */ call poll-update; call transmit; demobilize association; endif endcase end receive procedure;6.4 Packet Procedure该进程主要是为了检查信息的有效性,计算延迟/补偿,呼叫其他进程来过滤数据和选择同步源。 Test1:要求传输的时间戳与同一个peer接收的上一个时间戳不匹配,否则这个信息可能是一个旧的数据Text2:要求originate timestamp与发送给同一个peer的上一个时间戳匹配,否则这个信息可能不在序列中/虚假的。begin packet procedure peer.rec sys.clock ; /* capture receive timestamp */ if(pkt.mode 5) begin test1 (pkt.xmt ); /* test 1 */test2 ( =peer.xmt); /* test 2 */endif else peer.rec; /* fudge missing timestamps */pkt.rec pkt.xmt;test1 true; /* fake tests */test2 true;endif pkt.xmt; /* update originate timestamp */ peer.peerpoll pkt.poll; /* adjust poll interval */ call poll-update(peer.hostpoll);Test3:要求originate and receive timestamps都不为0,否则表示连接没有同步上或者丢失了可达性。 test3 ( 0 andpkt.rec 0); /* test 3 */roundtrip 延迟和时钟补偿计算如下:分别表示 , ptk.rec , pkt.xmt和peer.rec,主机相对于peer的时钟补偿,roundtrip延迟和散布表示如下 6.5 Clock-Update Procedure 当有效的时钟补偿,延迟和散布数据被clock-filter鉴别后,由receive procedure呼叫clock-update过程。 begin clock-update procedure call clock-select; /* select clock source */ if(sys.peer peer) exit;当本地时钟被重置后,clear procedure进程被呼叫用来清除每个peer的clock filter,重置poll interval和重新选择同步源。Note that the local-clock procedure sets the leap bits sys.leap to “unsynchronized” 112in this case, so that no other peer will attempt to synchronize to the host until the host once again selects a peer for synchronization.根据上文计算的root延迟、散布、root 同步距离,会进行判断,若计算得到的距离大于NTP.MAXDISTANCE,那么主机就不会与这个选定的peer进行时钟同步。andistance(peer); /* update system variables */if( NTP.MAXDIS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 陕西省汉中市宁强县2024-2025学年八年级下学期7月期末考试数学试卷(含答案)
- 湖北省武汉市东湖高新区2024-2025学年八年级下学期期末考试英语试卷(含答案无听力原文及音频)
- 恶劣天气安全的应急预案范文
- 绿色旅游的市场需求与前景分析
- DB64-T 1919-2023 无线电固定监测站机房及配套设施建设规范
- 2025年城镇公寓购房合同范本
- 永年燃气安全知识培训课件
- 机电设备管道安装方案
- 装配式建筑施工现场电气安全管理方案
- 生殖系统济源医学护理系43课件
- 6G多维度切片QoS保障-洞察及研究
- 2025-2026学年外研版(三起)(2024)小学英语四年级上册教学计划及进度表
- 2025年安徽国控集团所属企业招聘7人笔试备考题库及答案解析
- 2025年海南省警务辅助人员招聘考试(公共基础知识)历年参考题库含答案详解(5套)
- 城市道路清扫保洁协议
- 2025年医学检验在编考试题库
- 特色食品卖场建设方案(3篇)
- 子宫癌肉瘤护理查房
- 高考3500词汇表(完整版)
- 新人教A必修一《集合》课件
- 复用器械处理流程
评论
0/150
提交评论