]> CyberLeo.Net >> Repos - FreeBSD/releng/10.2.git/blob - contrib/ntp/ntpd/ntpd-opts.def
- Copy stable/10@285827 to releng/10.2 in preparation for 10.2-RC1
[FreeBSD/releng/10.2.git] / contrib / ntp / ntpd / ntpd-opts.def
1 /* -*- Mode: Text -*- */
2
3 autogen definitions options;
4
5 #include copyright.def
6
7 prog-name       = "ntpd";
8 prog-title      = "NTP daemon program";
9 argument        = "[ <server1> ... <serverN> ]";
10
11 #include ntpdbase-opts.def
12
13 /* explain: Additional information whenever the usage routine is invoked */
14 explain = <<- _END_EXPLAIN
15         _END_EXPLAIN;
16
17 doc-section     = {
18   ds-type       = 'DESCRIPTION';
19   ds-format     = 'mdoc';
20   ds-text       = <<- _END_PROG_MDOC_DESCRIP
21 The
22 .Nm
23 utility is an operating system daemon which sets
24 and maintains the system time of day in synchronism with Internet
25 standard time servers.
26 It is a complete implementation of the
27 Network Time Protocol (NTP) version 4, as defined by RFC-5905,
28 but also retains compatibility with
29 version 3, as defined by RFC-1305, and versions 1
30 and 2, as defined by RFC-1059 and RFC-1119, respectively.
31 .Pp
32 The
33 .Nm
34 utility does most computations in 64-bit floating point
35 arithmetic and does relatively clumsy 64-bit fixed point operations
36 only when necessary to preserve the ultimate precision, about 232
37 picoseconds.
38 While the ultimate precision is not achievable with
39 ordinary workstations and networks of today, it may be required
40 with future gigahertz CPU clocks and gigabit LANs.
41 .Pp
42 Ordinarily,
43 .Nm
44 reads the
45 .Xr ntp.conf 5
46 configuration file at startup time in order to determine the
47 synchronization sources and operating modes.
48 It is also possible to
49 specify a working, although limited, configuration entirely on the
50 command line, obviating the need for a configuration file.
51 This may
52 be particularly useful when the local host is to be configured as a
53 broadcast/multicast client, with all peers being determined by
54 listening to broadcasts at run time.
55 .Pp
56 If NetInfo support is built into
57 .Nm ,
58 then
59 .Nm
60 will attempt to read its configuration from the
61 NetInfo if the default
62 .Xr ntp.conf 5
63 file cannot be read and no file is
64 specified by the
65 .Fl c
66 option.
67 .Pp
68 Various internal
69 .Nm
70 variables can be displayed and
71 configuration options altered while the
72 .Nm
73 is running
74 using the
75 .Xr ntpq 1ntpqmdoc
76 and
77 .Xr ntpdc 1ntpdcmdoc
78 utility programs.
79 .Pp
80 When
81 .Nm
82 starts it looks at the value of
83 .Xr umask 2 ,
84 and if zero
85 .Nm
86 will set the
87 .Xr umask 2
88 to 022.
89         _END_PROG_MDOC_DESCRIP;
90 };
91
92 doc-section     = {
93   ds-type       = 'USAGE';
94   ds-format     = 'mdoc';
95   ds-text       = <<- _END_MDOC_USAGE
96 .Ss "How NTP Operates"
97 The
98 .Nm
99 utility operates by exchanging messages with
100 one or more configured servers over a range of designated poll intervals.
101 When
102 started, whether for the first or subsequent times, the program
103 requires several exchanges from the majority of these servers so
104 the signal processing and mitigation algorithms can accumulate and
105 groom the data and set the clock.
106 In order to protect the network
107 from bursts, the initial poll interval for each server is delayed
108 an interval randomized over a few seconds.
109 At the default initial poll
110 interval of 64s, several minutes can elapse before the clock is
111 set.
112 This initial delay to set the clock
113 can be safely and dramatically reduced using the
114 .Cm iburst
115 keyword with the
116 .Ic server
117 configuration
118 command, as described in
119 .Xr ntp.conf 5 .
120 .Pp
121 Most operating systems and hardware of today incorporate a
122 time-of-year (TOY) chip to maintain the time during periods when
123 the power is off.
124 When the machine is booted, the chip is used to
125 initialize the operating system time.
126 After the machine has
127 synchronized to a NTP server, the operating system corrects the
128 chip from time to time.
129 In the default case, if
130 .Nm
131 detects that the time on the host
132 is more than 1000s from the server time,
133 .Nm
134 assumes something must be terribly wrong and the only
135 reliable action is for the operator to intervene and set the clock
136 by hand.
137 (Reasons for this include there is no TOY chip,
138 or its battery is dead, or that the TOY chip is just of poor quality.)
139 This causes
140 .Nm
141 to exit with a panic message to
142 the system log.
143 The
144 .Fl g
145 option overrides this check and the
146 clock will be set to the server time regardless of the chip time
147 (up to 68 years in the past or future \(em
148 this is a limitation of the NTPv4 protocol).
149 However, and to protect against broken hardware, such as when the
150 CMOS battery fails or the clock counter becomes defective, once the
151 clock has been set an error greater than 1000s will cause
152 .Nm
153 to exit anyway.
154 .Pp
155 Under ordinary conditions,
156 .Nm
157 adjusts the clock in
158 small steps so that the timescale is effectively continuous and
159 without discontinuities.
160 Under conditions of extreme network
161 congestion, the roundtrip delay jitter can exceed three seconds and
162 the synchronization distance, which is equal to one-half the
163 roundtrip delay plus error budget terms, can become very large.
164 The
165 .Nm
166 algorithms discard sample offsets exceeding 128 ms,
167 unless the interval during which no sample offset is less than 128
168 ms exceeds 900s.
169 The first sample after that, no matter what the
170 offset, steps the clock to the indicated time.
171 In practice this
172 reduces the false alarm rate where the clock is stepped in error to
173 a vanishingly low incidence.
174 .Pp
175 As the result of this behavior, once the clock has been set it
176 very rarely strays more than 128 ms even under extreme cases of
177 network path congestion and jitter.
178 Sometimes, in particular when
179 .Nm
180 is first started without a valid drift file
181 on a system with a large intrinsic drift
182 the error might grow to exceed 128 ms,
183 which would cause the clock to be set backwards
184 if the local clock time is more than 128 s
185 in the future relative to the server.
186 In some applications, this behavior may be unacceptable.
187 There are several solutions, however.
188 If the
189 .Fl x
190 option is included on the command line, the clock will
191 never be stepped and only slew corrections will be used.
192 But this choice comes with a cost that
193 should be carefully explored before deciding to use
194 the
195 .Fl x
196 option.
197 The maximum slew rate possible is limited
198 to 500 parts-per-million (PPM) as a consequence of the correctness
199 principles on which the NTP protocol and algorithm design are
200 based.
201 As a result, the local clock can take a long time to
202 converge to an acceptable offset, about 2,000 s for each second the
203 clock is outside the acceptable range.
204 During this interval the
205 local clock will not be consistent with any other network clock and
206 the system cannot be used for distributed applications that require
207 correctly synchronized network time.
208 .Pp
209 In spite of the above precautions, sometimes when large
210 frequency errors are present the resulting time offsets stray
211 outside the 128-ms range and an eventual step or slew time
212 correction is required.
213 If following such a correction the
214 frequency error is so large that the first sample is outside the
215 acceptable range,
216 .Nm
217 enters the same state as when the
218 .Pa ntp.drift
219 file is not present.
220 The intent of this behavior
221 is to quickly correct the frequency and restore operation to the
222 normal tracking mode.
223 In the most extreme cases
224 (the host
225 .Cm time.ien.it
226 comes to mind), there may be occasional
227 step/slew corrections and subsequent frequency corrections.
228 It
229 helps in these cases to use the
230 .Cm burst
231 keyword when
232 configuring the server, but
233 ONLY
234 when you have permission to do so from the owner of the target host.
235 .Pp
236 Finally,
237 in the past many startup scripts would run
238 .Xr ntpdate 1ntpdatemdoc
239 to get the system clock close to correct before starting
240 .Xr ntpd 1ntpdmdoc ,
241 but this was never more than a mediocre hack and is no longer needed.
242 If you are following the instructions in
243 .Sx "Starting NTP (Best Current Practice)"
244 and you still need to set the system time before starting
245 .Nm ,
246 please open a bug report and document what is going on,
247 and then look at using
248 .Xr sntp 1sntpmdoc .
249 .Pp
250 There is a way to start
251 .Xr ntpd 1ntpdmdoc
252 that often addresses all of the problems mentioned above.
253 .Ss "Starting NTP (Best Current Practice)"
254 First, use the
255 .Cm iburst
256 option on your
257 .Cm server
258 entries.
259 .Pp
260 If you can also keep a good
261 .Pa ntp.drift
262 file then
263 .Xr ntpd 1ntpdmdoc
264 will effectively "warm-start" and your system's clock will
265 be stable in under 11 seconds' time.
266 .Pp
267 As soon as possible in the startup sequence, start
268 .Xr ntpd 1ntpdmdoc
269 with at least the
270 .Fl g
271 and perhaps the
272 .Fl N
273 options.
274 Then,
275 start the rest of your "normal" processes.
276 This will give
277 .Xr ntpd 1ntpdmdoc
278 as much time as possible to get the system's clock synchronized and stable.
279 .Pp
280 Finally,
281 if you have processes like
282 .Cm dovecot
283 or database servers
284 that require
285 monotonically-increasing time,
286 run
287 .Xr ntp-wait 1ntp-waitmdoc
288 as late as possible in the boot sequence
289 (perhaps with the
290 .Fl v
291 flag)
292 and after
293 .Xr ntp-wait 1ntp-waitmdoc
294 exits successfully
295 it is as safe as it will ever be to start any process that require
296 stable time.
297 .Ss "Frequency Discipline"
298 The
299 .Nm
300 behavior at startup depends on whether the
301 frequency file, usually
302 .Pa ntp.drift ,
303 exists.
304 This file
305 contains the latest estimate of clock frequency error.
306 When the
307 .Nm
308 is started and the file does not exist, the
309 .Nm
310 enters a special mode designed to quickly adapt to
311 the particular system clock oscillator time and frequency error.
312 This takes approximately 15 minutes, after which the time and
313 frequency are set to nominal values and the
314 .Nm
315 enters
316 normal mode, where the time and frequency are continuously tracked
317 relative to the server.
318 After one hour the frequency file is
319 created and the current frequency offset written to it.
320 When the
321 .Nm
322 is started and the file does exist, the
323 .Nm
324 frequency is initialized from the file and enters normal mode
325 immediately.
326 After that the current frequency offset is written to
327 the file at hourly intervals.
328 .Ss "Operating Modes"
329 The
330 .Nm
331 utility can operate in any of several modes, including
332 symmetric active/passive, client/server broadcast/multicast and
333 manycast, as described in the
334 .Qq Association Management
335 page
336 (available as part of the HTML documentation
337 provided in
338 .Pa /usr/share/doc/ntp ) .
339 It normally operates continuously while
340 monitoring for small changes in frequency and trimming the clock
341 for the ultimate precision.
342 However, it can operate in a one-time
343 mode where the time is set from an external server and frequency is
344 set from a previously recorded frequency file.
345 A
346 broadcast/multicast or manycast client can discover remote servers,
347 compute server-client propagation delay correction factors and
348 configure itself automatically.
349 This makes it possible to deploy a
350 fleet of workstations without specifying configuration details
351 specific to the local environment.
352 .Pp
353 By default,
354 .Nm
355 runs in continuous mode where each of
356 possibly several external servers is polled at intervals determined
357 by an intricate state machine.
358 The state machine measures the
359 incidental roundtrip delay jitter and oscillator frequency wander
360 and determines the best poll interval using a heuristic algorithm.
361 Ordinarily, and in most operating environments, the state machine
362 will start with 64s intervals and eventually increase in steps to
363 1024s.
364 A small amount of random variation is introduced in order to
365 avoid bunching at the servers.
366 In addition, should a server become
367 unreachable for some time, the poll interval is increased in steps
368 to 1024s in order to reduce network overhead.
369 .Pp
370 In some cases it may not be practical for
371 .Nm
372 to run continuously.
373 A common workaround has been to run the
374 .Xr ntpdate 1ntpdatemdoc
375 or
376 .Xr sntp 1sntpmdoc
377 programs from a
378 .Xr cron 8
379 job at designated
380 times.
381 However, these programs do not have the crafted signal
382 processing, error checking or mitigation algorithms of
383 .Nm .
384 The
385 .Fl q
386 option is intended for this purpose.
387 Setting this option will cause
388 .Nm
389 to exit just after
390 setting the clock for the first time.
391 The procedure for initially
392 setting the clock is the same as in continuous mode; most
393 applications will probably want to specify the
394 .Cm iburst
395 keyword with the
396 .Ic server
397 configuration command.
398 With this
399 keyword a volley of messages are exchanged to groom the data and
400 the clock is set in about 10 s.
401 If nothing is heard after a
402 couple of minutes, the daemon times out and exits.
403 After a suitable
404 period of mourning, the
405 .Xr ntpdate 1ntpdatemdoc
406 program will be
407 retired.
408 .Pp
409 When kernel support is available to discipline the clock
410 frequency, which is the case for stock Solaris, Tru64, Linux and
411 .Fx ,
412 a useful feature is available to discipline the clock
413 frequency.
414 First,
415 .Nm
416 is run in continuous mode with
417 selected servers in order to measure and record the intrinsic clock
418 frequency offset in the frequency file.
419 It may take some hours for
420 the frequency and offset to settle down.
421 Then the
422 .Nm
423 is
424 stopped and run in one-time mode as required.
425 At each startup, the
426 frequency is read from the file and initializes the kernel
427 frequency.
428 .Ss "Poll Interval Control"
429 This version of NTP includes an intricate state machine to
430 reduce the network load while maintaining a quality of
431 synchronization consistent with the observed jitter and wander.
432 There are a number of ways to tailor the operation in order enhance
433 accuracy by reducing the interval or to reduce network overhead by
434 increasing it.
435 However, the user is advised to carefully consider
436 the consequences of changing the poll adjustment range from the
437 default minimum of 64 s to the default maximum of 1,024 s.
438 The
439 default minimum can be changed with the
440 .Ic tinker
441 .Cm minpoll
442 command to a value not less than 16 s.
443 This value is used for all
444 configured associations, unless overridden by the
445 .Cm minpoll
446 option on the configuration command.
447 Note that most device drivers
448 will not operate properly if the poll interval is less than 64 s
449 and that the broadcast server and manycast client associations will
450 also use the default, unless overridden.
451 .Pp
452 In some cases involving dial up or toll services, it may be
453 useful to increase the minimum interval to a few tens of minutes
454 and maximum interval to a day or so.
455 Under normal operation
456 conditions, once the clock discipline loop has stabilized the
457 interval will be increased in steps from the minimum to the
458 maximum.
459 However, this assumes the intrinsic clock frequency error
460 is small enough for the discipline loop correct it.
461 The capture
462 range of the loop is 500 PPM at an interval of 64s decreasing by a
463 factor of two for each doubling of interval.
464 At a minimum of 1,024
465 s, for example, the capture range is only 31 PPM.
466 If the intrinsic
467 error is greater than this, the drift file
468 .Pa ntp.drift
469 will
470 have to be specially tailored to reduce the residual error below
471 this limit.
472 Once this is done, the drift file is automatically
473 updated once per hour and is available to initialize the frequency
474 on subsequent daemon restarts.
475 .Ss "The huff-n'-puff Filter"
476 In scenarios where a considerable amount of data are to be
477 downloaded or uploaded over telephone modems, timekeeping quality
478 can be seriously degraded.
479 This occurs because the differential
480 delays on the two directions of transmission can be quite large.
481 In
482 many cases the apparent time errors are so large as to exceed the
483 step threshold and a step correction can occur during and after the
484 data transfer is in progress.
485 .Pp
486 The huff-n'-puff filter is designed to correct the apparent time
487 offset in these cases.
488 It depends on knowledge of the propagation
489 delay when no other traffic is present.
490 In common scenarios this
491 occurs during other than work hours.
492 The filter maintains a shift
493 register that remembers the minimum delay over the most recent
494 interval measured usually in hours.
495 Under conditions of severe
496 delay, the filter corrects the apparent offset using the sign of
497 the offset and the difference between the apparent delay and
498 minimum delay.
499 The name of the filter reflects the negative (huff)
500 and positive (puff) correction, which depends on the sign of the
501 offset.
502 .Pp
503 The filter is activated by the
504 .Ic tinker
505 command and
506 .Cm huffpuff
507 keyword, as described in
508 .Xr ntp.conf 5 .
509         _END_MDOC_USAGE;
510 };
511
512 doc-section     = {
513   ds-type       = 'FILES';
514   ds-format     = 'mdoc';
515   ds-text       = <<- _END_MDOC_FILES
516 .Bl -tag -width /etc/ntp.drift -compact
517 .It Pa /etc/ntp.conf
518 the default name of the configuration file
519 .It Pa /etc/ntp.drift
520 the default name of the drift file
521 .It Pa /etc/ntp.keys
522 the default name of the key file
523 .El
524         _END_MDOC_FILES;
525 };
526
527 doc-section     = {
528   ds-type       = 'SEE ALSO';
529   ds-format     = 'mdoc';
530   ds-text       = <<- _END_MDOC_SEE_ALSO
531 .Xr ntp.conf 5 ,
532 .Xr ntpdate 1ntpdatemdoc ,
533 .Xr ntpdc 1ntpdcmdoc ,
534 .Xr ntpq 1ntpqmdoc ,
535 .Xr sntp 1sntpmdoc
536 .Pp
537 In addition to the manual pages provided,
538 comprehensive documentation is available on the world wide web
539 at
540 .Li http://www.ntp.org/ .
541 A snapshot of this documentation is available in HTML format in
542 .Pa /usr/share/doc/ntp .
543 .Rs
544 .%A David L. Mills
545 .%T Network Time Protocol (Version 1)
546 .%O RFC1059
547 .Re
548 .Rs
549 .%A David L. Mills
550 .%T Network Time Protocol (Version 2)
551 .%O RFC1119
552 .Re
553 .Rs
554 .%A David L. Mills
555 .%T Network Time Protocol (Version 3)
556 .%O RFC1305
557 .Re
558 .Rs
559 .%A David L. Mills
560 .%A J. Martin, Ed.
561 .%A J. Burbank
562 .%A W. Kasch
563 .%T Network Time Protocol Version 4: Protocol and Algorithms Specification
564 .%O RFC5905
565 .Re
566 .Rs
567 .%A David L. Mills
568 .%A B. Haberman, Ed.
569 .%T Network Time Protocol Version 4: Autokey Specification
570 .%O RFC5906
571 .Re
572 .Rs
573 .%A H. Gerstung
574 .%A C. Elliott
575 .%A B. Haberman, Ed.
576 .%T Definitions of Managed Objects for Network Time Protocol Version 4: (NTPv4)
577 .%O RFC5907
578 .Re
579 .Rs
580 .%A R. Gayraud
581 .%A B. Lourdelet
582 .%T Network Time Protocol (NTP) Server Option for DHCPv6
583 .%O RFC5908
584 .Re
585         _END_MDOC_SEE_ALSO;
586 };
587
588 doc-section     = {
589   ds-type       = 'BUGS';
590   ds-format     = 'mdoc';
591   ds-text       = <<- _END_MDOC_BUGS
592 The
593 .Nm
594 utility has gotten rather fat.
595 While not huge, it has gotten
596 larger than might be desirable for an elevated-priority
597 .Nm
598 running on a workstation, particularly since many of
599 the fancy features which consume the space were designed more with
600 a busy primary server, rather than a high stratum workstation in
601 mind.
602         _END_MDOC_BUGS;
603 };
604
605 doc-section     = {
606   ds-type       = 'NOTES';
607   ds-format     = 'mdoc';
608   ds-text       = <<- _END_MDOC_NOTES
609 Portions of this document came from FreeBSD.
610         _END_MDOC_NOTES;
611 };