TSN协议原理!看完这一篇就够了(1)——时钟同步IEEE802.1AS-2020

▎前言

在许多应用场景中,一个本地局域网中互联的设备集群需要共享同一个时间,以支持各设备的协同工作。例如:音频设备与视频设备的配合播放,雷达与摄像头的数据融合等;这样一个看似简单的域功能,细化成为各节点的需求就变得不那么简单了。想象一下,A和B节点的绝对时间不同——A此刻时间为09:00:00,B的时间为09:00:05;时间频率不同——标准时间经过了1分钟,A节点计时59秒,B节点计时61秒;如何实现各节点的时间矫正,我们今天要讲解的802.1AS协议就是用来实现以上提到的功能的。

▎协议目的-共享时间

TSN任务组(Time-Sensitive Networking Task Group)是IEEE 802.1 Working Group的一个组成部分,它的目的是在IEEE 802网络上提供确定性连接。我们可以把确定性连接这个概念简单理解为网络包传输的低延时,低抖动和无丢包;TSN在汽车控制,工业自动化,电力自动化等领域的应用通过协议簇实现,例如时间同步机制类协议802.1AS,冗余机制类协议802.1CB,服务质量类协议802.1Qbv,Qav,Qbu等和安全机制类协议802.1Qci。在IEEE 802.1DG草案中定义了汽车车内以太网的通信配置要求,时钟同步机制采用802.1AS。

提供确定性连接的关键是共享网络中各组件的时间。802.1AS协议用于满足音频,视频等时间敏感应用和时间敏感控制场景下的时间同步需求;网络配置的更新,网络组件的增加,去除或者故障都不应影响同步功能。为此,协议规定了时间同步模型的架构,同步方法,节点的介质无关子层,介质相关子层具体实现方法。花费大量篇幅解释专业名词并非文章的核心,我们专注于基本概念、同步原理和实现形式。

▎基本概念-gPTP域

在讲解802.1AS协议之前,需要简单介绍一下IEEE 1588协议。IEEE 1588定义了一种精确时间协议,被称为precision time protocol,PTP。802.1AS基于PTP提出了自己的同步模型,并称之为generalized precision time protocol,gPTP。

下图给出了一个时间感知网络拓扑图。在这个网络系统中,由于所有的设备都具有gPTP能力,因此这个网络是一个gPTP域。虽然系统中存在网桥,路由器,终端站等多种设备,对于gPTP域来说只有两类,PTP终端节点(PTP End Instance)和PTP中继节点(PTP Relay Instance)。

如果节点只与一个节点连接,那么这是一个终端节点,比如图中的end station;如果节点与多个节点连接,那么这是一个中继节点,比如下图中的bridge和router;时间同步的最终效果是,所有的节点都以图中与stratum 1时钟源相连的bridge作为时间基准,并不断修正自己的时间;这个时间基准被称为主时钟(Grandmaster Clock,GM)。

图片来源:IEEE 802.1AS 2020
当网络出现故障时,例如外网与本地网络连接中断,本地网络中的所有设备会重新选择一个主时钟设备,也就是下图中的end station(local GM),作为自己的参考对象。

图片来源:IEEE 802.1AS 2020

▎同步原理-延时和频率比值

gPTP域中的时间修正通过发送和接收特定报文实现。首先确定主时钟节点和时间同步生成树,然后该节点会沿生成树方向发送时间同步报文,中继节点转将报文转发至下游节点,最终实现将GM时钟信息传递给域内所有节点。在时间同步过程中,存在两类延时:

  • 转发延时:报文在中继节点中停留的时间。转发延时是中继节点的本地属性,易于计算;
  • 传播延时:报文在链路上传播的时间。传播延时取决于很多因素,例如介质相关属性和链路长度。当两类延时时间都已知,各个节点通过累计报文到达前的转发延时和传播延时便可得到同步时间。

因此我们需要考虑:①如何选择GM时钟?②如何测量报文在同步路径中的延时?
在这里插入图片描述

GM时钟选择

有两种方法可以选择一个gPTP域内的主时钟:

  • 最优主时钟算法(Best Master Clock Algorithm, BMCA)

    使用BMCA来确定gPTP域的GM节点,并以该节点为根构建时间同步生成树。各节点之间通过发送Announce报文来交换最佳主时钟选择信息,通过两两对比报文内容,系统最终收敛到唯一的主时钟。

  • 预定义端口状态

    强制配置一个节点作为GM,并构建以该节点为根的时间同步生成树。

