时间是我们每天高频使用的一个变量,小到抬手看一眼手表,大到航天测控,因为不同设备对应的时间源不同——钟表是依靠人手工同步,电脑是依靠服务器同步,卫星是依靠原子钟同步——所以时间误差就是不可避免的。 对于我们的日常生活来说,手表快慢几秒钟,甚至十几秒钟都是可以被接受的,然而在航空业、金融业这类对时间误差非常敏感的行业,快慢1秒钟都是不能被接受的。打个比方,某一时刻,空管计算机上时间为00:00:00,而飞机上时间为23:59:59,以飞机的速度800KM/H计算,这一秒钟的误差所对应的距离约为222米,试想一下若飞行在空中的每一架飞机的时间都不同步会发生什么样的混乱场面,严重影响安全性,所以说航空业对时间误差非常敏感。 那么如何使得地球上不同的设备建立起联系并实现同步呢?首先我们想到了要设立一个统一的时间标准,这个时间就是协调世界时UTC,而在航空领域中,均使用UTC时间作为飞行时间参考。 有了统一的时间标准后,那么问题便转化为如何使不同的设备获取该时间实现同步,而获得UTC时间有很多方法,在航空业中使用特别的接收机接收卫星时间,高级别的运行单位会搭建专用的原子钟。很明显这种方法不适用于现在世界上这么多设备终端,因此NTP协议应运而生。
接下来介绍一下WINDOWS时间服务与NTP时间协议的主要内容和基本逻辑。首先WINDOWS时间服务由Service Control Manager、Windows Time Service Manager、Clock Discipline、Time Providers组成。 WINDOWS时间同步遵循以下步骤: ▶ 1、从NTP时间源请求和接收时间样本 ▶ 2、将时间样本交给Windows Time Service Manager,Windows Time Service Manager收集所有时间样本,并交给Clock Discipline ▶ 3、Clock Discipline应用NTP算法计算出最佳时间样本 ▶ 4、Clock Discipline通过调整时间速度来校准系统时间达到最精准的时间 上文出现的收集样本、计算出最佳时间样本等内容原因在于,实际使用中终端机往往会与多个NTP时间服务器相连,获得许多不同时间样本后,通过使用统计学算法来获得最精确的时间。 NTP协议最核心的内容就在于如何获得终端机与时间源的时间偏差,下面介绍NTP协议如何得出这个时间偏差。 为了便于理解,首先假设终端机是A,时间服务器为B,二者通过网络相连,均拥有自己独立的系统时钟 终端机A和时间服务器B时间同步的工作过程如下: ■ (1) 终端机A发送一个NTP报文给服务器B,该报文带有它离开终端机A时的时间戳,该时间戳为10:00:00 am(T1) ■ (2)当此NTP报文到达服务器B时,服务器B在NTP报文上增加该报文到达服务器B时的时间戳,该时间戳为11:00:01 am(T2) ■ (3)当此NTP报文离开服务器B时,服务器B再在NTP报文上增加该报文离开服务器B时的时间戳,该时间戳为11:00:02 am(T3) ■ (4)当终端机A接收到该响应报文时,终端机A的本地时间为10:00:03 am(T4) 至此,终端机A可以根据上述时间戳计算两个重要的参数: NTP报文的往返用时D = (T4-T1) – (T3-T2) =2秒; 终端机相对时间服务器B的时间差C= ((T2-T1) (T3-T4)) / 2=1小时; 如此终端机A便可得到时间误差C,通过不断修正减少C、该值便可使终端不断接近服务器的时间。 通过以上内容相信你已经大致能够了解该协议的基本逻辑了 因考虑到安全因素,模拟机的各计算机均处于内部局域网中未与外网相连,所以每台计算机仅能依靠自身的单晶振荡器作为时钟数据,因此经过一定时间的误差累积,便会产生较大的时间误差,我们也经常会收到训练机组对于UTC时间不准确的反馈,这不仅影响教员对于训练时长的判断,有时还会导致机组晚下模拟机,延误下一组训练人员的训练时间。由此我们想到通过使用NTP协议来同步模拟机各计算机之间的时间,从而同步模拟机上UTC显示时间,最后仅需通过监控一台时间源计算机的时间便可保证所有模拟机UTC时间的精确性。 根据模拟机网络的实际情况,即每台模拟机有单独的域,在一个域中,域成员的时间是自动与域控制器同步的。但是每台模拟机间相互不同步,加上模拟机与外网是物理隔离的,无法使用外部的时间源。所以我们将一台模拟机的CDF计算机设置为权威时间服务器,然后将其余计算机时间服务的时间源设置为该CDF计算机,即可完成每台模拟机间时间同步的需求。 具体步骤分为三步: 一、 将CDF配置为权威时间服务器。 1、修改注册表W32TM服务下AnnounceFlags为5,这将强制CDF计算机使用CMOS时钟,并宣布自己为可靠时间源。 2、在CMD中输入 net stop w32time && net start w32time 重启时间服务 二、 配置客户端(HOST SOUND IOS SDPC)。 1、 修改注册表W32TM服务下parameter-Type 改为NTP。 2、 修改注册表W32TM服务下AnnounceFlags为10。 3、 修改注册表W32TM服务下timeprovider-NTPserver-enable, 将 数 值改为1 启用NTP服务。 4、 修改注册表W32TM服务下parameter-ntpserver 将已设为权威时 间服务器的IP地址或者计算机名称输入。一定要在名称或地址后 加“,0x1”。 5、校准周期设置:可通过SpecialPollInterval变量来设置校准周期, 单位为秒。 6、 在CMD中输入 net stop w32time && net start w32time。 三、测试 1、在CMD中输入w32tm /resync,测试是否能正常与时间源同步。 2、 在CMD中输入w32tm /query /status,检查source ip,last successful sync time,是否与设置的相同。最后成功同步时间是否正常。 3、在CMD中输入w32tm /stripchart /computer:“CDF的IP” /samples:10 /dataonly 该指令可以显示当前计算机与CDF时间差为多少,确认时间差值正常。也可以手动调快当前计算机时间,观察NTP服务是否起作用。 至此我们完成了计算机上NTP服务的配置和调试。 总的来说,NTP 是用来使计算机时间同步化的一种协议,它的目的是在无序的Internet 环境中提供精确和健壮的时间服务。 |
|
来自: zwd2125188 > 《待分类》