Linux:NTP校时、PTP校时

目录

  • 前言
  • 一、NTP校时
    • 1、简介
    • 2、ubuntu使用 NTP
    • 3、嵌入式设备使用 NTP 校时
    • 4、NTP 服务器的校时精度
  • 二、PTP校时
    • 1、简介
    • 2、ubuntu使用 PTP
    • 3、嵌入式设备使用 PTP 校时
  • 三、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

在这里插入图片描述

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: 没有那个文件或目录解决办法

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

https://blog.csdn.net/weixin_44773416/article/details/127389567https://blog.csdn.net/npy_lp/article/details/6989669/https://blog.csdn.net/qwqwqw1232/article/details/121164554https://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可提供纳秒级别的时间同步服务,其主要适用于系统间的高精度时间同步,比如延迟敏感时序系统以及实时数据或语音系统。

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主要应用在网络中的时序同步,是许多高精度时序系统的基础。其中应用广泛的场景包括:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/614523.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

本地开发环境请求服务器接口跨域的问题(vue的问题)

上面的这个报错大家都不会陌生,报错是说没有访问权限(跨域问题)。本地开发项目请求服务器接口的时候,因为客户端的同源策略,导致了跨域的问题。下面先演示一个没有配置允许本地跨域的的情况: 可以看到&…

jsoncpp学习

1.环境配置 C 操作 (读写)json 文件及jsoncpp的配置-CSDN博客 一步步跟下来,就可以了!!! 2.遇到的问题: 读取json文件,出现中文乱码!!! 参考:C ifstream open 读取…

解决“百度网盘启动缓慢”问题

最近在使用百度网盘,双击桌面的《百度网盘》图标,发现有等好几分钟,软件才会启动。百度网盘启动太慢了,后面发现百度网盘,使用dll注入技术,附加到很多不相干的进程里,比如附加explorer进程、附加…

Golang defer 使用及面试常见的坑

前言 defer是Golang中一个常用的关键字,通常用来做一些收尾工作。比如开启了一个东西,就顺手defer中关闭。对于面试,defer也算一个高频考点,尤其是他的许多个坑,因此本文主要复习一下defer的用法。 多个defer的执行顺…

数谷·企声|贵州空港智能科技:以“智”提“质”,助力贵阳智慧机场建设

当前,我国民航正大力推进“平安、绿色、智慧、人文”的四型机场建设。贵州空港智能科技有限公司(下称“空港智能科技”)作为贵州民航产业集团有限公司(下称“民航产业集团”)信息化建设的排头兵和主力军,近…

Unity组件开发--长连接webSocket

1.下载安装UnityWebSocket 插件 https://gitee.com/cambright/UnityWebSocket/ 引入unity项目: 2.定义消息体结构:ExternalMessage和包结构Package: using ProtoBuf; using System; using System.Collections; using System.Collections.Ge…

Springboot使用自带Logback 与 整合log4j 和 log4j2过程详解

logback 1、添加依赖 <!--spring boot依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>2、logback-spring.xml配置 <?xml version"1.0&…

个人事务备忘录管理微信小程序

介绍 UniApp是一款使用Vue.js开发所有前端应用的框架&#xff0c;能够同时在iOS、Android、H5、小程序等多个平台上运行&#xff1b;所以本系统可以是一个安卓app&#xff0c;也可以是微信小程序 系统包括以下功能&#xff1a; 备忘录 管理个人事务 记事本 事务分类 日记编写…

全网第一篇教你怎么总结多线程知识

于「全景图」&#xff0c;我之前也有一直在构建&#xff0c;可是因为知识储备不够&#xff0c;确实很难构建出来。稍微了解过并发领域知识的人都知道&#xff0c;里面的知识点、概念多而散&#xff1a;线程安全、锁、同步、异步、阻塞、非阻塞、死锁、队列(为什么并发要跟队列扯…

安卓Android Studio读写MifareOne M1 IC卡源码

