基于NTP 协议的统一授时间系统的设计与实现
2015-06-02吴兆雄
吴兆雄
摘要:目前有成百上千种气象资料在全国气象网络系统中传输,其中有多种资料需要进行时效考核。为了提高资料传输的时效性和可用性,中国气象局在气象网络系统中建立了时间同步系统。该系统使用NTP协议,采用服务器/客户端的方式,为各业务系统提供统一的时钟源,确保了各系统内时间的一致性和准确性。
关键词:NTP协议;服务器/客户端;时钟源
中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2015)09-0076-02
中国气象局统一授时服务建立的目的在于保持运行在中国气象局骨干网络上和全国宽带网络上的设备及应用时间精确和统一。随着中国气象局网络建设及应用的发展,在中国气象局数据及通讯网络上承载的业务量越来越大,部署在宽带网络上的网络设备和应用服务器的数量也越来有多。中国气象局网络应用延伸到省、地市及县站。在这样一个大型的网络里保持网络设备和应用服务器时间的同步和精确极其重要。
中国气象局统一授时系统的授时范围包括中国气象骨干网络和全国宽带通信网络。只要网络可达,就可以接受中国气象局统一授时服务的授时。(网络设备、服务器、应用、安防设备等)
1 NTP协议介绍
1.1 NTP协议
RFC(Request For Comments)1305定义了时间同步协议NTP(Network Time Protocol,网络时间协议),此协议用于在客户端和时间同步服务器之间进行时间同步。NTP使用很小的通信带宽和资源开销。NTP使用的协议为UDP,端口号为123。NTP数据包的净长度为72个字节(V4);在IP层分别为84个字节(V4)。
NTP协议使用了比较复杂的算法,以达到高度精准性的目的,但是在实际很多应用中,秒级的精确度就足够了,在这种背景下,产生了SNTP(Simple Network Time Protocol)协议,即简单网络时间协议。SNTP协议简化原来的访问控制以及服务器迁移等方面的内容,在保证时间精确度的前提下,SNTP保持了与NTP协议具有互操作性(兼容性)。
1.2 NTP工作过程和方式
1.2.1 NTP的工作过程
NTP在客户机与服务器之间进行通信。每次通信过程共计发送两个数据包。首先客户机会向服务器发送一个数据包提出通信请求,当服务器接收到请求数据包后,回送一个数据包作为应答。时间戳被写入两个数据包。NTP根据时间戳来确定时间差和网络延迟,完成校准。
1.2.2 ntp基本原理
时钟同步工作过程:
1) Device A(客户端)发送一个NTP报文给Device B(服务器),该报文带有时间戳,记录它离开客户端时的时间,该时间戳的记录为10:00:00am(T1)。
2) NTP报文到达服务器,服务器加上自己记录的时间戳,该时间戳的记录为11:00:01am(T2)。
3) NTP报文离开服务器,服务器将加上自己记录的时间戳,该时间戳的记录为11:00:02am(T3)。
4) 当客户端接收到该回应报文时,客户端的本地时间的记录为10:00:03am(T4)。
至此,客户端就拥有了足够的数据来计算出两个参数:
NTP报文的往返时延Delay=(T4-T1)-(T3-T2)。
客户端相对服务器的时间差offset=((T2-T1)+(T3-T4))/2。
这样,客户端就能够使用这些信息调整自己的时钟,达到与服务器时钟同步。
1.2.3 NTP工作方式
1) 客户机和服务器点对点方式。
2) 服务器对多个客户机的广播/多播方式。点对点方式,精度较高;广播/多播方式下,精度相对较低。
2 中国气象局统一授时服务(全国气象宽带网NTP系统)
2.1 国家级授时系统建设
国家气象信息中心在国家级配置了2台硬件时钟服务器,作为整个中国气象局网络统一授时系统的主时钟源,在中国气象局骨干网络上部署2台NTP服务器为局大院直属单位提供授时服务。宽带网DMZ去部署了2台NTP服务器为全国气象宽带网络提供授时服务。
国家级时间服务器(GPS、北斗)是硬件时间授时服务器,每个以太网授时端口都是一个独立的单片机,相互独立,每个单片机间没有任何通信。运行稳定,无硬盘和电扇,无故障时间长。
2.2 省级授时系统建设
各省级系统也分别配置了2台时钟服务器,分别部署在各省宽带网DMZ区一台;各省级局域网一台。各省宽带网DMZ区时钟服务器通过全国气象宽带网络系统直接与国家级宽带网DMZ去时钟服务器校时。该服务器授时对象为升级DMZ区的网络设备和服务器授时,另外为部署在省内网的NTP服务器校时;省局域网内部的NTP服务器为为本省局域网络内应用系统和地市级及县级应用系统提供时间同步服务。
3 NTP服务器相关配置
3.1 编辑 /etc/ntp.conf 文件
使用restrict这个参数来设定权限,语法为:
Restrict IP 子网掩码 参数
其中的IP可以是IP地址或者是default,default是指所有IP
参数有下面几个:
ignore:关闭所有NTP的联机服务。
nomodify:客户端可通过服务器进行网络校时。
notrust:不信任的客户端子网。
notrap:关闭trap远程登陆功能。
noquery:关闭客户端时间查询功能。
注意:如果没有设定参数,那就表示没有限制任何IP或者子网。
Server:设定上级时间服务器的IP地址或者域名,如果在该参数的后面加上 prefer,表示NTP服务器以该部主机的时间为主进行校准。
Driftfile:由于ntp server本身的时间是依据bios芯片震动周期频率计算的,与上层ntp server不完全一致,两者频率的误差记录在该文件中。数值单位为百万分之一秒。
ntp.conf文件举例:
restrict default ignore #关闭所有NTP的联机服务
restrict 127.0.0.1 # 开启本地网络接口
restrict default modify notrap #允许任何IP的客户机进行时间同步
restrict 10.10.10.2 #赋予某个server权限以访问ntp服务
restrict 192.168.0.0 mask 255.255.255.0 nomodify #允许某个网段的客户端可以进行校时。
server 10.10.10.2 prefer # 设定10.10.10.2为上级时间服务器
server 10.10.10.3 #设定10.10.10.3为上级时间参考服务器
peer 10.10.22.43 #同级时间服务器
driftfile /var/lib/ntp/drift #两者频率的误差,数值单位为百万分之一秒
logfile /var/log/ntpd.log
3.2 启动ntp服务
service ntpd start 开机启动服务
#chkconfig ntpd on
#/etc/init.d/ntpd start
#/etc/init.d/ntpd stop
#/etc/init.d/ntpd restart
4 用户端授时配置(linux、windows及linux时间相关)
4.1 linux时间同步客户端配置
方法1:linux用户端可以启动本机NTP服务来校准本机时间,(本机作为下一级NTP服务来为本机校准的系统和硬件时钟)
方法2:用户端也可以在命令行下键入命令来及时更新和校准时间
/usr/sbin/ntpdate ntp_serve //ntp_server 为所配时间服务器地址
方法3:启动crond定时作业来更新校准系统时间
Linux操作系统用户端可以启动crond定时作业来为本机更新校准时间:
[root@super root]# crontab -e
添加以下内容,每天在12:00更新时间:
0 12 * * */usr/sbin/ntpdate ntp_server//ntp_server 为所配时间服务器地址
可以根据具当地实际情况来确定什么时间校时以及校时的频率。
基本格式 :
* * * * * command
分时日月周命令
4.2 windows(wingdowsXP、windows2003)时间同步客户端配置
1) w32tm 进程已经启动(计算机管理—服务和应用程序)
2) 组策略:(计算机本地策略—计算机配置—Windows时间服务—时间提供程序)
3) 双击系统托盘右下方的时间,点击“更改时间和日期设置”,点击“Internet时间”选项卡,点击“更改设置”,在服务器栏目里选择系统自带的服务器或输入时间服务器IP地址,点击“确定”保存配置。点击“立即更新”可以马上进行一次时间同步。
系统默认的自动时间同步的间隔是7天,我们可以修改注册表相应项的数值来缩短系统自动同步的时间间隔以提高时间同步精度。
在开始菜单的运行中输入“Regedit”,进入注册表编辑器,
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient –SpecialPollinterval,数值单位为秒。
Windows(windowsXP、windows2003)操作系统提供了命令行方式,手工更新校准系统时间和设置NTP服务。
Windows Time系统服务:
Net stop win32time
Net start win32time
w32tm [/? | /register | /unregister ])
register - 服务注册,并且将默认配置添加到注册表中。
unregister - 清除服务注册,并且将注册表中的配置删除。
参数用法:
w32tm /resync (操作系统将立刻到系统配置的时间服务器上校准时间)
w32tm –s (wingdows2000操作系统)
Net time /setsntp: NT服务器ip地址或域名
参考文献:
[1] 詹利群. 基于NTP时间同步技术在广西气象业务中的设计与实现[J].计算机系统应用,2010(35).
[2] 傅建明. 基于分组网络的时间同步技术的研究与实现[D].西南交通大学,2011.
[3] 贾平平. 基于NTP的网络对时系统设计与实现[J].气象与环境科学,2010(28).
[4] 朱岭. 基于NTP协议的局域网时间同步方案[J].池州学院学报,2008(12).
[5] 杨先杰. NTP协议的研究与应用[J].电力信息化,2011(45).
[6] 夏建磊. Linux的NTP服务在数字化校园系统中的应用[J].硅谷,2014(62).