Network Working Group                                      D. Zhang
Internet Draft
Intended status: Standard Track                          A. Zaalouk
Expires: November 2015                                         EICT
                                                       Y. Cheng, Ed
                                                       China Unicom
                                                        J. Lindblad
                                                             Tail-F
                                                           M. Klyus
                                                         NetCracker
                                                       May 11, 2015

                 VPN Service Management YANG Data Model
           draft-zaalouk-supa-vpn-service-management-model-05


Abstract

   Currently new services create new opportunities for both network
   providers and service providers. Simplified Use of Policy
   Abstractions (SUPA) was proposed to develop a model that abstracts
   network resources and services and a methodology by which the
   management and monitoring of network services can be done using
   standardized policy rules. This document defines a VPN service
   management yang data model and gives an example for DDC use case.



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), 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





Zaalouk, et al.       Expires November 11, 2015             [Page 1]


Internet-Draft VPN Service Management YANG Data Model       May 2015


   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html

   This Internet-Draft will expire on Expires November 5, 2015.

Copyright Notice

   Copyright (c) 2014 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. Conventions used in this document ........................... 3
   3. Network Service Modules ..................................... 3
      3.1. Generic VPN Service Module ............................. 3
         3.1.1. VPN YANG Model .................................... 6
      3.2. L3VPN Service Module .................................. 10
         3.2.1. L3VPN YANG Model ................................. 12
      3.3. L2VPN Service Module .................................. 20
         3.3.1. L2VPN YANG Model ................................. 21
      3.4. Module for DDC services ............................... 26
         3.4.1. Model for DDC services ........................... 29
   4. Annex A (Service instance common attributes)................ 32
   5. Security Considerations .................................... 35
   6. IANA Considerations ........................................ 35
   7. Contributors and Acknowledgments ........................... 36
   8. Additional Author List ..................................... 36
   9. References ................................................. 36
      9.1. Normative References .................................. 36
      9.2. Informative References ................................ 37

1. Introduction

   Currently new services bring new challenges and opportunities for
   both network and service providers. Meanwhile, legacy services


Zaalouk, et al.       Expires November 11, 2015             [Page 2]


Internet-Draft VPN Service Management YANG Data Model       May 2015


   such as VPN [RFC4110] also need specialized management and
   controlling capability from the network management systems to
   improve the experiences for fast deployment and dynamic
   configuration.

   Simplified Use of Policy Abstractions (SUPA) [SUPA-problem-
   statement] [SUPA-framework] was proposed to introduce the concepts
   of multi-level and multi-technology network abstractions to
   address the current separation between development and deployment
   operations. The first example that SUPA will focus on will be VPN
   management.

   This document introduces YANG [RFC6020] [RFC6021] data models for
   SUPA configuration. Such models can facilitate the standardization
   for the interface of SUPA, as they are compatible to a variety of
   protocols such as NETCONF [RFC6241] and [RESTCONF]. Please note
   that in the context of SUPA, the term "application" refers to an
   operational and management applications employed, and possibly
   implemented, by an operator. The first configuration model is
   based on the first example - VPN management.



2. Conventions used in this document

   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 [RFC2119].
   In this document, these words will appear with that interpretation
   only when in ALL CAPS. Lower case uses of these words are not to
   be    interpreted as carrying [RFC2119] significance.



3. Network Service Modules

   In this section, several specific network service models are
   described based on a set of specific network services and the
   framework of SUPA [SUPA-framework].

3.1. Generic VPN Service Module

   A virtual private network (VPN) extends a private network across a
   public network, such as the Internet. It enables a computer or
   network-enabled device to send and receive data across shared or
   public networks as if it were directly connected to the private



Zaalouk, et al.       Expires November 11, 2015             [Page 3]


Internet-Draft VPN Service Management YANG Data Model       May 2015


   network, while benefiting from the functionality, security and
   management policies of the public network. [VPN]

   VPN systems may be classified by multiple ways, e.g., tunnelling
   protocols, tunnel's termination point location, etc. A typical one
   among these is by the OSI layer they present to the connecting
   network, such as Layer 2 circuits or Layer 3 network connectivity.

   In use cases of [SUPA-DDC], the links between DCs are VPNs,
   including L2VPN, L3VPN, etc. In this draft, before going deep into
   specific VPN services, a generic VPN model is firstly proposed
   below. It could be used by other specific VPN service models, such
   as L3VPN service models in [l3vpn-service-yang] and section 3.2 of
   this draft.

   Business VPN usually refers to the order information, while
   Service VPN usually contains the user's CE information, these two
   are highly abstraction of VPN service model. From inheritance
   model perspective, Generic VPN is a base class of all VPN models.
   L2VPN, L3VPN, Service VPN, Business VPN may be inherited from this
   base class with corresponding extensions. The Network
   Manager/Controller [SUPA-framework] can provide three kinds of
   north interfaces: VPN business models based on the Generic VPN,
   L2VPN, L3VPN, respectively. This suggests that the Network
   Manager/Controller can directly deploy L2VPN/ L3VPN business, or
   VPN service without being informed about the specific VPN type. In
   other word, the Network Manager/Controller selects specific VPN
   solutions based on Generic VPN and the specific deployment
   environment/requirement.



















Zaalouk, et al.       Expires November 11, 2015             [Page 4]


