利用NTP实现 系统的全网时钟同步
一. 引言
网管系统时钟的同步对于网管系统至关重要,关系到网管数据的采集,故障的分析,计费的准确及业务的统计,对于全网全程分析更有着重要意义。网管中某些系统的全网认证协议,如win2000环境下的Kerberos V5认证,必须要求全网设备时钟同步。
目前网管系统的时间原则上需要和当地省会城市的117时间一致,维护人员需要靠手工逐一登陆各个系统终端,进行人工对准。在修改每个设备时钟时,从117报时到人工敲入字符造成一定时间延时,这种人为误差将导致各地市各网元之间误差更大,所以我们必须采用一种依靠计算机网络进行全网同步的方法,这样既节约了进行时间同步的成本,又大大降低了维护人员的工作量,提高人力资源效益。
由于操作系统的原因,以及各种网管应用对于频繁改动时间非常敏感,特别是当改动时间较大时,经常会导致数据库入库混乱,如果不采用一种自动同步机制,必然导致系统崩溃。
因此,我们认为网管系统的时钟同步必须依靠网络自动完成。
二. 网络时间协议
NTP是Network Time Protocol的缩写,即网络时间协议。由于目前各个操作系统主要使用NTPv3版本,我们主要介绍一下这一版本的特点。NTP协议可以实现大型分布式的IP网络的时钟对准和同步,并且可以适应不同的网络条件,既可以实现低速网络的各种数据设备时钟同步,又可以在Gbit高速网络的条件下完成全网设备同步。NTP协议提出了一种主、从时间服务器自组织结构,不仅可以采用设备系统时钟,而且可以按精度的需要,提供多种标准的时钟源(例如GPS时钟)。具有不同级别的时间服务器组成一个具有一定优先层次结构的服务器组,通过分析路由算法和时钟进程为整个网络提供时钟对准服务。
NTPv3版本相对于以往的NTP协议主要具有以下优点:为了提高时钟服务的准确性,NTPv3的客户端可以使用一种算法,综合与多个时钟服务器时钟误差修正自己的时钟;NTPv3的客户端还可以根据自己时钟与标准服务器的时钟误差来增大轮询时钟服务器时间间隔,从而减少对网络的负荷。
为了时钟服务器的稳定可靠提供服务,全网中一般需要提供两个以上的时钟服务器,但是考虑到各个数据设备与这些服务器在路由上有可能存在不同,并且各条路由所经过的网络的性能会影响时钟信息的传递,对于一个精确时钟系统来说,这种网络延时对时钟校准来说不可能被忽略不计,因此NTPv3为了能够提高时钟的准确性提出了改进算法,这一点具有重要意义。另外,由于客户端需要不断轮询时钟服务器,这对于带宽较窄的网络无疑需要一部分开销,因此,如何改进以减少对现网负荷也是NTPv3的一个重要优点。
1995年,D.Mills又提出了简单网络时间协议SNTP(Simple Network Time Protocol),这个协议是NTP协议的简化版本,适合于对时间精度要求不太高的网络的时钟校准。目前windows系统主要采用SNTP实现时钟对准。作为一种简化的网络时间协议,SNTP舍弃了NTPv3协议的很多优点,主要是以时钟的准确性为代价换取性能的提高,例如SNTP无法估计网络延时对时钟报的影响,一般来说SNTP可以实现毫秒级的同步,NTP则可以实现微秒级的同步。但是由于SNTP的包格式与NTP兼容,所以两者之间的互通没有任何问题。SNTP与NTP最大的区别在于SNTP不提供误差纠正以及复杂的过滤器系统。
基于以上描述,选择NTP还是SNTP主要是考虑应用对时钟同步的要求级别。对于网管系统来说,由于设备复杂,而SNTP又可以和NTP互相交换时钟信息,所以一般时钟服务器采用NTP协议,而客户端不仅可以采用NTP协议,而且也可以采用SNTP协议与服务器交互。
三. 现有设备对NTP的支持能力
按照话务网管现网设备的操作系统大致分为HP-UNIX,SUN SOLARIS,WIN2000系列,WIN98,CISCO IOS系列等。
1. HP-UNIX
HP-UNIX支持NTPv3的服务,可以开启NTP服务,并且各个终端也可以同步NTP server,NTPv3支持多个时钟源,也就是说,各个客户端可以同时连接多个服务端,不仅可以抗单点故障,而且通过NTP协议客户端增强了对时钟校准的能力,提高时钟的准确性。
配置server端主要步骤如下(本文档举例server端IP为192.168.1.1):
a) 选择时钟源,主要是选择是无线时钟,还是internet时钟,以及系统内时钟,无线时钟最为精确。由于话务网管与外网隔离,考虑到成本和实用性,话务网管使用系统内部时钟做为时间源即可。
b) 编辑/etc/ntp.conf,按时钟源设置服务。
常用语句解释
driftfile /etc/ntp.drift 设置记录本地时钟漂移的文件名, 不存在的话,运行可能报错,需要手工添加一个空文件
broadcast 网段地址 设置广播NTP时间,如:192.168.1.0
server 127.127.1.1 这是个伪地址,专指本地时钟作为时间源,该地址为server端回环地址,不是指网卡的地址
fudge 127.127.1.1 stratum 10 设置时钟级别为10级,该地址也是指server端回环地址,不是指网卡地址
c) 修改/etc/rc.config.d/netdaemons,以配置xntpd进程在每次系统启动时自动执行
export NTPDATE_SERVER=
export XNTPD=1设置为1意思是机器重启后自动启动ntp服务
export XNTPD_ARGS=
d) 设置系统时区,编辑/etc/TIMEZONE
e) 运行启动 /sbin/init.d/xntpd 这个过程大约6分钟
f) 运行ntpq –p查看运行状态
HP-UNIX配置客户端的方法和server端非常类似,主要步骤如下:
a) 修改/etc/rc.config.d/netdaemons
export NTPDATE_SERVER=
export XNTPD=1
export XNTPD_ARGS=
b) 设置系统时区,编辑/etc/TIMEZONE
c) 编辑/etc/ntp.conf
driftfile /etc/ntp.drift 设置记录本地时钟漂移的文件名, 不存在的话,运行可能报错,需要手工添加一个空文件
server 192.168.1.1 设置server端为时间源,该地址为server端的网卡地址
fudge 192.168.1.1 stratum 10 设置时钟级别为10级,该地址为server端的网卡地址
d) 运行启动 /sbin/init.d/xntpd ,这个同步过程大约也要6分钟
e) 运行ntpq –p查看运行状态
我们在江苏话务网管系统的ALCATEL交换网管ISMC系统60多台HP-UNIX系统上采用上述方法实现了时钟同步从表一看出,采用NTP同步后,各设备间时钟相差小于1秒钟,采用NTP协议,时钟精度较好,能够完成的时间跨度较大,可以纠正跨年的时间误差。
2.SUN Solaris操作系统
SUN Solaris操作系统是网管中常用的操作系统,由于Solaris系统与Hp-unix非常相象,Solaris也同样支持NTPv3服务,并且操作设置也基本相同。唯一不同的就是Solaris系统的ntp.conf文件放置在/etc/inet/下。
但是,必须特别指出的是,如果将Solaris部分版本系统时钟往后进行较大时间跨度的调整,会造成系统的dtwm,dtfile进程占用过多的系统资源,导致一些低档配置的系统暂时无法使用,并报错:"Warning:selected failed;error code 22 ” 。特别是多用户或者图形界面时,尤其小心。
3.Windows2000/98/NT操作系统
Windows系统基本上都是使用SNTP协议,所以作为全网来说采用windows系统做为时钟服务器,不仅从安全上,还是对时钟的准确性来说,都不是很好的选择。由于SNTP协议可以和NTP协议互通,我们一般把WINDOWS系统作为客户端来用。
Windows系统不能同时和多个NTP server通信,所以Windows系统在配置成客户端时无法实现多个server指向。
一般比较常用的命令为:
net start w32time(必须启动此服务,net time才能起作用)
Net time /setsntp[:ntp server list]
Ntp server list只能唯一指定一个时钟server的地址,既可以是NTP SERVER,也可以是由w32time开启的SNTP SERVER。
经过测试采用net time同步NTP,误差小于1s。
4.Cisco IOS操作系统
网管中,由于数据设备操作系统设置不是非常方便,因此建议路由器等数据设备设置应该被设置为NTP client端。
由于现有移动网管中使用的数据设备基本上是CISCO设备,我们在这里主要研究CISCO设备的配置命令。其实步骤上和UNIX系统基本相同,主要是设置时区,开启NTP client进程。
下面是一个现网设备配置的例子:
User Access Verification
Password: xxxxxx
router_sqmsc2>en
Password: xxxxxx
router_sqmsc2#conf term
Enter configuration commands, one per line. End with CNTL/Z.
router_sqmsc2(config)#ntp server 10.39.172.35
router_sqmsc2(config)#clock timezone eat +8
router_sqmsc2(config)#exit
router_sqmsc2#show clock
14:37:37.084 eat Mon May 26 2003
router_sqmsc2#exit
经过测试,我们发现路由器在不到5分钟的时间内即可以和NTP server同步,误差小于1秒钟。
四. 全网时钟同步方案
省级话务网管的网络结构大致
五.