AVB简介(二): gPTP简介

news2024/9/23 1:26:27

AVB简介(二): gPTP简介

  • 一、时间同步要解决的问题
  • 二、gPTP的主要思想
    • 2.1 体系结构
    • 2.2 主时钟选取
    • 2.3 绝对时间同步
    • 2.4 相对时间同步
  • 三、影响校时精度的因素
    • 3.1 传输时延不对称
    • 3.2 驻留时间
    • 3.3 时间戳采样点
    • 3.4 时钟频率
    • 3.5 传输路径延时测量方式
    • 3.6 时钟类型
  • 四、gPTP校时过程
    • 4.1 绝对时钟同步
    • 4.2 相对时钟同步
  • 五、参考资料

本文是AVB系列文章的第二篇,主要介绍AVB协议族中的精确时钟同步协议gPTP(IEEE Std 802.1AS-2011)(Precision Time Protocol standardized in IEEE1588-2008 (or IEC61588-Ed.2))。

一、时间同步要解决的问题

  • 不知道大家还记得军训练习齐步走的场景:
    大家整齐的站成一排,教官先喊出”齐步走“的口号,当学生听到走字后开始以同样的步伐行走(同频率同步长)
    如果大家始终这样走,那永远都会是整齐的,因为同学们都是跟着自己的感觉走的,每个人对时间的感觉不同,最终总会乱起来。
    为了防止这种情况发生,教练需要在同学们走正步的同时喊“幺二幺、幺二幺…”,让失调的同学在走的过程中动态调整。
  • 时钟同步原理类似
    教官相当于主时钟,教官发出的“齐步走”相当于校时信号
    各个学员类似于从时钟,收到校时信号指令后校准自己的时钟。
    由于从时钟的晶振受到环境因素(温度等)变化影响,随着时间流逝,各各时钟会慢慢变的不同步,所以需要主时钟周期性的发出校时信号供失调的节点动态调整时钟(相当于教练喊的幺二幺)。

由此可见,如果要整个网络中的节点保持时钟同步,该网络必须解决以下问题:

  • 选取一个主时钟
  • 主时钟动态发出同步信号
  • 其他本地时钟根据同步信号同步自己的本地时钟。本地时钟的同步包含下面两个方面(通俗点讲就是,找到同步点,然后以同样的频率运行):
    1. 绝对时间同步 : 要求在同一时刻,A和B的显示时间一致(A测出来是早上8点,B测出来也应该是早上8点),又称为相位同步
    2. 相对时间同步 : 要求A和B两时钟对同一确定间隔的测量时长保持一致(A测出来是1ms那也要求B测出来也是1ms),又称为频率同步

gPTP就是为了解决以上问题而诞生的。和其他校时协议不同的是,通过约束网络内的节点,它可以达到ns级的精度(6跳以内任意节点间最大时钟误差不超过1us),因此在车载、工业控制等对实时性要求较高的领域得到了应用。

二、gPTP的主要思想

先从下图直观感受下gPTP的校时机制,后面会逐步详细介绍:
在这里插入图片描述

2.1 体系结构

AVB域内的每一个节点都是一个时钟,由以下两个角色组成:

  • 一个主时钟(Grandmaster Clock),它是标准时间的来源;
  • 其他的都是从时钟(Slave Clock),它们必须把自己的时间和主时钟调整一致。

下图是一个简单的gPTP网络拓扑图:
在这里插入图片描述
它包含两种类型的节点:

  • Time-aware end station:是系统内的主时钟(时间源,Grandmaster),也可是从时钟,图中标注的802.1AS endpoint就是该类设备。
  • Time-aware Bridge:它可以是主时钟,也可是是个中转设备(类似传统的交换机),连接网络内的其他设备,作为中转设备,他需要连接主时钟的信息并将该信息发出去(在转发的时候需要矫正链路传输时延和驻留时间),图中标注的802.1AS bridge的就是该类设备。

从上图可以看到时钟从主时钟发出,经由各各bridge分发到所有的从节点。

2.2 主时钟选取

