CCAMP Working Group                                     Y. Lee (Editor)
                                                               D. Dhody
                                                               X. Zhang
Internet Draft                                                   A. Guo
Intended status: Standard Track                                  Huawei

                                                               V. Lopez
                                                             Telefonica

                                                                D. King
                                                        U. of Lancaster

                                                                 B. Yoon
                                                                    ETRI

                                                          Ricard Vilalta
                                                                    CTTC

Expires: January 3, April 8, 2018                                   July 3,                                  October 9, 2017

                A Yang Data Model for WSON Optical Networks

                     draft-ietf-ccamp-wson-yang-07.txt

                     draft-ietf-ccamp-wson-yang-08.txt

Abstract

   This document provides a YANG data model for the routing and
   wavelength assignment (RWA) TE topology in wavelength switched
   optical networks (WSONs).

Status of this Memo

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

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups.  Note that
   other groups may also distribute working documents as Internet-
   Drafts.

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

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt
   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html

   This Internet-Draft will expire on January 3, April 8, 2018.

Copyright Notice

   Copyright (c) 2017 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
   (http://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.

Table of Contents

   1. Introduction...................................................2
   2. YANG Model (Tree Structure)....................................3
   3. WSON-RWA IETF-WSON-Topology YANG Model............................................4 Model..................................4
   4. Security Considerations.......................................10 IETF-TE-WSON-Types YANG Model.................................12
   5. IANA Considerations...........................................10 Security Considerations.......................................14
   6. Acknowledgments...............................................10 IANA Considerations...........................................15
   7. References....................................................11
      7.1. Acknowledgments...............................................15
   8. References....................................................16
      8.1. Normative References.....................................11
      7.2. References.....................................16
      8.2. Informative References...................................11
   8. Contributors..................................................11 References...................................16
   9. Contributors..................................................16
   Authors' Addresses...............................................11 Addresses...............................................16

1. Introduction

   This document provides a YANG data model for the routing and
   wavelength assignment (RWA) Traffic Engineering (TE) topology in
   wavelength switched optical networks (WSONs). The YANG model
   described in this document is a WSON technology-specific Yang model
   based on the information model developed in [RFC7446] and the two
   encoding documents [RFC7581] and [RFC7579] that developed protocol
   independent encodings based on [RFC7446]. This document augments the
   the generic TE topology draft [TE-TOPO].

   What is not in scope of this document is both impairment-aware WSON
   and flex-grid.

   This document defines two YANG models: ietf-wson-topology (Section
   3) and ietf-te-wson-types (Section 4).

2. YANG Model (Tree Structure)

module: ietf-wson-topology
  augment /nd:networks/nd:network/nd:network-types: /nd:networks/nd:network/nd:network-types/tet:te-topology:
    +--rw wson-topology!
  augment /nd:networks/nd:network/nd:node/tet:te/tet:te-node- /nd:networks/nd:network/nd:node/tet:te/tet:config/tet:te-node-
attributes/tet:connectivity-matrices/tet:connectivity-matrix:
    +--rw matrix-interface* [in-port-id]
       +--rw in-port-id     wson-interface-ref
       +--rw out-port-id?   wson-interface-ref wavelength-availability-range?   te-wson-types:wavelength-range-type
  augment /nd:networks/nd:network/nd:node/tet:te/tet:state/tet:te-node-
attributes/tet:connectivity-matrices/tet:connectivity-matrix:
    +--ro wavelength-availability-range?   te-wson-types:wavelength-range-type
  augment /nd:networks/nd:network/lnk:link/tet:te/tet:te-link-attributes: /nd:networks/nd:network/lnk:link/tet:te/tet:config/tet:te-link-attributes:
    +--rw channel-max? channel-num?                 int32
    +--rw default-frequency? first-channel-frequency?     decimal64
    +--rw channel-spacing?             decimal64
    +--rw wavelength-available-bitmap*   binary
  augment /nd:networks/nd:network/nd:node/tet:te/tet:te-node-attributes:
    +--rw wson-node
    |  +--rw device-type?   devicetype
    |  +--rw dir?           directionality
    |  +--rw interfaces* [name]
    | available-wavelength-info* [priority]
       +--rw name           string
    |     +--rw port-number?   uint32
    |     +--rw input-port?    boolean
    |     +--rw output-port?   boolean
    | priority                         uint8
       +--rw description?   string
    +--rw resource-pool* [resource-pool-id]
       +--rw resource-pool-id    uint32 wavelength-availability-range?   te-wson-types:wavelength-range-type
  augment /nd:networks/nd:network/lnk:link/tet:te/tet:state/tet:te-link-attributes:
    +--ro channel-num?                 int32
    +--ro first-channel-frequency?     decimal64
    +--ro channel-spacing?             decimal64
    +--ro available-wavelength-info* [priority]
       +--ro priority                         uint8
       +--ro wavelength-availability-range?   te-wson-types:wavelength-range-type
  augment /nd:networks/nd:network/nd:node/tet:te/tet:config/tet:te-node-attributes:
    +--rw pool-state?         boolean wson-node
       +--rw matrix-interface* [in-port-id] node-type?   identityref
  augment /nd:networks/nd:network/nd:node/tet:te/tet:state/tet:te-node-attributes:
    +--ro wson-node
       +--ro node-type?   identityref
  augment /nd:networks/nd:network/nd:node/tet:te/tet:tunnel-termination-
point/tet:config:
    +--rw in-port-id     wson-interface-ref available-operational-mode*   te-wson-types:operational-mode
    +--rw out-port-id?   wson-interface-ref operational-mode?             te-wson-types:operational-mode
  augment /nd:networks/nd:network/nd:node/tet:te/tet:tunnel-termination-
point/tet:state:
    +--ro available-operational-mode*   te-wson-types:operational-mode
    +--ro operational-mode?             te-wson-types:operational-mode

3. WSON-RWA IETF-WSON-Topology YANG Model

   <CODE BEGINS> file "ietf-wson-topology@2017-07-03.yang" "ietf-wson-topology@2017-10-09.yang"

   module   ietf-wson-topology {
      yang-version
   //TODO: FIXME
         //yang-version 1.1;

         namespace "urn:ietf:params:xml:ns:yang:ietf-wson-topology";

         prefix "wson";

          import ietf-network {
             prefix "nd";
          }

         import ietf-network-topology {
           prefix "lnk";
         }

         import ietf-inet-types {
         prefix "inet";
         }

         import ietf-te-topology {
         prefix "tet";
         }
         import ietf-te-wson-types { //Modified
         prefix "te-wson-types";
         }

         //NOT NEEDED
         /*import ietf-transport-types {
         prefix "tran-types";
         } */

         organization
               "IETF CCAMP Working Group";

         contact
               "Editor:   Young Lee  <leeyoung@huawei.com>";

         description
               "This module contains a collection of YANG definitions
   for
               RWA WSON.

               Copyright (c) 2016 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).";

         revision 2017-07-03 2017-10-09 {
               description
                     "version 7."; 8.";

               reference
                     "RFC XXX: A Yang Data Model for WSON Optical
   Networks ";
         }

         typedef wson-topology-id {
               type inet:uri;
               description
                     "The WSON Topology ID";
         }

      typedef wson-node-id {
            type inet:ip-address;
            description
                  "The WSON Node ID";
      }

      typedef devicetype {
            type enumeration {
                  enum adm {
                        value 1;
                        description
                              "Device is ADM";
                  }

                  enum roadm {
                        value 2;
                        description
                              "Device is ROAMD/OXC";
                  }
            }
            description
                  "device type: fixed (ADM) or switched (ROADM/OXC)";
      }

      typedef directionality {
            type enumeration {
                  enum bidir {
                        value 0;
                        description
                              "bi-directional";
                  }
                  enum input {
                        value 1;
                        description
                              "input direction";
                  }
                  enum output {
                        value 2;
                        description
                              "output direction";
                  }
            }
            description
                  "The directionality of link set";
      }

      typedef wson-interface-ref {
            type leafref {
                path "/nd:networks/nd:network/nd:node/tet:te/"
                  + "tet:te-node-attributes/wson:wson-node/"
                  + "wson:interfaces/wson:name";
            }
            description
                  "This type is used by data models that need to
                  reference WSON interface.";
      }

         grouping wson-topology-type {
               description "wson-topology type";
               container wson-topology {
                     presence "indicates a topology of wson";
                     description
                           "Container to identify wson topology type";
                     }
         }

         grouping wson-node-attributes {
               description "wson "WSON node attributes";
               container wson-node {
                     description "WSON node attrtibutes.";
                     leaf device-type node-type {
                           type devicetype;
                        description
                              "device type: fixed (ADM) or switched
                              (ROADM/OXC)";
                  }
                  leaf dir identityref {
                        type directionality;
                        description
                              "bi-directionality or input or output
                              of link set";
                           base te-wson-types:wson-node-type;
                           }
                  list interfaces {
                 key "name";
                unique "port-number"; // TODO Puerto y TP ID
                           description "List of interfaces contained in the node";
                uses node-interface; "WSON node type.";
                     }
               }
         }

         grouping node-interface {
          description "node interface definition";
        leaf name {
           type string;
           description "Interface name";
        }
        leaf port-number {
           type uint32; wson-wavelength-availability-range{
               description "Number of the port used by the interface";
        } "wavelength availability range";

               leaf input-port { wavelength-availability-range{
                     type boolean; te-wson-types:wavelength-range-type;
                     description "Determines if the port is an input port";
        }
        leaf output-port {
           type boolean;
           description
           "Determines if the port is an output port";
        }
        leaf description {
           type string;
           description "Description of the interface";
        }
      }

      grouping available-wavelength {
            description "describe available wavelengths";
            leaf-list wavelength-available-bitmap {
                  type binary;
                  description
                        "array of bits (i.e., bitmap)
                           "range that indicates if a wavelength is
                            available or not on each
                        channel."; channel at
                            specified priority level.";
               }
         }
         grouping wson-link-attributes {
               description "Set of WSON "WSON link attributes";
               leaf channel-max channel-num {
                    type int32;
                    description "Maximum Number "Number of OCh channels available
by the node"; available";
               }
               leaf default-frequency first-channel-frequency {
                    type decimal64 {
                          fraction-digits 5;
                    }
                    units THz;
                        default 193.1;
                    description "Default Central Frequency"; "First channel frequency in the grid";
               }
               leaf channel-spacing {
                    type decimal64 {
                          fraction-digits 5;
                    }
                    units GHz;
                    description "This is fixed channel spacing for
   WSON,
                    e.g, 12.5, 25, 50, 100, ..";
               }
      }

      grouping wson-connectivity-matrix {
            description "wson connectivity matrix";

               list matrix-interface { available-wavelength-info{
                     key "in-port-id"; "priority";
                     max-elements "8";

                     description
                              "matrix-interface describes input-ports
                              and out-ports around a connectivity
                              matrix";
                           "List of available wavelength channels on
   this link";
                     leaf in-port-id priority {
                           type wson-interface-ref; uint8 {
                                  range "0..7";
                           }
                           description
                                    "The reference to in-port"; "priority";
                     }
                     uses wson-wavelength-availability-range;
               }
         }
         grouping wson-tp-attributes {
               description "wson-tp-attributes";

               leaf out-port-id client-facing {
                     type wson-interface-ref; empty;
                     description
                                    "The reference to out-port";
                           "if present, it means this tp is a client-
   facing tp.
                            adding/dropping client signal flow.";
               }

   /*
   //can it be fully covered by interface-switching-capability of base
   TE model?
               leaf-list supported-client-signals {
                     type identityref {
                           base tran-types:client-signal;
                     }
                     description
                           "Supported client signals at this TP";
               }
   */
         }

         grouping resource-pool-attributes wson-ttp-attributes {
               description "resource pool describes regeneration or wave converter";
            list resource-pool {
                  key "resource-pool-id";
                  description
                        "The resource pool list";

                  leaf resource-pool-id "WSON tunnel termination point (e.g.
   tranponder)
               attributes";
               leaf-list available-operational-mode {
                  type uint32; te-wson-types:operational-mode;
                  description
                              "The resource pool ID"; "List of all vendor-specific supported
                  mode identifiers";
               }

               leaf pool-state operational-mode {
                  type boolean; te-wson-types:operational-mode;
                  description
                              "TRUE is state UP; FALSE is state down";
                  }

                  uses wson-connectivity-matrix; "Vendor-specific mode identifier";
               }
         }

      /* AUGMENTS */

         augment "/nd:networks/nd:network/nd:network-types"
		 + "/tet:te-topology" {
               description "wson-topology augmented";
               uses wson-topology-type;
         }

         //FIXING NMDA
         augment "/nd:networks/nd:network/nd:node/tet:te"
                 +"/tet:te-node-attributes/tet:connectivity-matrices"
                 + "/tet:te-node-attributes/tet:connectivity-matrices" "/tet:connectivity-matrix" {
               when "/nd:networks/nd:network/nd:network-types"
                     +"/tet:te-topology/wson:wson-topology" {
                     description
                           "This augment is only valid for WSON
   connectivity
   matrix.";
               }
             description "WSON connectivity matrix config
   augmentation";
               uses wson-wavelength-availability-range;
         }

         //REMOVING
         /*
         augment "/nd:networks/nd:network/nd:node/tet:te/tet:state"
                 +"/tet:te-node-attributes/tet:connectivity-matrices"
                 + "/tet:connectivity-matrix" {
               when "/nd:networks/nd:network/nd:network-types"
                  +"/wson-topology"
                     +"/tet:te-topology/wson-topology" {
                     description
                           "This augment is only valid for WSON
   connectivity
   matrix.";
             }
             description "WSON connectivity matrix state augmentation";
               uses wson-connectivity-matrix;
      } wson-wavelength-availability-range;
         }*/

         //FIXING NMDA
         augment "/nd:networks/nd:network/lnk:link/tet:te"
                     + "/tet:te-link-attributes"   {
           when "/nd:networks/nd:network/nd:network-types"
                  +"/wson-topology"
                     +"/tet:te-topology/wson:wson-topology" {
                     description
                           "This augment is only valid for WSON.";
               }
               description "WSON Link augmentation.";

               uses wson-link-attributes;
            uses available-wavelength;
         }

         //REMOVING
         /*
         augment "/nd:networks/nd:network/lnk:link/tet:te/tet:state"
                     + "/tet:te-link-attributes"   {
           when "/nd:networks/nd:network/nd:network-types"
                     +"/tet:te-topology/wson:wson-topology" {
                     description
                           "This augment is only valid for WSON.";
                     }
               description "WSON Link augmentation.";

               uses wson-link-attributes;
         }*/

         //FIXING NMDA
         augment "/nd:networks/nd:network/nd:node/tet:te"
                 + "/tet:te-node-attributes" {
               when "/nd:networks/nd:network/nd:network-types"
                  +"/wson-topology"
                     +"/tet:te-topology/wson:wson-topology" {
                     description
                           "This augment is only valid for WSON.";
               }
               description "WSON Node augmentation.";

               uses wson-node-attributes;
         }

         //REMOVING
         /*
         augment "/nd:networks/nd:network/nd:node/tet:te/tet:state"
                 + "/tet:te-node-attributes" {
           when "/nd:networks/nd:network/nd:network-types"
                     +"/tet:te-topology/wson:wson-topology" {
                     description
                           "This augment is only valid for WSON.";
               }
               description "WSON Node augmentation.";

               uses wson-node-attributes;
         }*/

         //FIXING NMDA
         augment "/nd:networks/nd:network/nd:node/tet:te"
                 + "/tet:tunnel-termination-point" {
           when "/nd:networks/nd:network/nd:network-types"
                     +"/tet:te-topology/wson:wson-topology" {
                     description
                           "This augment is only valid for WSON.";
               }
               description "WSON tunnel termination point
   augmentation.";

               uses resource-pool-attributes; wson-ttp-attributes;
         }

         //removing
         /*augment "/nd:networks/nd:network/nd:node/tet:te"
                 + "/tet:tunnel-termination-point/tet:state" {
           when "/nd:networks/nd:network/nd:network-types"
                     +"/tet:te-topology/wson:wson-topology" {
                     description
                           "This augment is only valid for WSON.";
               }
               description "WSON tunnel termination point
   augmentation.";

               uses wson-ttp-attributes;
         }*/

   }
<CODE ENDS>

4. IETF-TE-WSON-Types YANG Model

<CODE BEGINS> file "ietf-te-wson-types@2017-10-09.yang"
   module ietf-te-wson-types {
        namespace "urn:ietf:params:xml:ns:yang:ietf-te-wson-types";
        prefix "te-wson-types";

        organization
            "IETF CCAMP Working Group";
        contact
            "WG Web: <http://tools.ietf.org/wg/ccamp/>
            WG List: <mailto:ccamp@ietf.org>

            Editor: Aihua Guo
                    <mailto:aihuaguo@huawei.com>

            Editor: Young Lee
                    <mailto:leeyoung@huawei.com>";

        description
            "This module defines WSON types.";

        revision "2017-10-09" {
            description
                "Revision 0.1";
            reference "TBD";
        }

        typedef operational-mode {
           type string;
           description
             "Vendor-specific mode that guarantees interoperability.
              It must be an string with the following format:
              B-DScW-ytz(v) where all these attributes are conformant
              to the ITU-T recomendation";
             reference "ITU-T G.698.2 (11/2009) Section 5.3";
        }
        identity wson-node-type {
            description
                    "WSON node type.";
            reference
                    "";
        }

        identity wson-node-foadm {
            base wson-node-type;
            description
                    "Fixed OADM node.";
        }

        identity wson-node-roadm {
            base wson-node-type;
            description
                    "ROADM or OXC node.";
        }

        identity wson-node-ila {
            base wson-node-type;
            description
                    "ILA (In-Line Amplifier) node.";
        }

       //ADDED
        typedef wavelength-range-type {
            type string {
                pattern "([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?" +
                        "(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)";
            }
            description
                "A list of WDM channel numbers (starting at 1)
                 in ascending order. For example: 1,12-20,40,50-80";
        }

       identity wavelength-assignment {
           description "Wavelength selection base";
       }
       identity unspecified-wavelength-assignment {
           base wavelength-assignment;
           description "No method specified";
       }

       identity first-fit-wavelength-asignment {
           base wavelength-assignment;
           description "All the available wavelengths are numbered,
               and this WA method chooses the available wavelength
               with the lowest index.";
       }

       identity random-wavelength-asignment {
           base wavelength-assignment;
           description "This WA method chooses an available
               wavelength randomly.";
       }

       identity least-loaded-wavelength-asignment {
           base wavelength-assignment;
           description "This WA method selects the wavelength that
               has the largest residual capacity on the most loaded
               link along the route (in muli-fiber networks).";
       }

    }

<CODE ENDS>

5. Security Considerations

   TDB

5.

6. IANA Considerations

   TDB

6.

7. Acknowledgments

   This document was prepared using 2-Word-v2.0.template.dot.

7.

8. References

   7.1.

   8.1. Normative References

   [TE-TOPO] X. Liu, et al., "YANG Data Model for TE Topologies", work
             in progress: draft-ietf-teas-yang-te-topo.

   7.2.

   8.2. Informative References

   [RFC7446]  Y. Lee, G. Bernstein, D. Li, W. Imajuku, "Routing and
             Wavelength Assignment Information Model for Wavelength
             Switched Optical Networks", RFC 7446, Feburary 2015.

   [RFC7579]   G. Bernstein, Y. Lee, D. Li, W. Imajuku, "General
             Network Element Constraint Encoding for GMPLS Controlled
             Networks", RFC 7579, June 2015.

   [RFC7581]  G. Bernstein, Y. Lee, D. Li, W. Imajuku, "Routing and
             Wavelength Assignment Information Encoding for Wavelength
             Switched Optical Networks", RFC 7581, June 2015.

8.

9. Contributors

Authors' Addresses

   Young Lee (ed.)
   Huawei Technologies
   5340 Legacy Drive, Building 3
   Plano, TX 75023
   USA

   Phone: (469) 277-5838
   Email: leeyoung@huawei.com

   Dhruv Dhody
   Huawei Technologies India Pvt. Ltd,
   Near EPIP Industrial Area,  Kundalahalli Village,  Whitefield,
   Bangalore -  560 037 [H1-2A-245]
   Email: dhruv.dhody@huawei.com

   Xian Zhang
   Huawei Technologies

   Email: zhang.xian@huawei.com

   Aihua Guo
   Huawei Technologies
   Email: aihuaguo@huawei.com

   Victor Lopez
   Telefonica
   Email: victor.lopezalvarez@telefonica.com

   Daniel King
   University of Lancaster
   Email: d.king@lancaster.ac.uk

   Bin Yeong Yoon
   ETRI
   218 Gaijeongro, Yuseong-gu
   Daejeon, Korea
   Email: byyun@etri.re.kr

   Ricard Vilalta
   CTTC
   Email: ricard.vilalta@cttc.es