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 官网连接

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

 

 

  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值