浅析一下PTPD

news/2024/5/18 12:35:56 标签: udp, 网络协议, 服务器, linux

浅聊一下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.niftyadmin.cn/n/328586.html

相关文章

【题型总结】动态规划之按照某种形式分割数组以获得最值

按照某种形式分割数组以获得最值 希望看了本文对你有所帮助,参考其他题解写成,取其精华,做以笔记,如有描述不清楚或者错误麻烦指正,不胜感激,不喜勿喷! 最大平均值的和分组【LC813】 You are …

有关mysql用户名、密码的修改及 shcema 之间的关系

用户、shcema、database 三者的关系 你好,这是Bing。我可以帮你写一篇文章,文字大约2000字左右,主要描述:mysql 用户、schema、数据库之间的关系和区别,以及如何给用户授权,如何修改用户密码。以下是我的文…

嵌入式压缩算法quicklz应用示例

quicklz源码 // Fast data compression library // Copyright (C) 2006-2011 Lasse Mikkel Reinhold // larquicklz.com // // QuickLZ can be used for free under the GPL 1, 2 or 3 license (where anything // released into public must be open source) or under a com…

关于安卓毛玻璃实现(三)recyclerview静态毛玻璃

背景 毛玻璃,开发中又爱又恨的一个话题,玩法层出不穷,有动态的,也有静态的。有的是实时模糊,有些只需要模糊一次,本文的毛玻璃实现,就是静态毛玻璃。 开发环境 win 10 as 4 jdk 1.8 代码 &…

计算机网络实验(ensp)-实验1:初识eNSP仿真软件

目录 实验报告: 实验操作 1.建立网络拓扑图并开启设备 2.配置路由器 1.输入命名:sys 从用户视图切换到系统视图 2.输入命名:sysname 姓名 修改路由器名字 3.输入命名:interface g0/0/0 进入端口视图g0…

Unity HybridCLR 热更工具学习日记(一)

目录 导入HybridCLR包、安装设置相关选项 导入HybridCLR包 先找到HybridCLR包的git地址:https://github.com/focus-creative-games/hybridclr 复制包的http地址,打开unity - window - package Manager;点击左上角的 选择Add Package for…

【Linux从入门到精通】上下文概念详解

上篇文章(进程的基本概念)我们讲解了进程后,还留下了一个上下文数据概念还没有解释。本篇文章会对上下文概念进行详解。在理解上下文概念时,同时会引出很多新的概念。我们都会对此进行详细解释,希望本篇文章会对你有所…

企业有必要对三方应用进行安全管控吗?

什么是三方应用? 三方应用是指由第三方开发者创建的软件应用程序,与操作系统或其他主要平台的开发公司无关。这些应用程序通常被设计为在特定平台上运行,并且具有特定的功能或服务,例如社交媒体应用程序、游戏和生产力工具等。 简…