Skip to main content

A YANG Data Model for Flex Ethernet(FlexE)
draft-xiaobn-ccamp-flexe-yang-mod-02

The information below is for an old version of the document.
Document Type
This is an older version of an Internet-Draft whose latest revision state is "Expired".
Authors xiaobingNIU , Qilei Wang , Yunbin Xu , Sivakumar Munagapati
Last updated 2019-06-06 (Latest revision 2019-05-17)
RFC stream (None)
Formats
Stream Stream state (No stream defined)
Consensus boilerplate Unknown
RFC Editor Note (None)
IESG IESG state I-D Exists
Telechat date (None)
Responsible AD (None)
Send notices to (None)
draft-xiaobn-ccamp-flexe-yang-mod-02
Internet Engineering Task Force                              X. Niu, Ed.
Internet-Draft                                              Q. Wang, Ed.
Intended status: Informational                                       ZTE
Expires: December 8, 2019                                          Y. Xu
                                                                   CAICT
                                                           S. Munagapati
                                                                   Cisco
                                                            June 6, 2019

               A YANG Data Model for Flex Ethernet(FlexE)
                  draft-xiaobn-ccamp-flexe-yang-mod-02

Abstract

   Flex Ethernet(FlexE) implementation agreement have been published by
   OIF.  FlexE provides a generic mechanism for supporting a variety of
   Ethernet MAC rates that may or may not correspond to any existing
   Ethernet PHY rate.

   This document describes a YANG data model for FlexE.  It can be used
   to manage and control devices supporting FlexE functions.

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 December 8, 2019.

Copyright Notice

   Copyright (c) 2019 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

Niu, et al.             Expires December 8, 2019                [Page 1]
Internet-Draft              FlexE yang model                   June 2019

   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.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  Terminology . . . . . . . . . . . . . . . . . . . . . . . . .   3
     2.1.  Requirements Language . . . . . . . . . . . . . . . . . .   3
     2.2.  FlexE terminology used in this document . . . . . . . . .   3
   3.  FlexE Reference Configuration Model . . . . . . . . . . . . .   4
   4.  Requirements  . . . . . . . . . . . . . . . . . . . . . . . .   4
     4.1.  Requirements  . . . . . . . . . . . . . . . . . . . . . .   4
   5.  YANG Data Model for FlexE (Tree Structure)  . . . . . . . . .   5
   6.  FlexE types Module  . . . . . . . . . . . . . . . . . . . . .   7
   7.  FlexE YANG Module . . . . . . . . . . . . . . . . . . . . . .  10
   8.  Acknowledgements  . . . . . . . . . . . . . . . . . . . . . .  18
   9.  Authors (Full List) . . . . . . . . . . . . . . . . . . . . .  18
   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  19
   11. IANA Considerations . . . . . . . . . . . . . . . . . . . . .  19
   12. Security Considerations . . . . . . . . . . . . . . . . . . .  20
   13. References  . . . . . . . . . . . . . . . . . . . . . . . . .  20
     13.1.  Normative References . . . . . . . . . . . . . . . . . .  20
     13.2.  Informative References . . . . . . . . . . . . . . . . .  22
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  22

1.  Introduction

   Flex Ethernet (FlexE) implementation agreement version 1.1
   [OIFFLEXE1] and 2.0 [OIFFLEXE2] have been published by OIF.  FlexE
   provides a generic mechanism for supporting a variety of Ethernet MAC
   rates that may or may not correspond to any existing Ethernet PHY
   rate.  This includes MAC rates that are both greater than (through
   bonding) and less than (through sub-rate and channelization) the
   Ethernet PHY rates used to carry FlexE.

   This document defines a date model of FlexE, using YANG[RFC7950].
   This model mainly deals with the data model of the FlexE Group and
   the FlexE client.  It can be used by an application to configure and
   modify the parameters of the FlexE Group and the FlexE client, and to
   receive notifications, e.g. mismatch errors, from devices supporting
   FlexE functions.

   Requirements for the FlexE YANG model are considered.  And FlexE YANG
   tree and YANG files are given.

Niu, et al.             Expires December 8, 2019                [Page 2]
Internet-Draft              FlexE yang model                   June 2019

2.  Terminology

   A simplified graphical representation of the data model is used in
   this document.  The meaning of the symbols in the YANG data tree
   presented later in this document is defined in [RFC8340].  They are
   provided below for reference.

   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.

   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.

   o  Some of the key terms used in this document are listed as follow.

   The terminology for describing YANG data models is found in
   [RFC7950].