Internet-Draft VPN Service Management YANG Data Model       May 2015


   module: ietf-supa-vpn
      +--rw vpn-instance
         +--rw vpn-instance* [instance-name]
            +--rw name                            string
            +--rw connection-type?                enumeration
            +--rw service-type?                   enumeration
            +--rw access-management
            |  +--rw user-name        string
            |  +--rw user-password    string
            +--rw instance-oper-state?            enumeration
            +--rw instance-admin-state?           enumeration
            +--rw life-cycle-state?               enumeration
            +--rw instance-availability-status?   enumeration
            +--rw instance-cfg-revision?          string
            +--rw instance-sla-policy?            string
            +--rw access-interface* [name]
               +--rw name                            if:interface-ref
               +--rw role                            enumeration


   There are some candidate attributes listed below under discussion
   and maybe some of them will be added later:

            +--rw network-reliability-parameter
            +--rw performance-management-parameter
            |  +--rw pm-enable?               boolean
            +--rw fault-management-parameter
            |  +--rw alarm-enable?            boolean
            |  +--rw alarm-severity?          inet:uri



















Zaalouk, et al.       Expires November 11, 2015             [Page 5]


Internet-Draft VPN Service Management YANG Data Model       May 2015




3.1.1. VPN YANG Model

   <CODE BEGINS>
   module ietf-supa-vpn {
     namespace "urn:ietf:params:xml:ns:yang:ietf-supa-vpn";
     // replace with IANA namespace when assigned
     prefix vpn;

     import ietf-interfaces {
       prefix "if";
     }

     organization "IETF";
     contact
       "Editor: Dacheng Zhang
       dacheng.zdc@alibaba-inc.com

       Ying Cheng
       chengying10@chinaunicom.cn
       ";

     description
       "This YANG module defines a generic VPN
       (Virtual Private Network service)
       configuration model common across all of the
       vendor implementations. ";

     revision 2015-03-24 {
       description
         "Initial revision.";
       reference " RFC 4664, RFC4364, RFC7277";
     }

     container vpn-instance {
       list vpn-instance {
         key " name";
         description
           "Indicates the name of the VPN instance created.";

         leaf name {
           type string;
           description " instance name";
         }

         leaf connection-type {


Zaalouk, et al.       Expires November 11, 2015             [Page 6]


Internet-Draft VPN Service Management YANG Data Model       May 2015


           type enumeration {
             enum L2VPN {
               value 0;
               description "L2VPN";
             }
             enum L3VPN {
               value 1;
               description "L3VPN";
             }
           }
           description
             "Indicates the type of VPN, may be L2VPN or L3VPN";
         }

         leaf service-type {
           type enumeration {
             enum full-mesh {
               value "0";
               description "full-mesh";
             }
             enum hub-spoke {
               value "1";
               description "hub-spoke";
             }
           }
           default "full-mesh";
           description "Topology type";
         }

         container access-management{
           leaf user-name {
             type string;
             mandatory true;
             description "User name for this access interface";
           }

           leaf user-password {
             type string;
             mandatory true;
             description
               "User password for the access interface. User
               name and password are listed here because VPN
               need the authentication, one typical way is to
               use user name and password, so that in CE dynamic
               migration case, CEs are able to access with
               authentication regardless location.";
           }


Zaalouk, et al.       Expires November 11, 2015             [Page 7]


Internet-Draft VPN Service Management YANG Data Model       May 2015


           description
             "This part gives a typical example for access
             management";
         }

         leaf instance-oper-state {
           type enumeration {
             enum enabled {
               value 1;
               description "VPN Service is enabled";
             }
             enum disabled {
               value 2;
               description "VPN Service is disabled";
             }
           }
           description
             "This part indicates the operational state
             of VPN, enabled or disabled.
             User may use this value to inquire the status
             of this instance";
         }

         leaf instance-admin-state {
           type enumeration {
             enum Enabled {
               value 1;
               description "VPN Service Administratively Enabled";
             }
             enum Disabled {
               value 2;
               description "VPN Service Administratively Disabled";
             }
           }
           description
             "This part indicates the administrative state
             of VPN, e.g., enabled, disabled.
             User may use this value to manage the instance";
         }

         leaf life-cycle-state {
           type enumeration {
             enum planned {
               value 1;
               description "VPN Service Planned";
             }
             enum installed {


Zaalouk, et al.       Expires November 11, 2015             [Page 8]


Internet-Draft VPN Service Management YANG Data Model       May 2015


               value 2;
               description "VPN Service Installed";
             }
             enum removed {
               value 3;
               description "VPN Service Removed";
             }
           }
           description
             "This part indicates the life cycle state
             of VPN, e.g., installed, removed, planned.";
         }

         leaf instance-availability-status {
           type enumeration {
             enum degraded {
               value 1;
               description
                 "VPN Service Degraded";
             }
             enum failed {
               value 2;
               description
                "VPN Service Failed";
             }
           }
           description
             "This part indicates the availability status
             of VPN, e.g., degraded, failed.";
         }

         leaf instance-cfg-revision {
           type string;
           description
             "Indicates current service configuration revision";
         }

         leaf instance-sla-policy {
           type string;
           description
             "Indicates SLA decision policy name";
         }

         list access-interface {
           key name;
           description "Access interface name.";



Zaalouk, et al.       Expires November 11, 2015             [Page 9]


Internet-Draft VPN Service Management YANG Data Model       May 2015


           leaf name {
             type if:interface-ref;
             description "Access interface name.";
           }

           leaf role {
             when "../../service-type = 'full-mesh'" {
               description
                 "The role is always center-if in a
                  hub-spoke topology, in a full-mesh
                  topology, the role needs to be
                  specified as center-if or edge-if.";
             }
             type enumeration {
               enum edge-if {
                 value 0;
                 description "Edge interface";
               }
               enum center-if {
                 value 1;
                 description "Center interface";
               }
             }
             mandatory true;
             description
               "An edge interface (edge-if) indicates... FIXME";
           }
         }
       }
       description
       "Generic VPN is a base class for VPN models.
       Other VPN models may be inherited from this base
       class with corresponding extensions.";
     }
   }
   <CODE ENDS>


