欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > 时间同步--- ntp与ptp

时间同步--- ntp与ptp

2024/11/30 10:55:04 来源:https://blog.csdn.net/zhangxiaio1/article/details/137338647  浏览:    关键词:时间同步--- ntp与ptp

时间同步

1. 什么是NTP时间?什么是PTP时间?

NTP时间(Network Time Protocol 时间): NTP即网络时间协议(Network Time Protocol),它是一种用于同步计算机时间的网络协议。NTP可以将所有参与的计算机时间同步到协调世界时(UTC),从而确保系统之间的时间一致性。NTP使用分层、分散的方式,通过一系列时间服务器进行时间同步,允许客户端和服务器之间进行通信以协调时间。NTP可以精确到毫秒级别,且非常适用于大规模分布式系统。

PTP时间(Precision Time Protocol 时间): PTP即精确时间协议(Precision Time Protocol),定义在IEEE 1588标准中,用于在局部网络中实现更高精度的时间同步。PTP比NTP提供了更高的同步精度,通常可以达到微秒甚至纳秒级别。PTP使用主-从架构,可以更精确地测量网络延迟,从而实现更高精度的时间同步。PTP常用于工业自动化、电信和其他对时间精度要求非常高的场合。

2. LINUX中如何使用这两种同步方式?

NTP:

在Linux中,可以使用ntpq命令来查询本机正在使用的NTP服务器。以下是查询本机NTP服务器的步骤:

打开终端,以超级用户或具有足够权限的用户身份登录。

运行以下命令来查询本机正在使用的NTP服务器:

ntpq -p

该命令将显示与本机正在同步的所有NTP服务器的相关信息,包括服务器的IP地址、偏移量、延迟等。在输出中,标有"*"号的服务器表示本机正在使用的主要(首选)NTP服务器。

如果没有安装ntpq命令,可以使用下面的命令安装:

sudo apt install ntp

请注意,某些系统可能需要ntp服务正在运行才能使用ntpq命令。你可以使用sudo systemctl status ntp命令来检查NTP服务的状态,并根据需要启动或重启该服务。

ntpq -p 命令详解

假设运行ntpq -p命令后的输出如下所示:

JSON
remote refid st t when poll reach delay offset jitter

*ntp1.example.com .GPS. 1 u 123 256 377 0.123 0.045 0.056
+ntp2.example.net .PPS. 2 u 256 512 377 0.056 0.023 0.035
-ntp3.example.org .ACTS. 2 u 512 1024 377 0.078 -0.012 0.041

这里是各列的含义:

remote:NTP服务器的域名或IP地址。

refid:参考ID,指示了NTP服务器的参考源。

st:Stratum,指示NTP服务器的层级(stratum),数字越小表示层级越低,通常层级为1表示直接从原子钟获取时间。

t:类型,指示NTP服务器的类型,如本地时钟(l),外部源(u),多播(m)等。

when:上次成功与NTP服务器同步的时间(单位:秒)。

poll:NTP客户端向NTP服务器发送同步请求的间隔时间(单位:秒)。

reach:NTP客户端成功与NTP服务器通信的次数。

delay:NTP客户端与NTP服务器之间的往返延迟(单位:毫秒)。

offset:NTP客户端与NTP服务器之间的时间偏移量(单位:毫秒),即客户端时钟相对于服务器时钟的差异。

jitter:NTP客户端与NTP服务器之间的时钟抖动(单位:毫秒),即时钟不稳定性的度量。

在输出中,标有"*“的行表示本机正在使用的主要(首选)NTP服务器,标有”+"的行表示其他可用的NTP服务器。

检查NTP服务状态

systemctl status ntp

如果NTP服务已经安装并运行,则会显示服务的状态信息,包括是否正在运行以及运行状态是否正常。

PTP

检查Linux环境中是否存在ptp服务:

systemctl status ptp4l 如果有,则会看到如下输出

JSON
● ptp4l.service - PTP4L - IEEE 1588 PTP daemon
Loaded: loaded (/lib/systemd/system/ptp4l.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2024-04-04 10:30:00 UTC; 1 day 3h ago
Docs: man:ptp4l(8)
Main PID: 1234 (ptp4l)
Tasks: 1 (limit: 1234)
Memory: 10.0M
CGroup: /system.slice/ptp4l.service
└─1234 /usr/sbin/ptp4l -m

Apr 04 10:30:00 hostname systemd[1]: Starting PTP4L - IEEE 1588 PTP daemon…
Apr 04 10:30:00 hostname systemd[1]: Started PTP4L - IEEE 1588 PTP daemon.

在Linux中部署PTP服务:

  1. 安装PTP软件包

Bash

sudo apt-get install linuxptp    # Ubuntu/Debian
sudo yum install linuxptp        # CentOS/RHEL
  1. 配置PTP

编辑 /etc/linuxptp/ptp4l.conf 文件以配置PTP。这个文件包含了PTP4l的配置选项。你可以根据你的需求修改这个文件。

  1. 启动PTP服务

Bash

sudo systemctl start ptp4l
  1. 设置开机自启动

Bash
sudo systemctl enable ptp4l

  1. 检查服务状态

Bash

sudo systemctl status ptp4l

如果PTP服务正在运行,你将会看到类似如下输出:

Plain Text
● ptp4l.service - PTP4L - IEEE 1588 PTP daemon
Loaded: loaded (/lib/systemd/system/ptp4l.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2024-04-04 10:30:00 UTC; 1 day 3h ago
Docs: man:ptp4l(8)
Main PID: 1234 (ptp4l)
Tasks: 1 (limit: 1234)
Memory: 10.0M
CGroup: /system.slice/ptp4l.service
└─1234 /usr/sbin/ptp4l -m

Apr 04 10:30:00 hostname systemd[1]: Starting PTP4L - IEEE 1588 PTP daemon…
Apr 04 10:30:00 hostname systemd[1]: Started PTP4L - IEEE 1588 PTP daemon.

这就完成了在Linux中部署PTP服务的过程。你可以根据需要对配置文件进行调整,以满足你的特定需求。

在linux环境下,如果没有上述命令执行失败,需要执行下面的命令

输入

cd /lib/systemd/system/

目录下是否有ptp4l.service或者ptp4l@.service

如果有ptp4l@.service,则需要使用这个命令在对用的网络接口上创建PTP同步服务:

sudo systemctl start ptp4l@eth0.service

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com