gPTP Master 报文的源 MAC 地址

1. 标准答案

报文类型 源 MAC 地址 说明

Sync FPGA-PL Port12 的单播 MAC 发送端口的物理 MAC

Follow_Up FPGA-PL Port12 的单播 MAC 与 Sync 相同

结论 :Sync 和 Follow_Up 的源 MAC 地址相同,都是发送该报文的物理端口(FPGA-PL Port12)的单播 MAC 地址。

2. 报文结构对比

复制代码
gPTP 报文帧结构 (Ethernet Layer 2):

┌─────────────────┬─────────────────┬─────────────┬──────────────────┐
│   目的 MAC      │    源 MAC       │  EtherType  │     PTP Payload    │
├─────────────────┼─────────────────┼─────────────┼──────────────────┤
│ 01-80-C2-00-00- │ FPGA-PL Port12  │   0x88F7    │  Sync / Follow_Up │
│       0E        │  的单播 MAC     │  (PTP协议)  │  / Announce ...   │
│  (多播地址)      │  (例如: 00-1A...)│             │                   │
└─────────────────┴─────────────────┴─────────────┴──────────────────┘

关键区别

  • 目的 MAC = 01-80-C2-00-00-0E(多播,所有 PTP 设备接收)
  • 源 MAC = 发送端口的单播 MAC(标识具体的 Master 设备)

3. 在当前拓扑中的对应关系

复制代码
FPGA-PL (gPTP Master)
├─ Port12 (XFI 10Gbps)
│   ├─ MAC 地址: 00:1A:2B:3C:4D:5E (示例)
│   │           ↑ 这是源 MAC
│   │
│   └─ 发送 Sync/Follow_Up
│       │
│       ▼
SWITCH1 Port12 (接收)
├─ 识别源 MAC: 00:1A:2B:3C:4D:5E
├─ 识别目的 MAC: 01-80-C2-00-00-0E
├─ 判断: 这是 PTP 报文 → 转发到所有 PTP 使能端口
└─ 更新 CF (Correction Field)

4. 源 MAC 的具体值

4.1 如何查看 FPGA-PL 的 MAC 地址

复制代码
# 方法1: 通过 ethtool 查看永久 MAC
$ ethtool -P eth0
Permanent address: 00:1a:2b:3c:4d:5e

# 方法2: 通过 ifconfig/ip 查看当前 MAC
$ ip link show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500
    link/ether 00:1a:2b:3c:4d:5e brd ff:ff:ff:ff:ff:ff

# 方法3: 读取 sysfs
$ cat /sys/class/net/eth0/address
00:1a:2b:3c:4d:5e

4.2 FPGA 板卡的 MAC 地址来源

来源 说明

EEPROM/Flash 出厂烧录的 OUI + 唯一序列号

FPGA 设计 通过 RTL 代码硬编码

软件配置 启动脚本通过 ifconfig 设置

Bootloader U-Boot 传递的设备树参数

5. 为什么 Sync 和 Follow_Up 源 MAC 相同?

复制代码
时间轴:
T1 ─┤ FPGA-PL 发送 Sync (源 MAC = 00:1A:2B:3C:4D:5E)
    │   │
    │   └── 报文内容:
    │       ├─ 目的 MAC: 01-80-C2-00-00-0E
    │       ├─ 源 MAC: 00:1A:2B:3C:4D:5E  ← 同一个端口
    │       └─ PTP 类型: Sync (0x0)
    │
T1'─┤ FPGA-PL 发送 Follow_Up (源 MAC = 00:1A:2B:3C:4D:5E)
    │   │
    │   └── 报文内容:
    │       ├─ 目的 MAC: 01-80-C2-00-00-0E
    │       ├─ 源 MAC: 00:1A:2B:3C:4D:5E  ← 同一个端口!
    │       └─ PTP 类型: Follow_Up (0x8)
    │       └─ 携带 T1 精确时间戳

原因

  • Sync 和 Follow_Up 是一对报文 ,由同一个端口发送
  • 在 two-step 模式下,Follow_Up 紧接着 Sync 发送
  • 两个报文的目的 MAC 相同,源 MAC 也相同