3.2. L3VPN Service Module

   A Layer 3 Virtual Private Network (L3VPN) interconnects sets of
   hosts and routers based on Layer 3 addresses and forwarding. L3VPN
   can be based on MPLS or IP technologies. L3VPN is a PE-based VPN
   managed by operators. L3VPN is widely used in carrier metro
   networks to provide VPN service for enterprise users.




Zaalouk, et al.       Expires November 11, 2015            [Page 10]


Internet-Draft VPN Service Management YANG Data Model       May 2015


   A L3VPN model is a collection of L3VPN instances. A L3VPN instance
   contains a set of access interfaces to network devices as well as
   other attributes, such as routing protocol, address family,
   topology, and so on.

   To configure a L3VPN instance, the administrator needs to specify
   which port(s) of a network device belongs to a L3VPN instance.
   Those ports and network device information can be derived from a
   network topology model in a network management system. The
   administrator also needs to specify what routing protocol needs to
   be configured for a L3VPN instance.

   The following describes a abstracted L3VPN information model for
   DDC service to use, based on which users can develop applications
   to configure L3VPN instances for DDC service. L3SM is also working
   on an elaborate L3VPN service model. After it's done DDC service
   in SUPA may directly refer the output of L3SM. The abstracted
   L3VPN model here is a subset of the one of L3SM.






























Zaalouk, et al.       Expires November 11, 2015            [Page 11]


Internet-Draft VPN Service Management YANG Data Model       May 2015


   module: ietf-supa-abstracted-l3vpn
      +--rw l3vpns
         +--rw l3vpn-instance* [name]
            +--rw name                            string
            +--rw service-type?                   enumeration
            +--rw address-family?                 enumeration
            +--rw instance-oper-state?            enumeration
            +--rw instance-admin-state?           enumeration
            +--rw life-cycle-state?               enumeration
            +--rw instance-availability-status?   enumeration
            +--rw instance-cfg-revision?          string
            +--rw instance-sla-policy?            string
            +--rw service-quality?                enumeration
            +--rw access-interface* [name]
            |  +--rw name       if:interface-ref
            |  +--rw address    inet:ip-prefix
            |  +--rw role       enumeration
            +--rw user-name                       string
            +--rw user-password                   string
            +--rw physical-node-id                string
            +--rw physical-access-interface       if:interface-ref
            +--rw routing
               +--rw protocol?        enumeration
               +--rw bgp-attribute
               |  +--rw remote-as-number?      inet:as-number
               |  +--rw remote-peer-address    inet:ip-address
               +--rw igp-attribute
                  +--rw protocol-id?   uint32