gPTP中主时钟既可以默认指定,也可通过BMCA(Best Master Clock Algorithm) 动态选取。 (车载或其他一些网络拓扑固定的应用场景中,一般不允许使用BMCA动态选取主时钟,而是默认指定。有需要请查阅规范文档,不详细展开)

2.3 绝对时间同步

下图包含一个主时钟一个从时钟,t1,t4为主时钟时间,t2,t3为从时钟时间:
在这里插入图片描述
主要校时流程如下:

  1. Master先发送Sync命令,Slave在t2时刻收到该命令,但不知道该命令什么时候发出的。
  2. Master发出Follow_Up命令,Slave收到该命令后知道Sync命令是在Mater的t1时刻发出的。
  3. Slave在t3时刻发送Delay_Req命令,Master在t4时刻收到,并记录了下来。
  4. Master发送Delay_Resp命令,Slave收到该命令后,Slave就知道了来自Master的两个时刻t1和t4,来自Slave的两个时刻t2和t3。

假设路径传输延时是对称的,即去程的传输延时和回程的传输延时相等,可以用小学二年级的知识,根据已知条件求取主从之间的传输延时与时间偏差(设从时钟超前主时钟clock_offset, 主从传输延时为path_delay)

t2 - t1 = clock_offset + path_delay
t4 - t3 = -clock_offset + path_delay

由此可以算出:

 path_delay = (t4 – t3 + t2 – t1) / 2 
 clock_offset = (t3 – t4 + t2 – t1) / 2

现在从时钟知道了自己与主时钟的时差clock_offset,就可以调整自己的时间了。另外,从时钟还知道自己与主时钟的路径传输延时path_delay,该值对于switch意义重大,因为在gPTP的P2P校时方式中,switch需要转发主时钟的校时信号,在转发的时候需要将该值放在补偿信息中。

从上面流程可见,传输延时path_delay的精度/稳定新会影响校时精度,从而传输延时又可以划分为:各链路传输时间总和,中间节点转发导致的驻留时间(缓存时间)。

2.4 相对时间同步

相对时间就是指主时钟和从时钟的晶振频率要一致,可以通过以下方法估算晶振频率变化动态调整。如下图所示:分别在t1和tn时刻对主时钟进行采样,分别记录为t1_master, t1_slave, tn_master, tn_slave, 可得:

retio = (tn_slave – t1_slave) / (tn_master – t1_master)

如果retio等于1,表明同步了,如果大于1,表示从时钟频率快了,否则巴拉巴拉。从时钟可以根据该值调整自己的频率。

三、影响校时精度的因素

其实不同的校时协议原理都大同小异,为什么gPTP可以达到ns级的精度?我们呢不妨看一下影响校时的因素以及gPTP的对策。

3.1 传输时延不对称

前面2.3小结提到,假设传输延时是对称的,即保存从A传到B与从B传到A的时间相同,实际情况中,路径有可能是不对称的。这就会导致校时误差。

gPTP对策:

  • 要求网络内的节点都是时间敏感的
  • 传输延时分段测量(P2P方式)减少平均误差
  • 中间转发节点可以计算报文的驻留时间,保证校时信号传输时间的准确性
  • 如果已知链路不对称,可以将该值写在配置文件中,对于endpoint,在校时的时候会把该偏差考虑进去;对于bridge设备,在转发的时候,会在PTP报文的矫正域中(correctionField)把对应的差值补偿过来。

3.2 驻留时间

对于Bridge设备,从接收报文到转发报文所消耗的时间(中间可能经过缓存),称为驻留时间,该值有一定随机性。从而影响校时精度。
gPTP对策:Bridge设备必须具有测量驻留时间的能力,在转发报文的时候,需要将驻留时间累加在PTP报文的矫正域中(correctionField)。

3.3 时间戳采样点

