浅析一下PTPD

news2024/11/27 16:36:19

浅聊一下PTPD

文章目录

  • 浅聊一下PTPD
    • 1.什么是PTPD
    • 2.PTPD源码浅析一下
      • 1.src文件
        • 1.arith.c
        • 2.bmc.c
        • 3.constant.h 和 datatypes.h
        • 4.display.c
        • 5.management.c
        • 6.protocol.c
        • 7.ptp_datatypes.h
        • 8.ptp_primitives.h
        • 9.ptp_timers.c
        • 10.ptpd.c
        • 11.signaling.c
        • 12.timedomain.c
      • 2.def文件夹
      • 3.dep文件夹
        • 1.iniparser文件夹
        • 2.ntpengine文件夹
        • 3.alarms.c
        • 4.configdefaults.c
        • 5.daemonconfig.c
        • 6.eventtimer_itimer.c
        • 7.eventtimer_posix.c
        • 8.eventtimer.c
        • 9.ipv4_acl.c
        • 10.msg.c
        • 11.net.c
        • 12.outlierfilter.c
        • 13.servo.c
        • 14.snmp.c
        • 15.startup.c
        • 16.statistics.c
        • 17.sys.c
    • 3.安装和使用ptpd

1.什么是PTPD

PTPd(Precision Time Protocol daemon)是一种用于实现精确时间同步的开源软件。它实现了IEEE 1588 Precision Time Protocol(PTP)标准,并可用于在计算机网络中实现高精度的时钟同步。

2.PTPD源码浅析一下

简单聊一下src文件夹里面源码作用

在这里插入图片描述

1.src文件

1.arith.c

主要就是时间格式转换数学函数。

2.bmc.c

前一篇文章说过了,bmc算法主要选出最优时钟

3.constant.h 和 datatypes.h

前一个定义了一些默认值以及常量,后一个定义一些结构体

4.display.c

内部显示函数,定义了函数如:显示时间戳结构,显示时钟标识结构,显示 MAC 地址,显示网络信息,显示一个时间间隔结构,显示一个端口标识结构,显示时钟质量结构,显示网络接口名称,显示同步消息,显示通告消息,显示 Follow_UP 消息,显示 DelayReq 消息,等等很多,需要看什么信息可以在里面找,然后拉出打印看看。

5.management.c

处理传入管理消息。

PTP协议解析和处理:PTPd实现了IEEE 1588 PTP标准,并包含了解析和处理PTP消息的代码。这些代码负责解析传入的PTP消息,提取关键信息,并根据协议规范执行适当的操作,例如时钟同步和时钟源选择。

6.protocol.c

处理 IEEE-1588 协议和状态机的代码。

状态机:PTPd使用状态机来管理各种协议状态和状态转换。源代码中包含了实现状态机的代码,以确保协议的正确执行和流程控制。

7.ptp_datatypes.h

ptpdv2中使用的主要结构,这个头文件定义了主程序数据结构,以及所有消息结构。

8.ptp_primitives.h

定义数据类型,如UInteger48 类型,Integer64 类型等

9.ptp_timers.c

计时器代码

10.ptpd.c

main函数

11.signaling.c

处理单播协商和处理信令消息代码

12.timedomain.c

时钟控制代码,负责监测本地时钟的状态、调整时钟频率和校准等操作,以保持时钟的准确性。

2.def文件夹

包含 X-Macros 在中引用的组件宏 .def 文件。

组件宏用于定义消息、派生数据类型和管理 TLV 字段。

X-Macros 用于自动生成大部分用于打包、解包和释放 ptp 数据字段的代码

3.dep文件夹

在这里插入图片描述

1.iniparser文件夹

解析配置文件信息(ini)

2.ntpengine文件夹

MD5代码以及ntpdc代码

3.alarms.c

处理警报的发出和清除。

4.configdefaults.c

配置文件模板的定义

5.daemonconfig.c

处理配置文件解析、重新加载、加载默认参数,解析命令行选项,打印帮助输出等。

6.eventtimer_itimer.c

EventTimer 间隔计时器实现

7.eventtimer_posix.c

EventTimer POSIX 计时器实现

8.eventtimer.c

EventTimer 对象的公共代码,负责创建和删除 加上维护链表所有创建的实例。