3.2.1. L3VPN YANG Model

   <CODE BEGINS>
   module ietf-supa-abstracted-l3vpn {
     namespace "urn:ietf:params:xml:ns:yang:ietf-supa-abstracted-
   l3vpn";
     // replace with IANA namespace when assigned
     prefix abstracted-l3vpn;

     import ietf-inet-types {
       prefix inet;
     }
     import ietf-interfaces {
       prefix if;
     }

     organization "IETF";
     contact


Zaalouk, et al.       Expires November 11, 2015            [Page 12]


Internet-Draft VPN Service Management YANG Data Model       May 2015


       "Editor: Dacheng Zhang
        dacheng.zdc@alibaba-inc.com

        Adel Zaalouk
        adel.ietf@gmail.com

        Kostas Pentikousis
        k.pentikousis@eict.de

        Jan Lindblad
        janl@tail-f.com

        Maxim Klyus
        klyus@NetCracker.com
       ";

     description
       "This YANG module an abstracted L3VPN information
        model for DDC service to useL3VPN, based on which
        users can develop applications to configure L3VPN
        instances for DDC service.

        Terms and Acronyms
          L3VPN: Layer 3 Virtual Private Network
       ";

     revision 2015-05-04 {
       description "Initial revision.";
       reference "RFC4364, RFC7277";
     }

     container l3vpns {
       description "an abstracted L3VPN information
        model for DDC service to use L3VPN.";

       list l3vpn-instance {
         key name;
         description
           "Indicates the name of the VPN instance.";

         leaf name {
           type string;
           description "L3VPN instance name.";
         }

         leaf service-type {
           type enumeration {


Zaalouk, et al.       Expires November 11, 2015            [Page 13]


Internet-Draft VPN Service Management YANG Data Model       May 2015


             enum full-mesh {
               value 0;
               description "Full-mesh topology.";
             }
             enum hub-spoke {
               value 1;
               description "Hub-spoke topology.";
             }
           }
           default "full-mesh";
           description "Topology type.";
         }

         leaf address-family {
           type enumeration {
             enum ipv4uni {
               value 0;
               description "ipv4 unicast address family.";
             }
             enum ipv6uni {
               value 1;
               description "ipv6 unicast address family.";
             }
           }
           default "ipv4uni";
           description "Address family type: IPv4 or IPv6.";
         }

         leaf instance-oper-state {
           type enumeration {
             enum enabled {
               value 1;
               description "VPN Service is enabled";
             }
             enum disabled {
               value 2;
               description "VPN Service is disabled";
             }
           }
           description
             "This part indicates the operational state
             of VPN, enabled or disabled.
             User may use this value to inquire the status
             of this instance";
         }

         leaf instance-admin-state {


Zaalouk, et al.       Expires November 11, 2015            [Page 14]


Internet-Draft VPN Service Management YANG Data Model       May 2015


           type enumeration {
             enum Enabled {
               value 1;
               description "VPN Service Administratively Enabled";
             }
             enum Disabled {
               value 2;
               description "VPN Service Administratively Disabled";
             }
           }
           description
             "This part indicates the administrative state
             of VPN, e.g., enabled, disabled.
             User may use this value to manage the instance";
         }

         leaf life-cycle-state {
           type enumeration {
             enum planned {
               value 1;
               description "VPN Service Planned";
             }
             enum installed {
               value 2;
               description "VPN Service Installed";
             }
             enum removed {
               value 3;
               description "VPN Service Removed";
             }
           }
           description
             "This part indicates the life cycle state
             of VPN, e.g., installed, removed, planned.";
         }

         leaf instance-availability-status {
           type enumeration {
             enum degraded {
               value 1;
               description
                 "VPN Service Degraded";
             }
             enum failed {
               value 2;
               description
                "VPN Service Failed";


Zaalouk, et al.       Expires November 11, 2015            [Page 15]


Internet-Draft VPN Service Management YANG Data Model       May 2015


             }
           }
           description
             "This part indicates the availability status
             of VPN, e.g., degraded, failed.";
         }

         leaf instance-cfg-revision {
           type string;
           description
             "Indicates current service configuration revision";
         }

         leaf instance-sla-policy {
           type string;
           description
             "Indicates SLA decision policy name";
         }

         leaf service-quality {
           type enumeration {
             enum gold {
               value 0;
               description
                "Best quality of service is guaranteed.";
             }
             enum silver {
               value 1;
               description
                "Better quality of service than bronze class
                is guaranteed.";
             }
             enum bronze {
               value 2;
               description
               "Average quality of service is guaranteed.";
             }
           }
           default "bronze";
           description "Quality of service.";
         }

         list access-interface {
           key name;
           description "Access interfaces.";

           leaf name {


Zaalouk, et al.       Expires November 11, 2015            [Page 16]


Internet-Draft VPN Service Management YANG Data Model       May 2015


             type if:interface-ref;
             description "Access interface name.";
           }

           leaf address {
             type inet:ip-prefix;
             mandatory true;
             description "Access interface address, IPv4 or IPv6.";
           }

           leaf role {
             when "../../service-type = 'full-mesh'" {
               description
                 "The role is always center-if in a
           hub-spoke topology, in a full-mesh
           topology, the role needs to be
           specified as center-if or edge-if.";
             }
             type enumeration {
               enum edge-if {
                 value 0;
                 description "Edge interface";
               }
               enum center-if {
                 value 1;
                 description "Center interface";
               }
             }
             mandatory true;
             description
         "center-if is only available in hub-spoke
         mode; There are two scenarios: in full
         mesh mode, the role of all the access-interface
         is edge-if, while in hub-spoke mode, the role of
         the interface of hub node is ceter-if, the one
               of spoke node is edge-if";
           }
         }

         leaf user-name {
           type string;
           mandatory true;
           description "User name for this access interface";
         }

         leaf user-password {
           type string;


Zaalouk, et al.       Expires November 11, 2015            [Page 17]


Internet-Draft VPN Service Management YANG Data Model       May 2015


           mandatory true;
           description
         "User password for the access interface in
         encrypted format. User name and password are
         listed here because VPN need the
         authentication, one typical way is to use
             user name and password, so that in CE dynamic
         migration case, CEs are able to access with
         authentication regardless location.";
         }

         leaf physical-node-id {
           type string;
           mandatory true;
           description "This is the physical node ID
           of access PE";
         }

         leaf physical-access-interface {
           type if:interface-ref;
           mandatory true;
           description " This is the Physical access
           interface of access PE.";
         }

         container routing {
           description
             "Routing configuration between PE and CE.";

           leaf protocol {
             type enumeration {
               enum bgp {
                 value 0;
                 description "bgp routing between PE and CE";
               }
               enum ospf {
                 value 1;
                 description "ospf routing between PE and CE";
               }
               enum isis {
                 value 2;
                 description "isis routing between PE and CE";
               }
               enum rip {
                 value 3;
                 description "rip routing between PE and CE";
               }


Zaalouk, et al.       Expires November 11, 2015            [Page 18]


Internet-Draft VPN Service Management YANG Data Model       May 2015


               enum static {
                 value 4;
                 description "static routing between PE and CE";
               }
             }
             default "ospf";
             description "Routing protocol between PE and CE.";
           }

           container bgp-attribute {
             when "../protocol = 'bgp'" {
               description "BGP specific parameters.";
             }

             leaf remote-as-number {
               type inet:as-number;
               description "Remote BGP peer as-number.";
             }

             leaf remote-peer-address {
               type inet:ip-address;
               mandatory true;
               description "Remote BGP peer address.";
             }
             description "Detailed configuration for BGP.";
           }

           container igp-attribute {
             when "../protocol = 'ospf' or
                   ../protocol = 'isis' or
                   ../protocol = 'rip'  or
                   ../protocol = 'static'" {
               description "IGP specific parameters.";
             }
             leaf protocol-id {
               type uint32;
               default 0;
               description "Valid only when protocol is IGP;
                            it can be AS number.";
             }
             description " This part defines the attribute of IGP.";
           }
         }
       }
     }
   }
   <CODE ENDS>


Zaalouk, et al.       Expires November 11, 2015            [Page 19]


Internet-Draft VPN Service Management YANG Data Model       May 2015




