TimeKeeper technology

Before diving into the specifics of different TimeKeeper features, let’s take a quick look at what it is and what it does.

TimeKeeper is a flexible tool to synchronize local system time with many different possible time sources and optionally distribute that very accurate time many ways to many clients. It also monitors the time accuracy to alert when it’s bad, take corrective action, record time accuracy and report on it. It is able to:

The TimeKeeper solution

TimeKeeper tracks (and serves) all of the common timing protocols, but does so in a new way - accurately, regardless of protocol, all in the same system, all at the same time. TimeKeeper can track a GPS input, dozens of NTP servers, many PTP Grandmasters across different domains and interfaces, while at the same time serving both NTP and PTP to thousands of clients. It simultaneously maps the timing network and collects client timing details, building a consolidated audit trail of time across the network.

TimeKeeper automatically leverages hardware capabilities it can find. While tracking time sources, it will make use of hardware timestamping cards (Solarflare, Mellanox, Intel, Broadcom, etc) and oscillators if they’re available. If hardware provides oscillators that can be steered, TimeKeeper will automatically and accurately steer them. TimeKeeper is designed to easily manage timing resources for you so that you don’t have to invest countless hours building and maintaining a complex network of disparate components.

TimeKeeper Compliance provides a clear and accurate historical view into your timing network and the performance of your systems. It generates reports suitable for use in regulatory reporting and compliance.

We’ll cover these features in detail as we go, but as an introduction, TimeKeeper uses the concept of ’time sources’ that are specified in the TimeKeeper configuration. These sources may be some NTP servers, a set of PTP feeds from a group of Grandmasters, and a local PCIe device with a GPS antenna for example.

How TimeKeeper works

TimeKeeper is designed around the idea of ‘sources’. It can be configured with up to 50 different time sources which can be NTP servers, PTP servers, GPS clocks or any variety of other ways to get time. Each time source is listed in the “timekeeper.conf” file like so with lower valued numbers being higher priority:

SOURCE0() { NTPSERVER=hostname1; }
SOURCE1() { NTPSERVER=hostname2; }
SOURCE2() { NTPSERVER=hostname3; }

TimeKeeper will keep track of all of these time sources at the same time but will only steer the system clock to one of these time sources which is considered the primary time source. This primary time source is picked with a priority system. In the example above “SOURCE0” would be used. When a time source stops providing time for 3 minutes it will be declared unavailable and TimeKeeper will fall back to the next time source in priority order. Once a time source begins responding again it will become the primary time source if it is highest priority. TimeKeeper is also able to cross-check time sources and declare some invalid for other reasons than simply not responding if configured to do so which is covered in the “Sourcecheck” section.