NTP from HP doc(2/3)

本文深入探讨NTP时钟同步原理,解析时钟服务器层级结构及其角色分配,并介绍了配置方法与最佳实践。

Advanced NTP Topics

http://docs.hp.com/en/B2355-90774/ch04s02.html?btnNext=next%A0%BB

时钟服务器的层次

time servers 组成一个时间同步网(synchronization subnet)

stratum层次,用以表明该time server距离time source的距离.值越小距离越近. 同义词是level 或者strata.

stratum-1是直接连接到外部时钟(gps,radio...).外部时钟本身是stratum-0.

stratum-2用stratum-1做为time source,而stratum-3用2做为源.最多可支持15层.

时钟服务器的角色

在同步网中,time server可以扮演不同的角色.甚至一个可以扮演多个角色.

server:在客户端请求时提供时间.各个strata的time server都可以担当该角色.

peer:在请求发生时候,从指定的time server获取时间并同时提供时间给那台服务器. 最适合用于stratum-1和2的time server.

client:从指定的服务器获取时间,但不提供时间给那台服务器. 从低级别的stratum服务器取得时间(比如本身级别是2,从1取得时间),虽然不回送时间,但仍然可以提供给其他client请求使用.(所以client角色非只获取时间的client,也提供,只不过不提供给他的source)

broadcast:提供时间给指定的host或者本地lan内广播时间.

broadcast client:监听和同步通过广播获得的时间(从上面broadcast中得到).

一个角色的例子:

4-3

1,Bonita和Gordo是两个stratum-1 time server,role是server.

2,Penelope和Golden是两个stratum-2的time server,Penelope是Bonita的Client角色,Golden是Gordo的Client. 而Penelope和Golden相互之间的关系是Peer. 同时, 对于其网络内的其他服务器,它们的角色是Broadcast.

3,Hugo是网络内的一台机器,其角色是Broadcast client,用于从Penelope和Golden中获取时间.

多时钟服务器的配置规划

每个NTP的总体架构中应该至少包含一个stratum-1的服务器.

在一个管理域中配置至少3个time server用于冗余.time server间关系应该是peer.

每个time server应该选择一个获3个外部的同步源.当然stratum要小于该time server.

每个外部源应该处于不同的管理域,并且你到该源的path不同(走不同的网关等).避免循环和单点故障.不要同步一个域中的时间服务器到同一个外部源.

在高级别和低级别time server间设立角色关系的时候,建立在高级别设置(其实都可以),因为高级别配置更改的概率更大.

 

使用配置文件配置NTP

1,配置和其他服务器间的关系

peer,server,broadcast host|address

broadcastclient=yes|no

还有几个其他选项

key加密

version 1 旧版本

perfer 多个源存在时优先选择的一个

 

每个节点必须或者server,或者broadcastlient这两者必取其一(其他角色看你需要),而stratum-1的必须是server,来源或者外部或者内部系统时钟.

当然,如果本地服务器只做为其他client的server的话,不需要任何配置,只需要其他client上配置server=该服务器地址.

2,配置外部时钟

127.127.t.u t代表时钟类型 而u代表单元编号(unit number). 有了u可以在一个host上接几个同样类型的外部时钟(多个instance)

xntpd支持如下时钟类型:

.Netclock/2 WWVB Synchronized Clock:

127.127.4.u, u 1~4, 需要建立设备 /dev/wwvb$u

.Local Synchronization Clock (pseudo clock)本地时钟(伪时钟)

用本地时钟做为源(系统时钟).地址为127.127.1.u,u:0~15.并且要指定stratum. 可以在一个隔绝的网络内使用,不连接到stratum-1.

 

2,配置driftfile

xntpd会计算本地服务器的时钟频率错误或者偏差(frequency error),并且可以存储到一个文件中,该文件称为driftfile,建议放到/etc/ntp.drift.在xntpd运行一日或多日后,该frequency error数值会偏于精确.当xntpd重启后,可以直接使用该drift数值以减少再次重新估算的时间消耗.--当然我们不建议xntpd重新启动了.

 

3,配置授权(authentication)

 

4,限制入口包(incoming package)

可以在ntp.conf中配置网络限制规则:

restrict address [mask mask] [ntpport] [flag] [flag2]...

其中flag可以为

ignore:忽略所有包

noquery:忽略ntpq请求

nomodify:忽略试图修改服务器状态的ntpq包

noserve:忽略时间请求,但是可以ntpq请求

