From 2582b50662792cfa80447cd55d9dee855f39fe52 Mon Sep 17 00:00:00 2001 From: Rodney Cummings Date: Fri, 31 May 2024 17:06:40 -0500 Subject: [PATCH] Now that IEEE 1588 modules are published, remove experimental and draft versions of those modules. --- experimental/ieee/1588/ni-ieee1588-ptp.yang | 3916 --------------- standard/ieee/draft/1588/ieee1588-ptp-ms.yang | 4307 ---------------- standard/ieee/draft/1588/ieee1588-ptp-tt.yang | 4332 ----------------- 3 files changed, 12555 deletions(-) delete mode 100644 experimental/ieee/1588/ni-ieee1588-ptp.yang delete mode 100644 standard/ieee/draft/1588/ieee1588-ptp-ms.yang delete mode 100644 standard/ieee/draft/1588/ieee1588-ptp-tt.yang diff --git a/experimental/ieee/1588/ni-ieee1588-ptp.yang b/experimental/ieee/1588/ni-ieee1588-ptp.yang deleted file mode 100644 index d1b6054db..000000000 --- a/experimental/ieee/1588/ni-ieee1588-ptp.yang +++ /dev/null @@ -1,3916 +0,0 @@ -module ni-ieee1588-ptp { - yang-version 1.1; - namespace "http://ni.com/ns/yang/ni-ieee1588-ptp"; - prefix "ptp"; - - import ietf-yang-types { - prefix yang; - } - import ietf-interfaces { - prefix if; - } - - organization "National Instruments"; - contact - "Rodney Cummings - National Instruments - 11500 N. Mopac Expwy - Bldg. C - Austin, TX 78759-3504 - Email: Rodney.Cummings@ni.com"; - 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, as specified in RFC XXXX: YANG Data Model - for IEEE 1588-2008."; - - revision "2018-08-24" { - description - "This revision is an experimental contribution, - made under the following assumptions: - A. This module is intended as input to a future project in the - IEEE 1588 Working Group, to specify YANG for the data sets - (information model) of IEEE Std 1588-2019. - B. Once a 1588 project exists (i.e. PAR approved), and a draft - YANG module for that project is uploaded to GitHub - (e.g. /standard/ieee/1588/draft/ieee1588-ptp.yang), - this experimental module will be removed soon after. - C. This module is not intended for use in a shipping project. - - This experimental YANG module does not represent a formally - sanctioned YANG module of IEEE. Therefore, this YANG module - will change in incompatible ways from its current revision - to the formally published YANG module for IEEE Std 1588. - Since it is not possible to prevent use of this module in a - shipping product, the module name and module namespace are - both defined as vendor-specific, using the affiliated company - of the editor. This helps to avoid naming collisions with - the future YANG module specified as part of IEEE Std 1588. - The approach taken to the creation of this module was: - 1. Start with the current ietf-ptp.yang, but change - module name and namespace, using vendor prefix 'ni-' - followed by likely names from the IEEE working group. - Retain the prefix from ietf-ptp.yang (ptp). - 2. Update the 1588-2008 features to align with 1588-2019. - This is mostly edits to descriptions and references. - 3. Add new features from 1588-2019, using draft - 1588-rev/D1.4 as the current reference. Although this - is technically a new module, add features according - to the rules in RFC 7950 section 11 (Updating a Module). - For example, new enums can be added to an enumeration, - but do not change old enums. - 4. This module does not add any nodes specified by a - PTP Profile. Each PTP Profile can create a YANG augment - to this module in order to add its own nodes."; - reference - "To be replaced with first IEEE 1588 standard that - contains a YANG module. Such a project is anticipated - to begin after IEEE RevCom approval of - IEEE Std 1588-2019."; - } - - typedef delay-mechanism-enumeration { - 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 disabled { - 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 disabled 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 - "IEEE Std 1588-2019: 7.5.4, 8.2.15.4.4"; - } - - typedef port-state-enumeration { - 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 the Grandmaster - Clock 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 - "IEEE Std 1588-2019: 6.6.2.2, 6.7.2, 9.2.5, 9.2.6.14"; - } - - typedef instance-type-enumeration { - 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 - "IEEE Std 1588-2019: 8.2.1.5.5"; - } - - typedef network-protocol-enumeration { - type enumeration { - enum udp-ipv4 { - value 1; - description - "UDP on IPv4"; - } - enum udp-ipv6 { - value 2; - description - "UDP on IPv6"; - } - enum ieee802-3 { - value 3; - description - "IEEE Std 802.3 (Ethernet)"; - } - enum devicenet { - value 4; - description - "DeviceNet"; - } - enum controlnet { - value 5; - description - "ControlNet"; - } - enum profinet { - value 6; - description - "PROFINET"; - } - enum unknown { - value 65534; - description - "Unknown"; - } - } - description - "Enumeration for the protocol used by a PTP Instance to - transport PTP messages. - Values for this enumeration are specified by the IEEE 1588 - standard, except for the range F000 to FFFD hex, which is - available for augment by a PTP Profile."; - reference - "IEEE Std 1588-2019: 7.4.1"; - } - - typedef fault-severity-enumeration { - 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 - "IEEE Std 1588-2019: 8.2.6.3"; - } - - typedef l1sync-state-enumeration { - 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 port. - Values for this enumeration are specified by the IEEE 1588 - standard exclusively."; - reference - "IEEE Std 1588-2019: O.5.3.5, O.7.2"; - } - - typedef time-interval-type { - 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 - "IEEE Std 1588-2019: 5.3.2"; - } - - typedef clock-identity-type { - type binary { - length "8"; - } - 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."; - reference - "IEEE Std 1588-2019: 5.3.4, 7.5.2.2"; - } - - grouping timestamp-grouping { - 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 - "IEEE Std 1588-2019: 5.3.3"; - - leaf seconds-field { - type uint64; - description - "The seconds-field member is the integer portion - of the timestamp in units of seconds. Only 48-bits - are valid (the upper 16-bits are always zero)."; - } - - leaf nanoseconds-field { - type uint32; - description - "The nanoseconds-field member is the fractional - portion of the timestamp in units of nanoseconds. - The nanosecondsField member is always less than 10^9. - For example: +2.000000001 seconds is represented by - seconds-field = 0000 0000 0002 (base 16) and - nanoseconds-field = 0000 0001 (base 16)."; - } - } - - typedef relative-difference-type { - type int64; - description - "Relative difference expressed as a dimensionless - fraction and multiplied by 2^62, with any - remaining fractional part truncated."; - reference - "IEEE Std 1588-2019: 5.3.11"; - } - - grouping port-address-grouping { - description - "The IEEE Std 1588 PortAddress type represents the - protocol address of a PTP Port. - This type is represented in YANG as a grouping."; - reference - "IEEE Std 1588-2019: 5.3.6"; - - leaf network-protocol { - type network-protocol-enumeration; - 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 binary; - 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 member. - The most significant octet of the address-field - is mapped into the octet of the address-field - member with index 0."; - } - } - - grouping clock-quality-grouping { - 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 - "IEEE Std 1588-2019: 5.3.7, 6.6.2.3, 7.6.2, 7.6.3"; - - leaf clock-class { - type uint8; - default 248; - description - "The clockClass denotes the traceability of the time - or frequency distributed by the clock."; - reference - "IEEE Std 1588-2019: 7.6.2.5"; - } - - leaf clock-accuracy { - type uint8; - description - "The clockAccuracy indicates the accuracy of the clock - (Local Clock of the PTP Instance)."; - reference - "IEEE Std 1588-2019: 7.6.2.6"; - } - - 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 - "IEEE Std 1588-2019: 7.6.2.7"; - } - } - - grouping fault-record-grouping { - 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 - "IEEE Std 1588-2019: 5.3.10, 8.2.6.3"; - - 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-grouping; - } - - leaf severity { - type fault-severity-enumeration; - 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-grouping { - description - "Multicast/unicast capabilities for a port - and message type."; - reference - "IEEE Std 1588-2019: 5.3.12, 8.2.25"; - - 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."; - } - } - - // TODO: Should the preceding typedefs and groupings be located - // in a separate ptp-types module? This would enable re-use of - // the types in modules that do not augment this one. - // This decision is deferred to the 1588 Working Group. - - feature unicast-negotiation { - description - "Unicast negotiation conducted through use of TLVs."; - reference - "IEEE Std 1588-2019: 16.1"; - } - - feature path-trace { - description - "Use of the PATH_TRACE TLV for tracing the route of - a PTP Announce message through the PTP Network."; - reference - "IEEE Std 1588-2019: 16.2"; - } - - 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 - "IEEE Std 1588-2019: 16.3"; - } - - 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 - "IEEE Std 1588-2019: 16.4"; - } - - 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 and - 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 - "IEEE Std 1588-2019: 16.6"; - } - - feature timestamp-correction { - description - "Correction of timestamps using configurable management data."; - reference - "IEEE Std 1588-2019: 16.7"; - } - - feature asymmetry-correction { - description - "Calculation of the on a Direct PTP Link - between two PTP Instances connected using an applicable - bidirectional medium."; - reference - "IEEE Std 1588-2019: 16.8"; - } - - 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 - "IEEE Std 1588-2019: 16.11"; - } - - feature enhanced-metrics { - description - "Mechanism, using a TLV, 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 - implementing node 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 - "IEEE Std 1588-2019: 16.12"; - } - - 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 - "IEEE Std 1588-2019: 17.2"; - } - - 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, i.e., alternate Master PTP Ports, 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 - "IEEE Std 1588-2019: 17.3"; - } - - 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 - "IEEE Std 1588-2019: 17.4"; - } - - 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 - "IEEE Std 1588-2019: 17.5"; - } - - 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 - "IEEE Std 1588-2019: 17.6"; - } - - feature performance-monitoring { - description - "Collection of performance monitoring logs that can be - read using management."; - reference - "IEEE Std 1588-2019: Annex M"; - } - - feature l1-sync { - description - "Layer 1-based synchronization performance - enhancement (L1Sync)."; - reference - "IEEE Std 1588-2019: Annex O"; - } - - container ptp { - description - "Contains all nodes for the PTP data sets. - This hierarchy can be augmented with nodes - for a specific vendor or PTP Profile."; - - list instance-list { - - key "instance-number"; - - 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 - "IEEE Std 1588-2019: 8.1.4.2"; - - leaf instance-number { - 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 - "IEEE Std 1588-2019: 8.1.4.2"; - } - - container default-ds { - description - "The default data set of the PTP Instance. - In the context of the protocol, this data set is required - for an Ordinary Clock or Boundary Clock, and recommended - for a Transparent Clock. - In the context of management (i.e. YANG), access to each - member of the data set (i.e. leaf) is optional."; - reference - "IEEE Std 1588-2019: 8.2.1"; - - leaf instance-type { - type instance-type-enumeration; - 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 - "IEEE Std 1588-2019: 8.2.1.5.5"; - } - - 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). - Unless stated otherwise by the applicable PTP Profile or - product specifications, the default value is true."; - reference - "IEEE Std 1588-2019: 8.2.1.5.2"; - } - - leaf clock-identity { - type clock-identity-type; - config false; - description - "The IEEE Std 1588 clockIdentity of the PTP Instance."; - reference - "IEEE Std 1588-2019: 8.2.1.2.2"; - } - - leaf number-ports { - type uint16; - description - "The number of PTP Ports on the PTP Instance. - For an Ordinary Clock, the value shall be one."; - reference - "IEEE Std 1588-2019: 8.2.1.2.3"; - } - - 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 - "IEEE Std 1588-2019: 8.2.1.3.1"; - uses clock-quality-grouping; - } - - 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 default value of - priority1 is specified in the applicable PTP Profile. - 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 - "IEEE Std 1588-2019: 7.6.2.3, 8.2.1.4.1"; - } - - 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 default value of - priority2 is specified in the applicable PTP Profile. - 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 - "IEEE Std 1588-2019: 7.6.2.4, 8.2.1.4.2"; - } - - 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 - "IEEE Std 1588-2019: 7.1, 8.2.1.4.3"; - } - - leaf sdo-id { - type uint16; - 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 of PTP Profiles specified by - a Standards Development Organization (SDO), from other - PTP Instances operating under a PTP Profile specified - by a different SDO. - In the absence of a specification for this value in an - applicable PTP Profile, the default value shall - be 0x000."; - reference - "IEEE Std 1588-2019: 7.1, 8.2.1.4.5, 16.5"; - } - - 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 applies to 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 - "IEEE Std 1588-2019: 9.2.2.1, 8.2.1.4.4"; - } - - 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 - "IEEE Std 1588-2019: 8.2.1.5.1"; - uses timestamp-grouping; - } - - 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). - The default value shall be false unless otherwise - specified in the applicable PTP Profile. - 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., - ../port-ds-list[]/external-port-config-port-ds/ - desired-state)."; - reference - "IEEE Std 1588-2019: 17.6, 8.2.1.5.3"; - } - - leaf max-steps-removed { - type uint16; - default 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 (same as default)."; - reference - "IEEE Std 1588-2019: 8.2.1.5.4, 9.3.2.5"; - } - - leaf two-step-flag { - type boolean; - 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 - "IEEE Std 1588-2019: 8.2.1.2.1, 7.5.2.5"; - } - } - - container current-ds { - description - "Provides current data from operation - of the protocol."; - reference - "IEEE Std 1588-2019: 8.2.2"; - - leaf steps-removed { - type uint16; - default 0; - description - "The number of PTP Communication Paths traversed - between this PTP Instance and the Grandmaster - PTP Instance."; - reference - "IEEE Std 1588-2019: 8.2.2.2"; - } - - leaf offset-from-master { - type time-interval-type; - 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 port to master port(s), this value - effectively returns the offset from the grandmaster."; - reference - "IEEE Std 1588-2019: 8.2.2.3"; - } - - leaf mean-delay { - type time-interval-type; - description - "The current value of the mean propagation time between - a master port and a slave port as computed by the - slave port. - 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. - p2p or common_p2p: mean propagation time over the - PTP Link, i.e. - disabled or special: zero"; - reference - "IEEE Std 1588-2019: 8.2.2.4"; - } - - leaf mean-path-delay { - type time-interval-type; - status deprecated; - description - "In IEEE Std 1588-2008, this data set member 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 - "IEEE Std 1588-2008: 8.2.2.4"; - } - } - - 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 - "IEEE Std 1588-2019: 8.2.3"; - - container parent-port-identity { - 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. - A portIdentity consists of two members: clockIdentity - and portNumber."; - reference - "IEEE Std 1588-2019: 8.2.3.2"; - - leaf clock-identity { - type clock-identity-type; - description - "IEEE Std 1588 clockIdentity of the parent. - This value is initialized with the clockIdentity - of this PTP Instance (i.e., ../../default-ds/ - clock-identity)."; - } - - leaf port-number { - type uint16; - description - "IEEE Std 1588 portNumber of the parent's port. - This value is initialized with zero."; - } - } - - leaf parent-stats { - type boolean; - default 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 - "IEEE Std 1588-2019: 8.2.3.3"; - } - - leaf observed-parent-offset-scaled-log-variance { - type uint16; - default 65535; - 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 - "IEEE Std 1588-2019: 8.2.3.4, 7.6.3.3, 7.6.3.5"; - } - - leaf observed-parent-clock-phase-change-rate { - type int32; - 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. - The value is initialized as 7FFF FFFF (base 16) - irrespective of whether the computation is implemented - in the PTP Instance."; - reference - "IEEE Std 1588-2019: 8.2.3.5, 7.6.4.4"; - } - - leaf grandmaster-identity { - type clock-identity-type; - description - "The IEEE Std 1588 clockIdentity of the Grandmaster PTP - Instance. - This value is initialized with - default-ds/clock-identity of this PTP Instance."; - reference - "IEEE Std 1588-2019: 8.2.3.6"; - } - - container grandmaster-clock-quality { - description - "The IEEE Std 1588 clockQuality of the Grandmaster PTP - Instance. - This value is initialized with - default-ds/clock-quality of this PTP Instance."; - reference - "IEEE Std 1588-2019: 8.2.3.7"; - uses clock-quality-grouping; - } - - leaf grandmaster-priority1 { - type uint8; - description - "The IEEE Std 1588 priority1 of the Grandmaster PTP - Instance. - This value is initialized with - default-ds/priority1 of this PTP Instance."; - reference - "IEEE Std 1588-2019: 8.2.3.8"; - } - - leaf grandmaster-priority2 { - type uint8; - description - "The IEEE Std 1588 priority2 of the Grandmaster PTP - Instance. - This value is initialized with - default-ds/priority2 of this PTP Instance."; - reference - "IEEE Std 1588-2019: 8.2.3.9"; - } - - container protocol-address { - description - "The value of parent-ds/protocol-address is the - description-port-ds/protocol-address of the PTP Port - that issues the Sync messages used in synchronizing - this PTP Instance."; - reference - "IEEE Std 1588-2019: 8.2.3.10"; - uses port-address-grouping; - } - } - - container time-properties-ds { - description - "Provides data learned from the Announce message - received from the current Grandmaster PTP Instance."; - reference - "IEEE Std 1588-2019: 8.2.4"; - - 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 - "IEEE Std 1588-2019: 8.2.4.3"; - } - - leaf current-utc-offset { - when "../current-utc-offset-valid='true'"; - type int16; - description - "Specified as in IERS Bulletin C, this provides - the offset from UTC (TAI - UTC). The offset is in - units of seconds."; - reference - "IEEE Std 1588-2019: 7.2.4, 8.2.4.2"; - } - - 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 - "IEEE Std 1588-2019: 8.2.4.4"; - } - - 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 - "IEEE Std 1588-2019: 8.2.4.5"; - } - - 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 - "IEEE Std 1588-2019: 3.1.82, 8.2.4.6"; - } - - 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 - "IEEE Std 1588-2019: 3.1.82, 8.2.4.7"; - } - - 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 - "IEEE Std 1588-2019: 7.2.1, 8.2.4.8"; - } - - leaf time-source { - type uint8; - description - "The source of time used by the Grandmaster - PTP Instance."; - reference - "IEEE Std 1588-2019: 7.6.2.8, 8.2.4.9"; - } - } - - container description-ds { - description - "Provides descriptive information for the PTP Instance."; - reference - "IEEE Std 1588-2019: 8.2.5"; - - leaf manufacturer-identity { - type binary { - length "3"; - } - config false; - description - "3-octet OUI or CID owned by the manufacturer of the - PTP Instance, assigned by the IEEE Registration - Authority."; - reference - "IEEE Std 1588-2019: 8.2.5.2"; - } - - 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 - "IEEE Std 1588-2019: 8.2.5.3"; - } - - 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 - "IEEE Std 1588-2019: 8.2.5.4"; - } - - leaf user-description { - type string { - length "0..128"; - } - default ""; - 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 - "IEEE Std 1588-2019: 8.2.5.5"; - } - } - - container fault-log-ds { - 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 - "IEEE Std 1588-2019: 8.2.6"; - - leaf number-of-fault-records { - type uint16; - config false; - description - "The number of fault records available in - fault-record-list."; - reference - "IEEE Std 1588-2019: 8.2.6.2"; - } - - list fault-record-list { - key "index"; - 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 written to true."; - reference - "IEEE Std 1588-2019: 8.2.6.3"; - - leaf index { - type uint16; - description - "Index to a record in fault-record-list, typically - sequential from 0 to (number-of-fault-records - 1)."; - } - - uses fault-record-grouping; - } - - leaf reset { - type boolean; - description - "Used to reset the fault log. - For management read, this member always returns false. - A management write of the value true shall cause the - contents of fault-record-list to be cleared, and - number-of-fault-records to be set to zero. - A management write of the value false has no effect, - and the PTP Instance should return a management error."; - reference - "IEEE Std 1588-2019: 8.2.6.4"; - } - } - - // The nonvolatileStorageDS of IEEE Std 1588-2019 8.2.7 - // is not applicable for YANG, since protocols like NETCONF - // and RESTCONF specify behavior for startup and default data. - - container path-trace-ds { - if-feature path-trace; - description - "Provides data for the optional path - trace mechanism."; - reference - "IEEE Std 1588-2019: 8.2.8, 16.2"; - - 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. By default, - path-trace-ds.enable shall be false unless otherwise - specified in the applicable PTP Profile."; - reference - "IEEE Std 1588-2019: 16.2.2.3.1"; - } - - leaf-list list { - type clock-identity-type; - config false; - description - "List of IEEE Std 1588 clock identity values - (type ClockIdentity), in the order provided in the - PATH_TRACE TLV."; - reference - "IEEE Std 1588-2019: 16.2.2.2.1"; - } - } - - container alternate-timescale-ds { - if-feature alternate-timescale; - description - "Provides data for the optional alternate - timescale offsets mechanism."; - reference - "IEEE Std 1588-2019: 8.2.9, 16.3"; - - 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 - "IEEE Std 1588-2019: 16.3.4.3.1"; - } - - 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 - "IEEE Std 1588-2019: 16.3.4.4.1"; - - 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 (timestamp-grouping) 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; - 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 - "IEEE Std 1588-2019: 8.2.10, 16.4"; - - leaf enable { - type boolean; - description - "Used to enable (true) or disable (false) the - holdover upgrade mechanism on the PTP Port."; - } - } - - container grandmaster-cluster-ds { - if-feature grandmaster-cluster; - description - "Provides data for the optional grandmaster - cluster mechanism."; - reference - "IEEE Std 1588-2019: 8.2.11, 17.2.3"; - - 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. The default value is specified - by the applicable PTP Profile."; - } - - 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-grouping; - } - } - - container acceptable-master-ds { - if-feature acceptable-master; - description - "Provides data for the optional acceptable - master table mechanism."; - reference - "IEEE Std 1588-2019: 8.2.12, 17.5.3"; - - leaf max-table-size { - type uint8; - 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."; - } - - 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 - clock-identity, port-number, and 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 - "IEEE Std 1588-2019: 16.3.4.4.1"; - - 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."; - } - - leaf acceptable-clock-identity { - type clock-identity-type; - config false; - description - "The IEEE Std 1588 clockIdentity of the - acceptable master."; - } - - leaf acceptable-port-number { - type uint16; - description - "IEEE Std 1588 portNumber of the - acceptable master."; - } - - 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 - "IEEE Std 1588-2019: 8.2.13, M.5.1"; - - leaf enable { - type boolean; - description - "Permits management control over the collection of - performance monitoring data, including - performance-monitoring-ds (PTP Instance), - port-ds-list[]/performance-monitoring-port-ds - (PTP Port of PTP Instance), and - common-services/cmlds/port-list[]/ - performance-monitoring-port-ds (CMLDS Link Port - associated with enabled PTP Port). Unless otherwise - specified in the applicable PTP Profile, the value - shall be initialized false."; - reference - "IEEE Std 1588-2019: M.5.1.1"; - } - - 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-type, indicating a value outside the - maximum range."; - reference - "IEEE Std 1588-2019: M.2, M.5.1.2"; - - leaf index { - type uint16; - description - "Index to each record in the list (0-99)."; - } - - leaf measurement-valid { - type boolean; - default false; - 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; - default false; - 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; - default 0; - 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"; - } - - leaf average-master-slave-delay { - type time-interval-type; - description - "Average of the MasterSlaveDelay for each 15 minute - and 24 hour interval."; - } - leaf minimum-master-slave-delay { - type time-interval-type; - description - "Minimum of the MasterSlaveDelay for each 15 minute - and 24 hour interval."; - } - leaf maximum-master-slave-delay { - type time-interval-type; - description - "Maximum of the MasterSlaveDelay for each 15 minute - and 24 hour interval."; - } - leaf stddev-master-slave-delay { - type time-interval-type; - description - "StdDev of the MasterSlaveDelay for each 15 minute - and 24 hour interval."; - } - leaf average-slave-master-delay { - type time-interval-type; - description - "Average of the SlaveMasterDelay for each 15 minute - and 24 hour interval."; - } - leaf minimum-slave-master-delay { - type time-interval-type; - description - "Minimum of the SlaveMasterDelay for each 15 minute - and 24 hour interval."; - } - leaf maximum-slave-master-delay { - type time-interval-type; - description - "Maximum of the SlaveMasterDelay for each 15 minute - and 24 hour interval."; - } - leaf stddev-slave-master-delay { - type time-interval-type; - description - "StdDev of the SlaveMasterDelay for each 15 minute - and 24 hour interval."; - } - leaf average-mean-path-delay { - type time-interval-type; - description - "Average of the for each 15 minute - and 24 hour interval."; - } - leaf minimum-mean-path-delay { - type time-interval-type; - description - "Minimum of the for each 15 minute - and 24 hour interval."; - } - leaf maximum-mean-path-delay { - type time-interval-type; - description - "Maximum of the for each 15 minute - and 24 hour interval."; - } - leaf stddev-mean-path-delay { - type time-interval-type; - description - "StdDev of the for each 15 minute - and 24 hour interval."; - } - leaf average-offset-from-master { - type time-interval-type; - description - "Average of the for each 15 minute - and 24 hour interval."; - } - leaf minimum-offset-from-master { - type time-interval-type; - description - "Minimum of the for each 15 minute - and 24 hour interval."; - } - leaf maximum-offset-from-master { - type time-interval-type; - description - "Maximum of the for each 15 minute - and 24 hour interval."; - } - leaf stddev-offset-from-master { - type time-interval-type; - description - "StdDev of the for each 15 minute - and 24 hour interval."; - } - } - } - - container enhanced-metrics-ds { - if-feature enhanced-metrics; - description - "Provides data for the optional enhanced - synchronization accuracy metrics mechanism."; - reference - "IEEE Std 1588-2019: 8.2.14, 16.12"; - - 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 - "IEEE Std 1588-2019: 8.2.14.2"; - } - } - - list port-ds-list { - key "port-number"; - description - "List of data for each PTP Port in the PTP Instance. - The list is structured as leafs for each member - of the IEEE Std 1588 portDS (primary port data set), - followed by containers for each optional port data set."; - reference - "IEEE Std 1588-2019: 8.1.4.2"; - - leaf port-number { - type uint16; - description - "IEEE Std 1588 portNumber, an index identifying - a specific PTP Port on a PTP Instance. - The portNumber values for the PTP Ports on a PTP Instance - shall be mutually distinct integers between - 1 and 0xFFFE, inclusive. - The all-zeros and all-ones portNumber values are used - for special purposes. The all-ones values typically - represents all ports, or wildcard. The all-zeros value - typically represents invalid or null. - - The data sets (i.e. information model) of IEEE Std - 1588 specify a member portDS.portIdentity, which - contains members clockIdentity and portNumber. - In this YANG data model, portIdentity is not modeled - in the port-ds-list, but its members are provided - as follows: - - portIdentity.portNumber is provided as this - port-number leaf in port-ds-list; and - - portIdentity.clockIdentity is provided as the - clock-identity leaf in default-ds of the PTP Instance - (i.e., ../../default-ds/clock-identity)."; - reference - "IEEE Std 1588-2019: 7.5.2.3, 8.2.15.2.1"; - } - - leaf port-state { - type port-state-enumeration; - default "initializing"; - description - "Current state of the protocol engine associated - with this PTP Port."; - reference - "IEEE Std 1588-2019: 9.2, 8.2.15.3.1"; - } - - 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"; - } - - 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). - Unless stated otherwise by the applicable PTP Profile or - product specifications, the default value is true."; - reference - "IEEE Std 1588-2019: 8.2.15.5.1"; - } - - 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 - "IEEE Std 1588-2019: 7.7.2.4, 8.2.15.3.2"; - } - - leaf mean-link-delay { - type time-interval-type; - default 0; - description - "If the value of the delay-mechanism leaf is p2p - (peer-to-peer), this value shall be an estimate of - the current one-way propagation delay on the PTP Link, - i.e., , 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/port-list[]/mean-link-delay. - If the value of the delay-mechanism leaf is e2e, - disabled, or special, this value shall be zero."; - reference - "IEEE Std 1588-2019: 8.2.15.3.3"; - } - - leaf peer-mean-path-delay { - type time-interval-type; - default 0; - 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 - "IEEE Std 1588-2008: 8.2.5.3.3"; - } - - 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 - "IEEE Std 1588-2019: 7.7.2.2, 8.2.15.4.1, 9.5.8"; - } - - 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 - "IEEE Std 1588-2019: 7.7.3.1, 8.2.15.4.2"; - } - - 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 - "IEEE Std 1588-2019: 7.7.2.3, 8.2.15.4.3, 9.5.9"; - } - - leaf delay-mechanism { - type delay-mechanism-enumeration; - description - "The path delay measuring mechanism used by the PTP Port in - computing (propagation delay). The default value - is implementation-specific unless otherwise stated in the - applicable PTP Profile."; - reference - "IEEE Std 1588-2019: 8.2.15.4.4"; - } - - 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 - "IEEE Std 1588-2019: 7.7.2.5, 8.2.15.4.5, 9.5.13"; - } - - 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 - "IEEE Std 1588-2019: 8.2.15.4.6"; - } - - 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 - "IEEE Std 1588-2019: 8.2.15.4.7"; - } - - leaf delay-asymmetry { - type time-interval-type; - description - "The value of IEEE Std 1588 - applicable to the PTP Port, which is the - difference in transmission time in one direction - as compared to the opposite direction."; - reference - "IEEE Std 1588-2019: 7.4.2, 8.2.15.4.8"; - } - - 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 implements - special behavior in the context of the state machines - that determine port-state."; - reference - "IEEE Std 1588-2019: 9.2.2.2, 8.2.15.5.2"; - } - - container timestamp-correction-port-ds { - if-feature timestamp-correction; - description - "Provides access to the configurable correction of - timestamps provided to the PTP protocol."; - reference - "IEEE Std 1588-2019: 8.2.16, 16.7"; - - leaf egress-latency { - type time-interval-type; - description - "Interval between the - provided for a PTP message and the time at which - the message timestamp point of the PTP message - crosses the reference plane."; - reference - "IEEE Std 1588-2008: 7.3.4.2, 8.2.16.2"; - } - - leaf ingress-latency { - type time-interval-type; - description - "interval between the time the message timestamp - point of an ingress PTP message crosses the - reference plane and the - provided for the PTP message."; - reference - "IEEE Std 1588-2008: 7.3.4.2, 8.2.16.3"; - } - } - - container asymmetry-correction-port-ds { - if-feature asymmetry-correction; - description - "Provides access to asymmetry correction parameters - that are used to compute the value of ."; - reference - "IEEE Std 1588-2019: 8.2.17, 16.8"; - - leaf enable { - type boolean; - description - "When enable is false, the asymmetry correction - mechanism is disabled on this PTP Port. - When enable is true, the asymmetry correction - mechanism is enabled on this PTP Port. - By default, this mechanism shall be disabled - unless otherwise specified in the applicable - PTP Profile."; - reference - "IEEE Std 1588-2019: 8.2.17.4"; - } - - leaf constant-asymmetry { - type time-interval-type; - description - "Constant asymmetry used to fine adjust the - dynamically calculated value of ."; - reference - "IEEE Std 1588-2008: 8.2.17.2"; - } - - leaf scaled-delay-coefficient { - type relative-difference-type; - description - "This is the (α)."; - reference - "IEEE Std 1588-2008: 7.4.3, 8.2.17.3"; - } - } - - container description-port-ds { - description - "Provides descriptive information for the PTP Port."; - reference - "IEEE Std 1588-2019: 8.2.18"; - - leaf profile-identifier { - type binary { - length "6"; - } - description - "When profile-identifier is supported, its value - shall identify the PTP Profile implemented by the - PTP Port, and its value shall be assigned by the - creator of the PTP Profile. The profile identifier - is six octets that identify the PTP Profile's - organization, number within the organization, - and version."; - reference - "IEEE Std 1588-2019: 20.3.3, 8.2.18.2"; - } - - container protocol-address { - description - "Protocol address which is used as the source address by - the network transport protocol for this PTP Port."; - reference - "IEEE Std 1588-2019: 8.2.18.3"; - uses port-address-grouping; - } - } - - container unicast-negotiation-port-ds { - if-feature unicast-negotiation; - description - "Provides management access to the optional unicast - negotiation mechanism."; - reference - "IEEE Std 1588-2019: 8.2.19, 16.1"; - - 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. - By default, this mechanism shall be disabled - unless otherwise specified in the applicable - PTP Profile."; - reference - "IEEE Std 1588-2019: 8.2.19.2"; - } - } - - container alternate-master-port-ds { - if-feature alternate-master; - description - "Provides management access to the optional alternate - master mechanism."; - reference - "IEEE Std 1588-2019: 8.2.20, 17.3.3"; - - leaf number-of-alt-masters { - type uint8; - default 0; - description - "Limits the number of PTP Ports that can - simultaneously transmit messages with the - alternate master flag set to TRUE."; - reference - "IEEE Std 1588-2019: 17.3.3.2.1"; - } - - 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. The default value is specified - by the applicable PTP Profile"; - reference - "IEEE Std 1588-2019: 17.3.3.2.2"; - } - - 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. The default value is specified - by the applicable PTP Profile"; - reference - "IEEE Std 1588-2019: 17.3.3.2.3"; - } - } - - container unicast-discovery-port-ds { - if-feature unicast-discovery; - description - "Provides management access to the optional unicast - discovery mechanism."; - reference - "IEEE Std 1588-2019: 8.2.21, 17.4.3"; - - 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. The default value is - specified by the applicable PTP Profile."; - } - - 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-grouping; - } - } - - container acceptable-master-port-ds { - if-feature acceptable-master; - description - "Provides management access to the optional acceptable - master mechanism."; - reference - "IEEE Std 1588-2019: 8.2.22, 17.5.4"; - - 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 - "IEEE Std 1588-2019: 17.5.4.2.1"; - } - } - - 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 - "IEEE Std 1588-2019: 8.2.23, Annex O"; - - 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 - "IEEE Std 1588-2019: O.4.1"; - } - - leaf tx-coherent-is-required { - type boolean; - description - "Specifies whether the L1Sync port is required - to be a transmit coherent port."; - reference - "IEEE Std 1588-2019: O.4.2"; - } - - leaf rx-coherent-is-required { - type boolean; - description - "Specifies whether the L1Sync port is required - to be a receive coherent port."; - reference - "IEEE Std 1588-2019: O.4.3"; - } - - leaf congruent-is-required { - type boolean; - description - "Specifies whether the L1Sync port is required - to be a congruent port."; - reference - "IEEE Std 1588-2019: O.4.4"; - } - - leaf opt-params-enabled { - type boolean; - description - "Specifies whether the L1Sync port transmitting - the L1_SYNC TLV extends this TLV with optional - parameters."; - reference - "IEEE Std 1588-2019: O.4.5"; - } - - 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 - "IEEE Std 1588-2019: O.4.6"; - } - - leaf l1sync-receipt-timeout { - type uint8; - description - "Number of elapsed IEEE Std 1588 L1SyncIntervals that - must pass without reception of the L1_SYNC TLV before - the L1_SYNC TLV reception timeout occurs."; - reference - "IEEE Std 1588-2019: O.4.7"; - } - - 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 - "IEEE Std 1588-2019: O.5.3.1"; - } - - leaf is-tx-coherent { - type boolean; - config false; - description - "True when the L1Sync port is a transmit coherent - port."; - reference - "IEEE Std 1588-2019: O.5.3.2"; - } - - leaf is-rx-coherent { - type boolean; - config false; - description - "True when the L1Sync port is a receive coherent - port."; - reference - "IEEE Std 1588-2019: O.5.3.3"; - } - - leaf is-congruent { - type boolean; - config false; - description - "True when the L1Sync port is a congruent port."; - reference - "IEEE Std 1588-2019: O.5.3.4"; - } - - leaf l1sync-state { - type l1sync-state-enumeration; - config false; - description - "Current state of the L1Sync state machine associated - with this L1Sync port."; - reference - "IEEE Std 1588-2019: O.5.3.5"; - } - - leaf peer-tx-coherent-is-required { - type boolean; - description - "Specifies whether the peer L1Sync port - is required to be a transmit coherent port - (as received in the L1_SYNC TLV)."; - reference - "IEEE Std 1588-2019: O.5.3.6"; - } - - leaf peer-rx-coherent-is-required { - type boolean; - description - "Specifies whether the peer L1Sync port - is required to be a receive coherent port. - (as received in the L1_SYNC TLV)."; - reference - "IEEE Std 1588-2019: O.5.3.7"; - } - - leaf peer-congruent-is-required { - type boolean; - description - "Specifies whether the peer L1Sync port - is required to be a congruent port. - (as received in the L1_SYNC TLV)."; - reference - "IEEE Std 1588-2019: O.5.3.8"; - } - - 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 - "IEEE Std 1588-2019: O.5.3.9"; - } - - 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 - "IEEE Std 1588-2019: O.5.3.10"; - } - - 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 - "IEEE Std 1588-2019: O.5.3.11"; - } - } - - 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 - "IEEE Std 1588-2019: 8.2.24, Annex O"; - - 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 - "IEEE Std 1588-2019: O.8.4.2.1"; - } - - leaf phase-offset-tx-valid { - type boolean; - config false; - description - "True if and only if the values of the transmission - frequency offset parameters (phase-offset-tx - and phase-offset-tx-timestamp) are valid."; - reference - "IEEE Std 1588-2019: O.8.4.3.1"; - } - - leaf phase-offset-tx { - type time-interval-type; - 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 - "IEEE Std 1588-2019: O.8.4.3.3"; - } - - container phase-offset-tx-timestamp { - config false; - description - "Transmission phase offset timestamp - for the associated transmission phase offset."; - reference - "IEEE Std 1588-2019: O.8.4.3.4"; - - uses timestamp-grouping; - } - - 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 - "IEEE Std 1588-2019: O.8.4.3.2"; - } - - leaf frequency-offset-tx { - type time-interval-type; - 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 - "IEEE Std 1588-2019: O.8.4.3.5"; - } - - container frequency-offset-tx-timestamp { - config false; - description - "Transmission frquency offset timestamp - for the associated transmission frequency - offset."; - reference - "IEEE Std 1588-2019: O.8.4.3.6"; - - uses timestamp-grouping; - } - } - - container communication-cap-port-ds { - config false; - description - "Provides data for multicast/unicast communication - capabilities."; - reference - "IEEE Std 1588-2019: 8.2.25"; - - container sync { - description - "Communication capabilities of the PTP Port with - respect to sending Sync messages."; - - uses communication-capabilities-grouping; - } - - container delay-resp { - description - "Communication capabilities of the PTP Port with - respect to sending Delay_Resp messages."; - - uses communication-capabilities-grouping; - } - } - - container performance-monitoring-port-ds { - if-feature performance-monitoring; - description - "Provides data for the optional performance - monitoring mechanism, scoped to each PTP Port."; - reference - "IEEE Std 1588-2019: 8.2.26, M.5.2"; - - 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-type, indicating a value outside the - maximum range."; - reference - "IEEE Std 1588-2019: M.2, M.5.2.1"; - - leaf index { - type uint16; - description - "Index to each record in the list (0-99)."; - } - - leaf pm-time { - type yang:timestamp; - default 0; - 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"; - } - - leaf average-mean-link-delay { - type time-interval-type; - description - "Average of the for each 15 minute - and 24 hour interval."; - } - leaf min-mean-link-delay { - type time-interval-type; - description - "Minimum of the for each 15 minute - and 24 hour interval."; - } - leaf max-mean-link-delay { - type time-interval-type; - description - "Maximum of the for each 15 minute - and 24 hour interval."; - } - leaf stddev-mean-link-delay { - type time-interval-type; - description - "StdDev of the for each 15 minute - and 24 hour interval."; - } - } - - list record-list { - key "index"; - max-elements 99; - config false; - description - "List of performance monitoring records for the - PTP Port, unrelated 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 - "IEEE Std 1588-2019: M.3, M.5.2.2"; - - leaf index { - type uint16; - description - "Index to each record in the list (0-99)."; - } - - leaf pm-time { - type yang:timestamp; - default 0; - 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"; - } - - leaf announce-tx { - type yang:zero-based-counter32; - description - "Counter indicating the number of Announce - messages that have been transmitted for each - 15 minute and 24 hour 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 each 15 minute and 24 hour 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 each 15 minute and 24 hour interval."; - } - leaf sync-tx { - type yang:zero-based-counter32; - description - "Counter indicating the number of Sync - messages that have been transmitted for each - 15 minute and 24 hour interval."; - } - leaf sync-rx { - type yang:zero-based-counter32; - description - "Counter indicating the number of Sync - messages that have been received for each - received for each 15 minute and 24 hour interval"; - } - leaf follow-up-tx { - type yang:zero-based-counter32; - description - "Counter indicating the number of Follow_Up - messages that have been transmitted for each - 15 minute and 24 hour interval."; - } - leaf follow-up-rx { - type yang:zero-based-counter32; - description - "Counter indicating the number of Follow_Up - messages that have been received for each - received for each 15 minute and 24 hour interval"; - } - leaf delay-req-tx { - type yang:zero-based-counter32; - description - "Counter indicating the number of Delay_Req - messages that have been transmitted for each - 15 minute and 24 hour interval."; - } - leaf delay-req-rx { - type yang:zero-based-counter32; - description - "Counter indicating the number of Delay_Req - messages that have been received for each - received for each 15 minute and 24 hour interval"; - } - leaf delay-resp-tx { - type yang:zero-based-counter32; - description - "Counter indicating the number of Delay_Resp - messages that have been transmitted for each - 15 minute and 24 hour interval."; - } - leaf delay-resp-rx { - type yang:zero-based-counter32; - description - "Counter indicating the number of Delay_Resp - messages that have been received for each - received for each 15 minute and 24 hour interval"; - } - leaf pdelay-req-tx { - type yang:zero-based-counter32; - description - "Counter indicating the number of Pdelay_Req - messages that have been transmitted for each - 15 minute and 24 hour interval."; - } - leaf pdelay-req-rx { - type yang:zero-based-counter32; - description - "Counter indicating the number of Pdelay_Req - messages that have been received for each - received for each 15 minute and 24 hour interval"; - } - leaf pdelay-resp-tx { - type yang:zero-based-counter32; - description - "Counter indicating the number of Pdelay_Resp - messages that have been transmitted for each - 15 minute and 24 hour interval."; - } - leaf pdelay-resp-rx { - type yang:zero-based-counter32; - description - "Counter indicating the number of Pdelay_Resp - messages that have been received for each - received for each 15 minute and 24 hour 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 each 15 minute and - 24 hour 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 each 15 minute and - 24 hour interval."; - } - } - } - - container common-services-port { - description - "Provides management access to the common services, - scoped to each PTP Port."; - reference - "IEEE Std 1588-2019: 8.2.27, 16.6.5"; - - leaf cmlds-link-port-port-number { - if-feature cmlds; - type uint16; - 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/port-list[]/port-number."; - reference - "IEEE Std 1588-2019: 16.6.5.1.1.1"; - } - } - - 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 - "IEEE Std 1588-2019: 8.2.28, 17.6.3"; - - leaf desired-state { - type port-state-enumeration; - 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-state) to a - desired value."; - reference - "IEEE Std 1588-2019: 17.6.3.2"; - } - } - - 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 - "IEEE Std 1588-2019: 8.2.29, 16.11.6"; - - leaf rx-sync-timing-enable { - type boolean; - description - "When true, compute and transmit the - SLAVE_RX_SYNC_TIMING_DATA TLV. The default is - false unless specified in the applicable PTP profile."; - reference - "IEEE Std 1588-2019: 16.11.6.2"; - } - - leaf rx-sync-timing-events { - type uint8; - default 0; - description - "Indicates the number of events to report per - SLAVE_RX_SYNC_TIMING_DATA TLV."; - reference - "IEEE Std 1588-2019: 16.11.6.3"; - } - - leaf rx-sync-computed-enable { - type boolean; - description - "When true, compute and transmit the - SLAVE_RX_SYNC_COMPUTED_DATA TLV. The default is - false unless specified in the applicable PTP profile."; - reference - "IEEE Std 1588-2019: 16.11.6.2"; - } - - leaf rx-sync-computed-events { - type uint8; - default 0; - description - "Indicates the number of events to report per - SLAVE_RX_SYNC_COMPUTED_DATA TLV."; - reference - "IEEE Std 1588-2019: 16.11.6.4"; - } - - leaf tx-timestamps-enable { - type boolean; - description - "When true, compute and transmit the - SLAVE_TX_EVENT_TIMESTAMPS TLV. The default is - false unless specified in the applicable PTP profile."; - reference - "IEEE Std 1588-2019: 16.11.6.2"; - } - - leaf tx-timestamps-events { - type uint8; - default 0; - description - "Indicates the number of events to report per - SLAVE_TX_EVENT_TIMESTAMPS TLV."; - reference - "IEEE Std 1588-2019: 16.11.6.5"; - } - - leaf tx-timestamps-event-type { - type uint8; - default 1; - 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. The default - of 1 corresponds to Delay_Req."; - reference - "IEEE Std 1588-2019: 16.11.6.6"; - } - } - } - } - - 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/instance-list[]), such that each Transparent - Clock supports a single PTP Instance and domain."; - reference - "IEEE Std 1588-2019: 8.3.1"; - - leaf clock-identity { - type clock-identity-type; - config false; - status deprecated; - description - "The clockIdentity attribute of the local clock."; - reference - "IEEE Std 1588-2008: 8.3.2.2.1, 7.6.2.1"; - } - - leaf number-ports { - type uint16; - status deprecated; - description - "The number of PTP Ports of the device."; - reference - "IEEE Std 1588-2008: 8.3.2.2.2"; - } - - leaf delay-mechanism { - type delay-mechanism-enumeration; - status deprecated; - description - "The propagation delay measuring mechanism (e2e or p2p)."; - reference - "IEEE Std 1588-2008: 8.3.2.3.1"; - } - - leaf primary-domain { - type uint8; - default 0; - status deprecated; - description - "The domainNumber of the primary syntonization domain."; - reference - "IEEE Std 1588-2008: 8.3.2.3.2, 10.1"; - } - } - - list transparent-clock-port-ds-list { - key "port-number"; - status deprecated; - description - "This list of 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/instance-list[]/post-ds-list[]), such that - each Transparent Clock supports a single PTP Instance - and domain."; - reference - "IEEE Std 1588-2019: 8.3.1"; - - leaf port-number { - type uint16; - status deprecated; - description - "IEEE Std 1588 portNumber, an index identifying - a specific PTP Port on a PTP Instance. - - The data sets (i.e. information model) of IEEE Std - 1588 specify transparentClockPortDS.portIdentity, which - contains members clockIdentity and portNumber. - In this YANG data model, portIdentity is not modeled - in the transparent-clock-port-ds-list, but its members - are provided as follows: - - portIdentity.portNumber is provided as this - port-number leaf in transparent-clock-port-ds-list; and - - portIdentity.clockIdentity is provided as the - clock-identity leaf in default-ds - (i.e., ../../transparent-clock-default-ds/ - clock-identity)."; - reference - "IEEE Std 1588-2008: 8.3.3.2.1"; - } - - 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 - "IEEE Std 1588-2008: 8.3.3.3.1"; - } - - leaf faulty-flag { - type boolean; - default false; - status deprecated; - description - "Shall be true if the port is faulty and false - if the port is operating normally."; - reference - "IEEE Std 1588-2008: 8.3.3.3.2"; - } - - leaf peer-mean-path-delay { - type time-interval-type; - default 0; - 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 - "IEEE Std 1588-2008: 8.3.3.3.3"; - } - } - - 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 - and 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 - as well as the as the - 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 - "IEEE Std 1588-2019: 8.2.27, 16.6"; - - container default-ds { - leaf clock-identity { - type clock-identity-type; - config false; - description - "The IEEE Std 1588 clockIdentity used by CMLDS."; - reference - "IEEE Std 1588-2019: 16.6.4.1.2.1"; - } - - leaf number-link-ports { - type uint16; - description - "The number of Link Ports of CMLDS."; - reference - "IEEE Std 1588-2019: 16.6.4.1.2.2"; - } - } - - list port-list { - key "port-number"; - 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 - "IEEE Std 1588-2019: 16.6.4.2"; - - leaf port-number { - type uint16; - description - "CMLDS specifies a Link Port, which represents the - physical port that the service uses to transport - PTP messages. This leaf provides the - mapping of the Link Port in CMLDS to the - corresponding PTP Ports in PTP Instances. - The Link Port is identified using an IEEE Std 1588 - portNumber. The corresponding Link Port's - portNumber is located in each PTP Port's - hierarchy at port-ds-list[]/common-services-port/ - cmlds-link-port-port-number. - - The data sets (i.e. information model) of IEEE Std - 1588 specify a member cmldsLinkPortDS.portIdentity, - which contains members clockIdentity and portNumber. - In this YANG data model, portIdentity is not modeled - in the CMLDS port-list, but its members are provided - as follows: - - portIdentity.portNumber is provided as this - port-number leaf in port-list; and - - portIdentity.clockIdentity is provided as the - clock-identity leaf in default-ds of CMLDS."; - reference - "IEEE Std 1588-2019: 16.6.4.2.2.1"; - } - - leaf underlying-interface { - type if:interface-ref; - config false; - 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"; - } - - 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 - "IEEE Std 1588-2019: 16.6.3.1, 16.6.4.2.2.2"; - } - - leaf sdo-id { - type uint16; - config false; - description - "The IEEE Std 1588 sdoId used by this Link Port. - This sdoId is not configurable, - since its value is determined by the transport - mechanism of the Link Port."; - reference - "IEEE Std 1588-2019: 16.6.3.1"; - } - - 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 - "IEEE Std 1588-2019: 16.6.3.2, 16.6.4.2.3.1"; - } - - leaf mean-link-delay { - type time-interval-type; - config false; - description - "Estimate of the current one-way propagation delay - on the PTP Link, i.e., , 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 - "IEEE Std 1588-2019: 16.6.3.2, 16.6.4.2.3.1"; - } - - 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., , - scaled as specified in the standard. - This value is obtained from the - CommonMeanLinkDelayInformation structure returned - by CMLDS."; - reference - "IEEE Std 1588-2019: 16.6.3.2, 16.6.4.2.3.1"; - } - - 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 - "IEEE Std 1588-2019: 7.7.2.5, 16.6.4.2.4.1"; - } - - 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 - "IEEE Std 1588-2019: 16.6.4.2.4.2"; - } - - 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 - "IEEE Std 1588-2019: 16.6.4.2.4.3"; - } - - leaf delay-asymmetry { - type time-interval-type; - description - "The value of IEEE Std 1588 - applicable to the Link Port, which is the - difference in transmission time in one direction - as compared to the opposite direction."; - reference - "IEEE Std 1588-2019: 7.4.2, 16.6.4.2.4.3"; - } - - container timestamp-correction-port-ds { - if-feature timestamp-correction; - description - "Provides access to the configurable correction of - timestamps provided to the PTP protocol."; - reference - "IEEE Std 1588-2019: 16.6.4.3, 16.7"; - - leaf egress-latency { - type time-interval-type; - default 0; - description - "Interval between the - provided for a PTP message and the time at which - the message timestamp point of the PTP message - crosses the reference plane."; - reference - "IEEE Std 1588-2008: 7.3.4.2, 8.2.16.2"; - } - - leaf ingress-latency { - type time-interval-type; - default 0; - description - "interval between the time the message timestamp - point of an ingress PTP message crosses the - reference plane and the - provided for the PTP message."; - reference - "IEEE Std 1588-2008: 7.3.4.2, 8.2.16.3"; - } - } - - container asymmetry-correction-port-ds { - if-feature asymmetry-correction; - description - "Provides access to asymmetry correction parameters - that are used to compute the value of ."; - reference - "IEEE Std 1588-2019: 16.6.4.4, 16.8"; - - leaf enable { - type boolean; - description - "When enable is false, the asymmetry correction - mechanism is disabled on this PTP Port. - When enable is true, the asymmetry correction - mechanism is enabled on this PTP Port. - By default, this mechanism shall be disabled - unless otherwise specified in the applicable - PTP Profile."; - reference - "IEEE Std 1588-2019: 8.2.17.4"; - } - - leaf constant-asymmetry { - type time-interval-type; - description - "Constant asymmetry used to fine adjust the - dynamically calculated value of ."; - reference - "IEEE Std 1588-2008: 8.2.17.2"; - } - - leaf scaled-delay-coefficient { - type relative-difference-type; - description - "This is the (α)."; - reference - "IEEE Std 1588-2008: 7.4.3, 8.2.17.3"; - } - } - - container performance-monitoring-port-ds { - if-feature performance-monitoring; - description - "Provides data for the optional performance - monitoring mechanism, scoped to each PTP Port."; - reference - "IEEE Std 1588-2019: 16.6.4.5, M.5.2"; - - 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-type, indicating a value outside the - maximum range."; - reference - "IEEE Std 1588-2019: M.2, M.5.2.1"; - - leaf index { - type uint16; - description - "Index to each record in the list (0-99)."; - } - - leaf pm-time { - type yang:timestamp; - default 0; - 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"; - } - - leaf average-mean-link-delay { - type time-interval-type; - description - "Average of the for each 15 minute - and 24 hour interval."; - } - leaf min-mean-link-delay { - type time-interval-type; - description - "Minimum of the for each 15 minute - and 24 hour interval."; - } - leaf max-mean-link-delay { - type time-interval-type; - description - "Maximum of the for each 15 minute - and 24 hour interval."; - } - leaf stddev-mean-link-delay { - type time-interval-type; - description - "StdDev of the for each 15 minute - and 24 hour interval."; - } - } - - list record-list { - key "index"; - max-elements 99; - config false; - description - "List of performance monitoring records for the - PTP Port, unrelated 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."; - reference - "IEEE Std 1588-2019: M.3, M.5.2.2"; - - leaf index { - type uint16; - description - "Index to each record in the list (0-99)."; - } - - leaf pm-time { - type yang:timestamp; - default 0; - 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"; - } - - leaf announce-tx { - type uint32; - description - "Counter indicating the number of Announce - messages that have been transmitted for each - 15 minute and 24 hour interval."; - } - leaf announce-rx { - type uint32; - description - "Counter indicating the number of Announce - messages from the current GM that have been - received for each 15 minute and 24 hour interval."; - } - leaf announce-foreign-rx { - type uint32; - description - "Counter indicating the total number of Announce - messages from the foreign Masters that have been - received for each 15 minute and 24 hour interval."; - } - leaf sync-tx { - type uint32; - description - "Counter indicating the number of Sync - messages that have been transmitted for each - 15 minute and 24 hour interval."; - } - leaf sync-rx { - type uint32; - description - "Counter indicating the number of Sync - messages that have been received for each - received for each 15 minute and 24 hour interval"; - } - leaf follow-up-tx { - type uint32; - description - "Counter indicating the number of Follow_Up - messages that have been transmitted for each - 15 minute and 24 hour interval."; - } - leaf follow-up-rx { - type uint32; - description - "Counter indicating the number of Follow_Up - messages that have been received for each - received for each 15 minute and 24 hour interval"; - } - leaf delay-req-tx { - type uint32; - description - "Counter indicating the number of Delay_Req - messages that have been transmitted for each - 15 minute and 24 hour interval."; - } - leaf delay-req-rx { - type uint32; - description - "Counter indicating the number of Delay_Req - messages that have been received for each - received for each 15 minute and 24 hour interval"; - } - leaf delay-resp-tx { - type uint32; - description - "Counter indicating the number of Delay_Resp - messages that have been transmitted for each - 15 minute and 24 hour interval."; - } - leaf delay-resp-rx { - type uint32; - description - "Counter indicating the number of Delay_Resp - messages that have been received for each - received for each 15 minute and 24 hour interval"; - } - leaf pdelay-req-tx { - type uint32; - description - "Counter indicating the number of Pdelay_Req - messages that have been transmitted for each - 15 minute and 24 hour interval."; - } - leaf pdelay-req-rx { - type uint32; - description - "Counter indicating the number of Pdelay_Req - messages that have been received for each - received for each 15 minute and 24 hour interval"; - } - leaf pdelay-resp-tx { - type uint32; - description - "Counter indicating the number of Pdelay_Resp - messages that have been transmitted for each - 15 minute and 24 hour interval."; - } - leaf pdelay-resp-rx { - type uint32; - description - "Counter indicating the number of Pdelay_Resp - messages that have been received for each - received for each 15 minute and 24 hour interval"; - } - leaf pdelay-resp-follow-up-tx { - type uint32; - description - "Counter indicating the number of - Pdelay_Resp_Follow_Up messages that have - been transmitted for each 15 minute and - 24 hour interval."; - } - leaf pdelay-resp-follow-up-rx { - type uint32; - description - "Counter indicating the number of - Pdelay_Resp_Follow_Up messages that have - been transmitted for each 15 minute and - 24 hour interval."; - } - } - } - } - } - } - } - - // TODO: Notifications are deferred, on the assumption - // that the 1588 Working Group might want to design for - // consistency with the new 1588 MIB. -} diff --git a/standard/ieee/draft/1588/ieee1588-ptp-ms.yang b/standard/ieee/draft/1588/ieee1588-ptp-ms.yang deleted file mode 100644 index 500ad0b4d..000000000 --- a/standard/ieee/draft/1588/ieee1588-ptp-ms.yang +++ /dev/null @@ -1,4307 +0,0 @@ -module ieee1588-ptp-ms { - yang-version 1.1; - namespace urn:ieee:std:1588:yang:ieee1588-ptp-ms; - prefix "ptp-ms"; - - 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'. - - NOTE regarding terminology (two YANG modules): - To accommodate the need by some organizations to use the - original terminology specified by IEEE Std 1588, and the - need by some other organizations to use the alternative - terminology specified in 4.4 of IEEE Std 1588g-2022, - two YANG modules are provided by IEEE Std 1588e (MIB and - YANG Data Models). For a detailed explanation, see 15.4.2.11 - of IEEE Std 1588e. - This module uses the original terminology specified by - IEEE Std 1588 (master/slave)."; - - revision 2023-08-14 { - 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, - // and this comment will be removed. - // This is the ieee1588-ptp-ms module of the - // draft D1.4 for amendment IEEE P1588e. - // The D1.4 draft applies to the 4th Standards Association - // recirculation ballot. - - 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 and - 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 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 this interval."; - } - leaf minimum-mean-path-delay { - type time-interval; - description - "Minimum of the for this interval."; - } - leaf maximum-mean-path-delay { - type time-interval; - description - "Maximum of the for this interval."; - } - leaf stddev-mean-path-delay { - type time-interval; - description - "StdDev of the for this interval."; - } - leaf average-offset-from-master { - type time-interval; - description - "Average of the for this interval."; - } - leaf minimum-offset-from-master { - type time-interval; - description - "Minimum of the for this interval."; - } - leaf maximum-offset-from-master { - type time-interval; - description - "Maximum of the for this interval."; - } - leaf stddev-offset-from-master { - type time-interval; - description - "StdDev of the 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 for this interval."; - } - leaf min-mean-link-delay { - type time-interval; - description - "Minimum of the for this interval."; - } - leaf max-mean-link-delay { - type time-interval; - description - "Maximum of the for this interval."; - } - leaf stddev-mean-link-delay { - type time-interval; - description - "StdDev of the 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. - p2p or common-p2p: mean propagation time over the - PTP Link, i.e. - 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 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"; - config false; - max-elements 99; - 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 (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 - 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 - 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 - 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 , - when the mechanism to calculate - 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 ."; - reference - "8.2.17.3 of IEEE Std 1588-2019"; - } - - leaf enable { - type boolean; - description - "When this value is true, the mechanism to calculate - 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"; - config false; - max-elements 99; - 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"; - config false; - max-elements 99; - 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 - and 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 - as well as the as the - 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., , 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., , - 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 - 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 - 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 - 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 - ."; - reference - "16.6.4.4 of IEEE Std 1588-2019"; - - leaf enable { - type boolean; - description - "When this value is true, the mechanism to calculate - 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 , - when the mechanism to calculate - 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 ."; - 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"; - config false; - max-elements 99; - 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"; - config false; - max-elements 99; - 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; - } - } - } - } - } - } - } -} diff --git a/standard/ieee/draft/1588/ieee1588-ptp-tt.yang b/standard/ieee/draft/1588/ieee1588-ptp-tt.yang deleted file mode 100644 index 072335f83..000000000 --- a/standard/ieee/draft/1588/ieee1588-ptp-tt.yang +++ /dev/null @@ -1,4332 +0,0 @@ -module ieee1588-ptp-tt { - yang-version 1.1; - namespace urn:ieee:std:1588:yang:ieee1588-ptp-tt; - prefix "ptp-tt"; - - 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'. - - NOTE regarding terminology (two YANG modules): - To accommodate the need by some organizations to use the - original terminology specified by IEEE Std 1588, and the - need by some other organizations to use the alternative - terminology specified in 4.4 of IEEE Std 1588g-2022, - two YANG modules are provided by IEEE Std 1588e (MIB and - YANG Data Models). For a detailed explanation, see 15.4.2.11 - of IEEE Std 1588e. - This module uses the alternative terminology specified in - 4.4 of IEEE Std 1588g-2022 (timeTransmitter/timeReceiver)."; - - revision 2023-08-14 { - 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, - // and this comment will be removed. - // This is the ieee1588-ptp-tt module of the - // draft D1.4 for amendment IEEE P1588e. - // The D1.4 draft applies to the 4th Standards Association - // recirculation ballot. - - 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 and - 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 on a Direct PTP Link - between two PTP Instances connected using an applicable - bidirectional medium."; - reference - "16.8 of IEEE Std 1588-2019"; - } - - feature time-receiver-monitoring { - description - "Mechanism for monitoring timing information in a PTP Port - in the timereceiver state. The time-receiver-monitoring feature - specifies TLVs that the TimeReceiver 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-time-transmitter { - description - "Mechanism for PTP Ports on a PTP Communication Path that - are not currently the time-transmitter port of that - PTP Communicatio 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 timeTransmitter 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-time-transmitter { - description - "Mechanism that allows PTP Ports in the time-receiver state - to be configured to refuse to synchronize to PTP Instances not - on the acceptable timeTransmitter 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 BTCA. 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-time-receiver-only { - base clock-class; - description - "A PTP Instance that is timeReceiver 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 - TimeTransmitter 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-time-transmitter { - 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 time-transmitter state except that it does not place - certain classes of PTP messages on the PTP Communication - Path associated with the PTP Port."; - } - enum time-transmitter { - 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 - TimeTransmitter Clock (receive time). The PTP Port can - potentially change to time-receiver 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 time-receiver - 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 time-receiver { - value 9; - description - "The PTP Port synchronizes to the PTP Port on the - PTP Communication Path that is in the time-transmitter - 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 - time-receiver state."; - reference - "Table J.1 of IEEE Std 1588-2019"; - - leaf average-time-transmitter-time-receiver-delay { - type time-interval; - description - "Average of the TimeTransmitterTimeReceiverDelay for this - interval."; - } - leaf minimum-time-transmitter-time-receiver-delay { - type time-interval; - description - "Minimum of the TimeTransmitterTimeReceiverDelay for this - interval."; - } - leaf maximum-time-transmitter-time-receiver-delay { - type time-interval; - description - "Maximum of the TimeTransmitterTimeReceiverDelay for this - interval."; - } - leaf stddev-time-transmitter-time-receiver-delay { - type time-interval; - description - "StdDev of the TimeTransmitterTimeReceiverDelay for this - interval."; - } - leaf average-time-receiver-time-transmitter-delay { - type time-interval; - description - "Average of the TimeReceiverTimeTransmitterDelay for this - interval."; - } - leaf minimum-time-receiver-time-transmitter-delay { - type time-interval; - description - "Minimum of the TimeReceiverTimeTransmitterDelay for this - interval."; - } - leaf maximum-time-receiver-time-transmitter-delay { - type time-interval; - description - "Maximum of the TimeReceiverTimeTransmitterDelay for this - interval."; - } - leaf stddev-time-receiver-time-transmitter-delay { - type time-interval; - description - "StdDev of the TimeReceiverTimeTransmitterDelay for this - interval."; - } - leaf average-mean-path-delay { - type time-interval; - description - "Average of the this interval."; - } - leaf minimum-mean-path-delay { - type time-interval; - description - "Minimum of the for this interval."; - } - leaf maximum-mean-path-delay { - type time-interval; - description - "Maximum of the for this interval."; - } - leaf stddev-mean-path-delay { - type time-interval; - description - "StdDev of the for this interval."; - } - leaf average-offset-from-time-transmitter { - type time-interval; - description - "Average of the for this - interval."; - } - leaf minimum-offset-from-time-transmitter { - type time-interval; - description - "Minimum of the for this - interval."; - } - leaf maximum-offset-from-time-transmitter { - type time-interval; - description - "Maximum of the for this - interval."; - } - leaf stddev-offset-from-time-transmitter { - type time-interval; - description - "StdDev of the 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 for this interval."; - } - leaf min-mean-link-delay { - type time-interval; - description - "Minimum of the for this interval."; - } - leaf max-mean-link-delay { - type time-interval; - description - "Maximum of the for this interval."; - } - leaf stddev-mean-link-delay { - type time-interval; - description - "StdDev of the 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 TimeTransmitters 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 TimeTransmitter Clock Algorithm - (BTCA), 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 TimeTransmitter Clock Algorithm (BTCA) 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 time-receiver-only { - type boolean; - description - "The value of time-receiver-only shall be true if the - PTP Instance is a time-receiver-only PTP Instance - (false for not time-receiver-only). - The time-receiver-only member can be true for - Ordinary Clocks only. - When time-receiver-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 TimeTransmitter Clock Algorithm (BTCA). - 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 TimeTransmitter Clock Algorithm (BTCA). - 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-time-transmitter { - type time-interval; - config false; - description - "The current value of the time difference between - a TimeTransmitter PTP Instance and a - TimeReceiver PTP Instance as computed by the - TimeReceiver PTP Instance. - NOTE - When a PTP Profile requires a Boundary - Clock to transfer offset information internally - from TimeReceiver PTP Port to TimeTransmitter - 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 TimeTransmitter PTP Instance and a - TimeReceiver PTP Instance as computed by the - TimeReceiver PTP Instance. - If the PTP Instance has no PTP Port in time-receiver or - uncalibrated state, this returns zero. - Otherwise, the TimeReceiver PTP Port returns this value - depending on its delay-mechanism: - e2e: mean propagation time over the - PTP Communication Path, i.e. - p2p or common-p2p: mean propagation time over the - PTP Link, i.e. - 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. time-transmitter 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 - TimeTransmitter 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 - TimeReceiver 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 TimeReceiver 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 - TimeReceiver 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 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-time-transmitter-ds { - if-feature acceptable-time-transmitter; - description - "Provides data for the optional acceptable - timeTransmitter 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 timeTransmitters 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 timeTransmitter."; - uses port-identity; - } - - leaf alternate-priority1 { - type uint8; - description - "The IEEE Std 1588 priority1 used as an alternate - for the acceptable timeTransmitter."; - } - } - } - - 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"; - config false; - max-elements 99; - 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-time-transmitter-time-receiver-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 TimeReceiver 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 (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 - 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 time-transmitter-only { - type boolean; - description - "If the value of time-transmitter-only is true, - the PTP Port shall be in the IEEE Std 1588 - timeTransmitterOnly mode. - If the value is false, the PTP Port shall not be - in the timeTransmitterOnly mode. - When time-transmitter-only is true, the PTP Port - can never enter the time-receiver 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 - 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 - 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 , - when the mechanism to calculate - 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 ."; - reference - "8.2.17.3 of IEEE Std 1588-2019"; - } - - leaf enable { - type boolean; - description - "When this value is true, the mechanism to calculate - 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-time-transmitter-port-ds { - if-feature alternate-time-transmitter; - description - "Provides management access to the optional alternate - timeTransmitter mechanism."; - reference - "17.3.3 of IEEE Std 1588-2019"; - - leaf number-of-alt-time-transmitters { - type uint8; - description - "Limits the number of PTP Ports that can - simultaneously transmit messages with the - alternate timeTransmitter 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 alternateTimeTransmitterFlag - 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 timeTransmitter - 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-time-transmitter-port-ds { - if-feature acceptable-time-transmitter; - description - "Provides management access to the optional - acceptable timeTransmitter mechanism."; - reference - "17.5.4 of IEEE Std 1588-2019"; - - leaf enable { - type boolean; - description - "When enable is false, the acceptable - timeTransmitter 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 timeTransmitter - 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"; - config false; - max-elements 99; - 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"; - config false; - max-elements 99; - 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 time-receiver-monitoring-port-ds { - if-feature time-receiver-monitoring; - description - "Provides management access to the optional - TimeReceiver Event Monitor service, scoped to each - PTP Port."; - reference - "16.11.6 of IEEE Std 1588-2019"; - - leaf enable { - type bits { - bit time-receiver-rx-sync-timing-data { - position 0; - description - "True activates generation of the - TIME_RECEIVER_RX_SYNC_TIMING_DATA TLV."; - } - bit time-receiver-rx-sync-computed-data { - position 1; - description - "True activates generation of the - TIME_RECEIVER_RX_SYNC_COMPUTED_DATA TLV."; - } - bit time-receiver-tx-event-timestamps { - position 2; - description - "True activates generation of the - TIME_RECEIVER_TX_EVENT_TIMESTAMPS_DATA TLV."; - } - } - description - "Each bit (boolean flag) indicates whether - the data for a corresponding timeReceiver event - monitoring TLV is computed, and whether the data - is transmitted by the timeReceiver."; - 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 - TIME_RECEIVER_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 - TIME_RECEIVER_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 - TIME_RECEIVER_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 - TIME_RECEIVER_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 - TIME_RECEIVER_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 - TIME_RECEIVER_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 - and 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 - as well as the as the - 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., , 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., , - 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 - 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 - 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 - 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 - ."; - reference - "16.6.4.4 of IEEE Std 1588-2019"; - - leaf enable { - type boolean; - description - "When this value is true, the mechanism to calculate - 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 , - when the mechanism to calculate - 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 ."; - 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"; - config false; - max-elements 99; - 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"; - config false; - max-elements 99; - 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; - } - } - } - } - } - } - } -}