Hacker News new | ask | show | jobs
by Youden 21 days ago
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.

3 comments

> I think most Intel NICs support it...

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.

The NICs need supported hardware timestamping. Then they can be used with ptp4l.

Intel i210 and i226 does this. But the i226 has a few variants.

> The NICs need supported hardware timestamping.

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!).

TC are fine for the typical number of devices at home, and are very cheap.
out of dozens of laptops and computers we have where I work, we have maybe 3 that have a PTP-compatible NIC.