ptp4l测试-LinuxPTP\ptp4l配置与问题排查

目录

一、前言

1.1 什么是ptp4l

1.2 描述

1.3 官网连接

1.4 目的

1.5 平台

二、 平台必要软件

2.1 linux物理机

2.2 imx6ull开发板

三、检查硬件是否支持

3.1 ifconfig查看当前网卡的名称

3.2 ethtool检查驱动和网卡是否支持

四、开启ptp4l服务

4.1 方法一:官方推荐方法开启ptp4l服务

4.2 方法二:执行摸索的开启ptp4l服务(虚拟机平台)


一、前言

1.1 什么是ptp4l

        ptp4l - PTP普通时钟/边界时钟/透明时钟协议栈

1.2 描述

        ptp4l是一个Linux上PTP协议(IEEE 1588)的实现,支持普通时钟,边界时钟和透明时钟。

1.3 官网连接

Configuring PTP Using ptp4l :: Fedora Docs (fedoraproject.org)

1.4 目的

        配置ptp4l进行测试时,发现存在一些问题导致无法正常进行测试,下面对遇到的问题进行排查解决。

1.5 平台

        master-linux物理机。 slave-linux虚拟机。确保双方能ping通。

二、 平台必要软件

2.1 linux物理机

1、安装ethtool
2、安装ptp4l

2.2 imx6ull开发板

//1、imx6ull支持IEEE 1588协议
//2、内核配置ptp时钟
//3、交叉编译或通过buildroot等安装ptp4l
(后续补充)

三、检查硬件是否支持

3.1 ifconfig查看当前网卡的名称

3.2 ethtool检查驱动和网卡是否支持

    为了使用 PTP ,网络接口的内核网络驱动程序必须支持软件或硬件时间戳功能。除了驱动程序中存在的硬件时间戳支持之外,NIC 还必须能够在物理硬件中支持此功能。验证特定驱动程序和 NIC 的时间戳功能的最佳方法是使用ethtool查询接口

    命令:ethtool -T {网口名称}

 

注:针对虚拟机,只有软件时间戳。

软件时间戳支持

硬件时间戳支持

SOF_TIMESTAMPING_SOFTWARE

SOF_TIMESTAMPING_TX_SOFTWARE

SOF_TIMESTAMPING_RX_SOFTWARE

SOF_TIMESTAMPING_RAW_HARDWARE

SOF_TIMESTAMPING_TX_HARDWARE

SOF_TIMESTAMPING_RX_HARDWARE

四、开启ptp4l服务

        下面提供两种开启ptp4l服务的方式,一种为官方推荐方法,另一种为我自己摸索的方法。

4.1 方法一:官方推荐方法开启ptp4l服务

    参考README配置(路径:/usr/share/doc/linuxptp/README.Debian)

    根据README进行一步步设置,其中ExecStart是调用ptp4l,其配置项可以使用man ptp4l或者看下面我提取的配置项进行合理配置。

1. Default configuration

The default configuration can be found in /etc/linuxptp/ptp4l.conf.
This is the default.cfg provided by the upstream source.

2. Systemd services

The service ptp4l invokes ptp4l on eth0 by default. To adjust the
parameters, follow these steps:

1. create a directory /etc/systemd/system/ptp4l.service.d
2. place a file with its name ending in .conf there
3. put these lines into the file, with the parameters adjusted to your needs:

[Service]
ExecStart=
ExecStart=/usr/sbin/ptp4l -f /etc/linuxptp/ptp4l.conf -i eth0

The service phc2sys syncs the system clock with the PTP clock. It is not
enabled and started by default. To activate this service, invoke the
following commands as root:

$ systemctl enable phc2sys
$ systemctl start phc2sys

It also uses eth0 as the default and can be customized as described above.

The service timemaster also isn't enabled and started by default

4.2 方法二:自行摸索的配置ptp4l服务方法(虚拟机平台)

    缘由:为什么不根据官方的方式配置服务?因为我是apt安装ptp4l后,直接systemctl start ptp4l启动,然后使用systemctl status ptp4l查看错误项进行排查的。而且排查过程中,发现不同系统(虚拟机、物理机)的ptp4l服务配置文件位置有所不同,因此可以适用我下面的方法。

        1、问题现象

    开启ptp4l服务后,检查服务命令:systemctl status ptp4l。看到启动的服务为failed

        2、资料查询 

    使用man ptp4l,查看Process一栏执行的命令是什么意思。

PTP4l(8)                                            System Manager's Manual                                            PTP4l(8)

NAME
       ptp4l - PTP Boundary/Ordinary Clock

SYNOPSIS
       ptp4l [ -AEP246HSLmqsv ] [ -f config ] [ -p phc-device ] [ -l print-level ] [ -i interface ] [ long-options ] ...

DESCRIPTION
       ptp4l is an implementation of the Precision Time Protocol (PTP) according to IEEE standard 1588 for Linux. It implements
       Boundary Clock (BC) and Ordinary Clock (OC).

