Internet DRAFT - draft-benhadjsaid-detnet-gptp-yang

draft-benhadjsaid-detnet-gptp-yang







Deterministic Networking                                S. Ben Hadj Said
Internet-Draft                                                    M. Boc
Intended status: Standards Track                               CEA, LIST
Expires: September 30, 2018                               March 29, 2018


                       YANG Model of IEEE 802.1AS
                 draft-benhadjsaid-detnet-gptp-yang-00

Abstract

   This document describes a YANG data model for the management of IEEE
   802.1AS module in network devices.  This data model includes
   configuration data and state data (status information and counters
   for the collection of statistics).

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at https://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on September 30, 2018.

Copyright Notice

   Copyright (c) 2018 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (https://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.




Ben Hadj Said & Boc    Expires September 30, 2018               [Page 1]

Internet-Draft           DetNet gptp yang model               March 2018


Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  Terminology . . . . . . . . . . . . . . . . . . . . . . . . .   3
   3.  Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . . .   3
   4.  IEEE 802.1AS: Overview  . . . . . . . . . . . . . . . . . . .   4
   5.  IEEE 802.1AS YANG data model  . . . . . . . . . . . . . . . .   6
   6.  Security Considerations . . . . . . . . . . . . . . . . . . .  41
   7.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  42
   8.  Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  42
   9.  Acknowledgements  . . . . . . . . . . . . . . . . . . . . . .  42
   10. References  . . . . . . . . . . . . . . . . . . . . . . . . .  42
     10.1.  Normative References . . . . . . . . . . . . . . . . . .  42
     10.2.  Informative References . . . . . . . . . . . . . . . . .  43
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  43

1.  Introduction

   Multiple use cases described in [I-D.ietf-detnet-use-cases] have
   highlighted the need for Deterministic Networking (DetNet) service
   where an accurate time synchronization, low packet loss rates, and
   low and stable end-to-end latencies are ensured.  According to
   [I-D.ietf-detnet-flow-information-model], one way to provide the
   DetNet service for Layer 2 flows is to use the Time-Sensitive
   Networking (TSN) mechanisms that were specified by IEEE 802.1 TSN
   working group [IEEE8021TSN] for a bridged or virtually bridged Local
   Area Networks.  The documents [I-D.ietf-detnet-architecture] (see
   Section 4) and [I-D.ietf-detnet-flow-information-model] target to use
   the Centralized Network / Distributed user model out of the three
   models specified by [IEEE8021Qcc].  In this model, the network
   configuration is done via a central entity via a network management
   protocol (e.g.  SNMP, NETCONF [RFC6241], etc.).

   Time synchronization is a key feature for DetNet service.  To ensure
   an accurate synchronization, the IEEE 802.1 TSN group is relying on
   the standard IEEE 802.1AS (generalized Precision Time Protocol
   gPTP)[IEEE8021AS].  This standard allows to synchronize clocks of the
   different Ethernet devices across bridged or virtually bridged Local
   Area Network.  The principle of IEEE 802.1AS consists in electing,
   dynamically, one of the devices to be the grandmaster to whom the
   rest of devices synchronize their clocks thanks to the Best Master
   Clock Algorithm (BMCA).  IEEE 802.1AS requires that several
   parameters to be configured with the same value in each device
   participating in the time synchronization domain.  For example, the
   frequency with which the Sync messages are sent via each link should
   be the same in the whole gPTP domain; otherwise it may impact the
   time synchronization accuracy.  In order to avoid such cases, the
   management/control plane entity shall be able to configure the IEEE



Ben Hadj Said & Boc    Expires September 30, 2018               [Page 2]

Internet-Draft           DetNet gptp yang model               March 2018


   802.1AS module in each network node in data plane in an adequate
   manner.

   The IEEE 802.1AS has specified its Management Information Base
   (IEEE8021-AS-MIB)[IEEE8021AS].  This kind of data model limit the
   management and control plane entity to use only SNMP protocol for
   IEEE 802.1AS configuration.  Providing the IEEE 802.1AS YANG data
   model is crucial as it promotes interoperability between networking
   devices, centralized management entity (e.g.  SDN controller, etc.)
   and applications from different manufacturers.  For instance, several
   protocols such as NETCONF [RFC6241] and RESTCONF
   [I-D.draft-ietf-netconf-restconf] can use this YANG data model to get
   state information related to IEEE 802.1AS module or to configure some
   of its parameters.

   This document describes the YANG data model [RFC6020] [RFC7950] of
   the IEEE 802.1AS module [IEEE8021AS].

   The definition of ietf-gptp module is based the standard IEEE 802.1AS
   as well as its IEEE8021-AS-MIB module.  The model has been validated
   with pyang tool and the on-line tool yangdump-
   pro[http://www.netconfcentral.org/run_yangdump].

2.  Terminology

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in RFC 2119 [RFC2119].

   MIB: Management Information Base

   gPTP: generalized Precision Time Protocol, i.e. IEEE 802.1AS

   YANG: Yet Another Next Generation

3.  Tree Diagrams

   A simplified graphical representation of the data model is used in
   the YANG modules specified in this document.  The meaning of the
   symbols in these diagrams is as follows:

   o  Brackets "[" and "]" enclose list keys.

   o  Abbreviations before data node names: "rw" means
      configuration(read-write) and "ro" state data (read-only).

   o  Symbols after data node names: "?" means an optional node, "!"
      means a presence container, and "*" denotes a list and leaf-list.



Ben Hadj Said & Boc    Expires September 30, 2018               [Page 3]

Internet-Draft           DetNet gptp yang model               March 2018


   o  Parentheses enclose choice and case nodes, and case nodes are also
      marked with a colon (":").

   o  Ellipsis ("...") stands for contents of subtrees that are not
      shown.

4.  IEEE 802.1AS: Overview

   The tree diagram of IEEE 802.1AS data model is depicted in Figure 1.

module: ietf-gptp
  +--rw defaultDataSet
  |  +--ro clockIdentity?           clock_identity_type
  |  +--ro numberPorts?             uint32
  |  +--ro clockQuality
  |  |  +--ro clockClass?                uint8
  |  |  +--ro clockAccuracy?             uint8
  |  |  +--ro offsetScaledLogVariance?   uint16
  |  +--rw priority1?               uint32
  |  +--rw priority2?               uint32
  |  +--ro gmCapable?               boolean
  |  +--rw currentUtcOffset?        uint32
  |  +--rw currentUtcOffsetValid?   boolean
  |  +--rw leap59?                  boolean
  |  +--rw leap61?                  boolean
  |  +--ro timeTraceable?           boolean
  |  +--ro frequencyTraceable?      boolean
  |  +--ro timeSource?              time-source-enumeration
  +--ro currentDataSet
  |  +--ro stepsRemoved?                   int32
  |  +--ro offsetFromMaster
  |  |  +--ro offsetFromMasterHs?   int32
  |  |  +--ro offsetFromMasterMs?   int32
  |  |  +--ro offsetFromMasterLs?   int32
  |  +--ro lastGmPhaseChange
  |  |  +--ro lastGmPhaseChangeHs?   uint32
  |  |  +--ro lastGmPhaseChangeMs?   uint32
  |  |  +--ro lastGmPhaseChangeLs?   uint32
  |  +--ro lastGmFreqChange
  |  |  +--ro lastGmFreqChangeMs?   int32
  |  |  +--ro lastGmFreqChangeLs?   int32
  |  +--ro gmTimebaseIndicator?            uint32
  |  +--ro gmChangeCount?                  yang:counter32
  |  +--ro timeOfLastGmChangeEvent?        yang:timestamp
  |  +--ro timeOfLastGmFreqChangeEvent?    yang:timestamp
  |  +--ro timeOfLastGmPhaseChangeEvent?   yang:timestamp
  +--ro parentDataSet
  |  +--ro parentPortIdentity



Ben Hadj Said & Boc    Expires September 30, 2018               [Page 4]

Internet-Draft           DetNet gptp yang model               March 2018


  |  |  +--ro clockIdentity?   clock_identity_type
  |  |  +--ro portNumber?      uint32
  |  +--ro cumulativeRateRatio?       int32
  |  +--ro grandmasterIdentity?       clock_identity_type
  |  +--ro grandmasterClockQuality
  |  |  +--ro clockClass?                uint8
  |  |  +--ro clockAccuracy?             uint8
  |  |  +--ro offsetScaledLogVariance?   uint16
  |  +--ro grandmasterPriority1?      uint32
  |  +--ro grandmasterPriority2?      uint32
  +--ro timePropertiesDataSet
  |  +--ro currentUTCOffset?        int32
  |  +--ro currentUTCOffsetValid?   boolean
  |  +--ro leap59?                  boolean
  |  +--ro leap61?                  boolean
  |  +--ro timeTraceable?           boolean
  |  +--ro frequencyTraceable?      boolean
  |  +--ro timeSource?              time-source-enumeration
  +--rw portDataSet* [portNumber]
  |  +--ro bridgeBasePort                    bridge-port-number
  |  +--ro asIfIndex                         if-index
  |  +--rw portNumber                        uint32
  |  +--ro clockIdentity?                    clock_identity_type
  |  +--ro portRole?                         port-role-enumeration
  |  +--rw pttPortEnabled?                   boolean
  |  +--ro isMeasuringDelay?                 boolean
  |  +--ro asCapable?                        boolean
  |  +--ro neighborPropDelay
  |  |  +--ro neighborPropDelayHs?   uint32
  |  |  +--ro neighborPropDelayMs?   uint32
  |  |  +--ro neighborPropDelayLs?   uint32
  |  +--rw neighborPropDelayThresh
  |  |  +--rw neighborPropDelayThreshHs?   uint32
  |  |  +--rw neighborPropDelayThreshMs?   uint32
  |  |  +--rw neighborPropDelayThreshLs?   uint32
  |  +--rw delayAsymmetry
  |  |  +--rw delayAsymmetryHs?   uint32
  |  |  +--rw delayAsymmetryMs?   uint32
  |  |  +--rw delayAsymmetryLs?   uint32
  |  +--ro neighborRateRatio?                int32
  |  +--rw initialLogAnnounceInterval?       int32
  |  +--ro currentLogAnnounceInterval?       int32
  |  +--rw announceReceiptTimeout?           uint32
  |  +--rw initialLogSyncInterval?           int32
  |  +--rw currentLogSyncInterval?           int32
  |  +--rw syncReceiptTimeout?               uint32
  |  +--ro syncReceiptTimeoutTimeInterval
  |  |  +--ro syncReceiptTimeoutTimeIntervalHs?   uint32



Ben Hadj Said & Boc    Expires September 30, 2018               [Page 5]

Internet-Draft           DetNet gptp yang model               March 2018


  |  |  +--ro syncReceiptTimeoutTimeIntervalMs?   uint32
  |  |  +--ro syncReceiptTimeoutTimeIntervalLs?   uint32
  |  +--rw initialLogPdelayReqInterval?      int32
  |  +--ro currentLogPdelayReqInterval?      int32
  |  +--rw allowedLostResponses?             uint32
  |  +--ro versionNumber?                    uint32
  |  +--rw nup?                              uint64
  |  +--rw ndown?                            uint64
  |  +--rw acceptableMasterTableEnabled?     boolean
  +--ro portStatIfEntry* [portNumber]
  |  +--ro asIfIndex?                                if-index
  |  +--ro portNumber                                uint32
  |  +--ro statRxSyncCount?                          yang:counter32
  |  +--ro statRxFollowUpCount?                      yang:counter32
  |  +--ro statRxPdelayRequest?                      yang:counter32
  |  +--ro statRxPdelayResponse?                     yang:counter32
  |  +--ro statRxPdelayResponseFollowUp?             yang:counter32
  |  +--ro statRxAnnounce?                           yang:counter32
  |  +--ro statRxPTPPacketDiscard?                   yang:counter32
  |  +--ro statRxSyncReceiptTimeouts?                yang:counter32
  |  +--ro statAnnounceReceiptTimeouts?              yang:counter32
  |  +--ro statPdelayAllowedLostResponsesExceeded?   yang:counter32
  |  +--ro statTxSyncCount?                          yang:counter32
  |  +--ro statTxFollowUpCount?                      yang:counter32
  |  +--ro statTxPdelayRequest?                      yang:counter32
  |  +--ro statTxPdelayResponse?                     yang:counter32
  |  +--ro statTxPdelayResponseFollowUp?             yang:counter32
  |  +--ro statTxAnnounce?                           yang:counter32
  +--rw acceptableMasterTableDataSet
     +--ro acceptableMasterTableDSMaxTableSize?            uint16
     +--rw acceptableMasterTableDSActualTableSize?         uint16
     +--rw acceptableMasterTableDSacceptableMasterArray* [acceptableMasterTableDSMasterId]
        +--rw acceptableMasterTableDSMasterId       uint32
        +--rw acceptableMasterPortIdentity
        |  +--rw clockIdentity?   clock_identity_type
        |  +--rw portNumber?      uint32
        +--rw acceptableMasterAlternatePriority1?   uint32
        +--rw acceptableMasterRowStatus?            uint32

                  Figure 1: IEEE 802.1AS Model Structure

5.  IEEE 802.1AS YANG data model

<CODE BEGINS>
module ietf-gptp {

   namespace "urn:ietf:params:xml:ns:yang:ietf-gptp";




Ben Hadj Said & Boc    Expires September 30, 2018               [Page 6]

Internet-Draft           DetNet gptp yang model               March 2018


   prefix "gptp";

   import ietf-yang-types { prefix "yang";}
   import ieee802-dot1q-bridge { prefix "dot1q";}
   import ietf-interfaces { prefix "if";}

   organization "TBD";
   contact
      "Editor: Siwar Ben Hadj Said
               Email:siwar.benhadjsaid@cea.fr
               Michael Boc
               Email:michael.boc@cea.fr>";

   description
      "This module contains the YANG definition to configure
          IEEE 802.1AS-2011 timing and synchronization in IEEE 802.1Q
      bridged Local Area Networks.";

   revision "2018-03-28" {
      description "version 1.0";
      reference "draft-boc-ietf-gptp-yang-00.txt";
   }

   typedef clock_identity_type {
      type binary {
         length 8;
      }
      description
       "Represents an IEEE 802.1 MAC address represented in the
        'canonical' order defined by IEEE 802.1a, EUI-64. EUI-48
        converts to EUI-64 as specified by IEEE. The conversion
        assigns values 255 and 254 to octets 3 and 4, respectively,
        where octet 0 is the most significant and octet 7 the least.
        For example, EUI-48 of AC:DE:48:23:45:67 would extend to
        AC:DE:48:FF:FE:23:45:67.";
   }

   typedef time-source-enumeration {
      type enumeration {
         enum ATOMIC_CLOCK {
            value 16;
            description
             "Any device, or device directly connected to such a
              device, that is based on atomic resonance for frequency
              and that has been calibrated  against international
              standards for frequency and time";
         }
         enum GPS {



Ben Hadj Said & Boc    Expires September 30, 2018               [Page 7]

Internet-Draft           DetNet gptp yang model               March 2018


            value 32;
            description
               "Any device synchronized to any of the satellite
                systems that distribute time and frequency tied to
                international standards";
         }
         enum TERRESTRIAL_RADIO {
            value 48;
            description
            "Any device synchronized via any of the radio distribution
             systems that distribute time and frequency tied to
             international standards";
         }
         enum PTP {
            value 64;
            description
             "Any device synchronized to an IEEE 1588 PTP-based source
              of time external to the gPTP domain.";
         }
         enum NTP {
            value 80;
            description
             "Any device synchronized via NTP to servers that distribute
              time and frequency tied to international standards";
         }
         enum HAND_SET {
            value 96;
            description
             "Used in all cases for any device whose time has been set
              by means of a human interface based on observation of an
              international standards source of time to within the claimed
              clock accuracy";
         }
         enum OTHER {
            value 144;
            description
             "Any source of time and/or frequency not covered by other
              values, or for which the source is not known";
         }
         enum INTERNAL_OSCILLATOR {
            value 160;
            description
             "Any device whose frequency is not based on atomic resonance
              nor calibrated against international standards for frequency,
              and whose time is based on a free-running oscillator with
              epoch determined in an arbitrary or unknown manner";
         }
      }



Ben Hadj Said & Boc    Expires September 30, 2018               [Page 8]

Internet-Draft           DetNet gptp yang model               March 2018


      description
       "It indicates the type of source of time used by a clock master.";
      reference
       "IEEE 802.1AS: clause 8.6.2.7 and Table 8-3";
   }

   typedef port-role-enumeration {
      type enumeration {
         enum disabledPort {
            value 3;
            description
             "The port shall not place any messages on its communication
              path.
              In a boundary clock, no activity at the port shall be allowed
              to affect the activity at any other port of the boundary clock.
              A port in this state shall discard all PTP received messages
              except for management messages.
              Any port of the time-aware system for which portEnabled,
              pttPortEnabled, and asCapable are not all TRUE.";
         }
         enum masterPort {
            value 6;
            description
             "The port is behaving as a master port.";
         }
         enum passivePort {
            value 7;
            description
             "The port shall not place any messages on its communication
              path except for Pdelay_Req, Pdelay_Resp,
              Pdelay_Resp_Follow_Up,
              or signaling messages, or management messages that are a
              required response to another management message.";
         }
         enum slavePort {
            value 9;
            description
             "The port is behaving as a slave port.";
         }
      }
      description
       "It indicates the different roles that a port could have";
   }

   typedef if-index {
      type leafref {
       path "/if:interfaces-state/if:interface/if:if-index";
      }



Ben Hadj Said & Boc    Expires September 30, 2018               [Page 9]

Internet-Draft           DetNet gptp yang model               March 2018


      description
       "This type is used by the data model to reference network
        interfaces in the system.";
   }

   typedef bridge-port-number {
      type leafref {
      path "/if:interfaces/if:interface/dot1q:bridge-port/dot1q:port-number";
      }
      description
       "An integer that uniquely identifies a Bridge Port.";
   }

   grouping port-identity-group {
      description
       "represents the port identity and consists of two attributes:
        clockIdentity and portNumber";
      leaf clockIdentity {
         type clock_identity_type;
         description
            "Globally unique manufacturer-assigned clock identitifier
             for the localClock.
             The identifier is based on an EUI-64.";
         reference
          "IEEE 802.1AS: clause 8.5.2.2";
      }
      leaf portNumber {
         type uint32;
         default 0;
         description
          "The portNumber value for a port on a time-aware end station
           (i.e., a time-aware system supporting a single gPTP port)
           shall be 1.
           The portNumber values for the gPTP ports on a time-aware
           bridge supporting N ports shall be 1, 2, ..., N";
         reference
          "IEEE 802.1AS: clause 8.5.2.3";
      }
   }

   grouping clock-quality-grouping {
      description
       "describes the clock quality";
      reference
       "IEEE 802.1AS: clause 6.3.3.8";
      leaf clockClass{
         type uint8;
         description



Ben Hadj Said & Boc    Expires September 30, 2018              [Page 10]

Internet-Draft           DetNet gptp yang model               March 2018


          "The clockClass denotes the traceability of the time or
           frequency of the clock.
           The value of the clockClass shall be selected as follows:
             a) if the Default Data set member gmCapable is TRUE, then
                clockClass is set to the value that reflects the
                combination of the LocalClock and ClockSource entities;
                else if the value that reflects the LocalClock and
                ClockSource entities is not specified or not known,
                clockClass is set 255.
             b) If the Default Data set member gmCapable is FALSE,
                clockClass is set to 255.";
         reference
          "IEEE 802.1AS: clause 8.6.2.2";
      }
      leaf clockAccuracy {
         type uint8;
         description
          "The clockAccuracy indicates the expected accuracy of the clock.
           It characterize the local clock for the purpose of the best
           master clock algorithm. The value shall be selected as follows:
             a) clockAccuracy is set to the value that reflects the
                combination of the LocalClock and ClockSource entities
                if specified or known;
             b) if the value that reflects the LocalClock and ClockSource
                entities is not specified or unknown, clockAccuracy is set
                to 254.";
         reference
          "IEEE 802.1AS: clause 8.6.2.3";
      }
      leaf offsetScaledLogVariance {
         type uint16;
         description
          "The offsetScaledLogVariance represents an estimate of the PTP
           variance.
           The PTP variance characterizes the precision and frequency
           stability of the ClockMaster. The PTP variance is the square of
           PTP deviation PTPDEV.
           The value shall be selected as follows:
            a) offsetScaledLogVariance is set to the value that reflects the
               combination of the LocalClock and ClockSource entities; else
            b) if the value that reflects these entities is not specified
               or not known, offsetScaledLogVariance is set to 16640
               (410016).
               This value corresponds to the value of PTPDEV for observation
               interval equal to the default Sync message transmission
               interval (i.e., observation interval of 0.125 s).
           A value of -37268 indicates value too large to be represented or
           has been  computed.";



