一、介绍
1:什么是ptp
PTP(Precision Time Protocol) 是一个通过网络同步时钟的一个协议。当硬件支持时,PTP 精度能达到亚微秒,比 NTP(Network Time Protocol)精度更高。

2:ptp应用场景
1)数据中心
数据中心需要NTP/PTP同步,以确保集群的时域运行。同步对于虚拟机计算是必不可少的。日志事件的时间顺序对于研究错误逻辑很重要。时间和日期对于自动备份和SQL转换回滚至关重要。弱同步使IT/IoT风险不稳定。
银行IT使用数据中心集群在需要微秒级精度的同步时域中运行。电子支付系统和信用卡操作都需要:安全和交易注册表(DB)。时间戳用于长期保存签名和数据密封。虽然精度要求仅为秒的十分之一,但对可信时间参考有着很严格的要求。带有时间戳的RFC3161证明了金融交易不可抵赖。银行IT基础架构需要强大的自动隔夜备份系统.。

2)智能电网
IEC 61850变电站和IEEE C37.238 PUM要求同步精度高于一个微秒,以保持稳健的配电管理。这强制PTP/IEEE1588在特殊的电源配置文件“或电力应用程序配置文件”中运行。PTP/IEEE1588主站需要确保同步精度优于200纳秒的服务器以太网输出。

3)自动驾驶、车路协同等边缘业务场景
自动驾驶车辆同步使用纳秒级和PTP IEEE1588配置文件AES67/IEEE 802.1AS。车辆排队是自动驾驶汽车可能采用的一系列功能的一部分。排队是一组可以非常紧密、安全和高速行驶的车辆。每辆车都能与队列中的其他车辆进行无线通信。此外,同步化对于自主人工智能驱动的车辆来说是至关重要的

3:操作系统里的 PTP
操作系统支持 PTP 被分开在 kernel 和 user space,比如 Redhat 或者 CentOS,内核支持 PTP 时钟,由网络驱动提供(硬件 PTP 依赖物理网卡提供硬件时钟),可以手动检查网卡是否支持 PTP

ethtool -T eno2
1
现协议是 linuxptp,PTPv2 的实现是根据 linux 的 1588v2 标准。linuxptp 软件包包含 ptp4l 和 phc2sys 两个时钟同步程序。ptp4l 程序实现了 PTP 时钟和普通时钟。通过硬件时间戳,它被用来同步物理网卡到远端主时钟的 PTP 硬件时钟。phc2sys 程序需要硬件时间戳,在网卡上(NIC)同步系统时钟到 PTP 硬件的时钟。

4:KVM virtual PTP driver
在云环境中,我们想要所有运行在云上的客户虚拟机都有和主机拥有相同精度的时钟,就需要 KVM virtual PTP driver。使用 kvm 虚拟 ptp 驱动程序,同一计算节点中的所有 VM 可以通过使用一个支持 ptp 的 NIC 作为时间源来实现相同的时间精度。

(1):网络(PTP)驱动是一个公共的支持硬件 PTP 的 linux 网络驱动(如:ixgbe.ko),使用’ethtool -T eth0’来检查硬件网络是否支持 PTP。
(2):Linuxptp 是针对 Linux 根据 IEEE 1588v2 标准实现的精准时钟协议(PTP)
(3):Linuxptp:ptp4l 实现 Boundary Clock (BC) 和 Ordinary Clock (OC),为了同步 ptp 硬件时钟(PHC)到远端主时钟。
(4):Linuxptp:phc2sys 在系统里同步两个或者更多的时钟,比如同步系统时钟到一个 PTP 硬件时钟(PHC)。
(5):系统实时时钟是系统时钟(CLOCK_REALTIME)。
(6):ptp_kvm.ko:内核模块,提供获取返回主机实时时钟的方法。允许 chrony 以高精度同步主机和客户端时钟。
(7):通过 kvm 虚拟 ptp 驱动,所有的虚拟机在同一个计算节点可以实现相同的时钟精度,通过使用一个支持 ptp 的网卡作为时间源

二、 物理机测试
1:本平台网络环境为dpdk,首先确认网卡是否支持ptp硬件时钟
网卡型号为X722,通过官网查看支持硬件时钟

2:在两台物理机都安装linuxptp软件包:

yum install linuxptp

确认安装完成

rpm -qa | grep linuxptp

3:修改master节点和slave节点的配置文件

Master节点:
修改prioprty值,值越小优先级越大。Master节点的优先级大于slave节点。
编辑配置文件

vim /etc/ptp4l.conf

Slave节点:
Priority的值默认为128,此处默认即可。

4:master节点启动ptp4l进程:

ptp4l -i eno2 -m -f /etc/ptp4l.conf

以上可知,master节点使用/dev/ptp5作为时钟源,地址为:48dc2d.ffe.0ce8af

5: slave节点启动ptp4l进程:

ptp4l -i eno2 -m -s  -f /etc/ptp4l.conf

停止master节点ptp4l进程,再启动ptp4l进程,可以看到slave节点先找本地,在连接master节点,如下:

6:slave节点同步系统时间到ptp4l应用程序同步的时钟

执行如下命令:

phc2sys -O 0 -r -m -s eno2

三、虚拟机使用物理机网卡时间作为时钟源

1:创建虚拟机,操作系统centos7.6

2:加载内核ptp_kvm

modprobe ptp_kvm
lsmod | grep kvm


3:写入配置文件,确保虚拟机重启后可以加载模块

echo "ptp_kvm" > /etc/modules-load.d/ptp_kvm.conf

4:添加ptp到chrony配置:

echo "refclock PHC /dev/ptp0 poll 3 dpoll -2" >> /etc/chrony.conf

重启chronyd服务

systemctl retstart chronyd

5:确认配置成功

