ptp精准时间协议_网络时钟同步协议– NTP, PTP – 默默的点滴

本文介绍了NTP和PTP两种网络时钟同步协议,并提供了在CentOS6.5环境下搭建NTP服务和PTP服务的详细步骤,包括配置文件修改、服务启动和验证时钟同步效果。通过实验,时钟偏移平均值达到了5微秒,满足高精度需求。
摘要由CSDN通过智能技术生成

这篇文章介绍一下两个时钟同步的网络协议:NTP和PTP。

这里不涉及协议的原理和具体实现(想了解的可自行Google),重点是如何搭建起这两个服务。

1. NTP及PTP简介

NTP(Network Time Protocol)是用于不同计算机之间同步时钟的网络协议。

它的设计目标是使所有的互连的机器之间的时钟与UTC时间只相差若干毫秒。

目前NTP协议已经是有第4版了,如果不需要了解NTP太多细节的话,看看这个wiki页面应该就足够了。需要注意的就是它有clock strata的概念。

PTP(Precision Time Protocol)看名字就知道是一个比NTP更精确的时钟同步协议了,PTP的设计目标是使机器之间的时钟偏差在sub-microsecond范围—这是wiki页面上提到的,有其他的地方说的是偏差若干微秒,本文搭建的环境中测量到的偏差也在微秒级别,没有到sub-microsecond级别。在使用PTP协议时,需要了解的主要概念点就是它的master/slave机制。

接下来我们就介绍我搭建NTP和PTP环境的过程,所用到的操作系统是CentOS6.5,内核版本是3.10。其他软件的版本会在用到时提及。

2. 搭建NTP服务

配置环境:两台服务器,一台做NTP服务器,一台做NTP的客户端。同时这两台机器都未联网。

NTP服务器地址:192.168.0.11

NTP客户端地址:192.168.0.22

A. 在192.168.0.11中启动NTP服务

Shell

$ service iptables stop // 首先把防火墙关了

$ yum list |grep ntp // 看下yum源中是否有ntp软件

$ yum install -y ntp

$ ntpd --version

ntpd 4.2.6p5

$ vim /etc/ntp.conf // 修改配置文件

restrict 192.168.0.11 mask 255.255.255.0 nomodify nostrap // 限制作为局域网NTP服务器

// 下面两句很关键。含义是如果这台NTP服务器的server地址无法访问,

// 则将本地时间作为NTP服务时间,这个IP地址也是固定的,不要修改

server 127.127.1.0

fudge 127.127.1.0 stratum 10

$ ntpd -p /var/run/ntpd.pid // 启动ntpd

$ service ntpd start // 第二种启动ntpd服务的方法

// 等待5分钟

$ ntpstat // 从这条命令应该能看到NTP时钟同步好了,正常的显示结果应该与下面类似

synchronised to local net at stratum 11

time correct to within 11 ms

polling server every 64 s

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

$serviceiptablesstop//首先把防火墙关了

$yumlist|grepntp//看下yum源中是否有ntp软件

$yuminstall-yntp

$ntpd--version

ntpd4.2.6p5

$vim/etc/ntp.conf//修改配置文件

restrict192.168.0.11mask255.255.255.0nomodifynostrap//限制作为局域网NTP服务器

//下面两句很关键。含义是如果这台NTP服务器的server地址无法访问,

//则将本地时间作为NTP服务时间,这个IP地址也是固定的,不要修改

server127.127.1.0

fudge127.127.1.0stratum10

$ntpd-p/var/run/ntpd.pid//启动ntpd

$servicentpdstart//第二种启动ntpd服务的方法

//等待5分钟

$ntpstat//从这条命令应该能看到NTP时钟同步好了,正常的显示结果应该与下面类似

synchronisedtolocalnetatstratum11

timecorrecttowithin11ms

pollingserverevery64s

B. 在192.168.0.22上启动NTP服务,选择192.168.0.11为NTP服务器