3.3. L2VPN Service Module

   This section describes service model for Ethernet L2VPN.

   There are different ways of classifying L2VPNs. According to the
   Ethernet services defined by Metro Ethernet Forum, there are
   mainly three types of Ethernet L2VPN service that can be provided
   by service providers: E-line, E-tree and E-lan.

   o E-line is point to point service.
   o E-lan is multipoint to multipoint service.
   o E-tree is multipoint to multipoint service, but the
      communications between some consumer sites are not allowed.
   Meanwhile according to [RFC4664], there are two fundamentally
   different kinds of Layer 2 VPN service that a service provider
   could offer to a customer: Virtual Private Wire Service (VPWS) and
   Virtual Private LAN Service (VPLS).

   o VPWS is a L2 VPN service that provides L2 point-to-point
      service.
   o VPLS is a L2 VPN service that emulates LAN service across a
      Wide Area Network (WAN).
   Based on different degrees of abstraction, the interfaces can be
   categorized into two kinds: a) The user can provide service type
   and site information to the controller and controller create VPN
   automatically, based on the network, maybe by pseudo wire or other
   method. This is the more abstracted Ethernet L2VPN service
   interface. b) If the provider is MPLS or MPLS-TP, controller can
   provide less abstracted interfaces to the user. The user can use
   such interfaces to control the network more agility. This document
   describes the former one, a more abstracted model for L2VPN.

   The following describes the information model for L2VPN, based on
   which users can develop applications to configure L2VPN instances.










Zaalouk, et al.       Expires November 11, 2015            [Page 20]


Internet-Draft VPN Service Management YANG Data Model       May 2015



   module: ietf-supa-l2vpn
      +--rw l2vpn-instances
         +--rw l2vpn-instance* [name]
            +--rw name                            string
            +--rw service-type                    enumeration
            +--rw instance-oper-state?            enumeration
            +--rw instance-admin-state?           enumeration
            +--rw life-cycle-state?               enumeration
            +--rw instance-availability-status?   enumeration
            +--rw instance-cfg-revision?          string
            +--rw instance-sla-policy?            string
            +--rw service-quality?                enumeration
            +--rw access-interface* [interface-id]
               +--rw interface-id           if:interface-ref
               +--rw role                   enumeration
               +--rw node-id                string
               +--rw interface-name         if:interface-ref
               +--rw access-type?           enumeration
               +--rw user-circuit-bitmap    string

3.3.1. L2VPN YANG Model

   <CODE BEGINS>
   module ietf-supa-l2vpn {
     namespace "urn:ietf:params:xml:ns:yang:ietf-supa-l2vpn";
     // replace with IANA namespace when assigned
     prefix l2vpn;

     import ietf-interfaces {
       prefix if;
     }

     organization "IETF";
     contact
       "Editor: Ying Cheng
       chengying10@chinaunicom.cn

       Vikram Choudhary
       vikschw@gmail.com
       ";

     description
       "This YANG module defines a generic service
       configuration model for L2VPN (Layer 2 Virtual
       Private Network), based on which programmers can
       develop applications to configure L2VPN instances.";


Zaalouk, et al.       Expires November 11, 2015            [Page 21]


Internet-Draft VPN Service Management YANG Data Model       May 2015



     revision 2015-04-09 {
       description
         "Initial revision";
       reference "RFC4664";
     }

     container l2vpn-instances {
       description "an abstracted L3VPN information
        model for DDC service to use L3VPN.";

       list l2vpn-instance {
         key "name";
         description
           "Indicates the name of the L2VPN instance";

         leaf name {
           type string;
           description "L2VPN instance name";
         }

         leaf service-type {
           type enumeration {
             enum e-line {
               value "0";
               description "the service type is e-line";
             }
             enum e-tree {
               value "1";
               description "the service type is e-tree";
             }
             enum e-lan {
               value "2";
               description "the service type is e-lan";
             }
           }
           mandatory true;
           description
             "The service type of this instance,
             user may choose from e-line, e-tree, e-lan";
          }

         leaf instance-oper-state {
           type enumeration {
             enum enabled {
               value 1;
               description "VPN Service is enabled";


Zaalouk, et al.       Expires November 11, 2015            [Page 22]


Internet-Draft VPN Service Management YANG Data Model       May 2015


             }
             enum disabled {
               value 2;
               description "VPN Service is disabled";
             }
           }
           description
             "This part indicates the operational state
             of VPN, enabled or disabled.
             User may use this value to inquire the status
             of this instance";
         }

         leaf instance-admin-state {
           type enumeration {
             enum Enabled {
               value 1;
               description "VPN Service Administratively Enabled";
             }
             enum Disabled {
               value 2;
               description "VPN Service Administratively Disabled";
             }
           }
           description
             "This part indicates the administrative state
             of VPN, e.g., enabled, disabled.
             User may use this value to manage the instance";
         }

         leaf life-cycle-state {
           type enumeration {
             enum planned {
               value 1;
               description "VPN Service Planned";
             }
             enum installed {
               value 2;
               description "VPN Service Installed";
             }
             enum removed {
               value 3;
               description "VPN Service Removed";
             }
           }
           description
             "This part indicates the life cycle state


Zaalouk, et al.       Expires November 11, 2015            [Page 23]


Internet-Draft VPN Service Management YANG Data Model       May 2015


             of VPN, e.g., installed, removed, planned.";
         }

         leaf instance-availability-status {
           type enumeration {
             enum degraded {
               value 1;
               description
                 "VPN Service Degraded";
             }
             enum failed {
               value 2;
               description
                "VPN Service Failed";
             }
           }
           description
             "This part indicates the availability status
             of VPN, e.g., degraded, failed.";
         }

         leaf instance-cfg-revision {
           type string;
           description
             "Indicates current service configuration revision";
         }

         leaf instance-sla-policy {
           type string;
           description
             "Indicates SLA decision policy name";
         }

         leaf service-quality {
           type enumeration {
             enum gold {
               value 0;
               description
                "Best quality of service is guaranteed.";
             }
             enum silver {
               value 1;
               description
                "Better quality of service than bronze class
                is guaranteed.";
             }
             enum bronze {


Zaalouk, et al.       Expires November 11, 2015            [Page 24]


Internet-Draft VPN Service Management YANG Data Model       May 2015


               value 2;
               description
               "Average quality of service is guaranteed.";
             }
           }
           default "bronze";
           description "Quality of service.";
         }

         list "access-interface" {
           key "interface-id";
           description "Access interface ID";

           leaf interface-id {
             type if:interface-ref;
             description "Access interface ID";
           }

           leaf role {
             when "../../instance-service-type = 'e-tree'" {
           description
           "root or leaf, only available in e-tree mode";
         }
             type enumeration {
               enum root {
                 value "0";
                 description "root interface";
                 }
               enum leaf {
                 value "1";
                 description "leaf interface";
               }
             }
             mandatory true;
             description
             "the role of interface";
           }

           leaf node-id {
             type string;
             mandatory true;
             description "physical node ID of access PE";
           }

           leaf interface-name {
             type if:interface-ref;
             mandatory true;


Zaalouk, et al.       Expires November 11, 2015            [Page 25]


Internet-Draft VPN Service Management YANG Data Model       May 2015


             description
               "physical access interface name of access PE";
           }

           leaf access-type {
             type enumeration {
               enum port{
                 value "0";
                 description "The access type is port.";
               }
               enum vlan{
                 value "1";
                 description "The access type is vlan.";
               }
         }
             default "port";
             description
               "This value describes the access type,
               options are port and vlan; port is chose
               when the access is the entire port, while vlan
               means the access is the vlan of the port.";
           }

           leaf user-circuit-bitmap {
             when "../../ access-type = 'vlan'"{
           description "Only available when access-type is vlan.";
         }
             type string;
             mandatory true;
             description
               "This value describes the scope of vlan:
         use ',' or '-' to indicate the scope, e.g. 1,3,5-7.";
           }
         }
       }
     }
   }
   <CODE ENDS>



