Complying with FINRA OATS

December 1st 2011 · 2 min read

You’ve just made a large investment in your timing infrastructure - great timing sources, a solid network to provide clean and accurate time to clients, and tools to get accurate, low overhead time sync where it’s needed. But how do you make sure you’re complying with OATS?

OATS specifies that your systems need to be within one second of NIST standard. But how do you do that? You’ve got a great local time source, much more accurate than a public NTP server - you don’t want to give all that up and just point to the Internet for time.

TimeKeeper’s multisource capability allows you to easily sync to your local highly accurate time source while providing a continuous log of your offset from NIST time. Using this feature, you can maintain your sub-microsecond sync on the local network and still report the offset from NIST at any given point in time. As a bonus, you get an automatic failover if your local time source stops functioning. Besides, it’d be good to have a cross check to make sure your local time source doesn’t wander off.

To configure for this scenario, the TimeKeeper configuration should specify a NIST server as a secondary (or even lower priority) time source, as in:

SOURCE1() { NTPSERVER=nist1-ny.ustiming.org; }

In this case, the primary source is a local PTP grandmaster on domain 80 that gives you sub-microsecond sync to your client. The NIST server nist1-ny.ustiming.org is a secondary NTP source that will be tracked and logged in a separate log file for auditing. Additional NIST servers can be specified and logged separately in order to maintain a tracked offset if nist1-ny.ustiming.org goes offline.
Your TimeKeeper log data for SOURCE1 will contain data like this:

1322695224.433277424 -0.000289608 -0.004609843 ...
1322695225.709128804 -0.000236494 0.000096657 ...
1322695227.016749135 -0.000189141 -0.002036267 ...
1322695228.299315992 -0.000174313 0.000437689 ...
1322695229.603850663 -0.000387756 -0.005359538 ...
1322695230.888986177 -0.000176683 -0.000213328 ...

The first column is sample times provided by the time source (NIST NTP in this case). The second column is the local time offset from that sample.  These public NTP servers are subject to variations in round trip time across public links, so of course they will not report a sync as clean as the primary PTP time source. TimeKeeper applies the same smoothing algorithms it would to any time source, though.
TimeKeeper constantly steers the clock based on the primary source at every sample, so there is no need to explicitly synchronize the servers by hand at predetermined intervals - it’s already done for you.

Additionally, when using the multisource option, TimeKeeper will fall back to the NIST server in the above configuration if the primary grandmaster ceases to provide PTP data. This means there is an automatic fallback in place, even though it is for a different protocol. If you would like to failover to a different local source, identify that source as SOURCE1 and move the NIST server to SOURCE2.

Each source is logged separately and with lots of detail about the clock source and how it is behaving over time. By retaining the log files for the NIST sources, you have a simple audit trail that shows the local offset over time.

It’s that easy - with one additional configuration line and one new log file, you can be sure you’re in compliance with FINRA OATS.

Got questions? Contact us at sales@fsmlabs.com.