gPTP 时间同步报文详解
·
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 测算路径延迟,从时钟根据两边的差连续微调自己的本地时钟,维持与主时钟在亚微秒级的同步。
更多推荐
所有评论(0)