3.4. Module for DDC services

   The following describes SUPA VPN management model designed for DDC
   services use case [SUPA-DDC]. [SUPA-DDC] took a large-scale
   Internet Data Center (IDC) operator as an example to describe what
   SUPA needs to do including DDC service initiation, VPN-based


Zaalouk, et al.       Expires November 11, 2015            [Page 26]


Internet-Draft VPN Service Management YANG Data Model       May 2015


   connectivity initiation, optimize traffic route, traffic
   adjustment and monitor.

   Module "ietf-supa-ddc" defines generic VPN management aspects
   which are common to all DDC services use case regardless of their
   type of vendor. In effect, the module can be viewed as providing a
   generic VPN management for DDC services.

   This model is designed based on vDC Connectivity use case in
   section 6.2 of [SUPA-DDC]. The figure below showed the tenants distributed on
   multiple DCs and the connectivity among them. Service data model and policy
   data model can be defined to automate or simplify the links configuration for
   vDCs.

                       +-------------------+
                       | DC2               |
                       | +---------------+ |
                       | |Tenant1 (vDC)  | |
                       | +---------------+ |
                       |                   |
                       | +---------------+ |
                       | | Tenantn (vDC) | |
                       | +---------------+ |
                       +-------------------+
                                  |vDC link
                            +-------------+
                            |             |
                           /|  Cloud      |\
                          / +-------------+ \
               vDC link  /                   \vDC link
                        /                     \
    +-------------------+               +-------------------+
    | DC1               |               | DC3               |
    | +---------------+ |               | +---------------+ |
    | | Tenant1 (vDC) | |               | | Tenant1 (vDC) | |
    | +---------------+ |               | +---------------+ |
    |                   |               |                   |
    | +---------------+ |               | +---------------+ |
    | | Tenantk (VDC) | |               | | Tenantn (vDC) | |
    | +---------------+ |               | +---------------+ |
    +-------------------+               +-------------------+


   Please note that, for DDC model, it is essentially a data center
   service model, but with the help of L3VPN do bearing, so it refers
   to L3VPN business model (not inheritance relationships).



Zaalouk, et al.       Expires November 11, 2015            [Page 27]


Internet-Draft VPN Service Management YANG Data Model       May 2015

















































Zaalouk, et al.       Expires November 11, 2015            [Page 28]


Internet-Draft VPN Service Management YANG Data Model       May 2015


   module: ietf-supa-ddc
      +--rw ddc-services
         +--rw ddc-service* [name]
            +--rw name               string
            +--rw tenant-name?       string
            +--rw dc-name*           string
            +--rw interface-name*    string
            +--rw connection-type?   enumeration
            +--rw connection-name    leafref
            +--rw bandwidth?         uint32
            +--rw latency?           uint32


