Network Time Protocol (NTP) is one of the Internet’s oldest protocols still in use. Invented by Dr David Mills from the University of Delaware it has been utilized since 1985. NTP is designed to synchronize the clocks on computers and networks across the Internet or Local Area Networks (LANs).
NTP (currently version 4) is actually three things in one; a software program that runs in the background of Windows or UNIX; a protocol that exchanges time values between servers and clients; and a suite of algorithms that process the time values to advance or retreat the system clock.
NTP uses an algorithm (Marzullo’s algorithm) to synchronise time on a network using a time reference. Although networks can be synchronized with internal clocks or Internet based timing references, it is highly recommended by Microsoft and others that an external timing reference should be used to guarantee authentication. An absolute timing reference should use UTC (Coordinated Universal Time or Temps Universel Coordonné) which supports such features as leap seconds – added to compensate for the slowing of the Earth’s rotation.
NTP works within the TCP/IP suite and relies on UDP, a less complex form of NTP exists called Simple Network Time Protocol (SNTP) that does not require the storing of information about previous communications, needed by NTP. It is used in some devices and applications where high accuracy timing is not as important, it is also included in most Windows operating systems but more recent versions have the full NTP already installed, which is also free to download via the Internet.
Synchronisation with NTP is relatively simple, it synchronises time with reference to a reliable clock source such as an atomic clock, although these are extremely expensive and are generally only to be found in large-scale physics laboratories, however NTP can use either the Global Positioning system (GPS) network or specialist radio transmission to receive UTC time from these clocks.
NTP uses timestamps to represent the current time of the day each timestamp is ephemeral, in other words it is always greater than the previous timestamp as time never runs backwards. NTP analyses the timestamp values including the frequency of errors and the stability. A NTP server will maintain an estimate of the quality of its reference clocks and of itself.
The distance from the reference clock is known as the stratum levels and they exist to prevent cycles in the NTP. Stratum 0 are devices such as reference clocks connected directly to a computer. Stratum 1 are computers attached to stratum 0 devices, while Stratum 2 are computers that send NTP requests to Stratum 1 servers. NTP can support up to 256 strata.
NTP timestamps are in two formats but they relay the seconds from a set point in time (known as the prime epoch, set at 00:00 1 January 1900) The NTP algorithm then uses this timestamp to determine the amount to advance or retreat the system or network clock.
The NTP program (known as a daemon on UNIX and a service on Windows) runs in the system background. NTP refuses to believe the time it is told until several packet exchanges have taken place, each passing a set of tests. Only if the replies from a server satisfy the test, known as protocol specifications, the server is considered. It usually takes about five minutes (five good samples) until a NTP server is accepted as a synchronization source.
A typical GPS time server can provide timing information to within a few nanoseconds of UTC as long as there is an antenna situated with a good view of the sky.
There are also a number of national time and frequency radio transmissions that can be used to synchronise a NTP server. In Britain the signal (called MSF) is broadcast by the National Physics Laboratory in Cumbria which serves as the United Kingdom’s national time reference, there are also similar systems in Colorado, US (WWVB) and in Frankfurt, Germany (DCF-77). These signals provides UTC time to an accuracy of 100 microseconds, however, the radio signal has a finite range and is vulnerable to interference.