Ben Hadj Said & Boc    Expires September 30, 2018              [Page 11]

Internet-Draft           DetNet gptp yang model               March 2018


         reference
          "IEEE 802.1AS: clause 8.6.2.4";
      }
   }

   grouping offset-from-master-group {
      description
       "The value is an implementation-specific representation of the
        current value of the time difference between a slave and the
        grandmaster, as computed by the slave. It is recommended that
        the data type be scaledNs (96-bits integer).
        The default value is implementation specific.";
      leaf offsetFromMasterHs {
         type int32;
         units "2**-16 ns * 2**64";
         description
          "The most significant 32 bits of the offset, signed 96 bit number
           in  2**-16 ns, an implementation-specific computation of the
           current value of the time difference between a master and a slave
           as computed by the slave.
           This parameter MUST be read at the same time as
           offsetFromMasterMs,
           and offsetFromMasterLs, which represents middle and least
           significant 32 bits of values, respectively, in order for
           the read operation to succeed.";
      }
      leaf offsetFromMasterMs {
         type int32;
         units "2**-16 ns * 2**32";
         description
            "The middle significant 32 bits of the offset, signed 96 bit
             number in  2**-16 ns, an implementation-specific computation of
             the current value of the time difference between a master and a
             slave as computed by the slave.
             This parameter MUST be read at the same time as
             offsetFromMasterHs,
             and offsetFromMasterLs,
             which represents most (highest) and
             least significant 32 bits of values, respectively, in order
             for the read  operation to succeed.";
      }
      leaf offsetFromMasterLs {
         type int32;
         units "2**-16 ns";
         description
          "The least significant 32 bits of the offset, signed 96 bit number
           in 2**-16 ns, an implementation-specific computation of the
           current value of  the time difference between a master and



Ben Hadj Said & Boc    Expires September 30, 2018              [Page 12]

Internet-Draft           DetNet gptp yang model               March 2018


           a slave as computed by the slave.
           This parameter MUST be read at the same time as
           offsetFromMasterHs,
           and offsetFromMasterMs,
           which represents most (highest) and
           middle significant 32 bits of values, respectively, in order for
           the read operation to succeed.";
      }
   }

   grouping last-gm-phase-change-group {
     description
     "The value is the phase change that occurred on the most recent
      change in either grandmaster or gmTimeBaseIndicator.";
     leaf lastGmPhaseChangeHs {
        type uint32;
        description
         "The value is the phase change that occurred on the most recent
          change in either grandmaster or gmTimeBaseIndicator.
          This parameter MUST be read at the same time as
          lastGmPhaseChangeMs,
          and lastGmPhaseChangeLs,
          which represents middle and least
          significant 32 bits of values, respectively, in order for
          the read operation to succeed.";
     }
     leaf lastGmPhaseChangeMs {
        type uint32;
        description
         "The value is the phase change that occurred on the most recent
          change in either grandmaster or gmTimeBaseIndicator.
          This parameter MUST be read at the same time as
          lastGmPhaseChangeHs,
          and lastGmPhaseChangeLs,
          which represents most and least
          significant 32 bits of values, respectively, in order for
          the read  operation to succeed.";
     }
     leaf lastGmPhaseChangeLs {
        type uint32;
        description
         "The value is the phase change that occurred on the most recent
          change in either grandmaster or gmTimeBaseIndicator.
          This parameter MUST be read at the same time as
          lastGmPhaseChangeMs,
          and lastGmPhaseChangeLs, which represents middle and least
          significant 32 bits of values, respectively, in order for
          the read operation to succeed.";



Ben Hadj Said & Boc    Expires September 30, 2018              [Page 13]

Internet-Draft           DetNet gptp yang model               March 2018


     }
   }

   grouping last-gm-freq-change-group {
     description
      "The value is the frequency change that occurred on the most recent
       change in either grandmaster or gmTimeBaseIndicator.";
     leaf lastGmFreqChangeMs {
        type int32;
        description
         "The value is the frequency change that occurred on the
          most recent change in either grandmaster or
          gmTimeBaseIndicator.
          This parameter MUST be read at the same time as
          lastGmFreqChangeLs,
          which represents least significant 32 bits of the value
          in order for the read operation to succeed.";
     }
     leaf lastGmFreqChangeLs {
        type int32;
        description
         "The value is the frequency change that occurred on the
          most recent change in either grandmaster or
          gmTimeBaseIndicator.
          This parameter MUST be read at the same time as
          lastGmFreqChangeMs,
          which represents most significant 32 bits of the value in
          order for the read operation to succeed.";
     }
   }
   grouping neighbor-prop-delay-group {
      description
       "It is an estimate of the current one-way propagation time
        on the link attached to this port, measured as specified for
        the respective medium.
        The value is zero for ports attached to IEEE 802.3 EPON links
        and for the master port of an IEEE 802.11 link, because
        one-way propagation
        delay is not measured on the latter and not directly measured
        on the former. It is recommended that the data type be scaled in ns.
        The initialization value is zero.";
      leaf neighborPropDelayHs {
         type uint32;
         units "2^-16 ns * 2^64";
         description
          "The most (highest) significant 32 bits, unsigned 96 bit number
           in 2**-16 ns, the value is equal to the value of the per-port
           global variable neighborPropDelay.



Ben Hadj Said & Boc    Expires September 30, 2018              [Page 14]

Internet-Draft           DetNet gptp yang model               March 2018


           This parameter MUST be read at the same time as
           neighborPropDelayMs, and neighborPropDelayLs,
           which represents middle and least significant 32 bits of values,
           respectively, in order for the read operation to succeed.";
      }
      leaf neighborPropDelayMs {
         type uint32;
         units "2^-16 ns * 2^32";
         description
          "The second most (middle) significant 32 bits, unsigned 96 bit
           number in 2**-16 ns, the value is equal to the value of the
           per-port global variable neighborPropDelay.
           This parameter MUST be read at the same time as
           neighborPropDelayHs,
           and neighborPropDelayLs, which represents most (highest)
           and least significant 32 bits of values, respectively, in
           order for the read operation to succeed.";
      }
      leaf neighborPropDelayLs {
         type uint32;
         units "2^-16 ns";
         description
          "The least significant 32 bits, unsigned 96 bit number in
           2**-16 ns,the value is equal to the value of the per-port
           global variable neighborPropDelay.
           This parameter MUST be read at the same time as
           neighborPropDelayHs,
           and neighborPropDelayMs, which represents most (highest)
           and middle significant 32 bits of values, respectively,
           in order for the read operation to succeed.";
      }
   }
   grouping sync-receipt-timeout-time-interval-group{
      description
       "It is the time interval after which sync receipt timeout
        occurs iftime-synchronization information has not been
        received during the interval.";
      leaf syncReceiptTimeoutTimeIntervalHs {
         type uint32;
         units "2^-16 ns * 2^64";
         description
          "The most (highest) significant 32 bits, of unsigned 96 bit
           number in 2**-16 ns.
           This parameter MUST be read at the same time as
           syncReceiptTimeoutTimeIntervalMs, and
           syncReceiptTimeoutTimeIntervalLs, which represents middle
           and least significant 32 bits of values, respectively, in
           order for the read operation to succeed.



Ben Hadj Said & Boc    Expires September 30, 2018              [Page 15]

Internet-Draft           DetNet gptp yang model               March 2018


           Default value is calculated per 10.2.4.2, or
           '0000 0000 0000 165A 0BC0 0000'h.
           The contents of this variable SHALL be maintained across a
           restart of the system.";
      }
      leaf syncReceiptTimeoutTimeIntervalMs {
         type uint32;
         units "2^-16 ns * 2^32";
         description
          "The middle significant 32 bits, unsigned 96 bit number in
           2**-16 ns.
           This parameter MUST be read at the same time as
           syncReceiptTimeoutTimeIntervalHs, and
           syncReceiptTimeoutTimeIntervalLs,
           which represents most (highest) and least significant
           32 bits of values, respectively, in order for the read
           operation to succeed.
           Default value is calculated per 10.2.4.2, or
           '0000 0000 0000 165A 0BC0 0000'h.
           The contents of this variable SHALL be maintained across
           a restart of the system.";
      }
      leaf syncReceiptTimeoutTimeIntervalLs {
         type uint32;
         units "2^-16 ns";
         description
          "The least significant 32 bits, unsigned 96 bit number in
           2**-16 ns.
           This parameter MUST be read at the same time as
           syncReceiptTimeoutTimeIntervalHs, and
           syncReceiptTimeoutTimeIntervalMs,
           which represents most (highest) and middle significant
           32 bits of values, respectively, in order for the read
           operation to succeed.
           Default value is calculated per 10.2.4.2, or
           '0000 0000 0000 165A 0BC0 0000'h.
           The contents of this variable SHALL be maintained across
           a restart of the system.";
      }
   }

   grouping neighbor-prop-delay-thresh-group {
      description
       "It is the propagation time threshold, above which a port is
        not considered capable of participating in the 802.1AS protocol.";
      leaf neighborPropDelayThreshHs {
         type uint32;
         units "2^-16 ns * 2^64";



Ben Hadj Said & Boc    Expires September 30, 2018              [Page 16]

Internet-Draft           DetNet gptp yang model               March 2018


         description
          "The most (highest) significant 32 bits of
           neighborPropDelayThresh,
           unsigned 96 bit number in 2**-16 ns.
           This parameter MUST be read or written at the same time as
           neighborPropDelayThreshMs, and
           neighborPropDelayThreshLs, which represents middle and least
           significant 32 bits of values, respectively, in order for the
           read or write operation to succeed.
           The contents of this variable SHALL be maintained across a
           restart of the system.";
      }
      leaf neighborPropDelayThreshMs {
         type uint32;
         units "2^-16 ns * 2^32";
         description
          "The middle significant 32 bits of neighborPropDelayThresh,
           unsigned 96 bit number in 2**-16 ns.
           This parameter MUST be read or written at the same time as
           neighborPropDelayThreshHs, and
           neighborPropDelayThreshLs, which represents most (highest)
           and least significant 32 bits of values, respectively, in
           order for the read or write operation to succeed.
           The contents of this variable SHALL be maintained across a
           restart of the system.";
      }
      leaf neighborPropDelayThreshLs {
         type uint32;
         units "2^-16 ns";
         description
          "The least significant 32 bits of neighborPropDelayThresh,
           unsigned 96 bit number in 2**-16 ns.
           This parameter MUST be read at the same time as
           neighborPropDelayThreshHs,
           and neighborPropDelayThreshMs, which represents most (highest)
           and middle significant 32 bits of values, respectively,
           in order for the read or write operation to succeed.
           The contents of this variable SHALL be maintained across a
           restart of the system.";
      }
   }

   grouping delay-asymmetry-group {
      description
       "The value is the asymmetry in the propagation delay on the
        link attached to this port relative to the grandmaster time base.
        If propagation delay asymmetry is not modeled,
        then delayAsymmetry is 0.";



Ben Hadj Said & Boc    Expires September 30, 2018              [Page 17]

Internet-Draft           DetNet gptp yang model               March 2018


      leaf delayAsymmetryHs {
         type uint32;
         units "2^-16 ns * 2^64";
         description
          "The most (highest) significant 32 bits of delayAsymmetry,
           signed 96 bit number in 2**-16 ns.
           This leaf MUST be read or written at the same time as
           delayAsymmetryMs, and
           delayAsymmetryLs, which represents middle and least
           significant 32 bits of values, respectively, in order for
           the read or write operation to succeed.
           The contents of this variable SHALL be maintained across
           a restart of the system.";
      }
      leaf delayAsymmetryMs {
         type uint32;
         units "2^-16 ns * 2^32";
         description
          "The middle significant 32 bits of delayAsymmetry,
           signed 96 bit number in 2**-16 ns.
           This leaf MUST be read or written at the same time as
           delayAsymmetryHs, and
           delayAsymmetryLs, which represents middle and least
           significant 32 bits of values, respectively, in order for
           the read or write operation to succeed.
           The contents of this variable SHALL be maintained across
           a restart of the system.";
      }
      leaf delayAsymmetryLs {
         type uint32;
         units "2^-16 ns";
         description
          "The least significant 32 bits, signed 96 bit number in
           2**-16 ns.
           This object MUST be read or written at the same time as
           delayAsymmetryHs, and
           delayAsymmetryLs, which represents most (highest) and
           least significant 32 bits of values, respectively, in
           order for the read or write operation to succeed.

           The contents of this variable SHALL be maintained across
           a restart of the system.";
      }
   }

   container defaultDataSet {
      description
       "The default data set represents native time capability of a



Ben Hadj Said & Boc    Expires September 30, 2018              [Page 18]

Internet-Draft           DetNet gptp yang model               March 2018


        time-aware system and is consistent with respective
        IEEE 1588 data set.";
      leaf clockIdentity {
             type clock_identity_type;
         config false;
         description
          "Globally unique manufacturer-assigned clock identifier
           for the local clock. The identifier is based on an EUI-64.";
         reference
          "IEEE 802.1AS: clause 14.2.1";
      }
      leaf numberPorts {
         type uint32 {
            range "0 .. 255";
         }
         config false;
         description
           "The number of PTP ports on the device.
            For an end station the value is 1.";
         reference
          "IEEE 802.1AS: clause 14.2.2";
      }
      container clockQuality {
             config false;
         description
          "It reflects the quality clock of the LocalClock entity.";
         uses clock-quality-grouping;
      }
      leaf priority1 {
         type uint32 {
            range "0 .. 255";
         }
         default 246;
         description
          "Most-significant priority declaration in the execution
           of the best master clock algorithm. Lower values take
           precedence. The value of priority1 shall be 255 for a
           time-aware system that is not grandmaster-capable.
           The value of priority1 shall be less than 255 for a
           time-aware system that is grandmaster-capable.
           The value 0 shall be reserved for future
           management use, i.e., the value of priority1 shall be set
           to 0 only via management action, and shall not be specified
            as a default value by a user of this standard.
           In the absence of a default value set by a user of this
           standard, the default value shall be set as below:
               a) system type of network infrastructure time-aware
                  system to value 246;



Ben Hadj Said & Boc    Expires September 30, 2018              [Page 19]

Internet-Draft           DetNet gptp yang model               March 2018


               b) portable time-aware system, 250;
               c) other time-aware systems, 248.";
         reference
          "IEEE 802.1AS: clause 14.2.7";
      }
      leaf priority2 {
         type uint32 {
            range "0 .. 255";
         }
         default 248;
         description
          "Least-significant priority declaration in the execution
           of the best  master clock algorithm.
           Lower values take precedence.
           The default value is 248.";
         reference
          "IEEE 802.1AS: clause 14.2.7";
      }
      leaf gmCapable {
         type boolean;
         config false;
         description
          "True (1) if master clock capable; false (2)otherwise";
         reference
          "IEEE 802.1AS: clause 14.2.8";
      }
      leaf currentUtcOffset {
         type uint32;
         description
          "The value is the offset between TAI and UTC, relative
           to the ClockMaster entity of this time-aware system.
           It is equal to the global variable sysCurrentUtcOffset.
           The value is in units of seconds.
           The initialization default value is selected as follows:
              a) the value is the value obtained from a primary
                 reference if the  value is known at the time of
                 initialization,
              b) else the value is the current number of leap
                 seconds, when the time-aware system is designed.";
         reference
          "IEEE 802.1AS: clause 14.2.9";
      }
      leaf currentUtcOffsetValid {
         type boolean;
         description
          "True (1) if currentUTCOffset is known to be correct;
           false (2) otherwise.";
         reference



Ben Hadj Said & Boc    Expires September 30, 2018              [Page 20]

Internet-Draft           DetNet gptp yang model               March 2018


          "10.2.10";
      }
      leaf leap59 {
         type boolean;
         description
          "A true (1) value indicates that the last minute of the
           current UTC day, relative to the ClockMaster entity of
           this time-aware system, will contain 59 seconds.
           It is equal to the global variable sysLeap59.
           The initialization value is selected as follows:
             a) Set to true (1) if the value is obtained from a
                primary reference if known at the at the time of
                initialization, else
             b) The value is set to false (2).";
         reference
          "IEEE 802.1AS: clause 14.2.11";
      }
      leaf leap61 {
         type boolean;
         description
          "A true (1) value indicates that the last minute of the
           current UTC day, relative to the ClockMaster entity of
           this time-aware system, will contain 59 seconds.
           It is equal to the global variable sysLeap61.
           The initialization value is selected as follows:
               a) Set to true (1) if the value is obtained from a
                  primary reference if known at the at the time
                  of initialization, else
               b) The value is set to false (2).";
         reference
          "IEEE 802.1AS: clause 14.2.12";
      }
      leaf timeTraceable {
         type boolean;
         config false;
         description
          "The value is set to true (1) if the timescale and the
           value of currentUtcOffset, relative to the ClockMaster
           entity of this time-aware system, are traceable to a
           primary reference standard; otherwise
           the value is set to false (2).
           The initialization value is selected as follows:
              a) If the time and the value of currentUtcOffset are
                 traceable to a primary reference standard at the
                 time of initialization, the value is set to
                 true (1), else
              b) The value is set to false (2).";
         reference