在车载网络中,主时钟是预先分配的,例如将TBOX作为GM,使用GPS时间作为同步时间。

延时测量

gPTP定义了两类报文用于时间同步,事件型报文和一般型报文。在PTP节点入口和出口打上时间戳的报文是事件型报文,没有打时间戳需求的是一般型报文。

  • 事件型报文:Sync、Pdelay_Req、Pdelay_Resp
  • 一般型报文:Follow_Up、Pdelay_Resp_Follow_Up

图片来源:IEEE 802.1AS 2020
传播延时测量方法为两步对等路径延时/对等延时,测量的方向为initiator向responder发起,通过Pdelay_Req、Pdelay_Resp和Pdelay_Resp_Follow_Up获取四个时间t1,t2,t3和t4,测量步骤和计算方法如下:

  • 请求方发送Pdelay_Req报文,记录出口时间戳t1
  • 应答方收到该报文,记录入口时间戳t2;此时请求方获取的时间是t1
  • 应答方反馈Pdelay_Resp报文,记录出口时间戳t3,并在报文中携带t2
  • 请求方收到该报文,记录入口时间戳t4;此时请求方获取的时间是t1,t2,t4
  • 应答方再次发送Pdelay_Resp_Follow_Up报文,并在报文中携带t3;此时请求方获取到时间t1,t2,t3和t4
  • 根据两个方向的时间差值计算传播延时

在这里插入图片描述
需要注意的是,这种测量方式不考虑链路方向的延时差异,假定请求方和应答方之间两个方向的报文传播时间是对称的;这种计算方法对应请求方和应答方走时一致的理想情况,而实际二者的频率差是必然存在的。当请求方的时钟频率比应答方的慢,D会比实际值小。感兴趣的读者可以自己计算一下。

转发延时的测量基于本地时钟,计算报文的出口时间戳和入口时间戳差值。

802.1AS并未规定传播延时测量的方向,但是在车载网络中,一般由Slave端向Master端发起。

由于时间频率不同会导致校准误差,我们需要得到相邻节点的时间频率rateRatio,并将其计入传播延时中。

计算方法为统计连续的Pdelay_Resp和Pdelay_Resp_Follow_Up报文时间戳信息。如下图所示,第一次发送Pdelay_Resp的时间为t3,到达另一端的时间为t4,第二次发送Pdelay_Resp的时间为t3’,到达时间为t4’。

在这里插入图片描述
频率比值计算结果为:

在这里插入图片描述
计入频率比值的传播延时为:

在这里插入图片描述
相邻节点之间的频率比被称为neighborRateRatio,节点与主时钟之间频率比被称为rateRatio;rateRatio是neighborRateRatio的累积乘积,而由于neighborRateRatio与1非常接近(以ppm为单位),实际计算中也可通过累计相加的方式得到。

在这里插入图片描述
传播延时一般是ns-μs量级,转发延时由于交换机转发与处理能力的限制,一般是μs-ms量级。因此,时间同步的误差来源主要是转发延时。

▎实现方式-PTP报文

延时测量方法,测量结果,PTP端口信息和发送周期在时间同步报文(PTP报文)中携带。PTP报文位于MAC帧的数据段,目的MAC地址为固定组播地址01-80-C2-00-00-0E,以太网帧类型为固定0x88F7。

在这里插入图片描述
PTP报头为34字节,包含报文类型messageType,PTP版本号versionPTP,PTP报文字节数messageLength等内容。

Correction field字段是上游节点相对于GM节点的修正值,换算成ns时间需要除以2^16。当follow_up报文中的originTimestamp加上该字段以后,就是上游节点发送该Sync报文的同步时间。

在这里插入图片描述

Sync报文

Sync报文根据一步法和两步法的不同,报文格式存在差异。一步法仅由Sync报文携带延时和频率比值信息。

图片来源:IEEE 802.1AS 2020
如果报头中的两步法标志位为True,那么Sync报文格式如IEEE 802.1AS 2020中的表11-8所示;如果标志位为False,那么Sync报文格式如IEEE 802.1AS 2020中的表11-9所示。由于一步法不发送Follow_Up报文,因此GM节点发送Sync报文的时间originTimestamp和TLV字段统一在Sync报文中携带。车载应用中,通常使用两步法。