OPTIONS
       -A     Select the delay mechanism automatically. Start with E2E and switch to P2P when a peer delay request is received.

       -E     Select the delay request-response (E2E) mechanism. This is the default mechanism. All clocks on single PTP commu‐
              nication  path  must  use  the same mechanism. A warning will be printed when a peer delay request is received on
              port using the E2E mechanism.

       -P     Select the peer delay (P2P) mechanism. A warning will be printed when a delay request is received on  port  using
              the P2P mechanism.

       -2     Select the IEEE 802.3 network transport.
       -4     Select the UDP IPv4 network transport. This is the default transport.
       -6     Select the UDP IPv6 network transport.

       -H     Select the hardware time stamping. All ports specified by the -i option and in the configuration file must be at‐
              tached to the same PTP hardware clock (PHC). This is the default time stamping.

       -S     Select the software time stamping.

       -L     Select the legacy hardware time stamping.

       -f config
              Read configuration from the specified file. No configuration file is read by default.

       -i interface
              Specify a PTP port, it may be used multiple times. At least one port must be specified by this option or  in  the
              configuration file.

       -p phc-device
              (This  option  is  deprecated.)   Before Linux kernel v3.5 there was no way to discover the PHC device associated
              with a network interface.  This option specifies the PHC device (e.g. /dev/ptp0)  to  be  used  when  running  on
              legacy kernels.

       -s     Enable the slaveOnly mode.

       -l print-level
              Set  the  maximum syslog level of messages which should be printed or sent to the system logger. The default is 6
              (LOG_INFO).

       -m     Print messages to the standard output.

       -q     Don't send messages to the system logger.

       -v     Prints the software version and exits.

       -h     Display a help message.

        3、参数分析

    针对命令/usr/sbin/ptp4l -f /etc/linuxptp/ptp4l.conf -i eth0。

    其中-f 用于指定配置文件。  -i 用于指定网口。

    根据图片提示信息可看出,问题点是指定的网卡名称有误,通过3.1的ifconfig命令查看,当前的物理网口的接口为ens33

    而且由于是虚拟机平台,并且3.2 中也查看了网卡只支持软件时间戳功能。因此需要加上-S配置项。

        4、修改参数

    修改参数的第一步是找到配置文件所在位置。我经过测试虚拟机平台和物理机平台。发现ptp4l配置文件所在位置有所区别,因此各位同学也需要根据实际情况找到配置文件的位置

查找配置文件位置:
cd /etc
sudo grep "ExecStart=/usr/sbin/ptp4l -f /etc/linuxptp/ptp4l.conf" -R

        可以得知ptp4l配置文件的位置:/etc/systemd/system/multi-user.target.wants/ptp4l.service。修改网卡接口以及适用软时间戳。

           保存后,按照如下指令重新启动ptp4l即可:

sudo systemctl daemon-reload    #修改service后需要重新加载systemd manager configuration
sudo systemctl restart ptp4l    #重启ptp4l
sudo systemctl status ptp4l     #查看是否启动成功

4.3 验证软时间戳时间同步

测试平台:使用两个虚拟机,其中一个作为master,另一个作为slave
前提:针对虚拟机,需要确保双方能够互相ping通
master虚拟机启动指令:sudo ptp4l -i ens33 -S -m
slave虚拟机启动指令:   sudo ptp4l -i ens33 -S -m -s

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

leetcode--环形链表.找到入环节点(java)

环形链表II 环形链表.找到入环节点题目描述解题思路 环形链表.找到入环节点 LeetCode 142:环形链表II 可以在这里测试 题目描述 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节…

电压放大器的主要指标有哪些方面

电压放大器是电子电路中常用的器件,在选择和评估电压放大器时,需要考虑以下几个主要指标: 输入电阻(Input Resistor):输入电阻是指放大器输入端的电阻值,它反映了放大器将输入信号转换成输出信号…

Linux驱动入门(二)——嵌入式处理器介绍和构建驱动程序开发环境

文章目录 嵌入式处理器和开发板介绍处理器简述处理器种类Intel的PXA系列处理器StrongARM系列处理器MIPS处理器摩托罗拉龙珠(DragonBall)系列处理器日立SH3处理器德州仪器OMAP系列处理器 ARM处理器ARM处理器简介ARM处理器的特点ARM处理器系列ARM处理器的应用ARM处理器选型 STM32…

Jupyter Notebook如何导入导出文件

目录 0.系统:windows 1.打开 Jupyter Notebook 2.Jupyter Notebook导入文件 3.Jupyter Notebook导出文件 0.系统:windows 1.打开 Jupyter Notebook 1)下载【Anaconda】后,直接点击【Jupyter Notebook】即可在网页打开 Jupyte…

初阶数据结构之栈的实现(五)

文章目录 😏专栏导读🤖文章导读🙀什么是栈?🙀画图描述 😳栈的代码实现及其各类讲解😳栈的初始化代码实现及其讲解😳栈的初始化 😳栈的销毁代码实现及其讲解😳…

PLX31-EIP-SIE 以太网/IP到西门子工业以太网

