ethtool -t 是验证网卡硬件时间戳支持的唯一可靠第一步,需同时满足:ptp hardware clock为yes或数字、capabilities含tx/rx硬件时间戳标志、receive filter modes支持ptpv2或all。

用 ethtool -T 查网卡时间戳能力
直接运行 ethtool -T <interface></interface>(比如 ethtool -T enp3s0f0)是唯一可靠的第一步。输出里必须同时满足三项才算支持硬件时间戳:
-
PTP Hardware Clock:后面得是yes或数字(如0),不能是not supported -
Capabilities行里要有hardware-transmit (SOF_TIMESTAMPING_TX_HARDWARE)和hardware-receive (SOF_TIMESTAMPING_RX_HARDWARE) -
Hardware Receive Filter Modes至少包含ptpv2或all,否则收不到 PTP 报文的时间戳
注意:有些网卡(如部分 Intel I210)虽显示 PTP Hardware Clock: 0,但只要 /sys/class/ptp/ 下有对应设备(如 ptp0),就说明 PHC 已注册成功。
为什么 ethtool -T 显示支持却没效果
常见原因不是命令不准,而是软硬协同断了链:
- BIOS 中启用了 ASPM 或 L1 Substates 节能模式,会禁用 PHC —— 关掉再重启
- 内核没启用
CONFIG_PTP_1588_CLOCK=y或CONFIG_NETWORK_PHY_TIMESTAMPING=y,ls /sys/class/ptp/就是空的 - 驱动版本太老,比如旧版
igb驱动不暴露SOF_TIMESTAMPING_RAW_HARDWARE,导致ptp4l自动降级为软件时间戳 - 虚拟机环境:即使宿主机网卡支持,VM 通常只能看到
software-transmit,hardware-transmit字段会消失
验证硬件时间戳是否真在工作
光看 ethtool -T 输出不够,得看运行时行为:
- 启动
ptp4l -i enp3s0f0 -m -H,日志里出现using hardware timestamping才算激活成功 - 执行
phc_ctl ptp0 read(需装linuxptp包),能读出非零时间值,说明 PHC 活着 - 发几轮 PTP 流量后,对比
ethtool -S enp3s0f0 | grep hwtstamp,tx_hwtstamp和rx_hwtstamp计数器必须递增
如果计数器不动,大概率是 ptp4l 没拿到 socket 权限,或网卡驱动没真正把时间戳写进 skb->tstamp。
哪些网卡基本可以放心用
别赌小厂白牌网卡。实测稳定支持硬件时间戳的型号有:
- Intel:
I210、I350-T4、X550(注意 I210 需 BIOS 关节能) - Mellanox:
ConnectX-4/5/6(ptp0设备名常为ptp1或更高) - Broadcom:
BCM57416、BCM57304(部分需更新固件)
千兆消费级网卡(如 RTL8111、Realtek 8168)几乎都不支持,ethtool -T 输出里 PTP Hardware Clock 一栏直接为空 —— 别浪费时间配 ptp4l -H。











