Advanced NTP client and server
When the server's transmit timestamp was updated with a kernel/HW timestamp, it didn't include the time smoothing offset. If the offset was larger than one second, the update failed and clients using the interleaved mode received less accurate timestamps. If the update succeeded, the clients received timestamps that were not adjusted for the time smoothing offset, which added an error of up to 0.5s/1s to their measured offset/delay. Fix the update to include the smoothing offset in the new timestamp. |
||
---|---|---|
contrib | ||
doc | ||
examples | ||
test | ||
.gitignore | ||
addressing.h | ||
addrfilt.c | ||
addrfilt.h | ||
array.c | ||
array.h | ||
candm.h | ||
client.c | ||
clientlog.c | ||
clientlog.h | ||
cmdmon.c | ||
cmdmon.h | ||
cmdparse.c | ||
cmdparse.h | ||
conf.c | ||
conf.h | ||
configure | ||
COPYING | ||
getdate.h | ||
getdate.y | ||
hash.h | ||
hash_intmd5.c | ||
hash_nss.c | ||
hash_tomcrypt.c | ||
hwclock.c | ||
hwclock.h | ||
keys.c | ||
keys.h | ||
local.c | ||
local.h | ||
localp.h | ||
logging.c | ||
logging.h | ||
main.c | ||
main.h | ||
make_release | ||
Makefile.in | ||
manual.c | ||
manual.h | ||
md5.c | ||
md5.h | ||
memory.c | ||
memory.h | ||
nameserv.c | ||
nameserv.h | ||
nameserv_async.c | ||
nameserv_async.h | ||
NEWS | ||
ntp.h | ||
ntp_core.c | ||
ntp_core.h | ||
ntp_io.c | ||
ntp_io.h | ||
ntp_io_linux.c | ||
ntp_io_linux.h | ||
ntp_signd.c | ||
ntp_signd.h | ||
ntp_sources.c | ||
ntp_sources.h | ||
pktlength.c | ||
pktlength.h | ||
privops.c | ||
privops.h | ||
README | ||
refclock.c | ||
refclock.h | ||
refclock_phc.c | ||
refclock_pps.c | ||
refclock_shm.c | ||
refclock_sock.c | ||
reference.c | ||
reference.h | ||
regress.c | ||
regress.h | ||
reports.h | ||
rtc.c | ||
rtc.h | ||
rtc_linux.c | ||
rtc_linux.h | ||
sched.c | ||
sched.h | ||
smooth.c | ||
smooth.h | ||
sources.c | ||
sources.h | ||
sourcestats.c | ||
sourcestats.h | ||
srcparams.h | ||
stubs.c | ||
sys.c | ||
sys.h | ||
sys_generic.c | ||
sys_generic.h | ||
sys_linux.c | ||
sys_linux.h | ||
sys_macosx.c | ||
sys_macosx.h | ||
sys_netbsd.c | ||
sys_netbsd.h | ||
sys_solaris.c | ||
sys_solaris.h | ||
sys_timex.c | ||
sys_timex.h | ||
sysincl.h | ||
tempcomp.c | ||
tempcomp.h | ||
util.c | ||
util.h |
This is the README for chrony. What is chrony? =============== chrony is a versatile implementation of the Network Time Protocol (NTP). It can synchronize the system clock with NTP servers, reference clocks (e.g. GPS receiver), and manual input using wristwatch and keyboard. It can also operate as an NTPv4 (RFC 5905) server and peer to provide a time service to other computers in the network. It is designed to perform well in a wide range of conditions, including intermittent network connections, heavily congested networks, changing temperatures (ordinary computer clocks are sensitive to temperature), and systems that do not run continuosly, or run on a virtual machine. Typical accuracy between two machines synchronised over the Internet is within a few milliseconds; on a LAN, accuracy is typically in tens of microseconds. With hardware timestamping, or a hardware reference clock, sub-microsecond accuracy may be possible. Two programs are included in chrony, chronyd is a daemon that can be started at boot time and chronyc is a command-line interface program which can be used to monitor chronyd's performance and to change various operating parameters whilst it is running. What will chrony run on? ======================== The software is known to work on Linux, FreeBSD, NetBSD, macOS and Solaris. Closely related systems may work too. Any other system will likely require a porting exercise. You would need to start from one of the existing system-specific drivers and look into the quirks of certain system calls and the kernel on your target system. How do I set it up? =================== The file INSTALL gives instructions. On supported systems the compilation process should be automatic. You will need an ANSI C compiler -- gcc is recommended. The manual (in texinfo and text formats) describes how to set the software up for the less straightforward cases. What documentation is there? ============================ A manual is supplied in Texinfo format (chrony.texi) and ready-formatted plain text (chrony.txt) in the distribution. There is also information available on the chrony web pages, accessible through the URL https://chrony.tuxfamily.org/ Where are new versions announced? ================================= There is a low volume mailing list where new versions and other important news relating to chrony is announced. You can join this list by sending mail with the subject "subscribe" to chrony-announce-request@chrony.tuxfamily.org These messages will be copied to chrony-users (see below). How can I get support for chrony? and where can I discuss new features, possible bugs etc? ======================================================== There are 3 mailing lists relating to chrony. chrony-announce was mentioned above. chrony-users is a users' discussion list, e.g. for general questions and answers about using chrony. chrony-dev is a more technical list, e.g. for discussing how new features should be implemented, exchange of information between developers etc. To subscribe to either of these lists, send a message with the subject "subscribe" to chrony-users-request@chrony.tuxfamily.org or chrony-dev-request@chrony.tuxfamily.org as applicable. When you are reporting a bug, please send us all the information you can. Unfortunately, chrony has proven to be one of those programs where it is very difficult to reproduce bugs in a different environment. So we may have to interact with you quite a lot to obtain enough extra logging and tracing to pin-point the problem in some cases. Please be patient and plan for this! License ======= chrony is distributed under the GNU General Public License version 2. Authors ======= Richard P. Curnow <rc@rc0.org.uk> Miroslav Lichvar <mlichvar@redhat.com> Acknowledgements ================ In writing the chronyd program, extensive use has been made of RFC 1305 and RFC 5905, written by David Mills. The source code of the NTP reference implementation has been used to check the details of the protocol. The following people have provided patches and other major contributions to the program : Lonnie Abelbeck <lonnie@abelbeck.com> Patch to add tab-completion to chronyc Benny Lyne Amorsen <benny@amorsen.dk> Patch to add minstratum option Andrew Bishop <amb@gedanken.demon.co.uk> Fixes for bugs in logging when in daemon mode Fixes for compiler warnings Robustness improvements for drift file Improve installation (directory checking etc) Entries in contrib directory Improvements to 'sources' and 'sourcestats' output from chronyc Improvements to documentation Investigation of required dosynctodr behaviour for various Solaris versions. Stephan I. Boettcher <stephan@nevis1.columbia.edu> Entries in contrib directory Erik Bryer <ebryer@spots.ab.ca> Entries in contrib directory Bryan Christianson <bryan@whatroute.net> Support for macOS Support for privilege separation Entries in contrib directory Juliusz Chroboczek <jch@pps.jussieu.fr> Fix install rule in Makefile if chronyd file is in use. Paul Elliott <pelliott@io.com> DNSchrony (in contrib directory), a tool for handling NTP servers with variable IP addresses. Mike Fleetwood <mike@rockover.demon.co.uk> Fixes for compiler warnings Alexander Gretencord <arutha@gmx.de> Changes to installation directory system to make it easier for package builders. Andrew Griffiths <agriffit@redhat.com> Patch to add support for seccomp filter Walter Haidinger <walter.haidinger@gmx.at> Providing me with login access to a Linux installation where v1.12 wouldn't compile, so I could develop the fixes for v1.13. Also, for providing the disc space so I can keep an independent backup of the sources. Juergen Hannken-Illjes <hannken@eis.cs.tu-bs.de> Port to NetBSD John Hasler <john@dhh.gt.org> Project and website at tuxfamily.org Changes to support 64 bit machines (i.e. those where sizeof(unsigned long) > 4) Bug fix to initstepslew directive Fix to remove potential buffer overrun errors. Memory locking and real-time scheduler support Fix fault where chronyd enters an endless loop Tjalling Hattink <t.hattink@fugro.nl> Fix scheduler to allow stepping clock from timeout handler Patch to take leap second in PPS refclock from locked source Patch to make reading of RTC for initial trim more reliable Liam Hatton <me@liamhatton.com> Advice on configuring for Linux on PPC Jachym Holecek <jakym@volny.cz> Patch to make Linux real time clock work with devfs Håkan Johansson <f96hajo@chalmers.se> Patch to avoid large values in sources and sourcestats output Jim Knoble <jmknoble@pobox.com> Fixes for compiler warnings Antti Jrvinen <costello@iki.fi> Advice on configuring for BSD/386 Victor Moroz <vim@prv.adlum.ru> Patch to support Linux with HZ!=100 Kalle Olavi Niemitalo <tosi@stekt.oulu.fi> acquisitionport support Frank Otto <sandwichmacher@web.de> Handling arbitrary HZ values Denny Page <dennypage@me.com> Advice on support for hardware timestamping Gautier PHILIPPON <gautier.philippon@ensimag.grenoble-inp.fr> Patch to add refresh command to chronyc Andreas Piesk <apiesk@virbus.de> Patch to make chronyc use the readline library if available Timo Teras <timo.teras@iki.fi> Patch to reply correctly on multihomed hosts Bill Unruh <unruh@physics.ubc.ca> Advice on statistics Stephen Wadeley <swadeley@redhat.com> Improvements to man pages Wolfgang Weisselberg <weissel@netcologne.de> Entries in contrib directory Ralf Wildenhues <Ralf.Wildenhues@gmx.de> Many robustness and security improvements Ulrich Windl <ulrich.windl@rz.uni-regensburg.de> for the Providing me with information about the Linux 2.2 kernel functionality compared to 2.0. Doug Woodward <dougw@whistler.com> Advice on configuring for Solaris 2.8 on x86 Many other people have contributed bug reports and suggestions. We are sorry we cannot identify all of you individually.