1@node ntp.conf Notes 2@section Notes about ntp.conf 3@pindex ntp.conf 4@cindex Network Time Protocol (NTP) daemon configuration file format 5@ignore 6# 7# EDIT THIS FILE WITH CAUTION (invoke-ntp.conf.texi) 8# 9# It has been AutoGen-ed June 6, 2023 at 04:37:38 AM by AutoGen 5.18.16 10# From the definitions ntp.conf.def 11# and the template file agtexi-file.tpl 12@end ignore 13 14 15 16The 17@code{ntp.conf} 18configuration file is read at initial startup by the 19@code{ntpd(1ntpdmdoc)} 20daemon in order to specify the synchronization sources, 21modes and other related information. 22Usually, it is installed in the 23@file{/etc} 24directory, 25but could be installed elsewhere 26(see the daemon's 27@code{-c} 28command line option). 29 30The file format is similar to other 31@sc{unix} 32configuration files. 33Comments begin with a 34@quoteleft{}#@quoteright{} 35character and extend to the end of the line; 36blank lines are ignored. 37Configuration commands consist of an initial keyword 38followed by a list of arguments, 39some of which may be optional, separated by whitespace. 40Commands may not be continued over multiple lines. 41Arguments may be host names, 42host addresses written in numeric, dotted-quad form, 43integers, floating point numbers (when specifying times in seconds) 44and text strings. 45 46The rest of this page describes the configuration and control options. 47The 48"Notes on Configuring NTP and Setting up an NTP Subnet" 49page 50(available as part of the HTML documentation 51provided in 52@file{/usr/share/doc/ntp}) 53contains an extended discussion of these options. 54In addition to the discussion of general 55@ref{Configuration Options}, 56there are sections describing the following supported functionality 57and the options used to control it: 58@itemize @bullet 59@item 60@ref{Authentication Support} 61@item 62@ref{Monitoring Support} 63@item 64@ref{Access Control Support} 65@item 66@ref{Automatic NTP Configuration Options} 67@item 68@ref{Reference Clock Support} 69@item 70@ref{Miscellaneous Options} 71@end itemize 72 73Following these is a section describing 74@ref{Miscellaneous Options}. 75While there is a rich set of options available, 76the only required option is one or more 77@code{pool}, 78@code{server}, 79@code{peer}, 80@code{broadcast} 81or 82@code{manycastclient} 83commands. 84@node Configuration Support 85@subsection Configuration Support 86Following is a description of the configuration commands in 87NTPv4. 88These commands have the same basic functions as in NTPv3 and 89in some cases new functions and new arguments. 90There are two 91classes of commands, configuration commands that configure a 92persistent association with a remote server or peer or reference 93clock, and auxiliary commands that specify environmental variables 94that control various related operations. 95@subsubsection Configuration Commands 96The various modes are determined by the command keyword and the 97type of the required IP address. 98Addresses are classed by type as 99(s) a remote server or peer (IPv4 class A, B and C), (b) the 100broadcast address of a local interface, (m) a multicast address (IPv4 101class D), or (r) a reference clock address (127.127.x.x). 102Note that 103only those options applicable to each command are listed below. 104Use 105of options not listed may not be caught as an error, but may result 106in some weird and even destructive behavior. 107 108If the Basic Socket Interface Extensions for IPv6 (RFC-2553) 109is detected, support for the IPv6 address family is generated 110in addition to the default support of the IPv4 address family. 111In a few cases, including the 112@code{reslist} 113billboard generated 114by 115@code{ntpq(1ntpqmdoc)} 116or 117@code{ntpdc(1ntpdcmdoc)}, 118IPv6 addresses are automatically generated. 119IPv6 addresses can be identified by the presence of colons 120@quotedblleft{}:@quotedblright{} 121in the address field. 122IPv6 addresses can be used almost everywhere where 123IPv4 addresses can be used, 124with the exception of reference clock addresses, 125which are always IPv4. 126 127Note that in contexts where a host name is expected, a 128@code{-4} 129qualifier preceding 130the host name forces DNS resolution to the IPv4 namespace, 131while a 132@code{-6} 133qualifier forces DNS resolution to the IPv6 namespace. 134See IPv6 references for the 135equivalent classes for that address family. 136@table @asis 137@item @code{pool} @kbd{address} @code{[@code{burst}]} @code{[@code{iburst}]} @code{[@code{version} @kbd{version}]} @code{[@code{prefer}]} @code{[@code{minpoll} @kbd{minpoll}]} @code{[@code{maxpoll} @kbd{maxpoll}]} @code{[@code{xmtnonce}]} 138@item @code{server} @kbd{address} @code{[@code{key} @kbd{key} @kbd{|} @code{autokey}]} @code{[@code{burst}]} @code{[@code{iburst}]} @code{[@code{version} @kbd{version}]} @code{[@code{prefer}]} @code{[@code{minpoll} @kbd{minpoll}]} @code{[@code{maxpoll} @kbd{maxpoll}]} @code{[@code{true}]} @code{[@code{xmtnonce}]} 139@item @code{peer} @kbd{address} @code{[@code{key} @kbd{key} @kbd{|} @code{autokey}]} @code{[@code{version} @kbd{version}]} @code{[@code{prefer}]} @code{[@code{minpoll} @kbd{minpoll}]} @code{[@code{maxpoll} @kbd{maxpoll}]} @code{[@code{true}]} @code{[@code{xleave}]} 140@item @code{broadcast} @kbd{address} @code{[@code{key} @kbd{key} @kbd{|} @code{autokey}]} @code{[@code{version} @kbd{version}]} @code{[@code{prefer}]} @code{[@code{minpoll} @kbd{minpoll}]} @code{[@code{ttl} @kbd{ttl}]} @code{[@code{xleave}]} 141@item @code{manycastclient} @kbd{address} @code{[@code{key} @kbd{key} @kbd{|} @code{autokey}]} @code{[@code{version} @kbd{version}]} @code{[@code{prefer}]} @code{[@code{minpoll} @kbd{minpoll}]} @code{[@code{maxpoll} @kbd{maxpoll}]} @code{[@code{ttl} @kbd{ttl}]} 142@end table 143 144These five commands specify the time server name or address to 145be used and the mode in which to operate. 146The 147@kbd{address} 148can be 149either a DNS name or an IP address in dotted-quad notation. 150Additional information on association behavior can be found in the 151"Association Management" 152page 153(available as part of the HTML documentation 154provided in 155@file{/usr/share/doc/ntp}). 156@table @asis 157@item @code{pool} 158For type s addresses, this command mobilizes a persistent 159client mode association with a number of remote servers. 160In this mode the local clock can synchronized to the 161remote server, but the remote server can never be synchronized to 162the local clock. 163@item @code{server} 164For type s and r addresses, this command mobilizes a persistent 165client mode association with the specified remote server or local 166radio clock. 167In this mode the local clock can synchronized to the 168remote server, but the remote server can never be synchronized to 169the local clock. 170This command should 171@emph{not} 172be used for type 173b or m addresses. 174@item @code{peer} 175For type s addresses (only), this command mobilizes a 176persistent symmetric-active mode association with the specified 177remote peer. 178In this mode the local clock can be synchronized to 179the remote peer or the remote peer can be synchronized to the local 180clock. 181This is useful in a network of servers where, depending on 182various failure scenarios, either the local or remote peer may be 183the better source of time. 184This command should NOT be used for type 185b, m or r addresses. 186@item @code{broadcast} 187For type b and m addresses (only), this 188command mobilizes a persistent broadcast mode association. 189Multiple 190commands can be used to specify multiple local broadcast interfaces 191(subnets) and/or multiple multicast groups. 192Note that local 193broadcast messages go only to the interface associated with the 194subnet specified, but multicast messages go to all interfaces. 195In broadcast mode the local server sends periodic broadcast 196messages to a client population at the 197@kbd{address} 198specified, which is usually the broadcast address on (one of) the 199local network(s) or a multicast address assigned to NTP. 200The IANA 201has assigned the multicast group address IPv4 224.0.1.1 and 202IPv6 ff05::101 (site local) exclusively to 203NTP, but other nonconflicting addresses can be used to contain the 204messages within administrative boundaries. 205Ordinarily, this 206specification applies only to the local server operating as a 207sender; for operation as a broadcast client, see the 208@code{broadcastclient} 209or 210@code{multicastclient} 211commands 212below. 213@item @code{manycastclient} 214For type m addresses (only), this command mobilizes a 215manycast client mode association for the multicast address 216specified. 217In this case a specific address must be supplied which 218matches the address used on the 219@code{manycastserver} 220command for 221the designated manycast servers. 222The NTP multicast address 223224.0.1.1 assigned by the IANA should NOT be used, unless specific 224means are taken to avoid spraying large areas of the Internet with 225these messages and causing a possibly massive implosion of replies 226at the sender. 227The 228@code{manycastserver} 229command specifies that the local server 230is to operate in client mode with the remote servers that are 231discovered as the result of broadcast/multicast messages. 232The 233client broadcasts a request message to the group address associated 234with the specified 235@kbd{address} 236and specifically enabled 237servers respond to these messages. 238The client selects the servers 239providing the best time and continues as with the 240@code{server} 241command. 242The remaining servers are discarded as if never 243heard. 244@end table 245 246Options: 247@table @asis 248@item @code{autokey} 249All packets sent to and received from the server or peer are to 250include authentication fields encrypted using the autokey scheme 251described in 252@ref{Authentication Options}. 253@item @code{burst} 254when the server is reachable, send a burst of eight packets 255instead of the usual one. 256The packet spacing is normally 2 s; 257however, the spacing between the first and second packets 258can be changed with the 259@code{calldelay} 260command to allow 261additional time for a modem or ISDN call to complete. 262This is designed to improve timekeeping quality 263with the 264@code{server} 265command and s addresses. 266@item @code{iburst} 267When the server is unreachable, send a burst of eight packets 268instead of the usual one. 269The packet spacing is normally 2 s; 270however, the spacing between the first two packets can be 271changed with the 272@code{calldelay} 273command to allow 274additional time for a modem or ISDN call to complete. 275This is designed to speed the initial synchronization 276acquisition with the 277@code{server} 278command and s addresses and when 279@code{ntpd(1ntpdmdoc)} 280is started with the 281@code{-q} 282option. 283@item @code{key} @kbd{key} 284All packets sent to and received from the server or peer are to 285include authentication fields encrypted using the specified 286@kbd{key} 287identifier with values from 1 to 65535, inclusive. 288The 289default is to include no encryption field. 290@item @code{minpoll} @kbd{minpoll} 291@item @code{maxpoll} @kbd{maxpoll} 292These options specify the minimum and maximum poll intervals 293for NTP messages, as a power of 2 in seconds 294The maximum poll 295interval defaults to 10 (1,024 s), but can be increased by the 296@code{maxpoll} 297option to an upper limit of 17 (36.4 h). 298The 299minimum poll interval defaults to 6 (64 s), but can be decreased by 300the 301@code{minpoll} 302option to a lower limit of 4 (16 s). 303@item @code{noselect} 304Marks the server as unused, except for display purposes. 305The server is discarded by the selection algroithm. 306@item @code{preempt} 307Says the association can be preempted. 308@item @code{prefer} 309Marks the server as preferred. 310All other things being equal, 311this host will be chosen for synchronization among a set of 312correctly operating hosts. 313See the 314"Mitigation Rules and the prefer Keyword" 315page 316(available as part of the HTML documentation 317provided in 318@file{/usr/share/doc/ntp}) 319for further information. 320@item @code{true} 321Marks the server as a truechimer, 322forcing the association to always survive the selection and clustering algorithms. 323This option should almost certainly 324@emph{only} 325be used while testing an association. 326@item @code{ttl} @kbd{ttl} 327This option is used only with broadcast server and manycast 328client modes. 329It specifies the time-to-live 330@kbd{ttl} 331to 332use on broadcast server and multicast server and the maximum 333@kbd{ttl} 334for the expanding ring search with manycast 335client packets. 336Selection of the proper value, which defaults to 337127, is something of a black art and should be coordinated with the 338network administrator. 339@item @code{version} @kbd{version} 340Specifies the version number to be used for outgoing NTP 341packets. 342Versions 1-4 are the choices, with version 4 the 343default. 344@item @code{xleave} 345Valid in 346@code{peer} 347and 348@code{broadcast} 349modes only, this flag enables interleave mode. 350@item @code{xmtnonce} 351Valid only for 352@code{server} 353and 354@code{pool} 355modes, this flag puts a random number in the packet's transmit timestamp. 356 357@end table 358@subsubsection Auxiliary Commands 359@table @asis 360@item @code{broadcastclient} 361This command enables reception of broadcast server messages to 362any local interface (type b) address. 363Upon receiving a message for 364the first time, the broadcast client measures the nominal server 365propagation delay using a brief client/server exchange with the 366server, then enters the broadcast client mode, in which it 367synchronizes to succeeding broadcast messages. 368Note that, in order 369to avoid accidental or malicious disruption in this mode, both the 370server and client should operate using symmetric-key or public-key 371authentication as described in 372@ref{Authentication Options}. 373@item @code{manycastserver} @kbd{address} @kbd{...} 374This command enables reception of manycast client messages to 375the multicast group address(es) (type m) specified. 376At least one 377address is required, but the NTP multicast address 224.0.1.1 378assigned by the IANA should NOT be used, unless specific means are 379taken to limit the span of the reply and avoid a possibly massive 380implosion at the original sender. 381Note that, in order to avoid 382accidental or malicious disruption in this mode, both the server 383and client should operate using symmetric-key or public-key 384authentication as described in 385@ref{Authentication Options}. 386@item @code{multicastclient} @kbd{address} @kbd{...} 387This command enables reception of multicast server messages to 388the multicast group address(es) (type m) specified. 389Upon receiving 390a message for the first time, the multicast client measures the 391nominal server propagation delay using a brief client/server 392exchange with the server, then enters the broadcast client mode, in 393which it synchronizes to succeeding multicast messages. 394Note that, 395in order to avoid accidental or malicious disruption in this mode, 396both the server and client should operate using symmetric-key or 397public-key authentication as described in 398@ref{Authentication Options}. 399@item @code{mdnstries} @kbd{number} 400If we are participating in mDNS, 401after we have synched for the first time 402we attempt to register with the mDNS system. 403If that registration attempt fails, 404we try again at one minute intervals for up to 405@code{mdnstries} 406times. 407After all, 408@code{ntpd} 409may be starting before mDNS. 410The default value for 411@code{mdnstries} 412is 5. 413@end table 414@node Authentication Support 415@subsection Authentication Support 416Authentication support allows the NTP client to verify that the 417server is in fact known and trusted and not an intruder intending 418accidentally or on purpose to masquerade as that server. 419The NTPv3 420specification RFC-1305 defines a scheme which provides 421cryptographic authentication of received NTP packets. 422Originally, 423this was done using the Data Encryption Standard (DES) algorithm 424operating in Cipher Block Chaining (CBC) mode, commonly called 425DES-CBC. 426Subsequently, this was replaced by the RSA Message Digest 4275 (MD5) algorithm using a private key, commonly called keyed-MD5. 428Either algorithm computes a message digest, or one-way hash, which 429can be used to verify the server has the correct private key and 430key identifier. 431 432NTPv4 retains the NTPv3 scheme, properly described as symmetric key 433cryptography and, in addition, provides a new Autokey scheme 434based on public key cryptography. 435Public key cryptography is generally considered more secure 436than symmetric key cryptography, since the security is based 437on a private value which is generated by each server and 438never revealed. 439With Autokey all key distribution and 440management functions involve only public values, which 441considerably simplifies key distribution and storage. 442Public key management is based on X.509 certificates, 443which can be provided by commercial services or 444produced by utility programs in the OpenSSL software library 445or the NTPv4 distribution. 446 447While the algorithms for symmetric key cryptography are 448included in the NTPv4 distribution, public key cryptography 449requires the OpenSSL software library to be installed 450before building the NTP distribution. 451Directions for doing that 452are on the Building and Installing the Distribution page. 453 454Authentication is configured separately for each association 455using the 456@code{key} 457or 458@code{autokey} 459subcommand on the 460@code{peer}, 461@code{server}, 462@code{broadcast} 463and 464@code{manycastclient} 465configuration commands as described in 466@ref{Configuration Options} 467page. 468The authentication 469options described below specify the locations of the key files, 470if other than default, which symmetric keys are trusted 471and the interval between various operations, if other than default. 472 473Authentication is always enabled, 474although ineffective if not configured as 475described below. 476If a NTP packet arrives 477including a message authentication 478code (MAC), it is accepted only if it 479passes all cryptographic checks. 480The 481checks require correct key ID, key value 482and message digest. 483If the packet has 484been modified in any way or replayed 485by an intruder, it will fail one or more 486of these checks and be discarded. 487Furthermore, the Autokey scheme requires a 488preliminary protocol exchange to obtain 489the server certificate, verify its 490credentials and initialize the protocol 491 492The 493@code{auth} 494flag controls whether new associations or 495remote configuration commands require cryptographic authentication. 496This flag can be set or reset by the 497@code{enable} 498and 499@code{disable} 500commands and also by remote 501configuration commands sent by a 502@code{ntpdc(1ntpdcmdoc)} 503program running on 504another machine. 505If this flag is enabled, which is the default 506case, new broadcast client and symmetric passive associations and 507remote configuration commands must be cryptographically 508authenticated using either symmetric key or public key cryptography. 509If this 510flag is disabled, these operations are effective 511even if not cryptographic 512authenticated. 513It should be understood 514that operating with the 515@code{auth} 516flag disabled invites a significant vulnerability 517where a rogue hacker can 518masquerade as a falseticker and seriously 519disrupt system timekeeping. 520It is 521important to note that this flag has no purpose 522other than to allow or disallow 523a new association in response to new broadcast 524and symmetric active messages 525and remote configuration commands and, in particular, 526the flag has no effect on 527the authentication process itself. 528 529An attractive alternative where multicast support is available 530is manycast mode, in which clients periodically troll 531for servers as described in the 532@ref{Automatic NTP Configuration Options} 533page. 534Either symmetric key or public key 535cryptographic authentication can be used in this mode. 536The principle advantage 537of manycast mode is that potential servers need not be 538configured in advance, 539since the client finds them during regular operation, 540and the configuration 541files for all clients can be identical. 542 543The security model and protocol schemes for 544both symmetric key and public key 545cryptography are summarized below; 546further details are in the briefings, papers 547and reports at the NTP project page linked from 548@code{http://www.ntp.org/}. 549@subsubsection Symmetric-Key Cryptography 550The original RFC-1305 specification allows any one of possibly 55165,535 keys, each distinguished by a 32-bit key identifier, to 552authenticate an association. 553The servers and clients involved must 554agree on the key and key identifier to 555authenticate NTP packets. 556Keys and 557related information are specified in a key 558file, usually called 559@file{ntp.keys}, 560which must be distributed and stored using 561secure means beyond the scope of the NTP protocol itself. 562Besides the keys used 563for ordinary NTP associations, 564additional keys can be used as passwords for the 565@code{ntpq(1ntpqmdoc)} 566and 567@code{ntpdc(1ntpdcmdoc)} 568utility programs. 569 570When 571@code{ntpd(1ntpdmdoc)} 572is first started, it reads the key file specified in the 573@code{keys} 574configuration command and installs the keys 575in the key cache. 576However, 577individual keys must be activated with the 578@code{trusted} 579command before use. 580This 581allows, for instance, the installation of possibly 582several batches of keys and 583then activating or deactivating each batch 584remotely using 585@code{ntpdc(1ntpdcmdoc)}. 586This also provides a revocation capability that can be used 587if a key becomes compromised. 588The 589@code{requestkey} 590command selects the key used as the password for the 591@code{ntpdc(1ntpdcmdoc)} 592utility, while the 593@code{controlkey} 594command selects the key used as the password for the 595@code{ntpq(1ntpqmdoc)} 596utility. 597@subsubsection Public Key Cryptography 598NTPv4 supports the original NTPv3 symmetric key scheme 599described in RFC-1305 and in addition the Autokey protocol, 600which is based on public key cryptography. 601The Autokey Version 2 protocol described on the Autokey Protocol 602page verifies packet integrity using MD5 message digests 603and verifies the source with digital signatures and any of several 604digest/signature schemes. 605Optional identity schemes described on the Identity Schemes 606page and based on cryptographic challenge/response algorithms 607are also available. 608Using all of these schemes provides strong security against 609replay with or without modification, spoofing, masquerade 610and most forms of clogging attacks. 611 612The Autokey protocol has several modes of operation 613corresponding to the various NTP modes supported. 614Most modes use a special cookie which can be 615computed independently by the client and server, 616but encrypted in transmission. 617All modes use in addition a variant of the S-KEY scheme, 618in which a pseudo-random key list is generated and used 619in reverse order. 620These schemes are described along with an executive summary, 621current status, briefing slides and reading list on the 622@ref{Autonomous Authentication} 623page. 624 625The specific cryptographic environment used by Autokey servers 626and clients is determined by a set of files 627and soft links generated by the 628@code{ntp-keygen(1ntpkeygenmdoc)} 629program. 630This includes a required host key file, 631required certificate file and optional sign key file, 632leapsecond file and identity scheme files. 633The 634digest/signature scheme is specified in the X.509 certificate 635along with the matching sign key. 636There are several schemes 637available in the OpenSSL software library, each identified 638by a specific string such as 639@code{md5WithRSAEncryption}, 640which stands for the MD5 message digest with RSA 641encryption scheme. 642The current NTP distribution supports 643all the schemes in the OpenSSL library, including 644those based on RSA and DSA digital signatures. 645 646NTP secure groups can be used to define cryptographic compartments 647and security hierarchies. 648It is important that every host 649in the group be able to construct a certificate trail to one 650or more trusted hosts in the same group. 651Each group 652host runs the Autokey protocol to obtain the certificates 653for all hosts along the trail to one or more trusted hosts. 654This requires the configuration file in all hosts to be 655engineered so that, even under anticipated failure conditions, 656the NTP subnet will form such that every group host can find 657a trail to at least one trusted host. 658@subsubsection Naming and Addressing 659It is important to note that Autokey does not use DNS to 660resolve addresses, since DNS can't be completely trusted 661until the name servers have synchronized clocks. 662The cryptographic name used by Autokey to bind the host identity 663credentials and cryptographic values must be independent 664of interface, network and any other naming convention. 665The name appears in the host certificate in either or both 666the subject and issuer fields, so protection against 667DNS compromise is essential. 668 669By convention, the name of an Autokey host is the name returned 670by the Unix 671@code{gethostname(2)} 672system call or equivalent in other systems. 673By the system design 674model, there are no provisions to allow alternate names or aliases. 675However, this is not to say that DNS aliases, different names 676for each interface, etc., are constrained in any way. 677 678It is also important to note that Autokey verifies authenticity 679using the host name, network address and public keys, 680all of which are bound together by the protocol specifically 681to deflect masquerade attacks. 682For this reason Autokey 683includes the source and destination IP addresses in message digest 684computations and so the same addresses must be available 685at both the server and client. 686For this reason operation 687with network address translation schemes is not possible. 688This reflects the intended robust security model where government 689and corporate NTP servers are operated outside firewall perimeters. 690@subsubsection Operation 691A specific combination of authentication scheme (none, 692symmetric key, public key) and identity scheme is called 693a cryptotype, although not all combinations are compatible. 694There may be management configurations where the clients, 695servers and peers may not all support the same cryptotypes. 696A secure NTPv4 subnet can be configured in many ways while 697keeping in mind the principles explained above and 698in this section. 699Note however that some cryptotype 700combinations may successfully interoperate with each other, 701but may not represent good security practice. 702 703The cryptotype of an association is determined at the time 704of mobilization, either at configuration time or some time 705later when a message of appropriate cryptotype arrives. 706When mobilized by a 707@code{server} 708or 709@code{peer} 710configuration command and no 711@code{key} 712or 713@code{autokey} 714subcommands are present, the association is not 715authenticated; if the 716@code{key} 717subcommand is present, the association is authenticated 718using the symmetric key ID specified; if the 719@code{autokey} 720subcommand is present, the association is authenticated 721using Autokey. 722 723When multiple identity schemes are supported in the Autokey 724protocol, the first message exchange determines which one is used. 725The client request message contains bits corresponding 726to which schemes it has available. 727The server response message 728contains bits corresponding to which schemes it has available. 729Both server and client match the received bits with their own 730and select a common scheme. 731 732Following the principle that time is a public value, 733a server responds to any client packet that matches 734its cryptotype capabilities. 735Thus, a server receiving 736an unauthenticated packet will respond with an unauthenticated 737packet, while the same server receiving a packet of a cryptotype 738it supports will respond with packets of that cryptotype. 739However, unconfigured broadcast or manycast client 740associations or symmetric passive associations will not be 741mobilized unless the server supports a cryptotype compatible 742with the first packet received. 743By default, unauthenticated associations will not be mobilized 744unless overridden in a decidedly dangerous way. 745 746Some examples may help to reduce confusion. 747Client Alice has no specific cryptotype selected. 748Server Bob has both a symmetric key file and minimal Autokey files. 749Alice's unauthenticated messages arrive at Bob, who replies with 750unauthenticated messages. 751Cathy has a copy of Bob's symmetric 752key file and has selected key ID 4 in messages to Bob. 753Bob verifies the message with his key ID 4. 754If it's the 755same key and the message is verified, Bob sends Cathy a reply 756authenticated with that key. 757If verification fails, 758Bob sends Cathy a thing called a crypto-NAK, which tells her 759something broke. 760She can see the evidence using the 761@code{ntpq(1ntpqmdoc)} 762program. 763 764Denise has rolled her own host key and certificate. 765She also uses one of the identity schemes as Bob. 766She sends the first Autokey message to Bob and they 767both dance the protocol authentication and identity steps. 768If all comes out okay, Denise and Bob continue as described above. 769 770It should be clear from the above that Bob can support 771all the girls at the same time, as long as he has compatible 772authentication and identity credentials. 773Now, Bob can act just like the girls in his own choice of servers; 774he can run multiple configured associations with multiple different 775servers (or the same server, although that might not be useful). 776But, wise security policy might preclude some cryptotype 777combinations; for instance, running an identity scheme 778with one server and no authentication with another might not be wise. 779@subsubsection Key Management 780The cryptographic values used by the Autokey protocol are 781incorporated as a set of files generated by the 782@code{ntp-keygen(1ntpkeygenmdoc)} 783utility program, including symmetric key, host key and 784public certificate files, as well as sign key, identity parameters 785and leapseconds files. 786Alternatively, host and sign keys and 787certificate files can be generated by the OpenSSL utilities 788and certificates can be imported from public certificate 789authorities. 790Note that symmetric keys are necessary for the 791@code{ntpq(1ntpqmdoc)} 792and 793@code{ntpdc(1ntpdcmdoc)} 794utility programs. 795The remaining files are necessary only for the 796Autokey protocol. 797 798Certificates imported from OpenSSL or public certificate 799authorities have certian limitations. 800The certificate should be in ASN.1 syntax, X.509 Version 3 801format and encoded in PEM, which is the same format 802used by OpenSSL. 803The overall length of the certificate encoded 804in ASN.1 must not exceed 1024 bytes. 805The subject distinguished 806name field (CN) is the fully qualified name of the host 807on which it is used; the remaining subject fields are ignored. 808The certificate extension fields must not contain either 809a subject key identifier or a issuer key identifier field; 810however, an extended key usage field for a trusted host must 811contain the value 812@code{trustRoot};. 813Other extension fields are ignored. 814@subsubsection Authentication Commands 815@table @asis 816@item @code{autokey} @code{[@kbd{logsec}]} 817Specifies the interval between regenerations of the session key 818list used with the Autokey protocol. 819Note that the size of the key 820list for each association depends on this interval and the current 821poll interval. 822The default value is 12 (4096 s or about 1.1 hours). 823For poll intervals above the specified interval, a session key list 824with a single entry will be regenerated for every message 825sent. 826@item @code{controlkey} @kbd{key} 827Specifies the key identifier to use with the 828@code{ntpq(1ntpqmdoc)} 829utility, which uses the standard 830protocol defined in RFC-1305. 831The 832@kbd{key} 833argument is 834the key identifier for a trusted key, where the value can be in the 835range 1 to 65,535, inclusive. 836@item @code{crypto} @code{[@code{cert} @kbd{file}]} @code{[@code{leap} @kbd{file}]} @code{[@code{randfile} @kbd{file}]} @code{[@code{host} @kbd{file}]} @code{[@code{sign} @kbd{file}]} @code{[@code{gq} @kbd{file}]} @code{[@code{gqpar} @kbd{file}]} @code{[@code{iffpar} @kbd{file}]} @code{[@code{mvpar} @kbd{file}]} @code{[@code{pw} @kbd{password}]} 837This command requires the OpenSSL library. 838It activates public key 839cryptography, selects the message digest and signature 840encryption scheme and loads the required private and public 841values described above. 842If one or more files are left unspecified, 843the default names are used as described above. 844Unless the complete path and name of the file are specified, the 845location of a file is relative to the keys directory specified 846in the 847@code{keysdir} 848command or default 849@file{/usr/local/etc}. 850Following are the subcommands: 851@table @asis 852@item @code{cert} @kbd{file} 853Specifies the location of the required host public certificate file. 854This overrides the link 855@file{ntpkey_cert_}@kbd{hostname} 856in the keys directory. 857@item @code{gqpar} @kbd{file} 858Specifies the location of the optional GQ parameters file. 859This 860overrides the link 861@file{ntpkey_gq_}@kbd{hostname} 862in the keys directory. 863@item @code{host} @kbd{file} 864Specifies the location of the required host key file. 865This overrides 866the link 867@file{ntpkey_key_}@kbd{hostname} 868in the keys directory. 869@item @code{iffpar} @kbd{file} 870Specifies the location of the optional IFF parameters file. 871This overrides the link 872@file{ntpkey_iff_}@kbd{hostname} 873in the keys directory. 874@item @code{leap} @kbd{file} 875Specifies the location of the optional leapsecond file. 876This overrides the link 877@file{ntpkey_leap} 878in the keys directory. 879@item @code{mvpar} @kbd{file} 880Specifies the location of the optional MV parameters file. 881This overrides the link 882@file{ntpkey_mv_}@kbd{hostname} 883in the keys directory. 884@item @code{pw} @kbd{password} 885Specifies the password to decrypt files containing private keys and 886identity parameters. 887This is required only if these files have been 888encrypted. 889@item @code{randfile} @kbd{file} 890Specifies the location of the random seed file used by the OpenSSL 891library. 892The defaults are described in the main text above. 893@item @code{sign} @kbd{file} 894Specifies the location of the optional sign key file. 895This overrides 896the link 897@file{ntpkey_sign_}@kbd{hostname} 898in the keys directory. 899If this file is 900not found, the host key is also the sign key. 901@end table 902@item @code{keys} @kbd{keyfile} 903Specifies the complete path and location of the MD5 key file 904containing the keys and key identifiers used by 905@code{ntpd(1ntpdmdoc)}, 906@code{ntpq(1ntpqmdoc)} 907and 908@code{ntpdc(1ntpdcmdoc)} 909when operating with symmetric key cryptography. 910This is the same operation as the 911@code{-k} 912command line option. 913@item @code{keysdir} @kbd{path} 914This command specifies the default directory path for 915cryptographic keys, parameters and certificates. 916The default is 917@file{/usr/local/etc/}. 918@item @code{requestkey} @kbd{key} 919Specifies the key identifier to use with the 920@code{ntpdc(1ntpdcmdoc)} 921utility program, which uses a 922proprietary protocol specific to this implementation of 923@code{ntpd(1ntpdmdoc)}. 924The 925@kbd{key} 926argument is a key identifier 927for the trusted key, where the value can be in the range 1 to 92865,535, inclusive. 929@item @code{revoke} @kbd{logsec} 930Specifies the interval between re-randomization of certain 931cryptographic values used by the Autokey scheme, as a power of 2 in 932seconds. 933These values need to be updated frequently in order to 934deflect brute-force attacks on the algorithms of the scheme; 935however, updating some values is a relatively expensive operation. 936The default interval is 16 (65,536 s or about 18 hours). 937For poll 938intervals above the specified interval, the values will be updated 939for every message sent. 940@item @code{trustedkey} @kbd{key} @kbd{...} 941Specifies the key identifiers which are trusted for the 942purposes of authenticating peers with symmetric key cryptography, 943as well as keys used by the 944@code{ntpq(1ntpqmdoc)} 945and 946@code{ntpdc(1ntpdcmdoc)} 947programs. 948The authentication procedures require that both the local 949and remote servers share the same key and key identifier for this 950purpose, although different keys can be used with different 951servers. 952The 953@kbd{key} 954arguments are 32-bit unsigned 955integers with values from 1 to 65,535. 956@end table 957@subsubsection Error Codes 958The following error codes are reported via the NTP control 959and monitoring protocol trap mechanism. 960@table @asis 961@item 101 962(bad field format or length) 963The packet has invalid version, length or format. 964@item 102 965(bad timestamp) 966The packet timestamp is the same or older than the most recent received. 967This could be due to a replay or a server clock time step. 968@item 103 969(bad filestamp) 970The packet filestamp is the same or older than the most recent received. 971This could be due to a replay or a key file generation error. 972@item 104 973(bad or missing public key) 974The public key is missing, has incorrect format or is an unsupported type. 975@item 105 976(unsupported digest type) 977The server requires an unsupported digest/signature scheme. 978@item 106 979(mismatched digest types) 980Not used. 981@item 107 982(bad signature length) 983The signature length does not match the current public key. 984@item 108 985(signature not verified) 986The message fails the signature check. 987It could be bogus or signed by a 988different private key. 989@item 109 990(certificate not verified) 991The certificate is invalid or signed with the wrong key. 992@item 110 993(certificate not verified) 994The certificate is not yet valid or has expired or the signature could not 995be verified. 996@item 111 997(bad or missing cookie) 998The cookie is missing, corrupted or bogus. 999@item 112 1000(bad or missing leapseconds table) 1001The leapseconds table is missing, corrupted or bogus. 1002@item 113 1003(bad or missing certificate) 1004The certificate is missing, corrupted or bogus. 1005@item 114 1006(bad or missing identity) 1007The identity key is missing, corrupt or bogus. 1008@end table 1009@node Monitoring Support 1010@subsection Monitoring Support 1011@code{ntpd(1ntpdmdoc)} 1012includes a comprehensive monitoring facility suitable 1013for continuous, long term recording of server and client 1014timekeeping performance. 1015See the 1016@code{statistics} 1017command below 1018for a listing and example of each type of statistics currently 1019supported. 1020Statistic files are managed using file generation sets 1021and scripts in the 1022@file{./scripts} 1023directory of the source code distribution. 1024Using 1025these facilities and 1026@sc{unix} 1027@code{cron(8)} 1028jobs, the data can be 1029automatically summarized and archived for retrospective analysis. 1030@subsubsection Monitoring Commands 1031@table @asis 1032@item @code{statistics} @kbd{name} @kbd{...} 1033Enables writing of statistics records. 1034Currently, eight kinds of 1035@kbd{name} 1036statistics are supported. 1037@table @asis 1038@item @code{clockstats} 1039Enables recording of clock driver statistics information. 1040Each update 1041received from a clock driver appends a line of the following form to 1042the file generation set named 1043@code{clockstats}: 1044@verbatim 104549213 525.624 127.127.4.1 93 226 00:08:29.606 D 1046@end verbatim 1047 1048The first two fields show the date (Modified Julian Day) and time 1049(seconds and fraction past UTC midnight). 1050The next field shows the 1051clock address in dotted-quad notation. 1052The final field shows the last 1053timecode received from the clock in decoded ASCII format, where 1054meaningful. 1055In some clock drivers a good deal of additional information 1056can be gathered and displayed as well. 1057See information specific to each 1058clock for further details. 1059@item @code{cryptostats} 1060This option requires the OpenSSL cryptographic software library. 1061It 1062enables recording of cryptographic public key protocol information. 1063Each message received by the protocol module appends a line of the 1064following form to the file generation set named 1065@code{cryptostats}: 1066@verbatim 106749213 525.624 127.127.4.1 message 1068@end verbatim 1069 1070The first two fields show the date (Modified Julian Day) and time 1071(seconds and fraction past UTC midnight). 1072The next field shows the peer 1073address in dotted-quad notation, The final message field includes the 1074message type and certain ancillary information. 1075See the 1076@ref{Authentication Options} 1077section for further information. 1078@item @code{loopstats} 1079Enables recording of loop filter statistics information. 1080Each 1081update of the local clock outputs a line of the following form to 1082the file generation set named 1083@code{loopstats}: 1084@verbatim 108550935 75440.031 0.000006019 13.778190 0.000351733 0.0133806 1086@end verbatim 1087 1088The first two fields show the date (Modified Julian Day) and 1089time (seconds and fraction past UTC midnight). 1090The next five fields 1091show time offset (seconds), frequency offset (parts per million - 1092PPM), RMS jitter (seconds), Allan deviation (PPM) and clock 1093discipline time constant. 1094@item @code{peerstats} 1095Enables recording of peer statistics information. 1096This includes 1097statistics records of all peers of a NTP server and of special 1098signals, where present and configured. 1099Each valid update appends a 1100line of the following form to the current element of a file 1101generation set named 1102@code{peerstats}: 1103@verbatim 110448773 10847.650 127.127.4.1 9714 -0.001605376 0.000000000 0.001424877 0.000958674 1105@end verbatim 1106 1107The first two fields show the date (Modified Julian Day) and 1108time (seconds and fraction past UTC midnight). 1109The next two fields 1110show the peer address in dotted-quad notation and status, 1111respectively. 1112The status field is encoded in hex in the format 1113described in Appendix A of the NTP specification RFC 1305. 1114The final four fields show the offset, 1115delay, dispersion and RMS jitter, all in seconds. 1116@item @code{rawstats} 1117Enables recording of raw-timestamp statistics information. 1118This 1119includes statistics records of all peers of a NTP server and of 1120special signals, where present and configured. 1121Each NTP message 1122received from a peer or clock driver appends a line of the 1123following form to the file generation set named 1124@code{rawstats}: 1125@verbatim 112650928 2132.543 128.4.1.1 128.4.1.20 3102453281.584327000 3102453281.58622800031 02453332.540806000 3102453332.541458000 1127@end verbatim 1128 1129The first two fields show the date (Modified Julian Day) and 1130time (seconds and fraction past UTC midnight). 1131The next two fields 1132show the remote peer or clock address followed by the local address 1133in dotted-quad notation. 1134The final four fields show the originate, 1135receive, transmit and final NTP timestamps in order. 1136The timestamp 1137values are as received and before processing by the various data 1138smoothing and mitigation algorithms. 1139@item @code{sysstats} 1140Enables recording of ntpd statistics counters on a periodic basis. 1141Each 1142hour a line of the following form is appended to the file generation 1143set named 1144@code{sysstats}: 1145@verbatim 114650928 2132.543 36000 81965 0 9546 56 71793 512 540 10 147 1147@end verbatim 1148 1149The first two fields show the date (Modified Julian Day) and time 1150(seconds and fraction past UTC midnight). 1151The remaining ten fields show 1152the statistics counter values accumulated since the last generated 1153line. 1154@table @asis 1155@item Time since restart @code{36000} 1156Time in hours since the system was last rebooted. 1157@item Packets received @code{81965} 1158Total number of packets received. 1159@item Packets processed @code{0} 1160Number of packets received in response to previous packets sent 1161@item Current version @code{9546} 1162Number of packets matching the current NTP version. 1163@item Previous version @code{56} 1164Number of packets matching the previous NTP version. 1165@item Bad version @code{71793} 1166Number of packets matching neither NTP version. 1167@item Access denied @code{512} 1168Number of packets denied access for any reason. 1169@item Bad length or format @code{540} 1170Number of packets with invalid length, format or port number. 1171@item Bad authentication @code{10} 1172Number of packets not verified as authentic. 1173@item Rate exceeded @code{147} 1174Number of packets discarded due to rate limitation. 1175@end table 1176@item @code{statsdir} @kbd{directory_path} 1177Indicates the full path of a directory where statistics files 1178should be created (see below). 1179This keyword allows 1180the (otherwise constant) 1181@code{filegen} 1182filename prefix to be modified for file generation sets, which 1183is useful for handling statistics logs. 1184@item @code{filegen} @kbd{name} @code{[@code{file} @kbd{filename}]} @code{[@code{type} @kbd{typename}]} @code{[@code{link} | @code{nolink}]} @code{[@code{enable} | @code{disable}]} 1185Configures setting of generation file set name. 1186Generation 1187file sets provide a means for handling files that are 1188continuously growing during the lifetime of a server. 1189Server statistics are a typical example for such files. 1190Generation file sets provide access to a set of files used 1191to store the actual data. 1192At any time at most one element 1193of the set is being written to. 1194The type given specifies 1195when and how data will be directed to a new element of the set. 1196This way, information stored in elements of a file set 1197that are currently unused are available for administrational 1198operations without the risk of disturbing the operation of ntpd. 1199(Most important: they can be removed to free space for new data 1200produced.) 1201 1202Note that this command can be sent from the 1203@code{ntpdc(1ntpdcmdoc)} 1204program running at a remote location. 1205@table @asis 1206@item @code{name} 1207This is the type of the statistics records, as shown in the 1208@code{statistics} 1209command. 1210@item @code{file} @kbd{filename} 1211This is the file name for the statistics records. 1212Filenames of set 1213members are built from three concatenated elements 1214@code{prefix}, 1215@code{filename} 1216and 1217@code{suffix}: 1218@table @asis 1219@item @code{prefix} 1220This is a constant filename path. 1221It is not subject to 1222modifications via the 1223@kbd{filegen} 1224option. 1225It is defined by the 1226server, usually specified as a compile-time constant. 1227It may, 1228however, be configurable for individual file generation sets 1229via other commands. 1230For example, the prefix used with 1231@kbd{loopstats} 1232and 1233@kbd{peerstats} 1234generation can be configured using the 1235@kbd{statsdir} 1236option explained above. 1237@item @code{filename} 1238This string is directly concatenated to the prefix mentioned 1239above (no intervening 1240@quoteleft{}/@quoteright{}). 1241This can be modified using 1242the file argument to the 1243@kbd{filegen} 1244statement. 1245No 1246@file{..} 1247elements are 1248allowed in this component to prevent filenames referring to 1249parts outside the filesystem hierarchy denoted by 1250@kbd{prefix}. 1251@item @code{suffix} 1252This part is reflects individual elements of a file set. 1253It is 1254generated according to the type of a file set. 1255@end table 1256@item @code{type} @kbd{typename} 1257A file generation set is characterized by its type. 1258The following 1259types are supported: 1260@table @asis 1261@item @code{none} 1262The file set is actually a single plain file. 1263@item @code{pid} 1264One element of file set is used per incarnation of a ntpd 1265server. 1266This type does not perform any changes to file set 1267members during runtime, however it provides an easy way of 1268separating files belonging to different 1269@code{ntpd(1ntpdmdoc)} 1270server incarnations. 1271The set member filename is built by appending a 1272@quoteleft{}.@quoteright{} 1273to concatenated 1274@kbd{prefix} 1275and 1276@kbd{filename} 1277strings, and 1278appending the decimal representation of the process ID of the 1279@code{ntpd(1ntpdmdoc)} 1280server process. 1281@item @code{day} 1282One file generation set element is created per day. 1283A day is 1284defined as the period between 00:00 and 24:00 UTC. 1285The file set 1286member suffix consists of a 1287@quoteleft{}.@quoteright{} 1288and a day specification in 1289the form 1290@code{YYYYMMdd}. 1291@code{YYYY} 1292is a 4-digit year number (e.g., 1992). 1293@code{MM} 1294is a two digit month number. 1295@code{dd} 1296is a two digit day number. 1297Thus, all information written at 10 December 1992 would end up 1298in a file named 1299@kbd{prefix} 1300@kbd{filename}.19921210. 1301@item @code{week} 1302Any file set member contains data related to a certain week of 1303a year. 1304The term week is defined by computing day-of-year 1305modulo 7. 1306Elements of such a file generation set are 1307distinguished by appending the following suffix to the file set 1308filename base: A dot, a 4-digit year number, the letter 1309@code{W}, 1310and a 2-digit week number. 1311For example, information from January, 131210th 1992 would end up in a file with suffix 1313.No . Ns Ar 1992W1 . 1314@item @code{month} 1315One generation file set element is generated per month. 1316The 1317file name suffix consists of a dot, a 4-digit year number, and 1318a 2-digit month. 1319@item @code{year} 1320One generation file element is generated per year. 1321The filename 1322suffix consists of a dot and a 4 digit year number. 1323@item @code{age} 1324This type of file generation sets changes to a new element of 1325the file set every 24 hours of server operation. 1326The filename 1327suffix consists of a dot, the letter 1328@code{a}, 1329and an 8-digit number. 1330This number is taken to be the number of seconds the server is 1331running at the start of the corresponding 24-hour period. 1332Information is only written to a file generation by specifying 1333@code{enable}; 1334output is prevented by specifying 1335@code{disable}. 1336@end table 1337@item @code{link} | @code{nolink} 1338It is convenient to be able to access the current element of a file 1339generation set by a fixed name. 1340This feature is enabled by 1341specifying 1342@code{link} 1343and disabled using 1344@code{nolink}. 1345If link is specified, a 1346hard link from the current file set element to a file without 1347suffix is created. 1348When there is already a file with this name and 1349the number of links of this file is one, it is renamed appending a 1350dot, the letter 1351@code{C}, 1352and the pid of the 1353@code{ntpd(1ntpdmdoc)} 1354server process. 1355When the 1356number of links is greater than one, the file is unlinked. 1357This 1358allows the current file to be accessed by a constant name. 1359@item @code{enable} @code{|} @code{disable} 1360Enables or disables the recording function. 1361@end table 1362@end table 1363@end table 1364@node Access Control Support 1365@subsection Access Control Support 1366The 1367@code{ntpd(1ntpdmdoc)} 1368daemon implements a general purpose address/mask based restriction 1369list. 1370The list contains address/match entries sorted first 1371by increasing address values and and then by increasing mask values. 1372A match occurs when the bitwise AND of the mask and the packet 1373source address is equal to the bitwise AND of the mask and 1374address in the list. 1375The list is searched in order with the 1376last match found defining the restriction flags associated 1377with the entry. 1378Additional information and examples can be found in the 1379"Notes on Configuring NTP and Setting up a NTP Subnet" 1380page 1381(available as part of the HTML documentation 1382provided in 1383@file{/usr/share/doc/ntp}). 1384 1385The restriction facility was implemented in conformance 1386with the access policies for the original NSFnet backbone 1387time servers. 1388Later the facility was expanded to deflect 1389cryptographic and clogging attacks. 1390While this facility may 1391be useful for keeping unwanted or broken or malicious clients 1392from congesting innocent servers, it should not be considered 1393an alternative to the NTP authentication facilities. 1394Source address based restrictions are easily circumvented 1395by a determined cracker. 1396 1397Clients can be denied service because they are explicitly 1398included in the restrict list created by the 1399@code{restrict} 1400command 1401or implicitly as the result of cryptographic or rate limit 1402violations. 1403Cryptographic violations include certificate 1404or identity verification failure; rate limit violations generally 1405result from defective NTP implementations that send packets 1406at abusive rates. 1407Some violations cause denied service 1408only for the offending packet, others cause denied service 1409for a timed period and others cause the denied service for 1410an indefinite period. 1411When a client or network is denied access 1412for an indefinite period, the only way at present to remove 1413the restrictions is by restarting the server. 1414@subsubsection The Kiss-of-Death Packet 1415Ordinarily, packets denied service are simply dropped with no 1416further action except incrementing statistics counters. 1417Sometimes a 1418more proactive response is needed, such as a server message that 1419explicitly requests the client to stop sending and leave a message 1420for the system operator. 1421A special packet format has been created 1422for this purpose called the "kiss-of-death" (KoD) packet. 1423KoD packets have the leap bits set unsynchronized and stratum set 1424to zero and the reference identifier field set to a four-byte 1425ASCII code. 1426If the 1427@code{noserve} 1428or 1429@code{notrust} 1430flag of the matching restrict list entry is set, 1431the code is "DENY"; if the 1432@code{limited} 1433flag is set and the rate limit 1434is exceeded, the code is "RATE". 1435Finally, if a cryptographic violation occurs, the code is "CRYP". 1436 1437A client receiving a KoD performs a set of sanity checks to 1438minimize security exposure, then updates the stratum and 1439reference identifier peer variables, sets the access 1440denied (TEST4) bit in the peer flash variable and sends 1441a message to the log. 1442As long as the TEST4 bit is set, 1443the client will send no further packets to the server. 1444The only way at present to recover from this condition is 1445to restart the protocol at both the client and server. 1446This 1447happens automatically at the client when the association times out. 1448It will happen at the server only if the server operator cooperates. 1449@subsubsection Access Control Commands 1450@table @asis 1451@item @code{discard} @code{[@code{average} @kbd{avg}]} @code{[@code{minimum} @kbd{min}]} @code{[@code{monitor} @kbd{prob}]} 1452Set the parameters of the 1453@code{limited} 1454facility which protects the server from 1455client abuse. 1456The 1457@code{average} 1458subcommand specifies the minimum average packet 1459spacing in log2 seconds, defaulting to 3 (8s), while the 1460@code{minimum} 1461subcommand specifies the minimum packet spacing 1462in seconds, defaulting to 2. 1463Packets that violate these minima are discarded 1464and a kiss-o'-death packet returned if enabled. 1465The 1466@code{monitor} 1467subcommand indirectly specifies the probability of 1468replacing the oldest entry from the monitor (MRU) 1469list of recent requests used to enforce rate controls, 1470when that list is at its maximum size. The probability 1471of replacing the oldest entry is the age of that entry 1472in seconds divided by the 1473@code{monitor} 1474value, default 3000. For example, if the oldest entry 1475in the MRU list represents a request 300 seconds ago, 1476by default the probability of replacing it with an 1477entry representing the client request being processed 1478now is 10%. Conversely, if the oldest entry is more 1479than 3000 seconds old, the probability is 100%. 1480@item @code{restrict} @code{address} @code{[@code{mask} @kbd{mask}]} @code{[@code{ippeerlimit} @kbd{int}]} @code{[@kbd{flag} @kbd{...}]} 1481The 1482@kbd{address} 1483argument expressed in 1484dotted-quad form is the address of a host or network. 1485Alternatively, the 1486@kbd{address} 1487argument can be a valid host DNS name. 1488The 1489@kbd{mask} 1490argument expressed in dotted-quad form defaults to 1491@code{255.255.255.255}, 1492meaning that the 1493@kbd{address} 1494is treated as the address of an individual host. 1495A default entry (address 1496@code{0.0.0.0}, 1497mask 1498@code{0.0.0.0}) 1499is always included and is always the first entry in the list. 1500Note that text string 1501@code{default}, 1502with no mask option, may 1503be used to indicate the default entry. 1504The 1505@code{ippeerlimit} 1506directive limits the number of peer requests for each IP to 1507@kbd{int}, 1508where a value of -1 means "unlimited", the current default. 1509A value of 0 means "none". 1510There would usually be at most 1 peering request per IP, 1511but if the remote peering requests are behind a proxy 1512there could well be more than 1 per IP. 1513In the current implementation, 1514@code{flag} 1515always 1516restricts access, i.e., an entry with no flags indicates that free 1517access to the server is to be given. 1518The flags are not orthogonal, 1519in that more restrictive flags will often make less restrictive 1520ones redundant. 1521The flags can generally be classed into two 1522categories, those which restrict time service and those which 1523restrict informational queries and attempts to do run-time 1524reconfiguration of the server. 1525One or more of the following flags 1526may be specified: 1527@table @asis 1528@item @code{ignore} 1529Deny packets of all kinds, including 1530@code{ntpq(1ntpqmdoc)} 1531and 1532@code{ntpdc(1ntpdcmdoc)} 1533queries. 1534@item @code{kod} 1535If this flag is set when an access violation occurs, a kiss-o'-death 1536(KoD) packet is sent. 1537KoD packets are rate limited to no more than one 1538per second. 1539If another KoD packet occurs within one second after the 1540last one, the packet is dropped. 1541@item @code{limited} 1542Deny service if the packet spacing violates the lower limits specified 1543in the 1544@code{discard} 1545command. 1546A history of clients is kept using the 1547monitoring capability of 1548@code{ntpd(1ntpdmdoc)}. 1549Thus, monitoring is always active as 1550long as there is a restriction entry with the 1551@code{limited} 1552flag. 1553@item @code{lowpriotrap} 1554Declare traps set by matching hosts to be low priority. 1555The 1556number of traps a server can maintain is limited (the current limit 1557is 3). 1558Traps are usually assigned on a first come, first served 1559basis, with later trap requestors being denied service. 1560This flag 1561modifies the assignment algorithm by allowing low priority traps to 1562be overridden by later requests for normal priority traps. 1563@item @code{noepeer} 1564Deny ephemeral peer requests, 1565even if they come from an authenticated source. 1566Note that the ability to use a symmetric key for authentication may be restricted to 1567one or more IPs or subnets via the third field of the 1568@file{ntp.keys} 1569file. 1570This restriction is not enabled by default, 1571to maintain backward compatability. 1572Expect 1573@code{noepeer} 1574to become the default in ntp-4.4. 1575@item @code{nomodify} 1576Deny 1577@code{ntpq(1ntpqmdoc)} 1578and 1579@code{ntpdc(1ntpdcmdoc)} 1580queries which attempt to modify the state of the 1581server (i.e., run time reconfiguration). 1582Queries which return 1583information are permitted. 1584@item @code{noquery} 1585Deny 1586@code{ntpq(1ntpqmdoc)} 1587and 1588@code{ntpdc(1ntpdcmdoc)} 1589queries. 1590Time service is not affected. 1591@item @code{nopeer} 1592Deny unauthenticated packets which would result in mobilizing a new association. 1593This includes 1594broadcast and symmetric active packets 1595when a configured association does not exist. 1596It also includes 1597@code{pool} 1598associations, so if you want to use servers from a 1599@code{pool} 1600directive and also want to use 1601@code{nopeer} 1602by default, you'll want a 1603@code{restrict source ...} 1604line as well that does 1605@emph{not} 1606include the 1607@code{nopeer} 1608directive. 1609@item @code{noserve} 1610Deny all packets except 1611@code{ntpq(1ntpqmdoc)} 1612and 1613@code{ntpdc(1ntpdcmdoc)} 1614queries. 1615@item @code{notrap} 1616Decline to provide mode 6 control message trap service to matching 1617hosts. 1618The trap service is a subsystem of the 1619@code{ntpq(1ntpqmdoc)} 1620control message 1621protocol which is intended for use by remote event logging programs. 1622@item @code{notrust} 1623Deny service unless the packet is cryptographically authenticated. 1624@item @code{ntpport} 1625This is actually a match algorithm modifier, rather than a 1626restriction flag. 1627Its presence causes the restriction entry to be 1628matched only if the source port in the packet is the standard NTP 1629UDP port (123). 1630Both 1631@code{ntpport} 1632and 1633@code{non-ntpport} 1634may 1635be specified. 1636The 1637@code{ntpport} 1638is considered more specific and 1639is sorted later in the list. 1640@item @code{serverresponse fuzz} 1641When reponding to server requests, 1642fuzz the low order bits of the 1643@code{reftime}. 1644@item @code{version} 1645Deny packets that do not match the current NTP version. 1646@end table 1647 1648Default restriction list entries with the flags ignore, interface, 1649ntpport, for each of the local host's interface addresses are 1650inserted into the table at startup to prevent the server 1651from attempting to synchronize to its own time. 1652A default entry is also always present, though if it is 1653otherwise unconfigured; no flags are associated 1654with the default entry (i.e., everything besides your own 1655NTP server is unrestricted). 1656@end table 1657@node Automatic NTP Configuration Options 1658@subsection Automatic NTP Configuration Options 1659@subsubsection Manycasting 1660Manycasting is a automatic discovery and configuration paradigm 1661new to NTPv4. 1662It is intended as a means for a multicast client 1663to troll the nearby network neighborhood to find cooperating 1664manycast servers, validate them using cryptographic means 1665and evaluate their time values with respect to other servers 1666that might be lurking in the vicinity. 1667The intended result is that each manycast client mobilizes 1668client associations with some number of the "best" 1669of the nearby manycast servers, yet automatically reconfigures 1670to sustain this number of servers should one or another fail. 1671 1672Note that the manycasting paradigm does not coincide 1673with the anycast paradigm described in RFC-1546, 1674which is designed to find a single server from a clique 1675of servers providing the same service. 1676The manycast paradigm is designed to find a plurality 1677of redundant servers satisfying defined optimality criteria. 1678 1679Manycasting can be used with either symmetric key 1680or public key cryptography. 1681The public key infrastructure (PKI) 1682offers the best protection against compromised keys 1683and is generally considered stronger, at least with relatively 1684large key sizes. 1685It is implemented using the Autokey protocol and 1686the OpenSSL cryptographic library available from 1687@code{http://www.openssl.org/}. 1688The library can also be used with other NTPv4 modes 1689as well and is highly recommended, especially for broadcast modes. 1690 1691A persistent manycast client association is configured 1692using the 1693@code{manycastclient} 1694command, which is similar to the 1695@code{server} 1696command but with a multicast (IPv4 class 1697@code{D} 1698or IPv6 prefix 1699@code{FF}) 1700group address. 1701The IANA has designated IPv4 address 224.1.1.1 1702and IPv6 address FF05::101 (site local) for NTP. 1703When more servers are needed, it broadcasts manycast 1704client messages to this address at the minimum feasible rate 1705and minimum feasible time-to-live (TTL) hops, depending 1706on how many servers have already been found. 1707There can be as many manycast client associations 1708as different group address, each one serving as a template 1709for a future ephemeral unicast client/server association. 1710 1711Manycast servers configured with the 1712@code{manycastserver} 1713command listen on the specified group address for manycast 1714client messages. 1715Note the distinction between manycast client, 1716which actively broadcasts messages, and manycast server, 1717which passively responds to them. 1718If a manycast server is 1719in scope of the current TTL and is itself synchronized 1720to a valid source and operating at a stratum level equal 1721to or lower than the manycast client, it replies to the 1722manycast client message with an ordinary unicast server message. 1723 1724The manycast client receiving this message mobilizes 1725an ephemeral client/server association according to the 1726matching manycast client template, but only if cryptographically 1727authenticated and the server stratum is less than or equal 1728to the client stratum. 1729Authentication is explicitly required 1730and either symmetric key or public key (Autokey) can be used. 1731Then, the client polls the server at its unicast address 1732in burst mode in order to reliably set the host clock 1733and validate the source. 1734This normally results 1735in a volley of eight client/server at 2-s intervals 1736during which both the synchronization and cryptographic 1737protocols run concurrently. 1738Following the volley, 1739the client runs the NTP intersection and clustering 1740algorithms, which act to discard all but the "best" 1741associations according to stratum and synchronization 1742distance. 1743The surviving associations then continue 1744in ordinary client/server mode. 1745 1746The manycast client polling strategy is designed to reduce 1747as much as possible the volume of manycast client messages 1748and the effects of implosion due to near-simultaneous 1749arrival of manycast server messages. 1750The strategy is determined by the 1751@code{manycastclient}, 1752@code{tos} 1753and 1754@code{ttl} 1755configuration commands. 1756The manycast poll interval is 1757normally eight times the system poll interval, 1758which starts out at the 1759@code{minpoll} 1760value specified in the 1761@code{manycastclient}, 1762command and, under normal circumstances, increments to the 1763@code{maxpolll} 1764value specified in this command. 1765Initially, the TTL is 1766set at the minimum hops specified by the 1767@code{ttl} 1768command. 1769At each retransmission the TTL is increased until reaching 1770the maximum hops specified by this command or a sufficient 1771number client associations have been found. 1772Further retransmissions use the same TTL. 1773 1774The quality and reliability of the suite of associations 1775discovered by the manycast client is determined by the NTP 1776mitigation algorithms and the 1777@code{minclock} 1778and 1779@code{minsane} 1780values specified in the 1781@code{tos} 1782configuration command. 1783At least 1784@code{minsane} 1785candidate servers must be available and the mitigation 1786algorithms produce at least 1787@code{minclock} 1788survivors in order to synchronize the clock. 1789Byzantine agreement principles require at least four 1790candidates in order to correctly discard a single falseticker. 1791For legacy purposes, 1792@code{minsane} 1793defaults to 1 and 1794@code{minclock} 1795defaults to 3. 1796For manycast service 1797@code{minsane} 1798should be explicitly set to 4, assuming at least that 1799number of servers are available. 1800 1801If at least 1802@code{minclock} 1803servers are found, the manycast poll interval is immediately 1804set to eight times 1805@code{maxpoll}. 1806If less than 1807@code{minclock} 1808servers are found when the TTL has reached the maximum hops, 1809the manycast poll interval is doubled. 1810For each transmission 1811after that, the poll interval is doubled again until 1812reaching the maximum of eight times 1813@code{maxpoll}. 1814Further transmissions use the same poll interval and 1815TTL values. 1816Note that while all this is going on, 1817each client/server association found is operating normally 1818it the system poll interval. 1819 1820Administratively scoped multicast boundaries are normally 1821specified by the network router configuration and, 1822in the case of IPv6, the link/site scope prefix. 1823By default, the increment for TTL hops is 32 starting 1824from 31; however, the 1825@code{ttl} 1826configuration command can be 1827used to modify the values to match the scope rules. 1828 1829It is often useful to narrow the range of acceptable 1830servers which can be found by manycast client associations. 1831Because manycast servers respond only when the client 1832stratum is equal to or greater than the server stratum, 1833primary (stratum 1) servers fill find only primary servers 1834in TTL range, which is probably the most common objective. 1835However, unless configured otherwise, all manycast clients 1836in TTL range will eventually find all primary servers 1837in TTL range, which is probably not the most common 1838objective in large networks. 1839The 1840@code{tos} 1841command can be used to modify this behavior. 1842Servers with stratum below 1843@code{floor} 1844or above 1845@code{ceiling} 1846specified in the 1847@code{tos} 1848command are strongly discouraged during the selection 1849process; however, these servers may be temporally 1850accepted if the number of servers within TTL range is 1851less than 1852@code{minclock}. 1853 1854The above actions occur for each manycast client message, 1855which repeats at the designated poll interval. 1856However, once the ephemeral client association is mobilized, 1857subsequent manycast server replies are discarded, 1858since that would result in a duplicate association. 1859If during a poll interval the number of client associations 1860falls below 1861@code{minclock}, 1862all manycast client prototype associations are reset 1863to the initial poll interval and TTL hops and operation 1864resumes from the beginning. 1865It is important to avoid 1866frequent manycast client messages, since each one requires 1867all manycast servers in TTL range to respond. 1868The result could well be an implosion, either minor or major, 1869depending on the number of servers in range. 1870The recommended value for 1871@code{maxpoll} 1872is 12 (4,096 s). 1873 1874It is possible and frequently useful to configure a host 1875as both manycast client and manycast server. 1876A number of hosts configured this way and sharing a common 1877group address will automatically organize themselves 1878in an optimum configuration based on stratum and 1879synchronization distance. 1880For example, consider an NTP 1881subnet of two primary servers and a hundred or more 1882dependent clients. 1883With two exceptions, all servers 1884and clients have identical configuration files including both 1885@code{multicastclient} 1886and 1887@code{multicastserver} 1888commands using, for instance, multicast group address 1889239.1.1.1. 1890The only exception is that each primary server 1891configuration file must include commands for the primary 1892reference source such as a GPS receiver. 1893 1894The remaining configuration files for all secondary 1895servers and clients have the same contents, except for the 1896@code{tos} 1897command, which is specific for each stratum level. 1898For stratum 1 and stratum 2 servers, that command is 1899not necessary. 1900For stratum 3 and above servers the 1901@code{floor} 1902value is set to the intended stratum number. 1903Thus, all stratum 3 configuration files are identical, 1904all stratum 4 files are identical and so forth. 1905 1906Once operations have stabilized in this scenario, 1907the primary servers will find the primary reference source 1908and each other, since they both operate at the same 1909stratum (1), but not with any secondary server or client, 1910since these operate at a higher stratum. 1911The secondary 1912servers will find the servers at the same stratum level. 1913If one of the primary servers loses its GPS receiver, 1914it will continue to operate as a client and other clients 1915will time out the corresponding association and 1916re-associate accordingly. 1917 1918Some administrators prefer to avoid running 1919@code{ntpd(1ntpdmdoc)} 1920continuously and run either 1921@code{sntp(1sntpmdoc)} 1922or 1923@code{ntpd(1ntpdmdoc)} 1924@code{-q} 1925as a cron job. 1926In either case the servers must be 1927configured in advance and the program fails if none are 1928available when the cron job runs. 1929A really slick 1930application of manycast is with 1931@code{ntpd(1ntpdmdoc)} 1932@code{-q}. 1933The program wakes up, scans the local landscape looking 1934for the usual suspects, selects the best from among 1935the rascals, sets the clock and then departs. 1936Servers do not have to be configured in advance and 1937all clients throughout the network can have the same 1938configuration file. 1939@subsubsection Manycast Interactions with Autokey 1940Each time a manycast client sends a client mode packet 1941to a multicast group address, all manycast servers 1942in scope generate a reply including the host name 1943and status word. 1944The manycast clients then run 1945the Autokey protocol, which collects and verifies 1946all certificates involved. 1947Following the burst interval 1948all but three survivors are cast off, 1949but the certificates remain in the local cache. 1950It often happens that several complete signing trails 1951from the client to the primary servers are collected in this way. 1952 1953About once an hour or less often if the poll interval 1954exceeds this, the client regenerates the Autokey key list. 1955This is in general transparent in client/server mode. 1956However, about once per day the server private value 1957used to generate cookies is refreshed along with all 1958manycast client associations. 1959In this case all 1960cryptographic values including certificates is refreshed. 1961If a new certificate has been generated since 1962the last refresh epoch, it will automatically revoke 1963all prior certificates that happen to be in the 1964certificate cache. 1965At the same time, the manycast 1966scheme starts all over from the beginning and 1967the expanding ring shrinks to the minimum and increments 1968from there while collecting all servers in scope. 1969@subsubsection Broadcast Options 1970@table @asis 1971@item @code{tos} @code{[@code{bcpollbstep} @kbd{gate}]} 1972This command provides a way to delay, 1973by the specified number of broadcast poll intervals, 1974believing backward time steps from a broadcast server. 1975Broadcast time networks are expected to be trusted. 1976In the event a broadcast server's time is stepped backwards, 1977there is clear benefit to having the clients notice this change 1978as soon as possible. 1979Attacks such as replay attacks can happen, however, 1980and even though there are a number of protections built in to 1981broadcast mode, attempts to perform a replay attack are possible. 1982This value defaults to 0, but can be changed 1983to any number of poll intervals between 0 and 4. 1984@end table 1985@subsubsection Manycast Options 1986@table @asis 1987@item @code{tos} @code{[@code{ceiling} @kbd{ceiling} | @code{cohort} @code{@{} @code{0} | @code{1} @code{@}} | @code{floor} @kbd{floor} | @code{minclock} @kbd{minclock} | @code{minsane} @kbd{minsane}]} 1988This command affects the clock selection and clustering 1989algorithms. 1990It can be used to select the quality and 1991quantity of peers used to synchronize the system clock 1992and is most useful in manycast mode. 1993The variables operate 1994as follows: 1995@table @asis 1996@item @code{ceiling} @kbd{ceiling} 1997Peers with strata above 1998@code{ceiling} 1999will be discarded if there are at least 2000@code{minclock} 2001peers remaining. 2002This value defaults to 15, but can be changed 2003to any number from 1 to 15. 2004@item @code{cohort} @code{@{0 | 1@}} 2005This is a binary flag which enables (0) or disables (1) 2006manycast server replies to manycast clients with the same 2007stratum level. 2008This is useful to reduce implosions where 2009large numbers of clients with the same stratum level 2010are present. 2011The default is to enable these replies. 2012@item @code{floor} @kbd{floor} 2013Peers with strata below 2014@code{floor} 2015will be discarded if there are at least 2016@code{minclock} 2017peers remaining. 2018This value defaults to 1, but can be changed 2019to any number from 1 to 15. 2020@item @code{minclock} @kbd{minclock} 2021The clustering algorithm repeatedly casts out outlier 2022associations until no more than 2023@code{minclock} 2024associations remain. 2025This value defaults to 3, 2026but can be changed to any number from 1 to the number of 2027configured sources. 2028@item @code{minsane} @kbd{minsane} 2029This is the minimum number of candidates available 2030to the clock selection algorithm in order to produce 2031one or more truechimers for the clustering algorithm. 2032If fewer than this number are available, the clock is 2033undisciplined and allowed to run free. 2034The default is 1 2035for legacy purposes. 2036However, according to principles of 2037Byzantine agreement, 2038@code{minsane} 2039should be at least 4 in order to detect and discard 2040a single falseticker. 2041@end table 2042@item @code{ttl} @kbd{hop} @kbd{...} 2043This command specifies a list of TTL values in increasing 2044order, up to 8 values can be specified. 2045In manycast mode these values are used in turn 2046in an expanding-ring search. 2047The default is eight 2048multiples of 32 starting at 31. 2049@end table 2050@node Reference Clock Support 2051@subsection Reference Clock Support 2052The NTP Version 4 daemon supports some three dozen different radio, 2053satellite and modem reference clocks plus a special pseudo-clock 2054used for backup or when no other clock source is available. 2055Detailed descriptions of individual device drivers and options can 2056be found in the 2057"Reference Clock Drivers" 2058page 2059(available as part of the HTML documentation 2060provided in 2061@file{/usr/share/doc/ntp}). 2062Additional information can be found in the pages linked 2063there, including the 2064"Debugging Hints for Reference Clock Drivers" 2065and 2066"How To Write a Reference Clock Driver" 2067pages 2068(available as part of the HTML documentation 2069provided in 2070@file{/usr/share/doc/ntp}). 2071In addition, support for a PPS 2072signal is available as described in the 2073"Pulse-per-second (PPS) Signal Interfacing" 2074page 2075(available as part of the HTML documentation 2076provided in 2077@file{/usr/share/doc/ntp}). 2078Many 2079drivers support special line discipline/streams modules which can 2080significantly improve the accuracy using the driver. 2081These are 2082described in the 2083"Line Disciplines and Streams Drivers" 2084page 2085(available as part of the HTML documentation 2086provided in 2087@file{/usr/share/doc/ntp}). 2088 2089A reference clock will generally (though not always) be a radio 2090timecode receiver which is synchronized to a source of standard 2091time such as the services offered by the NRC in Canada and NIST and 2092USNO in the US. 2093The interface between the computer and the timecode 2094receiver is device dependent, but is usually a serial port. 2095A 2096device driver specific to each reference clock must be selected and 2097compiled in the distribution; however, most common radio, satellite 2098and modem clocks are included by default. 2099Note that an attempt to 2100configure a reference clock when the driver has not been compiled 2101or the hardware port has not been appropriately configured results 2102in a scalding remark to the system log file, but is otherwise non 2103hazardous. 2104 2105For the purposes of configuration, 2106@code{ntpd(1ntpdmdoc)} 2107treats 2108reference clocks in a manner analogous to normal NTP peers as much 2109as possible. 2110Reference clocks are identified by a syntactically 2111correct but invalid IP address, in order to distinguish them from 2112normal NTP peers. 2113Reference clock addresses are of the form 2114@code{127.127.}@kbd{t}.@kbd{u}, 2115where 2116@kbd{t} 2117is an integer 2118denoting the clock type and 2119@kbd{u} 2120indicates the unit 2121number in the range 0-3. 2122While it may seem overkill, it is in fact 2123sometimes useful to configure multiple reference clocks of the same 2124type, in which case the unit numbers must be unique. 2125 2126The 2127@code{server} 2128command is used to configure a reference 2129clock, where the 2130@kbd{address} 2131argument in that command 2132is the clock address. 2133The 2134@code{key}, 2135@code{version} 2136and 2137@code{ttl} 2138options are not used for reference clock support. 2139The 2140@code{mode} 2141option is added for reference clock support, as 2142described below. 2143The 2144@code{prefer} 2145option can be useful to 2146persuade the server to cherish a reference clock with somewhat more 2147enthusiasm than other reference clocks or peers. 2148Further 2149information on this option can be found in the 2150"Mitigation Rules and the prefer Keyword" 2151(available as part of the HTML documentation 2152provided in 2153@file{/usr/share/doc/ntp}) 2154page. 2155The 2156@code{minpoll} 2157and 2158@code{maxpoll} 2159options have 2160meaning only for selected clock drivers. 2161See the individual clock 2162driver document pages for additional information. 2163 2164The 2165@code{fudge} 2166command is used to provide additional 2167information for individual clock drivers and normally follows 2168immediately after the 2169@code{server} 2170command. 2171The 2172@kbd{address} 2173argument specifies the clock address. 2174The 2175@code{refid} 2176and 2177@code{stratum} 2178options can be used to 2179override the defaults for the device. 2180There are two optional 2181device-dependent time offsets and four flags that can be included 2182in the 2183@code{fudge} 2184command as well. 2185 2186The stratum number of a reference clock is by default zero. 2187Since the 2188@code{ntpd(1ntpdmdoc)} 2189daemon adds one to the stratum of each 2190peer, a primary server ordinarily displays an external stratum of 2191one. 2192In order to provide engineered backups, it is often useful to 2193specify the reference clock stratum as greater than zero. 2194The 2195@code{stratum} 2196option is used for this purpose. 2197Also, in cases 2198involving both a reference clock and a pulse-per-second (PPS) 2199discipline signal, it is useful to specify the reference clock 2200identifier as other than the default, depending on the driver. 2201The 2202@code{refid} 2203option is used for this purpose. 2204Except where noted, 2205these options apply to all clock drivers. 2206@subsubsection Reference Clock Commands 2207@table @asis 2208@item @code{server} @code{127.127.}@kbd{t}.@kbd{u} @code{[@code{prefer}]} @code{[@code{mode} @kbd{int}]} @code{[@code{minpoll} @kbd{int}]} @code{[@code{maxpoll} @kbd{int}]} 2209This command can be used to configure reference clocks in 2210special ways. 2211The options are interpreted as follows: 2212@table @asis 2213@item @code{prefer} 2214Marks the reference clock as preferred. 2215All other things being 2216equal, this host will be chosen for synchronization among a set of 2217correctly operating hosts. 2218See the 2219"Mitigation Rules and the prefer Keyword" 2220page 2221(available as part of the HTML documentation 2222provided in 2223@file{/usr/share/doc/ntp}) 2224for further information. 2225@item @code{mode} @kbd{int} 2226Specifies a mode number which is interpreted in a 2227device-specific fashion. 2228For instance, it selects a dialing 2229protocol in the ACTS driver and a device subtype in the 2230parse 2231drivers. 2232@item @code{minpoll} @kbd{int} 2233@item @code{maxpoll} @kbd{int} 2234These options specify the minimum and maximum polling interval 2235for reference clock messages, as a power of 2 in seconds 2236For 2237most directly connected reference clocks, both 2238@code{minpoll} 2239and 2240@code{maxpoll} 2241default to 6 (64 s). 2242For modem reference clocks, 2243@code{minpoll} 2244defaults to 10 (17.1 m) and 2245@code{maxpoll} 2246defaults to 14 (4.5 h). 2247The allowable range is 4 (16 s) to 17 (36.4 h) inclusive. 2248@end table 2249@item @code{fudge} @code{127.127.}@kbd{t}.@kbd{u} @code{[@code{time1} @kbd{sec}]} @code{[@code{time2} @kbd{sec}]} @code{[@code{stratum} @kbd{int}]} @code{[@code{refid} @kbd{string}]} @code{[@code{mode} @kbd{int}]} @code{[@code{flag1} @code{0} @code{|} @code{1}]} @code{[@code{flag2} @code{0} @code{|} @code{1}]} @code{[@code{flag3} @code{0} @code{|} @code{1}]} @code{[@code{flag4} @code{0} @code{|} @code{1}]} 2250This command can be used to configure reference clocks in 2251special ways. 2252It must immediately follow the 2253@code{server} 2254command which configures the driver. 2255Note that the same capability 2256is possible at run time using the 2257@code{ntpdc(1ntpdcmdoc)} 2258program. 2259The options are interpreted as 2260follows: 2261@table @asis 2262@item @code{time1} @kbd{sec} 2263Specifies a constant to be added to the time offset produced by 2264the driver, a fixed-point decimal number in seconds. 2265This is used 2266as a calibration constant to adjust the nominal time offset of a 2267particular clock to agree with an external standard, such as a 2268precision PPS signal. 2269It also provides a way to correct a 2270systematic error or bias due to serial port or operating system 2271latencies, different cable lengths or receiver internal delay. 2272The 2273specified offset is in addition to the propagation delay provided 2274by other means, such as internal DIPswitches. 2275Where a calibration 2276for an individual system and driver is available, an approximate 2277correction is noted in the driver documentation pages. 2278Note: in order to facilitate calibration when more than one 2279radio clock or PPS signal is supported, a special calibration 2280feature is available. 2281It takes the form of an argument to the 2282@code{enable} 2283command described in 2284@ref{Miscellaneous Options} 2285page and operates as described in the 2286"Reference Clock Drivers" 2287page 2288(available as part of the HTML documentation 2289provided in 2290@file{/usr/share/doc/ntp}). 2291@item @code{time2} @kbd{secs} 2292Specifies a fixed-point decimal number in seconds, which is 2293interpreted in a driver-dependent way. 2294See the descriptions of 2295specific drivers in the 2296"Reference Clock Drivers" 2297page 2298(available as part of the HTML documentation 2299provided in 2300@file{/usr/share/doc/ntp} @file{).} 2301@item @code{stratum} @kbd{int} 2302Specifies the stratum number assigned to the driver, an integer 2303between 0 and 15. 2304This number overrides the default stratum number 2305ordinarily assigned by the driver itself, usually zero. 2306@item @code{refid} @kbd{string} 2307Specifies an ASCII string of from one to four characters which 2308defines the reference identifier used by the driver. 2309This string 2310overrides the default identifier ordinarily assigned by the driver 2311itself. 2312@item @code{mode} @kbd{int} 2313Specifies a mode number which is interpreted in a 2314device-specific fashion. 2315For instance, it selects a dialing 2316protocol in the ACTS driver and a device subtype in the 2317parse 2318drivers. 2319@item @code{flag1} @code{0} @code{|} @code{1} 2320@item @code{flag2} @code{0} @code{|} @code{1} 2321@item @code{flag3} @code{0} @code{|} @code{1} 2322@item @code{flag4} @code{0} @code{|} @code{1} 2323These four flags are used for customizing the clock driver. 2324The 2325interpretation of these values, and whether they are used at all, 2326is a function of the particular clock driver. 2327However, by 2328convention 2329@code{flag4} 2330is used to enable recording monitoring 2331data to the 2332@code{clockstats} 2333file configured with the 2334@code{filegen} 2335command. 2336Further information on the 2337@code{filegen} 2338command can be found in 2339@ref{Monitoring Options}. 2340@end table 2341@end table 2342@node Miscellaneous Options 2343@subsection Miscellaneous Options 2344@table @asis 2345@item @code{broadcastdelay} @kbd{seconds} 2346The broadcast and multicast modes require a special calibration 2347to determine the network delay between the local and remote 2348servers. 2349Ordinarily, this is done automatically by the initial 2350protocol exchanges between the client and server. 2351In some cases, 2352the calibration procedure may fail due to network or server access 2353controls, for example. 2354This command specifies the default delay to 2355be used under these circumstances. 2356Typically (for Ethernet), a 2357number between 0.003 and 0.007 seconds is appropriate. 2358The default 2359when this command is not used is 0.004 seconds. 2360@item @code{calldelay} @kbd{delay} 2361This option controls the delay in seconds between the first and second 2362packets sent in burst or iburst mode to allow additional time for a modem 2363or ISDN call to complete. 2364@item @code{driftfile} @kbd{driftfile} 2365This command specifies the complete path and name of the file used to 2366record the frequency of the local clock oscillator. 2367This is the same 2368operation as the 2369@code{-f} 2370command line option. 2371If the file exists, it is read at 2372startup in order to set the initial frequency and then updated once per 2373hour with the current frequency computed by the daemon. 2374If the file name is 2375specified, but the file itself does not exist, the starts with an initial 2376frequency of zero and creates the file when writing it for the first time. 2377If this command is not given, the daemon will always start with an initial 2378frequency of zero. 2379 2380The file format consists of a single line containing a single 2381floating point number, which records the frequency offset measured 2382in parts-per-million (PPM). 2383The file is updated by first writing 2384the current drift value into a temporary file and then renaming 2385this file to replace the old version. 2386This implies that 2387@code{ntpd(1ntpdmdoc)} 2388must have write permission for the directory the 2389drift file is located in, and that file system links, symbolic or 2390otherwise, should be avoided. 2391@item @code{dscp} @kbd{value} 2392This option specifies the Differentiated Services Control Point (DSCP) value, 2393a 6-bit code. 2394The default value is 46, signifying Expedited Forwarding. 2395@item @code{enable} @code{[@code{auth} | @code{bclient} | @code{calibrate} | @code{kernel} | @code{mode7} | @code{monitor} | @code{ntp} | @code{stats} | @code{peer_clear_digest_early} | @code{unpeer_crypto_early} | @code{unpeer_crypto_nak_early} | @code{unpeer_digest_early}]} 2396@item @code{disable} @code{[@code{auth} | @code{bclient} | @code{calibrate} | @code{kernel} | @code{mode7} | @code{monitor} | @code{ntp} | @code{stats} | @code{peer_clear_digest_early} | @code{unpeer_crypto_early} | @code{unpeer_crypto_nak_early} | @code{unpeer_digest_early}]} 2397Provides a way to enable or disable various server options. 2398Flags not mentioned are unaffected. 2399Note that all of these flags 2400can be controlled remotely using the 2401@code{ntpdc(1ntpdcmdoc)} 2402utility program. 2403@table @asis 2404@item @code{auth} 2405Enables the server to synchronize with unconfigured peers only if the 2406peer has been correctly authenticated using either public key or 2407private key cryptography. 2408The default for this flag is 2409@code{enable}. 2410@item @code{bclient} 2411Enables the server to listen for a message from a broadcast or 2412multicast server, as in the 2413@code{multicastclient} 2414command with default 2415address. 2416The default for this flag is 2417@code{disable}. 2418@item @code{calibrate} 2419Enables the calibrate feature for reference clocks. 2420The default for 2421this flag is 2422@code{disable}. 2423@item @code{kernel} 2424Enables the kernel time discipline, if available. 2425The default for this 2426flag is 2427@code{enable} 2428if support is available, otherwise 2429@code{disable}. 2430@item @code{mode7} 2431Enables processing of NTP mode 7 implementation-specific requests 2432which are used by the deprecated 2433@code{ntpdc(1ntpdcmdoc)} 2434program. 2435The default for this flag is disable. 2436This flag is excluded from runtime configuration using 2437@code{ntpq(1ntpqmdoc)}. 2438The 2439@code{ntpq(1ntpqmdoc)} 2440program provides the same capabilities as 2441@code{ntpdc(1ntpdcmdoc)} 2442using standard mode 6 requests. 2443@item @code{monitor} 2444Enables the monitoring facility. 2445See the 2446@code{ntpdc(1ntpdcmdoc)} 2447program 2448and the 2449@code{monlist} 2450command or further information. 2451The 2452default for this flag is 2453@code{enable}. 2454@item @code{ntp} 2455Enables time and frequency discipline. 2456In effect, this switch opens and 2457closes the feedback loop, which is useful for testing. 2458The default for 2459this flag is 2460@code{enable}. 2461@item @code{peer_clear_digest_early} 2462By default, if 2463@code{ntpd(1ntpdmdoc)} 2464is using autokey and it 2465receives a crypto-NAK packet that 2466passes the duplicate packet and origin timestamp checks 2467the peer variables are immediately cleared. 2468While this is generally a feature 2469as it allows for quick recovery if a server key has changed, 2470a properly forged and appropriately delivered crypto-NAK packet 2471can be used in a DoS attack. 2472If you have active noticable problems with this type of DoS attack 2473then you should consider 2474disabling this option. 2475You can check your 2476@code{peerstats} 2477file for evidence of any of these attacks. 2478The 2479default for this flag is 2480@code{enable}. 2481@item @code{stats} 2482Enables the statistics facility. 2483See the 2484@ref{Monitoring Options} 2485section for further information. 2486The default for this flag is 2487@code{disable}. 2488@item @code{unpeer_crypto_early} 2489By default, if 2490@code{ntpd(1ntpdmdoc)} 2491receives an autokey packet that fails TEST9, 2492a crypto failure, 2493the association is immediately cleared. 2494This is almost certainly a feature, 2495but if, in spite of the current recommendation of not using autokey, 2496you are 2497.B still 2498using autokey 2499.B and 2500you are seeing this sort of DoS attack 2501disabling this flag will delay 2502tearing down the association until the reachability counter 2503becomes zero. 2504You can check your 2505@code{peerstats} 2506file for evidence of any of these attacks. 2507The 2508default for this flag is 2509@code{enable}. 2510@item @code{unpeer_crypto_nak_early} 2511By default, if 2512@code{ntpd(1ntpdmdoc)} 2513receives a crypto-NAK packet that 2514passes the duplicate packet and origin timestamp checks 2515the association is immediately cleared. 2516While this is generally a feature 2517as it allows for quick recovery if a server key has changed, 2518a properly forged and appropriately delivered crypto-NAK packet 2519can be used in a DoS attack. 2520If you have active noticable problems with this type of DoS attack 2521then you should consider 2522disabling this option. 2523You can check your 2524@code{peerstats} 2525file for evidence of any of these attacks. 2526The 2527default for this flag is 2528@code{enable}. 2529@item @code{unpeer_digest_early} 2530By default, if 2531@code{ntpd(1ntpdmdoc)} 2532receives what should be an authenticated packet 2533that passes other packet sanity checks but 2534contains an invalid digest 2535the association is immediately cleared. 2536While this is generally a feature 2537as it allows for quick recovery, 2538if this type of packet is carefully forged and sent 2539during an appropriate window it can be used for a DoS attack. 2540If you have active noticable problems with this type of DoS attack 2541then you should consider 2542disabling this option. 2543You can check your 2544@code{peerstats} 2545file for evidence of any of these attacks. 2546The 2547default for this flag is 2548@code{enable}. 2549@end table 2550@item @code{includefile} @kbd{includefile} 2551This command allows additional configuration commands 2552to be included from a separate file. 2553Include files may 2554be nested to a depth of five; upon reaching the end of any 2555include file, command processing resumes in the previous 2556configuration file. 2557This option is useful for sites that run 2558@code{ntpd(1ntpdmdoc)} 2559on multiple hosts, with (mostly) common options (e.g., a 2560restriction list). 2561@item @code{interface} @code{[@code{listen} | @code{ignore} | @code{drop}]} @code{[@code{all} | @code{ipv4} | @code{ipv6} | @code{wildcard} @kbd{name} | @kbd{address} @code{[@code{/} @kbd{prefixlen}]}]} 2562The 2563@code{interface} 2564directive controls which network addresses 2565@code{ntpd(1ntpdmdoc)} 2566opens, and whether input is dropped without processing. 2567The first parameter determines the action for addresses 2568which match the second parameter. 2569The second parameter specifies a class of addresses, 2570or a specific interface name, 2571or an address. 2572In the address case, 2573@kbd{prefixlen} 2574determines how many bits must match for this rule to apply. 2575@code{ignore} 2576prevents opening matching addresses, 2577@code{drop} 2578causes 2579@code{ntpd(1ntpdmdoc)} 2580to open the address and drop all received packets without examination. 2581Multiple 2582@code{interface} 2583directives can be used. 2584The last rule which matches a particular address determines the action for it. 2585@code{interface} 2586directives are disabled if any 2587@code{-I}, 2588@code{--interface}, 2589@code{-L}, 2590or 2591@code{--novirtualips} 2592command-line options are specified in the configuration file, 2593all available network addresses are opened. 2594The 2595@code{nic} 2596directive is an alias for 2597@code{interface}. 2598@item @code{leapfile} @kbd{leapfile} 2599This command loads the IERS leapseconds file and initializes the 2600leapsecond values for the next leapsecond event, leapfile expiration 2601time, and TAI offset. 2602The file can be obtained directly from the IERS at 2603@code{https://hpiers.obspm.fr/iers/bul/bulc/ntp/leap-seconds.list} 2604or 2605@code{ftp://hpiers.obspm.fr/iers/bul/bulc/ntp/leap-seconds.list}. 2606The 2607@code{leapfile} 2608is scanned when 2609@code{ntpd(1ntpdmdoc)} 2610processes the 2611@code{leapfile} @code{directive} @code{or} @code{when} 2612@code{ntpd} @code{detects} @code{that} @code{the} 2613@kbd{leapfile} 2614has changed. 2615@code{ntpd} 2616checks once a day to see if the 2617@kbd{leapfile} 2618has changed. 2619The 2620@code{update-leap(1update_leapmdoc)} 2621script can be run to see if the 2622@kbd{leapfile} 2623should be updated. 2624@item @code{leapsmearinterval} @kbd{seconds} 2625This EXPERIMENTAL option is only available if 2626@code{ntpd(1ntpdmdoc)} 2627was built with the 2628@code{--enable-leap-smear} 2629option to the 2630@code{configure} 2631script. 2632It specifies the interval over which a leap second correction will be applied. 2633Recommended values for this option are between 26347200 (2 hours) and 86400 (24 hours). 2635.Sy DO NOT USE THIS OPTION ON PUBLIC-ACCESS SERVERS! 2636See http://bugs.ntp.org/2855 for more information. 2637@item @code{logconfig} @kbd{configkeyword} 2638This command controls the amount and type of output written to 2639the system 2640@code{syslog(3)} 2641facility or the alternate 2642@code{logfile} 2643log file. 2644By default, all output is turned on. 2645All 2646@kbd{configkeyword} 2647keywords can be prefixed with 2648@quoteleft{}=@quoteright{}, 2649@quoteleft{}+@quoteright{} 2650and 2651@quoteleft{}-@quoteright{}, 2652where 2653@quoteleft{}=@quoteright{} 2654sets the 2655@code{syslog(3)} 2656priority mask, 2657@quoteleft{}+@quoteright{} 2658adds and 2659@quoteleft{}-@quoteright{} 2660removes 2661messages. 2662@code{syslog(3)} 2663messages can be controlled in four 2664classes 2665(@code{clock}, @code{peer}, @code{sys} and @code{sync}). 2666Within these classes four types of messages can be 2667controlled: informational messages 2668(@code{info}), 2669event messages 2670(@code{events}), 2671statistics messages 2672(@code{statistics}) 2673and 2674status messages 2675(@code{status}). 2676 2677Configuration keywords are formed by concatenating the message class with 2678the event class. 2679The 2680@code{all} 2681prefix can be used instead of a message class. 2682A 2683message class may also be followed by the 2684@code{all} 2685keyword to enable/disable all 2686messages of the respective message class. 2687Thus, a minimal log configuration 2688could look like this: 2689@verbatim 2690logconfig =syncstatus +sysevents 2691@end verbatim 2692 2693This would just list the synchronizations state of 2694@code{ntpd(1ntpdmdoc)} 2695and the major system events. 2696For a simple reference server, the 2697following minimum message configuration could be useful: 2698@verbatim 2699logconfig =syncall +clockall 2700@end verbatim 2701 2702This configuration will list all clock information and 2703synchronization information. 2704All other events and messages about 2705peers, system events and so on is suppressed. 2706@item @code{logfile} @kbd{logfile} 2707This command specifies the location of an alternate log file to 2708be used instead of the default system 2709@code{syslog(3)} 2710facility. 2711This is the same operation as the 2712@code{-l} 2713command line option. 2714@item @code{mru} @code{[@code{maxdepth} @kbd{count} | @code{maxmem} @kbd{kilobytes} | @code{mindepth} @kbd{count} | @code{maxage} @kbd{seconds} | @code{initialloc} @kbd{count} | @code{initmem} @kbd{kilobytes} | @code{incalloc} @kbd{count} | @code{incmem} @kbd{kilobytes}]} 2715Controls size limite of the monitoring facility's Most Recently Used 2716(MRU) list 2717of client addresses, which is also used by the 2718rate control facility. 2719@table @asis 2720@item @code{maxdepth} @kbd{count} 2721@item @code{maxmem} @kbd{kilobytes} 2722Equivalent upper limits on the size of the MRU list, in terms of entries or kilobytes. 2723The acutal limit will be up to 2724@code{incalloc} 2725entries or 2726@code{incmem} 2727kilobytes larger. 2728As with all of the 2729@code{mru} 2730options offered in units of entries or kilobytes, if both 2731@code{maxdepth} 2732and 2733@code{maxmem} @code{are} @code{used,} @code{the} @code{last} @code{one} @code{used} @code{controls.} 2734The default is 1024 kilobytes. 2735@item @code{mindepth} @kbd{count} 2736Lower limit on the MRU list size. 2737When the MRU list has fewer than 2738@code{mindepth} 2739entries, existing entries are never removed to make room for newer ones, 2740regardless of their age. 2741The default is 600 entries. 2742@item @code{maxage} @kbd{seconds} 2743Once the MRU list has 2744@code{mindepth} 2745entries and an additional client is to ba added to the list, 2746if the oldest entry was updated more than 2747@code{maxage} 2748seconds ago, that entry is removed and its storage is reused. 2749If the oldest entry was updated more recently the MRU list is grown, 2750subject to 2751@code{maxdepth} @code{/} @code{moxmem}. 2752The default is 64 seconds. 2753@item @code{initalloc} @kbd{count} 2754@item @code{initmem} @kbd{kilobytes} 2755Initial memory allocation at the time the monitoringfacility is first enabled, 2756in terms of the number of entries or kilobytes. 2757The default is 4 kilobytes. 2758@item @code{incalloc} @kbd{count} 2759@item @code{incmem} @kbd{kilobytes} 2760Size of additional memory allocations when growing the MRU list, in entries or kilobytes. 2761The default is 4 kilobytes. 2762@end table 2763@item @code{nonvolatile} @kbd{threshold} 2764Specify the 2765@kbd{threshold} 2766delta in seconds before an hourly change to the 2767@code{driftfile} 2768(frequency file) will be written, with a default value of 1e-7 (0.1 PPM). 2769The frequency file is inspected each hour. 2770If the difference between the current frequency and the last value written 2771exceeds the threshold, the file is written and the 2772@code{threshold} 2773becomes the new threshold value. 2774If the threshold is not exceeeded, it is reduced by half. 2775This is intended to reduce the number of file writes 2776for embedded systems with nonvolatile memory. 2777@item @code{phone} @kbd{dial} @kbd{...} 2778This command is used in conjunction with 2779the ACTS modem driver (type 18) 2780or the JJY driver (type 40, mode 100 - 180). 2781For the ACTS modem driver (type 18), the arguments consist of 2782a maximum of 10 telephone numbers used to dial USNO, NIST, or European 2783time service. 2784For the JJY driver (type 40 mode 100 - 180), the argument is 2785one telephone number used to dial the telephone JJY service. 2786The Hayes command ATDT is normally prepended to the number. 2787The number can contain other modem control codes as well. 2788@item @code{pollskewlist} @code{[@kbd{poll} @kbd{early} @kbd{late}]} @kbd{...} @code{[@code{default} @kbd{early} @kbd{late}]} 2789Enable skewing of our poll requests to our servers. 2790@kbd{poll} 2791is a number between 3 and 17 inclusive, identifying a specific poll interval. 2792A poll interval is 2^n seconds in duration, 2793so a poll value of 3 corresponds to 8 seconds 2794and 2795a poll interval of 17 corresponds to 2796131,072 seconds, or about a day and a half. 2797The next two numbers must be between 0 and one-half of the poll interval, 2798inclusive. 2799Ar early 2800specifies how early the poll may start, 2801while 2802Ar late 2803specifies how late the poll may be delayed. 2804With no arguments, internally specified default values are chosen. 2805@item @code{reset} @code{[@code{allpeers}]} @code{[@code{auth}]} @code{[@code{ctl}]} @code{[@code{io}]} @code{[@code{mem}]} @code{[@code{sys}]} @code{[@code{timer}]} 2806Reset one or more groups of counters maintained by 2807@code{ntpd} 2808and exposed by 2809@code{ntpq} 2810and 2811@code{ntpdc}. 2812@item @code{rlimit} @code{[@code{memlock} @kbd{Nmegabytes} | @code{stacksize} @kbd{N4kPages} @code{filenum} @kbd{Nfiledescriptors}]} 2813@table @asis 2814@item @code{memlock} @kbd{Nmegabytes} 2815Specify the number of megabytes of memory that should be 2816allocated and locked. 2817Probably only available under Linux, this option may be useful 2818when dropping root (the 2819@code{-i} 2820option). 2821The default is 32 megabytes on non-Linux machines, and -1 under Linux. 2822-1 means "do not lock the process into memory". 28230 means "lock whatever memory the process wants into memory". 2824@item @code{stacksize} @kbd{N4kPages} 2825Specifies the maximum size of the process stack on systems with the 2826@code{mlockall()} 2827function. 2828Defaults to 50 4k pages (200 4k pages in OpenBSD). 2829@item @code{filenum} @kbd{Nfiledescriptors} 2830Specifies the maximum number of file descriptors ntpd may have open at once. 2831Defaults to the system default. 2832@end table 2833@item @code{saveconfigdir} @kbd{directory_path} 2834Specify the directory in which to write configuration snapshots 2835requested with 2836.Cm ntpq 's 2837@code{saveconfig} 2838command. 2839If 2840@code{saveconfigdir} 2841does not appear in the configuration file, 2842@code{saveconfig} 2843requests are rejected by 2844@code{ntpd}. 2845@item @code{saveconfig} @kbd{filename} 2846Write the current configuration, including any runtime 2847modifications given with 2848@code{:config} 2849or 2850@code{config-from-file} 2851to the 2852@code{ntpd} 2853host's 2854@kbd{filename} 2855in the 2856@code{saveconfigdir}. 2857This command will be rejected unless the 2858@code{saveconfigdir} 2859directive appears in 2860.Cm ntpd 's 2861configuration file. 2862@kbd{filename} 2863can use 2864@code{strftime(3)} 2865format directives to substitute the current date and time, 2866for example, 2867@code{saveconfig\ ntp-%Y%m%d-%H%M%S.conf}. 2868The filename used is stored in the system variable 2869@code{savedconfig}. 2870Authentication is required. 2871@item @code{setvar} @kbd{variable} @code{[@code{default}]} 2872This command adds an additional system variable. 2873These 2874variables can be used to distribute additional information such as 2875the access policy. 2876If the variable of the form 2877@code{name}@code{=}@kbd{value} 2878is followed by the 2879@code{default} 2880keyword, the 2881variable will be listed as part of the default system variables 2882(@code{rv} command)). 2883These additional variables serve 2884informational purposes only. 2885They are not related to the protocol 2886other that they can be listed. 2887The known protocol variables will 2888always override any variables defined via the 2889@code{setvar} 2890mechanism. 2891There are three special variables that contain the names 2892of all variable of the same group. 2893The 2894@code{sys_var_list} 2895holds 2896the names of all system variables. 2897The 2898@code{peer_var_list} 2899holds 2900the names of all peer variables and the 2901@code{clock_var_list} 2902holds the names of the reference clock variables. 2903@item @code{sysinfo} 2904Display operational summary. 2905@item @code{sysstats} 2906Show statistics counters maintained in the protocol module. 2907@item @code{tinker} @code{[@code{allan} @kbd{allan} | @code{dispersion} @kbd{dispersion} | @code{freq} @kbd{freq} | @code{huffpuff} @kbd{huffpuff} | @code{panic} @kbd{panic} | @code{step} @kbd{step} | @code{stepback} @kbd{stepback} | @code{stepfwd} @kbd{stepfwd} | @code{stepout} @kbd{stepout}]} 2908This command can be used to alter several system variables in 2909very exceptional circumstances. 2910It should occur in the 2911configuration file before any other configuration options. 2912The 2913default values of these variables have been carefully optimized for 2914a wide range of network speeds and reliability expectations. 2915In 2916general, they interact in intricate ways that are hard to predict 2917and some combinations can result in some very nasty behavior. 2918Very 2919rarely is it necessary to change the default values; but, some 2920folks cannot resist twisting the knobs anyway and this command is 2921for them. 2922Emphasis added: twisters are on their own and can expect 2923no help from the support group. 2924 2925The variables operate as follows: 2926@table @asis 2927@item @code{allan} @kbd{allan} 2928The argument becomes the new value for the minimum Allan 2929intercept, which is a parameter of the PLL/FLL clock discipline 2930algorithm. 2931The value in log2 seconds defaults to 7 (1024 s), which is also the lower 2932limit. 2933@item @code{dispersion} @kbd{dispersion} 2934The argument becomes the new value for the dispersion increase rate, 2935normally .000015 s/s. 2936@item @code{freq} @kbd{freq} 2937The argument becomes the initial value of the frequency offset in 2938parts-per-million. 2939This overrides the value in the frequency file, if 2940present, and avoids the initial training state if it is not. 2941@item @code{huffpuff} @kbd{huffpuff} 2942The argument becomes the new value for the experimental 2943huff-n'-puff filter span, which determines the most recent interval 2944the algorithm will search for a minimum delay. 2945The lower limit is 2946900 s (15 m), but a more reasonable value is 7200 (2 hours). 2947There 2948is no default, since the filter is not enabled unless this command 2949is given. 2950@item @code{panic} @kbd{panic} 2951The argument is the panic threshold, normally 1000 s. 2952If set to zero, 2953the panic sanity check is disabled and a clock offset of any value will 2954be accepted. 2955@item @code{step} @kbd{step} 2956The argument is the step threshold, which by default is 0.128 s. 2957It can 2958be set to any positive number in seconds. 2959If set to zero, step 2960adjustments will never occur. 2961Note: The kernel time discipline is 2962disabled if the step threshold is set to zero or greater than the 2963default. 2964@item @code{stepback} @kbd{stepback} 2965The argument is the step threshold for the backward direction, 2966which by default is 0.128 s. 2967It can 2968be set to any positive number in seconds. 2969If both the forward and backward step thresholds are set to zero, step 2970adjustments will never occur. 2971Note: The kernel time discipline is 2972disabled if 2973each direction of step threshold are either 2974set to zero or greater than .5 second. 2975@item @code{stepfwd} @kbd{stepfwd} 2976As for stepback, but for the forward direction. 2977@item @code{stepout} @kbd{stepout} 2978The argument is the stepout timeout, which by default is 900 s. 2979It can 2980be set to any positive number in seconds. 2981If set to zero, the stepout 2982pulses will not be suppressed. 2983@end table 2984@item @code{writevar} @kbd{assocID\ name} @kbd{=} @kbd{value} @kbd{[,...]} 2985Write (create or update) the specified variables. 2986If the 2987@code{assocID} 2988is zero, the variablea re from the 2989system variables 2990name space, otherwise they are from the 2991peer variables 2992name space. 2993The 2994@code{assocID} 2995is required, as the same name can occur in both name spaces. 2996@item @code{trap} @kbd{host_address} @code{[@code{port} @kbd{port_number}]} @code{[@code{interface} @kbd{interface_address}]} 2997This command configures a trap receiver at the given host 2998address and port number for sending messages with the specified 2999local interface address. 3000If the port number is unspecified, a value 3001of 18447 is used. 3002If the interface address is not specified, the 3003message is sent with a source address of the local interface the 3004message is sent through. 3005Note that on a multihomed host the 3006interface used may vary from time to time with routing changes. 3007@item @code{ttl} @kbd{hop} @kbd{...} 3008This command specifies a list of TTL values in increasing order. 3009Up to 8 values can be specified. 3010In 3011@code{manycast} 3012mode these values are used in-turn in an expanding-ring search. 3013The default is eight multiples of 32 starting at 31. 3014 3015The trap receiver will generally log event messages and other 3016information from the server in a log file. 3017While such monitor 3018programs may also request their own trap dynamically, configuring a 3019trap receiver will ensure that no messages are lost when the server 3020is started. 3021@item @code{hop} @kbd{...} 3022This command specifies a list of TTL values in increasing order, up to 8 3023values can be specified. 3024In manycast mode these values are used in turn in 3025an expanding-ring search. 3026The default is eight multiples of 32 starting at 302731. 3028@end table 3029 3030This section was generated by @strong{AutoGen}, 3031using the @code{agtexi-cmd} template and the option descriptions for the @code{ntp.conf} program. 3032This software is released under the NTP license, <http://ntp.org/license>. 3033 3034@menu 3035* ntp.conf Files:: Files 3036* ntp.conf See Also:: See Also 3037* ntp.conf Bugs:: Bugs 3038* ntp.conf Notes:: Notes 3039@end menu 3040 3041@node ntp.conf Files 3042@subsection ntp.conf Files 3043@table @asis 3044@item @file{/etc/ntp.conf} 3045the default name of the configuration file 3046@item @file{ntp.keys} 3047private MD5 keys 3048@item @file{ntpkey} 3049RSA private key 3050@item @file{ntpkey_}@kbd{host} 3051RSA public key 3052@item @file{ntp_dh} 3053Diffie-Hellman agreement parameters 3054@end table 3055@node ntp.conf See Also 3056@subsection ntp.conf See Also 3057@code{ntpd(1ntpdmdoc)}, 3058@code{ntpdc(1ntpdcmdoc)}, 3059@code{ntpq(1ntpqmdoc)} 3060 3061In addition to the manual pages provided, 3062comprehensive documentation is available on the world wide web 3063at 3064@code{http://www.ntp.org/}. 3065A snapshot of this documentation is available in HTML format in 3066@file{/usr/share/doc/ntp}. 3067@* 3068 3069@* 3070David L. Mills, @emph{Network Time Protocol (Version 4)}, RFC5905 3071@node ntp.conf Bugs 3072@subsection ntp.conf Bugs 3073The syntax checking is not picky; some combinations of 3074ridiculous and even hilarious options and modes may not be 3075detected. 3076 3077The 3078@file{ntpkey_}@kbd{host} 3079files are really digital 3080certificates. 3081These should be obtained via secure directory 3082services when they become universally available. 3083@node ntp.conf Notes 3084@subsection ntp.conf Notes 3085This document was derived from FreeBSD. 3086