第298篇:TSN 时钟同步:802.1AS gPTP

关键词

802.1AS、gPTP、时钟同步、时间同步、主从时钟、BC/TC、PTP 域、同步精度、TSN 时间同步


一、gPTP 协议基础

1.1 什么是 gPTP

gPTP(generalized Precision Time Protocol)是 IEEE 802.1AS 定义的TSN 专用的时间同步协议

gPTP 与 1588v2 的关系:

  ┌──────────────────────────────────────────┐
  |  IEEE 1588v2(PTP)                       │
  |  ┌─ 通用精确时间协议,定义帧格式和状态机 │
  |  ├─ 适用于:电信、电力、测量等            │
  |  └─ 多种实现 profile                      │
  |                                            │
  |  IEEE 802.1AS(gPTP)                     │
  |  ┌─ 基于 1588v2 的 TSN 专用 profile      │
  |  ├─ 简化:只保留必要的 1588 功能          │
  |  ├─ 增强:适应 TSN 桥接网络               │
  |  ├─ 精度:< 1μs(目标 < 500ns)           │
  |  ├─ 要求:全路径同步(所有 TSN 桥参与)  │
  |  └─ 与 TSN 调度(801.1Qbv)协同           │
  |                                            │
  |  主要差异:                               │
  |  ┌─ gPTP 强制全路径 BC(边界时钟)        │
  |  ├─ gPTP 使用链路延迟测量(peer-to-peer)│
  |  ├─ gPTP 不支持两步时钟(One-step 为主) │
  |  └─ gPTP 域号固定为 0                    │
  └──────────────────────────────────────────┘

1.2 gPTP 时钟类型

802.1AS 定义的时钟类型:

| | 1. Grandmaster(GM,主时钟) | ┌─ 时间源:GPS / GNSS / 原子钟 | ├─ 作为全网的时间参考 | ├─ 通过 BMCA(最佳主时钟算法)选举 | └─ 系统只有一个活跃 GM | | 2. Time-aware Bridge(时间感知桥) | ┌─ TSN 交换机(每台都参与同步) | ├─ 转发 gPTP 消息 | ├─ 补偿驻留时延(Residence Time) | └─ 修正同步误差 | | 3. Time-aware End Station(时间感知终端) | ┌─ 传感器、执行器、控制器等 TSN 终端 | ├─ 接收同步,调整本地时钟 | └─ 根据精确时间发送/接收 TSN 流 | | gPTP 域结构: | | ┌────────┐ | | └───┬────┘ | | ┌───┴────┐ | | └───┬────┘ | | ┌───┴────┐ | | └───┬────┘ | | ┌───┴────┐ | | └────────┘ | GM gPTP(L2 多播) 桥 A 桥 B 终端 C | ── GPS 同步 ── 计算链路延迟 + 驻留时间 ── 继续传递同步 ── 应用同步时间 | | --- | --- | --- |


二、gPTP 同步机制

2.1 链路延迟测量

gPTP 使用 Peer-to-Peer 延迟测量:

| 节点 A 节点 B | | | | t1 ── Pdelay_Req ─────────────► t2 | | (带 t1 时间戳) | | | | t4 ◄── Pdelay_Resp ──────────── t3 | | (带 t3 时间戳 + t2 时间戳) | | | | 链路延迟计算: | | MeanPathDelay = [(t2 - t1) + (t4 - t3)] / 2 | | | | 前提:链路对称(双向传播时延相等) | | | | 测量频率:每秒 1 次(可配置) | | | | gPTP 帧格式(L2 多播): | | ┌──────────────────────────────────────┐ | MAC DA: 01-80-C2-00-00-0E MAC SA: 源 MAC 802.1Q Tag: VLAN ID (PCP=优先级) EtherType: 0x88F7 (PTP) PTP 消息体 correctionField: 驻留时延修正 | └──────────────────────────────────────┘ |

2.2 同步消息传递

gPTP 同步流程(Sync + Follow_Up):

| GM 桥 | | (Grandmaster) (TSN Switch) | | | | t1 ── Sync ───────────────► ──┐ | | t1 ── Follow_Up ───────────► ──┘ | | (包含精确的 t1) | | | | 桥的处理: | | 1. 记录 Sync 到达时间 t2 | | 2. 累积驻留时延: | | correction = correction + (t2 - t1) | | 3. 添加链路延迟: | | correction = correction + neighborRateRatio × meanLinkDelay | | 4. 转发 Sync + Follow_Up 到下一跳 | | | | 桥 终端 | | t3 ── Sync ───────────────► | | t3 ── Follow_Up ───────────► | | | | 终端计算时钟偏差: | | offset = t2 - t1 - correction | | 调整本地时钟 |

2.3 BMCA 算法

最佳主时钟算法(BMCA):

