雏鹰部落

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 378|回复: 0

[学习/资料] 【SPOTO思博网络】IP业务《NTP》【网工入门基础】

[复制链接]
发表于 2021-12-2 11:37:45 | 显示全部楼层 |阅读模式
【SPOTO思博网络】IP业务《NTP》【网工入门基础】

NTP协议简介

网络时间协议(英语:Network Time Protocol,简称NTP)是在数据网络潜伏时间可变的计算机系统之间通过分组交换进行时钟同步的一个网络协议之一。NTP由特拉华大学David.Mills设计。

NTP意图将所有参与计算机的协调世界时(UTC)时间同步到几毫秒误差内。它使用Marzullo算法的修改版来选择的时间服务器,其设计旨在减轻可变网络延迟造成的影响。

NTP通常可以在公共互联网保持几十秒的误差,并且在理想的局域网环境中可以实现超过1毫秒的精度。不对成路由可拥塞控制可能导致100毫秒(或更高)的错误。

该协议通常描述为一种主从式架构,但它也可以在点对点网络中,对等体双方可将另一端认定为潜在的时间源。发送和接收时间戳采用用户数据报协议(UDP)的通信端口123实现。

这也可以使用广播或多播,曲中的客户端在最初的往返校准交换后被动地监听时间更新。NTP提供一个即将到来的闰秒调整的警告,但不会传输有关本地时区或夏时制的信息。


NTP的实现方式
无线时钟
服务器系统可以通过串口连接一个无线时钟。无限时钟接收GPS的卫星发射的信号来决定当前时间。无线时钟是一个非常精确的时间源,但是需要花一定的费用。

时间服务器
可以使用网络中的NTP时间服务器,通过这个服务器来同步网络中的系统时间。

局域网内同步(这个时在工作中用得最多的)
如果只需要在本局域网内进行系统间的时钟同步,那么就可以使用局域网中任何一个系统的时钟。你需要选择局域网中的一个节点的时钟作为“权威”的时间源,然后其它的节点就只需要与这个时间源进行时间同步即可。
使用这种方式,所有的节点都会使用一个公共的系统时钟,但是不需要可局域网外的系统进行时钟同步。如果一个系统在局域网的内部,同时又不能使用无线时钟,这种方式是最好的选择。

NTP的工作模式

Server/Client mode
用户向一个或多个服务器发出服务请求,根据所交换的信息,从中选择认为最准确的时间,并调整本地的时钟。

Multicast/Broadcast mode
此种模式是适用于在高速的LAN上。利用一个或多个服务器在固定的周期向某个多播地址做广播。

Symmetric mode
两个以上的Server互相进行时间消息的通讯,可以相互校正对方的时间,以维持整个subnet的时间的一致性。

NTP授权原理

NTP最典型的授时方式是Client/Server方式。如下图1所示,客户机首先向服务器发送一个NTP 包,其中包含了该包离开客户机的时间戳T1,当服务器接收到该包时,依次填入包到达的时间戳T2、包离开的时间戳T3,然后立即把包返回给客户机。客户机在接收到响应包时,记录包返回的时间戳T4。

客户机用上述4个时间参数就能够计算出2个关键参数:NTP包的往返延迟d和客户机与服务器之间的时钟偏差t。

客户机使用时钟偏差来调整本地时钟,以使其时间与服务器时间一致。


图1中:T1为客户发送NTP请求时间戳(以客户时间为参照);
T2为服务器收到NTP请求时间戳(以服务器时间为参照);
T3为服务器回复NTP请求时间戳(以服务器时间为参照);
T4为客户收到NTP回复包时间戳(以客户时间为参照);
d1为NTP请求包传送延时,d2为NTP回复包传送延时;
t为服务器和客户端之间的时间偏差,d为NTP包的往返时间。

现已经T1、T2、T3、T4,希望求得t以调整客户方时钟:

...................................................式(1)

假设NPT请求和回复包传送延时相等,即d1=d2,则可解得“

....................................式(2)


根据式(1),t也可表示为:t=(T2-T1)+d1=(T2-T1)+d/2.....................式(3)

可以看出,t、d只与T2、T1差值及T3、T4差值相关,而与T2、T3差值无关,即最终的结果与服务器处理请求所需的时间无关。