2.1.  Requirements Language

   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].

2.2.  FlexE terminology used in this document

   a.  CSG: Calendar Slot Granularity.  It can be 5G or 25G.

   b.  FlexE Calendar: In FlexE IA v1.1, the total capacity of a FlexE
       Group is represented as a collection of slots which have a
       granularity of 5G.  The calendar for a FlexE Group composed of n
       100G PHYs is represented as an array of 20n slots (each
       representing 5G of bandwidth).  This calendar is partitioned into
       sub-calendars, with 20 slots per 100G PHY.  Each FlexE client is
       mapped into one or more calendar slots (based on the bandwidth
       the FlexE client flow will need).  In FlexE IA v2.0[OIFFLEXE2],
       the total capacity of a FlexE Group is represented as a
       collection of slots which may have a granularity of 5G or 25G.
       The calendar for a FlexE Group composed of n 100G FlexE instances
       from m 100G/200G/400G PHYs is represented as an array of 20n

Niu, et al.             Expires December 8, 2019                [Page 3]
Internet-Draft              FlexE yang model                   June 2019

       slots (each representing 5G of bandwidth) or 4n slots (25G
       granularity).

   c.  FlexE Client: An Ethernet flow based on a MAC data rate that may
       or may not correspond to any Ethernet PHY rate.

   d.  FlexE Group: A FlexE Group is composed of from 1 to n 100G FlexE
       Instances that are carried by a group of from 1 to m bonded
       Ethernet PHYs.

   e.  FlexE instance: A 100G FlexE Instance is a unit of information
       consisting of 100G of capacity able to carry FlexE Client data,
       together with its associated overhead.

   Detailed description of these terms can be found in [OIFFLEXE1] and
   [OIFFLEXE2] .

3.  FlexE Reference Configuration Model

   FlexE can be implemented between the FlexE mux and demux in two end
   devices connected directly by the FlexE links.  In this case, FlexE
   is just a link connection technology.

   FlexE can also be transported by transport networks.  There are three
   kinds of transport network mapping mechanisms for FlexE signals, that
   is, FlexE unaware transport, FlexE termination in the transport
   network and FlexE aware transport.

   How to configure the ingress or egress of transport network about
   FlexE mapping relationship may be application specific.  In this
   document, the part of YANG data model for the transport network
   mapping for FlexE is not included at present.

4.  Requirements

4.1.  Requirements

   This section summarizes the management requirements for the FlexE
   Group and the FlexE Client.

   Req-1 The model SHALL support the management of the FlexE Group,
   consisting of one or more 100G FlexE instances which carried by one
   or more 100GE, 200GE, 400GE Ethernet PHY(s).

   The detailed management covers the CURD functions (create, update,
   read and delete), and lock/unlock.

Niu, et al.             Expires December 8, 2019                [Page 4]
Internet-Draft              FlexE yang model                   June 2019

   Req-2 The model SHOULD be able to verify that the collection of
   Ethernet PHY(s) included in a FlexE Group have the same
   characteristics (e.g. number of PHYs, rate of PHYs, etc.) at the
   local FlexE shims.  If inconsistency exists, notifications (e.g.
   errors) SHOULD be invoked.

   Req-3 The model SHOULD be able to verify that the collection of FlexE
   instances included in a FlexE Group have the same characteristics
   (e.g. calendar slot granularity, unequipped slots, etc.) at the local
   FlexE shims.  If inconsistency exists, notifications (e.g. errors)
   SHOULD be invoked.

   Req-4 The model SHALL allow the addition (or removal) of one or more
   FlexE clients on a FlexE Group.  The addition (or removal) of a FlexE
   client flow SHALL NOT affect the services for the other FlexE client
   signals whose size and calendar slot assignments are not changed.

   Req-5 The model SHALL allow FlexE client signals to flexibly span the
   set of FlexE instances which comprise the FlexE Group.

   Req-6 The model SHALL support a FlexE client flow resizing without
   affecting any existing FlexE clients within the same FlexE Group.

   Req-7 The model SHALL support the switching of a calendar
   configuration.  There are two calendar configurations, A and B.

