This document compares accuracy and performance of a few different stratum-1 NTP servers. An Intel I210 NIC with hardware timestamping (using default RX/TX compensation in the igb driver) and PPS input on one of its software-defined pins (SDP) is used as a reference. The server and the I210 NIC were directly connected with a short cable (no switches between them) and synchronized to the same PPS signal, or synchronized to other NICs over PCIe in a symmetric setup.
Except LeoNTP, all servers were running on Linux with chrony, rsntp, or a DPDK NTP implementation. chrony was tested in both basic and interleaved modes
HW | TX/RX timestamping | Max pkt. rate | Offset (idle) (us) | Offset (loaded) (us) |
---|---|---|---|---|
AR9331 | user/kernel (basic) | 2200 | 61.6 +/- 17.3 | 54.0 +/- 56.8 |
AR9331 | kernel/kernel (xleave) | 2000 | -7.8 +/- 9.5 | -17.8 +/- 29.3 |
Raspberry Pi 3B+ (pps-gpio) | user/kernel (basic) | 17000 | -9.2 +/- 2.9 | -2.3 +/- 9.4 |
Raspberry Pi 3B+ (pps-gpio) | kernel/kernel (xleave) | 17000 | -15.2 +/- 2.9 | -12.7 +/- 6.3 |
Raspberry Pi 3B+ (pps-gpio-poll) | user/kernel (basic) | 17000 | -11.2 +/- 3.0 | -6.1 +/- 9.2 |
Raspberry Pi 3B+ (pps-gpio-poll) | kernel/kernel (xleave) | 17000 | -17.4 +/- 3.0 | -17.8 +/- 6.0 |
Orange Pi PC (pps-gpio-poll) | user/kernel (basic) | 17000 | 5.0 +/- 3.0 | 6.2 +/- 8.4 |
Orange Pi PC (pps-gpio-poll) | kernel/kernel (xleave) | 17000 | -10.2 +/- 2.8 | -8.2 +/- 2.9 |
LeoNTP v119 | firmware (basic) | 110000 | -0.2 +/- 0.02 | -0.2 +/- 0.04 |
E3-1220 + I350 | user/kernel (basic) | 350000 | -10.5 +/- 2.5 | -9.2 +/- 7.5 |
E3-1220 + I350 | kernel/kernel (xleave) | 240000 | -13.1 +/- 2.0 | -10.3 +/- 7.4 |
E3-1220 + I350 (rsntp) | user/user (basic) | 1100000 | -21.2 +/- 5.5 | -18.8 +/- 13.6 |
E3-1220 + I350 (PMD) | user/user (basic) | 1100000 | 0.7 +/- 1.15 | 2.7 +/- 2.76 |
E3-1220 + X550T (PMD) | user/user (basic) | 11000000 | 1.7 +/- 1.07 | 1.6 +/- 0.95 |
I210 @ 1Gb/s | HW/HW (xleave) | 0.0 +/- 0.01 | ||
I350 @ 1Gb/s | HW/HW (xleave) | -0.2 +/- 0.01 | -0.2 +/- 0.01 | |
X550T @ 1Gb/s | HW/HW (xleave) | 0.6 +/- 0.01 |