| | BMCA 决策依据(优先级从高到低): | | | | | | | | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | 1. Priority 1(用户配置) | | | | | | | | | ┌─ 范围:0-255 | | | | | | | | | └─ 值越小优先级越高 | | | | | | | | | | | | | | | | | | 2. Clock Class(时钟等级) | | | | | | | | | ┌─ 6: 锁定 GPS/GNSS | | | | | | | | | ├─ 7: 锁定 PRTC | | | | | | | | | ├─ 13: 锁定其他源 | | | | | | | | | └─ 255: 未同步 | | | | | | | | | | | | | | | | | | 3. Clock Accuracy(时钟精度) | | | | | | | | | ┌─ 范围:0x20-0xFE | | | | | | | | | └─ 值越小精度越高 | | | | | | | | | | | | | | | | | | 4. Clock Variance(时钟方差/稳定性) | | | | | | | | | └─ 值越小越稳定 | | | | | | | | | | | | | | | | | | 5. Priority 2(用户配置,备份) | | | | | | | | | | | | | | | | | | 6. Clock ID(MAC 地址) | | | | | | | | | └─ 最小 ID 的选为主 | | | | | | | | | | | | | | | BMCA 选举示例: | | | | | | | ┌──┬──────────┬──────┬───────┬──────┐ | | | | | | | | 节点 | Pri1 | Class | Pri2 | | | | 桥 A 桥 B 桥 C 终端 D | 128 128 128 255 | 6 13 13 248 | 128 128 200 255 | GM ✅ | 桥 A 当选 Clock_Class=6(GPS 锁定)


三、gPTP 与 TSN 调度的协同

3.1 同步误差的影响

同步精度对 TSN 调度的影响:

| | 门控调度(802.1Qbv)依赖精确时间: | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | ┌────────────────────────────────────┐ | | | | | | | | | | | 理想情况(同步误差 < 100ns) | | | | | | | | | | | | ┌──┐ ┌──┐ ┌──┐ | | | | | | | | | | | | | | | 开 门 | | 开 门 | | 开 门 | | | | | | | | | └──┘ └──┘ └──┘ | | | | | | | | | | | | 帧准确在开门时到达 | | | | | | | | | | | └────────────────────────────────────┘ | | | | | | | | | | | | | | | | | | | | ┌────────────────────────────────────┐ | | | | | | | | | | | 同步误差大(> 1μs) | | | | | | | | | | | | ┌──┐ ┌──┐ ┌──┐ | | | | | | | | | | | | | | | 开 门 | | 开 门 | | 开 门 | | | | | | | | | └──┘ └──┘ └──┘ | | | | | | | | | | | | ↑帧到 | | | | | | | | | | | | 门已关 → 帧被阻塞或丢弃 | | | | | | | | | | | └────────────────────────────────────┘ | | | | | | | | | | | | | | | | | | | | 同步精度要求: | | | | | | | | | | ┌─ TSN 桥同步:< 500ns | | | | | | | | | | ├─ 门控保护带(Guard Band)包含同步误差 | | | | | | | | | | └─ 同步误差越大 → 保护带越大 → 效率越低 | | | | | | | |

3.2 保护带设计

门控保护带(Guard Band)补偿同步误差:

| | 无保护带(同步误差为零的理想情况): | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | ┌───┐ ┌───┐ ┌───┐ ┌───┐ | | | | | | | | | | | | | | | | | | TSN 流 | | BE 流 | | TSN 流 | | BE 流 | | | | | | | | | | └───┘ └───┘ └───┘ └───┘ | | | | | | | | | | | | | | | | 100% 带宽利用 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 有保护带(实际部署): | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ┌───┐▐▐▐┌───┐▐▐▐┌───┐▐▐▐ | | | | | | | | | | | | | | | | | | TSN 流 | | GB | | BE 流 | | GB | | TSN 流 | | GB | | | | | | └───┘▐▐▐└───┘▐▐▐└───┘▐▐▐ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | GB = Guard Band(保护带) | | | | | | | | | | | | | | | | 保护带大小 = 同步误差 × 2(双向) | | | | | | | | | | | | | | | | + 最大帧发送时间 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 示例: | | | | | | | | | | | | | | | | ┌─ 同步误差:±500ns | | | | | | | | | | | | | | | | ├─ 最大帧(1518 字节):12μs @ 1Gbps | | | | | | | | | | | | | | | | ├─ 保护带:500ns + 12μs + 500ns = 13μs | | | | | | | | | | | | | | | | └─ 30μs 周期:13μs GB = 43% 开销 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 同步误差越小 → 保护带越小 → 效率越高 | | | | | | | | | | | | | |


四、gPTP 配置与管理

4.1 华为设备 gPTP 配置

华为设备 gPTP(802.1AS)配置示例:

#
# 1. 全局使能 PTP
ptp enable
#
# 2. 配置时钟模式(Grandmaster)
ptp clock-source local
ptp priority1 128
ptp priority2 128
ptp clock-class 6
#
# 3. 配置 GM 时间源(GPS)
ptp time-source gps
ptp clock accuracy 0x20
#
# 4. 接口使能 gPTP
interface 10GE1/0/1
 ptp enable
 ptp transport-mode layer2     # 二层 gPTP 多播
 ptp role passive              # 非 GM 侧的端口
#
interface 10GE1/0/2
 ptp enable
 ptp transport-mode layer2
 ptp role master                # GM 侧端口