nopeer:提供时间服务,但不组成peer关联关系

notrust:不使用指定的机器做为源

 

默认没有restric是指没有任何限制.

例子:

#default entry - matches *all* source addresses
restrict default notrust nomodify

#trust for time, but do not allow ntpq requests
restrict 193.100.0.0 mask 255.255.0.0 nomodify noquery

#ignore time requests, but allow ntpq requests
restrict 193.8.10.1 noserve

#local host address is unrestricted
restrict 193.100.100.7

 启动和停止xntpd

/sbin/init.d/xntpd start|stop

说过多次,略

 

ntpq查询xntpd的运行情况

标准的查询协议,可以用于查询ntp server的运行状况. 查询的message称为mode-6 control messages.

ntpq的时候,单位注意是毫秒ms(millisecond),不同于其他ntp的单位(常为s). ntpq也会列出peer的server情况.

ntpq常用于校验xntpd是否和其他time server连接成功,还有同步是否正常.

 

ntpq -p的output解释

remote      refid          st   t  when   poll  reach  delay   offset    disp
==================================================================
*GPS_HP(1)  GPS        0   l    48     64   377     0.00    0.516    4.19
hpps.cup.hp cupertino 3   u   467  1024  377     7.20   -12.430  15.67
+server2     WWVB      1   u   173    256  377   279.95   20.56    16.40
+node1      node3       2   u   131    256   373     9.89    16.28    23.25

remote:time server name,本地配置文件中指定的,再加上其他服务器上配置了peer角色的.名字前面有标识符:

*当前正在使用的源 只有一个,没有的话,说明xntpd连接有问题 或者 time server服务品质有问题.

#选择了使用,但距离太远了,超过了最大值限制.-用不了

o选择了使用,而且PPS信号正在使用(不懂)

+选择了使用,在最终候选列表中

x indicates that the host is the designated false ticker by the intersection algorithm.(不懂)

. 该主机位于候选者的尾端

- 该主机被拒绝因为cluster算法

blank(空白) 该主机被拒绝了因为stratum高或者状态不好(failed sanity checks)

 

refid:指出当前的服务器的源. WWVB是美国广播电台.

st(stratum):层次级别

t(type):类型

    l:local比如gps

    u:unicast(通用的类型)

    m:multicast

    b:broadcast

    -:netaddr(通常为0)

when:最后一次得到远程服务器响应后,过去的时间

poll:轮询的时间间隔.可以定义minpoll,以秒为单位.通常网络上512和1024(大约8和17分钟).外部时钟的必须<=64

reach:(reachability)表明多少次成功的到服务器尝试. 用bit值表示.比如001最近一次成功,357,中间的5表明有断开的一次,377都成功.(最大是777然后从头开始轮回?-->不是,最大就是377)

dealy:(round trip time)收到响应包的时间.-单位ms.

offset:(time difference) server时钟和client时钟的偏差.单位ms.如果超过128,则synchronization lost会出线在日志文件中.

disp:(dispersion)指明在两次offset取样中的差异. 这是对于错误边界(error-bound)的估算.该指标是time server的质量的最基本的度量指标.

 

试验:

1, server2

server server1

2,server3

server server2

 

server3刚启动xntpd后,

server3>ntpq -p

remote      refid          st   t  when   poll  reach  delay   offset    disp
==================================================================
server2     server1     5     u  58      64     1          0.00   -48.123  15875

 

过了64秒再次查询

server2    server1      5      u  56     64              0.00   0.402      7899.6(上面的一半)

 

过了很长时间

*server2    server1      5      u  56     64     377       0.00   1.402      0.47

 

然后修改server2的设置

server 127.127.1.1

fudge 127.127.1.1 stratum 5

然后重新启动server2的xntpd

查询server2

server2>ntpq -p

LOCAL(1)  LOCAL(1)     5     l  3      64     1          0.00   0.000  15885.0

...

LOCAL(1)  LOCAL(1)     5     l  31     64     17       0.00   0.000  1885

...

*LOCAL(1)  LOCAL(1)     5     l  31     64     377   0.00   0.000  10

server1>ntpq -p

*server2    server1      5      u  56     64     376       0.00   1.402      0.47

...

*server2    server1      5      u  56     64     374       0.00   1.402      0.47

...

server2    server1      5      u  56     64     360       0.00   1.402      16000

...

*server2    LOCAL(1)  5      u  56     64     377       0.00   1.101      0.18

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值