在这里插入图片描述

Follow Up报文

Follow_Up报文携带相关Sync报文的出口时间戳信息。

preciseOriginTimestamp是GM节点发送Sync报文的时间。

在这里插入图片描述

Pdelay_Req报文

报文的数据段不携带信息,为保留值。
在这里插入图片描述

Pdelay_Resp报文

requestReceiptTimestamp为Responder接收Pdelay_Req报文的入口时间。

requestingPortIdentity为Pdelay_Req报文的源端口信息。

在这里插入图片描述

Pdelay_Resp_Follow_Up报文

responseOriginTimestamp为Responder发送Pdelay_Resp报文的出口时间。

requestingPortIdentity同样为Pdelay_Req报文的源端口信息。

在这里插入图片描述

▎总结

TSN任务组颁布了IEEE 802.1AS-2020协议以解决本地局域网中各组件的时间同步问题。在一个gPTP域中,各节点测量传播延时,转发延时和频率比值。通过BMCA算法或预配置方式,系统确定主时钟节点并向其他节点发送时间同步报文,完成时间同步。本期协议解读到此就告一段落了,下期我们将为大家带来更多精彩的TSN协议系列解读,敬请期待。

▎参考文献

[1] IEEE Std 802.1AS™‐2020 IEEE Standard for Local and Metropolitan Area Networks —Timing and Synchronization for Time‐Sensitive Applications

[2] IEEE Std 1588™-2008 IEEE Standard for a Precision Clock Synchronization Protocol for Networked Measurement and Control Systems

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

好书推荐 :《 提问的艺术:让 ChatGPT 给出高质量答案 》

AGI 时代降临!还不知如何向 ChatGPT 提问? 恰当的提示至关重要!《提问的艺术—让 ChatGPT 给出高质量答案》一书,共 24 章,系统介绍了如何向 ChatGPT 提问以获取优质答案,是 ChatGPT 时代的入门指南&#x…

【 Mysql8.0 忘记登录密码 可以试试 】

** Mysql8.0 忘记登录密码 可以试试 ** 2024-3-21 段子手168 1、首先停止 mysql 服务 ,WIN R 打开运行,输入 services.msc 回车打开服务,找到 mysql 服务,停止。 然后 WIN R 打开运行,输入 CMD 打开控制台终端输…

‘npm‘ 不是内部或外部命令,也不是可运行的程序

npm认识三年了,今天才知道这是node.js的命令 也就是说,想要在cmd里面运行 npm 命令,但就的安装node.js 1. node.js安装 没有安装包的先下载安装包:下载 | Node.js 中文网 (nodejs.cn) 下载之后双击打开,一路安装确…

如何为企业策划一场XR虚拟直播?

活动年年办,都是老一套,想玩点新花样? 预算有限,但还是想把活动办的逼格高一点? 想通过活动,让更多的人知道自己企业的品牌? 随着AIGC技术的不断演变,企业活动的形式和内容也在不…

Node.js之沙盒专题

​ Node.js一直是薄弱项,今天特意整理一下,基本上是各个大佬写的大杂烩,仅用于学习记录~~~ 1. child_process 首先介绍一下nodejs中用来执行系统命令的模块child_process。Nodejs通过使用child_process模块来生成多个子进程来处理其他事物…

滤波器自动化测试:用网络分析仪、示波器、功率计测量功率

滤波器的功率是电压与电流的乘积,滤波器的功率可以通过测量电压与电流计算得出。滤波器的功率对滤波器的稳定运行是至关重要的,如果功率过小可能会导致滤波器无法正常工作;功率越大则有可能会造成滤波器的损坏。因此滤波器的功率测量是非常重要的步骤。 …

基于51单片机的客车汽车安全气囊控制器Proteus仿真

地址:https://pan.baidu.com/s/10enj1EYm_0Z8f_19Sz_eCQ 提取码:1234 仿真图: 芯片/模块的特点: AT89C52简介: AT89C52是一款经典的8位单片机,是意法半导体(STMicroelectronics)公…

第一周周考技能

文章目录 1月1. 任意输入一个3位整数(100~999,包含100与999),判断输入的整数是否是质数,如果是质数则输出是质数,否则输出不是质数2.“降序数”是指一个自然数的低位数字不大于高位数字的数。例如&#xff…

