解决什么问题
学习 gPTP 之前,必须先接受一个事实:每台设备的本地时钟都不是完美尺子。它可能一开始就和参考时间有差距,也可能走得稍快或稍慢。TSN 调度使用的是微秒甚至更细的时间尺度,这些小偏差会直接影响窗口边界。
如果只说“设备时间不同步”,这个说法太粗。工程上至少要区分两类问题:当前差了多少,以及未来会以什么速度继续差下去。前者通常对应 offset,后者对应 drift 或 frequency error。
四个容易混淆的词
offset 是某个时刻本地时钟和参考时钟之间的差值。比如 grandmaster 认为现在是 1000us,交换机本地时钟认为是 1012us,那么这个时刻的 offset 可以理解为 12us。
phase error 也描述时间位置的偏差,经常和 offset 放在一起理解。你可以把它想成两条周期性刻度线没有对齐:刻度频率可能相同,但当前刻度位置不同。
frequency error 描述本地时钟走得快还是慢。drift 则常用来描述这种频率偏差随时间造成的累计偏离。一个时钟现在 offset 很小,但如果它走得比参考快,过一段时间后 offset 会重新变大。
| 概念 | 直觉 | 对 TSN 的影响 |
|---|---|---|
| offset | 现在差了多少 | 直接让窗口边界错位 |
| phase error | 当前刻度位置没对齐 | 影响某个时刻事件的共同解释 |
| frequency error | 走得快还是慢 | 决定两次同步之间误差增长速度 |
| drift | 随时间累计跑偏 | 同步间隔越长,风险越明显 |
为什么一次校准不够
假设一台交换机刚刚被校正到 offset 接近 0。只要它的本地 oscillator 和参考源存在频率差,两次同步之间 offset 就会重新增长。同步间隔越长,漂移积累越多;时钟硬件越差,单位时间内可能积累的误差越大。
一个粗略估算可以帮助建立量级感。ppm 表示百万分之一的频率偏差。40ppm 大约意味着每秒可能偏 40us。如果同步间隔是 125ms,那么这段间隔内可能积累的漂移量级约为:
40us/s * 0.125s = 5us这不是完整误差预算,只是说明漂移和同步间隔如何进入风险判断。真实系统还要加上路径延迟测量误差、timestamp 精度、设备校正算法和执行 gate 的误差。
怎么解决
gPTP 不只是周期性告诉设备“现在几点”。它要持续传播参考时间,测量相邻链路延迟,并让设备用这些信息修正本地时钟。修正可以理解成两件事:把当前 offset 拉回来,以及让本地时钟的走速更接近参考时间源。
学习阶段不需要掌握伺服算法细节,但要知道同步不是一次性动作,而是持续控制过程。你后面看到 Sync interval、clock quality、time-aware system、timestamping accuracy 时,要把它们放回这个模型里:它们都在影响 offset 如何被估计、drift 如何被控制、误差如何被限制。
带来了什么新问题
时钟模型让你能问更精确的问题,但也暴露了更多工程成本。设备需要足够好的 oscillator,需要硬件 timestamp 支持,需要合适的同步间隔,也需要在 grandmaster 暂时不可用时维持可接受的 holdover 行为。
更重要的是,时钟误差不是孤立存在的。它会和 Qbv 的窗口宽度、guard band、路径延迟、设备执行误差叠加。后面做误差预算时,不要把“同步误差”当成一个凭空填写的数字,而要追问它来自哪种时钟模型、哪种测量和哪种设备能力。
检查点
- 一个设备刚同步完 offset 只有 1us,但 oscillator 漂移很大。为什么短时间后仍可能影响 Qbv 窗口?
- 如果同步间隔从 125ms 拉长到 1s,在相同 ppm 漂移下,漂移风险会如何变化?