一、介绍
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
现协议是 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 网络驱动(如:),使用’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/
Slave节点:
Priority的值默认为128,此处默认即可。
4:master节点启动ptp4l进程:
ptp4l -i eno2 -m -f /etc/
以上可知,master节点使用/dev/ptp5作为时钟源,地址为:.0ce8af
5: slave节点启动ptp4l进程:
ptp4l -i eno2 -m -s -f /etc/
可以看到连接地址为master的clock地址
停止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//ptp_kvm.conf
4:添加ptp到chrony配置:
echo "refclock PHC /dev/ptp0 poll 3 dpoll -2" >> /etc/
重启chronyd服务
systemctl retstart chronyd
5:确认配置成功
chronyc sources