chronyc sources

————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/weixin_40579389/article/details/121497291

[转]ptp(precision time protocol)时钟同步的更多相关文章

  1. PTP时钟和NTP时钟同步有什么区别

    PTP时钟 理论上任何PTP时钟都能实现主时钟和从时钟的功能,但一个PTP通信子网内只能有一个主时钟.整个系统中的最优时钟为最高级时钟GMC(Grandmaster Clock),有着最好的稳定性.精 ...

  2. NTP网络授时服务器部署及网络时钟同步设置说明

    NTP网络授时服务器部署及网络时钟同步设置说明 NTP网络授时服务器部署及网络时钟同步设置说明  本文由安徽京准科技提供@请勿转载. 一.前言 1.NTP简介 NTP是网络时间协议(Network T ...

  3. buildroot ntp 网络时钟同步

    /********************************************************************** * buildroot ntp 网络时钟同步 * 说明: ...

  4. Linux下的ntp时钟同步问题

    前段时间,项目中有个需求,需要将linux和windows的时间进行同步,网上也有很多类似时钟同步的帖子,大致类似:不过本次的linux的机器有点特殊,没有service命令,而且要求在另一台suse ...

  5. (3)I2C总线的字节格式,时钟同步和仲裁

    字节格式 发送到SDA线上的每个字节必须是8位.每次传输的字节数量是不受限制的.每个字节后必须跟着一个ACK应答位.数据从最高有效位(MSB)开始传输.如果从机要执行一些功能后才能接收或者发送新的完整 ...

  6. vlc_input buffer管理 & 时钟同步(转)

    vlc_input buffer管理 & 时钟同步 一.背景1.当播放网络视频流时(比如udp视频流),发送方(编码)和接收方(解码)是并行操作的,如果发送太慢(或因为网络原因出现延迟)的话, ...

  7. ntp 时钟同步

    注意: 如果你无法和外部网络的时钟同步,请检查UDP端口时候被封.

  8. CentOS时钟同步服务器

    ①本地时钟服务器需要安装chrony服务,可以通过yum.rpm.源码包安装,chrony支持C/S模式 ②编辑本地时钟服务,使其指向提供标准时间服务器,例如:中国国家授时中心NTP服务器. 修改配置 ...

  9. 关闭VirtualBox虚拟机的时钟同步

    原文链接:关闭VirtualBox虚拟机的时钟同步 在VirtualBox的虚拟机上默认虚拟机的时间是会和物理机同步的,但可以通过下面的命令来关闭 1. 首先查看虚拟机列表 VBoxManage li ...

  10. IIC - 【转载】对I2C总线的时钟同步和总线仲裁的深入理解

    对I2C总线的时钟同步和总线仲裁的深入理解 每一个IIC总线器件内部的SDA.SCL引脚电路结构都是一样的,引脚的输出驱动与输入缓冲连在一起.其中输出为漏极开路的场效应管.输入缓冲为一只高输入阻抗的同 ...

随机推荐

  1. Value error: 'ascii' codec can't decode byte 0xe6 in position 26: ordinal not in range(128) The traceback for the exception was written to the log file

    原因:工作空间中有中文编码问题,导致的运行ros异常 解决办法: 1.解决urdf生成异常问题 urdf文件中不允许有中文,所有当输入中文的时候容易出问题,解决方案: ①在根目录下:/opt/ros/ ...

  2. 一个整合性、功能丰富的.NET网络通信框架

    前言 最近有不少同学问:.NET网络通信框架有什么好推荐的吗?今天大姚给大家分享一款基于Apache License开源的一个整合性.功能丰富的.NET(包括 C# .VB.Net.F#)网络通信框架 ...

  3. Uniswap V2 核心 合约代码

    Uniswap V2 核心 UniswapV2Factory UniswapV2Pair UniswapV2ERC20 IUniswapV2Router02 1. UniswapV2Factory 合 ...

  4. Java面试题及答案整理汇总(2024最新版)

    前言 辞退了老板,准备找下家,又要开始面试了,不得不准备准备八股文,还是很有必要针对性的刷一些题,很多朋友的实战能力很强,但是理论比较薄弱,要多准备准备理论知识,攻克面试官.这是我在全网寻找稍微比较完 ...

  5. Maven 项目获取 git 分支、提交等信息

    git-commit-id-plugin 是一个 Maven 插件,用于在 Maven 项目的构建过程中自动获取 git 仓库的信息,如最后一次提交的 ID.分支名称.构建时间等,并将这些信息注入到项 ...

  6. 初识GO语言--并发

  7. 重温c语言之,7天开整,就是随便的写写,第一天

    一:转义字符 \t是一个字符,在printf里面,只占一个位置: 其他什么的抽象字符,用一个'\'+抽象字符就可以出现: \ddd这个是8进制的,可以转成10进制的,之后参考ASCLL码表即可 二:枚 ...

  8. 【问题解决】Tomcat由低于8版本升级到高版本使用Tomcat自带连接池报错无法找到表空间的问题

    问题复现 项目上历史项目为解决漏洞扫描从Tomcat 6.0升级到了9.0版本,服务启动的日志显示如下警告,数据源是通过JNDI方式在server.xml中配置的,控制台上狂刷无法找到表空间的错误(没 ...

  9. CSP 2024-S 游记 黑暗的枷锁

    09-21 今天考完了初赛,明显感觉数学门槛变高了一些,有高中数学知识才能保证看得懂题意,只是苦了小学和初中同学,看数据参加人数还涨了50%,权当拉低分数线了吧.用小图灵估分70.应该是稳过. 09- ...

  10. getExplorerInfo:获取浏览器信息

    function getExplorerInfo() { let t = navigator.userAgent.toLowerCase(); return 0 <= t.indexOf(&qu ...