gPTP简介

1、gPTP(generalized precision time protocol)广义时钟同步协议

gPTP(generalized precision time protocol)广义时钟同步协议,即IEEE 802.1AS协议。它是IEEE 1588协议的延伸,可以为TSN提供全局精准的时间服务,用以实现TSN标准组中的流同步功能。

该协议旨在让AVB网络中所有的节点与一个共同的参考时间同步,要求间隔不超过7个AVB节点的两个终端节点之间的时间误差不能超过500ns。其大体的作用逻辑是,利用BMCA算法在网络中选择一个最佳的节点作为主时钟(或者预先内定一个),并建立主时钟树;然后利用对等路径时延测量机制,计算主从时钟端口间的误差来进行同步。

gPTP定义设备工作在OSI模型中的MAC子层(属于数据链路层),离物理层仅一步之遥的距离即可以减少协议栈缓存带来的延时不确定性,又可以缩短报文的传输时间。该协议规定了两种设备类型:Time-aware-end Station以及Time-aware Bridge。

Time-aware-end Station:可以理解为gPTP的工作节点,可以作为主时钟,也可以作为从时钟。

Time-aware Bridge:一种网桥,仅可以作为主时钟。同时,TSN交换机中,其具备最多一个从时钟端口,也可以被外部祖时钟同步。gPTP报文在进入网桥后会有一个处理时间,称为驻留时间了,协议要求该网桥必须具备测量驻留时间的能力。

上述的两种设备都具有本地时钟,本都是通过晶振的振荡周期进行度量并由设备内部硬件计数器负责对振荡周期进行计数。

网络中,发布时间同步报文的网络端口称为主端口,接收时间同步报文的端口称为从端口。

主时钟是整个系统中的时间基准,这就要求它具有更高的时间精度,需要能被更高精度的时钟授时,比如原子钟和卫星。主时钟的分配可以分为动态分配和静态分配两种。对于汽车而言,其网络的组成一般是稳定的,可以采用静态的预分配来确定主时钟。对于网络组成部分会动态变化的系统,一般采用BMCA算法(Best Master Clock Algorithm,最佳主时钟选择算法)进行分配。而在gPTP Automotive里面,BMCA是被禁止的,应该有确定的主时钟和从时钟关系定位。

2、gPTP报文分类

gPTP协议中的报文被划分成为了报文级别(Message Class)和报文种类(Message Type)两个属性,其中报文级别的具体划分如下

  • 事件型报文(Event Massage):这类报文的特点是设备在接收或发送事件类报文时,会对硬件计数器进行采样,将震荡周期计数值和时钟震荡频率以及基准时间相结合,生成一个时间戳。
  • 通用型报文(General Massage):这类报文在设备接受或者发送时,不会触发硬件对硬件技术器的采样,不会生成时间戳。

报文种类的划分以及对应的取值如下:

报文类型对应的报文等级以及取值

Massage Type Message Class Value
Sync Event 0x0
Pdelay_Req Event 0x2
Pdelay_Resp Event 0x3
Announce General 0xB
Signaling General 0xC
Follow_UP General 0x8
Pdelay_Resp_Follow_UP General 0xA

需要特别说明的是

  • Announce报文是在主时钟分配中启用,包含最佳主时钟的运算时间
  • Signaling报文主要用来传递信息、请求或者控制指令

3、报头定义

gPTP可以看作PTP的特定配置文件,所以这里的报头可以直接用PTP的。

PTP报头定义中各字段的含义如下:

字段 含义 作用 取值
transportSpecific 传输协议 标识所用的传输规范 0x1
messageType 报文类型 标识报文类型 参考报文类型表格
versionPTP PTP协议版本 标识对应的IEEE 1588版本 0x2
messageLength 报文长度 标识整个PTP的报头长度 /
domainNumber 域编号 标识该报文所属的时钟域 /
flags 标志域 对特殊报文的特殊取值有不同作用 参考IEEE 802.1AS Table10-6
correctionField 修正域 各报文都有,用于Sync报文和补偿传输时延 0x0
sourcePortIdentity 源端口标识符 标识发送该报文的时钟ID和端口号 /
sequenceId 序列号 标识消息的序列号 /
control 控制域 / 0x5
logMessageInterval 录入消息周期 PTP消息的发送时间 不同报文类型的取值不同

我们的模拟环境一般使用Linux系统 搭建环境,下面是与Linux 系统相关的ptp指令

安装ethtool: sudo apt-get install ethtool

查询网卡是否支持ptp硬件时钟:ethtool --T eno1

安装linux ptp:sudo apt-get install linuxptp

执行ptp4l 从时钟:ptp4l --H --m --i eno1 -s -2 --P

执行ptp4l 主时钟:ptp4l --H --m --i eno1 -2 --P

带配置文件执行ptp4l:ptp4l --H --m --i eno1--f xxx_profile.cfg

HDN-VDO官网请访问这里http://www.hdn-vdo.com/

相关推荐
petaexpress3 分钟前
常用的k8s容器网络模式有哪些?
网络·容器·kubernetes
小黑爱编程5 分钟前
【LInux】HTTPS是如何实现安全传输的
linux·安全·https
BeyondESH10 分钟前
Linux线程同步—竞态条件和互斥锁(C语言)
linux·服务器·c++
鱼饼6号25 分钟前
Prometheus 上手指南
linux·运维·centos·prometheus
Asher Gu31 分钟前
Linux系统编程入门 | 模拟实现 ls -l 命令
linux
c无序1 小时前
【Linux进程控制】进程程序替换
linux
m0_609000422 小时前
向日葵好用吗?4款稳定的远程控制软件推荐。
运维·服务器·网络·人工智能·远程工作
小安运维日记3 小时前
Linux云计算 |【第四阶段】NOSQL-DAY1
linux·运维·redis·sql·云计算·nosql
suifen_5 小时前
RK3229_Android9.0_Box 4G模块EC200A调试
网络
铁松溜达py5 小时前
编译器/工具链环境:GCC vs LLVM/Clang,MSVCRT vs UCRT
开发语言·网络