/falcontime

High Performance LAN Time Synchronization

Primary LanguageC++GNU Lesser General Public License v3.0LGPL-3.0

Falcon Time - High Performance LAN Time Synchronization

Falcon Time consists of two parts, a time server that will provide the base time for the network and an application library that is linked in to each application wishing to use the synchronized time from the time client.

Synchronization Performance
The performance of Falcon Time depends entirely on the performance of your LAN. Assuming that you are using computers that aren't running at 100% CPU utilization for the client and server and there are no full network buffers between the client and server (bufferbloat is bad!), you should see minimum synchronization accuracy approximately equal to the ping time between the two machinesi (this can often be <1ms). After the network connection has been characterized it could even be substanitally less than that.

Startup Performance
One of the huge problems with NTP for high performance time synchronization is that it takes a very long time (up to days) to completely start up. Falcon Time does not share this drawback, Falcon Time was designed so that a complete startup can happen with one second! 

License
Falcon Time's client and server programs and the client library is licenesed for use under the LGPLv3. Basically, you are free to use it in any application you wish without subjecting your application to the terms of the GPL or LGPL. However, if you wish to change code within the client or server programs or the client library (inside the API) then you must make those changes available to the public.
 

Name
Falcon Time is named after the fastest of the animals, the falcon. Like its namesake, Falcon Time tries to be very fast, and provide quick and accurate time synchronizat

Why not use X?
Network Time Protocol (NTP) - NTP requires long startup times to synchronize and provide good synchronization. Even then its protocol isn't designed to hit sub-millisecond accuracy.

Precision Time Protocol (PTP) - The usecase for PTP is very similar to Falcon Time, in that both are designed for use over a LAN with one master source of time. Unfortunately PTP is a rather complicated protocol to setup and configure. It uses multicast addresses to distribute the time information and doesn't easily integrate with individual applications. That said there are plans to use PTP in the future to synchronize between the Falcon Time client and server. This would be transparent to the applications using the Falcon Time library.