When the client has multiple peers, its database is divided into several parts, with each part dedicated to a peer.
Figure 1 shows the NTP implementation model.
The transmit process, controlled by each timer for peers, collects information in the database and sends NTP messages to the peers.
Each NTP message contains a local timestamp marking when the message is sent or received and other information necessary to determine a clock stratum and manage the association. The rate at which messages are sent is determined by the precision required by the local clock and its peers.
The receive process receives messages, including NTP messages and other protocol messages, as well as information sent by directly connected radio clocks.
When receiving an NTP message, the receive process calculates the offset between the peer and local clocks and incorporates it into the database along with other information that is useful for locating errors and selecting peers.
The update process handles the offset of each peer after receiving NTP response messages and selects the most precise peer using a specific selection algorithm.
This process may involve either many observations of few peers or a few observations of many peers, depending on the accuracy.
The local clock process operates upon the offset data produced by the update process and adjusts the phase and frequency of the local clock. This may result in either a step-change or a gradual adjustment of the local clock phase to reduce the offset to zero. The local clock provides a stable source of time information to other users of the system and may be used for subsequent reference by NTP.
Offset data is often generated during the update process. The local clock process then adjusts the phase and frequency of the local clock using the following methods:
Performs one-step adjustment.
Performs gradual phase adjustment to reduce the offset to zero.