前面提到的t1、t2、t3、t4等采样时刻的值,应该在哪里产生呢?
常规做法是在应用层采样,如下图蓝色传输线路所示:在发送端,报文在应用层(PTP校时应用)产生后,需经过协议栈缓冲,然后才发送到网络上;在接收端,报文要经过协议栈缓冲,才能到达接受者(PTP校时应用)。这样存在下面两个问题,而这会影响时间同步的精度:

  • 协议栈缓冲带来的延时是不固定的
  • 操作系统调度导致的随机延时

    为了达到高精度的时间同步,必须消除软件带来的不确定因素,这就要求必须把时间采集点放在最靠近传输介质的地方。
  • 从上图可以看到,比较合适的采集点就是MAC层:在发送方,当报文离开MAC层进入PHY层的时候记录当前时刻;在接收方,当报文离开PHY层刚到达MAC层的时候记录当前时刻。这样可以消除协议栈带来的不确定性。
  • MAC时间戳可以通过软件的方式打,也可以通过硬件的方式打,硬件方式会更精确(可以消除系统调度带来的不确定性)。gPTP中要求使用硬件方式,也就是常说的硬件时间戳。

3.4 时钟频率

晶振频率越高,误差越小,校时越精确。
gPTP要求晶振频率不小于25MHz,误差不大于100PPM(每天8.64s误差)。
gPTP的要求并不算高,主要是考虑到成本因素,要求太高不利于推广。

3.5 传输路径延时测量方式

IEEE 1588支持两种路径延时测量方式:End-to-End(E2E) 和 Peer-to-Peer(P2P),二者不能在同一个网络中共存。

在End-to-End机制中,强调的是两个支持PTP的端点(一个master port,一个slave port)之间的延时,这两个端点可能是直接相连的,也可能中间穿插了普通的交换机、时间敏感的透明时钟(TC),在通信双方看来,信息都是在master port 和slave port之间传输,所以最终slave测量到的传输延时是从master到slave的端到端延时。

在Peer-to-Peer机制中,要求网络内所有节点必须支持P2P,所以它强调的是相邻相邻节点间的通信,最终测量的是相邻节点间的传输延时。二者主要区别如下图所示:

  • P2P测量的是相邻节点间的延时,路径测量报文不会跨节点传输,有利于网络扩展;E2E测量的是master port和slave port之间的,中间节点(如TC、普通switch)需要转发延时测量报文,网络规模较大时,报文可能泛滥,master节点压力较大。
  • master节点变更时,E2E需要重新测量到新master节点的路径延时,P2P只需关心相邻节点。
  • E2E方式允许网络中有普通的switch(透传PTP报文即可,由于驻留时间随机,会影响测量精度),而P2P要求网络中的switch必须全部支持P2P。
  • E2E机制中,校时报文和路径测量报文是耦合在一起的(第二章第3部分描述的就是典型的End-to-End的流程,它使用Sync、Follow_Up、Delay_Req、Delay_Resp四个消息,同时计算时钟偏差和路径测量);P2P机制中有独立的报文负责路径测量,把校时和路径测量解耦了。

gPTP要求使用PTP方式,并且要求网络中所有设备都支持PTP协议,路径传输延时测量只在相邻节点之间进行,他使用Pdelay_Req、Pdelay_Resp、Pdelay_Resp_Follow_Up消息来测量路径传输延时。(注意Peer-to-Peer中没有使用Sync报文,而是专门为路径测量新建了几个报文,降低了复杂度。)
具体流程如下:

  1. 节点A在t1时刻发送路径测量请求命令Pdelay_Req,并记录下时刻t1
  2. 节点B在t2时刻收到Pdelay_Req
  3. 节点B将t2放在报文Pdelay_Resp中,并在t3时刻将该报文发给节点A
  4. 节点B将t3放在报文Pdelay_Resp_Follow_Up中发给节点A
  5. 节点A在t4时刻收到Pdelay_Resp_Follow_Up。至此,节点A拥有t1、t2、t3、t4四个参数,平均路径传输延时可以通过下面的公式计算出来:
 path_delay = (t4 – t3 + t2 – t1) / 2 

在Peer-to-Peer机制中,不仅节点A会主动发起测量请求,节点B也会主动发起测量请求,也就是说,每个节点都知道和自己紧挨着的节点的传输延时(Peer-to-Peer的名字也是这样来的)。不过有的场景下(比如固定主时钟的情况),可能会禁止master port进行路径测量。

