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