一文讲懂gPTP

原文链接:https://zhuanlan.zhihu.com/p/113398852

在这里插入图片描述

一文讲懂gPTP

简介:
gPTP是general precise time protocol的简称,是PTP协议的派生。

gPTP的目的是确保所有局域网里的节点的时间完全一致(ns级别的误差),下面让我们直奔主题。

如何达到NS级别的误差:

为了达到ns基本的误差,gPTP实现了哪些要求呢?

gPTP协议基于L2层传输

在OSI网络模型里,L2是MAC层,L3是IP层,我们通常见到的如交换机是L2层的转发,路由器是L3层的转发。gPTP协议是基于L2层的传播,那么就决定了一个特性,只能在局域网里传播,不能通过路由器往WAN网传输。为了达到ns级别的延时,这个也是必须做的。

MAC上的硬件支持

为了测量更精准的时间,我们必须精准的知道一个MAC帧出去的时间,和收到一个MAC帧的时间,这个地方不能通过软件来获得,因为如果通过软件来获取时间,进出终端,任务抢占的时间是不确定的,不可测的。

这里我们来看一下S32K148的MAC的简单框图
在这里插入图片描述
MAC里包含了一个timer,通常这个timer是32bit的,当然如果是64bit的就最好,每次当一帧出去的时候,会有一个timestamp从timer上记录下来,这个时候程序任何时候处理,都知道这一帧出去的真正时间。

通常,这个timer里得到的值最好是ns,假如时钟是100M,那么每一个时钟timer增加10。

测量网线上的延时

为了到达ns级别的延时,网线上的传输时间自然不能忽略,如何测量网线上的传输延时呢?

专业名称叫 peer to peer delay
在这里插入图片描述
我们建设A想知道自己传输到B的延时有多少,怎么办的。

A会发出一个信息(PdelayReq,这个信息的内容是什么不重要),由MAC记录下离开MAC发送到网线上的真正时间t1,B收到这一帧,由MAC记录下收到这一帧的时间t2,然后B会发送一个信息(PdelayResp, 这个信息的内容是什么不重要),同样的B记录下t3,A会记录下t4,最后B会把(t2,t3 装再Pdelay_Resp_Follow_UP)这个帧里面发到A,这时候A会有4个时间数据,t1,t2,t3,t4。

我们假设A,B 时间相差offset,线上传输延时为delay.

t1+delay=t2+offset

t3+delay=t4-offset

delay=(t2-t1+t4-t3)/2

这个时候我们就可以测到线上的延时是多少了。

在汽车以太网中,这个测量过程A和B都会互相发起,测量。但是不用太频繁,因为这个值主要受线的长度影响,一旦固定下来,就不会有大的变化了。

有了上面三个因素:

gPTP协议基于L2层传输
MAC上的硬件支持
测量网线上的延时

时间同步:

gPTP规定一个局域网里只能有一个master,其他全部是slave,同时只有endpoint能参与作为时钟节点,bridge不能作为时钟节点,只能作为透明时钟。

在这里插入图片描述
在汽车以太网中,不需要动态协商谁是master节点,通常是预先设定好的。

在这里插入图片描述
只有master节点能发送,sync 和 follow_up这两个帧,其实这个的作用就是告诉所有slave节点,我的时间是多少,你应该和我设置为一样的。

在上图中,master发出sync的时间为 te11,slave收到的时间为tb11,同时master发送follow-up携带te11,告诉slave,这个时候slave就有了两个时间,tb11,te11。

这个时候slave自然就知道自己和master的时间差是多少了,这个地方还有一个重要的一点,slave端还要加上Pdelay这个时间,要把在网线上传输的时间加上。这个时间我们master和slave的时间就一样了。

SLAVE有了这个时间该如何处理?

我们再来看MAC的timer计数器,这个计数器的时钟通常来在晶振然后PLL作为输入,既然是晶振,那么master和slave的晶振就必然会有误差,随着时间的积累会越来越大。

所有SLAVE需要做的就是利用master发来的sync,follow-up帧和测量的pDelay来纠正这个timer计数器里的值。

这个通常会有硬件上的支持去更改,再看一下S32K148的MAC的框图

在这里插入图片描述
这里不去细讲这个,有兴趣可以去看看S32K148的RM。

有了gPTP的协议支持,这个时候不管是master的代码去读timer的值,还是slave的代码去读timer的值,我们理论上认为去到的值都是一样的了。

下图是汽车上gPTP的一些时间标准。
在这里插入图片描述
更多细节可以看:

https://link.zhihu.com/?target=https%3A//avnu.org/wp-content/uploads/2014/05/AutoCDSFunctionalSpec-1_4-public_with_legal_notices.pdf

本文主要介绍了gPTP的endpoint的一些特性,后续还会继续介绍一些gPTP bridge节点的一些特性,还有hybird模式的场景等等。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值