IEEE1588 verision2 报文介绍
PTP报文
PTP verision2报文是由 报头,主体 和 报尾 (header, body, and suffix)组成,报尾长度可能为0。
PTP verision2报文在verision1的五种报文(sync同步报文、follow_up跟随报文、delay_req延迟请求报文、delay_resp延迟响应报文和management管理报文)的基础上,
增加了点延迟机制(peer-delay mechanism)中的三种报文(Pdelay_req报文、Pdelay_resp报文和Pdelay_resp_Follow_up报文),signaling信号报文,announce声明报文这五种新报文。根据报文收发过程中,是否需要记录精确时间戳分为事件报文/通用报文。
PTP报头结构
表1 PTP报头的帧结构[1]
为了方便直观的理解,我绘制了图1,内容和结构都和表1一致;
offset是距离报文首字节的偏移量,单位是octet;
1个octet=8个bits;
reserved是保留域,默认为0;
图1 PTP报头结构
介绍PTP报文报头中一些域:
(1)messageType,【报文类型】(0.5个octet=4bits),不同的值代表不同的PTP报文
(2)versionPTP,【PTP版本】,(0.5个octet=4bits),PTP version1的话此处值为1,PTP version2的话此处值为2
“The value of the versionPTP field shall be the value of the portDS.versionNumber member of the data set of the originating node."
(3)domainNumber,【PTP域序列号】,(1个octet=8bits),对于普通时钟和边界时钟,此处值为数据集中defaultDS domainNumber这个变量
"For ordinary or boundary clocks, the value of domainNumber shall be the value of the defaultDS.domainNumber member of the data set of the originating ordinary or boundary clock."
(4)flagField,【标志域】,(2个octets=16bits),典型的如二步标志域(twoStepFlag)为1表示是二步模式,即同步报文之后有跟随报文
(5)correctionField,【修正域】,(8个octets=64bits),传送透明时钟的驻留时间、点对点透明时钟的链路延时以及非对称补偿
"The correctionField is the value of the correction measured in nanoseconds and multiplied by 216. For example, 2.5 ns is represented as 000000000002800016"
(6)sourcePortIdentity,【源端口号】,(10个octets=80bits),发送端口的相关属性
“The value of the sourcePortIdentity field shall be the value of the portDS.portIdentity member of the dataset of the port that originated this message.”
(7)sequenceID,【序列号】,(2个octets=16bits),为了区分多条发送端口相同的同一类型的报文
(8)controlField,【控制域】,(1个octet=8bits),此处的值由报文类型域的值决定,即根据报文类型不同取值不同
(9)logMessageInterval,【对数报文时间间隔】,(1个octet=8bits),包括发送声明报文的对数时间间隔,发送同步报文的对数时间间隔,发送延迟请求响应报文的对数时间间隔,它们的值是以2为底取的对数
PTP报文介绍
主要介绍 sync同步报文、delay_req延迟请求报文、follow_up跟随报文 和 delay_resp延迟响应报文 四种报文的报文主体body部分。
1)sync同步报文&delay_req延迟请求报文
两种报文具有相同的报文主体,originTimeStamp时间戳都是由历元,秒数和纳秒数构成的80bits时间戳信息
图2 sync同步报文&delay_req延迟请求报文的报文主体结构[1]
2) follow_up跟随报文
图3 follow_up跟随报文的报文主体结构[1]
3)delay_resp延迟响应报文
图4 delay_resp延迟响应报文的报文主体结构[1]
PTP报文封装方式
PTP报文封装方式分为:PTP over UDP over IPv4、PTP over UDP over IPV6、PTP over UDP over IPV6、PTP over IEEE 802.3/Ethernet 等承载方式。
1.PTP over UDP over IPv4 (IEEE1588 Standard Annex D)
以太网帧类型域值(Ethertype)为0x0800,检查IPv4报文类型域,若为0x11说明上层数据为UDP数据报文,再检查UDP目的端口号,若为319/320则为PTP报文;
四层实现(也称为三层实现或者应用层实现),能够跨IP网段,可以支持E2E和P2P;
"The first octet of the PTP message shall occupy the first octet of the client data field";
使用UDP协议和以太网协议version4(IPv4)完成PTP报文的封装,封装流程如下:
1).在应用层中PTP报文被应用程序填充后发送;
2).在传输层将PTP报文加UDP报头封装成UDP报文;
3).在网络层加入IPv4的IP报头,封装成IP报文;
4).在数据链路层中封装成以太帧传输;
图5 以PTP over UDP over IPv4方式封装PTP报文
2.PTP over UDP over IPv6 (IEEE1588 Standard Annex E)
此方法与前一种方法没有什么大的差异,只不过加装IP报头时以IPv6为准。
3.PTP over IEEE 802.3/Ethernet (IEEE1588 Standard Annex F)
此方法的以太网帧类型域值(Ethertype)为0x88F7;
两层实现,两层以太数据包,只能在一个局域网(MAC地址广播范围之内)起作用,只支持P2P;
图6 以PTP over IEEE802.3/Ethernet方式封装PTP报文
图7 PTP over UDP over IP方式封装PTP报文的具体方式
[1] IEEE Standard for a precision clock synchronization protocol for networked measurement and control systems. New York:IEEE,2008
note:
*以上内容均由本人从论文以及网上资料整理
*未经标注的图片均为本人自己绘制,转载引用请注明出处,尊重原创,谢谢
*自己也是最近开始学习接触到IEEE1588相关知识,认识难免会出现理解错误和一些其他问题,欢迎指正和讨论
IEEE1588 verision2 报文介绍的更多相关文章
- IEEE1588 verision 2 报文介绍
PTP 报文 PTP verision 2 报文是由 报头 / header,主体 / body 和 报尾 / suffix 组成,报尾长度可能为 0 ; PTP verision 2 报文在 ver ...
- Http报文 状态码
一.HTTP报文 1.HTTP报文介绍 HTTP报文:用于HTTP协议交互的信息. HTTP报文由报文头部和报文主体(非必须)构成,中间由空行来分隔. 1.1 请求报文:客户端发起的报文. 1).报文 ...
- HTTP/1.1报文详解
本文为<三万长文50+趣图带你领悟web编程的内功心法>第三个章节. 3.HTTP/1.1报文详解 在RFC2616中心详细的描述了HTTP/1.1[1]的报文,感兴趣的朋友也可以前往阅读 ...
- 【干货分享】前端面试知识点锦集04(Others篇)——附答案
四.Others部分 技术类 1.http状态码有哪些?分别代表是什么意思? (1).成功2×× 成功处理了请求的状态码.200 服务器已成功处理了请求并提供了请求的网页.204 服务器成功处理了请求 ...
- [计算机基础]HTTP协议学习笔记
HTTP:Hypertext transfer protocol超文本传输协议是一种详细规定了浏览器和Internet之间互相通信的规则 HTTP允许传输任意类型的数据对象,由Content-Type ...
- SpringMVC自定义配置消息转换器踩坑总结
问题描述 最近在开发时候碰到一个问题,springmvc页面向后台传数据的时候,通常我是这样处理的,在前台把数据打成一个json,在后台接口中使用@requestbody定义一个对象来接收,但是这次数 ...
- HTTP服务及状态码
第一章 HTTP 1.1 HTTP协议的概念 HTTP协议,全称HyperText Transfer Protocol,中文名为超文本传输协议,是互联网上常用的通信协议之一,它有很多的应用.但是流行的 ...
- 在C#客户端用HTTP上传文件到Java服务器
在C#客户端用HTTP上传文件到Java服务器 来源:http://www.cnblogs.com/AndyDai/p/5135294.html 最近在做C / S 开发,需要在C#客户端上传文件到 ...
- SSL&TlS握手
SSL/TLS简介 •SSL:安全套接字层(secure socket layer) •TLS:传输层安全协议(transport layer security) SSL和TLS都是加密协议,旨在基于 ...
随机推荐
- redis源码分析之有序集SortedSet
有序集SortedSet算是redis中一个很有特色的数据结构,通过这篇文章来总结一下这块知识点. 原文地址:http://www.jianshu.com/p/75ca5a359f9f 一.有序集So ...
- 从cdn说起
为什么要使用cdn 雅虎军规有一条规则建议我们是用cdn.随便在网上搜索,可以找到使用的cdn的好处. 再次强调第一条黄金定律,减少网页内容的下载时间.提高下载速度还可以通过CDN(内容分发网络)来提 ...
- PHP编辑器PhpStrom运行缓慢问题
最近在使用phpstorm开发项目的时候,在加载文件运行时,不管有多大,如果项目文件数据比较多的话,都能够让phpstorm卡到死机.其中调整过内存设置,关闭过动态提示,使用过phpstorm的安全模 ...
- Android音视频通话过程中最小化成悬浮框的实现(类似Android8.0画中画效果)
关于音视频通话过程中最小化成悬浮框这个功能的实现,网络上类似的文章很多,但是好像还没看到解释的较为清晰的,这里因为项目需要实现了这样的一个功能,今天我把它记录下来,一方面为了以后用到便于自己查阅,一方 ...
- 关于tolua的使用
一.首先在引擎的跟目录下找到cocos2d-x自带的工具tolua++ 二.使用tolua++生成自定义类的声明 打开tool文件夹中的readme文件如下: 1. Generating the lu ...
- 十二、Hadoop学习笔记————Hive的基本原理
一般用户用CLI(命令行界面)接口,元数据库含有表结构 单用户.多用户.远程服务 生成db文件,只能单客户端使用数据库 多用户是最常用的使用模式 配置与多用户一致 数据格式用户自定义 所有的表都存于改 ...
- 深入讲解HashMap原理
1. HashMap概述: HashMap是基于哈希表的Map接口的非同步实现.此实现提供所有可选的映射操作,并允许使用null值和null键.此类不保证映射的顺序,特别是它不保证该顺序恒久不变 ...
- eclipse工作空间的基本配置
今天我们来学习一个小技巧,就是如何配置eclipse,对你没看错,就是配置eclipse,为什么要学这个呢?这个不是很简单吗?没错,是简单,但越是简单的东西有的时候人们总是会忽略一些什么,从未造成损失 ...
- php加密解密处理类
[PHP]代码 <?php /*=========================================================== = 版权协议: = GPL (The GN ...
- 大数据学习系列之五 ----- Hive整合HBase图文详解
引言 在上一篇 大数据学习系列之四 ----- Hadoop+Hive环境搭建图文详解(单机) 和之前的大数据学习系列之二 ----- HBase环境搭建(单机) 中成功搭建了Hive和HBase的环 ...