3.6 时钟类型

PTP时钟可以分为两类:One-Step Clock和Two-Step Clock。
还记得2.2小节中Follow_Up消息的作用吗? 它只是为了把t1的值传给slave节点。这种时钟就是Two-Step Clock, 它的事件报文(Sync等)中不携带时间信息,需要用另外一条普通报文传输时间信息(用来描述上一条事件报文是在什么时候发送的)。

如果t1能在Sync报文本身中传递给slave节点,就节省了一条报文

理论上来讲,同一个网络内可以存在两种类型的时钟,并且时钟类型不会影响校时精度。
gPTP要求使用Two-step时钟,因为这种机制对硬件要求较低,方便后续扩展,以及在现有的网络中普及。

四、gPTP校时过程

4.1 绝对时钟同步

以下图为例介绍gPTP时间同步过程,为了表述方便,这里做两点假设:

  • 假设下面的三个设备都是One-Step的Clock,即Sync报文发出后,不需要额外的Follow_Up报文告知Sync报文是在哪个时刻发送的。(实际802.1AS要求时钟必须是Two-Step的)
  • 假设各设备已通过前面介绍的Peer-to-Peer机制测量出路径传输延时path_delay1、path_delay2
    在这里插入图片描述
    校时流程如下:
  1. Grandmaster时钟在t1时刻发送时间同步报文Sync到Bridge,报文Sync的originTimestamp中填充时间信息t1,矫正域correction填充ns的小数部分(Sync报文的时间戳部分只能表示秒和纳秒,不足1纳秒的只能放在矫正域)。
  2. Bridge收到Sync报文后,不仅要矫正自己的时钟,还要把Sync报文转发出去。
  3. Bridge根据Sync报文调整自己的时钟:
    Bridge在t2时刻收到Sync报文,并从中解析出Grandmaster是在t1时刻发送的,以及Grandmaster填充的校正值correction。在t2时刻,Grandmaster的时钟显示的值应该是:
t1 + correction + path_delay1

由此可以计算出Bridged的时钟偏差,并调整自己的时钟:

clock_offset = t1 + correction + path_delay1 - t2
  1. Bridge转发Sync报文:
    如下图所示,收到Sync报文后,Bridge将自己与上级节点的路径延时(path_delay1)和Sync报文在自己这里的驻留时间(rEsidence_time)累加到Sync报文的矫正域,并转发出去。此时矫正域correction值如下:
correction = old_value_of_correction + path_delay1 + residence_time 

注意:Bridge不修改Sync报文的originTimestamp字段(该字段为Grandmaster发出Sync报文的时间)。

  1. End-Point在t4时刻收到Sync报文,并从中解析出Grandmaster是在t1时刻发送该报文的,以及Bridge矫正后的correction。在t4时刻,Grandmaster的时钟显示的值应该是:
t1 + correction + path_delay2

由此可以计算出End-Point和Grandmaster的时钟偏差,并调整自己的时钟:

clock_offset = t1 + correction + path_delay2 – t4 

由上面的校时流程可以看出,整个校时过程像水面的波纹一样从Grandmaster开始向外一层层的扩散,每个节点只关注自己和上级节点的传输延时,Bridge负责将中间路径的传输延时和缓存时间逐段累加到矫正域。

4.2 相对时钟同步

如下图所示,主时钟在时刻master_t1发出校时信号Sync_1,从时钟接收到该信号的时候,记录两个值:
在这里插入图片描述

  • slave_t1:接收到Sync_1信号时,slave本地时钟的值,这个值是当前时刻在slave时间坐标系下的采样
  • slave_t1’:接收到Sync_1信号时master时间坐标系的值,该值可以用下面的公式算出:
master_t1 + 传输时延 + 矫正域

其中,master_t1和矫正域的值在Sync报文中携带,传输延时可以通过前面的方法测量。

根据前面介绍的相对时钟同步原理,可以通过下面的公式判断自己的频率和主时钟是否保持一致:

ratio = (slave_tn – slave_t1) / (slave_tn’ – slave_t1’)

理想情况下,ratio的值应该是1,如果大于1,说明从时钟走的快了,如果小于1,说明走的慢了。从时钟可以根据该值调整自己的频率。

五、参考资料

1、gPTP简介

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

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

相关文章

idea运行Tomcat,控制台日志的中文乱码

一 版本 win10,idea2022,jdk18,tomcat9 二 问题描述 在idea上可以运行Tomcat。服务器启动后,可以正常访问本地的html文件。但是控制台的Tomcat日志出现了乱码:server与Tomcat Catlina Log两处。 三 无效的解决之道 1 idea的Help选项Edit …

Spring ORM

Spring Data JPA 作为Spring Data 中对于关系型数据库支持的一种框架技术,属于 ORM 的一种,通过得当的使用,可以大大简化开发过程中对于数据操作的复杂度。 Java里面写的一段DB操作逻辑,是如何一步步被传递到 DB 中执行了的呢?为什么 Java 里面可以去对接不同产商的 DB 产…

ExtendSim花生酱加工厂模型

该模型展示了ExtendSim可靠性模块与ExtendeSim离散速率技术相结合的协同作用。 在花生酱加工厂的最初阶段,花生经过烘烤和冷却。冷却后的花生经过热烫或水烫去外皮。这些经过漂白的花生进入过程的混合部分,在研磨机中用盐、葡萄糖和氢化油稳定剂将其粉碎…

MySQL排序你真的掌握了吗?5个问题考考你

测试sql数据 CREATE TABLE student (id int NOT NULL AUTO_INCREMENT,name varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,age int DEFAULT NULL,money int DEFAULT NULL,PRIMARY KEY (id) USING BTREE,KEY index_name (age) ); INSERT INTO st…

【Linux】线程的控制

目录 POSIX线程库 常用的POSIX线程库接口声明: 注意事项 创建一个进程 pthread_create函数 参数 返回值 使用示例 线程ID和进程地址空间布局 线程ID 进程地址空间布局 示例图 获取一个进程的线程ID 函数原型 返回值 使用示例 注意事项 线程终止 p…

SpringBoot项目整合ACTable实现实体类快速生产数据库表

1.安装 ACTable依赖 <dependency> <groupId>com.gitee.sunchenbin.mybatis.actable</groupId> <artifactId>mybatis-enhance-actable</artifactId> <version>1.5.0.RELEASE</version> </dependency> 使用mybatis…

如何做一个springboot的starter类型的SDK

关键的东西 首先我们是一个starter类型的SDK&#xff0c;为了给调用者使用&#xff0c;其中有一些Bean我们会放到SDK中&#xff0c;并且这些Bean能够注入到调用者的Spring容器中。 最关键的spring.factories文件 这个文件所在位置如下图所示&#xff0c;该文件通过写入一下代…

自定义vue-cli 实现预设模板项目

模板结构 主要包括四个部分&#xff1a; preset.jsonprompts.jsgenerator/index.jstemplate/ 项目最终结构 preset.json preset.json 中是一个包含创建新项目所需预定义选项和插件的 JSON 对象&#xff0c;让用户无需在命令提示中选择它们&#xff0c;简称预设&#xff1b;…

文献速递:深度学习肝脏肿瘤诊断---基于深度学习的肝细胞结节性病变在整片组织病理图像上的分类

Title 题目 Deep Learning-Based Classification of Hepatocellular Nodular Lesions on Whole-Slide Histopathologic Images 基于深度学习的肝细胞结节性病变在整片组织病理图像上的分类 Background 背景 Hepatocellular nodular lesions (HNLs) constitute a heterogen…

Offer必备算法26_BFS解决最短路_四道力扣题(由易到难)

目录 ①力扣1926. 迷宫中离入口最近的出口 解析代码 ②力扣433. 最小基因变化 解析代码 ③力扣127. 单词接龙 解析代码 ④力扣675. 为高尔夫比赛砍树 解析代码 本篇完。 ①力扣1926. 迷宫中离入口最近的出口 1926. 迷宫中离入口最近的出口 难度 中等 给你一个 m x …