6. 交换机如何处理源 MAC?

复制代码
SWITCH1 (BCM89586) 接收到 Sync/Follow_Up 后的处理:

1. 读取目的 MAC = 01-80-C2-00-00-0E
   └─ 判断: 这是 PTP 多播地址,需要特殊处理

2. 读取源 MAC = 00:1A:2B:3C:4D:5E
   └─ 记录: 这是 PTP GrandMaster 的 MAC
   └─ 用于: 后续构建转发表/过滤表

3. PTP 引擎处理:
   ├─ Port12 (Slave Port) 接收
   ├─ 测量进入时间 (t_rx)
   ├─ 计算驻留时间 (residence = t_tx - t_rx)
   ├─ 更新 CF (Correction Field)
   └─ 泛洪到所有 Master 端口 (Port0~11, 16, 14)

4. 转发时:
   ├─ 源 MAC 保持不变 (还是 00:1A:2B:3C:4D:5E)
   ├─ 目的 MAC 保持不变 (还是 01-80-C2-00-00-0E)
   └─ CF 值被更新 (加上本交换机的驻留时间)

重要 :交换机在转发时不会修改源 MAC,只是更新 CF 字段。

7. 抓包验证

复制代码
# 抓取 gPTP 报文,显示源/目的 MAC
$ tcpdump -i eth0 -e -vvv ether proto 0x88f7

# 预期输出:
# 14:30:01.123456 00:1a:2b:3c:4d:5e > 01:80:c2:00:00:0e, ethertype PTP (0x88f7), length 64
#   PTPv2, Sync message, length 44
#   domain 0, correction 0ns
#
# 14:30:01.123500 00:1a:2b:3c:4d:5e > 01:80:c2:00:00:0e, ethertype PTP (0x88f7), length 64
#   PTPv2, Follow_Up message, length 44
#   domain 0, originTimestamp: 1725123456.123456789

# 注意:
# - 源 MAC 始终是 00:1a:2b:3c:4d:5e (FPGA-PL 的 MAC)
# - 目的 MAC 始终是 01:80:c2:00:00:0e (PTP 多播)

8. 常见误区

误区 正确理解

9. 一句话总结

gPTP Master (FPGA-PL) 发送的 Sync 和 Follow_Up 报文,源 MAC 地址都是 FPGA-PL Port12 端口的单播 MAC 地址(如 00:1A:2B:3C:4D:5E**),目的 MAC 地址都是** 01-80-C2-00-00-0E**(PTP 多播)。交换机在转发过程中不会改变源 MAC,只会更新 CF 字段。**

相关推荐
Zevalin爱灰灰18 小时前
能源与电源管理电路——防倒灌电路
单片机·嵌入式硬件·电源管理
无垠的广袤21 小时前
【工业树莓派 CM0 Dev Board】扩展板设计
linux·python·嵌入式硬件·pcb设计·模块化·传感器
嵌入式-老费1 天前
esp32开发与应用(添加数据分区)
单片机·嵌入式硬件
嵌入式-老费1 天前
esp32开发与应用(OTA升级)
嵌入式硬件
CYLAM20251 天前
STC32G 单片机0.96“OLED 西历农历可调万年历 (1901-2100)
单片机·嵌入式硬件·stc32g·万年历·西历农历·0.96”oled 12864·4x4 矩阵键盘
Discipline~Hai1 天前
ARM03-蜂鸣器和中断
c语言·arm开发·单片机·嵌入式硬件·嵌入式
KaifuZeng1 天前
电源面试问题汇总一
单片机·嵌入式硬件·面试·电路
驱动探索者1 天前
RISC-V PLIC 深度解析:从 Spec 到 Zephyr 驱动实现
单片机·嵌入式硬件·中断控制器
LCG元1 天前
STM32 FreeRTOS 实战:任务调度 + 互斥锁 + 消息队列 + 串口命令解析器
stm32·单片机·嵌入式硬件
Hello_Damon_Nikola1 天前
姿态式饮水量估算从原理到实战
嵌入式硬件