因此,客户端即可通过T1、T2、T3、T4计算出时差t去调整本地时钟。

NTP授时精度分析

NTP授时精度与NTP服务器与用户间的网络状况有关,主要取决于NTP包往返路由的延时对称程度,往返路由的延时不对称值最大不超过网络延时。

式(2)是在假设NTP请求和回复包在网上传送延时相等,即d1=d2=d/2的情况下得出的,而d1、d2的取值范围在(0...d)间,由式(3)可以得出最大授时误差是±d/2。

一般广域网的网络延时在10 ms~500ms之间;局域网的网络延时在计时操作系统内核处理延迟的情况下通常小于1ms。

假定局域网内NTP延时小于1ms,理论上授时误差小于0.5ms,但对于Windows操作系统内置的NTP客户和NTP服务,并不能达到此精度。

Windows NTP时钟分辨率因操作系统和硬件不同而有所不同,时钟分辨率通常为10ms或15ms。基于Windows操作系统内置的NTP授时精度最高不超过10ms。

基于NTP减少计算机时钟偏差

计算机时钟偏差分析

通用PC机自带两类时钟源:硬件时钟和软件时钟(或称为系统时钟)。不论是硬件时钟还是软件时钟,都是由石英晶体振荡器驱动的,通过累计石英晶体振荡器输出脉冲数,换算出时间。

所以计算机时钟的准确度取决于晶振频率准确度。受温度变化、电压、芯片老化等因素影响,晶振频率会发生小幅度波动,其中温度对晶振频影响最大。

由于工艺和材料的原因,同一生产线上标称频率相同的石英晶体,其实际频率是不同的。

实际频率与标称频率偏差率从10-4量级到10-9量级不等。以10-4量级为例,时钟每天至少误差8.64 s。

基于NTP减少计算机时钟频率偏差

时钟频率偏差是时钟长期计时累积误差的主要原因,要提高时钟长期计时精度,必须补偿时钟频率偏差。联网的计算机可采用NTP方式,可非常方便地校准时钟频率偏差。

以NTP服务器时钟为标准时间,在某一时刻设置NTP客户机时间为NTP服务器当前时间T0,经过一段时间后,NTP服务器时间为T0+tsn,NTP客户端时间为T0+tcn。因为存在时钟频率偏差,tsn与tcn并不相等。

NTP客户端时间tcn需乘以时钟频率偏差系数k才等于tsn,即tsn=k×tcn,所以k=tsn/tcn。

任何晶振实际工作频率都是不稳定的,只是程度不同而已。即使温度补偿的晶振,在常温范围内(摄氏10℃~35℃)也有大约5×10-7~2×10-6的误差。

晶振实际频率是受外界多种因素(温度、电压、老化等)影响而改变的。因此,时钟频率偏差系数k并非恒定不变的。

每隔一定时间,NTP客户机要对时钟频率偏差系数k进行校正,才能保证计时精度。

进一步提高NTP授时精度的方法

局域网络延相对较大的原因在于时间戳一般都是在应用层加盖。为减少操作系统内核处理延时的影响提高NTP授时精度,发/收NTP包时间戳应尽量接近主机真实发/收包时刻。

在不改变硬件的条件下,一个可行的办法是修改网卡驱动程序,将记录NTP包发/收时间戳从应用程序移至网卡驱动程序处,可消除操作系统内核处理延时不确定而引入的误差。这种方法在局域网中可大幅提高NTP授时精度至μs级。

为了减少温度引起晶振频率漂移对时钟准确度的影响,可以采用数字温漂补偿方法,提高时钟长期计时准确度。

先测出工作温度范围内温度对应的温漂补偿系数,工作时每隔一定时间,根据实际温度查出对应补偿系数动态地修正时间。

时钟频率偏差和时钟分辨率低是局域网NTP授时精度不高的主要原因。

进入全国网络工程师交流群 ,请扫描下方二维码↓↓↓
群里有行业大咖、实战分享、技术交流、技术咨询、企业内推等机会
若群满,请添加
老杨微信(spotoa),邀你进群


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|熊猫同学技术论坛|小黑屋| 网络工程师论坛 ( 沪ICP备09076391 )

GMT+8, 2024-11-21 19:56 , Processed in 0.079009 second(s), 19 queries , Gzip On.

快速回复 返回顶部 返回列表