PTP时间同步协议中的闰秒
·
闰秒相关的规定
PTP报文的公共header中,有一个2字节的flagField,包含leap61和leap59两个标志位。这两个标志位在Announce报文使用,代表正闰秒和负闰秒。


leap61
正闰秒表示这一天最后一分钟是61秒。

leap59
负闰秒表示这一天最后一分钟只有59秒。

currentUtcOffset
在Announce报文里还有一个currentUtcOffset字段,表示闰秒数。

所以leap61和leap59用于闰秒的提前预告,而currentUtcOffset代表当前的闰秒数。在实际中,Announce报文的发送的执行和传输都有延迟,所以标准规定在闰秒发生的时候,leap61,leap59和currentUtcOffset的更新,允许有2个Announce报文间隔的误差。

PTP实现正闰秒
示例中设置了UTC时间2026-02-26 00:00:00为正闰秒,闰秒数38秒,对应Unix时间戳为1772064000。结合Sync报文的时间我们可以知道PTP的TAI时间。
- PTP的TAI时间为1772064037时,闰秒37。对应UTC时间:2026-02-26 00:00:00
- PTP的TAI时间为1772064038时,UTC本该是2026-02-26 00:00:01。但是由于发生闰秒,闰秒38,UTC时间仍然是2026-02-26 00:00:00,从而多了1秒。

PTP实现负闰秒
示例中设置了UTC时间2026-02-26 00:00:00为负闰秒,闰秒数36秒,对应Unix时间戳为1772064000。结合Sync报文的时间我们可以知道PTP的TAI时间。
- PTP的TAI时间为1772064035时,闰秒37。对应UTC时间:2026-02-25 23:59:58
- PTP的TAI时间为1772064036时,UTC本该是2026-02-25 23:59:59。但是由于发生闰秒,闰秒36,UTC时间跳变为2026-02-26 00:00:00,从而少了1秒。

专做嵌入式系统方案,时频技术方案,和相关开发。如果感兴趣,欢迎联系我。
更多推荐
所有评论(0)