2.6 不说谎的中继站透明时钟如何工作一个诚实的问题假设你给朋友寄了一封信。信从北京出发经过上海、广州、深圳三个中转站最终到达朋友手中。朋友收到信后想知道这封信在路上走了多久。但他只看到信封上的邮戳北京发信时间是1月1日他收到时间是1月5日。这4天的差距包含了真正的运输时间也包含了在中转站的停留时间。问题来了中转站会诚实地告诉你信在它那里停留了多久吗在传统的邮政系统答案是通常不会。但在PTP网络中有一种设备会主动、精确、诚实地告诉你它叫透明时钟Transparent Clock。透明时钟一个透明的中继站透明时钟的核心任务只有一项测量PTP报文在它内部停留的时间并告诉下游设备。这听起来很简单但实际上非常重要。为什么需要透明时钟没有透明时钟主时钟 ---- 交换机A ---- 交换机B ---- 交换机C ---- 从时钟假设主到从的真实传播延迟光在光纤中传播100ns每个交换机的处理延迟1μs到10μs不等抖动大3个交换机总处理延迟3μs到30μs变化范围27μs问题这27μs的抖动会直接加到offsetFromMaster上。同步精度被限制在27μs左右。就像你问快递员包裹在路上走了多久快递员回答大概3到30微秒吧我也说不准。这种模糊的回答让时间同步失去了意义。有透明时钟透明时钟会精确测量报文在自己内部的停留时间驻留时间并写入报文的correctionField字段。从时钟收到报文后知道驻留时间总和减去即可。结果驻留时间被精确测量和补偿。同步精度可以接近时间戳精度纳秒级。透明时钟 vs 边界时钟你可能问边界时钟不也可以做这个事吗答案可以但成本和效果不同。边界时钟的做法边界时钟会接收上游Sync报文调整自己的本地时钟然后生成新的Sync报文发送给下游。比喻就像邮局在每一个中转站都设一个分局长分局长收到信后用自己手表记录时间然后盖上自己的邮戳再转发出去。问题边界时钟需要高精度的本地时钟成本高边界时钟需要参与BMCA复杂层级增加每个边界时钟都是新的一层透明时钟的做法透明时钟不调整本地时钟只测量驻留时间写入correctionField然后转发原报文。比喻就像中转站贴了一张停留时间的贴纸在信封上但不盖自己的邮戳。“我在这里停留了5.2微秒请自行扣除。”——透明时钟如是说。优点不需要高精度本地时钟不参与BMCA不增加层级。选择建议场景推荐网络规模小成本低透明时钟需要隔离误差累积边界时钟已有普通交换机升级PTP透明时钟电信级高精度网络边界时钟 透明时钟透明时钟的两种类型E2E透明时钟End-to-End特点转发所有报文包括Delay_Req/Resp只测量驻留时间从时钟需要发送Delay_Req测量路径延迟核心公式Sync.correctionField residenceTimeE2E透明时钟就像一个诚实的中转站它只告诉你我在这里停留了多久但不告诉你我到下一站有多远。P2P透明时钟Peer-to-Peer特点丢弃Delay_Req/Resp报文测量驻留时间 链路延迟从时钟不需要发送Delay_Req核心公式Sync.correctionField residenceTime meanLinkDelayP2P透明时钟不仅告诉你我在这里停留了多久还告诉你我到上一站有多远。下游设备收到Sync报文时路径延迟已经被累加到correctionField中了。correctionField累加的艺术correctionField是PTP报文头部的一个8字节字段用于携带各种校正值。单位纳秒 × 2¹⁶支持亚纳秒精度累加原理当Sync报文经过多个透明时钟时每个透明时钟都累加自己的驻留时间TC_A: correctionField residenceTime_A TC_B: correctionField residenceTime_B TC_C: correctionField residenceTime_C 最终: correctionField residenceTime_A residenceTime_B residenceTime_C从时钟只需要读取correctionField就知道报文在所有透明时钟中停留的总时间。小结记住这几点类别关键内容核心任务测量驻留时间写入correctionFieldE2E TC转发Delay_Req只累加驻留时间P2P TC丢弃Delay_Req累加驻留时间链路延迟correctionField64位整数单位ns×2¹⁶边界时钟需要高精度时钟参与BMCA成本高透明时钟不需要高精度时钟简单低成本本文是精简版完整版见 GitHubGitHub 完整版额外包含two-step模式下Sync/Follow_Up报文的关联处理4种情况详解时间戳生成点SFD、参考平面的详细说明路径不对称的数学推导和补偿方法完整的透明时钟处理示例含数值计算透明时钟实现的关键挑战 完整版见 GitHubhttps://github.com/Lularible/ptp-book⭐ 如果本书对你有帮助点一个 Star 就是对我最大的支持