麒麟系统下基于卫星的NTP网络授时服务器方案
1、 麒麟系统NTP授时方案
设计思路:
在通用的麒麟服务器内部固定一块北斗卫星接收模块并引出卫星天线接口,卫星模块接收北斗卫星数据并解码输出时间数据(NMEA0183串口数据),并将时间数据输入到系统主板的串口上;麒麟系统串口接收时间数据解码时间信息并同步麒麟系统时间,确保麒麟系统的时间与准确。为了实现麒麟系统的NTP授时服务,需要在系统内运行NTPD授时程序。
重点:
(1)内置北斗卫星接收模块;
(2)串口输入到麒麟操作系统
(3)麒麟操作系统的时间同步
(4)麒麟系统的NTP授时服务
2、网络拓扑图
在中心机房配置1台麒麟系统NTP服务器,麒麟NTP服务器直接获取北斗卫星时间数据实现本地系统的时间同步,通过NTP网络时间同步协议对外提供授时服务。系统内的办公设备、堡垒机、防火墙、虚拟化集群、容灾备份系统、存储服务器及其他终端设备通过NTP时间协议同步到麒麟NTP服务器。麒麟NTP服务器和北斗卫星直接同步,这就保证了整个系统的时间准确、稳定和可靠性。
在实际的项目使用中,推荐使用2台或3台NTP服务器,在NTP客户端配置多个NTP服务器IP地址,NTP实时访问各个NTP服务器,通过内部时间同步算法自动切换时间基准,任何一台NTP服务器故障不影响NTP客户端的时间同步,这种做法可以规避单点故障。
3、网络时间同步策略
NTP C/S授时原理
网络时延:
delay=(T4-T2)+(T3-T1)
客户端计算机时间偏差:
offset = ((T3-T1)-(T4-T2) )/2
客户机修正时间为T+offset
(Device A为客户端,Device B为NTP服务器)
Device A发送一个NTP报文给Device B,该报文带有它离开Device A时的时间戳,该时间戳为10:00:00am(T1)。
当此NTP报文到达Device B时,Device B加上自己的时间戳,该时间戳为11:00:01am(T2)。
当此NTP报文离开Device B时,Device B再加上自己的时间戳,该时间戳为11:00:02am(T3)。
当Device A接收到该响应报文时,Device A的本地时间为10:00:03am(T4)。
至此,Device A已经拥有足够的信息来计算两个重要的参数:
NTP报文的往返时延Delay=(T4-T1)-(T3-T2)=2秒。
Device A相对Device B的时间差offset=((T2-T1)+(T3-T4))/2=1小时。
4、客户端配置
大部分服务器在出厂时都安装了NTP协议,在NTP实施时只需将NTP源指向现有NTP服务即可。
AIX、Solaris、HP-UNIX等UNIX 和Linux系统使用系统自带的NTP服务。在原有配置文件(/etc/ntp.conf),增加如下语句,重新启动NTP进程即可。
server 主时钟IP minpoll 4 maxpoll 4 prefer
server 备时钟IP minpoll 4 maxpoll 4
server 备时钟IP minpoll 4 maxpoll 4
tinker step 0 #linux使用
其中, Linux使用tinker step 0配置缓慢调整,Aix使用slewalways yes配置缓慢调整,缓慢调整可规避闰秒时间调整对系统产生的影响。
备注:麒麟系统需包含串口的相关驱动程序!