SpringBoot学习(二)WEB开发

文章目录 WEB开发WebMvcAutoConfiguration原理生效条件效果WebMvcConfigurer接口静态资源源码规则EnableWebMvcConfiguration规则容器中WebMvcConfigurer配置底层行为 Web场景自动配置默认效果 静态资源默认规则静态资源映射静态资源缓存欢迎页Favion 自定义静态资源规则配置方…

PINet车道线检测+YOLOv8视频目标检测

前言&#xff1a; 本文主要目的是实现在PINet车道线检测的代码中嵌入YOLOv8的目标检测模块&#xff0c;具体效果如图所示&#xff1a; 在学习和使用YOLOv8进行目标检测时&#xff0c;感觉可以和最近研究的车道线检测项目结合起来&#xff0c;形成一套如上图所示的视频效…

2024/4/14周报

文章目录 摘要Abstract文献阅读题目创新点CROSSFORMER架构跨尺度嵌入层&#xff08;CEL&#xff09;CROSSFORMER BLOCK长短距离注意&#xff08;LSDA&#xff09;动态位置偏置&#xff08;DPB&#xff09; 实验 深度学习CrossFormer背景维度分段嵌入&#xff08;DSW&#xff09…

【图像分类】基于深度学习的轴承和齿轮识别(ResNet网络)

写在前面: 首先感谢兄弟们的关注和订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。(专栏订阅用户订阅专栏后免费提供数据集和源码一份,超级VIP用户不在服务范围之内,不想订阅专栏的兄弟们可以私信…

如何远程连接电脑?

远程连接电脑是一种技术&#xff0c;能够使用户在不同地点的电脑之间建立连接&#xff0c;实现互相访问和控制的功能。这项技术为我们提供了便利和效率&#xff0c;使得随时随地的协同办公、异地统一管理和远程数据采集管理成为可能。 【天联】的使用场景 远程连接电脑的应用非…

SAP 转储单库存可用性检查详解

客户需求在下转储单以及公司间STO时候检查发货方是否库存够,如果有库存则可以创建,没有则不让创建。以免在DN过账时候才提示库存不够,把检查库存是否充足前移。 我们知道销售单是有可用性检查功能的,那么采购转储单是否也有同样功能呢? 可用性检查控制可理解为检查组和检…

微信小程序认证指南及注意事项

如何认证小程序&#xff1f; 一、操作步骤 登录小程序后台&#xff1a; https://mp.weixin.qq.com/ (点击前往) 找到设置&#xff0c;基本设置&#xff1b; 在【基本信息】处有备案和认证入口&#xff1b; 点击微信认证的【去认证】; 按照步骤指引一步步填写信息&#xff…

使用阿里云试用Elasticsearch学习:Search Labs Tutorials 搭建一个flask搜索应用

文档&#xff1a;https://www.elastic.co/search-labs/tutorials/search-tutorial https://github.com/elastic/elasticsearch-labs/tree/main/example-apps/search-tutorial Full-Text Search

盲人出行安全保障:科技革新助力无障碍生活新纪元

作为一名资深记者&#xff0c;我有幸见证了一场科技如何深刻改变视障群体生活的壮丽篇章。在这场变革中&#xff0c;盲人出行安全保障成为焦点&#xff0c;一款融合先进科技与人文关怀的辅助应用正以前所未有的力量&#xff0c;帮助盲人朋友们打破传统束缚&#xff0c;实现安全…

每日OJ题_BFS解决最短路④_力扣675. 为高尔夫比赛砍树

目录 力扣675. 为高尔夫比赛砍树 解析代码 力扣675. 为高尔夫比赛砍树 675. 为高尔夫比赛砍树 难度 困难 你被请来给一个要举办高尔夫比赛的树林砍树。树林由一个 m x n 的矩阵表示&#xff0c; 在这个矩阵中&#xff1a; 0 表示障碍&#xff0c;无法触碰1 表示地面&…