一、介绍
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. WebStorm 和 Rider 现在对非商业用途免费

    JetBrains 在程序员节这一天在官方博客上发布了一篇文章:<WebStorm 和 Rider 现在对非商业用途免费>宣布了JetBrains将WebStorm和Rider IDE对非 ...

  2. GoLand IDE 如何设置每次打开时先展示启动界面

    GoLand IDE 如何设置每次打开时先展示启动界面 打开设置,在SystemSeting下进行如下操作即可

  3. 体验国产系统Deepin:很爽

    最近开始把之前一直吃亏的旧电脑拿出来再利用了,先还是选择了熟悉的ubuntu系列.安装了Ubuntu 22.04之后,风风火火地把需要的开发环境搭建起来,虽然桌面有些卡顿,但瑕不掩瑜玉.趁着热情又想着 ...

  4. 使用wxpython开发跨平台桌面应用,实现程序托盘图标和界面最小化及恢复处理

    在前面随笔<基于wxpython的跨平台桌面应用系统开发>介绍了一些关于wxpython开发跨平台桌面应用的总体效果,开发桌面应用,会有很多界面细节需要逐一处理,本篇随笔继续深入该主题,对 ...

  5. 2款使用.NET开发的数据库系统

    前言 今天大姚给大家分享2款使用.NET开发且开源的数据库系统. Garnet Garnet是一款由微软研究院基于.NET开源的高性能.跨平台的分布式缓存存储数据库,该项目提供强大的性能(吞吐量和延迟 ...

  6. Java后端请求想接收多个对象入参的数据方法

    在Java后端开发中,如果我们希望接收多个对象作为HTTP请求的入参,可以使用Spring Boot框架来简化这一过程.Spring Boot提供了强大的RESTful API支持,能够方便地处理各种 ...

  7. 来了,超全MQTT实用示例

    Air201快速入门之MQTT示例 合宙Air201资产定位模组--是一个集成超低功耗4G通信.语音通话.超低功耗定位.计步.震动.Type-C.充电.放音.录音等功能的超小PCBA. 内部集成高效. ...

  8. (Python基础教程之十八)Python字典交集–比较两个字典

    Python示例,用于查找2个或更多词典之间的常见项目,即字典相交项目. 1.使用"&"运算符的字典交集 最简单的方法是查找键,值或项的交集,即 & 在两个字典之间 ...

  9. Understanding ANTLR Grammar Files

    Are you confused by all the different sections of an Antlr grammar file, wondering what each one doe ...

  10. FileSaver 文件导出

    1.前言 本节主要讲述如何将后台返回的JSON以文件的形式保存到本地 官方文档 兼容性(转载) Browser Constructs as Filenames Max Blob Size Depend ...