TSN协议原理-最详细全面的 IEEE 802.1AS(gPTP) 协议深度解析学习
博主在学习gPTP时在网络上查阅了大量资料发现并没有一篇文章讲的很透彻大多都对协议看法理解非常片面。本文在精读AS2020协议手册后总结对很多细节部分进行了探究。并对整体架构逻辑有清晰的理解。这也是博主的第一篇博文如果对你有帮助感谢收藏点赞转载请注明出处。1 gPTP是什么1.1 gPTP概述WHAT提供基于标准以太网/TSN的网络内纳秒级的高精度、高可靠性时间同步。WHY多轴运动控制要求多个驱动器/传感器的位置、速度指令在微秒级完全同步。 分布式 I/O 采集、闭环控制回路依赖各传感器数据时间戳严格对齐。 安全系统需要超低确定时延通信的基础。HOW支持分布式时钟提供全局时间基准消除时钟漂移。WHERE适用于工业自动化802.1AS标准特别针对工业自动化领域提供高精度时间同步解决方案。WHENPTP 1588 - gPTP 2011 - gPTP 2020 不断去除冗余提升时钟精度面向对象逐渐更加精细。1.2 gPTP网络拓扑结构分析domain 是一个逻辑概念用于隔离不同时间同步网络。domain0向后兼容性。GM 是域中所有其他PTP实例同步的时间源由BMCA选举产生提供时间基准。relay instance 能够使用IEEE 802.1AS协议将在一个PTP端口上接收到的同步时间传送到其他PTP端口。非时钟源仅再生时间同步报文。end instance只有一个PTP端口的PTP实例。instance IEEE 802.1AS协议的一个实例在一个域中的单个时间感知系统中运行。PTP实例实现IEEE标准802.1AS中指定为适用于PTP中继实例或PTP终端实例的部分2 gPTP协议流程2.1 时间同步流程PTP主时钟选择 在802.1AS网络中通过Best Master Clock Algorithm选择最优主时钟确保时间同步的准确性。时间戳交换机制 设备间交换时间戳信息确保时间同步的精确性是实现网络时间同步的关键步骤。 主时钟发送带有时间戳的Sync报文。 跟随报文follow up发送精确的Sync发送时间。延迟请求-响应机制通过测量请求和响应之间的往返时间计算出精确的延迟值用于校准时间同步。时钟调整 从时钟根据计算结果调整本地时钟2.2 BMCA选举有能力的时钟被选择为“best Master”与其他潜在的GM进行竞争基于时钟的属性描述Announce时钟自行判断 – BMCA将建立master-slave的等级树潜在的主时钟交换Announce消息进行比较时钟比较将根据Announce中的以下属性Priority1配置时钟的优先级clockClass时钟的可追溯性clockAccuracy时钟精度offsetScaledLogVariance时钟稳定性Priority2可配置的时钟次优先级clockIdentity时钟ID基于比较得到端口 MASTER或SLAVE 2.3 Sync Follow upB收到A的与GM时间差以及与GM频率比。B计算B与A之间的时间间隔并修改修正域。时间间隔传播延迟驻留时间 以GM为基准传播延迟 * rateratioA 转化为GM基准驻留时间 * rateratioB 转化为GM基准本地 rateratio B 由 A与GM比率 * B与A的比率即neighborraterato的值计算得出 B将新的 preciseorigintimestamp correcttionfield rareratio 发送给 CQ各个实例的时钟频率都已知 这里是手册协议具体流程步骤也就是真实的报文中信息转递以及改变的情况那么我们发现 这里B与A 的频率比是作为已知量的也就是说每个相邻的实例之间的频率比都是已知的那么如何做到的呢在实际的gPTP通信中master会不停地发送sync和follow-up slave能够测量出自己收到sync报文的时间即上图中的T2和T4这个时间是以slave的本地时钟为基准的。 在每个sync报文之后master都会发送一个follow-up报文用来告诉slave自己发送上一条sync报文时的时间戳以master的本地时钟为基准。是sync报文的实际发送时间即上图中的T1和T3。通过T1、T3和T2、T4slave能够计算出自己的时钟频率与master之间的偏差 k T3-T1/T4-T2 k就是master和slave的频率比 也就是neighborrateratio的值。在其他资料中通过图一来配对求出K的值这其实是不合理的并且对协议理解造成很大的影响。在实际中sync和follow-up报文被不停发送在确定每个实例和GM之间的频率比那么现在又有几个问题出现Qsync 和 follow up 之间的发送间隔是否会有影响?T1,T3实际是由follow up报文中包含是sync发送的真实时间在master端测量T2,T4是在slave端通过local clock 记录 两组syncfollow up 报文之间的间隔时间还是相同的所以sync和follow up报文之间发送间隔不会影响。而最大的间隔时间应是两次连续sync之间的间隔通常为125ms。Q为什么不直接用主时钟频率作为参数而用中间频率对主时钟频率进行传递?为了动态的驯服时钟如果是固定的值会产生频率偏移Q中间时钟波动是否会对后续链路上实例产生影响?会影响修正域的值也就是链路延迟时间从而影响时间同步精度。2.4 Pdelay计算标准间隔持续时间1s在主从时钟树下所有关联端口都需要执行 -简化后仅需Slave一侧发送请求即可通过时间戳t1~4获取路径的往返时间 所有时间戳需要被发起端获知发起端才能获知链路的传播时延 t1t4在发起端本身可获知 通过传递的Pdelay_Resp和Pdelay_Resp_Follow_Up获得t2和t3- Pdelay t4−t1−(t3−t2)/2 前提是链路对称Pdelay进行周期测量以便逼近真实值这里很容易理解整个发送时间-驻留时间延迟时间引申出更深的问题那对于链路不对称的情况如何计算这里报文中添加了另一个量delayAsymmetry延迟不对称用来标注那么如何使用这个量呢QdelayAsymmetry正负值如何确定QdelayAsymmetry正负确定的意义/ 平均链路延迟是以哪个方向为参考delayAsymmetry的定义是上行链路-下行链路的延迟时间即req--rsp - rep--req的差那么它的方向是以req--rsp这个方向为准的。除2是因为对单条链路取平均延迟。2.5 协议分层 / 实例内部我们刚刚计算的是路径上的延迟并没有考虑实例内部产生的延迟在实例内部由于MAC层帧处理流水线PHY芯片对信号进行处理会导致延迟硬件时间戳位于PTP实例与网络媒体的边界。 使传输延迟在gPTP视角下表现为 固定且对称即使MAC客户端观察到实际延迟不对称 对于实例内部处理时间产生的延迟进行补偿。也就是让我们不去考虑实例内部延迟通过时间戳只计算链路延迟。2.6 Pdelay 补偿这张图片非常重要从实例内部分层的角度介绍Pdelay补偿机制值得关注的是reference plane的位置和timestamp measurement plane 的位置。参考平面Reference Plane 位置PTP实例的PTP端口与网络物理介质之间的边界。 作用避免PHY处理延迟或MAC队列引入的抖动。 标记PTP协议栈与底层物理传输的交互边界。 使传输延迟在gPTP视角下表现为 固定且对称即使MAC客户端观察到实际延迟不对称。时间戳测量平面Timestamp Measurement Plane 位置低于MAC层的重传和队列操作作用确保记录数据帧实际进入/离开物理介质的瞬间 时间戳标记点Timestamp Point通过此平面时触发LocalClock记录时间戳。其中Egresstimestamp和Ingresstimestamp 分别是出口和进入实例内部时进行打戳也就是在进行链路延时测量时用的时间戳位于参考平面。egressmeasuredtimestamp和ingressmeasuredtimestamp是在MAC层或MAC和PHY的接口实际打的时间戳是信息通过处理后实际到达的时间而Latency就是中间对信息进行处理所需要的时间。这个公式是很好理解的但是引申出几个问题Q对于egress 和 ingress mesurement plane 位置是不对称的 /为什么egress 和igress 的larency是不同的Qegress 和 ingress mesurement plane 位置具体在哪2.7 Ingress / Engress硅基芯片中 模拟接收链 与 数字发送链 的固有差异Ingress路径信号降噪、时钟恢复、串并转换 → 延迟较高且波动大Egress路径数据封装、预加重、阻抗匹配 → 延迟较低且稳定接收路径Ingress外部信号 → 参考平面→[PHY_RX] → 时钟恢复/整形 → MAC[Ingress测量平面] → 上层MAC中具体位置 [PHY接收数据] → [MAC入口触发器] → [记录时间戳 t_ingress] → [FIFO缓冲] → [帧解析/CRC校验] → [协议栈处理]发送路径Egress上层 → MAC [Egress测量平面] → [PHY_TX] → 预加重/驱动 → 参考平面记录t1→ 外部信号MAC中具体位置 [协议栈组帧] → [添加MAC头/CRC] → [FIFO排队] → [MAC出口触发器] → [记录时间戳 t_egress] → [PHY发送]现在上述两个问题就有了答案有一个值得注意的点是对于PHY芯片产生的时延对它进行测量的同时也引进了新的不确定时延-即测量这一行为一般工程中是服务商对PHY芯片时延进行测量后对其进行标注这也是PHY芯片选型的重要因素。2.8 时钟调整我们的根本目的是对slave进行时钟驯服那么在同一时刻下在上述计算式中Tb是引ave在某时刻的本地时间戳Ta是该时刻master上的本地时间戳。同步的目 的就是根据Tb可以推算出Ta的值。在这个计算式中slave通过sync和follow_up报文获得T1和T2 delay和R在之前的延迟时间和频率差异计算中已经获得。所以slave能够根据本地时间戳Tb计算出 master上的时间戳,时间同步就实现了。这一公式的前提是master和slave都已经完成了和主时钟频率的校准也就是说是在主时钟时基下进行计算的。2.9 协议分层 / 实例内部※在了解完时间同步协议过程后我们对实例内部也有了一定的认识和了解那么实例内部报文是如何进行传递的呢介质无关层 MI 隔离底层差异实现统一同步屏蔽不同介质的延迟特性差异介质相关层 MD在测量平面精确记录时间对接不同类型的物理介质Entityportsync 转发最佳主时钟选择信息和时间同步信息sitesync 最佳主时钟选择将同步信息和主时钟信息转发给其他master端口Data structuresportsyncsync当从PortSync或ClockMaster实体向SiteSync实体发送时提供主时钟定时信息以及同步接收超时发生的时间。当从SiteSync实体发送到PortSync或ClockSlave实体时该结构包含计算同步信息所需的信息。mdsyncrecive该结构向PortSync实体提供主时钟定时信息和接收补偿了上行链路上的传播时间的时间同步事件消息。计算主时钟相对于本地时钟的速率比。mdsyncsend该结构包含PortSync实体发送到该PTP端口的MD实体的同步消息。整体而言在sitesync portsync clock 这些实体的端口处 运行着很多状态机这些状态机通过传递不同的数据结构来进行报文的传输。3 gPTP 2020 VS 20113.1 架构升级Time-aware network – 多时钟域场景Time-aware network – 同步路径冗余 一个时钟源 双域Time-aware network – 主时钟冗余 一个主要的GM 一个热备的GM 两个时钟域Time-aware network – GM 同步路径冗余 一个主要的GM 一个热备的GM 每个GM建立2个同步树 4个时钟域3.2 E2E/P2P/ISP2P/CMLDS相信在网上查阅资料时看到了很多E2Epoint-to-pointpeer-to-peer之类的描述很容易产生混淆和疑惑。E2E是端到端延迟测量他之间测量两个终点之间的延时时间而不关注内部细节。point-to-point即P2P是点对点的延迟测量他测量两个实例之间的延时需要每跳测量。peer-to-peer是对等延迟机制是上述对Pdelay进行测量的描述在测量Pdelay是关注req和rsp并不在乎是master还是slave地位上是平等的。ISP2P是独立段点对点测量是对P2P进行了升级P2P理解为两个实体之间的延迟包括链路延迟和PHY层进行处理的延迟ISP2P将链路延迟记录下来复用给共用该段相同的物理介质的不同实例而不需要每次都测量ISP2P用时隙分层技术如AB、CD此时是用在同一物理介质上的两组实例在一个时钟周期内前一个时隙用于AB传输后一个时隙用于CD传输。CMLDS如果时间感知系统实现了多个域则MDPdelayReq、MDPdelayResp这两个状态机应提供共同平均链路延迟服务CMLDS使得平均传播延迟和邻居速率比可用于所有活动域。维度E2E端到端P2P点对点ISP2P独立段点对点CMLDS跨域延迟共享测量对象端到端总路径延迟逐跳链路延迟物理介质共享段延迟物理链路延迟多域共享协议开销单次测量每跳独立测量全总线共享测量单次测量多域复用精度影响累积误差大单跳误差小较高精度最高安全隔离全路径耦合跳间隔离虚拟段隔离域间逻辑隔离3.3 1588-2011-2020简述AS2011是IEEE 1588的子集对其功能进行了缩减提升了时间精度。AS2020是AS2011的升级版提升了时间精度引出CMLDS、relay instance 、relay instance概念。通过TLV 进一步提升了安全性。4 gPTP报文解析4.1 GPTP报文事件Event消息Sync 传递时间Pdelay_Request 请求Pdelay测量Pdelay_Response 响应Pdelay测量一般General消息Announce BMCA 频率同步Follow_Up 2步法在Sync消息之后发送Pdelay_Resoponse_Follow_Up 2步法在Pdelay_Response之后发送Signalling 管理帧请求发送端改变Sync/Pdelay_Request/Announce消息发送速率事件消息带有时间戳而一般消息不带有。4.2 公共头部信息MajorSdoIdgPTP 域常值1表示符合IEEE 802.1工作组的PTP ProfileMinorSdoIdgPTP 域常值0 2020新增与MajorSdioId组合使用MessageType消息类型versionPTP2非2消息被忽略messageLength报文长度DomainNumber域编号Flags下表correctionField修正时间messageTypeSpecific0忽略sourcePortIdentity源端口IDsequenceId序列号controlField0logMessageInterval消息发送周期4.3 Sync头部信息这里提到了一步法和两步法一步法即sync携带时间信息两步法由follow up携带时间信息4.4 Follow_Up头部信息tlvType 3lengthField28organizationId00-80-C2organizationSubType1cumulativeScaledRateOffset累计频率比gmTimeBaseIndicatorGM时基切换指示lastGmPhaseChange最近一次的相位变化值scaledLastGmFreqChange最近一次的频率变化值当前时钟频率-上一次的时钟频率4.5 Pdelay_Req头部信息4.6 Pdelay_Resp头部信息4.7 Pdelay_Resp_Follow_Up头部信息requestingPortIdentity Pdelay_Req消息的sourcePortIdentity4.8 Announce报文格式4.9 signaling 报文格式5 车载gPTP车载GPTP对比普通GPTP为什么不同我们从以下两点考虑车载网络特点 静态网络 关注启动时间 关注功能安全车载时间同步的目标 减少启动时间 减少复杂度 改进功能安全5.1 车载GPTP升级取消BMCA静态角色配置 T-BOX固定为GrandmasterECU固定为Slave。 作用 冷启动加速同步收敛时间从秒级降至 ≤100 ms。 资源节省减少CPU负载。Holdover模式时钟保持 丢失 ≥3 个连续Sync报文。 Slave的LocalClock以最后一次驯服的频率自由运行。 继续向下游Slave广播Sync报文ClockClass。 作用 功能安全主时钟失效时维持基础同步。 平滑恢复主时钟恢复后无缝切换避免时间跳变。TLV签名防网络攻击报文类型标准gPTP车载gPTP作用Announce周期广播1 Hz完全移除减少带宽占用避免无效广播。Sync/Follow_Up默认1秒周期可配置至10 Hz如紧急制动需快速同步。Pdelay_Req/Resp每次同步均测量首次测量存储复用加速后续同步。EMI抑制 金属屏蔽腔体 差分信号隔离 电源滤波OCXO温补 将石英晶体置于恒温槽中加热至85°C拐点温度维持温度恒定±0.1°C时间测量粒度提升 时间戳内插技术 双沿采样 指数平均滤波器