What's expensive? PTP is widely supported on commodity hardware these days. I think most Intel NICs support it, quite a few Realtek and a lot of embedded stuff, down to even MCUs like STM32.
Even if you want a NIC with a stable oscillator or GPS inputs to act as a grandmaster, you can buy an E810 with the necessary hardware from eBay etc. for a few hundred or DIY something yourself much cheaper.
I have an Intel NIC (an Intel I211 using ixgbe) and a Broadcom NIC (BCM5719 using tg3) that claim to support PTP. I'm using the 802.11as profile on my LAN. These NICs are hooked up to Mikrotik CRS326-24G-2S+'s that also claim to support PTP.
Despite my neighbor switches reliably emitting Announce packets every second [0] the Intel NIC will -every few hours- fail to pass along three of those in a row to ptp4l, causing it to switch grandmaster mode for a few seconds before it recovers. The Broadcom NIC does this once or twice a day. These failures happen on both systems, regardless of system load. I've tried fiddling with a whole bunch of ptp4l settings to relax delivery timeouts, and it doesn't seem to help.
So, yeah, just because something claims to support PTP doesn't mean that it'll actually work well.
[0] I know this because packet capture during a couple of the incidents confirms this.
Yes. I'm aware. Perhaps I'm more stupid about this topic than normal, but it looks to me like the NICs I have do (NIC names have been changed for clarity, but all other output is untouched):
$ ethtool -T intel-nic
Time stamping parameters for intel-nic:
Capabilities:
hardware-transmit
software-transmit
hardware-receive
software-receive
software-system-clock
hardware-raw-clock
Hardware timestamp provider index: 0
Hardware timestamp provider qualifier: Precise (IEEE 1588 quality)
Hardware timestamp source: MAC
Hardware Transmit Timestamp Modes:
off
on
Hardware Receive Filter Modes:
none
all
$ ethtool -T brcm-nic
Time stamping parameters for brcm-nic:
Capabilities:
hardware-transmit
software-transmit
hardware-receive
software-receive
software-system-clock
hardware-raw-clock
Hardware timestamp provider index: 0
Hardware timestamp provider qualifier: Precise (IEEE 1588 quality)
Hardware timestamp source: MAC
Hardware Transmit Timestamp Modes:
off
on
Hardware Receive Filter Modes:
none
ptpv1-l4-event
ptpv2-l4-event
ptpv2-l2-event
Intel's drivers are notoriously annoying as the parent of the parent comment suggests. It seems to be a mix of hardware bugs and a driver that doesn't properly account for them. I know many who've moved to ASIX, Mellanox, and other chipsets just because they don't get weird behaviors or two edges per pulse without hacking the driver.
> It seems to be a mix of hardware bugs and a driver that doesn't properly account for them.
~~yaaaaay~~
Also, who the heck knows if my switches are behaving correctly? I may be dealing with a system with multiple failing components.
I'd never considered Mellanox hardware... I'd always thought of them as "super expensive datacenter hardware", but non-Infiniband cards I can see on Newegg aren't entirely-unreasonably priced. (TBD if I can find a PCI-E 2.0 1x card, though). I'd not heard of ASIX, and they have a card that would fit in my slot, but -sadly- no in-tree driver. It looks like the only in-tree driver is for a 100mbit card... the AX88796C.
Anyway, thanks for the advice/info and the mention of more-reliable manufacturers.
Switches that properly support PTP are expensive, at least for now.
You can achieve microsecond accuracy with a lot of non-timing-specific networking hardware, but it's around as good as you get with modern NTP...
To get sub-microsecond, you need hardware that supports transparent/boundary clock and doesn't just 'say' it does, but actually does (vendors have stamped PTP support on things that definitely don't account for time correctly internally!).
Even if you want a NIC with a stable oscillator or GPS inputs to act as a grandmaster, you can buy an E810 with the necessary hardware from eBay etc. for a few hundred or DIY something yourself much cheaper.