3.4.1. Model for DDC services

   <CODE BEGINS>
   module ietf-supa-ddc {
     namespace "urn:ietf:params:xml:ns:yang:ietf-supa-ddc";
     // replace with IANA namespace when assigned
     prefix ddc;

     // import ietf-supa-vpn,ietf-supa-abstacted-l3vpn,
     // ietf-supa-l2vpn



     organization "IETF";
     contact
        "Editor: Ying Cheng
         chengying10@chinaunicom.cn

         Maxim Klyus
         klyus@NetCracker.com
        ";

     description
        "This YANG module defines a component that describing
         the ddc service model for creating and optimizing
         tenant's DC (data center) services that are deployed
         in multiple data centers.

         Terms and Acronyms
           DDC: Distributed Data Center
           L2VPN: Layer 2 Virtual Private Network
           L3VPN: Layer 3 Virtual Private Network
         ";



Zaalouk, et al.       Expires November 11, 2015            [Page 29]


Internet-Draft VPN Service Management YANG Data Model       May 2015


     revision 2014-12-25 {
        description
           "Initial revision.";
        reference "RFC4364, RFC7277";
     }

     container ddc-services {
       description
         "To create service for tenant's network that are deployed
         in multiple data centers. The following data are needed:
         name of data centers that the tenant's service are
         deployed in, connected method between data centers for
         the tenant (e.g. L2VPN, l3VPN, Native IP, etc.), name
         of tenant, ID of networks that belong to the tenant";

       list ddc-service {
         key "name";
         description
           "Overall ddc operational data, including the names of
           data center,the connection method between data centers,
           name of service, etc.";

         leaf name {
           type string;
           description
             "Indicates the name of the service";
         }

         leaf tenant-name {
           type string;
           description
             "Indicates the name of the tenant for whom
         the ddc service is being created.";
         }

         leaf-list dc-name {
           type string;
           description
             "List of the names of data center on which
             tenant's service is deployed in.";
         }

         leaf-list interface-name {
           type string;
           description
             "Indicates a set of access interface
             names of the network device that the


Zaalouk, et al.       Expires November 11, 2015            [Page 30]


Internet-Draft VPN Service Management YANG Data Model       May 2015


             data centers (deployment of tenant's
             service)are connected to.";
         }

         leaf connection-type {
           type enumeration {
             enum L2VPN {
               value 0;
               description "L2VPN";
             }
           enum L3VPN {
               value 1;
               description "L3VPN";
             }
             enum native-ipv4 {
               value 2;
               description "native IPv4";
             }
             enum native-ipv6 {
               value 3;
               description "native IPv6";
             }
           }
           description
             "Indicates the connection  type between the
             Data centers on which tenant service is being
             deployed . The connection type may be VPN
             (L2VPN or L3VPN) or Native IP (IPv4 or IPv6)";
         }

         leaf connection-name {
       type leafref { path "/l2vpn:l2vpn-instance/
         instance-name"; }
           mandatory true;
           description
             "Indicates the name of the connection e.g.,VPN
             instance";
         }

         leaf bandwidth {
           type uint32;
           description
             "Indicates the bandwidth of the network connection
             instance that is created for tenant.";
         }

         leaf latency {


Zaalouk, et al.       Expires November 11, 2015            [Page 31]


Internet-Draft VPN Service Management YANG Data Model       May 2015


           type uint32;
           description
             "Indicates the latency of the network connection
             instance that is created for tenant.";
         }
       }
     }
   }
   <CODE ENDS>

4. Annex A (Service instance common attributes)

The below code with set of common attributes can be implemented for
each type of VPN service.

Attributes description:

Operational State - operability of a VPN service is described by the
instance-oper-state read-only attribute, which has two possible
values: disabled and enabled. Operational State changes can be driven
by specific events associated with the VPN components and specific
administrative VPN transitions.

instance-oper-state attribute states:
- enabled: service is enabled and can operate normally or with some
errors
- disabled: service disabled administratively or automatically based
on some critical errors

Administrative State - administration of managed VPN service
described by instance-admin-state read-write attribute, which has two
possible values: disabled and enabled. This attribute operates
independently of the operability and usage of managed VPN and could
be changed automatically based on specific events associated with VPN
components or manually.

instance-admin-state attribute states:
- enabled: service administratively enabled, service configuration
structure unchanged, but service component states can be changed)
- disabled: service administratively disabled, service configuration
structure unchanged, but service component states can be changed)

Life Cycle State - planning and tracking of managed VPN service
described by life-cycle-state read-write attribute. Inventoried VPN



Zaalouk, et al.       Expires November 11, 2015            [Page 32]


Internet-Draft VPN Service Management YANG Data Model       May 2015


components also may have a life cycle attribute so that their
deployment can be planned, tracked and managed.

The life-cycle-state attribute shall have one of the following values
- planned: VPN is planned; configuration is ready but not installed
in the network.
- installed: VPN service is ready for production; configuration is
installed in the network.
- removed: The VPN service has been removed, configuration
uninstalled from the network and saved for the history.

Availability Status - availability of a VPN service described by
the instance-availability-status read-only attribute, which can be
zero or has one of two possible values: degraded or failed.
Availability Status changes can be driven by specific events
associated with the VPN components and specific administrative VPN
transitions.

instance-availability-status attribute states:
- degraded: VPN is still can operate but some of the VPN components
have an errors.
- failed: VPN service can't operate properly; because some of the VPN
components have critical errors and VPN Operational State seems to be
disabled.

Configuration Revision - configuration management of a VPN service is
described by the instance-cfg-revision read-write string attribute.
Service configuration could be modified (expanded/reduced) and VPN
service instance will be unchanged but service components can be
changed. Based on this attribute configuration changes can be tracked
for service modification history purpose and last active
configuration can be obtained.

SLA Policy - SLA policy reference described by the instance-sla-
policy read-write string attribute. Decision about VPN service
Operational State (Enabled / Disabled) and Availability State
(Degraded / Failed) can be very complicated and each SP can have own
decision process and internal service integrity check implementation.
SLA Policy attribute SP can implement some SLA decision policy per
VPN group service basis (when different VPNs have similar SLA
policy).


Zaalouk, et al.       Expires November 11, 2015            [Page 33]


