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通常足够满足时间同步的需求。

相关推荐
Komorebi.py15 分钟前
【Linux】-学习笔记05
linux·笔记·学习
Mr_Xuhhh20 分钟前
重生之我在学环境变量
linux·运维·服务器·前端·chrome·算法
中云DDoS CC防护蔡蔡1 小时前
微信小程序被攻击怎么选择高防产品
服务器·网络安全·微信小程序·小程序·ddos
HPC_fac130520678162 小时前
以科学计算为切入点:剖析英伟达服务器过热难题
服务器·人工智能·深度学习·机器学习·计算机视觉·数据挖掘·gpu算力
速盾cdn3 小时前
速盾:CDN是否支持屏蔽IP?
网络·网络协议·tcp/ip
yaoxin5211233 小时前
第二十七章 TCP 客户端 服务器通信 - 连接管理
服务器·网络·tcp/ip
内核程序员kevin3 小时前
TCP Listen 队列详解与优化指南
linux·网络·tcp/ip
网易独家音乐人Mike Zhou5 小时前
【卡尔曼滤波】数据预测Prediction观测器的理论推导及应用 C语言、Python实现(Kalman Filter)
c语言·python·单片机·物联网·算法·嵌入式·iot
sinat_384241097 小时前
使用 npm 安装 Electron 作为开发依赖
服务器
朝九晚五ฺ8 小时前
【Linux探索学习】第十四弹——进程优先级:深入理解操作系统中的进程优先级
linux·运维·学习