5.  YANG Data Model for FlexE (Tree Structure)

 module: ietf-flexe-yang
   +--rw flexe-configuration
      +--rw flexe-groups
      |  +--rw flexe-group* [group-number]
      |     +--rw group-number        uint32
      |     +--rw group-attributes
      |        +--rw flexe-gp-avb-bw?    rt-types:bandwidth-ieee-float32
      |        +--rw cal-slot-gran?           flexe-tp:cal-slot-gran
      |        +--rw flexe-phy-type?          flexe-tp:flexe-phy-type
      |        +--rw bonded-phys
      |        |  +--rw flexe-phys* [phy-number-in-group]
      |        |     +--rw phy-number-in-group     uint8
      |        |     +--rw local-phy-interface?    if:interface-ref
      |        |     +--rw remote-phy-interface?   if:interface-ref
      |        +--rw flexe-instances
      |        |  +--rw flexe-instance* [flexe-inst-num]
      |        |  |  +--rw flexe-inst-num             uint8
      |        |  |  +--rw unavb-sub-cal-slot-list* [sub-cal-slot-id]
      |        |  |     +--rw sub-cal-slot-id    uint8

Niu, et al.             Expires December 8, 2019                [Page 5]
Internet-Draft              FlexE yang model                   June 2019

      |        |  +--rw uneqipped-flexe-instance* [flexe-inst-num]
      |        |     +--rw flexe-inst-num    uint8
      |        +--rw expected-group-number?   uint32
      |        +--rw expected-phy-map?        string
      |        +--rw expected-cal-cfg?        flexe-tp:calendar-AorB
      |        +--rw tx-calendar?             flexe-tp:calendar-AorB
      |        +--rw rx-calendar?             flexe-tp:calendar-AorB
      |        +--rw tx-calendar-neg?         enumeration
      |        +--rw reply-ca-mode?           enumeration
      +--rw flexe-clients
         +--rw flexe-client* [client-number]
            +--rw client-number         uint16
            +--rw bandwidth
            |  +--rw signal-type?   flexe-client-signal-rate
            |  +--rw mac-rate?      rt-types:bandwidth-ieee-float32
            +--rw flexe-group-number?   uint32
            +--rw alloc-slots
            |  +--rw tx-alloc-A-slots
            |  |  +--rw instance-slots* [flexe-inst-num slot-id]
            |  |     +--rw flexe-inst-num    uint8
            |  |     +--rw slot-id           uint8
            |  +--rw tx-alloc-B-slots
            |  |  +--rw instance-slots* [flexe-inst-num slot-id]
            |  |     +--rw flexe-inst-num    uint8
            |  |     +--rw slot-id           uint8
            |  +--rw (tx-calendar-neg)?
            |     +--:(STATIC-MODE)
            |     |  +--rw rx-alloc-slots
            |     |  |  +--rw instance-slots* [flexe-inst-num slot-id]
            |     |  |     +--rw flexe-inst-num    uint8
            |     |  |     +--rw slot-id           uint8
            |     |  +--rw rx-expected-A-slots
            |     |  |  +--rw instance-slots* [flexe-inst-num slot-id]
            |     |  |     +--rw flexe-inst-num    uint8
            |     |  |     +--rw slot-id           uint8
            |     |  +--rw rx-expected-B-slots
            |     |     +--rw instance-slots* [flexe-inst-num slot-id]
            |     |        +--rw flexe-inst-num    uint8
            |     |        +--rw slot-id           uint8
            |     +--:(MASTER-SLAVE)
            +--rw client-interface?     if:interface-ref

                                 Figure 1

Niu, et al.             Expires December 8, 2019                [Page 6]
Internet-Draft              FlexE yang model                   June 2019

6.  FlexE types Module

<CODE BEGINS> file "ietf-flexe-types@2019-06-06.yang"
module ietf-flexe-types {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-flexe-types";
  prefix "flexe-tp";
  import ietf-routing-types {
    prefix rt-types;
    description "Import ietf-routing-types module.";
  }
  organization
    "Internet Engineering Task Force (IETF) CCAMP WG";
  contact
    "WG List: <mailto:ccamp@ietf.org>
     Editor:  Xiaobing Niu (niu.xiaobing@zte.com.cn);
     Editor:  Qilei Wang (wang.qilei@zte.com.cn); ";
  description
    "This module defines a YANG data types used in FlexE YANG modules.

