标题 | 计算机网络中的时间同步 |
范文 | 王文韬![]() ![]() ![]() 摘 要 每台计算机都有自己的硬件时钟,并由主板上的电池保证在关机情况下也能计时。通常情况下,计算机每次开机会从硬件时钟读取时间,并且使用自己的时钟进行计时,但是在单个时钟之间不可避免的会有计时误差,在长时间使用后,时间误差会积累到比较大的数值。这在一般应用中不会造成太大的麻烦,但是在某些应用中,比如集群服务、数据库等,则会发生宕机、系统无法启动等严重后果,所以就必须要配置时间服务器为网络提供时间服务,保证整个网络中的时间在所有计算机中都是一致的。 关键词 计算机;时钟同步;配置 中图分类号 TP3 文献标识码 A 文章编号 1674-6708(2018)214-0133-02 1 Windows下的时间同步 Windows系统下的时间同步由windows time服务完成,使用SNTP协议进行通信,可以达到秒级的时间同步精度,能够满足对时间精度要求不太高的情况下的需求。SNTP协议采用客户端/服务器工作方式,服务器接收GPS信号或使用自带的原子钟作为系统的时间基准,客户机按照预先设定的时间间隔定期访问服务器,获得准确的时间信息,并调整自己的系统时钟,来同步自己的时间。一台服务器同时也可以是客户端,从上层的时间服务器获得高精度时间,并向自己的客户端进行授时。 windows中的客户端,平时使用自己的硬件时钟计时,在访问服务器获得准确时间后,如果时间偏移较大,会直接调整系统时间,所以系统时间在同步时会发生跳变。如果时间偏移较小,会逐渐调整自己的时钟,直到与时间源同步,不会发生大幅度的时间跳变。 Windows时间同步配置可以通过修改注册表来进行,配置服务器的相关注册表项如下。 2 Windows时间服务器配置 1)H K E Y _ L O C A L _ M A C H I N E \ S Y S T E M \ CurrentControlSet\Services\W32Time\Config \AnnounceFlags,将键值改为a(十六进制)。 该键值的参数含义如下: 0 不作为时间服务器; 1 始终为时间服务器; 2 自动为时间服务器,代表由Windows时间服务来决定角色; 4 始终为可靠时间服务器; 8 自動为可靠时间服务器,代表由Windows时间服务来决定角色。 键值a表示同时选择了2和8,也是系统的默认设置。 在这个键值设置为a时,如果时间服务器配置了自己的时间源服务器,但是又无法从时间源服务器同步时间,会认为自己的时间不可靠而有可能停止授时,所以最好将配置改为5,强制在自己失去时间源的时候仍然进行授时服务 2)H K E Y _ L O C A L _ M A C H I N E \ S Y S T E M \ CurrentControlSet\services\W32Time\ TimeProviders\NtpServer 将Enabled键值改为1,允许服务器进行授时服务。重启windows time 服务后便可开始对客户端授时。 3 Windows时间服务客户端配置 Windows时间同步客户端在域环境下,默认从域控制器同步时间,同步的“type”配置为“NT5DS”。独立客户端,可以打开系统的“日期和时间”,其中有一个“Internet时间”页签,更改里面的服务器地址为自己的授时服务器地址即可。如果需要设置的机器太多,可以将下面的内容编辑到注册表文件中,然后导入注册表进行设置。 Windows Registry Editor Version 5.00 [ H K E Y _ L O C A L _ M A C H I N E \ S Y S T E M \ CurrentControlSet\services\W32Time\ Parameters] "Type"="NTP" "NtpServer"="time.windows.com,0x9" Type设置为NT5DS时,"NtpServer"设置不起作用。 将上面的time.windows.com替换为自己的授时服务器ip地址或机器名即可。该设置在时间服务器名称后必须指定0x9或其它参数,否则本设置无效。默认0x9=SpecialInterval+Client 可选的参数: 0x01 SpecialInterval以SpecialInterval中指定的时间间隔同步时间,不使用MaxPollInterval和MinPollInterval中的配置。0x02 UseAsFallbackOnly 仅作为备用时间源 0x04 SymmatricActive 使用动态轮询模式0x08 Client 客户端模式。 4 Windows缓慢校时 如果满足一定条件,windows将会采取缓慢校时的策略同步时间,下面是相关的设置。 进行缓慢校时,需要满足两个公式。 1)| C u r r e n t T i m e O f f s e t | < MaxAllowedPhaseOffset CurrentTimeOffset是本机和时间源的时差,单位是时钟周期。在windows中,1ms=10000时钟周期。MaxAllowedPhaseOffset缺省设置为300秒。 假设本机时间和时间源相差3分钟。 CurrentTimeOffset=3×60×1000×10000 =1800000000 MaxAllowedPhaseOffset=300×1000×10000 =3000000000 满足| C u r r e n t T i m e O f f s e t | < MaxAllowedPhaseOffset的条件 2)|CurrentTimeOffset| / (PhaseCorrectRa te*UpdateInterval) < SystemClockRate / 2 SystemClockRate是系统的时钟周期,可以使用w32tm命令查看本机的ClockRate,然后算出时钟周期。 C:\>w32tm /query /status /verbose ClockRate: 0.0155995s SystemClockRate=0.0155995×1000×10000 =155995 PhaseCorrectRate默认为1 UpdateInterval域成员默认为30000带入公式计算: 1800000000/(1×30000)=60000 155995/2=77998 60000<77998,所以系统会缓慢校时。 4.1 下面是对缓慢校时过程的跟踪 数据分为三列,第一列是本机的当前时间,第二列是本機时间和时间源之间的误差,第三列是第二列中相邻两次误差之间的差值,反应了本地时钟和时间源时钟之间的走时误差。 10:12:13修改了本地时间,使之和时间源有了222秒的误差,可以看到现在并未校时。 ![]() ![]() 4.2 Windows和linux之间的时间同步 Windows和linux之间,由于windows使用的windows time服务采用了SNTP协议,所以windows可以将linux作为时间源同步时间,却不能向linux系统授时,如果需要为liunx系统授时,就要通过第三方软件,比如ntp-4.2.8p10-win32。 软件安装后在“C:\Program Files (x86)\ NTP\etc”路径下会有ntp.conf配置文件,配置完成后重启服务即可。如果想要查看NTP同步状态,需要再安装ntp-time-server-monitor,之后就可以在软件中完成查看NTP同步状态、调整配置文件、重启NTP服务等工作。 ![]() 在安装ntp-4.2.8p10-win32软件时,安装软件会在本地用户中增加“NTP”用户,并在系统中安装“Network Time Protocol Daemon”服务。windows自己的windows time服务会被禁用。配置完成后重启NTP服务,就可以开始向linux系统授时了。 参考文献 [1]刘曙琴,陈珍萍,黄友锐,等.无线传感器网络中带延时的一致性时间同步[J].传感器与微系统,2017(1):64-66,74. |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。