Configuring PTP¶
Arista best practices are used, simplifying configuration of several global and interface-specific PTP settings:
- PTP can be enabled on various levels of the AVD configuration:
- fabric level
- per node type
- per node
- Only when explicitly enabled, will the following global PTP settings take effect:
- PTP mode boundary is used by default.
- One of three different PTP profiles can be used:
- AES67
- SMPTE2059-2
-
AES67-R16-2016 (used by default if no profile is specified)
The profile will apply PTP parameters for the following interfaces: - All routed interfaces - Individual PTP-enabled interfaces for connected endpoints
- Defaults used when PTP is enabled:
- All interfaces between leaf and spine switches participate in the Best Master Clock Algorithm (BMCA).
- All interfaces used for endpoints with ptp specifically enabled use
ptp role master
. - PTP priority 1 and priority 2 are automatically set based on the node_type and switch_id.
- PTP Clock Identity is automatically set based on a prefix (00:1C:73 by default) + PTP priority 1 and priority 2.
Enabling PTP¶
PTP must be specifically enabled:
-
on the fabric level, for example FABRIC.yml
-
per node type, for example for all spine nodes in SPINES.yml
-
per node for a specific node/device inside a node_group, for example for a specific leaf in LEAFS.yml
Please note: If present, you need to remove the legacy PTP notation shown below, for example for all spine nodes. If this is not removed, the PTP profile-specific interface configuration will not be applied to the interfaces between leaf and spine switches.
Fabric wide PTP settings¶
Common PTP settings can be specified for the entire topology to greatly simplify the configuration of PTP:
Variable | Type | Required | Default | Value Restrictions | Description |
---|---|---|---|---|---|
ptp | Dictionary | ||||
enabled | Boolean | ||||
profile | String | aes67-r16-2016 |
Valid Values: - aes67 - smpte2059-2 - aes67-r16-2016 |
||
domain | Integer | Min: 0 Max: 255 |
|||
auto_clock_identity | Boolean | True |
|||
ptp_profiles | List, items: Dictionary | See (+) on YAML tab | |||
- profile | String | PTP profile. | |||
announce | Dictionary | PTP announce interval. | |||
interval | Integer | Min: -7 Max: 4 |
|||
timeout | Integer | Min: 2 Max: 255 |
|||
delay_req | Integer | Min: -7 Max: 8 |
|||
sync_message | Dictionary | PTP sync message interval. | |||
interval | Integer | Min: -7 Max: 3 |
|||
transport | String | Valid Values: - ipv4 |
ptp:
enabled: <bool>
profile: <str; "aes67" | "smpte2059-2" | "aes67-r16-2016"; default="aes67-r16-2016">
domain: <int; 0-255>
auto_clock_identity: <bool; default=True>
ptp_profiles: # (1)!
# PTP profile.
- profile: <str>
# PTP announce interval.
announce:
interval: <int; -7-4>
timeout: <int; 2-255>
delay_req: <int; -7-8>
# PTP sync message interval.
sync_message:
interval: <int; -7-3>
transport: <str; "ipv4">
-
Default Value
ptp_profiles: - announce: interval: 0 timeout: 3 delay_req: -3 profile: aes67-r16-2016 sync_message: interval: -3 transport: ipv4 - announce: interval: -2 timeout: 3 delay_req: -4 profile: smpte2059-2 sync_message: interval: -4 transport: ipv4 - announce: interval: 2 timeout: 3 delay_req: 0 profile: aes67 sync_message: interval: 0 transport: ipv4
These settings can also be defined on a more specific group_vars level, if the network design requires this.
PTP Profiles¶
Based on the PTP profile selection the following parameters are applied to all interfaces between spine and leaf switches:
profile: aes67
is the slow PTP profile setting the following interface parameters:
- ptp enable
- ptp sync-message interval 0 (1 message every second)
- ptp announce interval 2 (1 message every 4th second)
- ptp transport ipv4
- ptp announce timeout 3
- ptp delay-req interval 0 (1 message every second)
profile: smpte2059-2
is the fast PTP profile setting the following interface parameters:
- ptp enable
- ptp sync-message interval -4 (16 messages every second)
- ptp announce interval -2 (4 messages every second)
- ptp transport ipv4
- ptp announce timeout 3
- ptp delay-req interval -4 (16 messages every second)
profile: aes67-r16-2016
is the default PTP profile, setting the following interface parameters:
- ptp enable
- ptp sync-message interval -3 (8 messages every second)
- ptp announce interval 0 (1 message every second)
- ptp transport ipv4
- ptp announce timeout 3
- ptp delay-req interval -3 (8 messages every second)
Group or device specific PTP settings¶
PTP Priorities¶
Automatic PTP priorities¶
Regardless of the PTP profile selection, the PTP priorities are automatically generated by default:
- Priority 1 is set automatically based on node_type.
- Priority 2 is set automatically based on node id. (modulus 256)
As shown in the table below, PTP priority 1 is defined by default, based on the node_type setting, which currently is either spine
or l3leaf
.
Spine switches will have a PTP priority 1 of 20
and leaf switches will have a PTP priority 1 of 30
. This supports the recommended Amber/Blue topologies where PTP GrandMasters are connected to the spine switches directly.
All other node_types will have a default PTP priority 1 of 127
to ensure they don’t win the BMCA by accident.
Node_Type | Priority 1 | Priority 2 |
---|---|---|
spine | 20 | (node_id modulus 256) |
l3leaf | 30 | (node_id modulus 256) |
anything else | 127 | (node_id modulus 256) |
For leaf switches connecting to a PTP GrandMaster we recommend to manually set PTP priority 1 lower than the other leaf switches, for example to “10” as shown below:
Alternatively the default node_type_keys
can be overridden to add a ptp_leaf
or similar node type with default_ptp_priority1: 10
.
Manually setting PTP priorities¶
The automatic PTP priorities can be manually overridden if required, for example for leaf1:
l3leaf:
node_groups:
- group: leaf1
nodes:
- name: leaf1
ptp:
enabled: true
priority1: < 0-255 | default -> automatically set based on node_type >
priority2: < 0-255 | default -> (node_id modulus 256) >
PTP Clock Identity¶
Setting PTP Clock Identity automatically¶
By default PTP clock identity is generated and set automatically. The clock identity will consist of the following:
- a prefix which is “00:1C:73” by default
- PTP priority 1 as HEX
- “:00:”
- PTP priority 2 as HEX
This means, that for a node with PTP priority 1 = 30 and PTP priority 2 = 2, the PTP clock identity will automatically be set to: 00:1C:73:1e:00:01
If you prefer to have PTP clock identity be the system MAC-address of the switch, which is the default EOS behaviour, simply set auto_clock_identity: false on one or more of the levels shown below:
-
on the fabric level, for example FABRIC.yml
-
per node type, for example for all spine nodes in SPINES.yml
-
per node for a specific node/device inside a node_group, for example for a specific leaf in LEAFS.yml
The most specific setting takes precedence. By default auto_clock_identity is enabled on the fabric level and can thus be disabled for one or more node types, or for one individual node. This effect can also be inverted, by disabling it on the fabric level and enabling it for one or more node types, or for one individual node.
PTP Clock Identity prefix¶
By default the 3-byte prefix for auto_clock_identity is 00:1C:73
, but this can be overridden if auto_clock_identity
is set to true
(which is the default).
Please note: Remember to use double-quotes around the value, as otherwise it will be not be rendered correctly.
For example for all spine nodes:
Setting PTP Clock Identity manually¶
If the auto generation of PTP clock_identity and the EOS system MAC-address of the switch is not what you want, the clock_identity value can be manually set on various levels of the configuration:
-
For example per node type, in this case for all spine nodes in SPINES.yml
Please note: Remember to use double-quotes around the value, as otherwise it will be not be rendered correctly.
Enable PTP unicast forwarding¶
With this feature enabled, multicast PTP packets will continue to be sent to the control plane, but unicast PTP packets will be hardware forwarded through the data plane. This feature enables the use of protocols such as Meinbergs NetSync to monitor downstream PTP slaves in the network without having the PTP packets dropped by Arista Switches acting as boundary clocks.
-
For example per node type, in this case for all spine nodes in SPINES.yml
PTP Source IP address¶
By default in EOS, PTP packets are sourced with an IP address from the routed port or from the relevant SVI, which is the recommended behaviour. This can be set manually if required, for example, to a value of 10.1.2.3
:
PTP Time-To-Live (TTL)¶
By default in EOS, PTP packets are sent with a TTL of 1. This is perfectly acceptable when using the recommended topology with routed interfaces or VLANs with a local SVI, but can be overridden and set manually, for example to a value of 64
:
PTP Monitor Threshold configuration¶
PTP monitor thresholds is enabled by default, when PTP is enabled. Default parameters are provided.
This will result in the following configuration:
ptp monitor threshold offset-from-master 250
ptp monitor threshold mean-path-delay 1500
ptp monitor sequence-id
ptp monitor threshold missing-message announce 3 sequence-ids
ptp monitor threshold missing-message delay-resp 3 sequence-ids
ptp monitor threshold missing-message follow-up 3 sequence-ids
ptp monitor threshold missing-message sync 3 sequence-ids
All parameters can be overridden if required:
Variable | Type | Required | Default | Value Restrictions | Description |
---|---|---|---|---|---|
<node_type_keys.key> | Dictionary | ||||
defaults | Dictionary | Define variables for all nodes of this type. | |||
ptp | Dictionary | ||||
enabled | Boolean | False |
|||
profile | String | aes67-r16-2016 |
Valid Values: - aes67 - smpte2059-2 - aes67-r16-2016 |
||
mlag | Boolean | False |
Configure PTP on the MLAG peer-link port-channel when PTP is enabled. By default PTP will not be configured on the MLAG peer-link port-channel. | ||
domain | Integer | 127 |
Min: 0 Max: 255 |
||
priority1 | Integer | Min: 0 Max: 255 |
default -> automatically set based on node_type. |
||
priority2 | Integer | Min: 0 Max: 255 |
default -> (node_id modulus 256). |
||
auto_clock_identity | Boolean | True |
If you prefer to have PTP clock identity be the system MAC-address of the switch, which is the default EOS behaviour, simply disable the automatic PTP clock identity. default -> (clock_identity_prefix = 00:1C:73 (default)) + (PTP priority 1 as HEX) + “:00:” + (PTP priority 2 as HEX). |
||
clock_identity_prefix | String | PTP clock idetentiy 3-byte prefix. i.e. “01:02:03”. By default the 3-byte prefix is “00:1C:73”. This can be overridden if auto_clock_identity is set to true (which is the default). |
|||
clock_identity | String | Set PTP clock identity manually. 6-byte value i.e. “01:02:03:04:05:06”. |
|||
source_ip | String | By default in EOS, PTP packets are sourced with an IP address from the routed port or from the relevant SVI, which is the recommended behaviour. This can be set manually if required, for example, to a value of “10.1.2.3”. |
|||
mode | String | boundary |
Valid Values: - boundary |
||
mode_one_step | Boolean | False |
|||
ttl | Integer | ||||
forward_unicast | Boolean | False |
Enable PTP unicast forwarding. |
||
dscp | Dictionary | ||||
general_messages | Integer | ||||
event_messages | Integer | ||||
monitor | Dictionary | ||||
enabled | Boolean | True |
|||
threshold | Dictionary | ||||
offset_from_master | Integer | 250 |
Min: 0 Max: 1000000000 |
||
mean_path_delay | Integer | 1500 |
Min: 0 Max: 1000000000 |
||
drop | Dictionary | ||||
offset_from_master | Integer | Min: 0 Max: 1000000000 |
|||
mean_path_delay | Integer | Min: 0 Max: 1000000000 |
|||
missing_message | Dictionary | ||||
intervals | Dictionary | ||||
announce | Integer | Min: 2 Max: 255 |
|||
follow_up | Integer | Min: 2 Max: 255 |
|||
sync | Integer | Min: 2 Max: 255 |
|||
sequence_ids | Dictionary | ||||
enabled | Boolean | True |
|||
announce | Integer | 3 |
Min: 2 Max: 255 |
||
delay_resp | Integer | 3 |
Min: 2 Max: 255 |
||
follow_up | Integer | 3 |
Min: 2 Max: 255 |
||
sync | Integer | 3 |
Min: 2 Max: 255 |
||
node_groups | List, items: Dictionary | Define variables related to all nodes part of this group. | |||
- group | String | Required, Unique | The Node Group Name is used for MLAG domain unless set with ‘mlag_domain_id’. The Node Group Name is also used for peer description on downstream switches’ uplinks. |
||
nodes | List, items: Dictionary | Define variables per node. | |||
- name | String | Required, Unique | The Node Name is used as “hostname”. | ||
ptp | Dictionary | ||||
enabled | Boolean | False |
|||
profile | String | aes67-r16-2016 |
Valid Values: - aes67 - smpte2059-2 - aes67-r16-2016 |
||
mlag | Boolean | False |
Configure PTP on the MLAG peer-link port-channel when PTP is enabled. By default PTP will not be configured on the MLAG peer-link port-channel. | ||
domain | Integer | 127 |
Min: 0 Max: 255 |
||
priority1 | Integer | Min: 0 Max: 255 |
default -> automatically set based on node_type. |
||
priority2 | Integer | Min: 0 Max: 255 |
default -> (node_id modulus 256). |
||
auto_clock_identity | Boolean | True |
If you prefer to have PTP clock identity be the system MAC-address of the switch, which is the default EOS behaviour, simply disable the automatic PTP clock identity. default -> (clock_identity_prefix = 00:1C:73 (default)) + (PTP priority 1 as HEX) + “:00:” + (PTP priority 2 as HEX). |
||
clock_identity_prefix | String | PTP clock idetentiy 3-byte prefix. i.e. “01:02:03”. By default the 3-byte prefix is “00:1C:73”. This can be overridden if auto_clock_identity is set to true (which is the default). |
|||
clock_identity | String | Set PTP clock identity manually. 6-byte value i.e. “01:02:03:04:05:06”. |
|||
source_ip | String | By default in EOS, PTP packets are sourced with an IP address from the routed port or from the relevant SVI, which is the recommended behaviour. This can be set manually if required, for example, to a value of “10.1.2.3”. |
|||
mode | String | boundary |
Valid Values: - boundary |
||
mode_one_step | Boolean | False |
|||
ttl | Integer | ||||
forward_unicast | Boolean | False |
Enable PTP unicast forwarding. |
||
dscp | Dictionary | ||||
general_messages | Integer | ||||
event_messages | Integer | ||||
monitor | Dictionary | ||||
enabled | Boolean | True |
|||
threshold | Dictionary | ||||
offset_from_master | Integer | 250 |
Min: 0 Max: 1000000000 |
||
mean_path_delay | Integer | 1500 |
Min: 0 Max: 1000000000 |
||
drop | Dictionary | ||||
offset_from_master | Integer | Min: 0 Max: 1000000000 |
|||
mean_path_delay | Integer | Min: 0 Max: 1000000000 |
|||
missing_message | Dictionary | ||||
intervals | Dictionary | ||||
announce | Integer | Min: 2 Max: 255 |
|||
follow_up | Integer | Min: 2 Max: 255 |
|||
sync | Integer | Min: 2 Max: 255 |
|||
sequence_ids | Dictionary | ||||
enabled | Boolean | True |
|||
announce | Integer | 3 |
Min: 2 Max: 255 |
||
delay_resp | Integer | 3 |
Min: 2 Max: 255 |
||
follow_up | Integer | 3 |
Min: 2 Max: 255 |
||
sync | Integer | 3 |
Min: 2 Max: 255 |
||
ptp | Dictionary | ||||
enabled | Boolean | False |
|||
profile | String | aes67-r16-2016 |
Valid Values: - aes67 - smpte2059-2 - aes67-r16-2016 |
||
mlag | Boolean | False |
Configure PTP on the MLAG peer-link port-channel when PTP is enabled. By default PTP will not be configured on the MLAG peer-link port-channel. | ||
domain | Integer | 127 |
Min: 0 Max: 255 |
||
priority1 | Integer | Min: 0 Max: 255 |
default -> automatically set based on node_type. |
||
priority2 | Integer | Min: 0 Max: 255 |
default -> (node_id modulus 256). |
||
auto_clock_identity | Boolean | True |
If you prefer to have PTP clock identity be the system MAC-address of the switch, which is the default EOS behaviour, simply disable the automatic PTP clock identity. default -> (clock_identity_prefix = 00:1C:73 (default)) + (PTP priority 1 as HEX) + “:00:” + (PTP priority 2 as HEX). |
||
clock_identity_prefix | String | PTP clock idetentiy 3-byte prefix. i.e. “01:02:03”. By default the 3-byte prefix is “00:1C:73”. This can be overridden if auto_clock_identity is set to true (which is the default). |
|||
clock_identity | String | Set PTP clock identity manually. 6-byte value i.e. “01:02:03:04:05:06”. |
|||
source_ip | String | By default in EOS, PTP packets are sourced with an IP address from the routed port or from the relevant SVI, which is the recommended behaviour. This can be set manually if required, for example, to a value of “10.1.2.3”. |
|||
mode | String | boundary |
Valid Values: - boundary |
||
mode_one_step | Boolean | False |
|||
ttl | Integer | ||||
forward_unicast | Boolean | False |
Enable PTP unicast forwarding. |
||
dscp | Dictionary | ||||
general_messages | Integer | ||||
event_messages | Integer | ||||
monitor | Dictionary | ||||
enabled | Boolean | True |
|||
threshold | Dictionary | ||||
offset_from_master | Integer | 250 |
Min: 0 Max: 1000000000 |
||
mean_path_delay | Integer | 1500 |
Min: 0 Max: 1000000000 |
||
drop | Dictionary | ||||
offset_from_master | Integer | Min: 0 Max: 1000000000 |
|||
mean_path_delay | Integer | Min: 0 Max: 1000000000 |
|||
missing_message | Dictionary | ||||
intervals | Dictionary | ||||
announce | Integer | Min: 2 Max: 255 |
|||
follow_up | Integer | Min: 2 Max: 255 |
|||
sync | Integer | Min: 2 Max: 255 |
|||
sequence_ids | Dictionary | ||||
enabled | Boolean | True |
|||
announce | Integer | 3 |
Min: 2 Max: 255 |
||
delay_resp | Integer | 3 |
Min: 2 Max: 255 |
||
follow_up | Integer | 3 |
Min: 2 Max: 255 |
||
sync | Integer | 3 |
Min: 2 Max: 255 |
||
nodes | List, items: Dictionary | Define variables per node. | |||
- name | String | Required, Unique | The Node Name is used as “hostname”. | ||
ptp | Dictionary | ||||
enabled | Boolean | False |
|||
profile | String | aes67-r16-2016 |
Valid Values: - aes67 - smpte2059-2 - aes67-r16-2016 |
||
mlag | Boolean | False |
Configure PTP on the MLAG peer-link port-channel when PTP is enabled. By default PTP will not be configured on the MLAG peer-link port-channel. | ||
domain | Integer | 127 |
Min: 0 Max: 255 |
||
priority1 | Integer | Min: 0 Max: 255 |
default -> automatically set based on node_type. |
||
priority2 | Integer | Min: 0 Max: 255 |
default -> (node_id modulus 256). |
||
auto_clock_identity | Boolean | True |
If you prefer to have PTP clock identity be the system MAC-address of the switch, which is the default EOS behaviour, simply disable the automatic PTP clock identity. default -> (clock_identity_prefix = 00:1C:73 (default)) + (PTP priority 1 as HEX) + “:00:” + (PTP priority 2 as HEX). |
||
clock_identity_prefix | String | PTP clock idetentiy 3-byte prefix. i.e. “01:02:03”. By default the 3-byte prefix is “00:1C:73”. This can be overridden if auto_clock_identity is set to true (which is the default). |
|||
clock_identity | String | Set PTP clock identity manually. 6-byte value i.e. “01:02:03:04:05:06”. |
|||
source_ip | String | By default in EOS, PTP packets are sourced with an IP address from the routed port or from the relevant SVI, which is the recommended behaviour. This can be set manually if required, for example, to a value of “10.1.2.3”. |
|||
mode | String | boundary |
Valid Values: - boundary |
||
mode_one_step | Boolean | False |
|||
ttl | Integer | ||||
forward_unicast | Boolean | False |
Enable PTP unicast forwarding. |
||
dscp | Dictionary | ||||
general_messages | Integer | ||||
event_messages | Integer | ||||
monitor | Dictionary | ||||
enabled | Boolean | True |
|||
threshold | Dictionary | ||||
offset_from_master | Integer | 250 |
Min: 0 Max: 1000000000 |
||
mean_path_delay | Integer | 1500 |
Min: 0 Max: 1000000000 |
||
drop | Dictionary | ||||
offset_from_master | Integer | Min: 0 Max: 1000000000 |
|||
mean_path_delay | Integer | Min: 0 Max: 1000000000 |
|||
missing_message | Dictionary | ||||
intervals | Dictionary | ||||
announce | Integer | Min: 2 Max: 255 |
|||
follow_up | Integer | Min: 2 Max: 255 |
|||
sync | Integer | Min: 2 Max: 255 |
|||
sequence_ids | Dictionary | ||||
enabled | Boolean | True |
|||
announce | Integer | 3 |
Min: 2 Max: 255 |
||
delay_resp | Integer | 3 |
Min: 2 Max: 255 |
||
follow_up | Integer | 3 |
Min: 2 Max: 255 |
||
sync | Integer | 3 |
Min: 2 Max: 255 |
<node_type_keys.key>:
# Define variables for all nodes of this type.
defaults:
ptp:
enabled: <bool; default=False>
profile: <str; "aes67" | "smpte2059-2" | "aes67-r16-2016"; default="aes67-r16-2016">
# Configure PTP on the MLAG peer-link port-channel when PTP is enabled. By default PTP will not be configured on the MLAG peer-link port-channel.
mlag: <bool; default=False>
domain: <int; 0-255; default=127>
# default -> automatically set based on node_type.
priority1: <int; 0-255>
# default -> (node_id modulus 256).
priority2: <int; 0-255>
# If you prefer to have PTP clock identity be the system MAC-address of the switch, which is the default EOS behaviour, simply disable the automatic PTP clock identity.
# default -> (clock_identity_prefix = 00:1C:73 (default)) + (PTP priority 1 as HEX) + ":00:" + (PTP priority 2 as HEX).
auto_clock_identity: <bool; default=True>
# PTP clock idetentiy 3-byte prefix. i.e. "01:02:03".
# By default the 3-byte prefix is "00:1C:73".
# This can be overridden if auto_clock_identity is set to true (which is the default).
clock_identity_prefix: <str>
# Set PTP clock identity manually. 6-byte value i.e. "01:02:03:04:05:06".
clock_identity: <str>
# By default in EOS, PTP packets are sourced with an IP address from the routed port or from the relevant SVI, which is the recommended behaviour.
# This can be set manually if required, for example, to a value of "10.1.2.3".
source_ip: <str>
mode: <str; "boundary"; default="boundary">
mode_one_step: <bool; default=False>
ttl: <int>
# Enable PTP unicast forwarding.
forward_unicast: <bool; default=False>
dscp:
general_messages: <int>
event_messages: <int>
monitor:
enabled: <bool; default=True>
threshold:
offset_from_master: <int; 0-1000000000; default=250>
mean_path_delay: <int; 0-1000000000; default=1500>
drop:
offset_from_master: <int; 0-1000000000>
mean_path_delay: <int; 0-1000000000>
missing_message:
intervals:
announce: <int; 2-255>
follow_up: <int; 2-255>
sync: <int; 2-255>
sequence_ids:
enabled: <bool; default=True>
announce: <int; 2-255; default=3>
delay_resp: <int; 2-255; default=3>
follow_up: <int; 2-255; default=3>
sync: <int; 2-255; default=3>
# Define variables related to all nodes part of this group.
node_groups:
# The Node Group Name is used for MLAG domain unless set with 'mlag_domain_id'.
# The Node Group Name is also used for peer description on downstream switches' uplinks.
- group: <str; required; unique>
# Define variables per node.
nodes:
# The Node Name is used as "hostname".
- name: <str; required; unique>
ptp:
enabled: <bool; default=False>
profile: <str; "aes67" | "smpte2059-2" | "aes67-r16-2016"; default="aes67-r16-2016">
# Configure PTP on the MLAG peer-link port-channel when PTP is enabled. By default PTP will not be configured on the MLAG peer-link port-channel.
mlag: <bool; default=False>
domain: <int; 0-255; default=127>
# default -> automatically set based on node_type.
priority1: <int; 0-255>
# default -> (node_id modulus 256).
priority2: <int; 0-255>
# If you prefer to have PTP clock identity be the system MAC-address of the switch, which is the default EOS behaviour, simply disable the automatic PTP clock identity.
# default -> (clock_identity_prefix = 00:1C:73 (default)) + (PTP priority 1 as HEX) + ":00:" + (PTP priority 2 as HEX).
auto_clock_identity: <bool; default=True>
# PTP clock idetentiy 3-byte prefix. i.e. "01:02:03".
# By default the 3-byte prefix is "00:1C:73".
# This can be overridden if auto_clock_identity is set to true (which is the default).
clock_identity_prefix: <str>
# Set PTP clock identity manually. 6-byte value i.e. "01:02:03:04:05:06".
clock_identity: <str>
# By default in EOS, PTP packets are sourced with an IP address from the routed port or from the relevant SVI, which is the recommended behaviour.
# This can be set manually if required, for example, to a value of "10.1.2.3".
source_ip: <str>
mode: <str; "boundary"; default="boundary">
mode_one_step: <bool; default=False>
ttl: <int>
# Enable PTP unicast forwarding.
forward_unicast: <bool; default=False>
dscp:
general_messages: <int>
event_messages: <int>
monitor:
enabled: <bool; default=True>
threshold:
offset_from_master: <int; 0-1000000000; default=250>
mean_path_delay: <int; 0-1000000000; default=1500>
drop:
offset_from_master: <int; 0-1000000000>
mean_path_delay: <int; 0-1000000000>
missing_message:
intervals:
announce: <int; 2-255>
follow_up: <int; 2-255>
sync: <int; 2-255>
sequence_ids:
enabled: <bool; default=True>
announce: <int; 2-255; default=3>
delay_resp: <int; 2-255; default=3>
follow_up: <int; 2-255; default=3>
sync: <int; 2-255; default=3>
ptp:
enabled: <bool; default=False>
profile: <str; "aes67" | "smpte2059-2" | "aes67-r16-2016"; default="aes67-r16-2016">
# Configure PTP on the MLAG peer-link port-channel when PTP is enabled. By default PTP will not be configured on the MLAG peer-link port-channel.
mlag: <bool; default=False>
domain: <int; 0-255; default=127>
# default -> automatically set based on node_type.
priority1: <int; 0-255>
# default -> (node_id modulus 256).
priority2: <int; 0-255>
# If you prefer to have PTP clock identity be the system MAC-address of the switch, which is the default EOS behaviour, simply disable the automatic PTP clock identity.
# default -> (clock_identity_prefix = 00:1C:73 (default)) + (PTP priority 1 as HEX) + ":00:" + (PTP priority 2 as HEX).
auto_clock_identity: <bool; default=True>
# PTP clock idetentiy 3-byte prefix. i.e. "01:02:03".
# By default the 3-byte prefix is "00:1C:73".
# This can be overridden if auto_clock_identity is set to true (which is the default).
clock_identity_prefix: <str>
# Set PTP clock identity manually. 6-byte value i.e. "01:02:03:04:05:06".
clock_identity: <str>
# By default in EOS, PTP packets are sourced with an IP address from the routed port or from the relevant SVI, which is the recommended behaviour.
# This can be set manually if required, for example, to a value of "10.1.2.3".
source_ip: <str>
mode: <str; "boundary"; default="boundary">
mode_one_step: <bool; default=False>
ttl: <int>
# Enable PTP unicast forwarding.
forward_unicast: <bool; default=False>
dscp:
general_messages: <int>
event_messages: <int>
monitor:
enabled: <bool; default=True>
threshold:
offset_from_master: <int; 0-1000000000; default=250>
mean_path_delay: <int; 0-1000000000; default=1500>
drop:
offset_from_master: <int; 0-1000000000>
mean_path_delay: <int; 0-1000000000>
missing_message:
intervals:
announce: <int; 2-255>
follow_up: <int; 2-255>
sync: <int; 2-255>
sequence_ids:
enabled: <bool; default=True>
announce: <int; 2-255; default=3>
delay_resp: <int; 2-255; default=3>
follow_up: <int; 2-255; default=3>
sync: <int; 2-255; default=3>
# Define variables per node.
nodes:
# The Node Name is used as "hostname".
- name: <str; required; unique>
ptp:
enabled: <bool; default=False>
profile: <str; "aes67" | "smpte2059-2" | "aes67-r16-2016"; default="aes67-r16-2016">
# Configure PTP on the MLAG peer-link port-channel when PTP is enabled. By default PTP will not be configured on the MLAG peer-link port-channel.
mlag: <bool; default=False>
domain: <int; 0-255; default=127>
# default -> automatically set based on node_type.
priority1: <int; 0-255>
# default -> (node_id modulus 256).
priority2: <int; 0-255>
# If you prefer to have PTP clock identity be the system MAC-address of the switch, which is the default EOS behaviour, simply disable the automatic PTP clock identity.
# default -> (clock_identity_prefix = 00:1C:73 (default)) + (PTP priority 1 as HEX) + ":00:" + (PTP priority 2 as HEX).
auto_clock_identity: <bool; default=True>
# PTP clock idetentiy 3-byte prefix. i.e. "01:02:03".
# By default the 3-byte prefix is "00:1C:73".
# This can be overridden if auto_clock_identity is set to true (which is the default).
clock_identity_prefix: <str>
# Set PTP clock identity manually. 6-byte value i.e. "01:02:03:04:05:06".
clock_identity: <str>
# By default in EOS, PTP packets are sourced with an IP address from the routed port or from the relevant SVI, which is the recommended behaviour.
# This can be set manually if required, for example, to a value of "10.1.2.3".
source_ip: <str>
mode: <str; "boundary"; default="boundary">
mode_one_step: <bool; default=False>
ttl: <int>
# Enable PTP unicast forwarding.
forward_unicast: <bool; default=False>
dscp:
general_messages: <int>
event_messages: <int>
monitor:
enabled: <bool; default=True>
threshold:
offset_from_master: <int; 0-1000000000; default=250>
mean_path_delay: <int; 0-1000000000; default=1500>
drop:
offset_from_master: <int; 0-1000000000>
mean_path_delay: <int; 0-1000000000>
missing_message:
intervals:
announce: <int; 2-255>
follow_up: <int; 2-255>
sync: <int; 2-255>
sequence_ids:
enabled: <bool; default=True>
announce: <int; 2-255; default=3>
delay_resp: <int; 2-255; default=3>
follow_up: <int; 2-255; default=3>
sync: <int; 2-255; default=3>
Setting PTP DSCP values¶
You can manually set the global DSCP values used for PTP messages if this is required:
l3leaf:
node_groups:
- group: leaf1
nodes:
- name: leaf1
ptp:
enabled: true
dscp:
general_messages: 46
event_messages: 46
PTP Settings for connected endpoints¶
By default all interfaces with connected endpoints do not have PTP enabled. It must be manually enabled. These are the default settings:
- The global PTP profile parameters will be applied to all connected endpoints where ptp is manually enabled.
ptp role master
is set to ensure control over the PTP topology.
servers:
- name: <server-name>
adapters:
- type: <type>
endpoint_ports: [ <server-ports> ]
switch_ports: [ <switchports> ]
switches: [ <switches> ]
ptp:
enabled: < false | true | default -> false >
endpoint_role: < follower | bmca | default -> follower >
profile: < aes67 | smpte2059-2 | aes67-r16-2016 | default -> aes67-r16-2016 >
Examples of connected endpoints¶
If you want to configure a routed interface with no IP address, for example to connect to a PTP Grandmaster, you can do as shown below. Please note in this example, the default PTP role has been overridden, making the interface Ethernet5 on blue-spine1 towards the Blue PTP Grandmaster run BMCA. Depending on the topology, this interface will end up in PTP mode Slave or Passive.
servers:
- name: Blue-Grandmaster
adapters:
- type: server
endpoint_ports: [ eth1 ]
switch_ports: [ Ethernet5 ]
switches: [ blue-spine1 ]
structured_config:
type: routed
ptp:
enabled: true
endpoint_role: bmca
If you want to use a different PTP profile on an interface towards a connected endpoint, it can be set manually:
servers:
- name: Endpoint-with-specific-PTP-profile
adapters:
- type: server
endpoint_ports: [ eth3 ]
switch_ports: [ Ethernet7 ]
switches: [ blue-leaf1 ]
ptp:
enabled: true
profile: smpte2059-2
Interfaces only used for PTP traffic¶
In a Media and Entertainment Layer 3 Leaf Spine network topology with redundant connectivity to either a single or dual PTP GrandMasters, you might require network connectivity between parts of the network only for PTP traffic.
Such switch-to-switch links must be defined on a fabric level, for example using two links between blue-leaf1 and blue-leaf2 as shown here:
core_interfaces:
p2p_links:
# Unique id
- id: 1
# Nodes where this link should be configured
nodes: [ blue-leaf1, blue-leaf2 ]
# Interfaces where this link should be configured | Required unless using port-channels
interfaces: [ Ethernet10, Ethernet10 ]
# Enable PTP
ptp:
enabled: true
# Do not add this interface to underlay routing protocol
include_in_underlay_protocol: false
- id: 2
nodes: [ blue-leaf1, blue-leaf2 ]
interfaces: [ Ethernet11, Ethernet11 ]
ptp:
enabled: true
include_in_underlay_protocol: false
This will result in the two interfaces being configured as routed interfaces without an IP address, with PTP enabled using the same PTP profile as defined globally:
! blue-leaf1
!
interface Ethernet10
description P2P_LINK_TO_blue-leaf2_Ethernet10
no shutdown
mtu 1500
no switchport
ptp enable
ptp sync-message interval -3
ptp announce interval 0
ptp transport ipv4
ptp announce timeout 3
ptp delay-req interval -3
!
interface Ethernet11
description P2P_LINK_TO_blue-leaf2_Ethernet11
no shutdown
mtu 1500
no switchport
ptp enable
ptp sync-message interval -3
ptp announce interval 0
ptp transport ipv4
ptp announce timeout 3
ptp delay-req interval -3
PTP Options not included¶
ptp delay-mechanism
parameters are not included.vlan
settings are not included.
However, these settings can be set using custom cli configuration if needed.