首页 > 其他分享 >gPTP介绍

gPTP介绍

时间:2024-03-30 11:12:02浏览次数:24  
标签:Pdelay gPTP 报文 介绍 链路 时钟 节点 PTP

  802.1AS通用精确时间协议gPTP(Generalized Precision Time Protocol),将为汽车、工业自动化控制等领域实现精确时间的测量。

  1. 基本构成

  在802.1AS中,时间同步是按照“域”(domain)划分的,包含多个PTP节点。在这些PTP节点中,有且仅有一个全局主节点(GrandMaster PTP Instance),其负责提供时钟信息给所有其他从节点。

  PTP节点又分为两类:PTP End Instance(PTP端节点)和PTP Relay Instance(PTP交换节点)。其中:

  • PTP End Instance或者作为GrandMaster,或者接收来自GrandMaster的时间同步信息;
  • PTP Relay Instance从某一接口接收时间同步信息,修正时间同步信息后,转发到其他接口。

  2. GrandMaster的选取

  GrandMaster的选取除了手动设置以外,可以通过比较每个PTP节点的属性,自动选出GrandMaster,这一策略就是BMCA(Best Master Clock Algorithm)。在BMCA建立的过程中,首先各个PTP节点将自身时钟属性(比如时钟源)、接口信息放入Announce报文中,并发送给gPTP域内所有节点,之后PTP节点比较自身与接收到的时钟属性,优先级高的PTP节点自动成为GrandMaster。

  3. 802.1AS测量过程

  为了实现从节点本地时钟与GrandMaster时钟同步,需要考虑三个因素:

  • 时钟频率误差;
  • 链路延迟;
  • 驻留时间。

  1)时钟频率误差

  802.1AS为了消除这种误差,采用累积计算相邻节点时钟频率的比值(NeighborRateRatio)的方式,实现将本地时基(Local Clock Timebase)换算成(GrandMaster Timebase)。

  双步模式,Follow Up报文传输前面SYNC报文的物理层发送时间戳。

  于是,Slave节点能够得到4个时间戳:T1-T4。于是可以计算出两个时钟的频率比。

  neighborRateRatio= (T3-T1)/(T4-T2)

 

  2)链路延迟测量

  802.1AS中测量链路延迟采用P2P测量机制(Peer-to-Peer delay Mechanism),假设链路往返延迟一致(链路具有对称性),通过测定四个精确时间戳,计算得出一段链路上的链路延迟(MeanLinkDelay)。

  

  

  • 对于一段链路,存在两个PTP节点,其中Peer delay initiator(发起者)会主动发出Pdelay_Req报文,接收Pdelay_Req报文的节点称为Peer delay responder(响应者);
  • 在initiator端会记录Pdelay_Req报文实际的发出时间戳t1,在responder端会记录报文实际的接收时间戳t2;
  • responder在接收到Pdelay_Req后会回复Pdelay_Resp报文给initiator,这个报文会包含t2这一信息;
  • 在responder端会记录Pdelay_Resp发送时间戳t3,在initiator端会记录接收时间戳t4;
  • responder端会在Pdelay_Resp之后在发送一个Pdelay_Resp_Follow_Up报文给initiator,以包含信息t3;
  • 至此,在initiator端有t1、t2、t3、t4四个精确时间戳,通过计算t2-t1和t4-t3就能得到这一链路两个方向(i->r、r->i)传播的用时(tir、tri),再对其求均值,就能得到这一链路延迟(MeanLinkDelay);
  • 对于进行P2P测量的双方节点会交替作为initiator,从而都能获得该链路延迟(MeanLinkDelay)。

  使用P2P测量机制,就能得到gPTP域中每一段链路延迟,在实际进行同步过程中,PTP Relay Instance会将从GrandMaster开始的链路延迟累积记录在Follow_Up报文中的correctionField中,再转发出去;同时,对非对称误差的修正(通过测定后,手动设置参数修正),也放在correctionField中。

  于是,initiator端可以得到四个时间:t1,t2,t3,t4。单向链路延迟计算公示如下(假设slave为initiator端):

  

 

  3)驻留时间

  驻留时间由PTP Relay Instance引入,指的是报文停留在Relay中的时间。想要消除其带来的影响相对简单,就是在转发出的Follow_Up报文中的correctionField中记录这一驻留时间,其他PTP节点收到该报文,就能计算得出正确的时间偏移。

  4. 同步原理

 

  在slave中,我们已经有Pdelay time,T1,T2时间,则master的T6时间应该是slave节点的T5,两者之间可以通过以下公示表示:

 

  如果加上relay节点(交换机)的驻留时间。

  则需要加上两个Pdelay time,以及Bridge上的residence time。

  5. 包类型

  gPTP包类型:Sync,Follow_up,Pdelay_Req,Pdelay_Resp,Pdelay_Resp_Follow_Up, Announce,Signaling。 如下图所示。

  其中前5个类型的包,在上述过程都已经涉及到,在此不再赘述。下面介绍一下Announce和Signaling。

  Announce:gPTP的主时钟选择机制是“最佳主时钟算法(BMCA)”。选择算法启动时,所有可以成为主时钟的端点都会参与竞争。要启动BMCA算法,所有端点都通过发送Announce报文来宣告自己的能力。各个端点比较自己与其他端点的相关字段值,胜出者作为主时钟端点。但车辆是一个封闭的网络,不会出现节点总变化的情况,所以车载应用中,主时钟往往都是固定的,比如网关。

  Signaling: 在实现节点同步之前,各个PTP节点通过Signaling报文协商计算NeighborRateRatio的间隔、计算MeanLinkDelay的间隔等信息; 主要传送非时间关键流。

  6. 模拟实现

  从Inet4版本后开始支持TSN功能。通过Omnet和Inet组件模拟。

  1)模拟方法

  实验环境:Omnetpp 6.0.2 、Inet4.4。

  文件位置:/inet/showcases/tsn/timesynchronization/gptp/omnetpp.ini

  实验拓扑中有一个tsnClock、一个tsnSwitch和两个tsnDevice,具体如下:

  2)模拟结果

  通过模拟,可以观察到包的发送情况。具体如下:

   可以看到:gPTP协议通过节点相互发送GptpPdelayReq、GptpPdelayResp、GptpPdelayResFollowUp确认各个链路的Pdelay值。然后再周期性发送GptpSync和GptpFollowUp进行时间同步。大家还可以深入到包内容去看一下correctionField值,在此不再延伸。

  7.总结

  本文介绍了gPTP的原理、包类型,并且通过模拟观察到同步过程。

  8.参考资料

  [1]"Precision Time Protocol (gPTP) Explained in 5 minutes "   url: https://youtu.be/3vsO4Ndv-9M?si=Fxuamm7r1mnBquk7

  [2] “车载以太网时间同步之EthTsync”   url:https://zhuanlan.zhihu.com/p/627420984

  [3] “时间同步—TSN(Time Sensitive Network-时间敏感网络)协议802.1AS介绍”  url:https://zhuanlan.zhihu.com/p/336741458

  [4] "using gPTP"  url: https://inet.omnetpp.org/docs/showcases/tsn/timesynchronization/gptp/doc/index.html  