     Copyright (c) 2019 IETF Trust and the persons identified as
     authors of the code.  All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject
     to the license terms contained in, the Simplified BSD License
     set forth in Section 4.c of the IETF Trust's Legal Provisions
     Relating to IETF Documents(http://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC TBD; see
     the RFC itself for full legal notices.";
  revision 2019-06-06{
    description
      "Version 01.";
    reference
      "draft-xiaobn-ccamp-flexe-yang-mod-02.txt";
  }
  revision 2019-03-11{
    description
      "Initial version.";
    reference
      "draft-xiaobn-ccamp-flexe-yang-mod-00.txt";
  }

  /* typedefs */
  typedef cal-slot-gran {
    type enumeration {
      enum csg-5G {

Niu, et al.             Expires December 8, 2019                [Page 7]
Internet-Draft              FlexE yang model                   June 2019

        value 1;
        description "Calendar slot with a 5G granularity";
      }
      enum csg-25G {
        value 2;
        description "Calendar slot with a 25G granularity";
      }
    }
    description
      "Defines a type representing the granularity of a calendar slot.";
  }

  typedef flexe-client-signal-rate {
    type enumeration {
      enum flexe-client-signal-10Gbps{
        value 1;
        description
          "FlexE Client signal rate of 10Gbps";
      }
      enum flexe-client-signal-40Gbps{
        value 2;
        description
          "FlexE Client signal rate of 40Gbps";
      }
      enum flexe-client-signal-25mGbps{
        value 3;
        description
          "FlexE Client signal rate of m*25Gbps";
      }
    }
    description
      "Defines FlexE Client signal rate, including 10, 40, m*25Gbps.";
  }
  typedef flexe-phy-type {
    type enumeration {
      enum flexe-phy-100GBASE-R {
        value 1;
        description "100GBASE-R PHY";
      }
      enum flexe-phy-200GBASE-R {
        value 2;
        description "200GBASE-R PHY";
      }
      enum flexe-phy-400GBASE-R {
        value 3;
        description "400GBASE-R PHY";
      }
    }

Niu, et al.             Expires December 8, 2019                [Page 8]
Internet-Draft              FlexE yang model                   June 2019

    description
      "Defines types of PHYs in a FlexE group";
  }
  typedef calendar-AorB {
    type enumeration {
      enum calendar-A {
        value 0 ;
        description
          "Set the A calendar configuration.";
      }
      enum calendar-B {
        value 1 ;
        description
          "Set the B calendar configuration.";
      }
    }
    description
      "Calendar configuration A or B";
  }
  /* interface states: OK, SF, SD */
  typedef intf-state {
    type enumeration {
      enum ok {
        value 0 ;
        description
          "The interface state of the FlexE Group is OK.";
      }
      enum sf {
        value 1 ;
        description
          "The interface state of the FlexE Group is SF.";
      }
      enum sd {
        value 2 ;
        description
          "The interface state of the FlexE Group is SD.";
      }
    }
    description
      "Interface state of port group.";
  }
  /* grouping */
  grouping flexe-client-bandwidth{
    leaf signal-type{
      type flexe-client-signal-rate;
      description
        "Client signal types: 10, 40, m*25 Gbps.";
    }

Niu, et al.             Expires December 8, 2019                [Page 9]
Internet-Draft              FlexE yang model                   June 2019

    leaf mac-rate {
      type rt-types:bandwidth-ieee-float32;
        description
          "Bandwidth of clients.";
    }
    description
      "The bandwidth of a FlexE client.";
  }
}

<CODE ENDS>

7.  FlexE YANG Module

 <CODE BEGINS> file "ietf-flexe-yang@2019-06-06.yang"
 module ietf-flexe-yang {
   yang-version 1.1;
   namespace "urn:ietf:params:xml:ns:yang:ietf-flexe-yang";
   prefix "flexe";
   import ietf-routing-types {
     prefix rt-types;
     description "Import ietf-routing-types module.";
     reference "RFC8294";
   }
   import ietf-interfaces {
     prefix if;
     description "Import ietf-interfaces module.";
     reference "RFC7223";
   }
   import ietf-flexe-types {
     prefix flexe-tp;
     description "Import ietf-flexe-types module.";
   }
   organization
     "Internet Engineering Task Force (IETF) CCAMP WG";
   contact
     "WG List: <mailto:ccamp@ietf.org>
      Editor:  Xiaobing Niu (niu.xiaobing@zte.com.cn);
      Editor:  Qilei Wang (wang.qilei@zte.com.cn);
      Editor:  Sivakumar Munagapati (smunagap@cisco.com)";
   description
     "This module defines a YANG data model for FlexE.

