netconfcentral logo

ietf-ptp-dataset@2017-01-09



  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-01-09" {
      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 uint8;
        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