PTP协议精讲(2.3):时间护照与签证——PTP域和时间尺度完全解读

张开发
2026/4/13 2:14:38 15 分钟阅读

分享文章

PTP协议精讲(2.3):时间护照与签证——PTP域和时间尺度完全解读
2.3 时间护照与签证PTP域和时间尺度一张时间旅行的护照想象你要出国旅行。首先你需要一本护照证明你是哪个国家的公民。护照上有你的国籍、护照号码、有效期。其次你需要签证允许你进入目标国家。签证规定了你可以停留多久、可以做什么。最后你需要注意时区。你从北京飞到纽约手表要调慢12小时否则你的时间和当地时间就对不上。PTP网络中的跨国旅行也需要类似的机制域Domain 护照你是哪个时间国家的公民时间尺度Timescale 时区你使用什么时间标准溯源信息Traceability 签证你的时间从哪里来是否可信域时间的国籍为什么需要域场景一一座智能工厂一座智能工厂有三条生产线生产线A生产芯片设备需要纳秒级同步使用PTP over以太网生产线B装配汽车设备需要毫秒级同步使用PTP over以太网监控系统监控环境参数秒级同步就够了使用NTP问题来了这三套系统都连接在同一个物理网络上。如果它们使用同一个PTP域会发生什么混乱场景生产线的PTP设备可能误同步到监控系统的NTP时间源如果NTP设备也支持PTP。监控系统的低精度时间污染了生产线的高精度同步。或者BMCA可能选举出一个监控系统的设备作为主时钟导致生产线精度下降。解决方案使用不同的域。生产线AdomainNumber 0生产线BdomainNumber 1监控系统不使用PTP或domainNumber 2PTP报文的头部携带domainNumber设备只处理与自己domainNumber匹配的报文。不同域的报文互不干扰。域标识符domainNumber和sdoIdPTP使用两个字段来标识域domainNumber主域标识类型UInteger80-255作用用户可配置的主要隔离机制默认值0分配规则domainNumber范围用途0-127用户自定义默认使用128-239特殊用途部分保留240-255保留不得使用注意不同传输协议对domainNumber的范围有限制。例如PTP over IEEE 802.3二层以太网允许使用0-127但PTP over UDP/IPv4/IPv6三层可以使用更大的范围。sdoId标准组织隔离类型12位整数0-4095作用隔离不同标准组织定义的Profile结构高4位 majorSdoId低8位 minorSdoId为什么需要sdoId不同标准组织可能定义不同的PTP Profile配置规则。例如IEEE 802.1定义了802.1AS音视频桥接ITU-T定义了G.8275.1电信时间同步IEC定义了IEC 62439-3工业网络这些Profile有不同的默认值、不同的选项要求。如果它们使用相同的domainNumber不同Profile的设备可能相互干扰。sdoId分配sdoId范围用途管理方0x000默认无特殊Profile—0x100IEEE 802.1 ProfileIEEE 802.1工作组0x200公共平均链路延迟服务IEEE 1588工作组0x300-0xFFCQSDO注册的Profile从IEEE RA申请0xFFD, 0xFFE实验性使用临时0xFFFIEEE 1588工作组保留IEEE 1588工作组QSDO是什么QSDO Qualified Standards Development Organization合格标准制定组织。要成为QSDO需要满足组织成员来自多家公司或学术/政府实体不被单一实体主导Profile需通过成员投票或正式程序批准QSDO可以向IEEE RA申请唯一的sdoId用于标识其定义的Profile。域隔离的实际效果场景一个同时运行IEEE 802.1AS和ITU-T G.8275.1的网络。IEEE 802.1AS设备domainNumber 0, sdoId 0x100ITU-T G.8275.1设备domainNumber 0, sdoId 0x300假设ITU-T申请了这个值结果802.1AS设备收到G.8275.1设备的Announce报文时检查domainNumber都是0匹配检查majorSdoId0x100 vs 0x300不匹配丢弃报文不处理反过来也一样G.8275.1设备也会丢弃802.1AS设备的报文。两套PTP网络在同一物理网络上独立运行互不干扰。时间尺度时间的时区两种时间尺度PTP支持两种时间尺度PTP时间尺度PTP Timescale定义纪元1970年1月1日00:00:00 TAI秒长TAI秒SI秒国际原子时定义的秒溯源可溯源到国际标准关键概念TAI国际原子时TAI International Atomic Time由国际计量局BIPM维护。TAI基于全球约400台原子钟的平均值使用SI秒铯-133原子跃迁定义的秒作为时间单位。TAI的特点稳定不随地球自转变化均匀不会因为闰秒而跳变可溯源可以追溯到国际标准PTP时间与TAI的关系PTP时间 TAI时间完全相同PTP纪元就是TAI的1970年1月1日00:00:00。ARB时间尺度Arbitrary Timescale定义纪元由管理过程设置秒长由主时钟确定溯源无法溯源到国际标准适用场景工业控制设备只需要内部时间一致不需要与外部时间对齐实验室测试测试PTP功能不需要真实时间封闭网络与外界隔离的网络时间可以任意设置ARB的使用方式主时钟可以说“现在的时间是1000秒”。所有从时钟跟随主时钟也都认为现在是1000秒。这个1000秒是什么意思没关系只要大家都认为现在是1000秒同步就能工作。注意ARB时间尺度下UTC偏移currentUtcOffset无效因为ARB时间无法转换为UTC。PTP时间 vs UTC时间关键区别UTC协调世界时基于TAI但为了与地球自转保持同步会插入闰秒UTC TAI - 累积闰秒截至2026年累积闰秒 37秒PTP时间就是TAI时间不会因为闰秒而跳变PTP时间 UTC 累积闰秒示例某个时刻UTC时间2026-01-01 00:00:00PTP时间2026-01-01 00:00:37快了37秒为什么要用PTP时间而不是UTC原因一避免闰秒导致的跳变UTC会插入闰秒。当闰秒发生时UTC时间会从23:59:59跳到23:59:60然后再到00:00:00。这种跳变对同步系统是灾难性的。如果主时钟和从时钟处理闰秒的方式不同会导致时间突然差1秒。PTP时间不插入闰秒永远不会跳变稳定性更好。原因二时间间隔计算如果用UTC计算时间间隔闰秒会导致问题。假设你在23:59:58开始计时到00:00:01结束。正常情况下间隔应该是3秒。但如果中间插入了闰秒23:59:60实际间隔是4秒但计算出来还是3秒因为时钟只显示59→60→00→01。PTP时间没有闰秒时间间隔计算永远是准确的。从PTP时间计算UTCcurrentUtcOffsetPTP设备如何知道UTC时间答案通过currentUtcOffset字段。currentUtcOffset定义TAI - UTC的当前值单位秒来源IERS Bulletin C国际地球自转和参考系统服务公告工作原理主时钟通常接GPS从GPS信号中提取当前闰秒累积值写入Announce报文的currentUtcOffset字段。从时钟收到Announce报文后就知道UTC时间 PTP时间 - currentUtcOffset示例PTP时间2026-01-01 00:00:37 currentUtcOffset37 UTC时间 00:00:37 - 37 00:00:00闰秒预告leap59和leap61闰秒不是突然发生的而是提前公告的。IERS会提前几个月发布闰秒预告“在某年某月某日将插入一个正闰秒。”PTP通过两个标志位传递这个预告leap61正闰秒标志含义当月最后一分钟将有61秒插入一个闰秒取值TRUE或FALSEleap59负闰秒标志含义当月最后一分钟将有59秒删除一个闰秒取值TRUE或FALSE注意到目前为止从未发生过负闰秒。地球自转一直在变慢所以只插入正闰秒。闰秒发生时的PTP行为主时钟接GPSGPS信号会提前告知闰秒信息主时钟在闰秒发生前的Announce报文中设置leap61TRUE闰秒发生后currentUtcOffset加1从时钟收到leap61TRUE的Announce报文知道即将发生闰秒准备调整UTC计算闰秒发生后使用新的currentUtcOffset计算UTC关键点PTP时间本身不变只有UTC计算发生变化。溯源信息时间的签证什么是溯源Traceability定义测量结果或标准值的属性使其能够通过具有规定不确定度的不间断比较链与规定的参考相关联。通俗地说你的时间是从哪里来的来源可靠吗能追溯到国际标准吗traceability标志PTP定义了两个溯源标志timeTraceable时间可溯源含义主时钟的时间可以追溯到国际标准如UTC典型来源GPS、GLONASS、Galileo、国家时间实验室示例主时钟接了GPS天线GPS时间可追溯到美国海军天文台USNOUSNO的时间可追溯到国际原子时TAI。这个链条是连续的、有文档记录的因此主时钟可以声明timeTraceableTRUE。frequencyTraceable频率可溯源含义主时钟的频率可以追溯到国际标准典型来源同步以太网SyncE、铷原子钟、铯原子钟示例主时钟从同步以太网获取频率信号同步以太网的频率来自电信运营商的网络运营商的频率来自铯原子钟铯原子钟的频率可追溯到SI秒定义。因此主时钟可以声明frequencyTraceableTRUE。timeSource时间源类型Announce报文中携带timeSource字段指示主时钟的时间来自哪种类型的源。枚举值值十六进制时间源说明0x10ATOMIC_CLOCK原子钟铯钟、铷钟0x20GNSS全球导航卫星系统GPS、GLONASS、Galileo、北斗0x30TERRESTRIAL_RADIO地面无线电授时如WWVB、BPC0x40PTP从另一个PTP域获取时间0x50NTP从NTP服务器获取时间0x60HAND_SET人工设置0x90OTHER其他0xA0INTERNAL_OSCILLATOR内部振荡器timeSource的作用信息性不参与BMCA决策诊断性帮助管理员了解主时钟的时间来源审计性用于时间溯源审计一个完整的时间信息传递示例让我们用一个完整的例子演示时间信息如何在PTP网络中传递。网络拓扑GPS卫星 ↓ 主时钟A接GPS天线 铷原子钟 ↓ 边界时钟B ↓ 从时钟C5G基站主时钟A的数据字段值说明clockClass6直接同步到GPSclockAccuracy0x20精度≤25纳秒ptpTimescaleTRUE使用PTP时间尺度timeTraceableTRUE时间可溯源到GPSfrequencyTraceableTRUE频率可溯源到铷钟timeSource0x20GNSS时间来自GPScurrentUtcOffset37TAI-UTC 37秒leap61FALSE本月无闰秒leap59FALSE无负闰秒Announce报文主时钟A发送Announce报文携带上述所有信息。边界时钟B的处理接收Announce报文提取时间信息更新自己的数据集parentDS.grandmasterIdentity A的clockIdentityparentDS.grandmasterClockQuality A的clockQualitytimePropertiesDS.currentUtcOffset 37timePropertiesDS.timeTraceable TRUE等等转发Announce报文某些字段需要更新如stepsRemoved 1从时钟C的接收接收边界时钟B转发的Announce报文提取时间信息更新自己的数据集从时钟C如何获取UTC时间从时钟C的本地PTP时间通过同步获得PTP时间 2026-01-01 00:00:37主时钟A的时间从Announce报文获取currentUtcOffset 37计算UTCUTC时间 PTP时间 - currentUtcOffset UTC时间 2026-01-01 00:00:37 - 37 2026-01-01 00:00:00从时钟C的应用层5G基站的应用层需要UTC时间用于日志时间戳、调度等。基站内部实现PTP协议栈维护PTP时间应用层调用API获取时间时PTP协议栈自动减去currentUtcOffset返回UTC时间时间尺度转换的实际问题问题一GPS时间 vs UTC时间背景GPS时间也是一个连续的时间尺度不插入闰秒。但GPS纪元与PTP纪元不同。GPS纪元1980年1月6日00:00:00 UTCPTP纪元1970年1月1日00:00:00 TAIGPS接收机输出的时间通常是GPS时间或者UTC时间从GPS时间减去累积闰秒。转换如果主时钟接GPS需要知道GPS接收机输出的是哪种时间输出GPS时间需要加上GPS-UTC偏移截至2026年是18秒得到TAI时间即PTP时间输出UTC时间需要加上累积闰秒截至2026年是37秒得到PTP时间配置示例# 主时钟配置假设GPS接收机输出UTC时间ptp timescale ptp ptp current-utc-offset37# 配置当前闰秒值ptp time-traceabletrueptp frequency-traceabletrueptp time-source gnss问题二NTP时间 vs PTP时间背景NTPNetwork Time Protocol是互联网上最常用的时间同步协议。NTP时间纪元1900年1月1日00:00:00 UTC时间表示32位秒 32位小数秒时间回绕约每136年回绕一次2036年会回绕问题如果一个PTP主时钟从NTP服务器获取时间需要注意NTP时间通常有毫秒级误差不能提供纳秒级精度NTP时间通常是UTC时间需要转换为PTP时间NTP闰秒处理可能与PTP不同建议如果需要纳秒级精度不要使用NTP作为时间源如果只需要毫秒级精度可以使用NTP但要正确处理时间转换问题三闰秒处理不一致背景闰秒发生时如果网络中的设备处理方式不一致会导致时间混乱。常见问题主时钟正确处理了闰秒但某些从时钟没有处理不同设备的闰秒处理时机不同有的提前有的延迟解决方案使用PTP时间尺度PTP时间不插入闰秒避免跳变正确配置currentUtcOffset主时钟及时更新监控leap61/leap59标志从时钟提前获知闰秒测试验证闰秒发生前进行模拟测试小结域和时间尺度的核心要点域Domain隔离不同的PTP网络通过domainNumber和sdoId双重标识不同域的报文互不干扰时间尺度TimescalePTP时间尺度TAI时间可溯源稳定ARB时间尺度任意时间不可溯源用于封闭系统PTP时间 UTC时间 currentUtcOffset闰秒处理PTP时间不插入闰秒避免跳变通过leap61/leap59预告闰秒通过currentUtcOffset计算UTC时间溯源信息timeTraceable时间是否可溯源到国际标准frequencyTraceable频率是否可溯源到国际标准timeSource时间源类型下集预告现在我们知道了PTP如何组织时间国家域和时间时区时间尺度。但还有一个问题PTP设备内部如何存储和管理这些信息下一节我们将深入讲解PTP数据集——PTP设备的记忆系统。你会看到PTP定义了一套完整的数据结构存储了设备的身份、状态、配置、统计等信息。【悬念留给2.4】PTP数据集听起来像数据库但它不是存在硬盘上的文件而是存在于设备内存中的实时数据。这些数据会被PTP协议不断读取和更新。更有趣的是某些数据集成员是静态的不会变某些是动态的协议运行时自动变某些是可配置的管理员可以改。PTP如何区分这三种类型如何保证数据的一致性下一节我们详细解读。本文内容摘自本人的开源书《PTP技术书 - 从思想实验到协议实现》全书从时间本质的思想实验出发深度解析 IEEE 1588 协议、逐章分析 LinuxPTP 源码并带你动手实现一个轻量级 PTP 程序ptp-lite。 在线阅读/下载ptp-book⭐ 如果对您有帮助欢迎 Star 支持也欢迎通过 GitHub Issues 交流讨论。

更多文章