summaryrefslogtreecommitdiffstats
path: root/usr.sbin/ntp/doc/ntpq.8
diff options
context:
space:
mode:
Diffstat (limited to 'usr.sbin/ntp/doc/ntpq.8')
-rw-r--r--usr.sbin/ntp/doc/ntpq.8588
1 files changed, 588 insertions, 0 deletions
diff --git a/usr.sbin/ntp/doc/ntpq.8 b/usr.sbin/ntp/doc/ntpq.8
new file mode 100644
index 0000000..b19bce0
--- /dev/null
+++ b/usr.sbin/ntp/doc/ntpq.8
@@ -0,0 +1,588 @@
+.\"
+.\" $FreeBSD$
+.\"
+.Dd January 7, 2000
+.Dt NTPQ 8
+.Os
+.Sh NAME
+.Nm ntpq
+.Nd standard NTP query program
+.Sh SYNOPSIS
+.Nm
+.Op Fl inp
+.Op Fl c Ar command
+.Op Ar host ...
+.Sh DESCRIPTION
+.Nm
+is used to query NTP servers which implement the recommended NTP mode 6
+control message format about current state and to request changes in
+that state.
+The program may be run either in interactive mode or
+controlled using command line arguments.
+Requests to read and write
+arbitrary variables can be assembled, with raw and pretty-printed
+output options being available.
+.Nm
+can also obtain and print a list of peers in a common format by sending
+multiple queries to the server.
+.Pp
+If one or more request options is included on the command line when
+.Nm
+is executed, each of the requests will be sent to the NTP servers
+running on each of the hosts given as command line arguments, or on
+.Dq localhost
+by default.
+If no request options are given,
+.Nm
+will attempt to read commands from the standard input and execute these
+on the NTP server running on the first host given on the command line,
+again
+defaulting to
+.Dq localhost
+when no other host is specified.
+.Nm
+will prompt for commands if the standard input is a terminal device.
+.Pp
+.Nm
+uses NTP mode 6 packets to communicate with the NTP server, and hence
+can be used to query any compatible server on the network which permits
+it.
+Note that since NTP is a UDP protocol this communication will be
+somewhat unreliable, especially over large distances in terms of network
+topology.
+.Nm
+makes one attempt to retransmit requests, and will time requests out if
+the remote host is not heard from within a suitable timeout time.
+.Pp
+Command line options are described following. Specifying a command line
+option other than
+.Fl i
+or
+.Fl n
+will cause the specified query (queries) to be sent to the indicated
+host(s) immediately.
+Otherwise,
+.Nm
+will attempt to read interactive format commands from the standard
+input.
+The following options are available:
+.Bl -tag -width indent
+.It Fl c Ar command
+The following argument is interpreted
+as an interactive format command
+and is added to the list of commands to be executed on the specified
+host(s).
+Multiple
+.Fl c
+options may be given.
+.It Fl i
+Force
+.Nm
+to operate in interactive mode.
+Prompts will be written to the standard
+output and commands read from the standard input.
+.It Fl n
+Output all host addresses in dotted-quad numeric format rather than
+converting to the canonical host names.
+.It Fl p
+Print a list of the peers known to the server as well as a summary of
+their state.
+This is equivalent to the
+.Ic peers
+interactive command.
+.El
+.Ss Internal Commands
+Interactive format commands consist of a keyword followed by zero to
+four arguments.
+Only enough characters of the full keyword to uniquely
+identify the command need be typed.
+The output of a command is normally
+sent to the standard output, but optionally the output of individual
+commands may be sent to a file by appending a
+.Qq > ,
+followed by a file name, to the command line.
+A number of interactive format commands are executed entirely within the
+.Nm
+program itself and do not result in NTP mode 6 requests being sent to a
+server.
+These are described following.
+.Bl -tag -width indent
+.It Ic ? Op Ar command_keyword
+.It Ic help Op Ar command_keyword
+A
+.Ic ?
+by itself will print a list of all the command keywords
+known to this incarnation of
+.Nm Ns .
+A
+.Ic ?
+followed by a command keyword will print function and
+usage information about the command.
+This command is probably a better
+source of information about
+.Nm
+than this manual page.
+.\"
+.\" XXX Both variable_name and value below should be arguments,
+.\" not angle-quoted text.
+.\"
+.It Xo Ic addvars
+.Aq variable_name Ns
+.Op = Ns Aq value Ns
+.Op ,...
+.Xc
+.It Xo Ic rmvars
+.Aq variable_name Ns
+.Op ,...
+.Xc
+.It Ic clearvars
+The data carried by NTP mode 6 messages consists of a list of items of
+the form
+.Xo Aq variable_name Ns
+.Pf = Aq value
+.Xc
+where the
+.Qq = Ns Aq value
+is ignored, and can be omitted, in requests
+to the server to read variables.
+.Nm
+maintains an internal list in which data to be included in control
+messages can be assembled, and sent using the
+.Ic readlist
+and
+.Ic writelist
+commands described below. The
+.Ic addvars
+command allows variables and their optional values to be added to the
+list.
+If more than one variable is to be added, the list should be
+comma-separated and not contain white space.
+The
+.Ic rmvars
+command can be used to remove individual variables from the list, while
+the
+.Ic clearvars
+command removes all variables from the list.
+.It Ic authenticate Ar yes | Ar no
+Normally
+.Nm
+does not authenticate requests unless they are write requests.
+The command
+.Dq Li authenticate yes
+causes
+.Nm
+to send authentication with all requests it makes.
+Authenticated requests cause some servers
+to handle requests slightly differently,
+and can occasionally melt the CPU in fuzzballs if you turn
+authentication on before doing a peer display.
+.It Ic cooked
+Causes output from query commands to be
+.Qq cooked Ns .
+Variables
+which are recognized by the server will have their values reformatted
+for human consumption.
+Variables which
+.Nm
+thinks should have a decodeable value but didn't are marked with a
+trailing
+.Qq ? Ns .
+.It Ic debug Ar more | Ar less | Ar off
+Turn internal query program debugging on and off.
+.It Ic delay Ar milliseconds
+Specify a time interval to be added to timestamps included in requests
+which require authentication.
+This is used to enable (unreliable) server
+reconfiguration over long delay network paths or between machines whose
+clocks are unsynchronized.
+Actually the server does not now require
+timestamps in authenticated requests,
+so this command may be obsolete.
+.It Ic host Ar hostname
+Set the host to which future queries will be sent.
+The
+.Ar hostname
+supplied
+may be either a host name or a numeric
+address.
+.It Ic hostnames Ar yes | Ar no
+If
+.Ar yes
+is specified, host names are printed in information
+displays.
+If
+.Ar no
+is given, numeric addresses are printed
+instead.
+The default is
+.Ar yes
+unless modified using the command line
+.Fl n
+switch.
+.It Ic keyid Ar keyid
+This command allows the specification of a key number to be used to
+authenticate configuration requests.
+This must correspond to a key
+number the server has been configured to use for this purpose.
+.It Ic ntpversion Ar 1 | Ar 2 | Ar 3 | Ar 4
+Set the NTP version number which
+.Nm
+claims in packets.
+Defaults to 3.
+Note that mode 6 control messages
+(and modes, for that matter)
+didn't exist in NTP version 1.
+There appear to be no servers left which demand version 1.
+.It Ic quit
+Exit
+.Nm Ns .
+.It Ic passwd
+This command prompts you to type in a password (which will not be
+echoed) which will be used to authenticate configuration requests.
+The
+password must correspond to the key configured for use by the NTP server
+for this purpose if such requests are to be successful.
+.It Ic raw
+Cause all output from query commands
+to be printed as received from the remote server.
+The only formatting and intepretation done on the data is to
+transform non-ASCII data into a printable (but barely understandable)
+form.
+.It Ic timeout Ar milliseconds
+Specify a timeout period for responses to server queries. The default
+is about 5000 milliseconds.
+Note that since
+.Nm
+retries each query once after a timeout, the total waiting time for a
+timeout will be twice the timeout value set.
+.El
+.Ss Control Message Commands
+Each peer known to an NTP server has a 16 bit integer
+association identifier
+assigned to it.
+NTP control messages which carry peer variables must
+identify the peer the values correspond to by including its association
+ID.
+An association ID of 0 is special, and indicates the variables are
+system variables, whose names are drawn from a separate name space.
+.Pp
+Control message commands result in one or more NTP mode 6 messages being
+sent to the server, and cause the data returned to be printed in some
+format.
+Most commands currently implemented send a single message and
+expect a single response.
+The current exceptions are the
+.Ic peers
+command,
+which will send a preprogrammed series of messages to obtain
+the data it needs, and the
+.Ic mreadlist
+and
+.Ic mreadvar
+commands, which will iterate over a range of associations.
+.Bl -tag -width indent
+.It Ic associations
+Obtains and prints a list of association identifiers and peer statuses
+for in-spec peers of the server being queried.
+The list is printed in columns.
+The first of these is an index numbering the associations from
+1 for internal use, the second the actual association identifier
+returned by the server and the third the status word for the peer.
+This is followed by a number of columns
+containing data decoded from the status word.
+Note that the data returned by the
+.Ic associations
+command is cached internally in
+.Nm Ns .
+The index is then of use when dealing with stupid servers which use
+association identifiers which are hard for humans to type, in that for
+any subsequent commands which require an association identifier as an
+argument, the form
+.Dq Li &index
+may be used as an alternative.
+.\"
+.\" XXX Both variable_name and value below should be arguments,
+.\" not angle-quoted text.
+.\"
+.It Xo Ic clockvar
+.Op Ar assocID Ns
+.Pf [ Aq variable_name Ns
+.Op = Ns Aq value Ns
+.Op ,...]
+.Xc
+.It Xo Ic cv
+.Op Ar assocID Ns
+.Pf [ Aq variable_name Ns
+.Op = Ns Aq value Ns
+.Op ,...]
+.Xc
+Requests that a list of the server's clock variables be sent.
+Servers which have a radio clock
+or other external synchronization will respond positively to this.
+If the association identifier is omitted or zero the
+request is for the variables of the
+.Qq system clock
+and will
+generally get a positive response from all servers with a clock.
+If the server treats clocks as pseudo-peers,
+and hence can possibly have more than one clock connected at once,
+referencing the appropriate peer association ID
+will show the variables of a particular clock.
+Omitting the variable list
+will cause the server to return a default variable display.
+.It Ic lassocations
+Obtains and prints a list of association identifiers and peer statuses
+for all associations for which the server is maintaining state.
+This command differs from the
+.Ic associations
+command only for servers
+which retain state for out-of-spec client associations
+(i.e. fuzzballs).
+Such associations are normally omitted from the display when
+the
+.Ic associations
+command is used, but are included in the
+output of
+.Ic lassociations Ns .
+.It Ic lpassociations
+Print data for all associations, including out-of-spec client
+associations, from the internally cached list of associations.
+This command differs from
+.Ic passociations
+only when dealing with fuzzballs.
+.It Ic lpeers
+Like
+.Ic peers ,
+except a summary of all associations for which the server is maintaining
+state is printed.
+This can produce a much longer list of peers from
+fuzzball servers.
+.It Ic mreadlist Ar assocID assocID
+.It Ic mrl Ar assocID assocID
+Like the
+.Ic readlist
+command except the query is done for each of a range of (nonzero)
+association IDs.
+This range is determined from the association list
+cached by the most recent
+.Ic associations
+command.
+.It Xo Ic mreadvar
+.Ar assocID assocID [
+.Aq variable_name Ns
+.Op = Ns Aq value Ns
+.Op ,...]
+.Xc
+.It Xo Ic mrv
+.Ar assocID assocID [
+.Aq variable_name Ns
+.Op = Ns Aq value Ns
+.Op ,...]
+.Xc
+Like the
+.Ic readvar
+command except the query is done for each of a range of (nonzero)
+association IDs. This range is determined from the association list
+cached by the most recent
+.Ic associations
+command.
+.It Ic opeers
+An old form of the
+.Ic peers
+command with the reference ID
+replaced by the local interface address.
+.It Ic passociations
+Print association data concerning in-spec peers from the internally
+cached list of associations.
+This command performs identically to the
+.Ic associations
+except that it displays the internally stored
+data rather than making a new query.
+.It Ic peers
+Obtains a list of in-spec peers of the server, along with a summary of
+each peer's state.
+Summary information includes the address of the
+remote peer, the reference ID (0.0.0.0 if this is unknown), the
+stratum of the remote peer, the type of the peer (local, unicast,
+multicast or broadcast), when the last packet was received, the polling
+interval, in seconds, the reachability register, in octal, and the
+current estimated delay, offset and dispersion of the peer, all in
+milliseconds.
+.Pp
+The character in the left margin indicates the fate of this peer in the
+clock selection process.
+Following is a list of these characters,
+the pidgeon used in the
+.Ic rv
+command,
+and a short explanation of the condition revealed.
+.Bl -tag -width indent
+.It space
+.Pq reject
+The peer is discarded as unreachable,
+synchronized to this server (synch loop)
+or outrageous synchronization distance.
+.It x
+.Pq falsetick
+The peer is discarded by the intersection algorithm
+as a falseticker.
+.It .
+.Pq excess
+The peer is discarded as not among the first ten peers
+sorted by synchronization distance
+and so is probably a poor candidate for further consideration.
+.It -
+.Pq outlyer
+The peer is discarded by the clustering algorithm as an outlyer.
+.It +
+.Pq candidate
+The peer is a survivor and a candidate for the combining algorithm.
+.It #
+.Pq selected
+The peer is a survivor,
+but not among the first six peers sorted by synchronization distance.
+If the assocation is ephemeral,
+it may be demobilized to conserve resources.
+.It *
+.Pq sys.peer
+The peer has been declared the system peer
+and lends its variables to the system variables.
+.It o
+.Pq pps.peer
+The peer has been declared the system peer
+and lends its variables to the system variables.
+However, the actual system synchronization
+is derived from a pulse-per-second (PPS) signal,
+either indirectly via the PPS reference clock driver
+or directly via kernel interface.
+.El
+.Pp
+The flash variable is not defined in the NTP specification,
+but is included as a valuable debugging aid.
+It displays the results of the packet sanity checks
+defined in the NTP specification TEST1 through TEST9.
+The bits for each test read in increasing sequency
+from the least significant bit
+and are defined as follows.
+.Pp
+The following TEST1 through TEST4 enumerate procedure errors.
+The packet timestamps may or may not be believed,
+but the remaining header data are ignored.
+.Bl -tag -width indent
+.It TEST1
+Duplicate packet.
+A copy from somewhere.
+.It TEST2
+Bogus packet.
+It is not a reply to a message previously sent.
+This can happen when the NTP daemon is restarted
+and before a peer notices.
+.It TEST3
+Unsynchronized.
+One or more timestamp fields are missing.
+This normally happens when the first packet from a peer is received.
+.It TEST4
+Either peer delay or peer dispersion is greater than one second.
+You must be joking.
+.El
+.Pp
+The following TEST5 through TEST10
+enumerate errors in the packet header.
+The packet is discarded without inspecting its contents.
+.Bl -tag -width indent
+.It TEST5
+Cryptographic authentication fails.
+See the
+.Xr ntp_auth 8
+page.
+.It TEST6
+Peer is unsynchronized.
+Wind up its clock first.
+.It TEST7
+Peer stratum is greater than 15.
+The peer is probably unsynchronized.
+.It TEST8
+Either root delay or root dispersion is greater than one second.
+Too far from home.
+.It TEST9
+Peer cryptographic authentication fails.
+Either the key identifier or key is wrong
+or somebody trashed our packet.
+.It TEST10
+Access is denied.
+See the
+.Xr ntp_acc 8
+page.
+.El
+.It Ic pstatus Ar assocID
+Send a read status request to the server for the given association.
+The names and values of the peer variables returned will be printed.
+Note that the status word from the header is displayed preceding the
+variables, both in hexadecimal and in pidgeon English.
+.It Ic readlist Op Ar assocID
+.It Ic rl Op Ar assocID
+Requests that the values of the variables in the internal variable list
+be returned by the server.
+If the association ID is omitted or is 0
+the variables are assumed to be system variables.
+Otherwise they are treated as peer variables.
+If the internal variable list is empty a request is
+sent without data, which should induce the remote server to return a
+default display.
+.\"
+.\" XXX Both variable_name and value below should be arguments,
+.\" not angle-quoted text.
+.\"
+.It Xo Ic readvar
+.Op Ar assocID Ns
+.Pf [ Aq variable_name Ns
+.Op = Ns Aq value Ns
+.Op ,...]
+.Xc
+.It Xo Ic rv
+.Op Ar assocID Ns
+.Pf [ Aq variable_name Ns
+.Op = Ns Aq value Ns
+.Op ,...]
+.Xc
+Requests that the values of the specified variables be returned by the
+server by sending a read variables request.
+If the association ID is
+omitted or is given as zero the variables are system variables,
+otherwise they are peer variables and the values returned will be those
+of the corresponding peer.
+Omitting the variable list will send a
+request with no data which should induce the server to return a default
+display.
+.It Xo Ic writevar
+.Ar assocID
+.Aq variable_name Ns
+.Pf = Ns Aq value Ns
+.Op ,...
+.Xc
+Like the
+.Ic readvar
+request, except the specified variables are written instead of read.
+.It Ic writelist Op Ar assocID
+Like the
+.Ic readlist
+request, except the internal list variables are written instead of read.
+.El
+.Sh SEE ALSO
+.Xr ntp_acc 8 ,
+.Xr ntp_auth 8
+.Sh HISTORY
+Written by
+.An Dennis Ferguson
+at the University of Toronto.
+.Sh BUGS
+The
+.Ic peers
+command is non-atomic and may occasionally result in spurious error
+messages about invalid associations occurring and terminating the
+command.
+The timeout time is a fixed constant, which means you wait a long time
+for timeouts since it assumes sort of a worst case.
+The program should
+improve the timeout estimate as it sends queries to a particular host,
+but doesn't.
OpenPOWER on IntegriCloud