802.1AS 延迟测量理解

协议:802.1AS-2020.pdf(这个有多域的概念)

802.1AS,2020版本的-网络基础文档类资源-CSDN下载

802.1AS的SystemIdentity理解_cao849861802的博客-CSDN博客

802.1AS的BMCA(最佳主时钟选举)理解_cao849861802的博客-CSDN博客

802.1AS 时钟同步原理理解_cao849861802的博客-CSDN博客

内容只作为我自己的理解;红色为自我理解内容,绿色和黑色为原文

10.1.2.1 LocalClock entity

LocalClock 实体是一个自由运行的本地时钟(见 3.16),它为 PTP 实例提供一个相对于任意时期的公共时间。 PTP 实例包含一个 LocalClock 实体。 LocalClock 实体的要求在 B.1 中规定。 所有时间戳都是相对于 LocalClock 实体获取的(见 8.4.3)。 LocalClock 实体还提供 currentTime 的值(见 10.2.4.12),它在状态机中用于指定各种计时器

11.1.2 Propagation delay measurement

图 11-1 说明了使用对等延迟机制测量全双工点对点 PTP 链路上的传播延迟。该机制与 IEEE Std 1588-2019 中描述的点对点延迟机制相同,专门用于两步 PTP Port并分别发送 requestReceiptTimestamp 和 responseOriginTimestamp [参见 11.4.2 中的 c) 8) IEEE 标准 1588-2019]。测量由每个全双工点对点 PTP 链路末端的每个端口进行。因此,共享 PTP 链路的两个端口将独立进行测量,结果两个端口都将知道传播延迟。这允许传输 11.1.3 中描述的时间同步信息,而与同步消息所采用的方向无关。传播延迟测量是在端口上进行的,否则会被用于消除循环拓扑的非 PTP 算法(例如,快速生成树协议)阻塞。这使得重新配置后不会丢失同步或更快地重新同步,因为传播延迟是已知的,并且不必在重新配置发生时进行初始测量。

由于传播延迟测量是使用相对于 PTP 链路末端每个端口的 LocalClock 实体的时间戳进行的,并且由此产生的平均延迟在响应者时基中表示(参见 11.2.19.3.4),因此无需测量 每个域中 PTP 链路的平均延迟,因为每个域中的平均延迟相同。 另外,neighborRateRatio(见 10.2.5.7)是响应者与请求者 LocalClock 频率的比值,在所有域中也是相同的。 因此,传播延迟和neighborRateRatio 测量是与域无关的。 调用导致进行这些测量的相应状态机的单个实例,而不是每个域一个实例,并且结果可用于所有域。 用于测量的 PTP 消息(即 Pdelay_Req、Pdelay_Resp 和 Pdelay_Resp_Follow_Up;参见 11.4.5 到 11.4.7)在 domainNumber 字段中携带 0,但不使用该值。

这里需要注意的是,链路延迟与域无关,只与PTP端口相关的链路有关,所以在每个端口上应该有一个延迟测量,不是每个域一个延迟测量;而测量结果可以给所有域使用;

延迟测量所用的时间戳都是来源于自己的PTP实例的localclock实体,localclock实体也就是在时间敏感系统的一个独立运行的时钟;

neighborRateRatio=端口另一侧的PTP实例的localclock的频率:本PTP实例的localclock频率

在图 11-1 中,传播延迟测量由 PTP 链路一端的时间感知系统启动; 这个时间感知系统被称为对等延迟发起者。 为了测量的目的,另一个时间感知系统是对等延迟响应者。 类似的测量发生在相反的方向,发起者和响应者互换,图 11-1 中消息的方向相反

每个时间敏感系统的每个PTP端口都会运行这个延迟测量都会自我发起,然后测量;

802.1AS 延迟测量理解_第1张图片

传播延迟测量从发起者发出 Pdelay_Req 消息并生成时间戳 t1 开始。 响应者收到此消息并在时间 t2 上加上时间戳。 响应者返回一个 Pdelay_Resp 消息并用时间 t3 给它加上时间戳。 响应者在 Pdelay_Resp 消息中返回时间 t2,在 Pdelay_Resp_Follow_Up 消息中返回时间 t3。 发起者在收到 Pdelay_Resp 消息后生成时间戳 t4。 然后发起者使用这四个时间戳来计算平均传播延迟(即 meanLinkDelay;参见 8.3),如公式 (11-1) 所示

其中 D 是测量的平均传播延迟,其他量在图 11-1 中定义。

802.1AS 延迟测量理解_第2张图片