Ben Hadj Said & Boc    Expires September 30, 2018              [Page 21]

Internet-Draft           DetNet gptp yang model               March 2018


          "IEEE 802.1AS: clause 14.2.13";
      }
      leaf frequencyTraceable {
         type boolean;
         config false;
         description
          "The value is set to true (1) if the frequency determining
           the timescale of the ClockMaster Entity of this time aware
           system is traceable to a primary reference standard;
           otherwise the value is set to false (2).
           The initialization value is selected as follows:
              a) If the frequency is traceable to a primary reference
                 standard at the time of initialization,
                 the value is set to true (1), else
              b) The value is set to false (2).";
         reference
          "IEEE 802.1AS: clause 14.2.14";
      }
      leaf timeSource {
         type time-source-enumeration;
         default INTERNAL_OSCILLATOR;
         config false;
         description
          "The timeSource is an information-only attribute indicating
           the type of source of time used by a ClockMaster.
           The value is not used in the selection
           of the grandmaster.
           The initialization value is selected as follows:
              a) If the timeSource, is known at the time of
                 initialization, else
              b) The value is set to INTERNAL_OSCILLATOR (160).";
         reference
          "IEEE 802.1AS: clause 14.2.14";
      }
   }

   container currentDataSet {
      config false;
      description
       "The current data set represent this system's topological
        location relative to the known grandmaster system.
                This data set is consistent with respective IEEE 1588
        data set.";
      leaf stepsRemoved {
         type int32;
         description
          "The number of communication paths traversed between the
           local clock and the grandmaster clock. For example,



Ben Hadj Said & Boc    Expires September 30, 2018              [Page 22]

Internet-Draft           DetNet gptp yang model               March 2018


           stepsRemoved for a slave clock on the same PTP communication
           path as the grandmaster clock will have a value of 1,
           indicating that a single path was traversed.";
         reference
          "IEEE 802.1AS clause 14.3.1";
      }
      container offsetFromMaster {
         description
          "It represents the current value of the time difference between
           a slave and the grandmaster, as computed by the slave.
           It is recommended that the data type be scaledNs.";
         uses offset-from-master-group;
         reference
          "IEEE 802.1AS clause 14.3.2";
      }
      container lastGmPhaseChange {
         description
          "The value is the phase change that occurred on the most
           recent change in either grandmaster or gmTimeBaseIndicator.";
         uses last-gm-phase-change-group;
         reference
          "IEEE 802.1AS: clause 14.3.3";
      }
      container lastGmFreqChange {
         uses last-gm-freq-change-group;
         description
          "The value is the frequency change that occurred on the most
           recent change in either grandmaster or gmTimeBaseIndicator.";
         reference
          "IEEE 802.1AS: clause 14.3.4";
      }
      leaf gmTimebaseIndicator {
         type uint32;
         description
          "This reports the grandmaster time base change value conveyed
           in the Sync message.
           The value is the value of timeBaseIndicator of the current
           grandmaster";
         reference
          "IEEE 802.1AS: clause 14.3.5";
      }
      leaf gmChangeCount {
         type yang:counter32;
         description
          "This statistics counter tracks the number of times the
           grandmaster has changed in a gPTP domain.";
         reference
          "IEEE 802.1AS: clause 14.3.6";



Ben Hadj Said & Boc    Expires September 30, 2018              [Page 23]

Internet-Draft           DetNet gptp yang model               March 2018


      }
      leaf timeOfLastGmChangeEvent {
         type yang:timestamp;
         units "0.01 seconds";
         description
          "This timestamp denotes the system time when the most
           recent grandmaster change occurred in a gPTP domain.";
      }
      leaf timeOfLastGmFreqChangeEvent {
         type yang:timestamp;
         units "0.01 seconds";
         description
          "This timestamp denotes the system time when the most
           recent change in grandmaster phase occured, due to a
           change of either the grandmaster or the grandmaster
           time base.";
      }
      leaf timeOfLastGmPhaseChangeEvent {
         type yang:timestamp;
         units "0.01 seconds";
         description
          "This timestamp denotes the system time when the most recent
           change in grandmaster frequency occured, due to a change of
           either the grandmaster or the grandmaster time base.";
         reference
         "IEEE 802.1AS: clause ";
      }
   }

   container parentDataSet {
      config false;
      description
       "The paraent data set represent timing upstream
           (toward grandmaster) system's parameters as measured
       at this system.
       This data set is consistent with respective IEEE 1588 data set.";
      container parentPortIdentity {
         uses port-identity-group;
         description
           "Clock identifier (clockIdentity) of the parent LocalClock.
           The default value is set to
           /gptp:defaultDataSet/gptp:ClockIdentity.
           If this time-aware system is the grandmaster, the value
           is the clockIdentity of this time-aware system.
           If this time-aware system is not the grandmaster,
           the value is the clockIdentity of the MasterPort of the
           gPTP communication path attached to the single slave port
           of this time-aware system.



Ben Hadj Said & Boc    Expires September 30, 2018              [Page 24]

Internet-Draft           DetNet gptp yang model               March 2018


           Port number (portNumber) of the local clock parent gPTP
           port number.
           If this time-aware system is the grandmaster, the value
           is the gPTP portNumber of this time-aware system.
           If this time-aware system is not the grandmaster,
           the value is the portNumber of the MasterPort of the
           gPTP communication path attached to the single gPTP slave
           port of this time-aware system.";
         reference
          "IEEE 802.1AS: clause 14.4.1";

      }

      leaf cumulativeRateRatio {
         type int32;
         description
          "The value is an estimate of the ratio of the frequency of
           the grandmaster to the frequency of the LocalClock entity
           of this time-aware system.
           Cumulative rate ratio is expressed as the fractional
           frequency offset multiplied by 2**41, i.e.,
           the quantity (rateRatio - 1.0)(2**41), where
           rateRatio is computed by the PortSyncSyncReceive
           state machine";
         reference
          "IEEE 802.1AS: clause 14.4.2";
      }
      leaf grandmasterIdentity {
         type clock_identity_type;
         description
          "Clock identifier (clockIdentity) of the grandmaster.
           The default value is set to clockIdentity of the
           defaultDataSet";
         reference
          "IEEE 802.1AS: clause 14.4.3";
      }
      container grandmasterClockQuality {
         uses clock-quality-grouping;
         description
          "Denotes the clock quality of the grandmaster.
           The default value for clockClass is set to defaultDataSet
           ClockClass.
           The default value for clockAccuracy is set to DefaultDataSet
           ClockAccuracy.
           The default value for offsetScaledLogVariance is set to
           DefaultDataSet OffsetScaledLogVariance";
         reference
          "IEEE 802.1AS: clause 14.4.4, 14.4.5 and 14.4.6";



Ben Hadj Said & Boc    Expires September 30, 2018              [Page 25]

Internet-Draft           DetNet gptp yang model               March 2018


      }
      leaf grandmasterPriority1 {
         type uint32 {
            range "0 .. 255";
         }
         description
          "Grandmaster's most-significant priority declaration in the
           execution of the best master clock algorithm.
           Lower values take precedence.
           The default value is set to default Data Set Priority1";
         reference
          "IEEE 802.1AS: clause 14.4.7";
      }
      leaf grandmasterPriority2 {
         type uint32 {
            range "0 .. 255";
         }
         description
          "Grandmaster's least-significant priority declaration in
           the execution of the best master clock algorithm.
           Lower values take precedence.
           The default value is set to default Data Set Priority2";
         reference
          "IEEE 802.1AS: clause 14.4.8";
      }
   }

   container timePropertiesDataSet {
      config false;
      description
       "The time properties data set represents the grandmaster's
        parameters, as measured at this system and are derived from
        IEEE 802.1AS protocol.
        This data set is consistent with respective IEEE 1588 data set.";
      leaf currentUTCOffset {
         type int32;
         units "seconds";
         description
          "The value is currentUtcOffset for the current grandmaster.
           The value is in units of
           seconds. The default value is set to currentUTCOffset.";
         reference
          "IEEE 802.1AS: clause 14.5.1";
      }
      leaf currentUTCOffsetValid {
         type boolean;
         description
          "True (1) if currentUTCOffset is known to be correct;



Ben Hadj Said & Boc    Expires September 30, 2018              [Page 26]

Internet-Draft           DetNet gptp yang model               March 2018


           false (2) otherwise.
           The default value is set to currentUTCOffsetValid.";
         reference
          "IEEE 802.1AS: clause 14.5.2";
      }
      leaf leap59 {
         type boolean;
         description
          "The value is leap59 for the current grandmaster. It is equal
           to the global variable leap59.
           A true (1) value indicates that the last minute of the
           current UTC day, relative to the ClockMaster entity of this
           time-aware system, will contain 59 seconds.";
         reference
          "IEEE 802.1AS: clause 14.5.3";
      }
      leaf leap61 {
         type boolean;
         description
          "The value is leap61 for the current grandmaster. It is equal
           to the global variable leap61.
           A true (1) value indicates that the last minute of the
           current UTC day, relative to the ClockMaster entity of this
           time-aware system, will contain 61 seconds.";
         reference
          "IEEE 802.1AS: clause 14.5.4";
      }
      leaf timeTraceable {
         type boolean;
         description
          "The value is timeTraceable for the current grandmaster. It
           is equal to the global variable timeTraceable.
           True (1) if the timescale and the value of this parameter
           are traceable to a primary reference; false (2) otherwise.";
         reference
          "IEEE 802.1AS: clause ";
      }
      leaf frequencyTraceable {
         type boolean;
         description
          "The value is frequencyTraceable for the current grandmaster.
           It is equal to the global variable frequencyTraceable.
           True (1) if the frequency determining the timescale is traceable
           to a primary reference; false (2) otherwise.";
         reference
          "IEEE 802.1AS: clause 14.5.6";
      }
      leaf timeSource {



Ben Hadj Said & Boc    Expires September 30, 2018              [Page 27]

Internet-Draft           DetNet gptp yang model               March 2018


         type time-source-enumeration;
         description
          "The value is timeSource for the current grandmaster.
           It indicates the source of time used by the grandmaster clock.";
         reference
          "IEEE 802.1AS: clause 14.5.7";
      }
   }

   list portDataSet {
      key "portNumber";
      description
       "A list of gPTP port related variables in a time-aware Bridge or
        for a time-aware end station. A value of 1 is used in a bridge
        or an end station that does not have multiple components.
        For a given media port of a Bridge or an end station, there may
        be one or more gPTP port, and depends whether a media port supports
        point to point link (e.g. IEEE 802.3 Ethernet) or point to
        multi-point (e.g. CSN, IEEE 802.3 EPON,etc) links on the
        media port.";
      leaf bridgeBasePort {
         type bridge-port-number;
         config false;
         mandatory true;
         description
          "It identifies the bridge port number of the port for which this
           entry contains bridge management information.
           For end stations, this port number shall be (1).";
      }
      leaf asIfIndex {
         type if-index;
         config false;
         mandatory true;
         description
          "It identifies the gPTP interface group within the system for
           which this portDataSet contains information.
           It is the value of the instance of the IfIndex object,
           defined in the IF-MIB, for the gPTP interface group corresponding
           to this port, or the value 0 if the port has not been bound
           to an underlying frame source and sink.
           For a given media port of a Bridge or an end station, there may
           be one or more gPTP port, and depends whether a media port
           supports point to point link (e.g. IEEE 802.3 Ethernet) or
           point to multi-point (e.g. CSN, IEEE 802.3 EPON, etc) links
           on the media port.";
      }
      leaf portNumber {
         type uint32;



Ben Hadj Said & Boc    Expires September 30, 2018              [Page 28]

Internet-Draft           DetNet gptp yang model               March 2018


         mandatory true;
         description
          "The portNumber value for a port on a time-aware end station (i.e.,
           a time-aware system supporting a single gPTP port) shall be 1.
           The portNumber values for the gPTP ports on a time-aware Bridge
           supporting N ports shall be 1, 2, ..., N, respectively";
         reference
          "IEEE 802.1AS: clause 14.6.2";
      }
      leaf clockIdentity {
         type clock_identity_type;
         config false;
         description
          "The clockIdentity is an 8 octet array formed by mapping an IEEE
           EUI-48 assigned to the time-aware system to IEEE EUI-64 format
           (i.e., to an array of 8 octets).
           The EUI-48 shall be an Ethernet MAC address owned by the
           organization creating the instance of a clockIdentity.
           The organization owning the MAC address shall ensure that the MAC
           address is used in generating only a single instance of a
           clockIdentity, for example by requiring that the MAC address be
           a MAC address embedded in the device identified by the
           clockIdentity.
           The mapping rules for constructing the EUI-64 from the EUI-48
           shall be those specified by the IEEE [B2]. The 8 octets of the
           created IEEE EUI-64 shall be assigned in order to the 8 octet
           array clockIdentity with most significant octet of the
           IEEE EUI-64 assigned to the clockIdentity octet array
           member with index 0.";
         reference
          "IEEE 802.1AS: clause 14.6.2";
      }
      leaf portRole {
         type port-role-enumeration;
         default disabledPort;
         config false;
         description
          "The value is the value of the port role of this port.
           The enumeration values are consistent with IEEE Std 1588-2008.
           The default value is 3 (DisabledPort)";
         reference
          "IEEE 802.1AS: clause 14.6.3";
      }

      leaf pttPortEnabled {
         type boolean;
         description
          "802.1AS function enable for a given port.



Ben Hadj Said & Boc    Expires September 30, 2018              [Page 29]

Internet-Draft           DetNet gptp yang model               March 2018


           True (1) if the time-synchronization and best master selection
           functions of the port are enabled;
           False (2) otherwise.
           The contents of this table SHALL be maintained across a
           restart of the system.";
         reference
          "IEEE 802.1AS: clause 14.6.4";
      }

      leaf isMeasuringDelay {
         type boolean;
         config false;
         description
          "True (1) if the port is measuring link propagation delay;
           The value is equal to the value of the Boolean
           isMeasuringPdDelay.
           False (2) otherwise.";
         reference
          "IEEE 802.1AS: clause 14.6.5";
      }

      leaf asCapable {
         type boolean;
         config false;
         description
          "True (1) if and only if it is determined that this time-aware
           system and the time-aware system at the other ends of the
           link attached to this port can interoperate with each other
           via the IEEE 802.1AS protocol;
           False (2) otherwise";
         reference
          "IEEE 802.1AS: clause 14.6.6";
      }

      container neighborPropDelay {
         description
          "It is an
           estimate of the current one-way propagation time on the link
           attached to this port, measured as specified for the
           respective medium.
           The value is zero for ports attached to IEEE 802.3 EPON links
           and for the master port of an IEEE 802.11 link, because
           one-way propagation delay is not measured on the latter and
           not directly measured on the former.
           It is recommended that the data type be scaled in ns.
           The initialization value is zero.";
         uses neighbor-prop-delay-group;
         reference



Ben Hadj Said & Boc    Expires September 30, 2018              [Page 30]

Internet-Draft           DetNet gptp yang model               March 2018


          "IEEE 802.1AS: clause 14.6.7";
      }
      container neighborPropDelayThresh {
         description
          "It is the propagation time threshold,
           above which a port is not considered capable of participating
           in the IEEE 802.1AS protocol.";
         uses neighbor-prop-delay-thresh-group;
         reference
          "IEEE 802.1AS: clause 14.6.9";
      }
      container delayAsymmetry {
         description
          "The value is the asymmetry in the propagation delay on the link
           attached to this port relative to the grandmaster time base.
           If the propagation delay asymmetry is not modeled,
           then delayAsymmetry is 0";
         uses delay-asymmetry-group;
         reference
          "IEEE 802.1AS: clause 14.6.9";
      }
      leaf neighborRateRatio {
         type int32;
         config false;
         description
          "The value is an estimate of the ratio of the frequency of the
           LocalClock entity of the time-aware system at the other end of
           the link attached to this port, to the frequency of the
           LocalClock entity of this time-aware system.
           Neighbor rate ratio is expressed as the fractional
           frequency offset multiplied by 2**41, i.e.,
           the quantity (neighborRateRatio - 1.0)(2**41)";
         reference
          "IEEE 802.1AS: clause 14.6.10";
      }
      leaf initialLogAnnounceInterval {
         type int32 {
            range "-128 .. 127";
         }
         default 0;
         description
          "The value is the logarithm to the base 2 of the of the announce
           interval used when
            (a) the port is initialized, or
            (b) a message interval request TLV is received with
                announceInterval field set to 126
           The default value is 0.
           The contents of this variable SHALL be maintained across



Ben Hadj Said & Boc    Expires September 30, 2018              [Page 31]

Internet-Draft           DetNet gptp yang model               March 2018


           a restart of the system.";
         reference
          "IEEE 802.1AS: clause 14.6.11";
      }
      leaf currentLogAnnounceInterval {
         type int32 {
            range "-128 .. 127";
         }
         config false;
         description
          "The value is the logarithm to the base 2 of the of the
           current announce transmission interval.
           The currentLogAnnounceInterval specifies the current value
           of the announce interval.
           Every port supports the value 127; the port does not send
           Announce messages when currentLogAnnounceInterval has this value.
           A port may support other values, except for the reserved values
           -128 through -125, inclusive, and 124 through 126, inclusive.
           A port ignores requests for unsupported values.";
         reference
          "IEEE 802.1AS: clause 14.6.12";
      }
      leaf announceReceiptTimeout {
         type uint32 {
            range "0 .. 255";
         }
         default 2;
         description
          "The value of this attribute tells a slave port the number of sync
           intervals to wait without receiving synchronization information,
           before assuming that the master is no longer transmitting
           synchronization information, and that the BMC algorithm needs to
           be run, if appropriate.
           The condition of the slave port not receiving synchronization
           information for syncReceiptTimeout sync intervals is referred to
           as 'sync receipt timeout'.
           The default value is 2.";
         reference
          "IEEE 802.1AS: clause 14.6.13";
      }
      leaf initialLogSyncInterval {
         type int32 {
            range "-128 .. 127";
         }
         default -3;
         description
          "The value is the logarithm to the base 2 of the sync interval
           used when,



Ben Hadj Said & Boc    Expires September 30, 2018              [Page 32]

Internet-Draft           DetNet gptp yang model               March 2018


             (a) the port is initialized, or
             (b) a message interval request TLV is received with the
                 timeSyncInterval field set to 126.
           The initialization value is -3.
           The contents of this variable SHALL be maintained across a
           restart of the system.";
         reference
          "IEEE 802.1AS: clause 14.6.14";
      }
      leaf currentLogSyncInterval {
         type int32 {
            range "-128 .. 127";
         }
         description
          "The value is the logarithm to the base 2 of the current
           time-synchronization transmission interval";
         reference
          "IEEE 802.1AS: clause 14.6.15";
      }
      leaf syncReceiptTimeout {
         type uint32 {
            range "0 .. 255";
         }
         default 3;
         description
          "The value is the number of time-synchronization transmission
           intervals that a slave port waits without receiving
           synchronization information, before assuming that the master
           is no longer transmitting  synchronization information and that
           the BMCA needs to be run, if appropriate.
           The initialization value is 3.
           The contents of this variable SHALL be maintained across a
           restart of the system.";
         reference
          "IEEE 802.1AS: clause 14.6.16";
      }
      container syncReceiptTimeoutTimeInterval {
         description
          "It is the time interval after which sync receipt timeout occurs
           if time-synchronization information has not been received during
           the interval.";
         uses sync-receipt-timeout-time-interval-group;
         reference
          "IEEE 802.1AS: clause 14.6.17";
      }
      leaf initialLogPdelayReqInterval {
         type int32 {
            range "-128 .. 127";



Ben Hadj Said & Boc    Expires September 30, 2018              [Page 33]

Internet-Draft           DetNet gptp yang model               March 2018


         }
         default 0;
         description
          "For full-duplex, IEEE 802.3 media and CSN media that use the peer
           delay mechanism to measure path delay, the value is the logarithm
           to the base 2 of the Pdelay_Req message transmission interval
           used when,
             (a) the port is initialized, or
             (b) a message interval request TLV is received with the
                 linkDelayInterval field set to 126.
           For these media, the initialization value is 0.
           For all other media, the value is 127.
           The contents of this variable SHALL be maintained across a
           restart of the system.";
         reference
          "IEEE 802.1AS: clause 14.6.18";
      }
      leaf currentLogPdelayReqInterval {
         type int32 {
            range "-128 .. 127";
         }
         config false;
         description
          "For full-duplex, IEEE 802.3 media and CSN media that use the peer
           delay mechanism
           to measure path delay, the value is the logarithm to the base 2
           of the current Pdelay_Req message transmission interval.
           For all other media, the value is 127.
           The contents of this variable SHALL be maintained across a
           restart of the system.";
         reference
          "IEEE 802.1AS: clause 14.6.19";
      }
      leaf allowedLostResponses {
         type uint32 {
            range "0 .. max";
         }
         default 3;
         description
          "The value is equal to the value of the per-port global variable
           allowedLostResponses.
           It is the number of Pdelay_Req messages for which a valid
           response is not received, above which a port is considered to
           not be exchanging peer delay messages";
         reference
          "IEEE 802.1AS: clause 14.6.20";
      }
      leaf versionNumber {



Ben Hadj Said & Boc    Expires September 30, 2018              [Page 34]

Internet-Draft           DetNet gptp yang model               March 2018


         type uint32 {
            range "0 .. 63";
         }
         default 2;
         config false;
         description
          "Indicates the PTP version in use on the port.
           The version number for this standard is set to the value 2.
           The contents of this variable SHALL be maintained across a
           restart of the system.";
         reference
          "IEEE 802.1AS: clause 14.6.21";
      }
      leaf nup {
         type uint64 {
            range "0 .. 2";
         }
         description
          "For an OLT port of an IEEE 802.3 EPON link, the value is the
           effective index of refraction for the EPON upstream wavelength
           light of the optical path.
           The default value is 1.46770 for 1 Gb/s upstream links,
           and 1.46773 for 10 Gb/s upstream links.
           For all other ports, the value is 0.";
         reference
          "IEEE 802.1AS: clause 14.6.22";
      }
      leaf ndown {
         type uint64 {
            range "0 .. 2";
         }
         description
          "For an OLT port of an IEEE 802.3 EPON link, the value is the
           effective index of refraction for the EPON downstream wavelength
           light of the optical path.
           The default value is 1.46805 for 1 Gb/s downstream links,
           and 1.46851 for 10 Gb/s downstream links.
           For all other ports, the value is 0.";
         reference
          "IEEE 802.1AS: clause 14.6.23";
      }
      leaf acceptableMasterTableEnabled {
         type boolean;
         default false;
         description
          "True (1) if acceptableMasterTableEnabled is true and an ONU port
           attached  to an IEEE 802.3 EPON link in a time-aware system.
           False (2), otherwise.



Ben Hadj Said & Boc    Expires September 30, 2018              [Page 35]

Internet-Draft           DetNet gptp yang model               March 2018


           The default value is FALSE.";
         reference
          "IEEE 802.1AS: clause 14.6.24";
      }
   }

   list portStatIfEntry {
      key "portNumber";
      config false;
      description
       "A list of time-aware port related counters in a gPTP domain.
        A value 1 is used in a  bridge or an end station that does
        not have multiple components.";
      leaf asIfIndex {
         type if-index;
                 config false;
         description
          "It identifies the gPTP interface group within the system for
           which this portDataSet contains information.
           It is the value of the instance of the
           IfIndex object, defined in the IF-MIB, for the gPTP interface
           group corresponding to this port, or the value 0 if the port
           has not been bound to an underlying frame source and sink.
           For a given media port of a Bridge or an end station,
           there may be one or more gPTP port, and depends whether a
           media port supports point to point link (e.g. IEEE 802.3
           Ethernet) or point to multi-point (e.g. CSN, IEEE802.3
           EPON, etc) links on the media port.";
      }
      leaf portNumber {
         type uint32;
         config false;
         description
          "The portNumber value for a port on a time-aware end station
           (i.e., a time-aware system supporting a single gPTP port) shall
           be 1.
           The portNumber values for the gPTP ports on a time-aware Bridge
           supporting N ports shall be 1, 2, ..., N, respectively.";
         reference
          "IEEE 802.1AS: clause 14.6.2";
      }
      leaf statRxSyncCount {
         type yang:counter32;
         config false;
         description
          "A counter that increments every time synchronization information
           is received.";
         reference



Ben Hadj Said & Boc    Expires September 30, 2018              [Page 36]

Internet-Draft           DetNet gptp yang model               March 2018


          "IEEE 802.1AS: clause 14.7.2";
      }
      leaf statRxFollowUpCount {
         type yang:counter32;
         config false;
         description
          "A counter that increments every time a Follow_Up message
           is received.";
         reference
          "IEEE 802.1AS: clause 14.7.3";
      }
      leaf statRxPdelayRequest {
         type yang:counter32;
         config false;
         description
          "A counter that increments every time a Pdelay_Req message
           is received";
         reference
          "IEEE 802.1AS: clause 14.7.4";
      }
      leaf statRxPdelayResponse {
         type yang:counter32;
         config false;
         description
          "A counter that increments every time a Pdelay_Resp
           message is received.";
         reference
          "IEEE 802.1AS: clause 14.7.5";
      }
      leaf statRxPdelayResponseFollowUp {
         type yang:counter32;
         config false;
         description
          "A counter that increments every time a
           Pdelay_Resp_Follow_Up message is received.";
         reference
          "IEEE 802.1AS: clause 14.7.6";
      }
      leaf statRxAnnounce {
         type yang:counter32;
         config false;
         description
          "A counter that increments every time an Announce
           message is received.";
         reference
          "IEEE 802.1AS: clause 14.7.7";
      }
      leaf statRxPTPPacketDiscard {



Ben Hadj Said & Boc    Expires September 30, 2018              [Page 37]

Internet-Draft           DetNet gptp yang model               March 2018


         type yang:counter32;
         config false;
         description
          "A counter that increments every time a PTP message
           is discarded, caused by the occurrence of any of
           the following conditions:
              a) A received Announce message is not qualified.
              b) A Follow_Up message corresponding to a received Sync
                 message is not received.
              c) A Pdelay_Resp message corresponding to a transmitted
                 Pdelay_Req message is not received.
              d) A Pdelay_Resp_Follow_Up message corresponding to a
                 transmitted Pdelay_Req message is not received.";
         reference
          "IEEE 802.1AS: clause 14.7.8";
      }
      leaf statRxSyncReceiptTimeouts {
         type yang:counter32;
         config false;
         description
          "A counter that increments every time sync receipt
           timeout occurs.";
         reference
          "IEEE 802.1AS: clause 14.7.9";
      }
      leaf statAnnounceReceiptTimeouts {
         type yang:counter32;
         config false;
         description
          "A counter that increments every time announce receipt
           timeout occurs.";
         reference
          "IEEE 802.1AS: clause 14.7.10";
      }
      leaf statPdelayAllowedLostResponsesExceeded {
         type yang:counter32;
         config false;
         description
          "A counter that increments everytime the value of the
           variable lostResponses exceeds the value of the
           variable allowedLostResponses.";
         reference
          "IEEE 802.1AS: clause 14.7.11";
      }
      leaf statTxSyncCount {
         type yang:counter32;
         config false;
         description



Ben Hadj Said & Boc    Expires September 30, 2018              [Page 38]

Internet-Draft           DetNet gptp yang model               March 2018


          "A counter that increments every time synchronization
           information is transmitted.";
         reference
          "IEEE 802.1AS: clause 14.7.12";
      }
      leaf statTxFollowUpCount {
         type yang:counter32;
         config false;
         description
          "A counter that increments every time a Follow_Up
           message is transmitted.";
         reference
          "IEEE 802.1AS: clause 14.7.13";
      }
      leaf statTxPdelayRequest {
         type yang:counter32;
         config false;
         description
          "A counter that increments every time a Pdelay_Req
           message is transmitted.";
         reference
          "IEEE 802.1AS: clause 14.7.14";
      }
      leaf statTxPdelayResponse {
         type yang:counter32;
         config false;
         description
          "A counter that increments every time a Pdelay_Resp
           message is transmitted.";
         reference
          "IEEE 802.1AS: clause 14.7.15";
      }
      leaf statTxPdelayResponseFollowUp {
         type yang:counter32;
         config false;
         description
          "A counter that increments every time a
           Pdelay_Resp_Follow_Up message is
           transmitted.";
         reference
          "IEEE 802.1AS: clause 14.7.16";
      }
      leaf statTxAnnounce {
         type yang:counter32;
         config false;
         description
          "A counter that increments every time an
           Announce message is transmitted.";



Ben Hadj Said & Boc    Expires September 30, 2018              [Page 39]

Internet-Draft           DetNet gptp yang model               March 2018


         reference
          "IEEE 802.1AS: clause 14.7.17";
      }
   }
   container acceptableMasterTableDataSet {
      description
       "Acceptable Master Table derived from IEEE 1588-2008.
        One Table per time-aware system, and used when any
        of the system is of type IEEE 802.3 EPON,
        i.e. if any port in a corresponding system has
        acceptableMasterTableEnabled set to true.
        Not used otherwise (Table exists without an entry).";
      leaf acceptableMasterTableDSMaxTableSize {
         type uint16;
         config false;
         description
          "The value is the maximum size of the AcceptableMasterTable.";
         reference
          "IEEE 802.1AS: clause 14.8.1 and 13.1.3.2";
      }
      leaf acceptableMasterTableDSActualTableSize {
         type uint16;
         description
          "The value is the actual size of the AcceptableMasterTable,
           i.e., the current number of elements in the acceptable
           master array.
           The actual table size is less than or equal to the max
           table size.
           For a time-aware system that contains an ONU attached
           to an IEEE 802.3 EPON link, the initialization value is 1.
           For a time-aware system that does not contain an ONU
           attached to an IEEE 802.3 EPON link,
           the initialization value is 0";
         reference
          "IEEE 802.1AS: clause 14.8.2 and 13.1.3.2";
      }
      list acceptableMasterTableDSacceptableMasterArray {
         key "acceptableMasterTableDSMasterId";
         description
          "A list of time-aware port related variables in a
           time-aware bridge or for a time-aware end station.
           A value of 1 is used in
           a bridge or an end station that does not have
           multiple components.";

         leaf acceptableMasterTableDSMasterId {
            type uint32;
            description



Ben Hadj Said & Boc    Expires September 30, 2018              [Page 40]

Internet-Draft           DetNet gptp yang model               March 2018


             "Acceptable Master row entry index in this
              acceptableMasterTabdDSMaster Entry applies.
              If the does not contain Media type of EPON,
              this variable (index) MUST be equal to 0.";
            reference
             "IEEE 802.1AS: clause 14.8.3";
         }
         container acceptableMasterPortIdentity {
            description
             "It represents the identity of a port or aggregate port
              on a bridge component or end-station.";
            uses port-identity-group;
            reference
             "IEEE 802.1AS: clause 14.8.3";
         }
         leaf acceptableMasterAlternatePriority1 {
            type uint32;
            description
             "If the alternatePriority1 member of the AcceptableMaster
              array element that corresponds to the sourcePortIdentity
              of a received Announce message is greater than 0, the
              value of the grandmasterPriority1 field of the Announce
              message is replaced by the value of alternatePriority1
              of this AcceptableMaster array element for use in the
              invocation of BMCA.";
            reference
             "IEEE 802.1AS: clause 14.8.3";
         }
         leaf acceptableMasterRowStatus {
            type uint32;
            description
             "It indicates the status of an entry, and is used to
              create/delete entries.";
            reference
             "IEEE 802.1AS: clause 14.8.3";
         }
      }
   }
}
<CODE ENDS>

