Update comparison with ntpd

This commit is contained in:
Miroslav Lichvar 2013-06-19 18:25:28 +02:00
parent 38e889c85c
commit 8bf87bbfde

View file

@ -94,9 +94,9 @@ messages between different machines on the network.
In writing the @code{chronyd} program, extensive use has been made of In writing the @code{chronyd} program, extensive use has been made of
RFC1305, written by David Mills. I have occasionally referred to the RFC1305, written by David Mills. I have occasionally referred to the
@code{xntp} suite's source code to check details of the protocol that @code{ntp} suite's source code to check details of the protocol that
the RFC did not make absolutely clear. The core algorithms in the RFC did not make absolutely clear. The core algorithms in
@code{chronyd} are all completely distinct from @code{xntp}, however. @code{chronyd} are all completely distinct from @code{ntp}, however.
@c }}} @c }}}
@c {{{ S:Availability @c {{{ S:Availability
@node Availability @node Availability
@ -148,34 +148,50 @@ requires access to such systems to test out the driver.
@node Other time synchronisation packages @node Other time synchronisation packages
@section Relationship to other software packages @section Relationship to other software packages
@menu @menu
* Comparison with xntpd:: * Comparison with ntpd::
* Comparison with timed:: * Comparison with timed::
@end menu @end menu
@node Comparison with xntpd @node Comparison with ntpd
@subsection xntpd @subsection ntpd
The `reference' implementation of the Network Time Protocol is the The `reference' implementation of the Network Time Protocol is the
program @code{xntpd}, available via program @code{ntpd}, available via
@uref{http://www.eecis.udel.edu/~ntp, The NTP home page}. @uref{http://www.ntp.org/, The NTP home page}.
@code{xntpd} is designed to support all the operating modes defined by One of the main differences between @code{ntpd} and @code{chronyd} is in
RFC1305, and has driver support for a large number of reference clocks the algorithms used to control the computer's clock. Things
(such as GPS receivers) that can be connected directly to a computer, @code{chronyd} can do better than @code{ntpd}:
thereby providing a so-called 'stratum 1' server.
Things @code{chronyd} can do that @code{xntpd} can't:
@itemize @bullet @itemize @bullet
@item @item
@code{chronyd} can perform usefully in an environment where access to @code{chronyd} can perform usefully in an environment where access to
the time reference is intermittent. @code{chronyd} estimates the time reference is intermittent. @code{ntpd} needs regular polling
@emph{both} the current time offset @emph{and} the rate at which the of the reference to work well.
computer's clock gains or loses time, and can use that rate estimate to @item
trim the clock after the reference disappears. @code{xntpd} corrects @code{chronyd} can usually synchronise the clock faster and with better
any time offset by speeding up and slowing down the computer clock, and time accuracy.
so could be left with a significant rate error if the reference @item
disappears whilst it is trying to correct a big offset. @code{chronyd} quickly adapts to sudden changes in the rate of the clock
(e.g. due to changes in the temperature of the crystal oscillator).
@code{ntpd} may need a long time to settle down again.
@item
@code{chronyd} can perform well even when the network is congested for
longer periods of time.
@item
@code{chronyd} in the default configuration never steps the time to not
upset other running programs. @code{ntpd} can be configured to never
step the time too, but it has to use a different means of adjusting the
clock, which has some
disadvantages.
@item
@code{chronyd} can adjust the rate of the clock on Linux in a larger
range, which allows it to operate even on machines with broken or
unstable clock (e.g. in some virtual machines).
@end itemize
Things @code{chronyd} can do that @code{ntpd} can't:
@itemize @bullet
@item @item
@code{chronyd} provides support for isolated networks whether the only @code{chronyd} provides support for isolated networks whether the only
method of time correction is manual entry (e.g. by the administrator method of time correction is manual entry (e.g. by the administrator
@ -189,33 +205,27 @@ subsequently.
`real-time clock', i.e. the clock that maintains the time when the `real-time clock', i.e. the clock that maintains the time when the
computer is turned off. It can use this data when the system boots to computer is turned off. It can use this data when the system boots to
set the system time from a corrected version of the real-time clock. set the system time from a corrected version of the real-time clock.
These real-time clock facilities are only available on certain releases These real-time clock facilities are only available on Linux, so far.
of Linux, so far.
@item
The @code{xntpd} program is supported by other programs to carry out
certain functions. @code{ntpdate} is used to provide an initial
correction to the system clock based on a `one-shot' sampling of other
NTP servers. @code{tickadj} is used to adjust certain operating system
parameters to make @code{xntpd} work better. All this functionality is
integrated into @code{chronyd}.
@end itemize @end itemize
Things @code{xntpd} can do that @code{chronyd} can't: Things @code{ntpd} can do that @code{chronyd} can't:
@itemize @bullet @itemize @bullet
@item @item
@code{xntpd} supports effectively all of RFC1305, including broadcast / @code{ntpd} fully supports NTP version 4 (RFC5905), including broadcast,
multicast clients and extra encryption schemes for authenticating multicast, manycast clients / servers and the orphan mode. It also
data packets. supports extra authentication schemes based on public-key cryptography
(RFC5906). @code{chronyd} uses NTP version 3 (RFC1305), which is
compatible with version 4.
@item @item
@code{xntpd} has been ported to more types of computer / operating @code{ntpd} has been ported to more types of computer / operating
system (so far). system.
@item @item
xntpd is designed to work solely with integer arithmetic (i.e. does not @code{ntpd} includes drivers for many reference clocks. @code{chronyd}
require floating point support from its host). relies on other programs (e.g. gpsd) to access the data from the
reference clocks.
@end itemize @end itemize
@node Comparison with timed @node Comparison with timed
@ -1417,7 +1427,7 @@ configured as a point-to-point client by defining specific NTP servers and
peers. This broadcast server feature is intended for providing a time source peers. This broadcast server feature is intended for providing a time source
to other NTP software (e.g. various MS Windows clients). to other NTP software (e.g. various MS Windows clients).
If xntpd is used as the broadcast client, it will try to use a point-to-point If ntpd is used as the broadcast client, it will try to use a point-to-point
client/server NTP access to measure the round-trip delay. Thus, the broadcast client/server NTP access to measure the round-trip delay. Thus, the broadcast
subnet should also be the subject of an @code{allow} directive (@pxref{allow subnet should also be the subject of an @code{allow} directive (@pxref{allow
directive}). directive}).
@ -2492,7 +2502,7 @@ on your machine.
The compiled in default is udp/123, the standard NTP port. It is The compiled in default is udp/123, the standard NTP port. It is
unlikely that you would ever need to change this value. A possible unlikely that you would ever need to change this value. A possible
exception would be if you wanted to operate strictly in client-only exception would be if you wanted to operate strictly in client-only
mode and never be available as a server to xntpd clients. mode and never be available as a server to ntpd clients.
An example of the port command is An example of the port command is