Shell

$ service iptables stop

$ yum install -y ntp

$ vim /etc/ntp.conf // 添加下面这个server地址,把其他的都注释掉

server 192.168.0.11

$ service ntpd start

$ netstat // 等待若干时间应该就能够显示同步成功了

1

2

3

4

5

6

$serviceiptablesstop

$yuminstall-yntp

$vim/etc/ntp.conf//添加下面这个server地址,把其他的都注释掉

server192.168.0.11

$servicentpdstart

$netstat//等待若干时间应该就能够显示同步成功了

我的这两台实验机器是在同一个Rack的,结果显示差不多同步的偏差在30ms左右。

每个版本的ntpd配置文件可能有少许的差别,不过好在注释都做的不错,所以别的细节就不啰嗦了。

3. 搭建PTP服务

从List of PTP implementations可以看到PTP的实现有很多很多种,可以是硬件实现的,可以是软件实现的也可以是软硬件结合实现的。本文中搭建的PTP服务是基于软件PTPd。如果没有特殊的硬件的话,这算是一种非常方便的方法了。

Shell

$ service iptables stop // 关掉防火墙

$ yum list |grep ptp // 检查yum源

$ yum install -y ptpd

$ ptpd2 --version

ptpd2 version 2.3.0

// 弄一个管理脚本,从serverfault找来的 :)

// http://serverfault.com/questions/329127/ptp-time-synchronization-on-centos6-rhel

$ vim ptpd.sh // 将PTPADRGS 改为 PTPD_EXTRA_OPTIONS

$ chmod +x ptpd.sh

$ vim /etc/ptpd2.conf // 修改配置文件

ptpengine:preset=masterslave // 对于master主机,不要选masteronly,具体原因请查看help

ptpengine:preset=slaveonly // 对于slave主机

// 其他选项也可以根据需要进行调整,比如log是否开启,是否绑定CPU。这些看配置文件的注释就好了

$ vim /etc/sysconfig/ptpd2 // 修改启动命令,主要就是指定PTPD的配置文件

PTPD_EXTRA_OPTIONS="-c /etc/ptpd2.conf"

// 现在就可以使用下面三个命令来启动,查看和关闭ptpd服务了

$ ./ptpd.sh start

$ ./ptpd.sh status

$ ./ptpd.sh stop

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

$serviceiptablesstop//关掉防火墙

$yumlist|grepptp//检查yum源

$yuminstall-yptpd

$ptpd2--version

ptpd2version2.3.0

//弄一个管理脚本,从serverfault找来的:)

//http://serverfault.com/questions/329127/ptp-time-synchronization-on-centos6-rhel

$vimptpd.sh//将PTPADRGS改为PTPD_EXTRA_OPTIONS

$chmod+xptpd.sh

$vim/etc/ptpd2.conf//修改配置文件

ptpengine:preset=masterslave//对于master主机,不要选masteronly,具体原因请查看help

ptpengine:preset=slaveonly//对于slave主机

//其他选项也可以根据需要进行调整,比如log是否开启,是否绑定CPU。这些看配置文件的注释就好了

$vim/etc/sysconfig/ptpd2//修改启动命令,主要就是指定PTPD的配置文件

PTPD_EXTRA_OPTIONS="-c /etc/ptpd2.conf"

//现在就可以使用下面三个命令来启动,查看和关闭ptpd服务了

$./ptpd.shstart

$./ptpd.shstatus

$./ptpd.shstop

如果遇到任何问题,首先一定要看看help,使用-H选项的话还能看到非常详细的配置(虽然大多我可看不懂,不过不能不看,理解的越多,遇到的问题就会越少)。

如果log里面的信息看不懂,可以把代码下下来,一个grep搞定。

经测试,在我的机器上使用PTPD软件搭建的服务,时钟偏移的平均值能够达到5us左右。这个粒度基本能满足我们的需求了。

参考链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值