本示例使用的发卡器&#xff1a; https://item.taobao.com/item.htm?id615391857885&spma1z10.5-c-s.w4002-21818769070.11.66af789eLeok2R <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout …

回归预测 | Matlab基于CPO-BP基于冠豪猪算法优化BP神经网络的数据多输入单输出回归预测

回归预测 | Matlab基于CPO-BP基于冠豪猪算法优化BP神经网络的数据多输入单输出回归预测 目录 回归预测 | Matlab基于CPO-BP基于冠豪猪算法优化BP神经网络的数据多输入单输出回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.CPO-BP回归基于冠豪猪优化算法[24年新…

uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -投票帖子详情实现

锋哥原创的uniapp微信小程序投票系统实战&#xff1a; uniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )_哔哩哔哩_bilibiliuniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )共计21条视频…

【排序算法】三、选择排序(C/C++)

「前言」文章内容是排序算法之选择排序的讲解。&#xff08;所有文章已经分类好&#xff0c;放心食用&#xff09; 「归属专栏」排序算法 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 选择排序1.1 原理1.2 代码实现&#xff08;C/C&#xff09;1.3 优化1.3 特性总结 选择排…

Unity Meta Quest 一体机开发(十三):【手势追踪】自定义交互事件 EventWrapper

文章目录 &#x1f4d5;教程说明&#x1f4d5;交互事件概述&#x1f4d5;自定义交互逻辑⭐方法一&#xff1a;Inspector 面板赋值⭐方法二&#xff1a;纯代码处理 此教程相关的详细教案&#xff0c;文档&#xff0c;思维导图和工程文件会放入 Spatial XR 社区。这是一个高质量…

cuda12.0 安装 pytorch

前两天买的y7000p到了&#xff0c;然后就要重新配下环境。 流程如下 首先下载miniconda &#xff0c;我下的是python3.8的创建自己的自定义环境检查自己的cuda版本&#xff0c;我的是cuda:12.0然后再pytorch上找到对应cuda版本的进行下载&#xff0c;pip install或者conda in…

工作每天都在用的 DNS 协议,你真的了解么?

我们经常访问一些网址的时候&#xff0c;浏览器里输入类似于 www.baidu.com 这样的地址&#xff0c;那么在浏览器里输入这个地址---> 百度服务器给我们返回这个百度的页面&#xff0c;中间的过程是什么样的呢&#xff1f; 带着这个问题&#xff0c;我们一起来解析一下其中的…

Domino自带应用免费开源,免费共享

大家好&#xff0c;才是真的好。 作为一个强大的、综合性的、高安全的企业级应用平台&#xff0c;Domino同时也拥有业界首屈一指的应用程序开发能力。不过&#xff0c;让Domino有强大竞争力的&#xff0c;也应该包含它自带的数十个开箱即用的Notes应用程序。 我在前面很多篇幅…

2024年人工智能有哪些证书可以报考呢?

由国家工信部权威认证的人工智能证书是跨入人工智能行业的敲门砖&#xff0c;随着人工智能技术的发展越来越成熟&#xff0c;相关的从业人员也会剧增&#xff0c;证书的考取难度也会变高。如果已经从事或者准备从事人工智能行业的人员&#xff0c;对于考证宜早不宜迟&#xff0…

数据库软件详解一

MySQL 的安装 MySQL 的安装可去参考下这篇文章&#xff0c;比较详细&#xff0c;在此就不多啰嗦了&#xff01; MySQL 的卸载 如果你并不是第一次安装 MySQL &#xff0c;或者安装 MySQL 不对&#xff0c;需要将 MySQL 卸载干净才能将下一个版本的 MySQL 安装成功 卸载步骤 …

Javaweb之SpringBootWeb案例开发规范的详细解析

1.2 开发规范 了解完需求也完成了环境搭建了&#xff0c;我们下面开始学习开发的一些规范。 开发规范我们主要从以下几方面介绍&#xff1a; 1、开发规范-REST 我们的案例是基于当前最为主流的前后端分离模式进行开发。 在前后端分离的开发模式中&#xff0c;前后端开发人员…