ietf-ptp

This YANG module defines a data model for the configuration of IEEE Std 1588-2008 clocks, and also for retrieval of the state da...

  • Version: 2019-05-07

    ietf-ptp@2019-05-07


    
      module ietf-ptp {
    
        yang-version 1.1;
    
        namespace
          "urn:ietf:params:xml:ns:yang:ietf-ptp";
    
        prefix ptp;
    
        import ietf-interfaces {
          prefix if;
          reference
            "RFC 8343: A YANG Data Model for Interface Management";
    
    
        }
    
        organization "IETF TICTOC Working Group";
    
        contact
          "WG Web:   https://datatracker.ietf.org/wg/tictoc/
         WG List:  <mailto:tictoc@ietf.org>
         Editor:   Yuanlong Jiang
                   <mailto:jiangyuanlong@huawei.com>
         Editor:   Rodney Cummings
                   <mailto:rodney.cummings@ni.com>";
    
        description
          "This YANG module defines a data model for the configuration
         of IEEE Std 1588-2008 clocks, and also for retrieval of the state
         data of IEEE Std 1588-2008 clocks.";
    
        revision "2019-05-07" {
          description "Initial version";
          reference
            "RFC 8575: YANG Data Model for the Precision Time Protocol";
    
        }
    
    
        typedef delay-mechanism-enumeration {
          type enumeration {
            enum "e2e" {
              value 1;
              description
                "The port uses the delay request-response mechanism.";
            }
            enum "p2p" {
              value 2;
              description
                "The port uses the peer delay mechanism.";
            }
            enum "disabled" {
              value 254;
              description
                "The port does not implement any delay mechanism.";
            }
          }
          description
            "The propagation-delay measuring option used by the
           port.  Values for this enumeration are specified
           by the IEEE Std 1588 standard exclusively.";
          reference
            "IEEE Std 1588-2008: 8.2.5.4.4";
    
        }
    
        typedef port-state-enumeration {
          type enumeration {
            enum "initializing" {
              value 1;
              description
                "The port is initializing its data sets, hardware, and
               communication facilities.";
            }
            enum "faulty" {
              value 2;
              description
                "The port is in the fault state.";
            }
            enum "disabled" {
              value 3;
              description
                "The port is disabled and is not communicating PTP
               messages (other than possibly PTP management
               messages).";
            }
            enum "listening" {
              value 4;
              description
                "The port is listening for an Announce message.";
            }
            enum "pre-master" {
              value 5;
              description
                "The port is in the pre-master state.";
            }
            enum "master" {
              value 6;
              description
                "The port is behaving as a master port.";
            }
            enum "passive" {
              value 7;
              description
                "The port is in the passive state.";
            }
            enum "uncalibrated" {
              value 8;
              description
                "A master port has been selected, but the port is still
               in the uncalibrated state.";
            }
            enum "slave" {
              value 9;
              description
                "The port is synchronizing to the selected master port.";
            }
          }
          description
            "The current state of the protocol engine associated
           with the port.  Values for this enumeration are specified
           by the IEEE Std 1588 standard exclusively.";
          reference
            "IEEE Std 1588-2008: 8.2.5.3.1, 9.2.5";
    
        }
    
        typedef time-interval-type {
          type int64;
          description
            "Derived data type for time interval, represented in units of
            nanoseconds and multiplied by 2^16";
          reference
            "IEEE Std 1588-2008: 5.3.2";
    
        }
    
        typedef clock-identity-type {
          type binary {
            length "8";
          }
          description
            "Derived data type to identify a clock";
          reference
            "IEEE Std 1588-2008: 5.3.4";
    
        }
    
        container ptp {
          description
            "The PTP struct containing all attributes of PTP data set,
            other optional PTP attributes can be augmented as well.";
          list instance-list {
            key "instance-number";
            description
              "List of one or more PTP data sets in the device (see IEEE
             Std 1588-2008 subclause 6.3).
             Each PTP data set represents a distinct instance of
             PTP implementation in the device (i.e., distinct
             Ordinary Clock or Boundary Clock).";
            leaf instance-number {
              type uint32;
              description
                "The instance number of the current PTP instance.
               This instance number is used for management purposes
               only.  This instance number does not represent the PTP
               domain number and is not used in PTP messages.";
            }
    
            container default-ds {
              description
                "The default data set of the clock (see IEEE Std
               1588-2008 subclause 8.2.1).  This data set represents
               the configuration/state required for operation
               of Precision Time Protocol (PTP) state machines.";
              reference
                "IEEE Std 1588-2008: 8.2.1";
    
              leaf two-step-flag {
                type boolean;
                description
                  "When set to true, the clock is a two-step clock;
                 otherwise,the clock is a one-step clock.";
              }
    
              leaf clock-identity {
                type clock-identity-type;
                config false;
                description
                  "The clockIdentity of the local clock.";
              }
    
              leaf number-ports {
                type uint16;
                description
                  "The number of PTP ports on the instance.";
              }
    
              container clock-quality {
                description
                  "The clockQuality of the local clock.";
                leaf clock-class {
                  type uint8;
                  default "248";
                  description
                    "The clockClass denotes the traceability of the time
    or frequency distributed by the clock.";
                }
    
                leaf clock-accuracy {
                  type uint8;
                  description
                    "The clockAccuracy indicates the expected accuracy
    of the clock.";
                }
    
                leaf offset-scaled-log-variance {
                  type uint16;
                  description
                    "The offsetScaledLogVariance provides an estimate of
    the variations of the clock from a linear timescale
    when it is not synchronized to another clock
    using the protocol.";
                }
              }  // container clock-quality
    
              leaf priority1 {
                type uint8;
                description
                  "The priority1 attribute of the local clock.";
              }
    
              leaf priority2 {
                type uint8;
                description
                  "The priority2 attribute of the local clock.";
              }
    
              leaf domain-number {
                type uint8;
                description
                  "The domain number of the current syntonization
                 domain.";
              }
    
              leaf slave-only {
                type boolean;
                description
                  "When set to true, the clock is a slave-only clock.";
              }
            }  // container default-ds
    
            container current-ds {
              description
                "The current data set of the clock (see IEEE Std
               1588-2008 subclause 8.2.2).  This data set represents
               local states learned from the exchange of
               Precision Time Protocol (PTP) messages.";
              reference
                "IEEE Std 1588-2008: 8.2.2";
    
              leaf steps-removed {
                type uint16;
                default "0";
                description
                  "The number of communication paths traversed
                 between the local clock and the grandmaster clock.";
              }
    
              leaf offset-from-master {
                type time-interval-type;
                description
                  "The current value of the time difference between
                 a master and a slave clock as computed by the slave.";
              }
    
              leaf mean-path-delay {
                type time-interval-type;
                description
                  "The current value of the mean propagation time between
                 a master and a slave clock as computed by the slave.";
              }
            }  // container current-ds
    
            container parent-ds {
              description
                "The parent data set of the clock (see IEEE Std 1588-2008
               subclause 8.2.3).";
              reference
                "IEEE Std 1588-2008: 8.2.3";
    
              container parent-port-identity {
                description
                  "The portIdentity of the port on the master, it
                 contains two members: clockIdentity and portNumber.";
                reference
                  "IEEE Std 1588-2008: 5.3.5";
    
                leaf clock-identity {
                  type clock-identity-type;
                  description
                    "Identity of the clock.";
                }
    
                leaf port-number {
                  type uint16;
                  description "Port number.";
                }
              }  // container parent-port-identity
    
              leaf parent-stats {
                type boolean;
                default "false";
                description
                  "When set to true, the values of
                 observedParentOffsetScaledLogVariance and
                 observedParentClockPhaseChangeRate of parentDS
                 have been measured and are valid.";
              }
    
              leaf observed-parent-offset-scaled-log-variance {
                type uint16;
                default "65535";
                description
                  "An estimate of the parent clock's PTP variance
                 as observed by the slave clock.";
              }
    
              leaf observed-parent-clock-phase-change-rate {
                type int32;
                description
                  "An estimate of the parent clock's phase change rate
                 as observed by the slave clock.";
              }
    
              leaf grandmaster-identity {
                type clock-identity-type;
                description
                  "The clockIdentity attribute of the grandmaster clock.";
              }
    
              container grandmaster-clock-quality {
                description
                  "The clockQuality of the grandmaster clock.";
                leaf clock-class {
                  type uint8;
                  default "248";
                  description
                    "The clockClass denotes the traceability of the time
    or frequency distributed by the clock.";
                }
    
                leaf clock-accuracy {
                  type uint8;
                  description
                    "The clockAccuracy indicates the expected accuracy
    of the clock.";
                }
    
                leaf offset-scaled-log-variance {
                  type uint16;
                  description
                    "The offsetScaledLogVariance provides an estimate of
    the variations of the clock from a linear timescale
    when it is not synchronized to another clock
    using the protocol.";
                }
              }  // container grandmaster-clock-quality
    
              leaf grandmaster-priority1 {
                type uint8;
                description
                  "The priority1 attribute of the grandmaster clock.";
              }
    
              leaf grandmaster-priority2 {
                type uint8;
                description
                  "The priority2 attribute of the grandmaster clock.";
              }
            }  // container parent-ds
    
            container time-properties-ds {
              description
                "The timeProperties data set of the clock (see
               IEEE Std 1588-2008 subclause 8.2.4).";
              reference
                "IEEE Std 1588-2008: 8.2.4";
    
              leaf current-utc-offset-valid {
                type boolean;
                description
                  "When set to true, the current UTC offset is valid.";
              }
    
              leaf current-utc-offset {
                when
                  "../current-utc-offset-valid='true'";
                type int16;
                description
                  "The offset between TAI and UTC when the epoch of the
                 PTP system is the PTP epoch in units of seconds, i.e.,
                 when ptp-timescale is TRUE; otherwise, the value has
                 no meaning.";
              }
    
              leaf leap59 {
                type boolean;
                description
                  "When set to true, the last minute of the current UTC
                 day contains 59 seconds.";
              }
    
              leaf leap61 {
                type boolean;
                description
                  "When set to true, the last minute of the current UTC
                 day contains 61 seconds.";
              }
    
              leaf time-traceable {
                type boolean;
                description
                  "When set to true, the timescale and the
                 currentUtcOffset are traceable to a primary
                 reference.";
              }
    
              leaf frequency-traceable {
                type boolean;
                description
                  "When set to true, the frequency determining the
                 timescale is traceable to a primary reference.";
              }
    
              leaf ptp-timescale {
                type boolean;
                description
                  "When set to true, the clock timescale of the
                 grandmaster clock is PTP; otherwise, the timescale is
                 ARB (arbitrary).";
              }
    
              leaf time-source {
                type uint8;
                description
                  "The source of time used by the grandmaster clock.";
              }
            }  // container time-properties-ds
    
            list port-ds-list {
              key "port-number";
              description
                "List of port data sets of the clock (see IEEE Std
               1588-2008 subclause 8.2.5).";
              reference
                "IEEE Std 1588-2008: 8.2.5";
    
              leaf port-number {
                type uint16;
                description
                  "Port number.
                 The data sets (i.e., information model) of IEEE Std
                 1588-2008 specify a member portDS.portIdentity, which
                 uses a typed struct with members clockIdentity and
                 portNumber.
    
                 In this YANG data model, portIdentity is not modeled
                 in the port-ds-list.  However, 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 instance
                 (i.e., ../../default-ds/clock-identity).";
              }
    
              leaf port-state {
                type port-state-enumeration;
                default "initializing";
                description
                  "Current state associated with the port.";
              }
    
              leaf underlying-interface {
                type if:interface-ref;
                description
                  "Reference to the configured underlying interface that
                 is used by this PTP port (see RFC 8343).";
                reference
                  "RFC 8343: A YANG Data Model for Interface Management";
    
              }
    
              leaf log-min-delay-req-interval {
                type int8;
                description
                  "The base-2 logarithm of the minDelayReqInterval
                 (the minimum permitted mean time interval between
                 successive Delay_Req messages).";
              }
    
              leaf peer-mean-path-delay {
                type time-interval-type;
                default "0";
                description
                  "An estimate of the current one-way propagation delay
                 on the link when the delayMechanism is P2P; otherwise,
                 it is zero.";
              }
    
              leaf log-announce-interval {
                type int8;
                description
                  "The base-2 logarithm of the mean
                 announceInterval (mean time interval between
                 successive Announce messages).";
              }
    
              leaf announce-receipt-timeout {
                type uint8;
                description
                  "The number of announceIntervals that have to pass
                 without receipt of an Announce message before the
                 occurrence of the event ANNOUNCE_RECEIPT_TIMEOUT_
                 EXPIRES.";
              }
    
              leaf log-sync-interval {
                type int8;
                description
                  "The base-2 logarithm of the mean SyncInterval
                 for multicast messages.  The rates for unicast
                 transmissions are negotiated separately on a per-port
                 basis and are not constrained by this attribute.";
              }
    
              leaf delay-mechanism {
                type delay-mechanism-enumeration;
                description
                  "The propagation delay measuring option used by the
                 port in computing meanPathDelay.";
              }
    
              leaf log-min-pdelay-req-interval {
                type int8;
                description
                  "The base-2 logarithm of the
                 minPdelayReqInterval (minimum permitted mean time
                 interval between successive Pdelay_Req messages).";
              }
    
              leaf version-number {
                type uint8;
                description
                  "The PTP version in use on the port.";
              }
            }  // list port-ds-list
          }  // list instance-list
    
          container transparent-clock-default-ds {
            description
              "The members of the transparentClockDefault data set (see
             IEEE Std 1588-2008 subclause 8.3.2).";
            reference
              "IEEE Std 1588-2008: 8.3.2";
    
            leaf clock-identity {
              type clock-identity-type;
              config false;
              description
                "The clockIdentity of the transparent clock.";
            }
    
            leaf number-ports {
              type uint16;
              description
                "The number of PTP ports on the transparent clock.";
            }
    
            leaf delay-mechanism {
              type delay-mechanism-enumeration;
              description
                "The propagation delay measuring option
               used by the transparent clock.";
            }
    
            leaf primary-domain {
              type uint8;
              default "0";
              description
                "The domainNumber of the primary syntonization domain (see
               IEEE Std 1588-2008 subclause 10.1).";
              reference
                "IEEE Std 1588-2008: 10.1";
    
            }
          }  // container transparent-clock-default-ds
    
          list transparent-clock-port-ds-list {
            key "port-number";
            description
              "List of transparentClockPort data sets of the transparent
             clock (see IEEE Std 1588-2008 subclause 8.3.3).";
            reference
              "IEEE Std 1588-2008: 8.3.3";
    
            leaf port-number {
              type uint16;
              description
                "Port number.
               The data sets (i.e., information model) of IEEE Std
               1588-2008 specify a member
               transparentClockPortDS.portIdentity, which uses a typed
               struct with members clockIdentity and portNumber.
    
               In this YANG data model, portIdentity is not modeled in
               the transparent-clock-port-ds-list.  However, its
               members are provided as follows:
               portIdentity.portNumber is provided as this leaf member
               in transparent-clock-port-ds-list and
               portIdentity.clockIdentity is provided as the
               clock-identity leaf in transparent-clock-default-ds
               (i.e., ../../transparent-clock-default-ds/clock-
               identity).";
            }
    
            leaf log-min-pdelay-req-interval {
              type int8;
              description
                "The logarithm to the base 2 of the
               minPdelayReqInterval (minimum permitted mean time
               interval between successive Pdelay_Req messages).";
            }
    
            leaf faulty-flag {
              type boolean;
              default "false";
              description
                "When set to true, the port is faulty.";
            }
    
            leaf peer-mean-path-delay {
              type time-interval-type;
              default "0";
              description
                "An estimate of the current one-way propagation delay
               on the link when the delayMechanism is P2P; otherwise,
               it is zero.";
            }
          }  // list transparent-clock-port-ds-list
        }  // container ptp
      }  // module ietf-ptp
    

© 2023 YumaWorks, Inc. All rights reserved.