6.  Security Considerations

   TBD.







Ben Hadj Said & Boc    Expires September 30, 2018              [Page 41]

Internet-Draft           DetNet gptp yang model               March 2018


7.  IANA Considerations

   IANA?

8.  Contributors

   if needed.

9.  Acknowledgements

10.  References

10.1.  Normative References

   [I-D.ietf-detnet-architecture]
              Finn, N., Thubert, P., Varga, B., and J. Farkas,
              "Deterministic Networking Architecture", draft-ietf-
              detnet-architecture-04 (work in progress), October 2017.

   [I-D.ietf-detnet-flow-information-model]
              Farkas, J., Varga, B., rodney.cummings@ni.com, r., Jiang,
              Y., and Y. Zha, "DetNet Flow Information Model", draft-
              ietf-detnet-flow-information-model-01 (work in progress),
              March 2018.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <https://www.rfc-editor.org/info/rfc2119>.

   [RFC6020]  Bjorklund, M., Ed., "YANG - A Data Modeling Language for
              the Network Configuration Protocol (NETCONF)", RFC 6020,
              DOI 10.17487/RFC6020, October 2010,
              <https://www.rfc-editor.org/info/rfc6020>.

   [RFC6241]  Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
              and A. Bierman, Ed., "Network Configuration Protocol
              (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
              <https://www.rfc-editor.org/info/rfc6241>.

   [RFC7950]  Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language",
              RFC 7950, DOI 10.17487/RFC7950, August 2016,
              <https://www.rfc-editor.org/info/rfc7950>.








Ben Hadj Said & Boc    Expires September 30, 2018              [Page 42]

Internet-Draft           DetNet gptp yang model               March 2018


10.2.  Informative References

   [I-D.draft-ietf-netconf-restconf]
              Bierman, L., Bjorklund, M., and K. Watsen, "RESTCONF
              Protocol", I-D draft-ietf-netconf-restconf-13, April 2016.

   [I-D.ietf-detnet-use-cases]
              Grossman, E., "Deterministic Networking Use Cases", draft-
              ietf-detnet-use-cases-14 (work in progress), February
              2018.

   [IEEE8021AS]
              "IEEE 802.1, "IEEE 802.1AS-2011: IEEE Standard for Local
              and metropolitan area networks - Timing and
              Synchronization for Time-Sensitive Applications in Bridged
              Local Area Networks", 2011,
              <http://ieeexplore.ieee.org/document/5741898/>.", 2011.

   [IEEE8021Qcc]
              "IEEE, "Stream Reservation Protocol (SRP) Enhancements and
              Performance Improvements (IEEE Draft P802.1Qcc)", 2017,
              <http://www.ieee802.org/1/files/private/cc-drafts/>.".

   [IEEE8021TSN]
              IEEE 802.1, "IEEE 802.1 Time-Sensitive Networking (TSN)
              Task Group", <http://www.ieee802.org/1/pages/tsn.html>.

Authors' Addresses

   Siwar Ben Hadj Said
   CEA, LIST
   CEA Saclay
   Gif-sur-Yvette , Ile-de-France   91190
   France

   Phone: +33169082939
   Email: Siwar.BenHadjSaid@cea.fr


   Michael Boc
   CEA, LIST
   CEA Saclay
   Gif-sur-Yvette , Ile-de-France   91190
   France

   Phone: +33169089223
   Email: Michael.Boc@cea.fr




Ben Hadj Said & Boc    Expires September 30, 2018              [Page 43]