时间同步——TSN协议802.1AS介绍
前言
之前的主题TSN的发展历史和协议族现状介绍了TSN技术的缘起,最近一期的主题TSN协议导读从定时与同步、延时、可靠性、资源管理四个方面,帮助大家了解TSN协议族包含哪些子协议,以及这些子协议的作用及功能。相信大家对TSN技术已经有了整体的概念。
时间同步作为诸多TSN协议的基础,无疑是十分重要的。今天就带大家深入了解TSN协议族中802.1AS是如何实现时间同步的。
协议基本介绍
802.1AS通用精确时间协议(Generalized Precision Time Protocol),将为汽车、工业自动化控制等领域实现精确时间的测量。本章将从基本概念、测量方式入手,再介绍时间同步过程,最后介绍802.1AS的新特性及汽车领域profile。
1. 802.1AS概念
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包括两种类型(Message class)General message和Event message,二者的区别在于,发送或接收Event message时,相应的时间戳会被记录,而General message则不会。General message包括Announce、Signaling、Follow_Up、Pdelay_Resp_Follow_Up,Event message包括Sync、Pdelay_Req、Pdelay_Resp。

Announce报文包含时钟相关信息,并且传输中,会记录途径的各PTP节点的Id添加到path trace TLV中;Signaling报文包含该PTP节点支持的信息,比如是否支持“一步法”、允许的Announce Interval等;Sync报文由GrandMaster发送,包含主时钟信息,其他节点计算本地时钟与主时钟的差值,实现同步;Follow_Up以及Pdelay_Resp_Follow_Up则是“两步法”中提供补充时间戳的报文,前者与Sync连用,后者与Pdelay_Resp连用;最后Pdelay_Req与Pdelay_Resp一起构成P2P测量机制的基础,将在后续章节中详细讲解。
2. 802.1AS测量过程
为了实现从节点本地时钟与GrandMaster时钟同步,需要考虑三个因素:
- 时钟频率误差
- 链路延迟
- 驻留时间
时钟频率误差是指PTP从节点的本地时钟频率与GrandMaster的主时钟频率很有可能是不同的,而且各PTP从节点之间也存在误差,这就造成时间测量基准不同,从而引入误差。
链路延迟(MeanLinkDelay)是指两两PTP节点之间通信的链路,在单方向上传播所需要的时间,也称为链路平均传播时间(Mean Propagation Delay)。
驻留时间(residence time)是指PTP Relay Instance将接收到的报文转发出去所用的时间,也就是报文停留在Relay中的时间。
1) 时钟频率误差测量
802.1AS为了消除这种误差,采用累积计算相邻节点时钟频率的比值(NeighborRateRatio)的方式,实现将本地时基(Local Clock Timebase)换算成(GrandMaster Timebase)。
举例来说,GrandMaster的时钟频率为1MHz,而与之相邻的PTP从节点(A)时钟频率有偏差为1.3MHz,对于A节点来说NeighborRateRatio等于1.3。当A节点本地时钟度过2.6s时,使用NeighborRateRatio换算为GrandMaster时基,则得到主时钟度过2s。对于与A相邻的B节点,假设其时钟频率为0.9MHz,经过累积的NeighborRateRatio等于0.9(1.3/1.0*0.9/1.3),当B节点本地时钟度过3s时,主时钟度过2.7s。
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中。
3) 驻留时间测量
驻留时间由PTP Relay Instance引入,指的是报文停留在Relay中的时间。想要消除其带来的影响相对简单,就是在转发出的Follow_Up报文中的correctionField中记录这一驻留时间,其他PTP节点收到该报文,就能计算得出正确的时间偏移。
3. 时间同步实现过程
802.1AS中通过手动配置或者BMCA确立GrandMaster后,GrandMaster周期发送Sync和Follow_Up报文提供主时钟基准;在实现节点同步之前,各个PTP节点通过Signaling报文协商计算NeighborRateRatio的间隔、计算MeanLinkDelay的间隔等信息;最后,各PTP从节点利用已有的NeighborRateRatio、MeanLinkDelay以及接受到的Sync及Follow_Up报文,利用Follow_Up报文中的correctionField信息修正后,就能得出主时钟现在的时刻,从而完成时间同步。
4. 2020版新特性
在新版的802.1AS-2020中,添加了几个重要的新特性,如:多域冗余、支持“一步法”等。下面就来简单了解一下这些特性。
1) 多域冗余

