It is difficult to imagine a modern world without accurate timing. In many spheres of life, there is a need to have a very accurate clock, and often the accuracy must be significantly higher than the one of clocks used by people in everyday life. For example, requirements for the clock accuracy in flight control systems, spacecraft control systems, or military systems are the highest. Also, clocks of high accuracy are necessary for systems with simpler functions, such as billing systems and charging systems of cell phone operators and Internet providers, as well as the systems of bank transactions, in trading systems, manufacturing, and scientific complexes. In local networks, user authentication protocol Kerberos also utilizes comparing the clock of a controller domain with the clock of users' workstations. In computer networks, a synchronization is usually performed with time servers using an NTP protocol or its simplified variety called SNTP. In this article, we will examine peculiarities, differences, and examples of using these protocols.
NTP (Network Time Protocol) is a network protocol aimed to synchronize the internal clock of a computer using networks with variable bandwidth. It ensures a high time synchronization accuracy due to a specific algorithm that allows choosing the most accurate sources for estimating an accurate time. This algorithm allows minimizing the impact of data from knowingly incorrectly configured NTP servers in a common system. An NTP protocol ensures synchronization mechanisms with the nanosecond accuracy and contains means for determining specifications and estimating errors of the local clock and a time server that performs a synchronization. An NTP protocol uses a hierarchical system of levels or strata. An NTP server has the highest level (stratum 1) if it retrieves data directly from the source of accurate time. Servers that synchronize their clocks with a server of the 1st stratum are a level below it (stratum 2), etc.
SNTP (Simple Network Time Protocol) is a clock synchronization protocol on a computer network. It is a simplified implementation of an NTP protocol, there is no complexity of the NTP algorithm in it. SNTP is used for the network nodes that do not need a full set of NTP features. It is a common practice to synchronize the clock of several nodes in the local network with other NTP nodes on the Internet and use these nodes for temporary synchronization of services provided to other clients on the local network. In this use case, there is no need for a high accuracy of clock synchronization. An SNTP protocol ensures synchronization mechanisms with the accuracy from 1 to 50 ms.
The example of using an NTP protocol: a bank N provides a client-server application for trading to its customers. Servers that process the information about stock quotes must have the clock with a high synchronization accuracy with a world timescale. In this case, each trading server of the bank N synchronizes with the most accurate time server («stratum 1») that receives data directly from the accurate time source. The most accurate server is selected according to the algorithm that is built into an NTP protocol. A sample architecture of such solution is represented on the scheme below:
A classic example of using SNTP is a clock synchronization inside a domain. A domain controller receives the time from a global Internet network from public servers stratum 1 or stratum 2. The other clients of the domain synchronize their clocks with the clock of the domain controller. A sample architecture is represented at the scheme below:
NetPing server room monitoring devices and power distribution units support a synchronization of a built-in clock according to an NTP (SNTP) protocol with local or public time servers.