      Copyright (c) 2019 IETF Trust and the persons identified as
      authors of the code.  All rights reserved.

      Redistribution and use in source and binary forms, with or
      without modification, is permitted pursuant to, and subject

Niu, et al.             Expires December 8, 2019               [Page 10]
Internet-Draft              FlexE yang model                   June 2019

      to the license terms contained in, the Simplified BSD License
      set forth in Section 4.c of the IETF Trust's Legal Provisions
      Relating to IETF Documents(http://trustee.ietf.org/license-info).

      This version of this YANG module is part of RFC TBD; see the RFC
      itself for full legal notices.";
   revision 2019-06-06 {
     description
       "Version 02.";
     reference
       "draft-xiaobn-ccamp-flexe-yang-mod-02.txt";
   }
   revision 2019-05-17 {
     description
       "Version 01.";
     reference
       "draft-xiaobn-ccamp-flexe-yang-mod-01.txt";
   }
   revision 2019-03-11 {
     description
       "Initial version.";
     reference
       "draft-xiaobn-ccamp-flexe-yang-mod-00.txt";
   }

   grouping slot-list
   {
     description
       "Calendar slots in FlexE instances.";
     list instance-slots{
       key "flexe-inst-num slot-id";
       description
         "List of slots for the FlexE client.";
       leaf flexe-inst-num{
         type uint8 ;
         description
           "It refers to the FlexE instance of a calendar slot.
            Clause 6.1 FlexE Group in FlexE IA 2.0";
       }
       leaf slot-id {
         type uint8;
         description
           "Id number of a sub-calendar slot in a FlexE instance.
            For 5G granularity, the range of slot-id is [0,19];
            For 25G granularity, the range of slot-id is [0,3];
            Refer to clause 6.7 in FlexE IA 2.0. ";
       }
     }

Niu, et al.             Expires December 8, 2019               [Page 11]
Internet-Draft              FlexE yang model                   June 2019

   }

   /* Configuration of FlexE */
   container flexe-configuration{
     description
       "FlexE configuration, including configurations of FlexE groups
        and FlexE clients.";
     container flexe-groups {
       description
         "Container for the FlexE Group";
       list flexe-group {
         key group-number;
         description
           "List of FlexE Group";
         leaf group-number {
           type uint32 {
             range 1..1048574 ;
           }
         description
           "The FlexE Group number is selected from the range 1~0xFFFFE.
            The value of 0x00000 and 0xFFFFF may not be used to
            designate a FlexE Group.";
         }
         container group-attributes {
           description
             "The attributes of a FlexE Group";
           leaf flexe-gp-avb-bw{
             type rt-types:bandwidth-ieee-float32;
             description
               "Availbale bandwidth allocated in the FlexE Group.
               Considering the FlexE Client MAC rates supported by FlexE
               Groups are 10, 40, m*25 Gbps, or a subset of these rates,
               it's recommended to confine the bandwidth allocated for a
               FlexE group into a integer compound from litmited types
               of MAC rateds.";
           }
           leaf cal-slot-gran{
             type flexe-tp:cal-slot-gran;
               description
                 "The granularity of calendar slot is 5G or 25G";
               reference
                 "OIF FlexE IA 2.0";
           }
           leaf flexe-phy-type{
             type flexe-tp:flexe-phy-type;
             description
               "Types of PHYs, such as 100/200/400GBASE-R";
             reference

Niu, et al.             Expires December 8, 2019               [Page 12]
Internet-Draft              FlexE yang model                   June 2019

               "OIF FlexE IA 2.0";
           }
           container bonded-phys {
             description
               "PHYs bonded to form a FlexE Group";
             list flexe-phys {
               key phy-number-in-group;
               description
                 "One of bonded PHYs in a FlexE Group";
               leaf phy-number-in-group{
                 type uint8{
                   range "1 .. 254";
                 }
                 description
                   "Refer to the clause 6.1 in FlexE IA 2.0.
                    For 100GBASE-R, the FlxeE PHY num and the 100G
                    FlexE instance num are the same and in the range
                    [1-254]; For 200GBASE-R, each PHY num is in the
                    range [1-126]. For 400GBASE-R, each PHY num is
                    in the range [1-62]";
               }
               leaf local-phy-interface{
                 type if:interface-ref;
                 description
                   "Local PHY interface related to the current PHY in a
                    FlexE group.";
               }
               leaf remote-phy-interface{
                 type if:interface-ref;
                 description
                   "Remote PHY interface related to the current PHY in
                    a FlexE group.";
               }
             }
           }

         container flexe-instances {
           description
             "FlexE instances in a FlexE Group";
           list flexe-instance {
             key flexe-inst-num;
             description
               "List of a FlexE instance in a FlexE Group. Not including
                those unequipped instances in the bonded PHYs.";
             leaf flexe-inst-num{
               type uint8 ;
               description
                 "Logical FlexE instance number";

Niu, et al.             Expires December 8, 2019               [Page 13]
Internet-Draft              FlexE yang model                   June 2019

               reference
                 "Clause 6.1 FlexE Group in FlexE IA 2.0.
                  For 100G, instance num=PHY num;
                  For 200G, 8-bit instance num consists of the PHY num
                  in the upper seven bits, and 0 or 1 in the lower order
                  bit.
                  For 400G, 8-bit instance num consists of the PHY num
                  in the upper six bits, and 0,1,2, or 3 in the two
                  lower order bits.  ";
             }
             list unavb-sub-cal-slot-list {
               key sub-cal-slot-id;
               description
                 "List of sub-calendar slots unavailable in a FlexE
                  Instance.";
               leaf sub-cal-slot-id {
                 type uint8;
                 description
                   "Identification number of a sub-calendar slot in a
                    FlexE instance.
                    For 5G granularity, the range of slot-id is [0,19];
                    For 25G granularity, the range of slot-id is [0,3];
                    Refer to clause 6.7 in FlexE IA 2.0. ";
               }
             }
           }
           list uneqipped-flexe-instance {
             key flexe-inst-num;
             description
               "Unquipped FlexE instances in the bonded PHYs.
                Strictly speaking, a unequipped instance does not belong
                to any FlexE Group, because in the overhead frame, the
                FlexE Group number is set to 0x00000.
                Refer to Clause 6.5 Unequipped 100G FlexE Instances.";
             leaf flexe-inst-num{
               type uint8 ;
               description
                 "Clause 6.1 FlexE Group in FlexE IA 2.0";
             }
           }
         }
         leaf expected-group-number {
           type uint32 {
             range 1..1048574 ;
           }
         description
           "The expected FlexE group number is configured at the FlexE
            demux. Its vaule is in the range 1~0xFFFFE.

Niu, et al.             Expires December 8, 2019               [Page 14]
Internet-Draft              FlexE yang model                   June 2019

            Refer to ExGID in G.8023.";
         }
         leaf expected-phy-map {
           type string {
             length "256";
             pattern "[0-1]*";
          }
         description
           "The expected FlexE PHY MAP is configured at the FlexE
            demux. The length of PHY MAP is 8*32=256. If a FlexE PHY
            ( for FlexE IA V1.1) or FlexE instance( for FlexE IA V2.0)
            is configured in the FlexE Group, the corresponding bit is
            set to 1.
            Refer to ExPHYMAP in G.8023.";
         }
         leaf expected-cal-cfg {
           type flexe-tp:calendar-AorB;
           description
             "The expected calendar configuration( ExCC in ITU-T G.8023)
              is configured on FlexE demux.
              Refer to ExCC in G.8023.";
         }
         leaf tx-calendar {
           type flexe-tp:calendar-AorB;
           description
             "Calendar configuration in the transmit direction.
              Refer to TxCC in G.8023. ";
         }
         leaf rx-calendar {
           type flexe-tp:calendar-AorB;
           description
             "Calendar configuration in the receive direction";
         }
         leaf tx-calendar-neg {
           type enumeration {
             enum STATIC-MODE {
               value 1 ;
               description
                 "STATIC mode. In this mode, calendar slots on mux and
                  demux need to be configured";
             }
             enum MASTER-SLAVE {
               value 2 ;
               description
                 "MASTER-SLAVE mode. In this mode, calendar slots only
                  need to be configured on mux";
             }
           }

Niu, et al.             Expires December 8, 2019               [Page 15]
Internet-Draft              FlexE yang model                   June 2019

           description
             "TX calendar negotiation methods";
         }
         leaf reply-ca-mode {
           type enumeration {
             enum never {
               value 1 ;
               description
                 "never reply CA (Configuration Ack)";
             }
             enum immediately {
               value 2 ;
               description
                 "immediately reply CA (Configuration Ack)";
             }
             enum ask-controller {
               value 3 ;
               description
                 "Ask controller for more control";
             }
           }
           description
             "Reply CA mode";
           }
         }
       }
     }
     container flexe-clients {
       description
         "FlexE clients information";
       list flexe-client {
         key client-number ;
         description
           "Attributes of FlexE client" ;
         leaf client-number {
           type uint16 {
             range 1..65534 ;
           }
           description
             "Client number in the range of 1~0xFFFE.
              The value 0x0000 indicates a calendar slot which is unused
              (but available).
              The value 0xFFFF (all ones) indicates a calendar slot that
              is unavailable.
              Refer to Clause 7.3.4 in FlexE IA 2.0.";
           reference
             "FlexE IA 2.0.";
         }

Niu, et al.             Expires December 8, 2019               [Page 16]
Internet-Draft              FlexE yang model                   June 2019

         container bandwidth {
           description "Client bandwidth";
           uses flexe-tp:flexe-client-bandwidth;
         }
         leaf flexe-group-number {
           type uint32 {
             range 1..1048574 ;
           }
           description
             "The FlexE Group is used to transport the FlexE client.";
         }
         container alloc-slots{
           description
             "Slots are allocated on the mux(Transmit-direction).";
           container tx-alloc-A-slots{
             uses slot-list;
              description
                "Slots in A calendar are allocated on the mux.
                 Refer to TxCCA in G.8023.";
           }
           container tx-alloc-B-slots{
             uses slot-list;
              description
                "Slots in B calendar are allocated on the mux.
                 Refer to TxCCB in G.8023.";
           }
           choice tx-calendar-neg{
             description
               "According to the mode, to determine what should be
                configured.";
             case STATIC-MODE{
               container rx-alloc-slots{
                 uses slot-list;
                 description
                   "Slots for a specific FlexE client allocated on the
                    demux(Receive-direction).";
               }
               container rx-expected-A-slots{
                 uses slot-list;
                 description
                   "The expected received slots for a specific FlexE
                    client in A calendar are configured on the demux.
                    Refer to ExCCA in G.8023.";
                 reference
                   "ITU-T G.8023";
               }
              container rx-expected-B-slots{
                 uses slot-list;

Niu, et al.             Expires December 8, 2019               [Page 17]
Internet-Draft              FlexE yang model                   June 2019

                 description
                   "The expected received slots for a specific FlexE
                    client in B calendar are configured on the demux.
                    Refer to ExCCB in G.8023.";
                 reference
                   "ITU-T G.8023";
               }
             }
             case MASTER-SLAVE{

             }
           }
         }

         leaf client-interface {
           type if:interface-ref;
           description
             "A FlexE Client is used as an interface.";
         }
       }
     }
   }
 }

