搜索
bottom↓
回复: 23

有没有搞过Linuxptp同步的朋友?ptp对时无法更新到主系统时钟

[复制链接]

出0入8汤圆

发表于 2023-8-11 19:50:09 来自手机 | 显示全部楼层 |阅读模式
首先用ptp4l  得到和主站的系统偏差和线路延时?然后 使用phc2sys  同步时钟到设备的主时钟。 通过date命令修改主站日期时间,但是用date查看从机的时间没有发生变化。照理说,    ptp4l把线路延时和时钟偏差都算出来了,为啥最后日期对不上号呢?  

出0入8汤圆

 楼主| 发表于 2023-8-11 19:51:03 来自手机 | 显示全部楼层
理论上主站的时间标了,从找的应该跟着变才对啊?

出0入148汤圆

发表于 2023-8-12 05:13:51 来自手机 | 显示全部楼层
楼主用哪款以太网芯片?这种应用有点小众估计只能自己慢慢排查

出0入42汤圆

发表于 2023-8-12 08:12:44 来自手机 | 显示全部楼层
改系统时间权限不够?

出0入8汤圆

 楼主| 发表于 2023-8-12 09:46:00 来自手机 | 显示全部楼层
yplin27 发表于 2023-8-12 05:13
楼主用哪款以太网芯片?这种应用有点小众估计只能自己慢慢排查
(引用自3楼)

imx系列的Linux板子

出0入8汤圆

 楼主| 发表于 2023-8-12 09:46:25 来自手机 | 显示全部楼层
albert_w 发表于 2023-8-12 08:12
改系统时间权限不够?
(引用自4楼)

应该不是这个问题

出0入148汤圆

发表于 2023-8-12 13:11:17 | 显示全部楼层
justdomyself 发表于 2023-8-12 09:46
imx系列的Linux板子
(引用自5楼)

是软件ptp还是硬件ptp?可以先抓包看看ptp协议有没有跑起来

出0入8汤圆

 楼主| 发表于 2023-8-12 21:10:28 来自手机 | 显示全部楼层
yplin27 发表于 2023-8-12 13:11
是软件ptp还是硬件ptp?可以先抓包看看ptp协议有没有跑起来
(引用自7楼)

硬件ptp。ptp4l运行是正常的。首先主机跑起来,运行ptp4l和phcsyc,然后从机也运行起来。  开始从机的时间和主机是不一样的,但是这个时候时间能同步上,到这里一切都是正常的。

下面做个实验,通过date修改主机的系统时间,改几个小时或者几天,然后 从机就报错,说变化超预期,当然,从机的时间没有跟着变过来。
这就是问题,为啥改了主机时间,从机不会跟着修正。 但是主机和从机最开始启动的时候又能够 同步上? 是我的测试方法有问题?还是没有用对?  谢谢解答!!!

出0入148汤圆

发表于 2023-8-12 23:43:44 来自手机 | 显示全部楼层
justdomyself 发表于 2023-8-12 21:10
硬件ptp。ptp4l运行是正常的。首先主机跑起来,运行ptp4l和phcsyc,然后从机也运行起来。  开始从机的时间 ...
(引用自8楼)

既然有报错信息那直接看源码就好吧,说不定人家代码逻辑就是这样,或者有配置项

出65入0汤圆

发表于 2023-8-13 06:57:55 来自手机 | 显示全部楼层
本帖最后由 luweixuan 于 2023-8-13 07:02 编辑
justdomyself 发表于 2023-8-12 21:10
硬件ptp。ptp4l运行是正常的。首先主机跑起来,运行ptp4l和phcsyc,然后从机也运行起来。  开始从机的时间 ...
(引用自8楼)


ptp有最佳时钟策略,你主时钟突然修改那么长间隔的时间,策略会判断你主时钟精度很差并降级,自动调整主时钟角色回从时钟,然后整个系统里就会重新经历一次寻找主时钟过程。原来的从时钟发现主时钟时标信息超限并报错,然后不再从这个主时钟获取时标信息,也会重新在网络寻找主时钟的操作。然后整个网络里如果没有第三个终端,那么两个处都处在从时钟监听状态,最后经过一段时间,经过BMC算法决策后,原来的从时钟会变成主时钟,原来的主时钟变为从时钟,然后进行时钟更新。