9.ipv4_acl.c

解析、创建和匹配 IPv4 ACL。

10.msg.c

打包和解包消息的代码。

11.net.c

与网络套接字和 NIC 驱动程序交互的代码。

12.outlierfilter.c

处理离群值过滤的代码

13.servo.c

在软件中实现时钟伺服的代码。

14.snmp.c

SNMP相关函数。

SNMP是广泛应用于TCP/IP网络的网络管理标准协议,该协议能够支持网络管理系统,用以监测连接到网络上的设备是否有任何引起管理上关注的情况。

SNMP采用轮询机制,提供最基本的功能集,适合小型、快速、低价格的环境使用,而且SNMP以用户数据报协议(UDP)报文为承载,因而受到绝大多数设备的支持,同时保证管理信息在任意两点传送,便于管理员在网络上的任何节点检索信息,进行故障排查。

15.startup.c

守护进程启动时调用此文件中的函数,并包括 getopt() 命令行参数解析。

16.statistics.c

维护和实现计算统计信息。

17.sys.c

调用内核时间例程并显示服务器统计信息的代码。

3.安装和使用ptpd

git clone https://github.com/ptpd/ptpd.git
cd ptpd
autoreconf -vi
./configure
make
make install

下载,以及主机编译

主机

./ptpd2 -M -i eth0 -C 

从机

./ptpd2 -s -i eth0 -C 

运行图就是正常打印。

如果要交叉编译参考ptpd2源码编译

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ROS:gazebo创建仿真地图,turtlebot3加载仿真地图进行建图,生成yaml和pgm地图信息

一.安装turtlebot3 Ubuntu18.04 实现:安装turtlebot3功能包、虚拟机与机器人之间的网络配置、测试机器人Cartographer建图_Charlesffff的博客-CSDN博客 二.安装gazebo ROS18.04:安装gazebo,下载模型_gazebo下载模型_Charlesffff的博客-CSD…

Linux 设备驱动程序(二)

系列文章目录 Linux 内核设计与实现 深入理解 Linux 内核(一) 深入理解 Linux 内核(二) Linux 设备驱动程序(一) Linux 设备驱动程序(二) Linux设备驱动开发详解 文章目录 系列文章目…

大型央企集团财务经营分析框架系列(三)

01集团经营管理分析的切入点 集团经营管理分析的切入点往往是从财务分析开始。 往往在一家企业里面,财务方面的信息化建设是要早于其它方面的信息化建设的,业务标准化程度比较高,数据标准化程度也比较高,分析框架也相对成熟。 …

栈和队列的相关功能实现及其基础应用

前言:栈和队列是常见的数据结构,它们在计算机科学中被广泛应用。栈和队列都是一些元素的集合,它们的主要区别在于数据的组织方式和访问顺序。在栈中,元素的添加和删除都在同一端进行,称为栈顶,而在队列中&a…

PMP考试100个主要知识点

1.一个项目在启动阶段会进行量级估算,准确范围是-50至100%。2000版的量级估算准确度为:-25%到75%。 2.质量控制通常先于范围确认执行,但这两个过程可以并列进行参考 3.Cost-plus-fixed-fee(CPFF)成本加固定费用合同。成本补偿型合同包括成本加…

快速入门ChatGPT和AIGC:底层原理、热门工具、行业现状【我们能做什么】

最近大家热议的ChatGPT和AI绘画工具的底层技术原理是什么?是如何发展到现在的?有哪些应用场景、热门工具?AIGC产业上下游有哪些公司?作为普通用户,我们还能接触哪些应用AI技术打造的商业解决方案?…… 我们…

微信小程序 录音+播放组件封装

展示 长按录音 松开结束录音 点击播放 再次点击暂停 再次点击继续播放 展示效果: 录音功能 录音功能(手指按下开始录音 手指松开结束录音): 使用wx原生录音功能在 component 外新建 wx.getRecorderManager() RecorderManager…

国巨 :硬件设计基础60条

硬件设计是现代科技发展中至关重要的领域之一。它涵盖了从微电子器件到复杂的系统级设计的各个方面,是现代电子产品的核心。在这篇文章中,我将介绍60个基础概念,这些概念是硬件设计工程师必备的知识,并且是设计出高质量硬件的关键…