 <CODE ENDS>

8.  Acknowledgements

9.  Authors (Full List)

      Xiaobing NIU (editor)

      ZTE

      Beijing, China

      Email: niu.xiaobing@zte.com.cn

      Qilei Wang (editor)

      ZTE

      Nanjing, China

      Email: wang.qilei@zte.com.cn

Niu, et al.             Expires December 8, 2019               [Page 18]
Internet-Draft              FlexE yang model                   June 2019

      Yunbin Xu

      CAICT

      Beijing, China

      Email: xuyunbin@caict.ac.cn

      Sivakumar Munagapati

      Cisco

      USA

      Email: smunagap@cisco.com

10.  Contributors

11.  IANA Considerations

   This document registers the following namespace URIs in the IETF XML
   registry[RFC3688]:

   URI: urn:ietf:params:xml:ns:yang:ietf-flexe-yang

   Registrant Contact: The IESG.

   XML: N/A, the requested URI is an XML namespace.

   This document registers the following namespace URIs in the IETF XML
   registry[RFC3688]:

   URI: urn:ietf:params:xml:ns:yang:ietf-flexe-types

   Registrant Contact: The IESG.

   XML: N/A, the requested URI is an XML namespace.

   This document registers the following YANG modules in the YANG Module
   Names registry[RFC6020] :

