当前位置: 首页 > ds >正文

PTP时间同步实战测试clock master/slave 直连校时+PPS测试

前言

通过前几篇文章相信对PTP协议已经有了一定理解了。本文将带着大家在linux下实际测试以下PTP实际应用效果。

本系列文章将带你由浅入深的了解PTP,欢迎关注

一、实战介绍.

先来简单介绍一下实验条件:

  • 本实验由两台ubuntu PC机作为PTP主节点和从节点

  • 网线直连进行PTP时间同步。

  • 通过观测PPS信号变压时间差测试时间同步效果。

PPS是一个周期性的信号,每秒钟发出一个脉冲,被广泛应用于时间同步和时钟校准。


二、环境准备

通过以下命令查看电脑上活动的网卡信息:

ifconfig

enp1s0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500 ......

通过命令查询到测试电脑上的网卡接口命名为enp1s0。

也许你的电脑有多个网卡,使得上一步查询出了多个enX

通过以下命令可以查看网卡驱动信息

ethtool -i <interface

$ ethtool -i enp1s0
driver: igb
version: 6.8.0-60-generic
firmware-version: 3.25, 0x8000061a, 1.654.0

也可以通过查询驱动功能,确认网卡是否支持硬件时间戳

ethtool -T <interface>
 

$ ethtool -T enp1s0
Time stamping parameters for enp1s0:
Capabilities:hardware-transmitsoftware-transmithardware-receivesoftware-receivesoftware-system-clockhardware-raw-clock  

三、功能测试

通过以上步骤,已经确认了网卡信息,以及网卡是否支持硬件时间戳功能。

接下来就可以进行一些简单的测试。

首先介绍一下ptp4l,它是由LinuxPTP项目研发,根据IEEE 1588标准为Linux系统提供的精确时间协议(PTP)实现,支持PTPv2协议,提供高精度、高扩展性、高灵活性的PTP协议实现。

安装linuxptp工具包:

sudo apt install linuxptp ethtool

将两台电脑中一台作为主节点,另一台作从节点。

配置从节点:

sudo ptp4l -i <interface> -H -m -2 -s

  • -i:指定网络接口

  • -H:强制使用硬件时间戳

  • -m:输出详细信息

  • -2:使用 IEEE 802.1AS (gPTP) 模式

  • -s:强制作为从节点

配置主节点:

sudo ptp4l -i <interface> -H -m -2

与从节点配置相同,不加-s参数,则自动选举该节点成为主节点

以下是从节点ptp4l的输出log

master offset:salve 通过ptp报文计算出的当前时钟于主时钟的差值
path delay:salve 通过ptp报文测量出和主时钟之间的路径延时

image.png


ptp4l启动校时后,从时钟和主时钟的差值快速收敛到10ns左右,此时从时钟已经稳定锁定,时间误差波动很小。通过稳定后的path delay可以测量出两个PC通过网线直连的路径延时只有7-8ns左右

四、高级配置

通过以上测试,我们完成了基础的PTP时间同步测试。

前几篇文章介绍过,ptp中有许多模式和参数可以配置,那么需要对每一个参数都了解才能进行吗?当然不,通过LinuxPTP网址,我们可以直接获取协议所需的配置。

LinuxPTP项目官网:

https://linuxptp.nwtime.org/documentation/

以汽车领域为例,在网站中可以直接获取它的配置参数

image.png

automotive-master.cfg

[global]# Options carried over from gPTP.gmCapable         1priority1              248priority2              248logSyncInterval        -3syncReceiptTimeout 3neighborPropDelayThresh    800min_neighbor_prop_delay     -20000000assume_two_step           1path_trace_enabled 1follow_up_info          1transportSpecific      0x1ptp_dst_mac             01:80:C2:00:00:0Enetwork_transport    L2delay_mechanism           P2P## Automotive Profile specific options#BMCA                  noopserverOnly          1inhibit_announce     1asCapable               trueinhibit_delay_req       1

配置文件设置了硬件时间戳、P2P、不使用BMCA最佳主时钟算法、只做主时钟等基本设置,配置详细信息也可在LinuxPTP的网站中找到。

使用方式比之前多了-f <配置文件>加载配置文件,使用如下命令:

sudo ptp4l -i enp1s0 -m -f automotive-master.cfg#主节点
sudo ptp4l -i enp1s0 -m -f automotive-slave.cfg#从节点

结果如下图所示:

image.png

同步效果更加稳定,这也符合了gPTP Automotive作为汽车配置应用,强调的低延迟和确定性


五、PPS抓包

较为专业的PTP/IEEE1588的设备都支持PPS脉冲输出,本次实验采用带PPS输出的以太网卡。

将网卡上的PPS电平信号引脚接入逻辑分析仪上即可。

根据网卡描述引出接线

image.png

根据网卡描述引出接线

本次实验将主从两台电脑的PPS接入同一台逻辑分析仪(示波器也可以),测量主从时钟同步后PPS信号边沿时间差来验证PTP校时误差。

实测PTP校时误差仅为10ns左右和ptp4l 测量结果接近,校时效果出色

image.png

总结

本文完整讲述了从环境准备到PPS测试的全过程,希望能够帮助到对PTP感兴趣的你。

PTP的科普也进入尾声了,可能大家对ptp4l的使用还有些疑惑,将会在下一节中对其进行详细介绍。


🔍鲲弘电子KUNHONG

扫描下方二维码

获取更多相关产品资料

http://www.xdnf.cn/news/14276.html

相关文章:

  • 第8章——8天Python从入门到精通【itheima】-88~90-Python的文件操作(文件的写出+文件的追加+综合案例)
  • 强化学习 PPO
  • GRUB2 启动配置的工作原理与优先级规则详解
  • 软件测试银行项目之“信用卡测试流程”
  • LlamaIndex 工作流 并发执行
  • Day13_C语言基础项目实战
  • Java性能问题排查
  • 暴雨亮相EAC2025分享热管理液冷技术
  • Android 中 linux 命令查询设备信息
  • PyTorch框架-自动微分模块
  • 小知识点三、无刷电机闭环控制
  • 大模型_Ubuntu24.04安装RagFlow_使用hyper-v虚拟机_超级详细--人工智能工作笔记0251
  • 【C++】C++17之std::optional
  • 41.第二阶段x64游戏实战-封包-分析周围对象ID
  • qt信号与槽--01
  • 【论文解读】Agentic AI 遇见工业自动化:从“指令”到“意图”的嬗变
  • Tabulate - C++表格格式化库介绍与使用
  • MongoDB详细安装步骤(Windows 系统)
  • SHELL 编程正则表达式
  • js 查看字符串字节数
  • 快速幂算法详解:从暴力到优雅的数学优化
  • Python脚本开发入门:从基础到进阶技巧
  • SpringBoot ​@ControllerAdvice 处理异常
  • 鸿蒙app 开发中 如何 看 app 页面的ui结构
  • JS 数组转Object和Map
  • PHP基础-运算符
  • 【62 Pandas+Pyecharts | 智联招聘大数据岗位数据分析可视化】
  • 如何VMware虚拟机扩容磁盘,有很详细图文
  • Blazor Web Assembly - 使用Power Automate Desktop来跟踪一下Blazor页面的内存使用情况
  • 动态规划:求最长回文子串