PTP 报文格式

2023-05-16

HeaderBodySuffix
34 字节Variable lengthOptional

所有的 PTP 帧都包含一个公共报头,它决定了协议版本和消息类型,还定义了消息的剩余内容。

所有多字节字段以大端顺序发送(高位字节首先发送/接收)。

versionPTP 的最后四位位于 PTPv1 和 PTPv2 数据头的相同位置(第二个字节)。这允许通过检查消息的前两个字节进行准确的识别。

PTP 报文头

PTPv1

  • 通用的 PTPv1 消息头
OffsetOctetsName
02versionPTP = 0x0001
22versionNetwork
416subdomain
201messageType
211sourceCommunicationTechnology
226sourceUuid
282sourcePortId
302sequenceId
321control
3310x00
342flags
364reserved

消息的类型编码在 messageTypecontrol 字段中,如表中所示:

  • PTPv1 消息类型标识
messageTypecontrolMessage NameMessage
0x010x0SYNCEvent message
0x010x1DELAY_REQEvent message
0x020x2FOLLOW_UPGeneral message
0x020x3DELAY_RESPGeneral message
0x020x4MANAGEMENTGeneral message
otherotherReserved

字段 sequenceId 用于明确地标识消息。

PTPv2

  • 通用的 PTPv2 消息头
偏移字节数字段名称含义
01transportSpecific(bit7-4)
messageId(bit3-0)
11reserved(bit7-4)
versionPTP = 0x2(bit3-0)
表示 1588 协议的版本
22messageLengthPTP 消息的长度,即 PTP 消息的全部字节数目。
计入字节始于报头的第一个字节,同时包含并收
尾于任何尾标的最后一个字节,或是无尾标成员
时收尾于消息的最后一个字节
41domainNumber域编号,表示发送该消息时钟所属的域
51reserved
62flags
88correctionField修正域,各报文都有,主要用在 Sync 报文中,
用于补偿网络中的传输时延,E2E 的频率同步
164reserved
2010sourcePortIdentity源端口标识符,发送该消息时钟的 ID 和端口号
302sequenceId序列号 ID,表示消息的序列号,以及关联消息
的对应关系
321control控制域(IEEE 1588v1),由消息类型决定:
- 0x00:Sync
- 0x01:Delay_Req
- 0x02:Follow_Up
- 0x03:Delay_Resp
- 0x04:Management
- 0x05:All others
- 0x06-0xFF:reserved
331logMeanMessageInterval录入消息周期,PTP 消息的发送时间间隔,
由消息类型决定
  • PTPv2 传输相关参数

在使用 UDP/IP 协议封装时:

transportSpecific含义
0UDP/IPv6 封装时,接收者忽略这个域
1UDP/IPv4 封装时,这个域为 1,表示接收者需要将 PTP 事件消息的 UDP 负载填充到 124 字节

在使用以太网封装时:

transportSpecific含义
0表示PTP消息由1588协议使用
1表示PTP消息由802.1as协议使用
  • PTPv2 消息类型标识

消息的类型在 messageId 字段中编码,如下表:

messageIdMessage nameMessage
0x0SYNCEvent message(进出设备端口时需要打上精确的时间戳
0x1DELAY_REQEvent message
0x2PATH_DELAY_REQEvent message
0x3PATH_DELAY_RESPEvent message
0x4– 0x7Reserved
0x8FOLLOW_UPGeneral message(进出设备不会产生时戳
0x9DELAY_RESPGeneral message
0xAPATH_DELAY_FOLLOW_UPGeneral message
0xBANNOUNCEGeneral message
0xCSIGNALINGGeneral message
0xDMANAGEMENTGeneral message
0xE– 0xFReserved
  • PTPv2 消息的 flags 字段定义

PTPv2 flags 字段包含关于消息类型的进一步详细信息,尤其在使用一步或两步实现的情况下。一布或两步的实现由 flags 字段的前八位中的 TWO_STEP 位控制,如下所示。
保留位被清除。

字节消息类型消息名描述
00Announce, Sync,
Follow_Up, Delay_Resp
ALTERNATE_MASTERSee IEEE 1588 Clause 17.4
01Sync, Pdelay_RespTWO_STEP1 Two-step clock
0 One-step clock
02ALLUNICAST1 Transport layer address uses a
unicast destination address
0 Multicast is used
03ALLReserved
04ALLReserved
05ALLProfile specific
06ALLProfile specific
07ALLReserved
10Announceleap61-
11Announceleap59-
12AnnouncecurrentUtcOffsetValid-
13AnnounceptpTimescale-
14AnnouncetimeTraceable-
15AnnouncefrequencyTraceable-

PTP 报文类型

  • Sync 报文
  • Delay_Req 报文
  • Pdelay_Req Message 报文
  • Pdelay_Resp Message 报文
  • Follow_Up 报文
  • Delay_Resp 报文
  • Pdelay_Resp_Follow_Up 报文
  • Announce 报文

Sync 报文

该报文由 Master 时钟发送,带有 Master 的时间信息。如果 Master 是 Two_step 模式的时钟,其发送的 Sync 报文中的时间戳将被设置为 0,实际的时间戳将由和该 Sync 报文相关联的 Follow_up 报文发送。

OffsetOctetsName
034PTP Header
3410Origin Timestamp

Delay_Req 报文

Delay_Req 报文的内容格式与 Sync 报文完全相同,Delay_Req 报文由从时钟发出,类似于 Master 有 One_Step 及 Two_Step 2 种时钟模式。Slave 存在 One_Way 和 Two_way 2 种模式(单向和双向),在 One_Way 模式下,Slave 不需要发送 Delay_Req 报文。

OffsetOctetsName
034PTP Header
3410Origin Timestamp

Pdelay_Req Message 报文

该报文仅在 P2P TC 时钟模式下才产生,由 P2P 时钟作为“延迟请求者”发出。

OffsetOctetsName
034PTP Header
3410Origin Timestamp
4410Reserved

Pdelay_Resp Message 报文

该报文仅在 P2P TC 时钟模式下才产生,由 P2P 时钟作为“延迟响应者”发出。
如果 P2P 时钟模式是 Two_Step,Pdelay_Resp Message 报文的时间戳将被设置为 0,实际的时间戳将由该报文相关联的 Pdelay_Resq_Follow_Up 报文发送。

偏移字节数名称描述
034PTP Header
3410receiveReceipt Timestamp在 One_Step 模式下的数值为 0;在 Two_Step 模式下为响应 Pdelay_Req 报文的接收时间戳,精度为 ns 以上的精确时间戳
4410requestingPortIdentity响应 Pdelay_Req 报文的发送设备端口 ID

Follow_Up 报文

只有在主时钟是 Two_Step 时钟模式时,才会发送 Follow_UP 报文,其内容格式与 Sync 和 Delay_Req 报文相同。

OffsetOctetsName
034PTP Header
3410preciseOrigin Timestamp

Delay_Resp 报文

当 Master 收到 Slave 发出的 Delay_Req 报文时,会响应 Delay_Resq 报文。

偏移字节数名称描述
034PTP Header
3410receive Timestamp响应 Delay_Req 报文的接收时间戳,精度为 ns 级
4410requestingPortIdentity响应 Delay_Req 报文的发送设备端口 ID。

Pdelay_Resp_Follow_Up 报文

只有在 P2P 时钟模式是 Two_Step 时才会产生 Pdelay_Resp_Follow_Up 报文。

偏移字节数名称描述
034PTP Header
3410responseOrigin Timestamp在 Two_Step 模式下响应 Pdelay_Resq 报文的发送时间戳,精度为 ns 级以上
4410requestingPortIdentity响应 Pdelay_Resq 报文的发送设备端口 ID。

Announce 报文

该报文用来描述时间源能力。

偏移字节数名称描述
034PTP HeaderPTP 报文头
3410Origin Timestamp数值为 0 或精度为 ±1 ns 的时间戳
442CurrentUtcOffsetUTC 与 TAI 时间标尺间的闰秒时间差
461Reserved-
471GrandmasterPriority1用户定义的 grandmaster 优先级
484GrandmasterClockQualitygrandmaster 的时间质量级别
521GrandmasterPriority2
538GrandmasterIdentitygrandmaster 的时钟设备 ID
612StepRemovedgrandmaster 与 Slave 设备间的时钟路径跳数
631TimeSource时间源头类型:
GPS - GPS 卫星传送时钟
PTP - PTP 时钟
NTF - NTP 时钟
Hand_set - 人工调整校准时钟
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PTP 报文格式 的相关文章

  • 视觉标记定位aruco使用

    本文的目的是实现生成一张marker broad图片 xff0c 告诉标记检测程序tag在真实世界中的实际大小 检测成功后得到marker的id 四个角点坐标 marker到相机的平移和旋转 xff11 xff0e 下载安装参考 openc
  • github进行修改

    1 xff09 git status xff1a 可以让我们时刻掌握仓库当前的状态 2 xff09 git diff 文件名 xff1a 查看改变的详细信息 xff0c 显示的结果是Unix通用的diff格式 步骤 xff1a 1 修改文件
  • C# 内存与性能优化

    C 内存与性能优化 https www jianshu com p d56f79d83ebd 前两周分享了资源配置与资源管理 xff0c 今天分享一种特殊的资源脚本数据 在Unity项目中 xff0c 我们通常使用C 编写脚本 xff0c
  • Gazebo仿真错误与技巧

    xff08 1 xff09 创建的环境不能保存 打开gazebo创建环境以后 xff0c 不能保存 xff0c 在打开是需要加权限 xff08 sudo xff09 xff0c 详细说明 如果是build可以先保存成模型 xff0c 然后再
  • 《Android入门之旅》

    因为本人在公司任职Java和JavaWeb相关开发工作 EXTJS和JQUERY近年来在网站中使用广泛 EXT江湖对我帮助很大 该书由浅入深地解析了Ext框架的方方面面 xff0c 包括JS基础 Ext的DOM和CSS封装 内置对象的扩展
  • 转发——从搭建小系统到架构分布式

    从搭建小系统到架构分布式 从搭建小系统到架构分布式 SpringBoot是目前Spring技术体系中炙手可热的框架之一 既可用于构建业务复杂的企业应用系统 xff0c 也可以开发高性能和高吞吐量的互联网应用 Spring Boot 框架降低
  • 2018-8-30华为机试第三题

    一个很明显的递归问题 package cn csu ksh import java util ArrayList import java util List import java util Scanner public class Mai
  • 海康威视web3.2开发包开发使用说明

    首言 xff1a 通过海康威视的最新web开发包工具进行js调用引入至vue项目中 xff0c 实现监控设备的对接 xff0c 监控功能的实现 3 2无插件js库同时支持插件安装的模式 目录 首言 xff1a 一 海康威视开发平台 xff1

随机推荐

  • 游戏的navmesh 与rvo动态避障算法(1)

    目前很多手游中如果需要寻路 xff0c 很多时候复杂地形都是需要用到navmesh xff0c 而比较常用的navmesh 系统 xff1a 1 astarpathfinding xff1a 一个老外开发的寻路插件 xff0c 内置有很多寻
  • Python3 指数函数 | numpy.power() math.pow() numpy.exp2() a**b

    对数函数用法 单纯求一个数的指数函数 xff0c 直接用a b比较好 xff1f 2 3 2的三次方 使用pow x y pow 有两种 xff0c 一种是python内置函数 xff0c 一种是math pow 使用python内置函数调
  • SVO2.0

    rpg svo pro open即svo2 0版本在上一年开源了 xff0c 对svo2 0接触了有一小段时间了 xff0c 感觉代码功能和一些函数实现等相比svo1 0版本有区别 xff0c 所以准备把这块好好总结下 xff0c 争取白话
  • ROS CMakeLists.txt中catkin_package和INCLUDE_DIRS的区别

    CMakeLists txt中 catkin package INCLUDE DIRS include 这里代表的是catkin的构建选项 xff0c INCLUDE DIRS表示将使用INCLUDE DIRS后面的内部目录include
  • 利用ROS框架搭建云平台提供机器人服务

    我们要怎么做呢 我们在云平台我们识别物体之后输出的是全局的二维码坐标 x y z 我们接下来要做两件事情 一种是使用云端的服务 xff08 在ROS中的表现形式是云平台提供的action xff09 第二种是请求云端的数据 xff08 可以
  • 虚拟现实技术vr可以用来干什么?虚拟现实技术vr有什么特征

    科技行业的不断蓬勃发展 xff0c 每天会出现一些新的科技产品 xff0c 例如现在很火的虚拟现实技术vr xff0c 虚拟现实技术用的领域很多 xff0c 就拿游戏行业来说 xff0c 玩家可以通过vr眼镜 vr手柄等体验vr游戏 xff
  • vr直播是如何实现的?vr直播都有哪些优势

    科技改变了我们的生活方式 xff0c 提起科技相信大家对这个直播行业恐怕都不陌生 xff0c 最近直播行业也玩出来新的花样 xff0c 引进了vr技术 xff0c 摇身一变 xff0c 变成了vr直播 xff0c 很多朋友不太理解vr直播是
  • Python归并排序

    归并排序 数据科学家每天都在处理算法 然而 xff0c 数据科学学科作为一个整体已经发展成为一个不涉及复杂算法实现的角色 尽管如此 xff0c 从业者仍然可以从建立对算法的理解和知识库中受益 在本文中 xff0c 对排序算法归并排序进行了介
  • 平衡车PID调节总结

    https blog csdn net a568713197 article details 82845959
  • FreeRTOS详解三

  • Invalid bound statement (not found)出现的原因和解决方法

    解决错误的步骤 出现了什么错误可能导致的原因解决办法 出现了什么错误 错误截图 xff1a BindingException 数据绑定异常 not found 找不到 org apache ibatis binding BindingExc
  • TI Processor SDK 如何生成例程

    TI现在新的SDK都叫Process SDK了 例程要自己生成 这样好多人都说自己找不到例程在哪里 其实就是生成这一步搞不定 我以AM5728为例子说 先打开到pdk的目录 编辑箭头所示文件 安装在默认路径Cpan的可以忽略这一步 否则要改
  • PCIE BAR空间理解

    PCIE应用程序编程 xff0c 首先就要理清PCIE BAR空间到底说的是什么 在PCIE配置空间里 xff0c 0x10开始后面有6个32位的BAR寄存器 xff0c BAR寄存器中存储的数据是表示PCIE设备在PCIE地址空间中的基地
  • 老男孩读PCIe之五:TLP结构

    来源 xff1a http www ssdfans com p 61 3683 无论Request TLP xff0c 还是作为回应的Completion TLP xff0c 它们模样都差不多 xff1a 图5 1 TLP主要由三部分组成
  • vxWorks6.9及workBench3.3常见配置

    1 双斜杠注释 在workBench集成开发环境当中 xff0c 默认的注释方式为 xxxxxx 如果想要使用 注释的方法必须修改workBench 的编译选项 xff0c 为编译选项添加c99支持或者gnu89 在编译选项中添加 std
  • 可能是最全的FreeRTOS源码分析及应用开发系列

    可能是最全的FreeRTOS源码分析及应用开发系列 FreeRTOS 是一个可裁剪的小型且免费的 RTOS 系统 xff0c 尺寸非常小 xff0c 可运行于微控制器上 其特点包括 xff1a 内核支持抢占式 xff0c 合作式和时间片调度
  • FreeRTOS系列|FreeRTOS简介

    1 RTOS简介 RTOS全称为 Real Time Operation System xff0c 即实时操作系统 RTOS强调的是实时性 xff0c 又分为硬实时和软实时 硬实时要求在规定的时间内必须完成操作 xff0c 不允许超时 xf
  • FreeRTOS系列|任务创建和删除

    1 任务创建和删除API函数 xTaskCreate 函数 xff1a 动态创建一个新的任务 xff0c 每个任务都需要RAM来保存任务状态 任务控制块 43 任务栈 xff0c 此接口采用动态分配内存资源 BaseType t span
  • FreeRTOS系列|多任务调度

    1 多任务启动流程 多任务启动流程如下表所示 启动后以下各函数由上至下依次执行含义osKernelStart 启动内核vTaskStartScheduler 启动任务调度器xPortStartScheduler 启动调度器prvStartF
  • PTP 报文格式

    HeaderBodySuffix34 字节Variable lengthOptional 所有的 PTP 帧都包含一个公共报头 xff0c 它决定了协议版本和消息类型 xff0c 还定义了消息的剩余内容 所有多字节字段以大端顺序发送 xff