【web】学习ajax和fetch

1/什么是ajax ajax 全名 async javascript and XML(异步JavaScript和XML) 是前后台交互的能⼒。 也就是我们客户端给服务端发送消息的⼯具,以及接受响应的⼯具。 在不重新加载整个网页的情况下,对网页的某部分进行更新。而传统的网页(不使用 Ajax)如果需…

设计师必备的5个素材库,马住

今天就告诉大家设计师都是去哪些网站找素材,分享五个网站,解决你80%的设计素材,建议收藏! 1、菜鸟图库 https://www.sucai999.com/?vNTYxMjky 这是一个为新手设计师提供免费素材的设计网站,站内有超多平面模板、海报…

成为一名黑客需要学什么

想成为一名专业黑客,但不知道从哪里学起”很多人向盾叔问过这个问题,今天盾叔就为你介绍成为专业黑客必须学习的十个方面的知识,希望能为迷惘中的你指明方向。 一、基本的计算机知识 把它列为第一条,相信很多人肯定会觉得不以为…

Java虚拟机快速入门 | JVM引言、JVM内存结构、直接内存

目录 一:JVM引言 1. 什么是 JVM ? 2. 常见的 JVM 3. 学习路线 二:JVM内存结构 1. 程 序 计 数 器(PC Register) 2. 虚 拟 机 栈(JVM Stacks) 3. 本 地 方 法 栈(Native Method Stacks&…

Vscode C++环境配置

多文件编译 打开设置搜索coderunner 找到Executor Map 加入-I目录名 目录名/*.cpp 调试 点击调试以后会产生tasks.json文件,加入链接文件和库文件

map用法以及特殊值的情况

map用法以及特殊值的情况 一、map用法的说明 map(callbackFn, thisArg); // callbackFn回调函数,thisArg可选 callbackFn是个回调函数,该回调函数的参数按照顺序为element(当前正在处理的元素),index(正…

WPF MaterialDesign 初学项目实战(1)首页搭建

前言 最近在学WPF,由于人比较烂,有一个星期没怎么动代码了。感觉有点堕落。现在开始记录WPF项目,使用MaterialDesignInXamlToolkit。 环境搭建 如果没下载MaterialDesign 的源码 github源码运行 在Nuget里面引入MaterialDesign Materia…

数字孪生技术在环境保护领域怎样应用?

近年来,环境保护成为全球范围内的热点话题,各国都在积极探索创新的解决方案。其中,数字孪生技术的出现为环境保护带来了全新的机遇和挑战。数字孪生技术将物理世界与数字世界相结合,通过精确的模拟和实时数据分析,为环…

华为ensp 防火墙的基础配置

拓扑图: [FW3-zone-isp1]set priority 12 #配置防火墙优先级 步骤一 #首先进入防火墙需要输入默认账号和密码,必须修改密码。 [USG6000V1] undo in en #关闭提示。 #先配置ip。 [USG6000V1]ip route-static 0.0.0.0 0.0.0.0 64.1.1.10 #配置去往外网的默…

【Redis】Redisson入门以及Redisson可重入锁的lua脚本实现

目录 一、Redisson介绍 二、Redisson的入门 1、引入依赖 2、配置客户端 3、使用锁 三、Redisson可重入锁的原理 1、原理 2、实现 3、lua脚本保证原子性 1.获取锁 2.释放锁 一、Redisson介绍 在之前的文章里我们通过redis中的setn实现了一个简单的分布式锁以及解决了…

远程协助软件推荐,有哪些远程协助工具?

Win10、11自带远程协助工具-快速助手 Win10、11的快速助手使用非常简单。只要在左下角的搜索框搜索一下就可以找到了。 我们都知道,Windows带有远程桌面RDP功能,而快速助手是通过Windows的远程连接机制实现的。所以在使用前,被控端需要开启系…

谈薪谈蹦了,阿里HR说我不配21K....

好家伙,这奇葩事可真是多,前两天和粉丝聊天,他说前段时间面试阿里的测开岗,最后和面试官干起来了。 我问他为什么,他说没啥,就觉得面试官太装了,我说要24K,他说太高了,说…