工单系统大揭秘!选择工单系统需注意的关键因素!

如何选择工单系统?工单系统作为数字化工具,可以帮助企业高效处理工单业务问题,助力企业数字化转型。目前市面上的工单系统可谓是琳琅满目。 本文详细讲解了目前市面上工单系统的主要类型,以及企业该如何选择工单系统~ 一、工单系…

怎样批量在文件名后面加上相同的字符?

怎样批量在文件名后面加上相同的字符?在日常工作中,有时我们需要对大量文件进行批量处理,比如在文件名后面统一添加相同的字符。这项工作可以通过编写简单的脚本或程序来实现,从而提高工作效率。批量在文件名后面加上相同的字符是…

JS-13-高阶函数

一、高阶函数的定义 JavaScript的函数其实都指向某个变量,如: var abs function (x) {// 函数体 }; 既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函…

CCF-CSP认证考试 202212-2 训练计划 100分题解

更多 CSP 认证考试题目题解可以前往:CSP-CCF 认证考试真题题解 原题链接: 202212-2 训练计划 时间限制: 1.0s 内存限制: 512.0MB 问题背景 西西艾弗岛荒野求生大赛还有 n n n 天开幕! 问题描述 为了在大赛中取得…

shell实现查询进程号并批量kill(脚本)

问题或需求描述 在shell中,如果你想通过命令行查询出一系列匹配某个关键词的进程,并使用xargs命令批量结束这些进程,可以按照以下步骤操作: # 查询并提取进程号 pgrep -f "关键词" | xargs kill# 或者,如果…

Qt 用任意直线来分割多边形,返回分割后的多边形

任意直线分割多边形,返回分割后的多边形 效果 使用示例 QPolygonF LineSegmentationPolygon(const QPolygonF& poly, const QLineF& line, SideToRemove sideToRemove)源码 enum class SideToRemove {None,Left,Right};// 直线分割多边形 QPolygonF LineS…

多叉树题目:N 叉树的前序遍历

文章目录 题目标题和出处难度题目描述要求示例数据范围进阶 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 解法三思路和算法代码复杂度分析 题目 标题和出处 标题:N 叉树的前序遍历 出处:589. N 叉树的前序遍历 难度 3 级 题目…

10-shell编程-辅助功能

一、字体颜色设置 第一种: \E[1:色号m需要变色的字符串\E[0m 第二种: \033[1:色号m需要变色的字符串\033[0m ########################### \E或者\033 #开启颜色功能 [1: #效果 31m #颜色色号 \E[0m #结束符 1,颜色案例 2,效果案例 二、gui&am…

波奇学Linux:网络接口

127.0.0.1本地回环ip&#xff0c;用于本地测试&#xff0c;不会进行网络通信 TCP是面向连接的&#xff0c;服务器比较被动 需要服套接字监听 listen状态 正常通信默认会进行主机序列和网络序列的转换 TcpServer.cc #pragma once#include<iostream> #include<string…

GAMES101 学习4

材质和外观 材质 BRDF 漫反射 任何方向的光进来都会被均匀的反射到周围各个不同的方向上去 假设能量守恒&#xff0c;那么 Li Lo&#xff0c;这之后BRDF就 &#xff0c;就可以定义一个反照率 &#xff08;Albeo&#xff09; - &#xff0c;在&#xff08;0 - 1&#xff0…

【包远程安装运行】SpringBoot+Mysql实现的图书商城平台+演示视频+开发文档(论文模板)

今天发布的是一款由SpringBootMySQL实现的在线图书商城系统源码&#xff0c;系统主要实现的功能分前台用户和后台管理。 前台功能主要有&#xff1a; 图书物展示、图书分类展示、图书搜索、用户登录注册、图书收藏、图书添加购物车、用户个人信息修改、用户充值提交、购物车图…

【Linux基础】ubuntu虚拟机配置及原理

一、虚拟机 虚拟机&#xff08;Virtual Machine&#xff0c;VM&#xff09;是一种软件实现的计算机系统&#xff0c;它在物理计算机上模拟了一个完整的计算机硬件环境&#xff0c;包括处理器、内存、存储设备和网络接口等。通过虚拟机&#xff0c;用户可以在单个物理计算机上同…
最新文章