   name: ietf-flexe-yang

Niu, et al.             Expires December 8, 2019               [Page 19]
Internet-Draft              FlexE yang model                   June 2019

   namespace: urn:ietf:params:xml:ns:yang:ietf-flexe-yang

   prefix: flexe

   reference: RFC XXXX (TDB)

   name: ietf-flexe-types

   namespace: urn:ietf:params:xml:ns:yang:ietf-flexe-types

   prefix: flexe-tp

   reference: RFC XXXX (TDB)

12.  Security Considerations

   The YANG module specified in this document defines a schema for data
   that is designed to be accessed via network management protocols such
   as NETCONF[RFC6241] or RESTCONF[RFC8040].  The lowest NETCONF layer
   is the secure transport layer, and the mandatory-to-implement secure
   transport is Secure Shell (SSH)[RFC6242].  The lowest RESTCONF layer
   is HTTPS, and the mandatory-to-implement secure transport is
   TLS[RFC8446].

   There are a number of data nodes defined in this YANG module that are
   writable/creatable/deletable.  These data nodes may be considered
   sensitive or vulnerable in some network environments.  Write
   operations (e.g., edit-config) to these data nodes without proper
   protection can have a negative effect on network operations.

13.  References

13.1.  Normative References

   [G.709]    ITU-T, "Interfaces for the optical transport network,
              Amendment 2 ; 06/2018",  https://www.itu.int/itu-
              t/recommendations/rec.aspx?rec=12789, June 2018.