# 5. 查看 gPTP 状态
display ptp all
display ptp clock
display ptp interface brief
display ptp corrections

# 查看同步精度
display ptp offset-history

4.2 gPTP 性能监控

gPTP 同步性能监控:

  ┌──────────────────────────────────────────┐
  |  关键监控指标:                            |
  |                                            |
  |  1. 时间偏差(Offset from Master)        |
  |     ┌─ 终端时钟与 GM 的偏差               |
  |     ├─ 目标:< 500ns                       |
  |     └─ 异常:> 1μs 告警                    |
  |                                            |
  |  2. 路径延迟(Mean Path Delay)           |
  |     ┌─ 链路传播时延                       |
  |     ├─ 典型值:5ns/m(光纤)              |
  |     └─ 异常跳变 → 链路不稳定              |
  |                                            |
  |  3. 驻留时间(Residence Time)            |
  |     ┌─ 桥内处理时延                       |
  |     ├─ 目标:< 10μs                       |
  |     └─ 异常 → 桥过载                      |
  |                                            |
  |  4. GM 状态                               |
  |     ┌─ GM 是否锁定 GPS                     |
  |     ├─ 备 GM 是否就绪                     |
  |     └─ GM 切换时间 < 10ms                |

  常用命令:
  display ptp offset-history  # 查看偏差历史
  display ptp corrections     # 同步修正
  display ptp statistics      # PTP 报文统计

五、gPTP 冗余方案

5.1 主备 GM

gPTP GM 冗余方案:

  ┌──────────────────────────────────────────┐
  |  主 GM(GM-1):                          |
  |  ┌─ 锁定 GPS 时钟                       |
  |  ├─ Priority 1: 128, Class: 6            |
  |  └─ BMCA 选举为主 GM                     |
  |                                            |
  |  备 GM(GM-2):                          |
  |  ┌─ 锁定 GPS 时钟                       |
  |  ├─ Priority 1: 128, Class: 6            |
  |  ├─ Priority 2: 200(高于主)           |
  |  └─ BMCA 选举为备 GM                     |
  |                                            |
  |  主 GM 故障:                             |
  |  1. BFD / 通告超时检测                   |
  |  2. BMCA 重新选举                        |
  |  3. 备 GM 升为主 GM(< 10ms)            |
  |  4. 所有 TSN 桥切换同步源                |
  |                                            |
  |  终端感知:                               |
  |  ┌─ GM 切换时同步短暂中断                |
  |  ├─ TSN 调度保护带覆盖切换时间            |
  |  └─ 业务不中断                           |
  └──────────────────────────────────────────┘

5.2 热备同步域

双同步域热备:

| Domain 0(主同步域): | | ┌─ GM-1 → 桥 A → 桥 B → 终端 | | └─ 终端基于 Domain 0 调度 | | | | Domain 1(备同步域): | | └─ GM-2 → 桥 A → 桥 B → 终端(备钟) | | | | 终端同时接收两个域的同步信号 | | 主域故障 → 1μs 内切换到备域 | | 两个同步域的偏差 < 100ns |


六、gPTP 部署建议

gPTP 部署最佳实践:

  1. 同步拓扑设计
     ┌─ 推荐树形拓扑(避免环路)
     ├─ 最大跳数:< 20 跳(精度 < 500ns)
     ├─ 每跳增加:20-50ns 误差
     └─ 使用 BC 模式(全路径修正)

  2. 链路质量
     ┌─ 光纤链路优先(低时延抖动)
     ├─ 避免长距离光纤不对称(> 1km)
     ├─ 同线缆双工时延对称性检查
     └─ 使用 SyncE 辅助频率同步

  3. GM 部署
     ┌─ 双 GM(主/备)+ 双 GPS 天线
     ├─ GM 位于拓扑中心(最小跳数)
     ├─ GPS 天线避雷和防干扰
     └─ 周期监控 GM 锁定状态

  4. 日常运维
     ┌─ 每跳同步精度 < 50ns
     ├─ 端到端同步精度 < 500ns
     ├─ GM 切换测试(每季度)
     └─ 日志记录同步质量

总结

关键点 说明
802.1AS gPTP TSN 专用时间同步协议,基于 1588v2
时钟角色 Grandmaster、Time-aware Bridge、End Station
BMCA 最佳主时钟算法,选举 GM
链路延迟测量 Peer-to-Peer 方式计算传播时延
同步与调度关系 同步精度直接影响 TSN 调度效率
保护带 补偿同步误差,防止帧入错门
冗余方案 主备 GM + 热备同步域

思考

  1. gPTP 和 IEEE 1588v2 有什么区别和联系?
  2. gPTP 的链路延迟测量是如何进行的?
  3. BMCA 算法的决策依据有哪些?优先级如何排序?
  4. 为什么 TSN 调度的精度依赖同步精度?
  5. 什么是门控保护带(Guard Band)?它如何补偿同步误差?
  6. gPTP 冗余方案有哪些?如何实现 GM 快速切换?

下篇预告:第299篇 - 工业互联网与 TSN 融合,介绍工业互联网中的 TSN 应用场景和融合方案。