Internet-Draft VPN Service Management YANG Data Model       May 2015


   <CODE BEGINS>

   leaf instance-oper-state {
     type enumeration {
       enum enabled {
         value 1;
         description
           "VPN Service is Enabled";
       }
       enum disabled {
         value 2;
         description
           "VPN Service is Disabled";
       }
     }
   }

   leaf instance-admin-state {
     type enumeration {
       enum enabled {
         value 1;
         description
           "VPN Service Administratively Enabled";
       }
       enum disabled {
         value 2;
         description
         "VPN Service Administratively Disabled";
       }
     }
   }

   leaf life-cycle-state {
     type enumeration {
       enum planned {
         value 1;
         description
           "VPN Service Planned";
       }
       enum installed {
         value 2;
         description
           "VPN Service Installed";
       }
       enum removed {
         value 3;
         description


Zaalouk, et al.       Expires November 11, 2015            [Page 34]


Internet-Draft VPN Service Management YANG Data Model       May 2015


           "VPN Service Removed";
       }
     }
   }

   leaf instance-availability-status {
     type enumeration {
       enum degraded {
         value 1;
         description
           "VPN Service Degraded";
       }
       enum failed {
         value 2;
         description
           "VPN Service Failed";
       }
     }
   }

   leaf instance-cfg-revision {
     type string;
     description
         "Indicates current service configuration revision";
   }

   leaf instance-sla-policy {
     type string;
     description
       "Indicates SLA decision policy name";
   }

   <CODE ENDS>


5. Security Considerations

   TBD



6. IANA Considerations

   This document has no actions for IANA.





Zaalouk, et al.       Expires November 11, 2015            [Page 35]


Internet-Draft VPN Service Management YANG Data Model       May 2015


7. Contributors and Acknowledgments

   This document has benefited from reviews, suggestions, comments
   and proposed text provided by the following members, listed in
   alphabetical order: Feng Dong, Jing Huang, Kepeng Li, Junru Lin,
   Felix Lu, Wu Nan, Juergen Schoenwaelder, Yiyong Zha, and Cathy
   Zhou.

   Contributors:

   Andy Bierman
   andy@yumaworks.com

   Juergen Schoenwaelder
   j.schoenwaelder@jacobs-university.de

8. Additional Author List

      The following are extended authors who contributed to the
   effort:

   Kostas Pentikousis
   EICT GmbH
   Torgauer Strasse 12-15
   Berlin  10829
   Germany
   Email: k.pentikousis@eict.de

   Vikram Choudhary
   Huawei
   Email: vikram.choudhary@huawei.com

   Will Liu
   Huawei
   Email: liushucheng@huawei.com





9. References

9.1. Normative References

   [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
             Requirement Levels", BCP 14, RFC 2119, March 1997.



Zaalouk, et al.       Expires November 11, 2015            [Page 36]


Internet-Draft VPN Service Management YANG Data Model       May 2015


   [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the
             Network Configuration Protocol (NETCONF)", RFC 6020,
             October 2010.

   [RFC6021] Schoenwaelder, J., "Common YANG Data Types", RFC 6021,
             October 2010.

   [RFC4110] Callon, R. and M. Suzuki, "A Framework for Layer
             3 Provider-Provisioned Virtual Private Networks
             (PPVPNs)", RFC 4110, July 2005.

   [RFC3272] Awduche, D., Chiu, A., Elwalid, A., Widjaja, I., and X.
             Xiao, "Overview and Principles of Internet Traffic
             Engineering", RFC 3272, May 2002.

   [RFC2473] Conta, A. and S. Deering, "Generic Packet Tunneling in
             IPv6 Specification", RFC 2473, December 1998.

   [RFC4664] L. Andersson and E. Rosen, "Framework for Layer 2
             Virtual Private Networks (L2VPNs)", RFC 4664, September
             2006.

9.2. Informative References

   [SUPA-framework] C. Zhou, L. M. Contreras, Q. Sun, and P. Yegani,
   " The Framework of Simplified Use of Policy Abstractions (SUPA) ",
   IETF Internet draft, draft-zhou-supa-framework, February 2015.

   [SUPA-problem-statement] G. Karagiannis, Q. Sun, Luis M.
   Contreras, P. Yegani, JF Tremblay and J. Bi, "Problem Statement
   for Simplified Use of Policy Abstractions (SUPA)", IETF Internet
   draft, draft-karagiannis-supa-problem-statement, January 2015.

   [SUPA-DDC] Y. Cheng, and JF. Tremblay, "Use Cases for Distributed
   Data Center Applications in SUPA", IETF Internet draft, draft-
   cheng-supa-ddc-use-cases, January 2015

   [RESTCONF] Bierman, A., Bjorklund, M., Watsen, K., and R.
   Fernando, "RESTCONF Protocol", draft-ietf-netconf-restconf (work
   in progress), July 2014.

   [VPN] Mason, Andrew G. (2002). Cisco Secure Virtual Private
   Network. Cisco Press. p. 7.




Zaalouk, et al.       Expires November 11, 2015            [Page 37]


Internet-Draft VPN Service Management YANG Data Model       May 2015


   [l3vpn-service-yang] S. Litkowski, R. Shakir, L. Tomotaki and K.
   D'Souza, "YANG Data Model for L3VPN service delivery", IETF
   Internet draft, draft-l3vpn-service-yang, February 2015.

Authors' Addresses

   Dacheng Zhang

   Chaoyang Dist
   Beijing  100000
   P.R. China
   Dacheng.zhang@gmail.com

   Adel Zaalouk
   EICT GmbH
   Torgauer Strasse 12-15
   Berlin  10829
   Germany
   Email: adel.ietf@gmail.com

   Ying Cheng (Editor)
   China Unicom
   P.R. China

   Email: chengying10@chinaunicom.cn

   Jan Lindblad
   Tail-F

   Email: janl@tail-f.com

   Maxim Klyus
   NetCracker

   Email: klyus@NetCracker.com













Zaalouk, et al.       Expires November 11, 2015            [Page 38]