559 lines
19 KiB
Groff
559 lines
19 KiB
Groff
.TH PTP4l 8 "December 2016" "linuxptp"
|
|
.SH NAME
|
|
ptp4l - PTP Boundary/Ordinary Clock
|
|
|
|
.SH SYNOPSIS
|
|
.B ptp4l
|
|
[
|
|
.B \-AEP246HSLmqsv
|
|
] [
|
|
.BI \-f " config"
|
|
] [
|
|
.BI \-p " phc-device"
|
|
] [
|
|
.BI \-l " print-level"
|
|
]
|
|
[
|
|
.BI \-i " interface"
|
|
] [
|
|
.I long-options
|
|
]
|
|
.I .\|.\|.
|
|
|
|
.SH DESCRIPTION
|
|
.B ptp4l
|
|
is an implementation of the Precision Time Protocol (PTP) according to IEEE
|
|
standard 1588 for Linux. It implements Boundary Clock (BC) and Ordinary Clock
|
|
(OC).
|
|
|
|
.SH OPTIONS
|
|
.TP
|
|
.B \-A
|
|
Select the delay mechanism automatically. Start with E2E and switch to P2P when
|
|
a peer delay request is received.
|
|
.TP
|
|
.B \-E
|
|
Select the delay request-response (E2E) mechanism. This is the default
|
|
mechanism. All clocks on single PTP communication path must use the same
|
|
mechanism. A warning will be printed when a peer delay request is received on
|
|
port using the E2E mechanism.
|
|
.TP
|
|
.B \-P
|
|
Select the peer delay (P2P) mechanism. A warning will be printed when a delay
|
|
request is received on port using the P2P mechanism.
|
|
.TP
|
|
.B \-2
|
|
Select the IEEE 802.3 network transport.
|
|
.TP
|
|
.B \-4
|
|
Select the UDP IPv4 network transport. This is the default transport.
|
|
.TP
|
|
.B \-6
|
|
Select the UDP IPv6 network transport.
|
|
.TP
|
|
.B \-H
|
|
Select the hardware time stamping. All ports specified by the
|
|
.B \-i
|
|
option and in the configuration file must be attached to the same PTP hardware
|
|
clock (PHC). This is the default time stamping.
|
|
.TP
|
|
.B \-S
|
|
Select the software time stamping.
|
|
.TP
|
|
.B \-L
|
|
Select the legacy hardware time stamping.
|
|
.TP
|
|
.BI \-f " config"
|
|
Read configuration from the specified file. No configuration file is read by
|
|
default.
|
|
.TP
|
|
.BI \-i " interface"
|
|
Specify a PTP port, it may be used multiple times. At least one port must be
|
|
specified by this option or in the configuration file.
|
|
.TP
|
|
.BI \-p " phc-device"
|
|
(This option is deprecated.)
|
|
Before Linux kernel v3.5 there was no way to discover the PHC device
|
|
associated with a network interface. This option specifies the PHC
|
|
device (e.g. /dev/ptp0) to be used when running on legacy kernels.
|
|
.TP
|
|
.B \-s
|
|
Enable the slaveOnly mode.
|
|
.TP
|
|
.BI \-l " print-level"
|
|
Set the maximum syslog level of messages which should be printed or sent to
|
|
the system logger. The default is 6 (LOG_INFO).
|
|
.TP
|
|
.B \-m
|
|
Print messages to the standard output.
|
|
.TP
|
|
.B \-q
|
|
Don't send messages to the system logger.
|
|
.TP
|
|
.B \-v
|
|
Prints the software version and exits.
|
|
.TP
|
|
.BI \-h
|
|
Display a help message.
|
|
|
|
.SH LONG OPTIONS
|
|
|
|
Each and every configuration file option (see below) may also appear
|
|
as a "long" style command line argument. For example, the slaveOnly
|
|
option may be set using either of these two forms.
|
|
|
|
.RS
|
|
\f(CW\-\-slaveOnly 1 \-\-slaveOnly=1\fP
|
|
.RE
|
|
|
|
Option values given on the command line override values in the global
|
|
section of the configuration file.
|
|
|
|
.SH CONFIGURATION FILE
|
|
|
|
The configuration file is divided into sections. Each section starts with a
|
|
line containing its name enclosed in brackets and it follows with settings.
|
|
Each setting is placed on a separate line, it contains the name of the
|
|
option and the value separated by whitespace characters. Empty lines and lines
|
|
starting with # are ignored.
|
|
|
|
The global section (indicated as
|
|
.BR [global] )
|
|
sets the program options, clock options and default port options. Other
|
|
sections are port specific sections and they override the default port options.
|
|
The name of the section is the name of the configured port (e.g.
|
|
.BR [eth0] ).
|
|
Ports specified in the configuration file don't need to be
|
|
specified by the
|
|
.B \-i
|
|
option. An empty port section can be used to replace the command line option.
|
|
|
|
.SH PORT OPTIONS
|
|
|
|
.TP
|
|
.B delayAsymmetry
|
|
The time difference in nanoseconds of the transmit and receive
|
|
paths. This value should be positive when the master-to-slave
|
|
propagation time is longer and negative when the slave-to-master time
|
|
is longer. The default is 0 nanoseconds.
|
|
.TP
|
|
.B logAnnounceInterval
|
|
The mean time interval between Announce messages. A shorter interval makes
|
|
ptp4l react faster to the changes in the master-slave hierarchy. The interval
|
|
should be the same in the whole domain. It's specified as a power of two in
|
|
seconds.
|
|
The default is 1 (2 seconds).
|
|
.TP
|
|
.B logSyncInterval
|
|
The mean time interval between Sync messages. A shorter interval may improve
|
|
accuracy of the local clock. It's specified as a power of two in seconds.
|
|
The default is 0 (1 second).
|
|
.TP
|
|
.B logMinDelayReqInterval
|
|
The minimum permitted mean time interval between Delay_Req messages. A shorter
|
|
interval makes ptp4l react faster to the changes in the path delay. It's
|
|
specified as a power of two in seconds.
|
|
The default is 0 (1 second).
|
|
.TP
|
|
.B logMinPdelayReqInterval
|
|
The minimum permitted mean time interval between Pdelay_Req messages. It's
|
|
specified as a power of two in seconds.
|
|
The default is 0 (1 second).
|
|
.TP
|
|
.B announceReceiptTimeout
|
|
The number of missed Announce messages before the last Announce messages
|
|
expires.
|
|
The default is 3.
|
|
.TP
|
|
.B syncReceiptTimeout
|
|
The number of sync/follow up messages that may go missing before
|
|
triggering a Best Master Clock election. This option is used for
|
|
running in gPTP mode according to the 802.1AS-2011 standard. Setting
|
|
this option to zero will disable the sync message timeout.
|
|
The default is 0 or disabled.
|
|
.TP
|
|
.B transportSpecific
|
|
The transport specific field. Must be in the range 0 to 255.
|
|
The default is 0.
|
|
.TP
|
|
.B path_trace_enabled
|
|
Enable the mechanism used to trace the route of the Announce messages.
|
|
The default is 0 (disabled).
|
|
.TP
|
|
.B follow_up_info
|
|
Include the 802.1AS data in the Follow_Up messages if enabled.
|
|
The default is 0 (disabled).
|
|
.TP
|
|
.B fault_reset_interval
|
|
The time in seconds between the detection of a port's fault and the fault
|
|
being reset. This value is expressed as a power of two. Setting this
|
|
value to \-128 or to the special key word "ASAP" will let the fault be
|
|
reset immediately.
|
|
The default is 4 (16 seconds).
|
|
.TP
|
|
.B fault_badpeernet_interval
|
|
The time in seconds between the detection of a peer network misconfiguration
|
|
and the fault being reset. The port is disabled for the duration of the
|
|
interval. The value is in seconds and the special key word ASAP will let
|
|
the fault be reset immediately.
|
|
The default is 16 seconds.
|
|
.TP
|
|
.B delay_mechanism
|
|
Select the delay mechanism. Possible values are E2E, P2P and Auto.
|
|
The default is E2E.
|
|
.TP
|
|
.B hybrid_e2e
|
|
Enables the "hybrid" delay mechanism from the draft Enterprise
|
|
Profile. When enabled, ports in the slave state send their delay
|
|
request messages to the unicast address taken from the master's
|
|
announce message. Ports in the master state will reply to unicast
|
|
delay requests using unicast delay responses. This option has no
|
|
effect if the delay_mechanism is set to P2P.
|
|
The default is 0 (disabled).
|
|
.TP
|
|
.B ptp_dst_mac
|
|
The MAC address to which PTP messages should be sent.
|
|
Relevant only with L2 transport. The default is 01:1B:19:00:00:00.
|
|
.TP
|
|
.B p2p_dst_mac
|
|
The MAC address to which peer delay messages should be sent.
|
|
Relevant only with L2 transport. The default is 01:80:C2:00:00:0E.
|
|
.TP
|
|
.B network_transport
|
|
Select the network transport. Possible values are UDPv4, UDPv6 and L2.
|
|
The default is UDPv4.
|
|
.TP
|
|
.B neighborPropDelayThresh
|
|
Upper limit for peer delay in nanoseconds. If the estimated peer delay is
|
|
greater than this value the port is marked as not 802.1AS capable.
|
|
.TP
|
|
.B min_neighbor_prop_delay
|
|
Lower limit for peer delay in nanoseconds. If the estimated peer delay is
|
|
smaller than this value the port is marked as not 802.1AS capable.
|
|
.TP
|
|
.B tsproc_mode
|
|
Select the time stamp processing mode used to calculate offset and delay.
|
|
Possible values are filter, raw, filter_weight, raw_weight. Raw modes perform
|
|
well when the rate of sync messages (logSyncInterval) is similar to the rate of
|
|
delay messages (logMinDelayReqInterval or logMinPdelayReqInterval). Weighting
|
|
is useful with larger network jitters (e.g. software time stamping).
|
|
The default is filter.
|
|
.TP
|
|
.B delay_filter
|
|
Select the algorithm used to filter the measured delay and peer delay. Possible
|
|
values are moving_average and moving_median.
|
|
The default is moving_median.
|
|
.TP
|
|
.B delay_filter_length
|
|
The length of the delay filter in samples.
|
|
The default is 10.
|
|
.TP
|
|
.B egressLatency
|
|
Specifies the difference in nanoseconds between the actual transmission
|
|
time at the reference plane and the reported transmit time stamp. This
|
|
value will be added to egress time stamps obtained from the hardware.
|
|
The default is 0.
|
|
.TP
|
|
.B ingressLatency
|
|
Specifies the difference in nanoseconds between the reported receive
|
|
time stamp and the actual reception time at reference plane. This value
|
|
will be subtracted from ingress time stamps obtained from the hardware.
|
|
The default is 0.
|
|
.TP
|
|
.B boundary_clock_jbod
|
|
When running as a boundary clock (that is, when more than one network
|
|
interface is configured), ptp4l performs a sanity check to make sure
|
|
that all of the ports share the same hardware clock device. This
|
|
option allows ptp4l to work as a boundary clock using "just a bunch of
|
|
devices" that are not synchronized to each other. For this mode, the
|
|
collection of clocks must be synchronized by an external program, for
|
|
example phc2sys(8) in "automatic" mode.
|
|
The default is 0 (disabled).
|
|
.TP
|
|
.B udp_ttl
|
|
Specifies the Time to live (TTL) value for IPv4 multicast messages and the hop
|
|
limit for IPv6 multicast messages. This option is only relevant with the IPv4
|
|
and IPv6 UDP transports. The default is 1 to restrict the messages sent by
|
|
.B ptp4l
|
|
to the same subnet.
|
|
|
|
.SH PROGRAM AND CLOCK OPTIONS
|
|
|
|
.TP
|
|
.B twoStepFlag
|
|
Enable two-step mode for sync messages. One-step mode can be used only with
|
|
hardware time stamping.
|
|
The default is 1 (enabled).
|
|
.TP
|
|
.B slaveOnly
|
|
The local clock is a slave-only clock if enabled.
|
|
This option is only for use with 1588 clocks and should not be enabled
|
|
for 802.1AS clocks.
|
|
The default is 0 (disabled).
|
|
.TP
|
|
.B gmCapable
|
|
If this option is enabled, then the local clock is able to become grand master.
|
|
This is only for use with 802.1AS clocks and has no effect on 1588 clocks.
|
|
The default is 1 (enabled).
|
|
.TP
|
|
.B priority1
|
|
The priority1 attribute of the local clock. It is used in the best master
|
|
selection algorithm, lower values take precedence. Must be in the range 0 to
|
|
255.
|
|
The default is 128.
|
|
.TP
|
|
.B priority2
|
|
The priority2 attribute of the local clock. It is used in the best master
|
|
selection algorithm, lower values take precedence. Must be in the range 0 to
|
|
255.
|
|
The default is 128.
|
|
.TP
|
|
.B clockClass
|
|
The clockClass attribute of the local clock. It denotes the traceability of the
|
|
time distributed by the grandmaster clock.
|
|
The default is 248.
|
|
.TP
|
|
.B clockAccuracy
|
|
The clockAccuracy attribute of the local clock. It is used in the best master
|
|
selection algorithm.
|
|
The default is 0xFE.
|
|
.TP
|
|
.B offsetScaledLogVariance
|
|
The offsetScaledLogVariance attribute of the local clock. It characterizes the
|
|
stability of the clock.
|
|
The default is 0xFFFF.
|
|
.TP
|
|
.B domainNumber
|
|
The domain attribute of the local clock.
|
|
The default is 0.
|
|
.TP
|
|
.B free_running
|
|
Don't adjust the local clock if enabled.
|
|
The default is 0 (disabled).
|
|
.TP
|
|
.B freq_est_interval
|
|
The time interval over which is estimated the ratio of the local and
|
|
peer clock frequencies. It is specified as a power of two in seconds.
|
|
The default is 1 (2 seconds).
|
|
.TP
|
|
.B assume_two_step
|
|
Treat one-step responses as two-step if enabled. It is used to work around
|
|
buggy 802.1AS switches.
|
|
The default is 0 (disabled).
|
|
.TP
|
|
.B tx_timestamp_timeout
|
|
The number of milliseconds to poll waiting for the tx time stamp from the kernel
|
|
when a message has recently been sent.
|
|
The default is 1.
|
|
.TP
|
|
.B check_fup_sync
|
|
Because of packet reordering that can occur in the network, in the
|
|
hardware, or in the networking stack, a follow up message can appear
|
|
to arrive in the application before the matching sync message. As this
|
|
is a normal occurrence, and the sequenceID message field ensures
|
|
proper matching, the ptp4l program accepts out of order packets. This
|
|
option adds an additional check using the software time stamps from
|
|
the networking stack to verify that the sync message did arrive
|
|
first. This option is only useful if you do not trust the sequence IDs
|
|
generated by the master.
|
|
The default is 0 (disabled).
|
|
.TP
|
|
.B clock_servo
|
|
The servo which is used to synchronize the local clock. Valid values
|
|
are "pi" for a PI controller, "linreg" for an adaptive controller
|
|
using linear regression, "ntpshm" for the NTP SHM reference clock to
|
|
allow another process to synchronize the local clock (the SHM segment
|
|
number is set to the domain number), and "nullf" for a servo that
|
|
always dials frequency offset zero (for use in SyncE nodes).
|
|
The default is "pi."
|
|
.TP
|
|
.B pi_proportional_const
|
|
The proportional constant of the PI controller. When set to 0.0, the
|
|
proportional constant will be set by the following formula from the current
|
|
sync interval.
|
|
The default is 0.0.
|
|
|
|
kp = min(kp_scale * sync^kp_exponent, kp_norm_max / sync)
|
|
.TP
|
|
.B pi_integral_const
|
|
The integral constant of the PI controller. When set to 0.0, the
|
|
integral constant will be set by the following formula from the current
|
|
sync interval.
|
|
The default is 0.0.
|
|
|
|
ki = min(ki_scale * sync^ki_exponent, ki_norm_max / sync)
|
|
.TP
|
|
.B pi_proportional_scale
|
|
The kp_scale constant in the formula used to set the proportional constant of
|
|
the PI controller from the sync interval. When set to 0.0, the value will be
|
|
selected from 0.7 and 0.1 for the hardware and software time stamping
|
|
respectively.
|
|
The default is 0.0.
|
|
.TP
|
|
.B pi_proportional_exponent
|
|
The kp_exponent constant in the formula used to set the proportional constant of
|
|
the PI controller from the sync interval.
|
|
The default is \-0.3.
|
|
.TP
|
|
.B pi_proportional_norm_max
|
|
The kp_norm_max constant in the formula used to set the proportional constant of
|
|
the PI controller from the sync interval.
|
|
The default is 0.7
|
|
.TP
|
|
.B pi_integral_scale
|
|
The ki_scale constant in the formula used to set the integral constant of
|
|
the PI controller from the sync interval. When set to 0.0, the value will be
|
|
selected from 0.3 and 0.001 for the hardware and software time stamping
|
|
respectively.
|
|
The default is 0.0.
|
|
.TP
|
|
.B pi_integral_exponent
|
|
The ki_exponent constant in the formula used to set the integral constant of
|
|
the PI controller from the sync interval.
|
|
The default is 0.4.
|
|
.TP
|
|
.B pi_integral_norm_max
|
|
The ki_norm_max constant in the formula used to set the integral constant of
|
|
the PI controller from the sync interval.
|
|
The default is 0.3.
|
|
.TP
|
|
.B step_threshold
|
|
The maximum offset the servo will correct by changing the clock
|
|
frequency instead of stepping the clock. When set to 0.0, the servo will
|
|
never step the clock except on start. It's specified in seconds.
|
|
The default is 0.0.
|
|
This option used to be called
|
|
.BR pi_offset_const .
|
|
.TP
|
|
.B first_step_threshold
|
|
The maximum offset the servo will correct by changing the clock
|
|
frequency instead of stepping the clock. This is only applied on the first
|
|
update. It's specified in seconds. When set to 0.0, the servo won't step
|
|
the clock on start.
|
|
The default is 0.00002 (20 microseconds).
|
|
This option used to be called
|
|
.BR pi_f_offset_const .
|
|
.TP
|
|
.B max_frequency
|
|
The maximum allowed frequency adjustment of the clock in parts per billion
|
|
(ppb). This is an additional limit to the maximum allowed by the hardware. When
|
|
set to 0, the hardware limit will be used.
|
|
The default is 900000000 (90%).
|
|
This option used to be called
|
|
.BR pi_max_frequency .
|
|
.TP
|
|
.B sanity_freq_limit
|
|
The maximum allowed frequency offset between uncorrected clock and the system
|
|
monotonic clock in parts per billion (ppb). This is used as a sanity check of
|
|
the synchronized clock. When a larger offset is measured, a warning message
|
|
will be printed and the servo will be reset. When set to 0, the sanity check is
|
|
disabled. The default is 200000000 (20%).
|
|
.TP
|
|
.B ntpshm_segment
|
|
The number of the SHM segment used by ntpshm servo.
|
|
The default is 0.
|
|
.TP
|
|
.B udp6_scope
|
|
Specifies the desired scope for the IPv6 multicast messages. This
|
|
will be used as the second byte of the primary address. This option
|
|
is only relevant with IPv6 transport. See RFC 4291. The default is
|
|
0x0E for the global scope.
|
|
.TP
|
|
.B uds_address
|
|
Specifies the address of the UNIX domain socket for receiving local
|
|
management messages. The default is /var/run/ptp4l.
|
|
.TP
|
|
.B dscp_event
|
|
Defines the Differentiated Services Codepoint (DSCP) to be used for PTP
|
|
event messages. Must be a value between 0 and 63. There are several media
|
|
streaming standards out there that require specific values for this option.
|
|
For example 46 (EF PHB) in AES67 or 48 (CS6 PHB) in RAVENNA. The default
|
|
is 0.
|
|
.TP
|
|
.B dscp_general
|
|
Defines the Differentiated Services Codepoint (DSCP) to be used for PTP
|
|
general messages. Must be a value between 0 and 63. There are several media
|
|
streaming standards out there that recommend specific values for this option.
|
|
For example 34 (AF41 PHB) in AES67 or 46 (EF PHB) in RAVENNA. The default
|
|
is 0.
|
|
.TP
|
|
.B logging_level
|
|
The maximum logging level of messages which should be printed.
|
|
The default is 6 (LOG_INFO).
|
|
.TP
|
|
.B verbose
|
|
Print messages to the standard output if enabled.
|
|
The default is 0 (disabled).
|
|
.TP
|
|
.B use_syslog
|
|
Print messages to the system log if enabled.
|
|
The default is 1 (enabled).
|
|
.TP
|
|
.B summary_interval
|
|
The time interval in which are printed summary statistics of the clock. It is
|
|
specified as a power of two in seconds. The statistics include offset root mean
|
|
square (RMS), maximum absolute offset, frequency offset mean and standard
|
|
deviation, and path delay mean and standard deviation. The units are
|
|
nanoseconds and parts per billion (ppb). If there is only one clock update in
|
|
the interval, the sample will be printed instead of the statistics. The
|
|
messages are printed at the LOG_INFO level.
|
|
The default is 0 (1 second).
|
|
.TP
|
|
.B time_stamping
|
|
The time stamping method. The allowed values are hardware, software and legacy.
|
|
The default is hardware.
|
|
.TP
|
|
.B productDescription
|
|
The product description string. Allowed values must be of the form
|
|
manufacturerName;modelNumber;instanceIdentifier and contain at most 64
|
|
utf8 symbols. The default is ";;".
|
|
.TP
|
|
.B revisionData
|
|
The revision description string which contains the revisions for node
|
|
hardware (HW), firmware (FW), and software (SW). Allowed values are of
|
|
the form HW;FW;SW and contain at most 32 utf8 symbols. The default is
|
|
an ";;".
|
|
.TP
|
|
.B userDescription
|
|
The user description string. Allowed values are of the form
|
|
name;location and contain at most 128 utf8 symbols. The default is an
|
|
empty string.
|
|
.TP
|
|
.B manufacturerIdentity
|
|
The manufacturer id which should be an OUI owned by the manufacturer.
|
|
The default is 00:00:00.
|
|
.TP
|
|
.B kernel_leap
|
|
When a leap second is announced, let the kernel apply it by stepping the clock
|
|
instead of correcting the one-second offset with servo, which would correct the
|
|
one-second offset slowly by changing the clock frequency (unless the
|
|
.B step_threshold
|
|
option is set to correct such offset by stepping).
|
|
Relevant only with software time stamping. The default is 1 (enabled).
|
|
.TP
|
|
.B timeSource
|
|
The time source is a single byte code that gives an idea of the kind
|
|
of local clock in use. The value is purely informational, having no
|
|
effect on the outcome of the Best Master Clock algorithm, and is
|
|
advertised when the clock becomes grand master.
|
|
|
|
.SH TIME SCALE USAGE
|
|
|
|
.B ptp4l
|
|
as domain master either uses PTP or UTC time scale depending on time stamping
|
|
mode. In software and legacy time stamping modes it announces Arbitrary time
|
|
scale mode, which is effectively UTC here, in hardware time stamping mode it
|
|
announces use of PTP time scale.
|
|
|
|
When
|
|
.B ptp4l
|
|
is the domain master using hardware time stamping, it is up to
|
|
.B phc2sys
|
|
to maintain the correct offset between UTC and PTP times. See
|
|
.BR phc2sys (8)
|
|
manual page for more details.
|
|
|
|
.SH SEE ALSO
|
|
.BR pmc (8),
|
|
.BR phc2sys (8)
|