gPTP(IEEE 802.1AS)的核心同步报文分 事件报文通用报文 两类,下面按同步流程拆开说:

一、同步流程概览

主时钟 (Grandmaster)                   从时钟 (Slave)
      │                                      │
      │──── Sync (follow_up 模式 ── 第1次) ──→│  t1(主发)
      │                                      │
      │── Follow_Up(携带精确 t1)──────────→│
      │                                      │  t2(从收)
      │◄── Pdelay_Req ──────────────────────│  t3(从发)
      │                                      │
      │──── Pdelay_Resp ────────────────────→│  t4(主收)
      │                                      │
      │── Pdelay_Resp_Follow_Up(携带t4) ────→│
      │                                      │
      │  ←── 从时钟算出:                     │
      │       offset = (t2 - t1 - delay)      │
      │       然后调本地时钟                   │

二、5 种核心报文

Sync(同步报文)— EtherType 0x88F7

  • 方向:主 → 从
  • 内容:估计的发送时刻(精确时间靠 Follow_Up)
  • 频率:默认 125ms(8 次/秒)
  • 两步模式时只带粗略时间戳,精确时间戳在 Follow_Up 里

一步模式(One-step):Sync 报文本身携带精确时间戳(硬件打戳时),不需要 Follow_Up

2️⃣ Follow_Up(跟进报文)

  • 方向:主 → 从
  • 内容:Sync 报文的精确发送时间 t1
  • 作用:两步模式的精确时刻携带者
  • 关联:通过 followUpCorrectionField 修正 Sync 的发送时间

3️⃣ Delay_Req(延迟请求)

  • 方向:从 → 主
  • 精密硬件打戳,记录 t3(从时钟发出时刻)
  • Sync/Follow_Up 路径时延只能单向算(主→从),必须用 Delay_Req/Resp 来算往返
  • 4️⃣ Delay_Resp(延迟响应)
  • 方向:主 → 从
  • 内容:主时钟收到 Delay_Req 的时刻 t4
  • 两条链路计算的完整路径延时
  • 5️⃣ Pdelay_Req/Pdelay_Resp/Pdelay_Resp_Follow_Up(路径延迟测量)
  • 平均链路延迟 = [(t4 - t3) + (t2 - t1)] / 2
    
    
  • Pdelay 类报文专门用于链路延迟补偿,Delay 类用于端到端测量

三、时钟偏移计算过程

从时钟收到 5 个时刻后算出时间偏移:

链路延迟 delay = [(t4 - t3) + (t2 - t1)] / 2

时间偏移 offset = (t2 - t1) - delay
                = (t2 - t1) - [(t4 - t3) + (t2 - t1)] / 2
                = [(t2 - t1) - (t4 - t3)] / 2

四、tcpdump 看完整同步过程

抓一条完整的同步流:

tcpdump -i eth0.21 -c 20 -e -xx ether proto 0x88f7

输出示例(关键字段解析):

# Sync 报文
15:23:01.000000 eth0.21 PTPv2: Sync (5) seq 0
  domain 0, sourcePortIdentity: 00:30:11:ff:fe:22:33:44-1
  originTimestamp = 15:23:01.000000000

# Follow_Up 报文(携带精确 t1)
15:23:01.000100 eth0.21 PTPv2: Follow_Up (8) seq 0
  preciseOriginTimestamp = 15:23:01.000000123

# Delay_Req 报文(从→主,可省略例子)
# Pdelay_Req 报文(两者间测量)

五、实际应用中常见定位方法

异常

排查要点

主时钟无 Sync 发出

主时钟无 Sync 发出 检查主时钟状态(AP/MLD 锁定)、电缆、端口

从时钟收不到 Sync

检查 VLAN 配置、IGMP/组播、41-48 位 MAC 组播过滤

offset 突变大

网络抖动 / 邻居交换机 PTP 配置不一致 / 红钟锁定不稳定

大量 Follow_Up 缺失

两步模式出错或资源不足,检查主时钟的一步/两步模式设置

偏移不为 0 且在漂移

正常 PI 伺服器调节过程,幅度过大需检查红钟质量和链路对称性

一句话总结: gPTP 本质就是连续互发 4 次——Sync/Follow_Up 测主→从时间差,Delay_Req/Resp 测算路径延迟,从时钟根据两边的差连续微调自己的本地时钟,维持与主时钟在亚微秒级的同步。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