出65入0汤圆

发表于 2023-8-13 07:12:04 来自手机 | 显示全部楼层
luweixuan 发表于 2023-8-13 06:57
ptp有最佳时钟策略,你主时钟突然修改那么长间隔的时间,策略会判断你主时钟精度很差并降级,自动调整主 ...
(引用自10楼)

所以主时钟要手动调整大间隔时间,需要在没有启动ptp服务时进行调整,调整完后才可以启动ptp主时钟服务。一般一个终端在作为主时钟角色时,在ptp服务运行过程中,不允许做如此大间隔的时钟手动调整。最佳运用一般是主时钟通过原子钟或者GPS 1pps进行同步。

出0入8汤圆

 楼主| 发表于 2023-8-13 08:52:45 来自手机 | 显示全部楼层
luweixuan 发表于 2023-8-13 07:12
所以主时钟要手动调整大间隔时间,需要在没有启动ptp服务时进行调整,调整完后才可以启动ptp主时钟服务。 ...
(引用自11楼)

我之所以这么做是想给别人演示同步效果。当同步好后,我用date修改从时钟的时间,没有出现上面的报错,但是时间还是没有重新同步上?这样做应该不涉及同步算法策略的问题吧? 或者还有其他的验证思路?

出65入0汤圆

发表于 2023-8-13 19:26:36 来自手机 | 显示全部楼层
本帖最后由 luweixuan 于 2023-8-13 19:35 编辑
justdomyself 发表于 2023-8-13 08:52
我之所以这么做是想给别人演示同步效果。当同步好后,我用date修改从时钟的时间,没有出现上面的报错,但 ...
(引用自12楼)


演示同步效果,就用每个设备出一个整秒脉冲信号,用示波器比较两个脉冲同步沿就行。你这个date如修改然后同步的演示,只要ntp就可以,不需要ptp。ntp是毫秒级别,没有最优时钟策略,主从时钟固定模式。而ptp是亚毫秒级别的同步,而为了达到亚毫秒级别的同步,协议核心就设计了最优时钟算法BMC,依据BMC算法决策整个同步网络的主从时钟。因此每个主时钟会自己监测时钟稳定性,并自动退出主时钟角色,边变为从时钟。变为从时钟后,在网络里寻找更优时钟作为自己的主时钟,进行时钟同步。

出65入0汤圆

发表于 2023-8-13 19:37:33 来自手机 | 显示全部楼层
justdomyself 发表于 2023-8-12 21:10
硬件ptp。ptp4l运行是正常的。首先主机跑起来,运行ptp4l和phcsyc,然后从机也运行起来。  开始从机的时间 ...
(引用自8楼)

你手动date修改主时钟的时钟,BMC算法直接判断本时钟为最差的时钟,并转换为从时钟模式,而且停止为其他时钟授时同步。所以你这样的测试,是达不到你要的效果。

出65入0汤圆

发表于 2023-8-13 19:41:22 来自手机 | 显示全部楼层
justdomyself 发表于 2023-8-13 08:52
我之所以这么做是想给别人演示同步效果。当同步好后,我用date修改从时钟的时间,没有出现上面的报错,但 ...
(引用自12楼)

论文“侧扫声呐干湿端高精度网络同步技术”你可以参考下,里面把ptp算法部分进行了解析,也有具体的测试方案。

出0入8汤圆

 楼主| 发表于 2023-8-14 16:16:33 | 显示全部楼层
luweixuan 发表于 2023-8-13 19:37
你手动date修改主时钟的时钟,BMC算法直接判断本时钟为最差的时钟,并转换为从时钟模式,而且停止为其他 ...
(引用自14楼)


首先,可以明确的是,同步过程中,date命令大范围修改主机的时间是不合适的。


现在的问题是:

我在同步好后,通过date修改从机的时间,从机没有报错,从机也不会把自己的时间和主机同步上。

如下图,主机的时间是2023年,从机的2022没有跟着改过来:








但是:

如果从机的程序退出,然后重新运行,就是能对时正常。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入25汤圆

发表于 2023-8-15 07:35:38 | 显示全部楼层
justdomyself 发表于 2023-8-14 16:16
首先,可以明确的是,同步过程中,date命令大范围修改主机的时间是不合适的。


(引用自16楼)

你还是看看 bmc的源码吧。


估计是  主机 or 从机,        不能这样用data来 进行修改的。 误差太大了。 refuse modify?

出65入0汤圆

发表于 2023-8-15 07:47:27 来自手机 | 显示全部楼层
justdomyself 发表于 2023-8-14 16:16
首先,可以明确的是,同步过程中,date命令大范围修改主机的时间是不合适的。



(引用自16楼)

看图,按我的理解:主从之间的PHC是同步的,而从机的PHC和系统时钟(RTC)存在很大偏差。你看一下从机phc2sys这个组件的运行情况。原来我只接触过嵌入式的ptp实现,对于linux ptp理解只供参考。

出0入8汤圆

 楼主| 发表于 2023-8-16 09:07:27 | 显示全部楼层
rei1984 发表于 2023-8-15 07:35
你还是看看 bmc的源码吧。


(引用自17楼)

但是从机程序停掉,重新开启, 时间相差很大也没问题。  就是不能够从机运行的时候用date修改自己的时间。

出0入148汤圆

发表于 2023-8-16 09:33:57 来自手机 | 显示全部楼层
楼主纠结这么多天还不如花点时间去看看源码,或者如果不是需要us级别的时钟还不如有ntp好了

出65入0汤圆

发表于 2023-8-16 12:05:28 | 显示全部楼层
justdomyself 发表于 2023-8-16 09:07
但是从机程序停掉,重新开启, 时间相差很大也没问题。  就是不能够从机运行的时候用date修改自己的时间 ...
(引用自19楼)

从机有两个时钟,一个是PHC,一个是RTC的系统时钟。你date修改的是RTC系统时钟,而非修改phc时钟。PHC到RTC系统时钟的修改,是phc2sys进行修正的。而从机模式下RTC系统时钟应该不会影响phc的时钟,也就是phc2sys在从机模式下,不提供sys到phc的修改。你手动修改RTC可能打破phc2sys的逻辑,然后它不再运行。

出65入0汤圆

发表于 2023-8-16 12:15:48 来自手机 | 显示全部楼层
justdomyself 发表于 2023-8-14 16:16
首先,可以明确的是,同步过程中,date命令大范围修改主机的时间是不合适的。



(引用自16楼)

从你发的测试图,可以看到master到从时钟的路径延迟值和时钟偏差值都是稳定的,尤其是偏差值在已经处在同步范围内,我可以确定主从的phc时钟是同步状态的。而CLOCK_REALTIME我在做嵌入式适用时还没涉及到,按我的理解应该是RTC系统时钟和PHC时钟之间的偏差。这个理解可能有些问题,具体参考ptp4l的文档或者源代码吧。

出65入0汤圆

发表于 2023-8-16 12:19:11 来自手机 | 显示全部楼层
本帖最后由 luweixuan 于 2023-8-16 12:24 编辑
yplin27 发表于 2023-8-16 09:33
楼主纠结这么多天还不如花点时间去看看源码,或者如果不是需要us级别的时钟还不如有ntp好了

...

(引用自20楼)


赞同。如果按楼主这样的测试,是不需要ptp去实现时钟同步的,只需要ntp即可。而ptp同步的应用,基本是为了满足us以下的时间同步,而且时间标记都是在phc硬件触发获取的,而不是从系统RTC进行打时间戳的,因此不会有date命令去影响ptp的必要性。
为了达到ns级别的时钟同步,ptp协议设计了很多巧妙的方法和严密的逻辑,比如时钟精度评价、最佳时钟策略、组网内自动转换主从角色,同时还设计了时钟调整伺服pid等算法。因此,date命令去测试它,是比较粗糙和无效的。

出0入8汤圆

 楼主| 发表于 2023-8-16 18:52:09 来自手机 | 显示全部楼层
学习了。多谢楼上各位。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 18:54

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表