ProSoft Technology的EtherNet/IP to Siemens工业以太网通信网关允许支持EtherNet/IP的控制器或设备与西门子S7 PACs(包括S7-200s、S7-300s、S7-400s、S7-1200和S7-1500 PACs)之间进行高速双向数据传输。 此外,该网关还包括几个功能,包括数据优先级&…

横向移动-传递攻击SMB服务利用psexecsmbexec

win2012以上版本,关闭了wdigest 或者安装了 KB287199补丁。无法获取明文密码 总的来说就是win2012后无法获取明文密码 解决办法就是: 1.可以利用哈希hash传递(pth,ptk等进行移动) 2.利用其他服务协议(S…

UGUI进阶知识[二十九]循环GridView

节省内存的常用滑动列表还有一种形式,上下滑动的GridView。这种格式的滑动列表可用于移动设备的背包,仓库,商店UI等数据可能海量从而导致产生特别多但又看不见的UI的情况。 于是基于 UGUI进阶知识[八]循环利用滑动列表的循环ListView工程做了…

Tomcat服务器、Servlet生命周期、上传下载文件、使用XHR请求数据、注解使用

文章目录 Servlet认识Tomcat服务器使用Maven创建Web项目创建Servlet探究Servlet的生命周期解读和使用HttpServletWebServlet注解详解使用POST请求完成登陆上传和下载文件下载文件上传文件 使用XHR请求数据重定向与请求转发重定向请求转发 ServletContext对象初始化参数 Servlet…

Office project 2010安装教程

哈喽,大家好。今天一起学习的是project 2010的安装,Microsoft Office project项目管理工具软件,凝集了许多成熟的项目管理现代理论和方法,可以帮助项目管理者实现时间、资源、成本计划、控制。有兴趣的小伙伴也可以来一起试试手。…

在职阿里6年,一个29岁女软件测试工程师的心声

简单的先说一下,坐标杭州,14届本科毕业,算上年前在阿里巴巴的面试,一共有面试了有6家公司(因为不想请假,因此只是每个晚上去其他公司面试,所以面试的公司比较少) 其中成功的有4家&am…

CSAPP Lab5- MallocLab

实验目标 本实验需要用c语言实现一个动态的存储分配器,也就是你自己版本的malloc,free,realloc函数。 实验步骤 tar xvf malloclab-handout.tar解压文件 我们需要修改的唯一文件是mm.c,包含如下几个需要实现的函数 int mm_ini…

c++调用dll出现LNK2001 无法解析的外部符号

先说说下正常的dll。 动态库显试调用一般3个文件.h .lib .dll ,隐式调用 只需要2个文件:.h(函数定义) .dll 静态库2个文件:.h .lib 先说C正常dll显式调用 #include "BYD_MES/MES2Interface.h" //#include 是以当前…

Android 12.0下拉状态栏通知栏的通知设置默认展开

1.概述 在12.0的产品定制化中,对于SystemUI的定制也是常用的功能,而在下拉状态栏中的通知栏部分也是极其重要的部分,每条通知实时更新在通知栏部分,由于通知栏高度的限制,每条通知是默认收缩的,功能开发需要要求通知默认展开,所以就要从通知的加载流程分析 如图: 2.…

【Java基础篇】运算符

作者简介: 辭七七,目前大一,正在学习C/C,Java,Python等 作者主页: 七七的个人主页 文章收录专栏:Java.SE,本专栏主要讲解运算符,程序逻辑控制,方法的使用&…

多态的原理、单继承和多继承的虚函数表、以及虚函数表的打印。

一、多态原理 1、下面这个结果是多少&#xff1f; class A { public:virtual void func(){cout << "func()" << endl;}private:int _a 1; };int main() {printf("%d\n", sizeof(A));return 0; } 是 4&#xff1f;8&#xff1f;还是多少&am…

MVC 接收不到参数? —— 看我如何给你安排得明明白白

文章结构 问题背景&#xff1a;问题处理总结 问题背景&#xff1a; 现有如下代码&#xff1a; PostMapping(value "/payment/create") ResponseBody public CommonResult create(Payment payment) {}乍眼看去是不是很好&#xff0c;至少没啥问题很自然&#xff0c…

什么是日志关联

什么是日志关联 日志关联是一种分析来自不同源的日志数据以识别事件模式的技术。它用于更好地了解网络的活动&#xff0c;从而有效地保护网络免受漏洞和威胁。 日志关联是日志管理过程的关键部分。收集和存储日志后&#xff0c;集中式日志服务器将执行分析以检测特定事件。日…

LC-3 机器码编程实验

一、实验目的 分析和理解试验指定的需解决问题。利用LC-3的机器代码设计实现相关程序。通过LC-3仿真器调试和运行相关程序并得到正确的结果。 二、实验内容 利用LC-3的机器代码计算一个16位的字中有多少位是“1”&#xff0c;程序从x3000开始&#xff0c;需计算的字存储在x3…

c++ 11标准模板(STL) std::map(九)

定义于头文件<map> template< class Key, class T, class Compare std::less<Key>, class Allocator std::allocator<std::pair<const Key, T> > > class map;(1)namespace pmr { template <class Key, class T, clas…