Documentation
Wikipedia: ntpd (de)
Wikipedia: ntpd (en)
The NTP FAQ and HOWTO, Understanding and using the Network Time Protocol (2006-11-21)
Network Time Synchronization Research Project (with PowerPoint/PDF presentations)
The Network Time Protocol (NTP) Distribution (31-Mar-2014 05:41)
The Network Time Protocol (NTP) Distribution (07-Nov-2009 20:43 UTC)
Performance Metrics for root distance statistic (root delay, root dispersion), 26.07.2015
support.ntp.org Wiki
The NTP Public Services Project
NTP Support Web
Configuring NTP
ntpd access restrictions
Timescale
Major definitions of time
- Atomic Time – or TAI
- Universal Time – or UT0 and UT1
- oordinated Universal Time – or UTC
- Unix epoch = 1 January 1970
- NTP epoch = 1 January 1900
- constant 2,208,988,800 between 1900 and 1970
- TAI seconds: seconds since 01.01.1970 00:00 without leap seconds
- UTC seconds: seconds since 01.01.1970 00:00 with leap seconds (today 36 leap seconds) without daylight-saving time and time-zone information
- NTP seconds: seconds since 01.01.1900 00:00 with leap seconds without daylight-saving time and time-zone information
Create ntp time stamp from gettimeofday
NTP Timestamp calculation
a
Time, Clock, and Calendar Programming In C
NTP, UTC, and Working with Time on Linux
The Unix leap second mess
The NTP Era and Era Numbering
NTP Timestamp Calculations
gettimeofday() should never be used to measure time
C/C++ tip: How to measure elapsed real time for benchmarking
stackoverflow
Create ntp time stamp from gettimeofday
Measure time in Linux – getrusage vs clock_gettime vs clock vs gettimeofday?
faster equivalent of gettimeofday
How do I get the unix timestamp in C as an int?
Manual Pages
Ubuntu Wily: man ntp.conf
FreeBSD 10.2: man ntp.conf
Reference Clock
IPv6
RFC: Reference ID for NTPv6
REFID Format
Updating the REFID format
HowTos
Ubuntuuser.de: Systemzeit
NTP Server – Stratum Levels Explained
The Raspberry Pi as a Stratum-1 NTP Server
How to build a stratum 1 NTP server with GPS time reference
Setting up a local stratum 2 NTP server
NTP-Deamon Konfiguration
Network Time Protocol
Root distance / dispersion
Root delay and Root dispersion values in NTP protocol?
NTPD not updating time date on CENTOS
FAQ
Question
powerpc-e300c3-linux-gnu-gcc -o ntpd ntp_config.o ntp_io.o \ ntp_parser.o ntp_scanner.o ntpd.o ntpd-opts.o \ -L. -lopts -lntp -lntpd -lrt -lcap -lm -lssl -lcrypto ntpd.o: In function `ntpdmain': ./libntpd.a(ntp_control.o): In function `ctl_putadr': src/ntpd/ntp_control.c:1678: undefined reference to `numtoa' ./libntpd.a(ntp_control.o): In function `ctl_putsys': src/ntpd/ntp_control.c:2214: undefined reference to `k_st_flags' ./libntpd.a(ntp_control.o): In function `send_restrict_entry': src/ntpd/ntp_control.c:4239: undefined reference to `res_match_flags' src/ntpd/ntp_control.c:4240: undefined reference to `res_access_flags' ./libntpd.a(ntp_control.o): In function `write_variables': src/ntpd/ntp_control.c:3283: undefined reference to `atoint' ./libntpd.a(ntp_control.o): In function `report_event': src/ntpd/ntp_control.c:4773: undefined reference to `eventstr' src/ntpd/ntp_control.c:4741: undefined reference to `eventstr'
Answer
Libraries order were not right
before: -lopts -lntp -lntpd after: -lntpd -lntp -lopts
Is it possible to have circular dependencies?
Resolving circular dependencies by linking the same library twice?
Avoiding Linking Problems, Darryl Gove and Stephen Clamage, May 2011
-lfoo -lbar -lfoo or -Wl,--start-group -lfoo -lbar -Wl,--end-group
Question
How does asynchronouse / non-blocking sockets work?
non-blocking sockets + signal SIGALRM
Answer
SIGALRM, setitimer(), sleep(), select()
select() returns that socket is ready when SIGALRM
Unix signal handling example in C, SIGINT, SIGALRM, SIGHUP…
If any of these (as well as other) system calls is interrupted by a signal, such as SIGALRM or SIGIO, the call will return -1 and the variable errno will be
set to EINTR 2. The system call will be automatically restarted. It may be advisable to reset errno to zero.
Berkeley UNIX System Calls and Interprocess Communication
Unix connect() and interrupted system calls
c / interrupted system call / fork vs. thread
System call interrupted by a signal still has to be completed
EINTR and non-blocking calls
Apple: Avoiding Common Networking Mistakes
glibc: Waiting for Input or Output
select() usage examples
System call error handling
Question
How to listen only on specific interfaces?
Answer
How to prevent ntpd to listen on 0.0.0.0:123?
Does NTPd have to listen on an interface or address for updating the server time?
Question
No header files for simulation / standalone
[CC] src/ntpd/cmd_args.c gcc -o obj/osa541x_sim/libntpd.a/ntpd/cmd_args.o -c src/ntpd/cmd_args.c -Iinclude/config/x86 -DHAVE_CONFIG_H -Iinclude -Wall -Wcast-align -Wcast-qual -Wmissing-prototypes -Wpointer-arith -Wshadow -Winit-self -Wstrict-overflow -Wno-strict-prototypes -g -O2 In file included from include/ntp.h:14:0, from include/ntpd.h:11, from src/ntpd/cmd_args.c:8: include/ntp_crypto.h:27:25: fatal error: openssl/evp.h: No such file or directory
Answer
Install header files
$ sudo apt-get install libssl-dev
Question
YACC not found
[CC] src/ntpd/ntp_io.c gcc -o obj/osa541x_sim/advaNtpd/ntpd/ntp_io.o -c src/ntpd/ntp_io.c -Iinclude/config/x86 -DHAVE_CONFIG_H -Iinclude -Wall -Wcast-align -Wcast-qual -Wmissing-prototypes -Wpointer-arith -Wshadow -Winit-self -Wstrict-overflow -Wno-strict-prototypes -g -O2 src/ntpd/ntp_io.c: In function ‘io_setbclient’: src/ntpd/ntp_io.c:2672:5: warning: assuming signed overflow does not occur when simplifying conditional to constant [-Wstrict-overflow] if (nif > 0) { ^ src/ntpd/ntp_io.c:2672:5: warning: assuming signed overflow does not occur when simplifying conditional to constant [-Wstrict-overflow] yacc src/ntpd/ntp_parser.y make: yacc: Command not found <builtin>: recipe for target 'src/ntpd/ntp_parser.c' failed make: *** [src/ntpd/ntp_parser.c] Error 127