Linux:NTP校时、PTP校时

目录

  • 前言
  • 一、NTP校时
    • 1、简介
    • [2、ubuntu使用 NTP](#2、ubuntu使用 NTP)
    • [3、嵌入式设备使用 NTP 校时](#3、嵌入式设备使用 NTP 校时)
    • [4、NTP 服务器的校时精度](#4、NTP 服务器的校时精度)
  • 二、PTP校时
    • 1、简介
    • [2、ubuntu使用 PTP](#2、ubuntu使用 PTP)
    • [3、嵌入式设备使用 PTP 校时](#3、嵌入式设备使用 PTP 校时)
  • [三、PTP 校时和 NTP 校时那个精度高一些](#三、PTP 校时和 NTP 校时那个精度高一些)

前言

在进行网络协议通信时,我们有时候需要计算通信的延迟。一般的方式就是:A端获取本地时间信息并将其填充到网络数据包中进行发送,B端收到数据包后进行解析获取到A发来的时间,然后B获取本地时间进行运算,网络延迟 = B端本地时间 - A端本地时间。

一、NTP校时

1、简介

NTP(Network Time Protocol)是一种用于同步计算机时间的协议。它能够确保计算机时钟与全球统一的时间标准保持同步。

NTP使用一组分层的时间服务器来提供准确的时间参考。顶层的时间服务器会从原子钟或其他高精度时间源获取时间,并将它们传播到更低层的服务器。计算机可以连接到这些时间服务器,通过网络同步其本地时钟。

在使用NTP时,计算机可以扮演两种角色:NTP服务器和NTP客户端。

  • NTP服务器:它是一个拥有准确时间的计算机,可以提供时间服务给其他计算机。NTP服务器的时钟通常与原子钟或其他高精度时间源同步。

  • NTP客户端:它是需要同步时间的计算机,通过与NTP服务器通信来获取时间。NTP客户端的时钟会根据服务器提供的时间进行调整。

要使用NTP,首先需要连接到一个可靠的NTP服务器。你可以选择使用自己搭建的NTP服务器,也可以连接到公共的NTP服务器。一些常用的公共NTP服务器请点击:国内外常用公共NTP网络时间同步服务器地址

在Linux系统中,可以使用ntpdate命令手动同步时间,或者安装并配置NTP软件来自动同步时间。通过配置NTP服务器地址,你的计算机将自动定期与指定的服务器进行时间同步。

总之,NTP是一种用于同步计算机时间的协议,在Linux系统上可以使用ntpdate命令或配置NTP服务器来实现时间同步。

2、ubuntu使用 NTP

在Ubuntu系统中进行NTP校时,可以按照以下步骤进行操作:

  1. 打开终端,使用root权限或sudo命令切换到超级用户。

  2. 安装NTP服务:

    sudo apt-get install ntp
    sudo apt install ntpdate
    
  3. 配置NTP服务器,打开NTP配置文件ntp.conf:

    sudo vi /etc/ntp.conf
    

在文件中找到pool行,将其注释掉或删除。添加以下行来配置NTP服务器,可以使用公共的NTP服务器,例如ntp.aliyun.com、ntp.ubuntu.com等、也可以使用其他可靠的NTP服务器,根据您的地理位置或需求进行选择。

pool ntp.aliyun.com
html 复制代码
ubuntu配置文件中的pool命令:可以用于设置NTP服务器的池地址。

	在网络时间协议(NTP)中,池(Pool)是由一组服务器组成的群集,它们共同提供NTP服务以
帮助网络中的计算机同步时间。因此,池地址指向的实际上是一组服务器,而不是单个服务器。

	池的目的是提供高可靠性和可扩展性的NTP服务。对于需要高度可靠性和可用性的应用程序(如
金融交易),使用池地址可以确保在某些服务器无法使用或无法访问时,计算机仍然可以从其他可用
的服务器同步时间。池还可以根据使用情况来自动调整服务器列表,以确保更好的服务质量。

	通常,池地址由一个或多个DNS记录表示,这些DNS记录指向由多个实际服务器构成的池。当计
算机需要同步时间时,它将向DNS服务器查询池地址,并从池中返回最近的可用服务器进行时间同步。
这种方法可以确保计算机可以随时从可用服务器进行时间同步。

	总之,池地址指向的是NTP服务器池,它由多个服务器组成,可提供高度可靠的NTP服务,以帮助
计算机同步时间。
  1. 保存并关闭文件。

  2. 重新启动NTP服务,然后查看运行状态:

    sudo systemctl restart ntp
    sudo systemctl status ntp
    

6.查看对比校时前后的时间,验证NTP校时:

也使用ntpdate命令来手动进行NTP校时并检查同步情况:

sudo ntpdate -q ntp.aliyun.com

如果ntpdate命令返回输出中的offset为0,表示成功进行了校时。

  1. 设置NTP服务开机启动:

    sudo systemctl enable ntp
    

通过以上步骤,Ubuntu系统将会使用指定的NTP服务器进行自动校时和同步。请确保您的计算机有稳定的网络连接以获得准确的时间信息。

Ubuntu系统中进行NTP校时,可以按照以下步骤进行操作:Ubuntu18.04 NTP 时间校准同步

3、嵌入式设备使用 NTP 校时

BusyBox是一个由独立的、小型的UNIX实用工具程序集合组成的软件。它通常在嵌入式Linux系统中使用,以提供一些基本的UNIX命令和功能。BusyBox主要用于在资源受限的环境(如路由器、嵌入式设备等)中提供一个功能齐全的用户环境。

BusyBox工具集包含了几乎所有的UNIX核心功能,包括文件、Shell、计算机网络和系统管理等。其内的ntpd命令就可用于进行NTP校时,并且支持了NTP服务功能。如果使用gcc交叉编译,则生成的busybox工具也可用于PCubuntu系统。

BusyBox编译出来后内部包含了一个ntpd工具,使用该工具就可以进行ntpd校时;编译该工具可能会遇到的环境问题:busybox编译 fatal error: curses.h: 没有那个文件或目录解决办法

顺便给大家找了几篇他人写的教程,小白可以看下,老鸟就不需要了:

html 复制代码
https://blog.csdn.net/weixin_44773416/article/details/127389567

https://blog.csdn.net/npy_lp/article/details/6989669/

https://blog.csdn.net/qwqwqw1232/article/details/121164554

https://blog.csdn.net/MashiMaroJ/article/details/126308085



也可以./busybox ntpd -p ntp.aliyun.com这样执行,如此ntpd将会作为一个后台程序不断与ntp服务器通信进行校时;

也可以设备作为ntp服务器,命令如下: ./busybox ntpd -l -I 网卡名,然后客户端执行./busybox ntpd -p 服务器ip

4、NTP 服务器的校时精度

NTP(Network Time Protocol)是一种用于同步计算机系统时钟的协议。NTP校时的精度取决于许多因素,包括网络延迟、硬件设备的精度以及所使用的NTP服务器的质量。在Ideally(完美地)情况下,NTP可以提供非常高精度的时间同步,通常在毫秒或微秒级别。

NTP的时间同步级别可以分为以下几个级别:

  1. Stratum 0: 系统中使用原子钟或GPS设备等硬件设备作为时间源的计算机,被认为是Stratum 0级别。这些设备提供最高级别的精度。
  2. Stratum 1: Stratum 1是指直接与Stratum 0设备同步的计算机。这些计算机通常是使用专门的NTP服务器或GPS接收器,提供非常高精度的时间同步。
  3. Stratum 2: Stratum 2是指与Stratum 1设备同步的计算机。这些计算机通过网络与Stratum 1服务器进行时间同步,提供较高的精度。
  4. Stratum 3: Stratum 3是指与Stratum 2设备同步的计算机。这些计算机通常是通过网络与Stratum 2服务器同步时间,提供相对较低的精度。

在实际应用中,大多数计算机使用Stratum 2或更高级别的时间源进行NTP校时。根据网络延迟和设备精度的不同,NTP可以提供从毫秒级到微秒级的时间同步精度。需要注意的是,真正达到微秒级别的精度需要严格控制网络延迟、使用高精度的硬件设备,并使用可靠的Stratum 1或Stratum 2时间源。

二、PTP校时

1、简介

Linux PTP是Linux平台下用于高精度时间同步的协议,全称为Linux Precision Time Protocol,其实现了IEEE 1588 v2 协议。借助硬件时钟(需要硬件支持),Linux PTP可提供纳秒级别的时间同步服务,其主要适用于系统间的高精度时间同步,比如延迟敏感时序系统以及实时数据或语音系统。

xml 复制代码
PTP(Precision Time Protocol)校时通常需要硬件支持。PTP 是一种专门用于网络时钟同步的
协议,可以实现高精度的时钟同步。

硬件上的支持可以包括以下方面:

1. 硬件时钟:PTP 需要硬件设备提供一个可靠和准确的时钟源,用于产生时间戳和参考时间。硬件
时钟通常是一种稳定的晶体振荡器或原子钟。

2. 硬件时间戳:PTP 数据包需要在网络设备上进行时间戳标记,以便在传输过程中精确测量延迟。
一些网络设备(例如交换机、网卡)具备硬件时间戳功能,可以在硬件级别上执行时间戳操作,提
供更准确和一致的时间戳。

3. 支持 PTP 协议的网络设备:PTP 需要网络设备能够处理并传递 PTP 数据包,以实现时钟同步。
因此,网络设备如交换机、路由器和网卡需要支持 PTP 协议,并具备处理 PTP 数据包的能力。

综上所述,PTP 校时通常需要一些硬件上的特殊支持,包括稳定的硬件时钟、硬件时间戳功能和支持 
PTP 协议的网络设备,以保证高精度的时钟同步。

Linux PTP是开源软件,是Linux内核的一部分,并且自内核版本3.0开始被完整支持。Linux PTP 不仅支持Master-Slave模式,还支持Boundary-Clock模式和Transparent-Clock`模式。

Linux PTP基于IEEE 1588 v2协议实现,该协议是跨平台的高精度时间同步协议,可支持Nano秒级别的同步精度。协议的核心思想是 Master 时钟 向 Slave 时钟发送Sync报文,通过计算往返时间算出偏差,再向Slave时钟发送Delay_Req报文,最终实现时间同步。除此之外,还支持Boundary-Clock模式和Transparent-Clock模式。IEEE 1588 v2协议支持多路时钟同步,且同步精度远高于SNTP/NTP协议。

Linux PTP的程序架构如下:其中PTP4LLinux PTP的主要组件,提供P2PBoundary-ClockTransparent-Clock等模式的实现。Phc2sys则是Linux PTP的辅助程序,是软件时钟和硬件时钟之间的桥梁。Phc2sys会根据PTP4L发送的时间戳进行计算,实现时间同步。

Boundary-Clock(边界时钟)模式Transparent-Clock(透明时钟)模式是在网络中使用PTP(Precision Time Protocol)协议进行时钟同步时的两种不同角色。

Boundary-Clock(边界时钟)模式:边界时钟是一种网络设备,通常是交换机或路由器,它作为 PTP 网络的边界节点,连接多个时钟域。它在每个时钟域之间进行时间协调,并将 UTC(协调世界时)或 PTP 主时钟信息分发给其他从时钟。

边界时钟模式主要用于连接更大、更复杂的网络环境,它可以为整个网络提供准确的主时钟,并充当时钟协调者。边界时钟会收集其他时钟源的信息并与自己的本地时钟同步,同时也将同步信息传递给其他时钟设备,确保整个网络具有一致的时间参考。

Transparent-Clock(透明时钟)模式:透明时钟是一种网络设备,也可以是交换机或路由器,它位于 PTP 网络中的中间节点。透明时钟在数据传输过程中,会记录 PTP 数据包的到达和离开时间,并通过时间戳来计算传输延迟,然后在数据包中透明地插入这些信息。这样,透明时钟可以校正传输延迟,保持时钟同步性。

透明时钟模式主要用于比较复杂的网络环境,其中有许多中间设备和传输链路。它不会干预整个网络的时间同步,而是透明地记录和处理传输延迟,确保网络中的时钟同步性。透明时钟可以提供比边界时钟更精确的时间同步,因为它可以根据路径中的实际延迟来对时间进行校正。

边界时钟 和 透明时钟模式通常一起使用,以构建一个高精度的时间同步网络。边界时钟用于提供时间参考和协调,而透明时钟则用于记录和校正传输延迟,确保时钟同步性。它们共同工作,使整个网络具有一致和准确的时间参考。

Linux PTP主要应用在网络中的时序同步,是许多高精度时序系统的基础。其中应用广泛的场景包括:

c 复制代码
1)实时音视频传输系统:保证严格的同步要求,防止声音和图像的不同步。
2)金融交易系统:防止环境因素对交易数据造成干扰。
3)工控系统:同步系统时序,保持设备状态的一致性。
4)计算集群:同步计算节点时序,确保节点之间的同步。

2、ubuntu使用 PTP

网上看了一篇他人的博客,验证可行:【ARM微型电脑/IoT设备/嵌入式】Linux Ubuntu 树莓派 Jetson nano设置PTP时间同步

3、嵌入式设备使用 PTP 校时

很多前辈写了特别好的文章进行讲解,我就不班门弄斧了,不然就是制造垃圾了!!!个人看过,精品:

浅聊一下Linuxptp

linux ptp时钟同步

三、PTP 校时和 NTP 校时那个精度高一些

相对而言,PTP(Precision Time Protocol)的时间同步精度通常要比NTP(Network Time Protocol)更高。以下是两者之间的一些比较:

  1. 时间精度:PTP提供了更高的时间同步精度,可以实现纳秒级的时间同步。这对于需要高度准确性的应用,如金融交易、科学实验等是非常重要的。NTP的时间同步精度通常在毫秒或亚毫秒级别。

  2. 网络延迟:PTP更加敏感于网络延迟。它能够通过测量数据包传输的延迟来进行时钟校正,以实现高精度的时间同步。NTP相对来说对网络延迟更加容忍,它使用时钟滤波和平滑算法来抵抗网络延迟对时间同步的影响。

  3. 设备支持:NTP是一种相对较简单且广泛支持的时间同步协议,因此大多数操作系统和设备都可以方便地支持NTP。相比之下,PTP的支持相对较少,并且对于支持PTP的设备,通常需要具备更高的硬件和软件要求。

  4. 成本:PTP的实现和部署相对较复杂,需要更高的硬件和网络基础设施成本。NTP则是一种相对成本较低的解决方案,几乎可以在任何主流设备和操作系统中使用。

综上所述,如果您对时间同步的精度要求非常高,特别是在需要高度准确性的应用中,如金融、科学、工业自动化等领域,PTP是更合适的选择。对于大多数其他应用,NTP通常足够满足时间同步的需求。

相关推荐
Nerd Nirvana4 分钟前
软考—系统架构设计(案例 | 论文)
linux·系统架构·软件工程·软考·计算机基础
勤奋的凯尔森同学1 小时前
webmin配置终端显示样式,模仿UbuntuDesktop终端
linux·运维·服务器·ubuntu·webmin
丁卯4042 小时前
Go语言中使用viper绑定结构体和yaml文件信息时,标签的使用
服务器·后端·golang
chengooooooo2 小时前
苍穹外卖day8 地址上传 用户下单 订单支付
java·服务器·数据库
人间打气筒(Ada)4 小时前
MySQL主从架构
服务器·数据库·mysql
楼台的春风4 小时前
【MCU驱动开发概述】
c语言·驱动开发·单片机·嵌入式硬件·mcu·自动驾驶·嵌入式
落笔画忧愁e4 小时前
FastGPT快速将消息发送至飞书
服务器·数据库·飞书
小冷爱学习!5 小时前
华为动态路由-OSPF-完全末梢区域
服务器·网络·华为
技术小齐5 小时前
网络运维学习笔记 016网工初级(HCIA-Datacom与CCNA-EI)PPP点对点协议和PPPoE以太网上的点对点协议(此处只讲华为)
运维·网络·学习
ITPUB-微风5 小时前
Service Mesh在爱奇艺的落地实践:架构、运维与扩展
运维·架构·service_mesh