   [G.798]    ITU-T, "Characteristics of optical transport network
              hierarchy equipment functional blocks ; 08/2018",
              https://www.itu.int/itu-
              t/recommendations/rec.aspx?rec=13335, August 2018.

   [G.8023]   ITU-T, "Characteristics of equipment functional blocks
              supporting Ethernet physical layer and Flex Ethernet
              interfaces ; 06/2018",  https://www.itu.int/itu-
              t/recommendations/rec.aspx?rec=13544, June 2018.

Niu, et al.             Expires December 8, 2019               [Page 20]
Internet-Draft              FlexE yang model                   June 2019

   [G.872]    ITU-T, "Architecture of optical transport networks;
              01/2017",  https://www.itu.int/itu-
              t/recommendations/rec.aspx?rec=13086, January 2017.

   [OIFFLEXE1]
              OIF, "Flex Ethernet Implementation Agreement 1.1(OIF-
              FLEXE-01.1); 06/2017",  https://www.oiforum.com/wp-
              content/uploads/2019/01/FLEXE1.1.pdf, June 2017.

   [OIFFLEXE2]
              OIF, "Flex Ethernet Implementation Agreement 2.0(OIF-
              FLEXE-02.0); 06/2018",  https://www.oiforum.com/wp-
              content/uploads/2019/01/OIF-FLEXE-02.0-1.pdf, June 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>.

   [RFC3688]  Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
              DOI 10.17487/RFC3688, January 2004,
              <https://www.rfc-editor.org/info/rfc3688>.

   [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>.

   [RFC6242]  Wasserman, M., "Using the NETCONF Protocol over Secure
              Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011,
              <https://www.rfc-editor.org/info/rfc6242>.

   [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>.

   [RFC8040]  Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF
              Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017,
              <https://www.rfc-editor.org/info/rfc8040>.

   [RFC8340]  Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams",
              BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018,
              <https://www.rfc-editor.org/info/rfc8340>.

Niu, et al.             Expires December 8, 2019               [Page 21]
Internet-Draft              FlexE yang model                   June 2019

   [RFC8446]  Rescorla, E., "The Transport Layer Security (TLS) Protocol
              Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018,
              <https://www.rfc-editor.org/info/rfc8446>.

13.2.  Informative References

   [I-D.izh-ccamp-flexe-fwk]
              Hussain, I., Valiveti, R., Wang, Q., Andersson, L., Chen,
              M., and z. zhenghaomian@huawei.com, "GMPLS Routing and
              Signaling Framework for Flexible Ethernet (FlexE)", draft-
              izh-ccamp-flexe-fwk-05 (work in progress), March 2018.

   [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
              2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
              May 2017, <https://www.rfc-editor.org/info/rfc8174>.

Authors' Addresses

   Xiaobing Niu (editor)
   ZTE
   Beijing
   CN

   Email: niu.xiaobing@zte.com.cn

   Qilei Wang (editor)
   ZTE
   Nanjing
   CN

   Email: wang.qilei@zte.com.cn

   Yunbin Xu
   CAICT
   Beijing
   CN

   Email: xuyunbin@caict.ac.cn

   Sivakumar Munagapati
   Cisco
   USA

   Email: smunagap@cisco.com

Niu, et al.             Expires December 8, 2019               [Page 22]