TSN旨在通过对以太网数据流的控制和管理,在以太网网络中同时提供高性能、高可靠性和精确时延的实时通信,与高带宽高吞吐量的普通通信。以满足工业控制、汽车、音视频等领域对实时通信与大量数据传输的需求。IEEE Std 802.1AS 对 IEEE 1588 进行扩展产生了gPTP协议,它用于TSN中的时间同步,为数据流的控制和管理提供时间参考。本文对gPTP的基本工作原理进行介绍,以帮助你快速了解gPTP协议。
gPTP简介
一个时间感知网络由多个相互连接的支持gPTP的时间感知系统组成。这些时间感知系统可以是任何网络设备,包括桥接器、路由器和终端站等。每个时间感知系统支持的gPTP实例都在一个gPTP域中,这些gPTP实例都是该gPTP域的一部分。每个域中会选举出一个GrandMaster,域中的所有实例按照GrandMaster的时钟对网络流量进行调度和管理。一个时间感知系统可以支持多个gPTP实例,每个实例与不同的gPTP域相关联,成为多个gPTP域的一部分。PTP 实例分为两种类型
• PTP终端实例: 如果不是GrandMaster就是Slave,GrandMaster发送时间信息到域中其他实例,其他实例将自身时钟源同步到GrandMaster。
• PTP中继实例: 从主GrandMaster或其他中继实例接收时间信息,校正局域网和自身的延迟,并重新传输校正后的信息。
每个PTP实例都具有以下属性
• Priority1: 用于选举GrandMaster。取值范围为0-255,数值越小优先级越高,255代表实例不支持GrandMaster功能
• ClockClass: PTP实例的时钟源与国际标准时间或其他已知准确度的时钟之间的关系,该值越小与其标准时间的偏差越小
• ClockAccuracy: 时钟源的精度
• OffsetScaledLogVariance: 时钟源的稳定性
• Priority2: 作用与priority1相同,但优先级比priority1低
• ClockIdentity: 用于识别不同PTP实例
• TimeSource: 实例的时钟源类型如GNSS、原子钟或晶振
• NumberPorts: 实例有多少个端口
不同gPTP域通过域号与SdoId标识
• 域号范围为0-127,每个时间感知系统必须支持域0
• SdoId为12位无符号数,高4位位majorSdoId,低8位位minorSdoId。gPTP域的majorSdoId为0x1,minorSdoId为0x00
gPTP的工作流程
以下是简化的两个只有一个全双工以太网接口的gPTP设备连接后的通信流:
交换GptpCapable Signaling与Pdelay报文 gPTP要求相同域中的所有设备都支持gPTP,它不会通过不支持该协议的系统传输时间信息。支持802.1AS的设备会定期发送GptpCapable Signaling报文与PdelayReq报文,GptpCapable Signaling报文用于通知链路对端设备本设备支持gPTP,PdelayReq报文发起链路延迟测量请求,测得的链路延迟将用于判断链路中是否包含不支持802.1AS设备和随后的时间同步。设备通过以下条件判断链路及对端设备是否支持802.1AS (802.1AS-2020 11.2.2 Determination of asCapable and asCapableAcrossDomains)
■ 判断链路支持802.1AS (asCapableAcrossDomains)
o 链路正在交换延迟测量报文
o 延迟未超过meanLinkDelayThresh,100BASE-TX和1000BASE-T链路中该值为800纳秒
o 未收到对同一Pdelay_Req报文的多个响应
o 连接到链路的端口未收到来自自身或同一PTP实例的另一端口的响应
■ 判断链路支持特定PTP域 (asCapable)
o 链路支持802.1AS
o 收到来自相同域的GptpCapable报文 (neighborgptpcapable),或域号为0且收到SdoId为0x100的延迟测量报文(兼容802.1AS-2011)
如果链路未能满足以上要求,GptpCapable Signaling和PdelayReq报文仍然会持续发送以定期检查链路是否能运行802.1AS协议。交换Announce报文并选举Grandmaster802.1AS设备的Master端口会周期性发送Announce报文向其他设备通报GrandMaster信息,报文发送周期称为announceInterval。收到Announce报文的设备会使用BMCA (Best Master Clock Selection) 算法比较Announce报文中的GrandMaster,若Announce中的GrandMaster优于自身当前的GrandMaster,会将自身的GrandMaster替换为Announce中的GrandMaster。在设备未收到Announce报文时,会尝试将自身选举为GrandMaster。 BMCA主要通过systemIdentity判断哪个设备是更优的GrandMaster,设备该值越小代表它是更优的GrandMaster。设备的该值由它的以下参数按照有效位从高到低顺序连接而成:SystemIdentity
• Priority1 (1 octet; see 8.6.2.1)
• ClockClass (1 octet; see 8.6.2.2 and 6.4.3.8)
• ClockAccuracy (1 octet; see 8.6.2.3 and 6.4.3.8)
• OffsetScaledLogVariance (2 octets; see 8.6.2.4 and 6.4.3.8)
• Priority2 (1 octet; see 8.6.2.5)
• ClockIdentity (8 octets; see 8.5.2.2 and 6.4.3.6)
发送Sync报文同步时间
802.1AS设备的Master端口会周期性发送Sync报文,接收到该报文Slave设备将可计算出与Master设备的时钟偏移。
延迟测量
传播延迟测量始于发起方发出 Pdelay_Req 报文并生成时间戳t1。响应者接收到该报文并生成时间戳t2。响应者返回包含t2的Pdelay_Resp 报文,并生成时间戳t3。响应者在Pdelay_Resp_Follow_Up报文中返回t3。发起方在收到Pdelay_Resp报文后生成时间戳t4。随后发起方使用这四个时间戳通过以下公式计算平均传播延迟D(meanLinkDelay)。
时间同步
Master设备发送首先Sync报文并生成时间戳t1,随后发送包含t1的Followup报文。Slave设备收到Sync报文并生成时间戳t2。Slave设备使用这两个时间戳通过公式t2-t1-linkDelay得到自身时钟与Master时钟的偏移。
参考文献:
IEEE Std 802.1AS-2020
IEEE Std 1588-2019