A most important factor affecting the accuracy and reliability of time distribution is the complex of algorithms used to reduce the effect of statistical errors and falsetickers due to failure of various subnet components, reference sources or propagation media. The algorithms
suggested in this section were developed and refined over several years
of operation in the Internet under widely varying topologies, speeds and traffic regimes. While these algorithms are believed the best available at the present time, they are not an integral part of the NTP specification, since other algorithms with similar or superior
performance may be devised in future.
However, it is important to observe that not all time servers or clients in an NTP synchronization subnet must implement these algorithms. For instance, simple workstations may dispense with one or both of them in
the interests of simplicity if accuracy and reliability requirements justify. Nevertheless, it would be expected that an NTP server providing synchronization to a sizable community, such as a university campus or research laboratory, would be expected to implement these
algorithms or others proved to have equivalent functionality. A comprehensive
discussion of the design principles and performance is given in [MIL91a].
In order for the NTP filter and selection algorithms to operate effectively, it is useful to have a measure of recent sample variance recorded for each peer. The measure adopted is based on first-order differences, which are easy to compute and effective for the purposes
intended. There are two measures, one called the filter dispersion
epsilonsigma and the other the select dispersion epsilonxi.
Both are computed as the weighted sum of the clock offsets in a temporary list sorted by synchronization distance. If thetai (0 <= i < n) is the offset of the
ith entry, then the sample difference epsiloij of the ith entry relative to the
jth entry is defined epsilonij = | thetai - thetaj | . The dispersion relative to the jth entry is defined epsilonj and computed as the weighted sum
where w is a weighting factor chosen to control the influence of synchronization distance in the dispersion budget. In the NTP algorithms w is chosen less than 1 / 2 : w = NTP.FILTER for filter dispersion and w = NTP.SELECT for select dispersion. The (absolute) dispersion
epsilonsigma and epsilonxi as used in the NTP algorithms are defined relative to
the 0th entry epsilon0.
There are two procedures described in the following, the clock-filter procedure, which is used to select the best offset samples from a given clock, and the clock-selection procedure, which is used to select the best clock among a hierarchical set of clocks.