这张图很好地展现了多域冗余特性,主要分为两种方式:
- 同一GM(全局主节点)划分多个域,对每个域生成同步树(即同步路径)实现冗余
- 多个GM,每个GM维护一个域生成同步树,多个GM有主次之分,次要GM跟主要GM同步,这种方式也称为hot-standby
在图中,左上角的end station作为主要GM,它划分两个域,为每个域生成一个同步树(即同步路径,分别为蓝色和淡蓝色),右下角的end station作为次要GM跟主要GM同步,此外也划分两个域,为每个域生成同步树(红色和浅红色),这样一共有四个域、四个同步树,确保了冗余。
2) “一步法”
所谓“一步法”(也称为“on-the-fly”)是指在发送报文的同时,将在接近物理层的发送时间戳添加到报文中直接发送出去,这样将所需要的信息放在一帧报文中,更加高效,但是需要额外的硬件支持。对于接收节点,同样需要对“一步法”报文解析的能力。

“两步法”Sync报文

“一步法”Sync报文
与之相对的是“两步法”,这种方法仅在Sync或Pdelay_Resp报文发送时记录发送时间戳,再把这一信息封装在Follow_Up或Pdelay_Resp_Follow_Up报文中发送,从而在不需要额外的硬件支持下获得精确的时间戳。
5. 汽车领域profile
802.1AS能为汽车领域、工业自动化控制等领域实现精确时间的测量。而针对汽车领域的profile目前还未正式发布,这一内容将在802.1dg中体现,届时,我们将带来对其的深入解读。
结语
以上就是本次对802.1AS协议介绍的全部内容了,后续会带来更多TSN协议的解读,敬请期待。
北汇信息作为早期探索TSN领域的专业团队,能够针对AVB/TSN网络架构提供解决方案,包括应用场景设计、需求规范开发、通信系统设计以及演示验证系统开发;针对AVB/TSN网络提供系统级测试解决方案,包括系统测试规范开发、系统测试执行与演示;针对AVB/TSN节点提供协议族。
最后,北汇信息还提供AVB/TSN 网络课程,课程介绍了汽车网络架构的发展带来了各种各样的挑战和问题,如何从通讯角度来应对这些挑战,以及当前TSN协议的发展现状;对TSN各个协议标准进行了剖析,以期听众可以了解TSN各个协议的运作机理,为其配置和使用TSN网络提供基础。
时间同步——TSN协议802.1AS介绍的更多相关文章
- 基于TSN 802.1AS协议的时间同步分析(7种延时,1次厘清)
前言 往期的时间同步--802.1AS协议介绍一文向大家介绍了802.1AS协议的基本内容,基于时间同步协议就能实现主节点与各从节点的时间同步,但是如何评价时间同步的优劣呢?这就需要我们通过一些时间同 ...
- 转载:WIFI无线协议802.11a/b/g/n/ac的演变以及区别
WIFI无线协议802.11a/b/g/n/ac的演变以及区别 版权声明:版权所有,转载须注明出处. https://blog.csdn.net/Brouce__Lee/article/details ...
- IEEE 802.15介绍
1. 无线通信 无线通信主要是利用无线电(Radio)射频(RF)技术的通信方式,无线网络是采用无线通信技术实现的网络无线网络可为两种: 近距离无线网络和远距离无线网络 近距离无线网络主要可分为如下两 ...
- MQTT协议的简单介绍和服务器的安装
最近公司做的项目中有用到消息推送,经过多方面的筛选之后确定了使用MQTT协议,相对于XMPP,MQTT更加轻量级,并且占用用户很少的带宽. MQTT是IBM推出的一种针对移动终端设备的基于TCP/IP ...
- XMPP协议的原理介绍
XMPP(可扩展消息处理现场协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线现场探测.它在促进服务器之间的准即时操作.这个协议可能最终允许因特网用户向因特网上的其他任何人发送 ...
- XMPP协议实现原理介绍
本文介绍XMPP协议原理及相关信息. XMPP协议简介 XMPP(Extensible Messageing and Presence Protocol:可扩展消息与存在协议)是目前主流的四种IM ...
- HTTP协议的简单介绍
前传:HTTP协议的演变过程 HTTP(HyperText Transfer Protocol)协议是基于TCP的应用层协议,它不关心数据传输的细节,主要是用来规定客户端和服务端的数据传输格式,最初是 ...
- tcp协议以及socket介绍
壹:tcp协议:可靠传输 一: 3次握手,建立链接:4次挥手,断开链接 3次握手,建立链接:图解 ,这样双向通路就建立完成了. 在建立链接时,并没有数据传输,所以中间两部可以合在一起,也就是3次握手, ...
- HTTP协议请求类型介绍
HTTP协议中共定义了八种方法或者叫"动作"来表明对Request-URI指定的资源的不同操作方式,具体介绍如下: OPTIONS: 返回服务器针对特定资源所支持的HTTP请求方法 ...
随机推荐
- Eclipse使用JDBC方式连接SQLServer2008
JDBC_连接数据库一.配置 (一) 通过SQL Server配置管理器配置相关部分: 右键点击,启动tcp/ip协议右键点击属性查看自己的TCP端口号,记住,后面会用到右键点击SQL Server ...
- [atARC101F]Robots and Exits
每一个点一定匹配其左边/右边的第一个出口(在最左/右边的出口左/右边的点直接删除即可),否则记到左右出口的距离分别为$x_{i}$和$y_{i}$ 令$p_{i}$表示$i$匹配的出口(左0右1),结 ...
- [atARC058F]Lroha Loves Strings
贪心,求出前$i$个字符串所能组成的字典序最小的字符串$ans$(特别的,这里的字典序有$ab>abc$),同时保证剩下的长度能通过$l_{i+1},...,l_{n}$拼接 考虑插入一个字符串 ...
- LRU缓存
LRU缓存 struct Node{ int key; int value; Node* next; Node* pre; Node(): key(-1), value(-1), next(nullp ...
- myeclipse配置pydev插件
下载PyDev插件 myeclipse10最好配PyDev2.7的版本,比较简单, 解压之后,进入文件夹.发现里面只有两个文件夹,将这两个文件夹复制 到myeclipse的文件下面,myeclipse ...
- 联盛德 HLK-W806 (三): 免按键自动下载和复位
目录 联盛德 HLK-W806 (一): Ubuntu20.04下的开发环境配置, 编译和烧录说明 联盛德 HLK-W806 (二): Win10下的开发环境配置, 编译和烧录说明 联盛德 HLK-W ...
- nodejs中的fs模块中的方法
nodejs中的fs模块 引入模块 const fs =require("fs") 检测文件是否存在fs.stat(path,callback) fs.stat("./n ...
- Codeforces Gym 101480C - Cow Confinement(扫描线+线段树)
题面传送门 题意: 有一个 \(10^6\times 10^6\) 的地图.其中 \(m\) 个位置上有花,\(f\) 个矩形外围用栅栏围了起来.保证 \(f\) 个矩形两两之间没有公共点. \(q\ ...
- 用友低代码开发平台YonBuilder首次亮相DevRun开发者沙龙
2020年的今天,没有人会再质疑企业上云的必要性与价值所在.从高科技行业到传统领域,大大小小的企业都希望走在变革道路前列,通过企业云加快业务数字化转型,更好地维护和管理企业数据. 然而,大多数企业都很 ...
- 系列好文 | Kubernetes 弃用 Docker,我们该何去何从?
作者 | 张攀(豫哲) 来源 | 尔达 Erda 公众号 导读:Erda 作为一站式云原生 PaaS 平台,现已面向广大开发者完成 70w+ 核心代码全部开源!**在 Erda 开源的同时,我们计划编 ...