An augmented YANG Ethernet TSN network data model to interface Ethernet TSN network design tools (e.g. simulator, formal analysis) and hardware.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

4291 lines
156 KiB

module ieee1588-ptp {
yang-version 1.1;
namespace urn:ieee:std:1588:yang:ieee1588-ptp;
prefix "ptp";
import ietf-yang-types {
prefix yang;
}
import ietf-interfaces {
prefix if;
}
organization "IEEE 1588 Working Group";
contact
"Web: https://sagroups.ieee.org/1588/
E-mail: 1588officers@listserv.ieee.org
Postal: C/O IEEE 1588 Working Group Chair
IEEE Standards Association
445 Hoes Lane
Piscataway, NJ 08854
USA";
description
"This YANG module defines a data model for the configuration
and state of IEEE Std 1588 clocks. IEEE Std 1588 specifies the
Precision Time Protocol (PTP).
The nodes in this YANG module are designed for compatibility
with ietf-ptp.yang, the YANG data model for IEEE Std 1588-2008,
as specified in IETF RFC 8575.
NOTE regarding default value:
PTP's concept of 'initialization value' is analogous to YANG's
concept of a 'default value'. According to 8.1.3.4 of
IEEE Std 1588-2019, the initialization value for configuration
is specified in IEEE Std 1588, but that value can be overridden
by a PTP Profile specification, or by the product that
implements PTP. This makes it challenging to repeat the
specification of initialization value using a YANG 'default'
statement, because there is no straightforward mechanism for
a PTP Profile's (or product's) YANG module to import this
module and override its YANG default. Since a YANG management
client can read the default value from the operational
datastore, there is no need to re-specify the default in YANG.
The implementer of PTP refers to the relevant PTP
specifications for the default (not YANG modules).
Therefore, this YANG module avoids use of the YANG 'default'
statement.
NOTE regarding IEEE Std 1588 classification:
8.1.2 of IEEE Std 1588-2019 specifies a classification of
each data set member, which corresponds to a leaf in YANG.
The relationship between 1588 classification and
YANG 'config' (i.e., whether the leaf is read-write) is:
- 1588 static: The leaf is 'config false' (read-only).
- 1588 configurable: The leaf is 'config true', which is
the default value for a YANG leaf.
- 1588 dynamic: A judgement is made on a member-by-member
basis. If the member corresponds to the first item of
8.1.2.1.2 of IEEE Std 1588-2019 (i.e., value from protocol
only, such as log of protocol behavior), the YANG leaf
is 'config false'. Otherwise, the member's value can be
provided by an entity outside PTP (e.g., NETCONF or
RESTCONF client), and therefore the YANG leaf is
'config true'.";
revision 2022-08-30 {
description
"Initial revision.";
reference
"IEEE Std 1588e-XXXX, IEEE Standard for a Precision Clock
Synchronization Protocol for Networked Measurement and
Control Systems - MIB and YANG Data Models.";
}
// The year (XXXX) will be replaced during publication.
// This is the third balloted draft D0.3
// of the YANG module for amendment IEEE P1588e.
feature fault-log {
description
"Logging of faults detected in the PTP Instance.";
reference
"8.2.6 of IEEE Std 1588-2019";
}
feature unicast-negotiation {
description
"Unicast negotiation conducted through use of TLVs.";
reference
"16.1 of IEEE Std 1588-2019";
}
feature path-trace {
description
"Use of the PATH_TRACE TLV for tracing the route of
a PTP Announce message through the PTP Network.";
reference
"16.2 of IEEE Std 1588-2019";
}
feature alternate-timescale {
description
"The transmission of an ALTERNATE_TIME_OFFSET_INDICATOR TLV
entity from the Grandmaster PTP Instance may indicate the
offset of an alternate timescale from the timescale in
use in the domain.";
reference
"16.3 of IEEE Std 1588-2019";
}
feature holdover-upgrade {
description
"A holdover-upgradable PTP Instance can potentially
become the Grandmaster PTP Instance in the event the
previous Grandmaster PTP Instance is disconnected
or its characteristics degrade.";
reference
"16.4 of IEEE Std 1588-2019";
}
feature cmlds {
description
"The Common Mean Link Delay Service (CMLDS) is an optional
service that enables any PTP Port that would normally obtain
the value of a link's <meanLinkDelay> and <neighborRateRatio>
using the peer-to-peer method to instead obtain these
values from this optional service. The CMLDS service is
available to all PTP Instances communicating with a specific
transport mechanism, over the physical link between two PTP
Nodes.";
reference
"16.6 of IEEE Std 1588-2019";
}
feature timestamp-correction {
description
"Correction of timestamps using configurable management data.";
reference
"16.7 of IEEE Std 1588-2019";
}
feature asymmetry-correction {
description
"Calculation of the <delayAsymmetry> on a Direct PTP Link
between two PTP Instances connected using an applicable
bidirectional medium.";
reference
"16.8 of IEEE Std 1588-2019";
}
feature slave-monitoring {
description
"Mechanism for monitoring timing information in a PTP Port
in the slave state. The slave-monitoring feature specifies
TLVs that the Slave PTP Instance transmits with this
information, typically in a Signaling message.";
reference
"16.11 of IEEE Std 1588-2019";
}
feature enhanced-metrics {
description
"Mechanism for propagating estimates of various
inaccuracy components affecting the overall expected
PTP Instance Time accuracy. The metrics will be updated
and available for utilization at the various points along
the PTP timing chain: from the Grandmaster Instance, up to
a leaf PTP Instance in the synchronization tree. Each
PTP Instance along the timing path updates the
relevant metrics based on its contribution to the expected
degradation in PTP Instance Time accuracy due to various
induced timing error components.";
reference
"16.12 of IEEE Std 1588-2019";
}
feature grandmaster-cluster {
description
"Mechanism for faster selection of the Grandmaster PTP Instance
from the set of PTP Instances for which this option is both
implemented and enabled.";
reference
"17.2 of IEEE Std 1588-2019";
}
feature alternate-master {
description
"Mechanism for PTP Ports on a PTP Communication Path that
are not currently the MASTER port of that PTP Communication
Path to exchange PTP timing information with other PTP Ports
on the same PTP Communication Path, and for each of the other
PTP Ports to acquire knowledge of the characteristics
of the transmission path between itself and each alternate
master PTP Port.";
reference
"17.3 of IEEE Std 1588-2019";
}
feature unicast-discovery {
description
"Mechanism for PTP to be used over a network that does not
provide multicast. A PTP Instance is configured with the
addresses of PTP Ports of other PTP Instances with which
it should attempt to establish unicast communication.
The PTP Instance may request that these PTP Ports transmit
unicast Announce, Sync, and Delay_Resp messages to it.";
reference
"17.4 of IEEE Std 1588-2019";
}
feature acceptable-master {
description
"Mechanism that allows PTP Ports in the SLAVE state to be
configured to refuse to synchronize to PTP Instances not
on the acceptable master list.";
reference
"17.5 of IEEE Std 1588-2019";
}
feature external-port-config {
description
"External port configuration allows an external entity
(such as YANG-based remote management) to disable the
IEEE Std 1588 state machines that control each port's
state, including the BMCA. Each port's state is
then configured by the external entity.";
reference
"17.6 of IEEE Std 1588-2019";
}
feature performance-monitoring {
description
"Collection of performance monitoring logs that can be
read using management.";
reference
"Annex J of IEEE Std 1588-2019";
}
feature l1-sync {
description
"Layer 1-based synchronization performance
enhancement.";
reference
"Annex L of IEEE Std 1588-2019";
}
identity network-protocol {
description
"Enumeration for the protocol used by a PTP Instance to
transport PTP messages.
YANG identity is used so that a PTP Profile's YANG augment
can assign values, using numeric range F000 to FFFD hex.";
reference
"7.4.1 of IEEE Std 1588-2019";
}
identity udp-ipv4 {
base network-protocol;
description
"UDP on IPv4. Numeric value is 0001 hex.";
}
identity udp-ipv6 {
base network-protocol;
description
"UDP on IPv6. Numeric value is 0002 hex.";
}
identity ieee802-3 {
base network-protocol;
description
"IEEE Std 802.3 (Ethernet). Numeric value is 0003 hex.";
}
identity devicenet {
base network-protocol;
description
"DeviceNet. Numeric value is 0004 hex.";
}
identity controlnet {
base network-protocol;
description
"ControlNet. Numeric value is 0005 hex.";
}
identity profinet {
base network-protocol;
description
"PROFINET. Numeric value is 0006 hex.";
}
identity otn {
base network-protocol;
description
"Optical Transport Network (OTN). Numeric value
is 0007 hex.";
}
identity unknown {
base network-protocol;
description
"Unknown. Numeric value is FFFE hex.";
}
identity clock-class {
description
"Enumeration that denotes the traceability, synchronization
state and expected performance of the time or frequency
distributed by the Grandmaster PTP Instance.
IEEE Std 1588 does not specify a name for each clock-class,
but the names below are intended to be as intuitive as possible.
YANG identity is used so that a PTP Profile's YANG augment
can assign values using a numeric range designated for use by
alternate PTP Profiles.";
reference
"7.6.2.5 of IEEE Std 1588-2019";
}
identity cc-primary-sync {
base clock-class;
description
"A PTP Instance that is synchronized to a primary
reference time source. The timescale distributed shall be PTP.
Numeric value is 6 decimal.";
}
identity cc-primary-sync-lost {
base clock-class;
description
"A PTP Instance that has previously been designated
as clockClass 6, but that has lost the ability to
synchronize to a primary reference time source and is in
holdover mode and within holdover specifications. Or a PTP
Instance designated with clockClass 7 based on the Holdover
Upgrade option. The timescale distributed shall be PTP.
Numeric value is 7 decimal.";
}
identity cc-application-specific-sync {
base clock-class;
description
"A PTP Instance that is synchronized to an
application-specific source of time. The timescale
distributed shall be ARB.
Numeric value is 13 decimal.";
}
identity cc-application-specific-sync-lost {
base clock-class;
description
"A PTP Instance that has previously been designated as
clockClass 13, but that has lost the ability to synchronize
to an application-specific source of time and is in
holdover mode and within holdover specifications. Or a PTP
Instance designated with clockClass 14 based on the Holdover
Upgrade option. The timescale distributed shall be ARB.
Numeric value is 14 decimal.";
}
identity cc-primary-sync-alternative-a {
base clock-class;
description
"Degradation alternative A for a PTP Instance of
clockClass 7 that is not within holdover specification
or that is based on the specifications of the Holdover
Upgrade option.
Numeric value is 52 decimal.";
}
identity cc-application-specific-alternative-a {
base clock-class;
description
"Degradation alternative A for a PTP Instance of
clockClass 14 that is not within holdover specification or
that is based on the specifications of the Holdover Upgrade
option.
Numeric value is 58 decimal.";
}
identity cc-primary-sync-alternative-b {
base clock-class;
description
"Degradation alternative B for a PTP Instance of
clockClass 7 that is not within holdover specification
or that is based on the specifications of the Holdover
Upgrade option.
Numeric value is 187 decimal.";
}
identity cc-application-specific-alternative-b {
base clock-class;
description
"Degradation alternative B for a PTP Instance of
clockClass 14 that is not within holdover specification or
that is based on the specifications of the Holdover Upgrade
option.
Numeric value is 193 decimal.";
}
identity cc-default {
base clock-class;
description
"Default clockClass, used if none of the other
clockClass definitions apply.
Numeric value is 248 decimal.";
}
identity cc-slave-only {
base clock-class;
description
"A PTP Instance that is slave-only.
Numeric value is 255 decimal.";
}
identity clock-accuracy {
description
"Enumeration that indicates the expected accuracy of a
PTP Instance when it is the Grandmaster PTP Instance,
or in the event it becomes the Grandmaster PTP Instance.
The value shall be conservatively estimated by the PTP
Instance to a precision consistent with the value of the
selected clock-accuracy and of the next lower enumerated
value, for example, for clockAccuracy = 23 hex, between
250 ns and 1000 ns.
IEEE Std 1588 does not specify a name for each clock-accuracy,
but the names below are intended to be as intuitive as possible.
YANG identity is used so that a PTP Profile's YANG augment
can assign values, using numeric range 80 to FD hex.";
reference
"7.6.2.6 of IEEE Std 1588-2019";
}
identity ca-time-accurate-to-1000-fs {
base clock-accuracy;
description
"The time is accurate to within 1 ps (1000 fs).
Numeric value is 17 hex.";
}
identity ca-time-accurate-to-2500-fs {
base clock-accuracy;
description
"The time is accurate to within 2.5 ps (2500 fs).
Numeric value is 18 hex.";
}
identity ca-time-accurate-to-10-ps {
base clock-accuracy;
description
"The time is accurate to within 10 ps.
Numeric value is 19 hex.";
}
identity ca-time-accurate-to-25ps {
base clock-accuracy;
description
"The time is accurate to within 25 ps.
Numeric value is 1A hex.";
}
identity ca-time-accurate-to-100-ps {
base clock-accuracy;
description
"The time is accurate to within 100 ps.
Numeric value is 1B hex.";
}
identity ca-time-accurate-to-250-ps {
base clock-accuracy;
description
"The time is accurate to within 250 ps.
Numeric value is 1C hex.";
}
identity ca-time-accurate-to-1000-ps {
base clock-accuracy;
description
"The time is accurate to within 1ns (1000 ps).
Numeric value is 1D hex.";
}
identity ca-time-accurate-to-2500-ps {
base clock-accuracy;
description
"The time is accurate to within 2.5 ns (2500 ps).
Numeric value is 1E hex.";
}
identity ca-time-accurate-to-10-ns {
base clock-accuracy;
description
"The time is accurate to within 10 ns.
Numeric value is 1F hex.";
}
identity ca-time-accurate-to-25-ns {
base clock-accuracy;
description
"The time is accurate to within 25 ns.
Numeric value is 20 hex.";
}
identity ca-time-accurate-to-100-ns {
base clock-accuracy;
description
"The time is accurate to within 100 ns.
Numeric value is 21 hex.";
}
identity ca-time-accurate-to-250-ns {
base clock-accuracy;
description
"The time is accurate to within 250 ns.
Numeric value is 22 hex.";
}
identity ca-time-accurate-to-1000-ns {
base clock-accuracy;
description
"The time is accurate to within 1 us (1000 ns).
Numeric value is 23 hex.";
}
identity ca-time-accurate-to-2500-ns {
base clock-accuracy;
description
"The time is accurate to within 2.5 us (2500 ns).
Numeric value is 24 hex.";
}
identity ca-time-accurate-to-10-us {
base clock-accuracy;
description
"The time is accurate to within 10 us.
Numeric value is 25 hex.";
}
identity ca-time-accurate-to-25-us {
base clock-accuracy;
description
"The time is accurate to within 25 us.
Numeric value is 26 hex.";
}
identity ca-time-accurate-to-100-us {
base clock-accuracy;
description
"The time is accurate to within 100 us.
Numeric value is 27 hex.";
}
identity ca-time-accurate-to-250-us {
base clock-accuracy;
description
"The time is accurate to within 250 us.
Numeric value is 28 hex.";
}
identity ca-time-accurate-to-1000-us {
base clock-accuracy;
description
"The time is accurate to within 1 ms (1000 us).
Numeric value is 29 hex.";
}
identity ca-time-accurate-to-2500-us {
base clock-accuracy;
description
"The time is accurate to within 2.5 ms (2500 us).
Numeric value is 2A hex.";
}
identity ca-time-accurate-to-10-ms {
base clock-accuracy;
description
"The time is accurate to within 10 ms.
Numeric value is 2B hex.";
}
identity ca-time-accurate-to-25-ms {
base clock-accuracy;
description
"The time is accurate to within 25 ms.
Numeric value is 2Chex.";
}
identity ca-time-accurate-to-100-ms {
base clock-accuracy;
description
"The time is accurate to within 100 ms.
Numeric value is 2D hex.";
}
identity ca-time-accurate-to-250-ms {
base clock-accuracy;
description
"The time is accurate to within 250 ms.
Numeric value is 2E hex.";
}
identity ca-time-accurate-to-1-s {
base clock-accuracy;
description
"The time is accurate to within 1 s.
Numeric value is 2F hex.";
}
identity ca-time-accurate-to-10-s {
base clock-accuracy;
description
"The time is accurate to within 10 s.
Numeric value is 30 hex.";
}
identity ca-time-accurate-to-gt-10-s {
base clock-accuracy;
description
"The time accuracy exceeds 10 s.
Numeric value is 31 hex.";
}
identity time-source {
description
"Enumeration for the source of time used by the Grandmaster
PTP Instance.
YANG identity is used so that a PTP Profile's YANG augment
can assign values, using numeric range F0 to FE hex.";
reference
"7.6.2.8 of IEEE Std 1588-2019";
}
identity atomic-clock {
base time-source;
description
"Any PTP Instance that is based on an atomic resonance
for frequency, or a PTP Instance directly connected
to a device that is based on an atomic resonance for
frequency. Numeric value is 10 hex.";
}
identity gnss {
base time-source;
description
"Any PTP Instance synchronized to a satellite system that
distributes time and frequency. Numeric value is 20 hex.";
}
identity terrestrial-radio {
base time-source;
description
"Any PTP Instance synchronized via any of the radio
distribution systems that distribute time and frequency.
Numeric value is 30 hex.";
}
identity serial-time-code {
base time-source;
description
"Any PTP Instance synchronized via any of the serial
time code distribution systems that distribute time
and frequency, for example, IRIG-B.
Numeric value is 39 hex.";
}
identity ptp {
base time-source;
description
"Any PTP Instance synchronized to a PTP-based source
of time external to the domain. Numeric value is 40 hex.";
}
identity ntp {
base time-source;
description
"Any PTP Instance synchronized via NTP or Simple Network
Time Protocol (SNTP) servers that distribute time and
frequency. Numeric value is 50 hex.";
}
identity hand-set {
base time-source;
description
"Used for any PTP Instance whose time has been set by
means of a human interface based on observation of a
source of time to within the claimed clock accuracy.
Numeric value is 60 hex.";
}
identity other {
base time-source;
description
"Other source of time and/or frequency not covered by
other values. Numeric value is 90 hex.";
}
identity internal-oscillator {
base time-source;
description
"Any PTP Instance whose frequency is not based on atomic
resonance, and whose time is based on a free-running
oscillator with epoch determined in an arbitrary or
unknown manner. Numeric value is A0 hex.";
}
typedef time-interval {
type int64;
description
"Time interval, expressed in nanoseconds, multiplied by 2^16.
Positive or negative time intervals outside the maximum range
of this data type shall be encoded as the largest positive and
negative values of the data type, respectively.";
reference
"5.3.2 of IEEE Std 1588-2019";
}
typedef clock-identity {
type string {
pattern "[0-9A-F]{2}(-[0-9A-F]{2}){7}";
}
description
"Identifies unique entities within a PTP Network,
e.g. a PTP Instance or an entity of a common service.
The identity is an 8-octet array, constructed according
to specifications in IEEE Std 1588, using an
organization identifier from the IEEE Registration
Authority.
Each octet is represented in YANG as a pair of
hexadecimal characters, using uppercase for a letter.
Each octet in the array is separated by the dash
character.";
reference
"5.3.4 of IEEE Std 1588-2019
7.5.2.2 of IEEE Std 1588-2019";
}
typedef relative-difference {
type int64;
description
"Relative difference expressed as a dimensionless
fraction and multiplied by 2^62, with any
remaining fractional part truncated.";
reference
"5.3.11 of IEEE Std 1588-2019";
}
typedef instance-type {
type enumeration {
enum oc {
value 0;
description
"Ordinary Clock";
}
enum bc {
value 1;
description
"Boundary Clock";
}
enum p2p-tc {
value 2;
description
"Peer-to-peer Transparent Clock";
}
enum e2e-tc {
value 3;
description
"End-to-end Transparent Clock";
}
}
description
"Enumeration for the type of PTP Instance.
Values for this enumeration are specified by the IEEE 1588
standard exclusively.";
reference
"8.2.1.5.5 of IEEE Std 1588-2019";
}
typedef fault-severity {
type enumeration {
enum emergency {
value 0;
description
"Emergency: system is unusable";
}
enum alert {
value 1;
description
"Alert: immediate action needed";
}
enum critical {
value 2;
description
"Critical: critical conditions";
}
enum error {
value 3;
description
"Error: error conditions";
}
enum warning {
value 4;
description
"Warning: warning conditions";
}
enum notice {
value 5;
description
"Notice: normal but significant condition";
}
enum informational {
value 6;
description
"Informational: informational messages";
}
enum debug {
value 7;
description
"Debug: debug-level messages";
}
}
description
"Enumeration for the severity of a fault record.
Values for this enumeration are specified by the IEEE 1588
standard exclusively.";
reference
"8.2.6.3 of IEEE Std 1588-2019";
}
typedef port-state {
type enumeration {
enum initializing {
value 1;
description
"The PTP Port is initializing its data sets, hardware, and
communication facilities. The PTP Port shall not place any
PTP messages on its communication path.";
}
enum faulty {
value 2;
description
"The fault state of the protocol. Except for PTP management
messages that are a required response to a PTP message
received from the applicable management mechanism,
a PTP Port in this state shall not transmit any PTP related
messages. In a Boundary Clock, no activity on a faulty
PTP Port shall affect the other PTP Ports of the
PTP Instance. If fault activity on a PTP Port in this state
cannot be confined to the faulty PTP Port, then all
PTP Ports shall be in the faulty state.";
}
enum disabled {
value 3;
description
"The PTP Port is disabled. Except for PTP management
messages that are a required response to a PTP message
received from the applicable management mechanism,
a PTP Port in this state shall not transmit any PTP related
messages. In a Boundary Clock, no activity at the PTP Port
shall be allowed to affect the activity at any other
PTP Port of the Boundary Clock. A PTP Port in this state
shall discard all received PTP messages except for PTP
management messages.";
}
enum listening {
value 4;
description
"The PTP Port is waiting for the announce-receipt-timeout
to expire or to receive an Announce message from a
Master PTP Instance. The purpose of this state is to allow
orderly addition of PTP Instances to a domain
(i.e. to know if this PTP Port is truly a port of the
Grandmaster PTP Instance prior to taking that role).";
}
enum pre-master {
value 5;
description
"This port state provides an additional mechanism to
support more orderly reconfiguration of PTP Networks when
PTP Instances are added or deleted, PTP Instance
characteristics change, or connection topology changes.
In this state, a PTP Port behaves as it would if it were in
the master state except that it does not place certain
classes of PTP messages on the PTP Communication Path
associated with the PTP Port.";
}
enum master {
value 6;
description
"The PTP Port is the source of time on the
PTP Communication Path.";
}
enum passive {
value 7;
description
"The PTP Port is not the source of time on the
PTP Communication Path nor does it synchronize to a
Master Clock (receive time). The PTP Port can potentially
change to slave when PTP Instances are added or deleted,
PTP Instance characteristics change, or connection
topology changes.";
}
enum uncalibrated {
value 8;
description
"The PTP Port is anticipating a change to the slave state,
but it has not yet satisfied all requirements
(implementation or PTP Profile) necessary to ensure
complete synchronization. For example, an implementation
might require a minimum number of PTP Sync messages
in order to completely synchronize its servo algorithm.";
}
enum slave {
value 9;
description
"The PTP Port synchronizes to the PTP Port on the
PTP Communication Path that is in the master state
(i.e. receives time).";
}
}
description
"Enumeration for the state of the protocol engine associated
with the PTP Port. Values for this enumeration are specified
by the IEEE 1588 standard exclusively.";
reference
"8.2.15.3.1 of IEEE Std 1588-2019
9.2.5 of IEEE Std 1588-2019";
}
typedef delay-mechanism {
type enumeration {
enum e2e {
value 1;
description
"The PTP Port is configured to use the delay
request-response mechanism.";
}
enum p2p {
value 2;
description
"The PTP Port is configured to use the peer-to-peer
delay mechanism.";
}
enum no-mechanism {
value 254;
description
"The PTP Port does not implement the delay mechanism.
This value shall not be used except when the applicable
PTP Profile specifies either:
1) that the PTP Instance only supports frequency
transfer (syntonization) and that neither path delay
mechanism is to be used or
2) that the PTP Instance participates in time transfer,
but the system accuracy requirements are such that,
for a segment of the system path, delays can be neglected
allowing PTP Instances in that portion of the PTP Network
to use the no-mechanism value.";
}
enum common-p2p {
value 3;
description
"The PTP Port is configured to use the Common Mean Link
Delay Service option.";
}
enum special {
value 4;
description
"Special Ports do not use either delay mechanism.";
}
}
description
"Enumeration for the path delay measuring mechanism.
Values for this enumeration are specified by the IEEE 1588
standard exclusively.";
reference
"8.2.15.4.4 of IEEE Std 1588-2019";
}
typedef l1sync-state {
type enumeration {
enum disabled {
value 1;
description
"L1Sync is not enabled on this PTP Port,
or the event L1SYNC_RESET has occurred.";
}
enum idle {
value 2;
description
"L1Sync is enabled on this PTP Port. The PTP Port
sends messages with the L1_SYNC TLV. Initialization
occurs in this state.";
}
enum link-alive {
value 3;
description
"The PTP Port sends messages with the L1_SYNC TLV.
The PTP Port is receiving valid L1_SYNC TLV
from a peer PTP Port.";
}
enum config-match {
value 4;
description
"The PTP Port sends messages with the L1_SYNC TLV.
The PTP Port has a compatible configuration profile
when compared with its peer PTP Port configuration
profile received in the L1_SYNC TLV.";
}
enum l1-sync-up {
value 5;
description
"The PTP Port sends messages with the L1_SYNC TLV.
The relationship required by configuration is currently
in place. Synchronization enhancements are performed.";
}
}
description
"Enumeration for states of an L1Sync state machine associated
with an L1Sync port.
Values for this enumeration are specified by the IEEE 1588
standard exclusively.";
reference
"L.5.3.5 of IEEE Std 1588-2019
L.7.2 of IEEE Std 1588-2019";
}
grouping timestamp {
description
"The IEEE Std 1588 Timestamp type represents a
positive time with respect to the epoch
of PTP Instance Time.
This type is represented in YANG as a grouping,
with leafs seconds-field and nanoseconds-field.";
reference
"5.3.3 of IEEE Std 1588-2019
8.2.6.3 of IEEE Std 1588-2019";
leaf seconds-field {
type uint64 {
range "0..281474976710655";
}
description
"The seconds-field member is the integer portion
of the timestamp in units of seconds. Since the
IEEE 1588 type is UInteger48, only 48 bits
are represented in YANG.";
}
leaf nanoseconds-field {
type uint32;
description
"The nanoseconds-field member is the fractional
portion of the timestamp in units of nanoseconds.";
}
}
grouping port-identity {
description
"The IEEE Std 1588 PortIdentity type identifies a
PTP Port or Link Port.";
reference
"5.3.5 of IEEE Std 1588-2019";
leaf clock-identity {
type clock-identity;
description
"IEEE Std 1588 clockIdentity.";
}
leaf port-number {
type uint16;
description
"IEEE Std 1588 portNumber.
If portNumber is unavailable, the value 0 can
be used, or this leaf can be omitted from the
operational datastore.";
reference
"7.5.2.3 of IEEE Std 1588-2019";
}
}
grouping port-address {
description
"The IEEE Std 1588 PortAddress type represents the
protocol address of a PTP Port.";
reference
"5.3.6 of IEEE Std 1588-2019";
leaf network-protocol {
type identityref {
base network-protocol;
}
description
"Protocol used by a PTP Instance to transport
PTP messages.";
}
leaf address-length {
type uint16;
description
"Number of octets in address-field.";
}
leaf address-field {
type string {
pattern "[0-9A-F]{2}(-[0-9A-F]{2})*";
}
description
"The protocol address of a PTP Port in the format
defined by the mapping annex of the protocol as
identified by the network-protocol leaf.
The most significant octet of the address-field
is mapped into the octet of the address-field
member with index 0.
Each octet is represented in YANG as a pair of
hexadecimal characters, using uppercase for a letter.
Each octet in the array is separated by the dash
character.";
}
}
grouping clock-quality {
description
"Quality of a PTP Instance, which contains IEEE Std 1588
clockClass, clockAccuracy and offsetScaledLogVariance.
PTP Instances with better quality are more likely to
become the Grandmaster PTP Instance.";
reference
"5.3.7 of IEEE Std 1588-2019
8.2.1.3.1 of IEEE Std 1588-2019";
leaf clock-class {
type identityref {
base clock-class;
}
description
"The clockClass denotes the traceability of the time
or frequency distributed by the clock.";
reference
"7.6.2.5 of IEEE Std 1588-2019
8.2.1.3.1.2 of IEEE Std 1588-2019";
}
leaf clock-accuracy {
type identityref {
base clock-accuracy;
}
description
"The clockAccuracy indicates the accuracy of the clock
(Local Clock of the PTP Instance).";
reference
"7.6.2.6 of IEEE Std 1588-2019
8.2.1.3.1.3 of IEEE Std 1588-2019";
}
leaf offset-scaled-log-variance {
type uint16;
description
"The offsetScaledLogVariance indicates the stability of the
clock (Local Clock of the PTP Instance). It provides an
estimate of the variations of the clock from a linear timescale
when it is not synchronized to another clock using the protocol.";
reference
"7.6.2.7 of IEEE Std 1588-2019";
}
}
grouping fault-record {
description
"Record of a fault in the PTP Instance.
NOTE - IEEE Std 1588 specifies a member
faultRecordLength for this type, which is needed
for PTP Management Messages, but is not needed for
YANG management.";
reference
"5.3.10 of IEEE Std 1588-2019";
container time {
description
"Time the fault occurred as indicated by the Timestamping
Clock of the PTP Instance. A value of all 1's for the
fields in the timestamp shall indicate that the occurrence
time is not available.";
uses timestamp;
}
leaf severity {
type fault-severity;
description
"Severity of the fault.";
}
leaf name {
type string;
description
"Name for the fault, unique within the implementation.";
}
leaf value {
type string;
description
"Any value that may be associated with the fault that is
necessary for fault diagnosis.";
}
leaf description {
type string;
description
"Any supplementary description of the fault.";
}
}
grouping communication-capabilities {
description
"Multicast/unicast capabilities for a port
and message type.
These attributes report the values that are transmitted
by this PTP Instance to other PTP Instance(s) in the
network to indicate the multicast/unicast capabilities
for a port and message type. Therefore, the context is
protocol communication, and not YANG configuration.";
reference
"5.3.12 of IEEE Std 1588-2019
8.2.25 of IEEE Std 1588-2019
16.9.2 of IEEE Std 1588-2019";
leaf multicast-capable {
type boolean;
description
"True if the PTP Port is capable of transmitting
PTP messages using multicast communication,
otherwise it shall be false.";
}
leaf unicast-capable {
type boolean;
description
"True if the PTP Port is capable of transmitting
PTP messages using unicast communication,
otherwise it shall be false.";
}
leaf unicast-negotiation-capable {
type boolean;
description
"True if the PTP Port is capable negotiating unicast
communication using the unicast negotiation feature,
and unicast-negotiation-port-ds/enable is true,
otherwise the value of shall be false.";
}
leaf unicast-negotiation-required {
type boolean;
description
"True if the value of unicast-negotiation-capable is true
and the use of the unicast negotiation feature is
required by the implementation, otherwise the value
shall be false.";
}
}
grouping ptp-instance-performance-parameters {
description
"PTP Instance Performance Monitoring Parameters,
related to the PTP Port or Link Port in the
slave state.";
reference
"Table J.1 of IEEE Std 1588-2019";
leaf average-master-slave-delay {
type time-interval;
description
"Average of the MasterSlaveDelay for this interval.";
}
leaf minimum-master-slave-delay {
type time-interval;
description
"Minimum of the MasterSlaveDelay for this interval.";
}
leaf maximum-master-slave-delay {
type time-interval;
description
"Maximum of the MasterSlaveDelay for this interval.";
}
leaf stddev-master-slave-delay {
type time-interval;
description
"StdDev of the MasterSlaveDelay for this interval.";
}
leaf average-slave-master-delay {
type time-interval;
description
"Average of the SlaveMasterDelay for this interval.";
}
leaf minimum-slave-master-delay {
type time-interval;
description
"Minimum of the SlaveMasterDelay for this interval.";
}
leaf maximum-slave-master-delay {
type time-interval;
description
"Maximum of the SlaveMasterDelay for this interval.";
}
leaf stddev-slave-master-delay {
type time-interval;
description
"StdDev of the SlaveMasterDelay for this interval.";
}
leaf average-mean-path-delay {
type time-interval;
description
"Average of the <meanPathDelay> this interval.";
}
leaf minimum-mean-path-delay {
type time-interval;
description
"Minimum of the <meanPathDelay> for this interval.";
}
leaf maximum-mean-path-delay {
type time-interval;
description
"Maximum of the <meanPathDelay> for this interval.";
}
leaf stddev-mean-path-delay {
type time-interval;
description
"StdDev of the <meanPathDelay> for this interval.";
}
leaf average-offset-from-master {
type time-interval;
description
"Average of the <offsetFromMaster> for this interval.";
}
leaf minimum-offset-from-master {
type time-interval;
description
"Minimum of the <offsetFromMaster> for this interval.";
}
leaf maximum-offset-from-master {
type time-interval;
description
"Maximum of the <offsetFromMaster> for this interval.";
}
leaf stddev-offset-from-master {
type time-interval;
description
"StdDev of the <offsetFromMaster> for this interval.";
}
}
grouping ptp-port-performance-parameters-peer-delay {
description
"PTP Port Performance Monitoring Parameters,
related to the PTP Port or Link Port using the
peer-to-peer delay mechanism.";
reference
"Table J.2 of IEEE Std 1588-2019";
leaf average-mean-link-delay {
type time-interval;
description
"Average of the <meanLinkDelay> for this interval.";
}
leaf min-mean-link-delay {
type time-interval;
description
"Minimum of the <meanLinkDelay> for this interval.";
}
leaf max-mean-link-delay {
type time-interval;
description
"Maximum of the <meanLinkDelay> for this interval.";
}
leaf stddev-mean-link-delay {
type time-interval;
description
"StdDev of the <meanLinkDelay> for this interval.";
}
}
grouping additional-performance-parameters {
description
"Additional Performance Monitoring Parameters,
intended to complement ptp-instance-performance-parameters.";
reference
"Table J.3 of IEEE Std 1588-2019";
leaf announce-tx {
type yang:zero-based-counter32;
description
"Counter indicating the number of Announce
messages that have been transmitted for this
interval.";
}
leaf announce-rx {
type yang:zero-based-counter32;
description
"Counter indicating the number of Announce
messages from the current GM that have been
received for this interval.";
}
leaf announce-foreign-rx {
type yang:zero-based-counter32;
description
"Counter indicating the total number of Announce
messages from the foreign Masters that have been
received for this interval.";
}
leaf sync-tx {
type yang:zero-based-counter32;
description
"Counter indicating the number of Sync
messages that have been transmitted for this
interval.";
}
leaf sync-rx {
type yang:zero-based-counter32;
description
"Counter indicating the number of Sync
messages that have been received for this
interval.";
}
leaf follow-up-tx {
type yang:zero-based-counter32;
description
"Counter indicating the number of Follow_Up
messages that have been transmitted for this
interval.";
}
leaf follow-up-rx {
type yang:zero-based-counter32;
description
"Counter indicating the number of Follow_Up
messages that have been received for this
interval.";
}
leaf delay-req-tx {
type yang:zero-based-counter32;
description
"Counter indicating the number of Delay_Req
messages that have been transmitted for this
interval.";
}
leaf delay-req-rx {
type yang:zero-based-counter32;
description
"Counter indicating the number of Delay_Req
messages that have been received for this
interval.";
}
leaf delay-resp-tx {
type yang:zero-based-counter32;
description
"Counter indicating the number of Delay_Resp
messages that have been transmitted for this
interval.";
}
leaf delay-resp-rx {
type yang:zero-based-counter32;
description
"Counter indicating the number of Delay_Resp
messages that have been received for this
interval.";
}
leaf pdelay-req-tx {
type yang:zero-based-counter32;
description
"Counter indicating the number of Pdelay_Req
messages that have been transmitted for this
interval.";
}
leaf pdelay-req-rx {
type yang:zero-based-counter32;
description
"Counter indicating the number of Pdelay_Req
messages that have been received for this
interval.";
}
leaf pdelay-resp-tx {
type yang:zero-based-counter32;
description
"Counter indicating the number of Pdelay_Resp
messages that have been transmitted for this
interval.";
}
leaf pdelay-resp-rx {
type yang:zero-based-counter32;
description
"Counter indicating the number of Pdelay_Resp
messages that have been received for this
interval.";
}
leaf pdelay-resp-follow-up-tx {
type yang:zero-based-counter32;
description
"Counter indicating the number of
Pdelay_Resp_Follow_Up messages that have
been transmitted for this interval.";
}
leaf pdelay-resp-follow-up-rx {
type yang:zero-based-counter32;
description
"Counter indicating the number of
Pdelay_Resp_Follow_Up messages that have
been transmitted for this interval.";
}
}
grouping clock-performance-monitoring-data-record {
description
"The IEEE Std 1588 ClockPerformanceMonitoringDataRecord
type is used for PTP Instance performance monitoring
statistics.";
reference
"Table J.4.1 of IEEE Std 1588-2019";
leaf index {
type uint16;
description
"Index to each record in the list (0-99).";
}
leaf measurement-valid {
type boolean;
description
"The measurement-valid flag shall indicate the data
can be correctly interpreted. Validity is
implementation specific and may be defined in
a PTP Profile. If for some periods the data is not
valid for part of the data collection interval
(e.g. the clock is not locked), a specific
implementation can report the statistics only for
valid data and with measurement-valid true.
This flag applies to all parameters for a
given measurement period, including PTP Port
and Link Port related.";
}
leaf period-complete {
type boolean;
description
"The period-complete flag shall indicate that
measurements were performed during the entire
period (15-minute or 24-hour). For example,
if the PTP Instance is disabled for five minutes
of a 15-minute period, period-complete is false.
The period-complete flag is not related to the
validity of measurements that were performed.
This flag applies to all parameters for a
given measurement period, including PTP Port
and Link Port related.";
}
leaf pm-time {
type yang:timestamp;
description
"Time of the beginning of the measurement record.
This leaf's type is YANG timestamp, which is based
on system time (also known as local time). System
time is an unsigned integer in units of
10 milliseconds, using an epoch defined by the
implementation (typically time of boot-up).";
reference
"IETF RFC 6991";
}
uses ptp-instance-performance-parameters;
}
grouping port-performance-monitoring-peer-delay-data-record {
description
"The IEEE Std 1588 PortPerformanceMonitoringPeerDelayDataRecord
type is used for the PTP Port related performance monitoring
statistics for the peer-to-peer delay measurement mechanism.";
reference
"Table J.4.1 of IEEE Std 1588-2019";
leaf index {
type uint16;
description
"Index to each record in the list (0-99).";
}
leaf pm-time {
type yang:timestamp;
description
"Time of the beginning of the measurement record.
This leaf's type is YANG timestamp, which is based
on system time (also known as local time). System
time is an unsigned integer in units of
10 milliseconds, using an epoch defined by the
implementation (typically time of boot-up).";
reference
"RFC 6991";
}
uses ptp-port-performance-parameters-peer-delay;
}
grouping port-performance-monitoring-data-record {
description
"The IEEE Std 1588 PortPerformanceMonitoringDataRecord
type is used for additional PTP Port related performance
monitoring statistics.";
reference
"Table J.4.1 of IEEE Std 1588-2019";
leaf index {
type uint16;
description
"Index to each record in the list (0-99).";
}
leaf pm-time {
type yang:timestamp;
description
"Time of the beginning of the measurement record.
This leaf's type is YANG timestamp, which is based
on system time (also known as local time). System
time is an unsigned integer in units of
10 milliseconds, using an epoch defined by the
implementation (typically time of boot-up).";
reference
"RFC 6991";
}
uses additional-performance-parameters;
}
container ptp {
description
"Contains all YANG nodes for the PTP data sets.
This hierarchy can be augmented with YANG nodes
for a specific vendor or PTP Profile.";
container instances {
description
"YANG container that is used to get all PTP Instances.
YANG does not allow get of all elements in a YANG list,
so a YANG container wrapping the YANG list is provided for
that purpose. The naming convention uses plural for the
wrapping YANG container, and singular for the YANG list.";
list instance {
key "instance-index";
description
"List of one or more PTP Instances in the product (PTP Node).
Each PTP Instance represents a distinct instance of PTP
implementation (i.e. distinct Ordinary Clock, Boundary Clock,
or Transparent Clock), maintaining a distinct time.
PTP Instances may be created or deleted dynamically in
implementations that support dynamic create/delete.";
reference
"8.1.4.2 of IEEE Std 1588-2019";
leaf instance-index {
type uint32;
description
"The instance list is indexed using a number that is
unique per PTP Instance within the PTP Node, applicable
to the management context only (i.e. not used in PTP
messages). The domain-number of the PTP Instance is not
used as the key to instance-list, since it is possible
for a PTP Node to contain multiple PTP Instances using
the same domain-number.";
reference
"8.1.4.2 of IEEE Std 1588-2019";
}
container default-ds {
description
"The default data set of the PTP Instance.";
reference
"8.2.1 of IEEE Std 1588-2019";
leaf two-step-flag {
type boolean;
config false;
status deprecated;
description
"When set to true, the PTP Instance is two-step,
otherwise the PTP Instance is one-step.
This data set member is no longer used. However,
the twoStepFlag of the PTP common header is used.
One step or two step egress behavior is allowed to
be specified per PTP Port, or per PTP Instance.
Management of the one/two step egress behavior of
a PTP Port is not provided by this standard, but
can be specified as extensions to the data sets by a
PTP Profile or a product specification.";
reference
"8.2.1.2.1 of IEEE Std 1588-2019";
}
leaf clock-identity {
type clock-identity;
config false;
description
"The IEEE Std 1588 clockIdentity of the PTP Instance.";
reference
"8.2.1.2.2 of IEEE Std 1588-2019";
}
leaf number-ports {
type uint16;
config false;
description
"The number of PTP Ports on the PTP Instance.
For an Ordinary Clock, the value shall be one.";
reference
"8.2.1.2.3 of IEEE Std 1588-2019";
}
container clock-quality {
description
"The IEEE Std 1588 clockQuality of the PTP Instance.
PTP Instances with better quality are more likely to
become the Grandmaster PTP Instance.";
reference
"8.2.1.3.1 of IEEE Std 1588-2019";
uses clock-quality;
}
leaf priority1 {
type uint8;
description
"The IEEE Std 1588 priority1 of the PTP Instance.
Since priority1 is one of the first comparisons
performed by the Best Master Clock Algorithm (BMCA),
this leaf's configuration can be used to explicitly
select a Grandmaster PTP Instance.
Lower values take precedence.
The value of priority1 shall be configurable to any
value in the range 0 to 255, unless restricted by
limits established by the applicable PTP Profile.";
reference
"7.6.2.3 of IEEE Std 1588-2019
8.2.1.4.1 of IEEE Std 1588-2019";
}
leaf priority2 {
type uint8;
description
"The IEEE Std 1588 priority2 of the PTP Instance.
The priority2 member is compared by the Best Master
Clock Algorithm (BMCA) after priority1 and clockQuality.
Lower values take precedence.
The value of priority2 shall be configurable to any
value in the range 0 to 255, unless restricted by
limits established by the applicable PTP Profile.";
reference
"7.6.2.4 of IEEE Std 1588-2019
8.2.1.4.2 of IEEE Std 1588-2019";
}
leaf domain-number {
type uint8;
description
"The IEEE Std 1588 domainNumber of the PTP Instance.
A domain consists of one or more PTP Instances
communicating with each other as defined by the
protocol. A domain shall define the scope of PTP message
communication, state, operations, data sets, and
timescale. Therefore, each domain represents a distinct
time.
Within a PTP Network, a domain is identified by two
data set members: domainNumber and sdoId.
The domainNumber is the primary mechanism for end users
and system integrators to isolate the operation of a
PTP Instance from PTP messages used in other domains.
The value of the domainNumber shall be configurable
to values permitted in IEEE Std 1588, unless the
allowed values are further restricted by the applicable
PTP Profile.";
reference
"7.1 of IEEE Std 1588-2019
8.2.1.4.3 of IEEE Std 1588-2019";
}
leaf slave-only {
type boolean;
description
"The value of slave-only shall be true if the
PTP Instance is a slave-only PTP Instance
(false for non-slave-only).
The slave-only member can be true for Ordinary Clocks
only.
When slave-only is true, the PTP Instance implements
special behavior in the context of the state machines
that determine port-state.";
reference
"8.2.1.4.4 of IEEE Std 1588-2019
9.2.2.1 of IEEE Std 1588-2019";
}
leaf sdo-id {
type uint16 {
range "0..4095";
}
description
"The IEEE Std 1588 sdoId of the PTP Instance.
A domain consists of one or more PTP Instances
communicating with each other as defined by the
protocol. A domain shall define the scope of PTP message
communication, state, operations, data sets, and
timescale. Therefore, each domain represents a distinct
time.
Within a PTP Network, a domain is identified by two
data set members: domainNumber and sdoId.
The sdoId of a domain is a 12-bit integer in the
closed range 0 to 4095.
The sdoId member is the primary mechanism for providing
isolation of PTP Instances operating a PTP Profile
specified by a Standards Development Organization (SDO),
from other PTP Instances operating a PTP Profile
specified by a different SDO.";
reference
"7.1 of IEEE Std 1588-2019
8.2.1.4.5 of IEEE Std 1588-2019
16.5 of IEEE Std 1588-2019";
}
container current-time {
description
"For management read, this member shall return the
current value of the PTP Instance Time.
When management write is supported, this member
shall set the PTP Instance Time.
Time originates in the Grandmaster PTP Instance and
is distributed by PTP to other PTP Instances in
the domain.
NOTE 1 — The time in the Grandmaster PTP Instance
is normally determined by interacting with a primary
reference, e.g., GPS, by means outside the scope of
this standard.
NOTE 2 — When this member is used to set time in a
PTP Instance other than the Grandmaster PTP Instance,
the PTP Node can return a management error.
NOTE 3 — If the time is set in a PTP Instance other
than the Grandmaster PTP Instance, it will be
overwritten by the operation of the protocol and will
therefore exist only as a transient.";
reference
"8.2.1.5.1 of IEEE Std 1588-2019";
uses timestamp;
}
leaf instance-enable {
type boolean;
description
"Indicates if the PTP Instance is enabled for
PTP operation.
When management write is supported:
- Write of the value true shall cause the PTP Instance
to initialize, only if the value was previously false.
- Write of the value false shall immediately disable
operation of the PTP Instance (i.e. analogous to power
off).
If this leaf is not supported, the PTP Instance shall be
specified-by-design to be enabled (true).";
reference
"8.2.1.5.2 of IEEE Std 1588-2019";
}
leaf external-port-config-enable {
if-feature external-port-config;
type boolean;
description
"This value determines whether the external port
configuration option is in the disabled state (false)
or enabled state (true).
When this value is false, each PTP Port's state
is determined by PTP state machines, including
the Best Master Clock Algorithm (BMCA).
When this value is true, each PTP Port's state
is configured externally, and PTP state machines
are effectively disabled. External configuration
of PTP Port state can be accomplished using the
desiredState member of the port (i.e.,
../ports/port[]/external-port-config-port-ds/
desired-state).";
reference
"8.2.1.5.3 of IEEE Std 1588-2019
17.6 of IEEE Std 1588-2019";
}
leaf max-steps-removed {
type uint8 {
range "2..255";
}
description
"If the value of stepsRemoved of an Announce message
is greater than or equal to the value of this
max-steps-removed leaf, the Announce message is not
considered in the operation of the
Best Master Clock Algorithm (BMCA).
The value shall be in the closed range 2 to 255.
If the leaf is not supported, the value used shall
be 255.";
reference
"8.2.1.5.4 of IEEE Std 1588-2019
9.3.2.5 of IEEE Std 1588-2019";
}
leaf instance-type {
type instance-type;
description
"The type of PTP Instance.
This leaf is read-only unless support for write is
explicitly specified by the applicable PTP Profile or
product specification.";
reference
"8.2.1.5.5 of IEEE Std 1588-2019";
}
}
container current-ds {
description
"Provides current data from operation
of the protocol.";
reference
"8.2.2 of IEEE Std 1588-2019";
leaf steps-removed {
type uint16;
config false;
description
"The number of PTP Communication Paths traversed
between this PTP Instance and the Grandmaster
PTP Instance.";
reference
"8.2.2.2 of IEEE Std 1588-2019";
}
leaf offset-from-master {
type time-interval;
config false;
description
"The current value of the time difference between
a Master PTP Instance and a Slave PTP Instance as
computed by the Slave PTP Instance.
NOTE - When a PTP Profile requires a Boundary
Clock to transfer offset information internally
from Slave PTP Port to Master PTP Port(s), this value
effectively returns the offset from the Grandmaster
PTP Instance.";
reference
"8.2.2.3 of IEEE Std 1588-2019";
}
leaf mean-delay {
type time-interval;
config false;
description
"The current value of the mean propagation time between
a Master PTP Instance and a Slave PTP Instance as
computed by the Slave PTP Instance.
If the PTP Instance has no PTP Port in slave or
uncalibrated state, this returns zero.
Otherwise, the Slave PTP Port returns this value
depending on its delay-mechanism:
e2e: mean propagation time over the
PTP Communication Path, i.e. <meanPathDelay>
p2p or common-p2p: mean propagation time over the
PTP Link, i.e. <meanLinkDelay>
disabled or special: zero";
reference
"7.4.2 of IEEE Std 1588-2019
8.2.2.4 of IEEE Std 1588-2019";
}
leaf mean-path-delay {
type time-interval;
config false;
status deprecated;
description
"In IEEE Std 1588-2008, currentDS.meanDelay was called
currentDS.meanPathDelay. While the specification of
this member is retained in the current standard, the
member is renamed to currentDS.meanDelay. This change
is consistent with other changes that ensure clarity
and consistency of naming, where
- “path” is associated with the
request-response mechanism
- “link” is associated with the
peer-to-peer delay mechanism";
reference
"8.2.2.4 of IEEE Std 1588-2008";
}
leaf synchronization-uncertain {
type boolean;
config false;
description
"This boolean is true when synchronization is
uncertain (e.g., not within specification)
in either the Parent PTP Port or this
PTP Instance. The value is copied from a
received Announce message to transmitted Announce
message, such that it reflects uncertain
synchronization from this PTP Instance to the
Grandmaster. Performance metrics for determining
uncertainty are specified by the applicable
PTP Profile.";
reference
"8.2.2.5 of IEEE Std 1588-2019";
}
}
container parent-ds {
description
"Provides data learned from the parent of this
PTP Instance (i.e. master port on the other side
of the path/link).";
reference
"8.2.3 of IEEE Std 1588-2019";
container parent-port-identity {
config false;
description
"The IEEE Std 1588 portIdentity of the PTP Port on the
Master PTP Instance that issues the Sync messages
used in synchronizing this PTP Instance.";
reference
"8.2.3.2 of IEEE Std 1588-2019";
uses port-identity;
}
leaf parent-stats {
type boolean;
config false;
description
"When set to true, the values of
parent-ds/observed-parent-offset-scaled-log-variance
and
parent-ds/observed-parent-clock-phase-change-rate
have been measured and are valid.";
reference
"8.2.3.3 of IEEE Std 1588-2019";
}
leaf observed-parent-offset-scaled-log-variance {
type uint16;
config false;
description
"Estimate of the variance of the phase offset of the
Local PTP Clock of the Parent PTP Instance as measured
with respect to the Local PTP Clock in the Slave PTP
Instance. This measurement is optional, but if not made,
the value of parent-ds/parent-stats shall be false.";
reference
"7.6.3.3 of IEEE Std 1588-2019
7.6.3.5 of IEEE Std 1588-2019
8.2.3.4 of IEEE Std 1588-2019";
}
leaf observed-parent-clock-phase-change-rate {
type int32;
config false;
description
"Estimate of the phase change rate of the
Local PTP Clock of the Parent PTP Instance as measured
by the Slave PTP Instance using its Local PTP Clock.
If the estimate exceeds the capacity of its data type,
this value shall be set to 7FFF FFFF (base 16) or
8000 0000 (base 16), as appropriate. A positive sign
indicates that the phase change rate in the
Parent PTP Instance is greater than that in the
Slave PTP Instance. The measurement of this value is
optional, but if not measured, the value of
parent-ds/parent-stats shall be false.";
reference
"7.6.4.4 of IEEE Std 1588-2019
8.2.3.5 of IEEE Std 1588-2019";
}
leaf grandmaster-identity {
type clock-identity;
config false;
description
"The IEEE Std 1588 clockIdentity of the Grandmaster PTP
Instance.";
reference
"8.2.3.6 of IEEE Std 1588-2019";
}
container grandmaster-clock-quality {
config false;
description
"The IEEE Std 1588 clockQuality of the Grandmaster PTP
Instance.";
reference
"8.2.3.7 of IEEE Std 1588-2019";
uses clock-quality;
}
leaf grandmaster-priority1 {
type uint8;
config false;
description
"The IEEE Std 1588 priority1 of the Grandmaster PTP
Instance.";
reference
"8.2.3.8 of IEEE Std 1588-2019";
}
leaf grandmaster-priority2 {
type uint8;
config false;
description
"The IEEE Std 1588 priority2 of the Grandmaster PTP
Instance.";
reference
"8.2.3.9 of IEEE Std 1588-2019";
}
container protocol-address {
description
"The protocol address of the PTP Port
that issues the Sync messages used in synchronizing
this PTP Instance.";
reference
"8.2.3.10 of IEEE Std 1588-2019";
uses port-address;
}
leaf synchronization-uncertain {
type boolean;
config false;
description
"This boolean is true when synchronization is
uncertain in the Parent PTP Port.";
reference
"8.2.3.11 of IEEE Std 1588-2019";
}
}
container time-properties-ds {
description
"Provides data learned from the current
Grandmaster PTP Instance.";
reference
"8.2.4 of IEEE Std 1588-2019";
leaf current-utc-offset {
when "../current-utc-offset-valid='true'";
type int16;
description
"Specified as <dLS> in IERS Bulletin C, this provides
the offset from UTC (TAI - UTC). The offset is in
units of seconds.";
reference
"7.2.4 of IEEE Std 1588-2019
8.2.4.2 of IEEE Std 1588-2019";
}
leaf current-utc-offset-valid {
type boolean;
description
"The value of current-utc-offset-valid shall be true
if the values of current-utc-offset, leap59, and leap61
are known to be correct, otherwise it shall be false.
NOTE - The constraint for leap59 and leap61 did not
exist in IEEE Std 1588-2008, and for compatibility,
corresponding when statements were not included below.";
reference
"8.2.4.3 of IEEE Std 1588-2019";
}
leaf leap59 {
type boolean;
description
"If the timescale is PTP, a true value for leap59
shall indicate that the last minute of the
current UTC day contains 59 seconds.
If the timescale is not PTP, the value shall be
false.";
reference
"8.2.4.4 of IEEE Std 1588-2019";
}
leaf leap61 {
type boolean;
description
"If the timescale is PTP, a true value for leap61
shall indicate that the last minute of the
current UTC day contains 61 seconds.
If the timescale is not PTP, the value shall be
false.";
reference
"8.2.4.5 of IEEE Std 1588-2019";
}
leaf time-traceable {
type boolean;
description
"The value of time-traceable shall be true if the
timescale is traceable to a primary reference;
otherwise, the value shall be false.
The uncertainty specifications appropriate to the
evaluation of whether traceability to a primary
reference is achieved should be defined in the
applicable PTP Profile. In the absence of such a
definition the value of time-traceable is
implementation specific.";
reference
"8.2.4.6 of IEEE Std 1588-2019";
}
leaf frequency-traceable {
type boolean;
description
"The value of time-traceable shall be true if the
frequency determining the timescale is traceable
to a primary reference; otherwise, the value shall
be false.
The uncertainty specifications appropriate to the
evaluation of whether traceability to a primary
reference is achieved should be defined in the
applicable PTP Profile. In the absence of such a
definition the value of frequency-traceable is
implementation specific.";
reference
"8.2.4.7 of IEEE Std 1588-2019";
}
leaf ptp-timescale {
type boolean;
description
"If ptp-timescale is true, the timescale of
the Grandmaster PTP Instance is PTP, which is
the elapsed time since the PTP epoch measured
using the second defined by International Atomic
Time (TAI).
If ptp-timescale is false, the timescale of
the Grandmaster PTP Instance is ARB, which is
the elapsed time since an arbitrary epoch.";
reference
"7.2.1 of IEEE Std 1588-2019
8.2.4.8 of IEEE Std 1588-2019";
}
leaf time-source {
type identityref {
base time-source;
}
description
"The source of time used by the Grandmaster
PTP Instance.";
reference
"7.6.2.8 of IEEE Std 1588-2019
8.2.4.9 of IEEE Std 1588-2019";
}
}
container description-ds {
description
"Provides descriptive information for the PTP Instance.";
reference
"8.2.5 of IEEE Std 1588-2019";
leaf manufacturer-identity {
type string {
pattern "[0-9A-F]{2}(-[0-9A-F]{2}){2}";
}
config false;
description
"3-octet OUI or CID owned by the manufacturer of the
PTP Instance, assigned by the IEEE Registration
Authority.
Each octet is represented in YANG as a pair of
hexadecimal characters, using uppercase for a letter.
Each octet in the array is separated by the dash
character.";
reference
"8.2.5.2 of IEEE Std 1588-2019";
}
leaf product-description {
type string {
length "2..64";
}
config false;
description
"The product-description string shall indicate, in order:
- The name of the manufacturer of the PTP Instance,
manufacturerName, followed by a semicolon (;)
- The model number of the PTP Instance, modelNumber,
followed by a semicolon (;)
- A unique identifier of this PTP Instance,
instanceIdentifier, such as the MAC address or
the serial number.
The content and meaning of the manufacturerName,
modelNumber, and the instanceIdentifier strings are
determined by the manufacturer of the PTP Instance.";
reference
"8.2.5.3 of IEEE Std 1588-2019";
}
leaf product-revision {
type string {
length "2..32";
}
config false;
description
"Indicate the revisions for PTP Instance's
hardware (HW), firmware (FW), and software (SW).
This information shall be semicolon (;) separated
text fields in the order HW;FW;SW. Non-applicable
revisions shall be indicated by a text fields of
zero length.";
reference
"8.2.5.4 of IEEE Std 1588-2019";
}
leaf user-description {
type string {
length "0..128";
}
description
"Configurable description of the product's PTP Instance.
The user-description string should indicate, in order:
- A user-defined name of the PTP Instance,
e.g., Sensor-1, followed by a semicolon (;)
- A user-defined physical location of the PTP Instance,
e.g., Rack-2 Shelf-3.";
reference
"8.2.5.5 of IEEE Std 1588-2019";
}
}
container fault-log-ds {
if-feature fault-log;
config false;
description
"Represents an optional mechanism for logging of faults
that occur in the PTP Instance. If one member of
fault-log-ds is supported, all members shall be
supported.";
reference
"8.2.6 of IEEE Std 1588-2019";
leaf number-of-fault-records {
type uint16;
config false;
description
"The number of fault records available in
fault-record-list.";
reference
"8.2.6.2 of IEEE Std 1588-2019";
}
list fault-record-list {
config false;
description
"List of fault records, number-of-fault-records
in length.
The maximum length of fault-record-list is
implementation-specific. The fault-record-list
is maintained by the PTP Instance until
fault-log-ds.reset is used.";
reference
"8.2.6.3 of IEEE Std 1588-2019";
uses fault-record;
}
action reset {
description
"This action causes the contents of fault-record-list
to be cleared, and number-of-fault-records to be set
to zero.";
reference
"8.2.6.4 of IEEE Std 1588-2019";
}
}
// The nonvolatileStorageDS in 8.2.7 of IEEE Std 1588-2019
// is not applicable for YANG, since protocols like NETCONF
// and RESTCONF specify analogous features for configuration
// storage.
container path-trace-ds {
if-feature path-trace;
description
"Provides data for the optional path
trace mechanism.";
reference
"16.2 of IEEE Std 1588-2019";
leaf-list list {
type clock-identity;
config false;
description
"List of IEEE Std 1588 clock identity values
(type ClockIdentity), in the order provided in the
PATH_TRACE TLV.";
reference
"16.2.2.2.1 of IEEE Std 1588-2019";
}
leaf enable {
type boolean;
description
"Allows for enable/disable of the path trace mechanism
using management. If path-trace-ds.enable is true,
the path trace mechanism shall be operational.
If path-trace-ds.enable is false, the path trace
mechanism shall be inactive.";
reference
"16.2.2.3.1 of IEEE Std 1588-2019";
}
}
container alternate-timescale-ds {
if-feature alternate-timescale;
description
"Provides data for the optional alternate
timescale offsets mechanism.";
reference
"16.3 of IEEE Std 1588-2019";
leaf max-key {
type uint8;
config false;
description
"The value of max-key shall indicate the value of
the largest key-field in the list.";
reference
"16.3.4.3.1 of IEEE Std 1588-2019";
}
list list {
key "key-field";
description
"List of alternate timescales in the PTP Instance.
Elements in the list can be created or deleted, if
those operations are supported by management.
If management write is supported for items
current-offset, jump-seconds, and time-of-next-jump,
the value for all three items shall be provided
within a single write operation, and the update of
all three items shall be atomic. If any of the three
values fails to update, a management error shall be
returned.";
reference
"16.3.4.4.1 of IEEE Std 1588-2019";
leaf key-field {
type uint8;
description
"Unique identifier of each element in the list.";
}
leaf enable {
type boolean;
description
"If enable is true, the
ALTERNATE_TIME_OFFSET_INDICATOR TLV
for this alternate timescale shall be attached
to Announce messages. If enable is false, the TLV
shall not be attached.";
}
leaf current-offset {
type int32;
description
"Offset of the alternate time, in seconds, from
PTP Instance Time in the Grandmaster PTP Instance.";
}
leaf jump-seconds {
type int32;
description
"Size of the next discontinuity, in seconds, in the
alternate timescale. A value of zero indicates that
no discontinuity is expected. A positive value
indicates that the discontinuity will cause the
current-offset of the alternate timescale to
increase.";
}
leaf time-of-next-jump {
type uint64;
description
"Value of the seconds-field of the transmitting PTP
Instance Time at the time that the next discontinuity
will occur. The discontinuity occurs at the start of
the second indicated by the value of time-of-next-jump.
Only 48-bits are valid (the upper 16-bits are always
zero).";
}
leaf display-name {
type string {
length "0..10";
}
description
"Textual description of the alternate timescale.";
}
}
}
container holdover-upgrade-ds {
if-feature holdover-upgrade;
description
"Provides data for the optional holdover
upgrade mechanism.";
reference
"16.4 of IEEE Std 1588-2019";
leaf enable {
type boolean;
description
"Used to enable (true) or disable (false) the
holdover upgrade mechanism.";
}
}
container grandmaster-cluster-ds {
if-feature grandmaster-cluster;
description
"Provides data for the optional grandmaster
cluster mechanism.";
reference
"17.2.3 of IEEE Std 1588-2019";
leaf max-table-size {
type uint8;
config false;
description
"Maximum number of elements permitted
in the port-address list.
NOTE - The actualTableSize of IEEE Std 1588 is not
applicable for YANG, since YANG mechanisms can be used
to control the number of elements in port-address.";
}
leaf log-query-interval {
type int8;
description
"Logarithm to the base 2 of the mean interval in
seconds between unicast Announce messages from
cluster members.";
}
list port-address {
key "index";
description
"List of port addresses, one for each member of the
grandmaster cluster.";
leaf index {
type uint16;
description
"Index to a port address in the list, typically
sequential from 0 to N-1, where N is the number of
port addresses.";
}
uses port-address;
}
}
container acceptable-master-ds {
if-feature acceptable-master;
description
"Provides data for the optional acceptable
master table mechanism.";
reference
"17.5.3 of IEEE Std 1588-2019";
leaf max-table-size {
type uint16;
config false;
description
"Maximum number of elements permitted
in the list.
NOTE - The actualTableSize of IEEE Std 1588 is not
applicable for YANG, since YANG mechanisms can be used
to control the number of elements in list.";
reference
"17.5.3.3.1 of IEEE Std 1588-2019";
}
list list {
key "index";
description
"List of acceptable masters in the PTP Instance.
Elements in the list can be created or deleted, if
those operations are supported by management.
If management write is supported for items
acceptable-clock-identity, acceptable-port-number,
and alternate-priority1, the value for all three items
shall be provided within a single write operation,
and the update of all three items shall be atomic.
If any of the three values fails to update, a management
error shall be returned.";
reference
"17.5.3.4.2 of IEEE Std 1588-2019";
leaf index {
type uint8;
description
"Unique index to each element in the list, typically
sequential from 0 to N-1, where N is the number of
elements.";
}
container acceptable-port-identity {
description
"The IEEE Std 1588 portIdentity of the
acceptable master.";
uses port-identity;
}
leaf alternate-priority1 {
type uint8;
description
"The IEEE Std 1588 priority1 used as an alternate
for the acceptable master.";
}
}
}
container performance-monitoring-ds {
if-feature performance-monitoring;
description
"Provides data for the optional performance
monitoring mechanism, scoped to the PTP Instance.";
reference
"8.2.13 of IEEE Std 1588-2019
J.5.1 of IEEE Std 1588-2019";
leaf enable {
type boolean;
description
"Permits management control over the collection of
performance monitoring data, including
performance-monitoring-ds (PTP Instance),
ports/port[]/performance-monitoring-port-ds
(PTP Port of PTP Instance), and
common-services/cmlds/ports/port[]/
performance-monitoring-port-ds (CMLDS Link Port
associated with enabled PTP Port).";
reference
"J.5.1.1 of IEEE Std 1588-2019";
}
list record-list {
key "index";
max-elements 99;
config false;
description
"List of performance monitoring records for the
PTP Instance. The list is organized as follows:
- 97 15-minute measurement records, the current record
at index 0, followed by the most recent 96 records.
- 2 24-hour measurement records, the current record
at index 97, and the previous record at index 98.
If a record is not implemented for a specific index,
management does not return the record. For example,
if only four 15-minute periods are implemented,
a management request for performance-monitoring-ds/
record-list[6] returns an error.
If only some of the data is reported, the same index
values are used. As an example, if only the 24-hour
statistics are accessed, the indexes are still 97 and 98.
If a specific parameter (e.g. max-master-slave-delay)
is not implemented, management does not return the
parameter (i.e., error). Parameters that are invalid
(not measured correctly) shall be indicated with
one in all bits, except the most significant. This
represents the largest positive value of
time-interval, indicating a value outside the
maximum range.";
reference
"J.5.1.2 of IEEE Std 1588-2019";
uses clock-performance-monitoring-data-record;
}
}
container enhanced-metrics-ds {
if-feature enhanced-metrics;
description
"Provides data for the optional enhanced
synchronization accuracy metrics mechanism.";
reference
"16.12 of IEEE Std 1588-2019";
leaf enable {
type boolean;
description
"If the Enhanced Synchronization Accuracy Metrics feature
is implemented, the value true shall indicate that
the feature is enabled on the PTP Instance, and the
value false shall indicate that the option is disabled
on the PTP Instance.";
reference
"8.2.14.2 of IEEE Std 1588-2019";
}
}
container ports {
description
"YANG container that is used to get all PTP Ports
in the PTP Instance.
YANG does not allow get of all elements in a YANG list,
so a YANG container wrapping the YANG list is provided for
that purpose. The naming convention uses plural for the
wrapping YANG container, and singular for the YANG list.";
list port {
key "port-index";
description
"List of data for each PTP Port in the PTP Instance.
While the PTP Instance is disabled, it is possible to
have zero PTP Ports (i.e., ports not yet created).
While the PTP Instance is enabled, an Ordinary Clock
will have one PTP Port, and a Boundary Clock or
Transparent Clock will have more than one PTP Port.";
reference
"8.1.4.2 of IEEE Std 1588-2019";
leaf port-index {
type uint16;
description
"The port list is indexed using a number that is
unique per PTP Port within the PTP Instance,
applicable to the management context only
(i.e., not used in PTP messages).";
}
leaf underlying-interface {
type if:interface-ref;
description
"Reference to the configured underlying IETF YANG
interface that is used by this PTP Port for
transport of PTP messages. Among other data,
physical identifiers for the interface
(e.g., MAC address) can be obtained using this
reference.";
reference
"RFC 8343";
}
container port-ds {
description
"Primary data set for the PTP Port.";
reference
"8.2.15 of IEEE Std 1588-2019";
container port-identity {
config false;
description
"The IEEE Std 1588 portIdentity of this PTP Port.";
reference
"8.2.15.2.1 of IEEE Std 1588-2019";
uses port-identity;
}
leaf port-state {
type port-state;
config false;
description
"Current state of the protocol engine associated
with this PTP Port.";
reference
"8.2.15.3.1 of IEEE Std 1588-2019";
}
leaf log-min-delay-req-interval {
type int8;
description
"Logarithm to the base 2 of the IEEE Std 1588
minDelayReqInterval, the minimum permitted
mean time interval between successive Delay_Req
messages sent by a Slave PTP Instance.";
reference
"7.7.2.4 of IEEE Std 1588-2019
8.2.15.3.2 of IEEE Std 1588-2019";
}
leaf mean-link-delay {
type time-interval;
config false;
description
"If the value of the delay-mechanism leaf is p2p
this value shall be an estimate of the current
one-way propagation delay on the PTP Link attached
to this PTP Port, computed using the peer-to-peer
delay mechanism.
If the value of the delay-mechanism leaf is
common-p2p, this value shall be equal to the value of
ptp/common-services/cmlds/ports/port[]/port-ds/
mean-link-delay.
If the value of the delay-mechanism leaf is e2e,
disabled, or special, this value shall be zero.";
reference
"8.2.15.3.3 of IEEE Std 1588-2019";
}
leaf peer-mean-path-delay {
type time-interval;
config false;
status deprecated;
description
"In IEEE Std 1588-2008, this data set member was
called portDS.peerMeanPathDelay. While the
specification of this member is retained in the
current standard, the member is renamed to
portDS.meanLinkDelay (i.e., ../mean-link-delay).
This change is consistent with other changes that
ensure clarity and consistency of naming, where
- “path” is associated with the
request-response mechanism
- “link” is associated with the
peer-to-peer delay mechanism";
reference
"8.2.5.3.3 of IEEE Std 1588-2008";
}
leaf log-announce-interval {
type int8;
description
"Logarithm to the base 2 of the mean IEEE Std 1588
announceInterval, the time interval between
successive Announce messages sent by a PTP Port.";
reference
"7.7.2.2 of IEEE Std 1588-2019
8.2.15.4.1 of IEEE Std 1588-2019";
}
leaf announce-receipt-timeout {
type uint8;
description
"The integral multiple of IEEE Std 1588
announceInterval that must pass without receipt of
an Announce message before the occurrence of the
event ANNOUNCE_RECEIPT_TIMEOUT_EXPIRES. The range
shall be 2 to 255 subject to further restrictions of
the applicable PTP Profile. While 2 is permissible,
normally the value should be at least 3.";
reference
"7.7.3.1 of IEEE Std 1588-2019
8.2.15.4.2 of IEEE Std 1588-2019";
}
leaf log-sync-interval {
type int8;
description
"Logarithm to the base 2 of the mean IEEE Std 1588
syncInterval, the time interval between successive
Sync messages, when transmitted as multicast
messages. The rates for unicast transmissions are
negotiated separately on a per PTP Port basis and
are not constrained by this leaf.";
reference
"7.7.2.3 of IEEE Std 1588-2019
8.2.15.4.3 of IEEE Std 1588-2019";
}
leaf delay-mechanism {
type delay-mechanism;
description
"The path delay measuring mechanism used by the PTP
Port in computing <meanDelay> (propagation delay).";
reference
"8.2.15.4.4 of IEEE Std 1588-2019";
}
leaf log-min-pdelay-req-interval {
type int8;
description
"Logarithm to the base 2 of the IEEE Std 1588
minPdelayReqInterval, the minimum permitted
mean time interval between successive Pdelay_Req
messages sent over a PTP Link.";
reference
"7.7.2.5 of IEEE Std 1588-2019
8.2.15.4.5 of IEEE Std 1588-2019";
}
leaf version-number {
type uint8;
description
"The PTP major version in use on the PTP Port.
NOTE - This indicates the version of the
IEEE 1588 standard, and not the version of an
applicable PTP Profile.";
reference
"8.2.15.4.6 of IEEE Std 1588-2019";
}
leaf minor-version-number {
type uint8;
description
"The PTP minor version in use on the PTP Port.
NOTE - This indicates the version of the
IEEE 1588 standard, and not the version of an
applicable PTP Profile.";
reference
"8.2.15.4.7 of IEEE Std 1588-2019";
}
leaf delay-asymmetry {
type time-interval;
description
"The value of IEEE Std 1588 <delayAsymmetry>
applicable to the PTP Port, which is the
difference in transmission time in one direction
as compared to the opposite direction.";
reference
"7.4.2 of IEEE Std 1588-2019
8.2.15.4.8 of IEEE Std 1588-2019";
}
leaf port-enable {
type boolean;
description
"Indicates if the PTP Port is enabled for
PTP operation.
When management write is supported:
- Write of the value true causes the
DESIGNATED_ENABLED event to occur, even if the
value was previously true.
- Write of the value false causes the
DESIGNATED_DISABLED event to occur, even if the
value was previously false.
If this leaf is not supported, the PTP Port shall be
specified-by-design to be enabled (true).";
reference
"8.2.15.5.1 of IEEE Std 1588-2019";
}
leaf master-only {
type boolean;
description
"If the value of master-only is true, the PTP Port
shall be in the IEEE Std 1588 masterOnly mode.
If the value is false, the PTP Port shall not be
in the masterOnly mode.
When master-only is true, the PTP Port can never
enter the slave port-state.";
reference
"8.2.15.5.2 of IEEE Std 1588-2019
9.2.2.2 of IEEE Std 1588-2019";
}
}
container timestamp-correction-port-ds {
if-feature timestamp-correction;
description
"Provides access to the configurable correction of
timestamps provided to the PTP protocol.";
reference
"8.2.16 of IEEE Std 1588-2019
16.7 of IEEE Std 1588-2019";
leaf egress-latency {
type time-interval;
description
"Interval between the <egressProvidedTimestamp>
provided for a PTP message and the time at which
the message timestamp point of the PTP message
crosses the reference plane.";
reference
"7.3.4.2 of IEEE Std 1588-2019
8.2.16.2 of IEEE Std 1588-2019";
}
leaf ingress-latency {
type time-interval;
description
"Interval between the time the message timestamp
point of an ingress PTP message crosses the
reference plane and the <ingressProvidedTimestamp>
provided for the PTP message.";
reference
"7.3.4.2 of IEEE Std 1588-2019
8.2.16.3 of IEEE Std 1588-2019";
}
}
container asymmetry-correction-port-ds {
if-feature asymmetry-correction;
description
"Provides access to asymmetry correction parameters
that are used to compute the value of
delayAsymmetry>.";
reference
"8.2.17 of IEEE Std 1588-2019
16.8 of IEEE Std 1588-2019";
leaf constant-asymmetry {
type time-interval;
description
"Constant asymmetry used to fine adjust the
dynamically calculated value of <delayAsymmetry>,
when the mechanism to calculate <delayAsymmetry>
or certain media is enabled.";
reference
"8.2.17.2 of IEEE Std 1588-2019";
}
leaf scaled-delay-coefficient {
type relative-difference;
description
"This is the <delayCoefficient>.";
reference
"8.2.17.3 of IEEE Std 1588-2019";
}
leaf enable {
type boolean;
description
"When this value is true, the mechanism to calculate
<delayAsymmetry> for certain media is enabled on
this PTP Port. When this value is false, this
mechanism is disabled on this PTP Port.";
reference
"8.2.17.4 of IEEE Std 1588-2019";
}
}
container description-port-ds {
description
"Provides descriptive information for the PTP Port.";
reference
"8.2.18 of IEEE Std 1588-2019";
leaf profile-identifier {
type string {
pattern "[0-9A-F]{2}(-[0-9A-F]{2}){5}";
}
config false;
description
"When profile-identifier is supported, its value
shall identify the PTP Profile implemented by the
PTP Port, using the value assigned by the
organization that created the PTP Profile.
The profile identifier is six octets that identify
the PTP Profile's organization, profile within the
organization, and version.
Each octet is represented in YANG as a pair of
hexadecimal characters, using uppercase for a letter.
Each octet in the array is separated by the dash
character.";
reference
"8.2.18.2 of IEEE Std 1588-2019
20.3.3 of IEEE Std 1588-2019";
}
container protocol-address {
config false;
description
"Protocol address which is used as the source address
by the network transport protocol for this
PTP Port.";
reference
"8.2.18.3 of IEEE Std 1588-2019";
uses port-address;
}
}
container unicast-negotiation-port-ds {
if-feature unicast-negotiation;
description
"Provides management access to the optional unicast
negotiation mechanism.";
reference
"16.1 of IEEE Std 1588-2019";
leaf enable {
type boolean;
description
"When enable is false, the unicast negotiation
mechanism is disabled on this PTP Port.
When enable is true, the unicast negotiation
mechanism is enabled on this PTP Port.";
reference
"8.2.19.2 of IEEE Std 1588-2019";
}
}
container alternate-master-port-ds {
if-feature alternate-master;
description
"Provides management access to the optional alternate
master mechanism.";
reference
"17.3.3 of IEEE Std 1588-2019";
leaf number-of-alt-masters {
type uint8;
description
"Limits the number of PTP Ports that can
simultaneously transmit messages with the
alternate master flag set to TRUE.";
reference
"17.3.3.2.1 of IEEE Std 1588-2019";
}
leaf tx-alt-multicast-sync {
type boolean;
description
"Controls Sync transmission. If true and the
PTP Port is currently transmitting multicast
Announce messages with alternateMasterFlag
TRUE, the PTP Port shall also transmit multicast
Sync and, if a two-step PTP Instance,
Follow_Up messages. Otherwise do not transmit
these messages.";
reference
"17.3.3.2.2 of IEEE Std 1588-2019";
}
leaf log-alt-multicast-sync-interval {
type int8;
description
"Logarithm to the base 2 of the mean interval
in seconds between Sync messages transmitted
under the terms of this alternate masters
mechanism.";
reference
"17.3.3.2.3 of IEEE Std 1588-2019";
}
}
container unicast-discovery-port-ds {
if-feature unicast-discovery;
description
"Provides management access to the optional unicast
discovery mechanism.";
reference
"17.4.3 of IEEE Std 1588-2019";
leaf max-table-size {
type uint16;
config false;
description
"Maximum number of elements permitted
in the port-address list.
NOTE - The actualTableSize of IEEE Std 1588 is not
applicable for YANG, since YANG mechanisms can be
used to control the number of elements in
port-address.";
}
leaf log-query-interval {
type int8;
description
"Logarithm to the base 2 of the mean interval in
seconds between requests from a PTP Instance for
a unicast Announce message.";
}
list port-address {
key "index";
description
"List of port addresses for unicast discovery.";
leaf index {
type uint16;
description
"Index to a port address in the list, typically
sequential from 0 to N-1, where N is the number of
port addresses.";
}
uses port-address;
}
}
container acceptable-master-port-ds {
if-feature acceptable-master;
description
"Provides management access to the optional acceptable
master mechanism.";
reference
"17.5.4 of IEEE Std 1588-2019";
leaf enable {
type boolean;
description
"When enable is false, the acceptable master table
option is not used on this PTP Port, and the normal
operation of the protocol is in effect.
When enable is true, the acceptable master table
option is used on this PTP Port as specified
in the standard.";
reference
"17.5.4.2.1 of IEEE Std 1588-2019";
}
}
container l1-sync-basic-port-ds {
if-feature l1-sync;
description
"Provides data for operation of the optional layer-1
based synchronization performance enhancement feature.
This data is required when the feature is supported.";
reference
"8.2.23 of IEEE Std 1588-2019
L.5 of IEEE Std 1588-2019";
leaf enabled {
type boolean;
description
"Specifies whether the L1Sync option is enabled
on the PTP Port. If enabled is true, then the
L1Sync message exchange is supported and enabled.";
reference
"L.4.1 of IEEE Std 1588-2019";
}
leaf tx-coherent-is-required {
type boolean;
description
"Specifies whether the L1Sync port is required
to be a transmit coherent port.";
reference
"L.4.2 of IEEE Std 1588-2019";
}
leaf rx-coherent-is-required {
type boolean;
description
"Specifies whether the L1Sync port is required
to be a receive coherent port.";
reference
"L.4.3 of IEEE Std 1588-2019";
}
leaf congruent-is-required {
type boolean;
description
"Specifies whether the L1Sync port is required
to be a congruent port.";
reference
"L.4.4 of IEEE Std 1588-2019";
}
leaf opt-params-enabled {
type boolean;
description
"Specifies whether the L1Sync port transmitting
the L1_SYNC TLV extends this TLV with optional
parameters.";
reference
"L.4.5 of IEEE Std 1588-2019";
}
leaf log-l1sync-interval {
type int8;
description
"Logarithm to the base 2 of the mean IEEE Std 1588
L1SyncInterval, the time interval between successive
periodic messages sent by the L1Sync port and
carrying the L1_SYNC TLV.";
reference
"L.4.6 of IEEE Std 1588-2019";
}
leaf l1sync-receipt-timeout {
type uint8;
description
"The intergral number of elapsed IEEE Std 1588
L1SyncIntervals that must pass without receipt
of the L1_SYNC TLV before the L1_SYNC TLV
reception timeout occurs.";
reference
"L.4.7 of IEEE Std 1588-2019";
}
leaf link-alive {
type boolean;
config false;
description
"True when a L1_SYNC TLV is received at the PTP Port
and L1Sync is enaled on the PTP Port. False when the
L1_SYNC TLV reception timeout occurs.";
reference
"L.5.3.1 of IEEE Std 1588-2019";
}
leaf is-tx-coherent {
type boolean;
config false;
description
"True when the L1Sync port is a transmit coherent
port.";
reference
"L.5.3.2 of IEEE Std 1588-2019";
}
leaf is-rx-coherent {
type boolean;
config false;
description
"True when the L1Sync port is a receive coherent
port.";
reference
"L.5.3.3 of IEEE Std 1588-2019";
}
leaf is-congruent {
type boolean;
config false;
description
"True when the L1Sync port is a congruent port.";
reference
"L.5.3.4 of IEEE Std 1588-2019";
}
leaf l1sync-state {
type l1sync-state;
config false;
description
"Current state of the L1Sync state machine associated
with this L1Sync port.";
reference
"L.5.3.5 of IEEE Std 1588-2019";
}
leaf peer-tx-coherent-is-required {
type boolean;
config false;
description
"Specifies whether this L1Sync port is required
to be a transmit coherent port by a peer,
as indicated in the value of the TCR field of the
most recently received L1_SYNC TLV.";
reference
"L.5.3.6 of IEEE Std 1588-2019";
}
leaf peer-rx-coherent-is-required {
type boolean;
config false;
description
"Specifies whether this L1Sync port is required
to be a receive coherent port by a peer,
as indicated in the value of the RCR field of the
most recently received L1_SYNC TLV.";
reference
"L.5.3.7 of IEEE Std 1588-2019";
}
leaf peer-congruent-is-required {
type boolean;
config false;
description
"Specifies whether this L1Sync port is required
is required to be a congruent port by a peer,
as indicated in the value of the CR field of the
most recently received L1_SYNC TLV.";
reference
"L.5.3.8 of IEEE Std 1588-2019";
}
leaf peer-is-tx-coherent {
type boolean;
config false;
description
"True when the peer L1Sync port is a
transmit coherent port
(as received in the L1_SYNC TLV).";
reference
"L.5.3.9 of IEEE Std 1588-2019";
}
leaf peer-is-rx-coherent {
type boolean;
config false;
description
"True when the peer L1Sync port is a
receive coherent port
(as received in the L1_SYNC TLV).";
reference
"L.5.3.10 of IEEE Std 1588-2019";
}
leaf peer-is-congruent {
type boolean;
config false;
description
"True when the peer L1Sync port is a
congruent port
(as received in the L1_SYNC TLV).";
reference
"L.5.3.11 of IEEE Std 1588-2019";
}
}
container l1-sync-opt-params-port-ds {
if-feature l1-sync;
description
"Provides data for operation of the optional layer-1
based synchronization performance enhancement feature.
This data is optional when the feature is supported.";
reference
"8.2.24 of IEEE Std 1588-2019
L.8.4 of IEEE Std 1588-2019";
leaf timestamps-corrected-tx {
type boolean;
description
"When true, the L1Sync port shall correct the
transmitted egress timestamps with the known value
of the phase offset, as indicated in the Link
Reference Model.";
reference
"L.8.4.2.1 of IEEE Std 1588-2019";
}
leaf phase-offset-tx-valid {
type boolean;
config false;
description
"True if and only if the values of the transmission
phase offset parameters (phase-offset-tx
and phase-offset-tx-timestamp) are valid.";
reference
"L.8.4.3.1 of IEEE Std 1588-2019";
}
leaf phase-offset-tx {
type time-interval;
config false;
description
"Transmission phase offset, which is the
time difference between the significant instant
with which the passage of the message timestamp
point through the reference plane is aligned,
and the time represented by the captured
timestamp of this passage of the message.";
reference
"L.8.4.3.3 of IEEE Std 1588-2019";
}
container phase-offset-tx-timestamp {
config false;
description
"Transmission phase offset timestamp
for the associated transmission phase offset.";
reference
"L.8.4.3.4 of IEEE Std 1588-2019";
uses timestamp;
}
leaf frequency-offset-tx-valid {
type boolean;
config false;
description
"True if and only if the values of the transmission
frequency offset parameters (frequency-offset-tx
and frequency-offset-tx-timestamp) are valid.";
reference
"L.8.4.3.2 of IEEE Std 1588-2019";
}
leaf frequency-offset-tx {
type time-interval;
config false;
description
"Transmission frequency offset, multiplied
by one second. Transmission frequency offset
is the known rate of change of the transmission
phase offset.";
reference
"L.8.4.3.5 of IEEE Std 1588-2019";
}
container frequency-offset-tx-timestamp {
config false;
description
"Transmission frequency offset timestamp
for the associated transmission frequency
offset.";
reference
"L.8.4.3.6 of IEEE Std 1588-2019";
uses timestamp;
}
}
container communication-cap-port-ds {
config false;
description
"Provides data for multicast/unicast communication
capabilities.";
reference
"8.2.25 of IEEE Std 1588-2019";
container sync {
description
"Communication capabilities of the PTP Port with
respect to sending Sync messages.";
uses communication-capabilities;
}
container delay-resp {
description
"Communication capabilities of the PTP Port with
respect to sending Delay_Resp messages.";
uses communication-capabilities;
}
}
container performance-monitoring-port-ds {
if-feature performance-monitoring;
description
"Provides data for the optional performance
monitoring mechanism, scoped to each PTP Port.";
reference
"8.2.26 of IEEE Std 1588-2019
J.5.2 of IEEE Std 1588-2019";
list record-list-peer-delay {
key "index";
max-elements 99;
config false;
description
"List of performance monitoring records for the
PTP Port that is using the peer-to-peer delay
measurement mehanism. The list is organized
as follows:
- 97 15-minute measurement records, the current
record at index 0, followed by the most recent
96 records.
- 2 24-hour measurement records, the current record
at index 97, and the previous record at index 98.
If a record is not implemented for a specific index,
management does not return the record. For example,
if only four 15-minute periods are implemented,
a management request for
performance-monitoring-port-ds/
record-list-peer-delay[6] returns an error.
If only some of the data is reported, the same index
values are used. As an example, if only the 24-hour
statistics are accessed, the indexes are still
97 and 98.
If a specific parameter (e.g. min-mean-link-delay)
is not implemented, management does not return the
parameter (i.e., error). Parameters that are invalid
(not measured correctly) shall be indicated with
one in all bits, except the most significant. This
represents the largest positive value of
time-interval, indicating a value outside the
maximum range.";
reference
"J.5.2.1 of IEEE Std 1588-2019";
uses port-performance-monitoring-peer-delay-data-record;
}
list record-list {
key "index";
max-elements 99;
config false;
description
"List of performance monitoring records for the
PTP Port, not specific to the peer-to-peer delay
measurement mehanism. The list is organized
as follows:
- 97 15-minute measurement records, the current
record at index 0, followed by the most recent
96 records.
- 2 24-hour measurement records, the current record
at index 97, and the previous record at index 98.
If a record is not implemented for a specific index,
management does not return the record. For example,
if only four 15-minute periods are implemented,
a management request for
performance-monitoring-port-ds/record-list[6]
returns an error.
If only some of the data is reported, the same index
values are used. As an example, if only the 24-hour
statistics are accessed, the indexes are still
97 and 98.
If a specific parameter (e.g. sync-tx)
is not implemented, management does not return the
parameter (i.e., error). Parameters that are invalid
(not measured correctly) shall be indicated with
with the value zero, indicating that nothing was
counted.
Each counter in the record shall be initialized to
zero at the start of a new 15-minute and
24-hour interval.";
reference
"J.5.2.2 of IEEE Std 1588-2019";
uses port-performance-monitoring-data-record;
}
}
container common-services-port-ds {
description
"Provides management access to the common services,
scoped to each PTP Port.";
reference
"16.6.5 of IEEE Std 1588-2019";
leaf cmlds-link-port-port-number {
if-feature cmlds;
type uint16;
config false;
description
"Common services operate on all PTP Instances
of the PTP Node. When a common service has
port-specific behavior, it specifies a Link Port,
which represents the physical port that the service
uses to transport PTP messages. In the context of
such a common service, the PTP Port represents a
logical port.
The Common Mean Link Delay Service (CMLDS) is
port-specific, and this leaf provides the
mapping of the PTP Port of this PTP Instance
to the corresponding Link Port in CMLDS. The
Link Port is identified using an IEEE Std 1588
portNumber. The corresponding Link Port's
portNumber is located in the hierarchy at
/ptp/common-services/cmlds/ports/port[]/port-ds/
port-identity/port-number.";
reference
"16.6.5.1.1.1 of IEEE Std 1588-2019";
}
}
container external-port-config-port-ds {
if-feature external-port-config;
description
"Provides management access to the external
configuration option, scoped to each PTP Port.";
reference
"17.6.3 of IEEE Std 1588-2019";
leaf desired-state {
type port-state;
description
"When the value of
default-ds/external-port-config-enable is true,
this desired-state is used to externally configure
the PTP Port's state (i.e., ../../port-ds/port-state)
to a desired value.";
reference
"17.6.3.2 of IEEE Std 1588-2019";
}
}
container slave-monitoring-port-ds {
if-feature slave-monitoring;
description
"Provides management access to the optional
Slave Event Monitor service, scoped to each PTP Port.";
reference
"16.11.6 of IEEE Std 1588-2019";
leaf enable {
type bits {
bit slave-rx-sync-timing-data {
position 0;
description
"True activates generation of the
SLAVE_RX_SYNC_TIMING_DATA TLV.";
}
bit slave-rx-sync-computed-data {
position 1;
description
"True activates generation of the
SLAVE_RX_SYNC_COMPUTED_DATA TLV.";
}
bit slave-tx-event-timestamps {
position 2;
description
"True activates generation of the
SLAVE_TX_EVENT_TIMESTAMPS_DATA TLV.";
}
}
description
"Each bit (boolean flag) indicates whether
the data for a corresponding slave event monitoring
TLV is computed, and whether the data is transmitted
by the slave.";
reference
"16.11.6.2 of IEEE Std 1588-2019";
}
leaf events-per-rx-sync-timing-tlv {
type uint8;
description
"Indicates the number of events to report per
SLAVE_RX_SYNC_TIMING_DATA TLV.";
reference
"16.11.6.3 of IEEE Std 1588-2019";
}
leaf events-per-rx-sync-computed-tlv {
type uint8;
description
"Indicates the number of events to report per
SLAVE_RX_SYNC_COMPUTED_DATA TLV.";
reference
"16.11.6.4 of IEEE Std 1588-2019";
}
leaf events-per-tx-timestamps-tlv {
type uint8;
description
"Indicates the number of events to report per
SLAVE_TX_EVENT_TIMESTAMPS_DATA TLV.";
reference
"16.11.6.5 of IEEE Std 1588-2019";
}
leaf tx-event-type {
type uint8;
description
"Indicates the event message type selected for
the egress event monitoring. The four low-order
bits are defined to correspond to the
IEEE Std 1588 messageType field.";
reference
"16.11.6.6 of IEEE Std 1588-2019";
}
leaf rx-sync-timing-tlv-message-m {
type uint8;
description
"The value M, where M indicates that every Mth
event message is selected for monitoring in the
SLAVE_RX_SYNC_TIMING_DATA TLV. For example, if
the value of M is 4, every fourth event message
is selected for monitoring in the TLV.";
reference
"16.11.6.7 of IEEE Std 1588-2019";
}
leaf rx-sync-computed-tlv-message-m {
type uint8;
description
"The value M, where M indicates that every Mth
event message is selected for monitoring in the
SLAVE_RX_SYNC_COMPUTED_DATA TLV. For example, if
the value of M is 4, every fourth event message
is selected for monitoring in the TLV.";
reference
"16.11.6.8 of IEEE Std 1588-2019";
}
leaf tx-timestamps-tlv-message-m {
type uint8;
description
"The value M, where M indicates that every Mth
event message is selected for monitoring in the
SLAVE_TX_EVENT_TIMESTAMPS_DATA TLV. For example, if
the value of M is 4, every fourth event message
is selected for monitoring in the TLV.";
reference
"16.11.6.9 of IEEE Std 1588-2019";
}
}
}
}
}
}
container transparent-clock-default-ds {
status deprecated;
description
"This default data set was specified in
IEEE Std 1588-2008, and under some interpretations,
it applied to all domains, which in turn means that it
represents multiple Transparent Clocks.
In IEEE Std 1588-2019, this data set is specified as
applying to the PTP Node (all domains), but the data set is
deprecated. For new designs, the standard recommends that
Transparent Clocks use the PTP Instance data sets
(i.e., /ptp/instances/instance[]), such that each
Transparent Clock supports a single PTP Instance and
domain.";
reference
"8.3.1 of IEEE Std 1588-2019";
leaf clock-identity {
type clock-identity;
config false;
status deprecated;
description
"The clockIdentity of the local clock.";
reference
"8.3.2.2.1 of IEEE Std 1588-2019";
}
leaf number-ports {
type uint16;
config false;
status deprecated;
description
"The number of PTP Ports of the device.";
reference
"8.3.2.2.2 of IEEE Std 1588-2019";
}
leaf delay-mechanism {
type delay-mechanism;
status deprecated;
description
"The propagation delay measuring mechanism (e2e or p2p).";
reference
"8.3.2.3.1 of IEEE Std 1588-2019";
}
leaf primary-domain {
type uint8;
status deprecated;
description
"The domainNumber of the primary syntonization domain.";
reference
"8.3.2.3.2 of IEEE Std 1588-2019";
}
}
container transparent-clock-ports {
status deprecated;
description
"YANG container that is used to get all ports of the
IEEE Std 1588 transparentClockPortDS.
YANG does not allow get of all elements in a YANG list,
so a YANG container wrapping the YANG list is provided for
that purpose. The naming convention uses plural for the
wrapping YANG container, and singular for the YANG list.";
list port {
key "port-index";
status deprecated;
description
"This list of Transparent Clock port data sets was specified
in IEEE Std 1588-2008, and under some interpretations,
it applied to all domains, which in turn means that it
represents multiple Transparent Clocks.
In IEEE Std 1588-2019, this list is specified as
applying to the PTP Node (all domains), but the list is
deprecated. For new designs, the standard recommends that
Transparent Clocks use the PTP Instance data sets
(i.e., /ptp/instances/instance[]), such that each
Transparent Clock supports a single PTP Instance
and domain.";
reference
"8.3.1 of IEEE Std 1588-2019";
leaf port-index {
type uint16;
description
"The port list is indexed using a number that is
unique per port within the Transparent Clock,
applicable to the management context only
(i.e., not used in PTP messages).";
}
leaf underlying-interface {
type if:interface-ref;
description
"Reference to the configured underlying IETF YANG
interface that is used by this port for
transport of PTP messages. Among other data,
physical identifiers for the interface
(e.g. MAC address) can be obtained using this
reference.";
reference
"RFC 8343";
}
container port-ds {
description
"IEEE Std 1588 transparentClockPortDS.";
reference
"8.3.3 of IEEE Std 1588-2019";
container port-identity {
config false;
status deprecated;
description
"The IEEE Std 1588 portIdentity of this port.";
reference
"8.3.3.2.1 of IEEE Std 1588-2019";
uses port-identity;
}
leaf log-min-pdelay-req-interval {
type int8;
status deprecated;
description
"The logarithm to the base 2 of the
minPdelayReqInterval (minimum permitted mean time
interval between successive Pdelay_Req messages).";
reference
"8.3.3.3.1 of IEEE Std 1588-2019";
}
leaf faulty-flag {
type boolean;
status deprecated;
description
"Shall be true if the port is faulty and false
if the port is operating normally.";
reference
"8.3.3.3.2 of IEEE Std 1588-2019";
}
leaf peer-mean-path-delay {
type time-interval;
config false;
status deprecated;
description
"An estimate of the current one-way propagation delay
on the link when the delayMechanism is P2P; otherwise,
it is zero.";
reference
"8.3.3.3.3 of IEEE Std 1588-2019";
}
}
}
}
container common-services {
description
"Provides management access to the common services.
Common services operate on all PTP Instances
of the PTP Node.";
container cmlds {
if-feature cmlds;
description
"The Common Mean Link Delay Service (CMLDS) is an
optional service that enables any PTP Port that would
normally obtain the value of a link's <meanLinkDelay>
and <neighborRateRatio> using the peer-to-peer method
to instead obtain these values from this optional service.
The CMLDS service is available to all PTP Instances
communicating with a specific transport mechanism,
e.g. using Annex F, over the physical link between two PTP
Nodes.
In this option, the term Link Port refers to the mechanism
enabling communication with a specific transport mechanism,
e.g. using Annex F, over the physical link between two PTP
Nodes.
The Common Mean Link Delay Service is designed to run
independently from any PTP Instances communicating
over a Link Port. The service provides information on the
<meanLinkDelay> as well as the as the <neighborRateRatio>
measured in the timescale used by the service. The service
runs on every Link Port where the CMLDS is present.
Information required by a PTP Port is requested from and
delivered by the service running on the associated
Link Port.";
reference
"16.6.4 of IEEE Std 1588-2019";
container default-ds {
description
"The default data set of CMLDS.";
reference
"16.6.4.1 of IEEE Std 1588-2019";
leaf clock-identity {
type clock-identity;
config false;
description
"The IEEE Std 1588 clockIdentity used by CMLDS.";
reference
"16.6.4.1.2.1 of IEEE Std 1588-2019";
}
leaf number-link-ports {
type uint16;
config false;
description
"The number of Link Ports of CMLDS.";
reference
"16.6.4.1.2.2 of IEEE Std 1588-2019";
}
}
container ports {
description
"YANG container that is used to get all Link Ports
of CMLDS.
YANG does not allow get of all elements in a YANG list,
so a YANG container wrapping the YANG list is provided for
that purpose. The naming convention uses plural for the
wrapping YANG container, and singular for the YANG list.";
list port {
key "port-index";
description
"List of data for each Link Port of CMLDS.
The list is structured as leafs for each member
of the IEEE Std 1588 cmldsLinkPortDS (primary
Link Port data set), followed by containers for
each optional Link Port data set. Members of data set
cmldsLinkPortDS.commonMeanLinkDelayInformation
are listed directly under the list, in order
to keep the YANG naming hierarchy as short as
possible.";
reference
"16.6.4.2 of IEEE Std 1588-2019";
leaf port-index {
type uint16;
description
"The port list is indexed using a number that is
unique per Link Port within the CMLDS, applicable
to the management context only (i.e. not used in PTP
messages).";
}
leaf underlying-interface {
type if:interface-ref;
description
"Reference to the configured underlying IETF YANG
interface that is used by this Link Port for
transport of PTP messages. Among other data,
physical identifiers for the interface
(e.g. MAC address) can be obtained using this
reference.";
reference
"RFC 8343";
}
container link-port-ds {
description
"The IEEE Std 1588 cmldsLinkPortDS of this Link Port.";
reference
"16.6.4.2 of IEEE Std 1588-2019";
container port-identity {
config false;
description
"The IEEE Std 1588 portIdentity of this Link Port.";
reference
"16.6.4.2.2.1 of IEEE Std 1588-2019";
uses port-identity;
}
leaf domain-number {
type uint8;
config false;
description
"The IEEE Std 1588 domainNumber used by this
Link Port. This domain number is not configurable,
since its value is determined by the transport
mechanism of the Link Port.";
reference
"16.6.4.2.2.2 of IEEE Std 1588-2019";
}
leaf service-measurement-valid {
type boolean;
config false;
description
"This boolean is initialized to false, and will
be false whenever the required PTP messages for
CMLDS are not received on the Link Port. When
the required PTP messages for CMLDS are received,
this boolean is true.
This value is obtained from the
CommonMeanLinkDelayInformation structure returned
by CMLDS.";
reference
"16.6.3.2 of IEEE Std 1588-2019";
}
leaf mean-link-delay {
type time-interval;
config false;
description
"Estimate of the current one-way propagation delay
on the PTP Link, i.e., <meanLinkDelay>, attached
to this Link Port, computed using the peer-to-peer
delay mechanism.
This value is obtained from the
CommonMeanLinkDelayInformation structure returned
by CMLDS.";
reference
"16.6.3.2 of IEEE Std 1588-2019";
}
leaf scaled-neighbor-rate-ratio {
type int32;
config false;
description
"Ratio of the rate of this PTP Node's clock to
the clock of its neighbor attached
to this Link Port, i.e., <neighborRateRatio>,
scaled as specified in the standard.
This value is obtained from the
CommonMeanLinkDelayInformation structure returned
by CMLDS.";
reference
"16.6.3.2 of IEEE Std 1588-2019";
}
leaf log-min-pdelay-req-interval {
type int8;
description
"Logarithm to the base 2 of the IEEE Std 1588
minPdelayReqInterval, the minimum permitted
mean time interval between successive Pdelay_Req
messages sent by CMLDS.";
reference
"16.6.4.2.4.1 of IEEE Std 1588-2019";
}
leaf version-number {
type uint8;
description
"The PTP major version in use on the Link Port.
NOTE - This indicates the version of the
IEEE 1588 standard, and not the version of an
applicable PTP Profile.";
reference
"16.6.4.2.4.2 of IEEE Std 1588-2019";
}
leaf minor-version-number {
type uint8;
description
"The PTP minor version in use on the Link Port.
NOTE - This indicates the version of the
IEEE 1588 standard, and not the version of an
applicable PTP Profile.";
reference
"16.6.4.2.4.3 of IEEE Std 1588-2019";
}
leaf delay-asymmetry {
type time-interval;
description
"The value of IEEE Std 1588 <delayAsymmetry>
applicable to the Link Port, which is the
difference in transmission time in one direction
as compared to the opposite direction.";
reference
"7.4.2 of IEEE Std 1588-2019
16.6.4.2.4.4 of IEEE Std 1588-2019";
}
}
container timestamp-correction-port-ds {
if-feature timestamp-correction;
description
"Provides access to the configurable correction of
timestamps provided to the PTP protocol.";
reference
"16.6.4.3 of IEEE Std 1588-2019";
leaf egress-latency {
type time-interval;
description
"Interval between the <egressProvidedTimestamp>
provided for a PTP message and the time at which
the message timestamp point of the PTP message
crosses the reference plane.";
reference
"7.3.4.2 of IEEE Std 1588-2019
8.2.16.2 of IEEE Std 1588-2019";
}
leaf ingress-latency {
type time-interval;
description
"Interval between the time the message timestamp
point of an ingress PTP message crosses the
reference plane and the <ingressProvidedTimestamp>
provided for the PTP message.";
reference
"7.3.4.2 of IEEE Std 1588-2019
8.2.16.3 of IEEE Std 1588-2019";
}
}
container asymmetry-correction-port-ds {
if-feature asymmetry-correction;
description
"Provides access to asymmetry correction parameters
that are used to compute the value of <delayAsymmetry>.";
reference
"16.6.4.4 of IEEE Std 1588-2019";
leaf enable {
type boolean;
description
"When this value is true, the mechanism to calculate
<delayAsymmetry> for certain media is enabled on
this PTP Port. When this value is false, this
mechanism is disabled on this PTP Port.";
reference
"8.2.17.4 of IEEE Std 1588-2019";
}
leaf constant-asymmetry {
type time-interval;
description
"Constant asymmetry used to fine adjust the
dynamically calculated value of <delayAsymmetry>,
when the mechanism to calculate <delayAsymmetry>
or certain media is enabled.";
reference
"8.2.17.2 of IEEE Std 1588-2019";
}
leaf scaled-delay-coefficient {
type relative-difference;
description
"This is the <delayCoefficient>.";
reference
"8.2.17.3 of IEEE Std 1588-2019";
}
}
container performance-monitoring-port-ds {
if-feature performance-monitoring;
description
"Provides data for the optional performance
monitoring mechanism, scoped to each Link Port.";
reference
"16.6.4.5 of IEEE Std 1588-2019";
list record-list-peer-delay {
key "index";
max-elements 99;
config false;
description
"List of performance monitoring records for the
Link Port that is using the peer-to-peer delay
measurement mehanism. The list is organized
as follows:
- 97 15-minute measurement records, the current
record at index 0, followed by the most recent
96 records.
- 2 24-hour measurement records, the current record
at index 97, and the previous record at index 98.
If a record is not implemented for a specific index,
management does not return the record. For example,
if only four 15-minute periods are implemented,
a management request for
performance-monitoring-port-ds/
record-list-peer-delay[6] returns an error.
If only some of the data is reported, the same index
values are used. As an example, if only the 24-hour
statistics are accessed, the indexes are still
97 and 98.
If a specific parameter (e.g. min-mean-link-delay)
is not implemented, management does not return the
parameter (i.e., error). Parameters that are invalid
(not measured correctly) shall be indicated with
one in all bits, except the most significant. This
represents the largest positive value of
time-interval, indicating a value outside the
maximum range.";
reference
"J.5.2.1 of IEEE Std 1588-2019";
uses port-performance-monitoring-peer-delay-data-record;
}
list record-list {
key "index";
max-elements 99;
config false;
description
"List of performance monitoring records for the
Link Port, not specific to the peer-to-peer delay
measurement mehanism. The list is organized
as follows:
- 97 15-minute measurement records, the current
record at index 0, followed by the most recent
96 records.
- 2 24-hour measurement records, the current record
at index 97, and the previous record at index 98.
If a record is not implemented for a specific index,
management does not return the record. For example,
if only four 15-minute periods are implemented,
a management request for
performance-monitoring-port-ds/record-list[6]
returns an error.
If only some of the data is reported, the same index
values are used. As an example, if only the 24-hour
statistics are accessed, the indexes are still
97 and 98.
If a specific parameter (e.g. sync-tx)
is not implemented, management does not return the
parameter (i.e., error). Parameters that are invalid
(not measured correctly) shall be indicated with
with the value zero, indicating that nothing was
counted.
Each counter in the record shall be initialized to
zero at the start of a new 15-minute and
24-hour interval.";
reference
"J.5.2.2 of IEEE Std 1588-2019";
uses port-performance-monitoring-data-record;
}
}
}
}
}
}
}
}