ptpd2.conf(5)

NAME
ptpd2.conf - Precision Time Protocol daemon config file

CONFIGURATION FILE FORMAT
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.

RELOADING CONFIGURATION
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.

PRIORITY
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.

CONFIGURATION SECTIONS

ptpengine
    PTP protocol specific configuration

clock
    Clock related settings

servo
    Clock control PI servo configuration

global
    Global configuration - logging, etc.

ntpengine
    NTP control configuration

CONFIGURATION VARIABLES

    ptpengine:interface [STRING]

        usage
            Network interface to use - eth0, igb0 etc. (required).

        default
            [none]

    ptpengine:backup_interface [STRING]

        usage
            Backup network interface to use - eth0, igb0 etc. When no GM available, slave will keep alternating between primary and secondary until a GM is found.

        default
            [none]

    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_negotiation [BOOLEAN]

        usage
            Enable unicast negotiation support using signaling messages - as used by the Telecom profile (ITU-T G.8265.1).

        default
            N

    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:delay_mechanism [SELECT]

        options
            E2E P2P DELAY_DISABLED

        usage
            Delay detection mode used - use DELAY_DISABLED for syntonisation only (no synchronisation).

        default
            E2E

    ptpengine:domain [INT: 0 .. 127]

        usage
            PTP domain number.

        default
            0

    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:slave_only [BOOLEAN]

        usage
            Slave only mode (sets clock class to 255, overriding value from preset).

        default
            Y

    ptpengine:inbound_latency [INT]

        usage
            Specify latency correction (nanoseconds) for incoming packets.

        default
            0

    ptpengine:outbound_latency [INT]

        usage
            Specify latency correction (nanoseconds) for outgoing packets.

        default
            0

    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:always_respect_utc_offset [BOOLEAN]

        usage
            Compatibility option: In slave state, always respect UTC offset announced by best master, even if the the
             currrentUtcOffsetValid flag is announced FALSE. NOTE: this behaviour is not part of the standard.

        default
            N

    ptpengine:prefer_utc_offset_valid [BOOLEAN]

        usage
            Compatibility extension to BMC algorithm: when enabled, BMC for both master and save clocks will prefer masters announcing currrentUtcOffsetValid as TRUE.
             NOTE: this behaviour is not part of the standard.

        default
            N

    ptpengine:require_utc_offset_valid [BOOLEAN]

        usage
            Compatibility option: when enabled, ptpd2 will ignore Announce messages from masters announcing currentUtcOffsetValid as FALSE. NOTE: this behaviour is not part of the standard.

        default
            N

    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:log_announce_interval_max [INT: -1 .. 7]

        usage
            When using unicast negtiation (ptpengine:unicast_negotiation), this is the maximum announce interval granted by a master, and the maximum interval a slave will attempt to request. (expressed as log 2 i.e. -1=0.5s, 0=1s, 1=2s etc.)

        default
            5

    ptpengine:announce_receipt_timeout [INT: 2 .. 255]

        usage
            PTP announce receipt timeout announced in master state.

        default
            6

    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_sync_interval_max [INT: -1 .. 7]

        usage
            When using unicast negtiation (ptpengine:unicast_negotiation), this is the maximum sync interval granted by a master, and the maximum interval a slave will attempt to request. (expressed as log 2 i.e. -1=0.5s, 0=1s, 1=2s etc.)

        default
            5

    ptpengine:log_delayreq_override [BOOLEAN]

        usage
            Override the Delay Request interval provided by best master.

        default
            N

    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_initial [INT: -7 .. 7]

        usage
            Delay request interval used before receiving first delay response
                (expressed as log 2 i.e. -1=0.5s, 0=1s, 1=2s etc.)

        default
            0

    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_delayreq_interval_max [INT: -1 .. 7]

        usage
            When using unicast negtiation (ptpengine:unicast_negotiation), this is the maximum delay request interval granted by a master, and the maximum interval a slave will attempt to request.
             (expressed as log 2 i.e. -1=0.5s, 0=1s, 1=2s etc.).

        default
            5

    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:log_peer_delayreq_interval_max [INT: -1 .. 7]

        usage
            When using unicast negtiation (ptpengine:unicast_negotiation), this is the maximum peer delay request interval granted by a node, and the maximum interval a node will attempt to request from its peer.
             (expressed as log 2 i.e. -1=0.5s, 0=1s, 1=2s etc.).

        default
            5

    ptpengine:foreignrecord_capacity [INT: 5 .. 10]

        usage
            Foreign master record size (Maximum number of foreign masters).

        default
            5

    ptpengine:ptp_allan_variance [INT: 0 .. 65535]

        usage
            Specify Allan variance announced in master state.

        default
            28768

    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:utc_offset [INT]

        usage
            Underlying time source UTC offset announced in master state.

        default
            0

    ptpengine:utc_offset_valid [BOOLEAN]

        usage
            Underlying time source UTC offset validity announced in master state.

        default
            N

    ptpengine:time_traceable [BOOLEAN]

        usage
            Underlying time source time traceability announced in master state.

        default
            N

    ptpengine:frequency_traceable [BOOLEAN]

        usage
            Underlying time source frequency traceability announced in master state.

        default
            N

    ptpengine:ptp_timescale [SELECT]

        options
            PTP ARB

        usage
            Time scale announced in master state (with ARB, UTC properties are ignored by slaves). When clock class is set to 13 (application specific), this value is ignored and ARB is used.

        default
            ARB

    ptpengine:ptp_timesource [SELECT]

        options
            ATOMIC_CLOCK GPS TERRESTRIAL_RADIO PTP NTP HAND_SET OTHER INTERNAL_OSCILLATOR

        usage
            Time source announced in master state.

        default
            INTERNAL_OSCILLATOR

    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:priority1 [INT: 0 .. 248]

        usage
            Priority 1 announced in master state,used for Best Master
                 Clock selection.

        default
            128

    ptpengine:priority2 [INT: 0 .. 248]

        usage
            Priority 2 announced in master state, used for Best Master
                 Clock selection.

        default
            128

    ptpengine:max_listen [INT: min: 1 ]

        usage
            Number of consecutive protocol resets to LISTENING before full network reset.

        default
            5

    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:management_enable [BOOLEAN]

        usage
            Enable handling of PTP management messages. Only GET messages are processed by default. See ptpengine:management_set_enable.

        default
            Y

    ptpengine:management_set_enable [BOOLEAN]

        usage
            Accept SET and COMMAND management messages.

        default
            N

    ptpengine:igmp_refresh [BOOLEAN]

        usage
            Send explicit IGMP joins between engine resets and periodically
                 in master state.

        default
            Y

    ptpengine:master_igmp_refresh_interval [INT: 0 .. 255]

        usage
            Periodic IGMP join interval (seconds) in master state when running IPv4 multicast: when set below 10 or when ptpengine:igmp_refresh is disabled, this setting has no effect.

        default
            60

    ptpengine:multicast_ttl [INT: 1 .. 64]

        usage
            Multicast time to live for multicast PTP packets (ignored and set to 1 for peer to peer messages).

        default
            64

    ptpengine:ip_dscp [INT: 0 .. 63]

        usage
            DiffServ CodepPoint for packet prioritisation (decimal). When set to zero, this option is not used. Use 46 for Expedited Forwarding (0x2e).

        default
            0

    ptpengine:sync_stat_filter_enable [BOOLEAN]

        usage
            Enable statistical filter for Sync messages

        default
            N

    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:sync_stat_filter_window [INT: 3 .. 128]

        usage
            Number of samples used for the Sync statistical filter

        default
            4

    ptpengine:sync_stat_filter_window_type [SELECT]

        options
            sliding interval

        usage
            Sampling window behaviour for the Sync statistical filter:

            sliding
                sliding window - a value is output every time the filter runs, which can result in duplicates

            interval
                only output a value every n-th sample (full window) - independent sampling periods

        default
            sliding

    ptpengine:delay_stat_filter_enable [BOOLEAN]

        usage
            Enable statistical filter for Delay messages

        default
            N

    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:delay_stat_filter_window [INT: 3 .. 128]

        usage
            Number of samples used for the Delay statistical filter

        default
            4

    ptpengine:delay_stat_filter_window_type [SELECT]

        options
            sliding interval

        usage
            Sampling window behaviour for the Delay statistical filter:

            sliding
                sliding window - a value is output every time the filter runs, which can result in duplicates

            interval
                only output a value every n-th sample (full window) - independent sampling periods

        default
            sliding

    ptpengine:delay_outlier_filter_enable [BOOLEAN]

        usage
            Enable outlier filter for the Delay Response component in slave state

        default
            N

    ptpengine:delay_outlier_filter_action [SELECT]

        options
            discard filter

        usage
            Delay Response outlier filter action. If set to 'filter', outliers are
                 replaced with moving average.

        default
            discard

    ptpengine:delay_outlier_filter_capacity [INT: 4 .. 60]

        usage
            Number of samples in the Delay Response outlier filter buffer

        default
            20

    ptpengine:delay_outlier_filter_threshold [FLOAT: 0.001000 .. 1000.000000]

        usage
            Delay Response outlier filter threshold: multiplier for Peirce's maximum
                 standard deviation. When set below 1.0, filter is tighter, when set above
                 1.0, filter is looser than standard Peirce's test.

        default
            1.000000

    ptpengine:delay_outlier_filter_always_filter [BOOLEAN]

        usage
            Always run the Delay Response outlier filter, even if clock is being slewed at maximum rate

        default
            N

    ptpengine:delay_outlier_filter_autotune_enable [BOOLEAN]

        usage
            Enable automatic threshold control for Delay Response outlier filter.

        default
            Y

    ptpengine:delay_outlier_filter_autotune_minpercent [INT: 0 .. 99]

        usage
            Delay Response outlier filter autotune low watermark - minimum percentage of discarded samples in the update period before filter is tightened by the autotune step value

        default
            20

    ptpengine:delay_outlier_filter_autotune_maxpercent [INT: 1 .. 100]

        usage
            Delay Response outlier filter autotune high watermark - maximum percentage of discarded samples in the update period before filter is loosened by the autotune step value

        default
            95

    ptpengine:delay_outlier_filter_autotune_step [FLOAT: 0.010000 .. 10.000000]

        usage
            The value the Delay Response outlier filter threshold is increased or decreased by when auto-tuning

        default
            0.100000

    ptpengine:delay_outlier_filter_autotune_minthreshold [FLOAT: 0.010000 .. 10.000000]

        usage
            Minimum Delay Response filter threshold value used when auto-tuning

        default
            0.100000

    ptpengine:delay_outlier_filter_autotune_maxthreshold [FLOAT: 0.010000 .. 10.000000]

        usage
            Maximum Delay Response filter threshold value used when auto-tuning

        default
            5.000000

    ptpengine:delay_outlier_weight [FLOAT: 0.010000 .. 2.000000]

        usage
            Delay Response outlier weight: if an outlier is detected, determines
                 the amount of its deviation from mean that is used to build the standard
                 deviation statistics and influence further outlier detection.
                 When set to 1.0, the outlier is used as is.

        default
            1.000000

    ptpengine:delay_outlier_filter_stepdetect_enable [BOOLEAN]

        usage
            Enable Delay Response filter step detection (delaySM) to block when certain level exceeded

        default
            N

    ptpengine:delay_outlier_filter_stepdetect_threshold [INT: 50000 .. 999999999]

        usage
            Delay step detection threshold. Step detection is performed only when delaySM is below this threshold (nanoseconds)

        default
            1000000

    ptpengine:delay_outlier_filter_stepdetect_level [INT: 50000 .. 999999999]

        usage
            Delay step level. When step detection enabled and operational, delaySM above this level (nanoseconds) is considered a clock step and updates are paused

        default
            500000

    ptpengine:delay_outlier_filter_stepdetect_credit [INT: 50 .. 1000]

        usage
            Initial credit (number of samples) the Delay step detection filter can block for. When credit is exhausted, filter stops blocking. Credit is gradually restored (see ptpengine:delay_outlier_filter_stepdetect_credit_increment)

        default
            200

    ptpengine:delay_outlier_filter_stepdetect_credit_increment [INT: 1 .. 100]

        usage
            Amount of credit for the Delay step detection filter restored every full sample window

        default
            10

    ptpengine:sync_outlier_filter_enable [BOOLEAN]

        usage
            Enable outlier filter for the Sync component in slave state.

        default
            N

    ptpengine:sync_outlier_filter_action [SELECT]

        options
            discard filter

        usage
            Sync outlier filter action. If set to 'filter', outliers are replaced
                 with moving average.

        default
            discard

    ptpengine:sync_outlier_filter_capacity [INT: 4 .. 60]

        usage
            Number of samples in the Sync outlier filter buffer.

        default
            20

    ptpengine:sync_outlier_filter_threshold [FLOAT: 0.001000 .. 1000.000000]

        usage
            Sync outlier filter threshold: multiplier for the Peirce's maximum standard
                 deviation. When set below 1.0, filter is tighter, when set above 1.0,
                 filter is looser than standard Peirce's test.

        default
            1.000000

    ptpengine:sync_outlier_filter_always_filter [BOOLEAN]

        usage
            Always run the Sync outlier filter, even if clock is being slewed at maximum rate

        default
            N

    ptpengine:sync_outlier_filter_autotune_enable [BOOLEAN]

        usage
            Enable automatic threshold control for Sync outlier filter.

        default
            Y

    ptpengine:sync_outlier_filter_autotune_minpercent [INT: 0 .. 99]

        usage
            Sync outlier filter autotune low watermark - minimum percentage of discarded samples in the update period before filter is tightened by the autotune step value

        default
            20

    ptpengine:sync_outlier_filter_autotune_maxpercent [INT: 1 .. 100]

        usage
            Sync outlier filter autotune high watermark - maximum percentage of discarded samples in the update period before filter is loosened by the autotune step value

        default
            95

    ptpengine:sync_outlier_filter_autotune_step [FLOAT: 0.010000 .. 10.000000]

        usage
            The value the Sync outlier filter threshold is increased or decreased by when auto-tuning

        default
            0.100000

    ptpengine:sync_outlier_filter_autotune_minthreshold [FLOAT: 0.010000 .. 10.000000]

        usage
            Minimum Sync filter threshold value used when auto-tuning

        default
            0.100000

    ptpengine:sync_outlier_filter_autotune_maxthreshold [FLOAT: 0.010000 .. 10.000000]

        usage
            Maximum Sync filter threshold value used when auto-tuning

        default
            5.000000

    ptpengine:sync_outlier_weight [FLOAT: 0.010000 .. 2.000000]

        usage
            Sync outlier weight: if an outlier is detected, this value determines the
             amount of its deviation from mean that is used to build the standard
             deviation statistics and influence further outlier detection.
             When set to 1.0, the outlier is used as is

        default
            1.000000

    ptpengine:sync_outlier_filter_stepdetect_enable [BOOLEAN]

        usage
            Enable Sync filter step detection (delayMS) to block when certain level exceeded

        default
            N

    ptpengine:sync_outlier_filter_stepdetect_threshold [INT: 50000 .. 999999999]

        usage
            Sync step detection threshold. Step detection is performed only when delayMS is below this threshold (nanoseconds)

        default
            1000000

    ptpengine:sync_outlier_filter_stepdetect_level [INT: 50000 .. 999999999]

        usage
            Sync step level. When step detection enabled and operational, delayMS above this level (nanoseconds) is considered a clock step and updates are paused

        default
            500000

    ptpengine:sync_outlier_filter_stepdetect_credit [INT: 50 .. 1000]

        usage
            Initial credit (number of samples) the Sync step detection filter can block for. When credit is exhausted, filter stops blocking. Credit is gradually restored (see ptpengine:sync_outlier_filter_stepdetect_credit_increment)

        default
            200

    ptpengine:sync_outlier_filter_stepdetect_credit_increment [INT: 1 .. 100]

        usage
            Amount of credit for the Sync step detection filter restored every full sample window

        default
            10

    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:idle_timeout [INT: 10 .. 3600]

        usage
            PTP idle timeout (seconds): if PTPd is in SLAVE state and there have been no clock updates for this amount of time, PTPd releases clock control.

        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:panic_mode_duration [INT: 1 .. 60]

        usage
            Duration (minutes) of the panic mode period (no clock updates) when offset above 1 second detected.

        default
            2

    ptpengine:panic_mode_release_clock [BOOLEAN]

        usage
            When entering panic mode, release clock control while panic mode lasts. If not set, PTP will hold clock control during panic mode. If set together with ntpengine:* configured, this will fail over to NTP.

        default
            N

    ptpengine:panic_mode_exit_threshold [INT: 0 .. 999999999]

        usage
            Do not exit panic mode until offset drops below this value (nanoseconds). 0 = not used.

        default
            0

    ptpengine:pid_as_clock_identity [BOOLEAN]

        usage
            Use PTPd's process ID as the middle part of the PTP clock ID - useful for running multiple instances.

        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:ntp_failover_timeout [INT: 0 .. 1800]

        usage
            NTP failover timeout in seconds: time between PTP slave going into LISTENING state, and failing over to NTP. 0 = fail over immediately. This setting controls the time provider election hold time.

        default
            60

    ptpengine:prefer_ntp [BOOLEAN]

        usage
            Prefer NTP time synchronisation. Only use PTP when NTP not available. Could be used when NTP runs with a local GPS receiver or another hardware reference.

        default
            N

    ptpengine:panic_mode_ntp [BOOLEAN]

        usage
            Deprecated as of 2.3.1, but still supported: see ptppengine:panic_mode_release_clock.

        default
            N

    ptpengine:sigusr2_clears_counters [BOOLEAN]

        usage
            Clear counters after dumping all counter values on SIGUSR2.

        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:no_adjust [BOOLEAN]

        usage
            Do not adjust the clock.

        default
            N

    clock:no_reset [BOOLEAN]

        usage
            Do not reset the clock - only slew.

        default
            N

    clock:step_startup_force [BOOLEAN]

        usage
            Force clock step on first sync after startup regardless of offset and clock:no_reset

        default
            N

    clock:step_startup [BOOLEAN]

        usage
            Step clock on startup only if offset >= 1 second, ignoring panic mode and clock:no_reset

        default
            N

    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:drift_file [STRING]

        usage
            Specify drift file

        default
            /etc/ptpd2_kernelclock.drift

    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_notice_period [INT: 3600 .. 86400]

        usage
            Time (seconds) before midnight that PTPd starts announcing the leap second if it's running as master. The IEEE 1588 standard suggests 12 hours notice and this is the default, but it may be changed to allow more flexibility.

        default
            43200

    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:delayfilter_stiffness [INT]

        usage
            Mean Path Delay filter stiffness.

        default
            6

    servo:kp [FLOAT: min: 0.000001 ]

        usage
            Clock servo PI controller proportional component gain (kP).

        default
            0.100000

    servo:ki [FLOAT: min: 0.000001 ]

        usage
            Clock servo PI controller integral component gain (kI).

        default
            0.001000

    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:dt_max [FLOAT: 1.500000 .. 100.000000]

        usage
            Maximum servo update interval (delta t) when using measured servo update interval (servo:dt_method = measured), specified as sync interval multiplier

        default
            5.000000

    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_threshold [FLOAT: 1.000000 .. 10000.000000]

        usage
            Specify the observed drift standard deviation threshold in parts per billion (ppb) - if stanard deviation is within the threshold, servo is considered stable.

        default
            5.000000

    servo:stability_period [INT: 1 .. 100]

        usage
            Specify for how many statistics update intervals the observed drift standard deviation has to stay within threshold to be considered stable.

        default
            3

    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

    servo:max_delay [INT: 0 .. 999999999]

        usage
            Do not accept master to slave delay (delayMS - from Sync message) or slave to master delay (delaySM - from Delay Response message) if greater than this value (nanoseconds). 0 = not used.

        default
            0

    servo:max_delay_max_rejected [INT: min: 0 ]

        usage
            Maximum number of consecutive rejected delay measurements exceeding the maxDelay threshold (servo:max_delay), before slave is reset. 0 = not checked.

        default
            0

    servo:max_delay_stable_only [BOOLEAN]

        usage
            If servo:max_delay is set, perform the check only if clock servo has stabilised.

        default
            N

    servo:max_offset [INT: 0 .. 999999999]

        usage
            Do not reset the clock if offset from master is greater than this value (nanoseconds). 0 = not used.

        default
            0

    global:enable_snmp [BOOLEAN]

        usage
            Enable SNMP agent (if compiled with PTPD_SNMP).

        default
            N

    global:use_syslog [BOOLEAN]

        usage
            Send log messages to syslog. Disabling this sends all messages to stdout (or specified log file).

        default
            N

    global:lock_file [STRING]

        usage
            Lock file location

        default
            [none]

    global:auto_lockfile [BOOLEAN]

        usage
            Use mode specific and interface specific lock file (overrides global:lock_file).

        default
            N

    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:ignore_lock [BOOLEAN]

        usage
            Skip lock file checking and locking.

        default
            N

    global:quality_file [STRING]

        usage
            File used to record data about sync packets. Enables recording when set.

        default
            [none]

    global:quality_file_max_size [INT: min: 0 ]

        usage
            Maximum sync packet record file size (in kB) - file will be truncated if size exceeds the limit. 0 - no limit.

        default
            0

    global:quality_file_max_files [INT: 0 .. 100]

        usage
            Enable log rotation of the sync packet record file up to n files. 0 - do not rotate.

        default
            0

    global:quality_file_truncate [BOOLEAN]

        usage
            Truncate the sync packet record file every time it is (re) opened: startup and SIGHUP.

        default
            N

    global:status_file [STRING]

        usage
            File used to log ptpd2 status information.

        default
            /var/run/ptpd2.status

    global:log_status [BOOLEAN]

        usage
            Enable / disable writing status information to file.

        default
            N

    global:status_update_interval [INT: 1 .. 30]

        usage
            Status file update interval in seconds.

        default
            1

    global:log_file [STRING]

        usage
            Specify log file path (event log). Setting this enables logging to file.

        default
            [none]

    global:log_file_max_size [INT: min: 0 ]

        usage
            Maximum log file size (in kB) - log file will be truncated if size exceeds the limit. 0 - no limit.

        default
            0

    global:log_file_max_files [INT: 0 .. 100]

        usage
            Enable log rotation of the sync packet record file up to n files. 0 - do not rotate.

        default
            0

    global:log_file_truncate [BOOLEAN]

        usage
            Truncate the log file every time it is (re) opened: startup and SIGHUP.

        default
            N

    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:statistics_file [STRING]

        usage
            Specify statistics log file path. Setting this enables logging of statistics, but can be overridden with global:log_statistics.

        default
            [none]

    global:statistics_log_interval [INT: min: 0 ]

        usage
            Log timing statistics every n seconds for Sync and Delay messages (0 - log all).

        default
            0

    global:statistics_file_max_size [INT: min: 0 ]

        usage
            Maximum statistics log file size (in kB) - log file will be truncated if size exceeds the limit. 0 - no limit.

        default
            0

    global:statistics_file_max_files [INT: 0 .. 100]

        usage
            Enable log rotation of the statistics file up to n files. 0 - do not rotate.

        default
            0

    global:statistics_file_truncate [BOOLEAN]

        usage
            Truncate the statistics file every time it is (re) opened: startup and SIGHUP.

        default
            N

    global:dump_packets [BOOLEAN]

        usage
            Dump the contents of every PTP packet.

        default
            N

    global:verbose_foreground [BOOLEAN]

        usage
            Run in foreground with statistics and all messages logged to stdout. Overrides log file and statistics file settings and disables syslog.

        default
            N

    global:foreground [BOOLEAN]

        usage
            Run in foreground - ignored when global:verbose_foreground is set.

        default
            N

    global:log_statistics [BOOLEAN]

        usage
            Log timing statistics for every PTP packet received. Output is in CSV format and field headers are always printed when starting or refreshing the statistics log.

        default
            N

    global:statistics_timestamp_format [SELECT]

        options
            datetime unix both

        usage
            Timestamp format used when logging timing statistics (when global:log_statistics is enabled):

            datetime
                Formatted date and time: YYYY-MM-DD hh:mm:ss.uuuuuu

            unix
                Unix timestamp with nanoseconds: s.ns

            both
                Formatted date and time followed by unix timestamp (adds one extra field to the log)

        default
            datetime

    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

    global:cpuaffinity_cpucore [INT: -1 .. 255]

        usage
            Bind ptpd2 process to a selected CPU core number. 0 = first CPU core, etc. -1 = do not bind to a single core.

        default
            0

    global:statistics_update_interval [INT: 1 .. 60]

        usage
            Clock synchronisation statistics update interval in seconds. Also controls how often periodic status information is logged (when using global:statistics_update_interval).

        default
            30

    global:timingdomain_election_delay [INT: 0 .. 3600 ]

        usage
            Delay (seconds) before releasing a time service (NTP or PTP) and electing a new one to control a clock. 0 = elect immediately

        default
            15

    ntpengine:enabled [BOOLEAN]

        usage
            Enable NTPd integration

        default
            N

    ntpengine:control_enabled [BOOLEAN]

        usage
            Enable control over local NTPd daemon

        default
            N

    ntpengine:check_interval [INT: 5 .. 600]

        usage
            NTP control check interval in seconds

        default
            15

    ntpengine:key_id [INT: 0 .. 65535]

        usage
            NTP key number - must be configured as a trusted control key in ntp.conf, and be non-zero for the ntpengine:control_enabled setting to take effect.

        default
            0

    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]

BUGS
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/

SEE ALSO
ptpd2(8)

AUTHORS

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