ptpd2.conf - Precision Time Protocol daemon config file
Settings in the PTPd configuration file are grouped into sections
and take the form of section:key="value" variables. The
configuration file can either be formatted that way (preferred) or in .ini
file style where a series of key="value" variables is
grouped into sections using [section] headers. Every
setting listed here can also be specified as a command line parameter
(--section:key=value). Quotation marks are optional.
NOTE: the configuration file must end with a newline.
Only a small number of configuration file settings (SNMP, lock
file configuration) requires a restart of the PTPd process to take effect.
All other settings can be changed while ptpd is running - configuration file
is reloaded and checked for changes when PTPd receives the SIGHUP signal.
When reloading configuration, PTPd will always attempt to test settings
before applying them and once running, will never exit as a result of
configuration errors. If it does exit during config refresh, this is most
likely a bug.
Any setting passed as a command line parameter will always take
priority over the configuration file, so once ptpd is running, those
settings cannot be changed - a warning will be logged on every attempt to
change those settings using the configuration file.
- ptpengine
- PTP protocol specific configuration
- clock
- Clock related settings
- servo
- Clock control PI servo configuration
- global
- Global configuration - logging, etc.
- ntpengine
- NTP control configuration
- ptpengine:preset
[SELECT]
- options
- none slaveonly masteronly masterslave
- usage
- PTP engine preset:
- none
- Defaults, no clock class restrictions
- slaveonly
- Slave only (clock class 255 only)
- masteronly
- Master, passive when not best master (clock class 0..127)
- masterslave
- Full IEEE 1588 implementation: Master, slave when not best master (clock
class 128..254)
- default
- slaveonly
- NOTE:
- Presets affect the following settings: ptpengine:slave_only,
clock_no_adjust and ptpengine:clock_class (range and default
value). To see all preset settings, run ptpd2 -H
(--long-help)
- ptpengine:transport
[SELECT]
- options
- ipv4 ethernet
- usage
- Transport type for PTP packets. NOTE: Ethernet transport requires
building with libpcap and is not supported on Solaris as of 2.3.1,
and cannot be enabled on those systems unless ptpd is compiled with
--enable-experimental-options.
- default
- ipv4
- ptpengine:dot2as
[BOOLEAN]
- usage
- Enable IEEE 802.1AS / AVB compatibility (transportSpecific field in PTP
message headers). Requires Ethernet transport as this is the only mapping
used by 802.1AS that PTP supports
- default
- N
- ptpengine:ip_mode
[SELECT]
- options
- multicast unicast hybrid
- usage
- IP transmission mode (requires IP transport):
- multicast
- uses multicast for all messages
- hybrid
- uses multicast for sync and announce, and unicast for delay request and
response
- unicast
- uses unicast for all transmission. When unicast mode is selected,
destination IP(s) (ptpengine:unicast_destinations) must be
configured depending on unicast negotiation setting
(ptpengine:unicast_negotiation) and master or slave role (see:
ptpengine:unicast_destinations)
- default
- multicast
- ptpengine:unicast_grant_duration
[INT: 30 .. 604800]
- usage
- Duration (seconds) for which the transmission of unicast messages is
granted by a master, or requested by a slave when unicast negotiation is
used (ptpengine:unicast_negotiation). When using PTPd with other
PTP implementations, PTPd will never refuse to grant a message based on
the requested duration: it will grant for 30 seconds if requested for any
less than 30 seconds, and will grant for 7 days (604800) if requested for
any longer.
- default
- 300
- ptpengine:disable_bmca
[BOOLEAN]
- usage
- Disable Best Master Clock Algorithm for unicast masters. Only effective
for masteronly preset - all Announce messages will be ignored and the cock
will transition directly into MASTER state and remain an active master.
This behaviour is required for Telecom profile operation.
- default
- N
- ptpengine:use_libpcap
[BOOLEAN]
- usage
- Use libpcap for sending and receiving traffic (automatically enabled in
Ethernet mode). Requires building with libpcap - builds made with
--disable-pcap cannot use this feature, and as of 2.3.1, Solaris
systems will not attempt to use libpcap unless compiled with
--enable-experimental-options
- default
- N
- ptpengine:any_domain
[BOOLEAN]
- usage
- Usability extension: if enabled, a slave-only clock will accept masters
from any domain, while preferring the configured domain, and preferring
lower domain number. This option should be used for slave-only clocks and
should not be used with unicast negotiation. NOTE: this behaviour
is not part of the standard.
- default
- N
- ptpengine:port_number
[INT: 1 .. 65534]
- usage
- PTP port number (part of PTP Port Identity - not UDP port). For ordinary
clocks (single port), the default should be used, but when running
multiple instances to simulate a boundary clock, The port number can be
changed.
- default
- 1
- ptpengine:offset_shift
[INT]
- usage
- Apply an arbitrary shift (nanoseconds) to offset from master when in slave
state. Value can be positive or negative - useful for correcting for of
antenna latencies, delay assymetry and IP stack latencies. This will not
be visible in the offset from master value - only in the resulting clock
correction.
- default
- 0
- ptpengine:log_announce_interval
[INT: -4 .. 7]
- usage
- PTP announce message interval in master state. When using unicast
negotiation (ptpengine:unicast_negotiation), for slaves this is the
initial (minimum) interval requested and for masters this is the minimum
interval granted. (expressed as log 2 i.e. -1=0.5s, 0=1s, 1=2s etc.)
- default
- 1
- ptpengine:announce_receipt_grace_period
[INT: 0 .. 20]
- usage
- PTP announce receipt timeout grace period in slave state: when announce
receipt timeout occurs, disqualify current best GM,
then wait n times announce receipt timeout before resetting. Allows for a
seamless GM failover when standby GMs are slow
to react. When set to 0, this option is not used.
- default
- 0
- ptpengine:log_sync_interval
[INT: -7 .. 7]
- usage
- PTP sync message interval in master state. When using unicast negotiation
(ptpengine:unicast_negotiation), for slaves this is the initial
(minimum) interval requested and for masters this is the minimum interval
granted. (expressed as log 2 i.e. -1=0.5s, 0=1s, 1=2s etc.)
- default
- 0
- ptpengine:log_delayreq_auto
[BOOLEAN]
- usage
- Automatically override the Delay Request interval (with
ptpengine:log_delayreq_interval) if the received value is 127 (0X7F),
such as in unicast messages, unless using unicast negotiation
(ptpengine:unicast_negotiation)
- default
- Y
- ptpengine:log_delayreq_interval
[INT: -7 .. 7]
- usage
- Minimum delay request interval announced when in master state, in slave
state overrides the master interval.
(expressed as log 2 i.e. -1=0.5s, 0=1s, 1=2s etc.). When using unicast
negotiation (ptpengine:unicast_negotiation), for slaves this is the
initial (minimum) interval requested and for masters this is the minimum
interval granted.
- default
- 0
- ptpengine:log_peer_delayreq_interval
[INT: -7 .. 7]
- usage
- Minimum peer delay request message interval in peer to peer delay mode
(expressed as log 2 i.e. -1=0.5s, 0=1s, 1=2s etc.). When using unicast
negotiation (ptpengine:unicast_negotiation), this is the initial
(minimum) interval requested by a node from its peer and this is the
minimum interval granted for a peer.
- default
- 1
- ptpengine:ptp_clock_accuracy
[SELECT]
- options
- ACC_25NS ACC_100NS ACC_250NS ACC_1US ACC_2.5US ACC_10US ACC_25US
ACC_100US ACC_250US ACC_1MS ACC_2.5MS ACC_10MS ACC_25MS ACC_100MS
ACC_250MS ACC_1S ACC_10S ACC_10SPLUS ACC_UNKNOWN
- usage
- Clock accuracy range announced in master state.
- default
- ACC_UNKNOWN
- ptpengine:clock_class
[INT: 0 .. 255]
- usage
- Clock class - announced in master state. Always 255 for slave-only.
Minimum, maximum and default values are controlled by presets. If set to
13 (application specific time source), announced time scale is always set
to ARB. This setting controls the states a PTP port can be in. If below
128, port will only be in MASTER or PASSIVE states (master only). If above
127, port will be in MASTER or SLAVE states.
- default
- 255
- ptpengine:unicast_destinations
[STRING]
- usage
- An IPv4 address or list of IPv4 addresses to be used as unicast
destinations. When unicast negotiation
(ptpengine:unicast_negotiation) is enabled, setting this is
mandatory for slaves as they must be aware of which GMs to request
messages from. When unicast negotiation is disabled, setting this is
mandatory for GMs, as they must deliver messages to a pre-configured group
of slaves.
- default
- [none]
- ptpengine:unicast_domains
[STRING]
- usage
- Specify PTP domain number for each configured unicast destination
(ptpengine:unicast_destinations). This is only used by slave-only
clocks using unicast destinations to allow for each master to be in a
separate domain, such as with Telecom Profile. The number of entries
should match the number of unicast destinations, otherwise unconfigured
domains or domains set to 0 are set to domain configured in
ptpengine:domain. The format is a comma, tab or space-separated
list of 8-bit unsigned integers (0 .. 255).
- default
- [none]
- ptpengine:unicast_local_preference
[STRING]
- usage
- Specify a local preference for each configured unicast destination
(ptpengine:unicast_destinations). This is only used by slave-only
clocks using unicast destinations to allow for each master's BMC selection
to be influenced locally by the slave, such as with Telecom Profile. The
number of entries should match the number of unicast destinations,
otherwise unconfigured preference is set to 0 (highest). The format is a
comma, tab or space-separated list of 8-bit unsigned integers (0 ..
255).
- default
- [none]
- ptpengine:unicast_peer_destination
[STRING]
- usage
- When using IP unicast mode (ptpengine:ip_mode=unicast) and Peer to Peer
delay mechanism (ptpengine:delay_mechanism=P2P), a peer
unicast destination must be configured to request the peer delay from.
Format is a single unicast IPv4 address.
- default
- [none]
- ptpengine:sync_stat_filter_type
[SELECT]
- options
- none mean min max absmin absmax median
- usage
- Type of filter used for Sync message filtering:
- none
- no filtering - pass-through
- mean
- mean (average) - smooth results but influenced by outliers
- min
- minimal value - useful for high packet delay variation ("lucky
packets")
- max
- maximal value - useful for testing worst case scenarios
- absmin
- absolute minimum - value closest to zero. Also useful for test
purposes.
- absmax
- absolute maximun value farthest away from zero
- median
- median (middle value) - more robust than mean, not influenced by
outliers
- default
- min
- ptpengine:delay_stat_filter_type
[SELECT]
- options
- none mean min max absmin absmax median
- usage
- Type of filter used for Delay message filtering:
- none
- no filtering - pass-through
- mean
- mean (average) - smooth results but influenced by outliers
- min
- minimal value - useful for high packet delay variation ("lucky
packets")
- max
- maximal value - useful for testing worst case scenarios
- absmin
- absolute minimum - value closest to zero. Also useful for test
purposes.
- absmax
- absolute maximun value farthest away from zero
- median
- median (middle value) - more robust than mean, not influenced by
outliers
- default
- min
- ptpengine:sync_sequence_checking
[BOOLEAN]
- usage
- When enabled, Sync messages will only be accepted if sequence ID is
increasing. note: This can cause the slave to temporarily lock up
if GM restarts before announce timeout, so this is limited to 50
consecutive sequence errors. Alternatively,
ptpengine:clock_update_timeout can be used to reset the slave
beforehand.
- default
- N
- ptpengine:clock_update_timeout
[INT: 0 .. 3600]
- usage
- If set to non-zero, time (seconds) before slave is reset back into
PTP_LISTENING, if thetre were no clock updates. This is useful for
situations where slave is in SLAVE state (receiving Announce) but is not
receiving or not accepting Sync messages.
- default
- 0
- ptpengine:calibration_delay
[INT: 0 .. 300]
- usage
- Delay between moving to slave state and enabling clock updates (seconds).
This allows mean path delay to stabilise before starting clock updates.
Activated when going into slave state and during slave's GM failover. 0 -
not used.
- default
- 0
- ptpengine:panic_mode
[BOOLEAN]
- usage
- Enable panic mode: when offset from master is above 1 second, stop
updating the clock for a period of time and then step the clock if offset
remains above 1 second.
- default
- N
- ptpengine:ntp_failover
[BOOLEAN]
- usage
- Fail over to NTP when PTP time sync not available - requires
ntpengine:enabled, but does not require the rest of NTP configuration:
will warn instead of failing over if cannot control ntpd.
- default
- N
- ptpengine:timing_acl_permit
[STRING]
- usage
- Permit access control list for timing and signaling messages. Format is a
series of network prefixes and/or IP addresses separated by commas,
spaces, tabs or semicolons. Accepted format is CIDR notation (a.b.c.d/mm),
single IP address (a.b.c.d), or full network/mask (a.b.c.d/m.m.m.m).
Shortcuts can be used: 172.16/12 is expanded to 172.16.0.0/12;
192.168/255.255 is expanded to 192.168.0.0/255.255.0.0, etc. The match is
performed on the source IP address of the incoming messages. IP access
lists are only supported when using the IP transport.
- default
- [none]
- ptpengine:timing_acl_deny
[STRING]
- usage
- Deny access control list for timing and signaling messages. Format is a
series of network prefixes and/or IP addresses separated by commas,
spaces, tabs or semicolons. Accepted format is CIDR notation (a.b.c.d/mm),
single IP address (a.b.c.d), or full network/mask (a.b.c.d/m.m.m.m).
Shortcuts can be used: 172.16/12 is expanded to 172.16.0.0/12;
192.168/255.255 is expanded to 192.168.0.0/255.255.0.0, etc. The match is
performed on the source IP address of the incoming messages. IP access
lists are only supported when using the IP transport.
- default
- [none]
- ptpengine:management_acl_permit
[STRING]
- usage
- Permit access control list for management messages. Format is a series of
network prefixes and/or IP addresses separated by commas, spaces, tabs or
semicolons. Accepted format is CIDR notation (a.b.c.d/mm), single IP
address (a.b.c.d), or full network/mask (a.b.c.d/m.m.m.m). Shortcuts can
be used: 172.16/12 is expanded to 172.16.0.0/12; 192.168/255.255 is
expanded to 192.168.0.0/255.255.0.0, etc. The match is performed on the
source IP address of the incoming messages. IP access lists are only
supported when using the IP transport.
- default
- [none]
- ptpengine:management_acl_deny
[STRING]
- usage
- Deny access control list for management messages. Format is a series of
network prefixes and/or IP addresses separated by commas, spaces, tabs or
semicolons. Accepted format is CIDR notation (a.b.c.d/mm), single IP
address (a.b.c.d), or full network/mask (a.b.c.d/m.m.m.m). Shortcuts can
be used: 172.16/12 is expanded to 172.16.0.0/12; 192.168/255.255 is
expanded to 192.168.0.0/255.255.0.0, etc. The match is performed on the
source IP address of the incoming messages. IP access lists are only
supported when using the IP transport.
- default
- [none]
- ptpengine:timing_acl_order
[SELECT]
- options
- permit-deny deny-permit
- usage
- Order in which permit and deny access lists are evaluated for timing and
signaling messages, the evaluation process is the same as for Apache
httpd. See:
http://httpd.apache.org/docs/current/mod/mod_access_compat.html#order
- default
- deny-permit
- ptpengine:management_acl_order
[SELECT]
- options
- permit-deny deny-permit
- usage
- Order in which permit and deny access lists are evaluated for management
messages, the evaluation process is the same as for Apache httpd.
See:
http://httpd.apache.org/docs/current/mod/mod_access_compat.html#order
- default
- deny-permit
- clock:set_rtc_on_step
[BOOLEAN]
- usage
- Attempt setting the RTC when stepping clock (Linux only - FreeBSD does
this for us. WARNING: this will always set the RTC to OS clock
time, regardless of time zones, so this assumes that RTC runs in UTC or
otherwise in the same timescale as PTP. True at least on most single-boot
x86 Linux systems.
- default
- N
- clock:drift_handling
[SELECT]
- options
- reset preserve file
- usage
- Observed drift handling method between servo restarts:
- reset
- set to zero (not recommended)
- preserve
- use kernel value
- file
- load/save to drift file on startup/shutdown, use kernel value inbetween.
To specify drift file, use the clock:drift_file setting.
- default
- preserve
- clock:leap_seconds_file
[STRING]
- usage
- Specify leap second file location (up to date version can be downloaded
from: http://www.ietf.org/timezones/data/leap-seconds.list). When
configured, PTP master will use data from this file to announce leap flags
and UTC offset, overriding OS information, and PTP slave will use data
from this file as well as information supplied by the GM. If configured,
this file is always reloaded on configuration reload (SIGHUP), reloaded on
clock step and reloaded after a leap second event to ensure the
information is up to date. As of ptpd 2.3.1, the file is bundled with ptpd
and is installed into (prefix)/share/ptpd/leap-seconds.list.ddMMMyyyy
where ddMMMyyyy is the leap seconds file expiry date.
- default
- [none]
- clock:leap_second_pause_period
[INT: 5 .. 600]
- usage
- Time (seconds) before and after midnight that clock updates should be
suspended for during a leap second event. The total duration of the pause
is twice the configured duration. Clock updates are suspended when there
is a leap second event pending and time to midnight is less than or equal
to this value and resumed no earlier than this value after midnight. Clock
updates are resumed in a controlled manner - after a control message, such
as PTP announce. This ensures that the updated UTC offset is received
before any further clock updates.
- default
- 5
- clock:leap_second_handling
[SELECT]
- options
- accept ignore step smear
- usage
- Clock sync behaviour during leap second events:
- accept
- Inform OS kernel about the leap second and let the kernel insert or delete
the leap second
- ignore
- Do not inform the kernel - this ends with a +/-1-second offset which is
then slewed back down
- step
- Do not inform the kernel and step the clock immediately after the leap
second event
- smear
- Gradually introduce an extra offset over a period of time before the leap
second event, which accumulates to +/-1 second (see
clock:leap_second_smear_period). Once the clock stabilises, this
results in a clock frequency shift which is taken off after the event.
Once the leap second event is over, the extra offset is also removed and
time is back in line with master time.
- default
- accept
- clock:leap_second_smear_period
[INT: 3600 .. 86400]
- usage
- When clock:leap_second_handling is set to smear, this
setting defines the period (in seconds) before the leap second event, over
which the leap second offset is gradually added. Example: when set to 24
hours (86400), an extra +/-11.5 microseconds is added every second (11.5
ppm clock frequency offset).
- default
- 86400
- clock:max_offset_ppm
[INT: 500 .. 1000]
- usage
- Maximum absolute frequency shift which can be applied to the clock servo
when slewing the clock. Expressed in parts per million (1 ppm = shift of
1 us per second. Values above 512 will use the tick duration correction
to allow even faster slewing. Default maximum is 512 without using
tick.
- default
- 500
- servo:dt_method
[SELECT]
- options
- none constant measured
- usage
- How servo update interval (delta t) is calculated:
- none
- servo not corrected for update interval (dt always 1),
- constant
- constant value (target servo update rate) - sync interval for PTP,
- measured
- servo measures how often it's updated and uses this interval.
- default
- constant
- servo:stability_detection
[BOOLEAN]
- usage
- Enable clock synchronisation servo stability detection (based on standard
deviation of the observed drift value) - drift will be saved to drift file
/ cached when considered stable, also clock stability status will be
logged.
- default
- N
- servo:stability_timeout
[INT: 1 .. 60]
- usage
- Specify after how many minutes without stabilisation servo is considered
unstable. Assists with logging servo stability information and allows one
to preserve observed drift if servo cannot stabilise.
- default
- 10
- global:lock_directory
[STRING]
- usage
- Lock file directory: used with automatic mode-specific lock files, also
used when no lock file is specified. When lock file is specified, it's
expected to be an absolute path.
- default
- /var/run
- global:log_level
[SELECT]
- options
- LOG_ERR LOG_WARNING LOG_NOTICE LOG_INFO LOG_ALL
- usage
- Specify log level (only messages at this priority or higher will be
logged). The minimal level is LOG_ERR. LOG_ALL enables debug output if
compiled with RUNTIME_DEBUG.
- default
- LOG_ALL
- global:periodic_updates
[BOOLEAN]
- usage
- Log a status update every time statistics are updated
(global:statistics_update_interval). This update is written to the
main log target. Status updates are logged even if ptpd is configured
without support for statistics.
- default
- N
- ntpengine:key
[STRING]
- usage
- NTP key (plain text, max. 20 characters) - must match the key configured
in ntpd's keys file, and must be non-zero for the
ntpengine:control_enabled setting to take effect.
- default
- [none]
Configuration file support has only been introduced in version
2.3. There may still be some inconsistencies in the way some settings are
parsed and while order should not make any difference, for some complex
behaviours it may still be the case.
Please report any bugs using the bug tracker on the SourceForge
page: http://sourceforge.net/projects/ptpd/
Steven Kreuzer <skreuzer@freebsd.org>
Gael Mace <gael_mace@users.sourceforge.net>
George Neville-Neil <gnn@freebsd.org>
Wojciech Owczarek <wojciech@owczarek.co.uk>
Alexandre Van Kempen
ptpd2.conf(5) man page first written by Wojciech Owczarek
for ptpd 2.3.0 in November 2013