这里注意t1是从左侧的时间敏感系统的localclock获取的时间戳,t2是从右侧的时间敏感系统的localclock获取的时间戳,t3是从右侧的时间敏感系统的localclock获取的时间戳,t4是从左侧的时间敏感系统的localclock获取的时间戳,则t4-t1其实就是相对时间,t3-t2也是相对时间,然后

(t4-t1)-(t3-t2)就是相对的时间差;

请注意,这里测量的是平均传播延迟。 任何 PTP 链路不对称都按照 8.3 中的描述进行建模。 任何未经校正的不对称都会在传输的同步时间值中引入错误

一般情况我们都使用平均传播延迟测量,虽然协议中有讲非对称的链路延迟的建模但实际使用的时候为了简单可以直接使用平均延迟测量;

平均传播延迟测量的精度取决于时间 t1、t2、t3 和 t4 的测量精度。此外,等式 (11-1) 假设发起者和响应者时间戳是相对于具有相同频率的时钟获取的。在实践中,t1 和 t4 是相对于发起者时间感知系统的 LocalClock 实体测量的,而 t2 和 t3 是相对于响应者时间感知系统的 LocalClock 实体测量的。如果需要相对于响应者时基测量传播延迟,则必须将公式 (11-1) 中的 (t4 – t1) 项乘以响应者相对于发起者的速率比,否则将出现误差,其中 y 是响应者相对于发起者的频率偏移。同样,如果需要相对于发起者时基的传播延迟测量,则必须将等式 (11-1) 中的项 (t3 – t2) 乘以发起者相对于响应者的速率比,否则将有误差,其中 y 是发起者相对于响应者的频率偏移。最后,如果需要相对于主时钟时基的传播延迟测量,则必须将每个项乘以主时钟相对于表示该项的时基的速率比

这里提到的速率比就是neighborRateRatio,因为计算出来的链路延迟两端的localclock的频率可能不一致,所以需要乘以neighborRateRatio来算出相对于本地localclock的频率的链路延迟;

由于时间测量粒度,测量的传播延迟也可能存在误差(见 B.1.2)。 例如,如果时间测量粒度为 40 ns(如 B.1.2 中规定),则时间戳 t1、t2、t3 和/或 t4 可以经历 40 ns 的步长变化。 发生这种情况时,测得的传播延迟 D 将改变 20 ns(如果多个时间戳经历了 40 ns 的阶跃变化,则为 20 ns 的倍数)。 实际传播延迟没有改变 20 ns; 效果是由于时间测量粒度。 通过对连续测量的传播延迟值进行平均,可以减少这种影响并提高精度。 例如,可以使用指数平均滤波器,即如公式 (11-2) 所示。

802.1AS 延迟测量理解_第3张图片

变量a是指数加权因子; 它可以设置为使得过去的传播延迟测量在 M 次测量后的权重为 1/e,即如公式 (11-3) 所示

必须初始化上述平均器。 一种方法是使用对当前测量进行的测量的简单平均值(即样本值的总和除以样本数),直到累积了 M 个测量窗口。 在这种情况下,公式 (11-2) 仅用于 k >M。对于 k <=M,平均传播延迟由公式 (11-4) 给出 

这里内容其实就是每次算出来的延迟测量的平均值都和之前保存的平均值取平均,比如之前是k-1次测量的值为Dk-1,Dk是第k次测量的值,则现在的D=((k-1)*(Dk-1)+(Dk))/k,这种方式只是一种示例,可以用其他的方式实现;

响应者相对于发起者的速率比是变量 neighborRateRatio(见 10.2.5.7)。 它由 MDPdelayReq 状态机(见 11.2.19)的函数 computePdelayRateRatio()(见 11.2.19.3.3)使用 t3 和 t4 的连续值计算。 正如在 computePdelayRateRatio() 的描述中所指出的,只要满足 B.2.4 的性能要求,任何使用该信息的方案都是可以接受的。 11.2.19.3.3 的注 1 给出了一个示例方案

neighborRateRatio的计算如下:

11.2.19.3.3 computePdelayRateRatio():

这个函数是用来计算neighborRateRatio的,这个函数的内容可以自己查看,这边其实理解的意思就是利用Pdelay_Resp和Pdelay_Resp_Follow_Up报文,因为这两个报文一个报文可以记录对方的时间敏感系统的时间(相对于对方的localclock的)一个可以得到本地的时间敏感系统的时间(相对于本localclock的)然后当接收到第N个的时候,利用对端的第N个时间减去对端的第0个时间戳然后比上本地的第N个时间减去本地的第0个时间戳,就可以计算出neighborRateRatio;

你可能感兴趣的:(tsn,网络协议,网络,802.1as,tsn)