netconfcentral logo

ietf-ptp-dataset@2017-02-08



  module ietf-ptp-dataset {

    yang-version 1;

    namespace
      "urn:ietf:params:xml:ns:yang:ietf-ptp-dataset";

    prefix ptp-dataset;

    organization "IETF TICTOC Working Group";

    contact
      "WG Web:   http://tools.ietf.org/wg/tictoc/
       WG List:  <mailto:tictoc@ietf.org>
       WG Chair: Karen O'Donoghue
                 <mailto:odonoghue@isoc.org>
       WG Chair: Yaakov Stein
                 <mailto: Yaakov_s@rad.com>
       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 1588-2008 clocks, and also for retrieval of the state
    data of IEEE 1588-2008 clocks.";

    revision "2017-02-08" {
      description "Version 4.0";
      reference
        "draft-ietf-tictoc-1588v2-yang";

    }


    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 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 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
      multipled 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";

    }

    grouping port-identity-grouping {
      description
        "Derived data type to identify a port, which 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";
      }
    }  // grouping port-identity-grouping

    grouping clock-quality-grouping {
      description
        "Derived data type for quality of a clock, which contains
      clockClass, clockAccuracy and offsetScaledLogVariance.";
      reference
        "IEEE Std 1588-2008: 5.3.7";

      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.";
      }
    }  // grouping clock-quality-grouping

    grouping default-ds-entry {
      description
        "Collection of members of the default data set.";
      leaf two-step-flag {
        type boolean;
        description
          "When set, the clock is a two-step clock; otherwise,
            the clock is a one-step clock.";
      }

      leaf clock-identity {
        type clock-identity-type;
        description
          "The clockIdentity of the local clock";
      }

      leaf number-ports {
        type uint16;
        description
          "The number of PTP ports on the device.";
      }

      container clock-quality {
        description
          "The clockQuality of the local clock.";
        uses clock-quality-grouping;
      }  // 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, the clock is a slave-only clock.";
      }
    }  // grouping default-ds-entry

    grouping current-ds-entry {
      description
        "Collection of members of current data set.";
      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.";
      }
    }  // grouping current-ds-entry

    grouping parent-ds-entry {
      description
        "Collection of members of the parent data set.";
      container parent-port-identity {
        description
          "The portIdentity of the port on the master";
        uses port-identity-grouping;
      }  // container parent-port-identity

      leaf parent-stats {
        type boolean;
        default 'false';
        description
          "When set, the values of
         observedParentOffsetScaledLogVariance and
         observedParentClockPhaseChangeRate of parentDS
         have been measured and are valid.";
      }

      leaf observed-parent-offset-scaled-log-variance {
        type uint16;
        default '0xFFFF';
        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 binary {
          length "8";
        }
        description
          "The clockIdentity attribute of the grandmaster clock.";
      }

      container grandmaster-clock-quality {
        description
          "The clockQuality of the grandmaster clock.";
        uses clock-quality-grouping;
      }  // 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.";
      }
    }  // grouping parent-ds-entry

    grouping time-properties-ds-entry {
      description
        "Collection of members of the timeProperties data set.";
      leaf current-utc-offset-valid {
        type boolean;
        description
          "When set, the current UTC offset is valid.";
      }

      leaf current-utc-offset {
        type int16;
        description
          "The offset between TAI and UTC when the epoch of the
         PTP system is the PTP epoch, i.e., when ptp-timescale 
         is TRUE; otherwise, the value has no meaning.";
      }

      leaf leap59 {
        type boolean;
        description
          "When set, the last minute of the current UTC day
            contains 59 seconds.";
      }

      leaf leap61 {
        type boolean;
        description
          "When set, the last minute of the current UTC day
            contains 61 seconds.";
      }

      leaf time-traceable {
        type boolean;
        description
          "When set, the timescale and the currentUtcOffset are
            traceable to a primary reference.";
      }

      leaf frequency-traceable {
        type boolean;
        description
          "When set, the frequency determining the timescale
         is traceable to a primary reference.";
      }

      leaf ptp-timescale {
        type boolean;
        description
          "When set, 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.";
      }
    }  // grouping time-properties-ds-entry

    grouping port-ds-entry {
      description
        "Collection of members of the port data set.";
      container port-identity {
        description
          "The portIdentity attribute of the local port.";
        uses port-identity-grouping;
      }  // container port-identity

      leaf port-state {
        type port-state-enumeration;
        default "INITIALIZING";
        description
          "Current state associated with the port.";
      }

      leaf log-min-delay-req-interval {
        type int8;
        description
          "The base-two 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-two logarithm of the mean
         announceInterval (mean time interval between
         successive Announce messages).";
      }

      leaf announce-receipt-timeout {
        type uint8;
        description
          "The number of announceInterval 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-two 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-two 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.";
      }
    }  // grouping port-ds-entry

    grouping transparent-clock-default-ds-entry {
      description
        "Collection of members of the transparentClockDefault data
        set (default data set for a transparent clock).";
      leaf clock-identity {
        type clock-identity-type;
        description
          "The clockIdentity of the transparent clock.";
      }

      leaf number-ports {
        type uint16;
        description
          "The number of PTP ports on the device.";
      }

      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.";
      }
    }  // grouping transparent-clock-default-ds-entry

    grouping transparent-clock-port-ds-entry {
      description
        "Collection of members of the transparentClockPort data
       set (port data set for a transparent clock).";
      container port-identity {
        description
          "The portIdentity of the local port.";
        uses port-identity-grouping;
      }  // container port-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, 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.";
      }
    }  // grouping transparent-clock-port-ds-entry

    list instance-list {
      key "instance-number";
      description
        "List of one or more PTP datasets in the device, one for 
      each domain (see IEEE 1588-2008 subclause 6.3). 
      Each PTP dataset represents a distinct instance of 
      PTP implementation in the device (i.e. distinct 
      Ordinary Clock or Boundary Clock).";
      leaf instance-number {
        type uint16;
        description
          "The instance number of the current PTP instance";
      }

      container default-ds {
        description
          "The default data set of the clock.";
        uses default-ds-entry;
      }  // container default-ds

      container current-ds {
        description
          "The current data set of the clock.";
        uses current-ds-entry;
      }  // container current-ds

      container parent-ds {
        description
          "The parent data set of the clock.";
        uses parent-ds-entry;
      }  // container parent-ds

      container time-properties-ds {
        description
          "The timeProperties data set of the clock.";
        uses time-properties-ds-entry;
      }  // container time-properties-ds

      list port-ds-list {
        key "port-number";
        description
          "List of port data sets of the clock.";
        leaf port-number {
          type leafref {
            path "../port-identity/port-number";
          }
          description
            "Refers to the portNumber memer of
           portDS.portIdentity.";
        }

        uses port-ds-entry;
      }  // list port-ds-list
    }  // list instance-list

    container transparent-clock-default-ds {
      description
        "The members of the transparentClockDefault Data Set";
      uses transparent-clock-default-ds-entry;
    }  // container transparent-clock-default-ds

    list transparent-clock-port-ds-list {
      key "port-number";
      description
        "List of transparentClockPort data sets
       of the transparent clock.";
      leaf port-number {
        type leafref {
          path "../port-identity/port-number";
        }
        description
          "Refers to the portNumber memer
          of transparentClockPortDS.portIdentity.";
      }

      uses transparent-clock-port-ds-entry;
    }  // list transparent-clock-port-ds-list
  }  // module ietf-ptp-dataset