标签:Pdelay,gPTP,报文,介绍,链路,时钟,节点,PTP
From: https://www.cnblogs.com/oldmanzxl/p/18103404

相关文章

  • 干货分享│金属板材成形极限FLC测量流程介绍(XTDIC-FLC;三维全场应变测量)
    板料成形是一种材料加工技术,在航空、航天、船舶、汽车等行业领域被广泛应用。板料的成形极限,是衡量板料塑性成形性能的重要指标。以极限应变构成的成形极限图(FLD),常被用于板料受到拉伸、胀形或拉伸胀形结合时能够达到的变形程度,为评价板料成形性能以及改进成形工艺提供技术基础......
  • playbook的介绍、应用与实施
    playbook的介绍、应用与实施文章目录playbook的介绍、应用与实施1.实施playbook1.1AnsiblePlaybook与临时命令1.2格式化AnsiblePlaybook1.3运行playbook1.4提高输出的详细程度1.5语法验证1.6执行空运行2.实施多个play2.1缩写多个play2.2play中的远程用户和......
  • lodash已死?radash最全使用介绍(附源码详细说明)—— Array方法篇(1)
    相信很多前端同学甚至非前端都或多或少使用过lodash库,我们都知道lodash是一个非常丰富的前端工具库,比如最常用的防抖和节流,使用lodash都能很快实现,在github上更是有着58.7k的star数。但最近出现的Radash库,号称lodashplus版本,比之更新、更小、更全面、源码更易于理解。阅读本文......
  • Gitea的简单介绍
    Gitea是一个由社区驱动的轻量级代码托管解决方案,它为开发者和团队提供了一个易于使用且高效的平台来托管和分享他们的代码。在这篇博客中,我们将对Gitea进行一个简单的介绍,探讨它的特点、优势以及如何为开源项目和私有项目提供支持。什么是Gitea?Gitea是一个用Go语言编写的开源......
  • Docker介绍
    这篇文章并不是一个大众化的docker介绍,是本人在学习docker中遇到的问题和存在的疑惑在得到解答后所总结出来的内容。Docker是什么?Docker首先他是一个软件平台,让您可以快速构建、测试和部署应用程序。顾名思义他是一个项目构建部署的工具。但他和一些Maven之类的构建工具有所不......
  • 客快物流大数据项目(六十八):工作流调度 azkaban介绍及用法 一般有用 图片偏多 看1
    工作流调度一、工作流产生背景工作流(Workflow),指“业务过程的部分或整体在计算机应用环境下的自动化”。是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。工作流解决的主要问题是:为了实现某个业务目标,利用计算机软件在多个参与者之间按某种预定规则自动传递文档、信息......
  • 大模型检索增强生成RAG原理介绍
    大家好,我是程序锅。github上的代码封装程度高,不利于小白学习入门。常规的大模型RAG框架有langchain等,但是langchain等框架源码理解困难,debug源码上手难度大。因此,我写了一个人人都能看懂、人人都能修改的大模型RAG框架代码。整体项目结构如下图所示:本篇文章将介绍2.RA......
  • 简单介绍c语言程序的编译与链接
    程序运行的背后程序在运行时经历了四个步骤,分别是预编译(Prepressing)、编译(Compilation)、汇编(Assembly)和链接(Linking)。预编译预编译也称预处理,源代码文件(.c)和相关的头文件(.h)等被预编译器cpp预编译成一个.i文件。编译编译过程就是将预处理后的文件进行一系列......
  • LangChain SQL介绍以及使用Qwen1.5执行SQL查询教程
    该模块可以让我们向LLM提问时从数据库中查询数据并做出回答。架构SQLchain和agent的高层抽象架构:问题转查询SQL:使用LLM将用户输入转成SQL查询执行SQL查询:执行SQL语句回答问题:LLM根据数据库查询结果返回回答内容环境安装安装必要环境和包pipinstall--upgrade--quiet......
  • 客快物流大数据项目(七十):Impala入门介绍 一般有用 看1
    Impala入门介绍一、impala基本介绍impala是cloudera提供的一款高效率的sql查询工具,提供实时的查询效果,官方测试性能比hive快10到100倍,其sql查询比sparkSQL还要更加快速,号称是当前大数据领域最快的查询sql工具,impala是参照谷歌的新三篇论文(Caffeine--网络搜索引擎、Pregel--分布......