Internet DRAFT - draft-zhuang-pals-l2vpn-yang

draft-zhuang-pals-l2vpn-yang






Network Working Group                                          S. Zhuang
Internet-Draft                                                   H. Wang
Intended status: Informational                                     Z. Li
Expires: September 9, 2015                           Huawei Technologies
                                                           March 8, 2015


                          Yang Model for L2VPN
                    draft-zhuang-pals-l2vpn-yang-00

Abstract

   This document defines a YANG data model that can be used to configure
   and manage L2VPN.  Both VPWS and VPLS are supported.

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

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 http://datatracker.ietf.org/drafts/current/.

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

   This Internet-Draft will expire on September 9, 2015.

Copyright Notice

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



Zhuang, et al.          Expires September 9, 2015               [Page 1]

Internet-Draft            Yang Model for L2VPN                March 2015


   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 . . . . . . . . . . . . . . . . . . . . . . . . .   2
   3.  Design of Data Model  . . . . . . . . . . . . . . . . . . . .   3
     3.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .   3
     3.2.  L2VPN Common Configuration  . . . . . . . . . . . . . . .   3
     3.3.  VPWS Configuration  . . . . . . . . . . . . . . . . . . .   4
       3.3.1.  VPWS Instances Configuration  . . . . . . . . . . . .   4
       3.3.2.  VPWS Switch Instances Configuration . . . . . . . . .   5
       3.3.3.  VPWS Statistics Information . . . . . . . . . . . . .   6
     3.4.  VPLS Configuration  . . . . . . . . . . . . . . . . . . .   7
       3.4.1.  VPLS Instance Configuration . . . . . . . . . . . . .   7
       3.4.2.  VPLS Statistics Information . . . . . . . . . . . . .   9
   4.  L2VPN Yang Module . . . . . . . . . . . . . . . . . . . . . .   9
   5.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  73
   6.  Security Considerations . . . . . . . . . . . . . . . . . . .  73
   7.  Acknowledgements  . . . . . . . . . . . . . . . . . . . . . .  73
   8.  References  . . . . . . . . . . . . . . . . . . . . . . . . .  73
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  73

1.  Introduction

   YANG [RFC6020] is a data definition language that was introduced to
   define the contents of a conceptual data store that allows networked
   devices to be managed using NETCONF[RFC6241].  YANG is proving
   relevant beyond its initial confines, as bindings to other
   interfaces(e.g.  ReST) and encoding other than XML (e.g.  JSON) are
   being defined.  Furthermore, YANG data models can be used as the
   basis of implementation for other interface, such as CLI and
   programmatic APIs.

   This document defines a YANG data model that can be used to configure
   and manage L2VPN.  Both VPWS and VPLS are supported.

2.  Terminology

   L2VPN: Layer 2 Virtual Private Network

   VPLS: Virtual Private LAN Service

   VPWS: Virtual Private Wire Service




Zhuang, et al.          Expires September 9, 2015               [Page 2]

Internet-Draft            Yang Model for L2VPN                March 2015


3.  Design of Data Model

3.1.  Overview

   The L2VPN Yang module is divided in following containers :

   o l2vpncommon : that contains common writable configuration and
   readable objects for VPWS and VPLS.

   o l2vpnvpws : that contains writable configuration and readable
   objects for VPWS.

   o l2vpnvpls: that contains writable configuration and readable
   objects for VPLS.

   The figure below describe the overall structure of the L2VPN Yang
   module :

   module: l2vpn
      +--rw l2vpncommon
      ...
      +--rw l2vpnvpws
      ...
      +--rw l2vpnvpls
      ...
         ...

3.2.  L2VPN Common Configuration

   L2VPN common configuration container includes the global parameters
   for L2VPN, PW template configuration, etc.  These parameters can be
   used by both VPWS and VPLS.

   PW template configuration includes peer address, control word, MTU,
   sequence number, tunnel policy, parameters of AC, etc.
















Zhuang, et al.          Expires September 9, 2015               [Page 3]

Internet-Draft            Yang Model for L2VPN                March 2015


   +--rw l2vpncommon
   |  +--rw l2vpnGlobal
   |  |  +--rw l2vpnEnable             boolean
   |  |  +--rw vplsLoopDetectEnable?   boolean
   |  +--rw pwTemplates
   |  |  +--rw pwTemplate* [pwTemplateName]
   |  |     +--rw pwTemplateName          string
   |  |     +--rw peerAddr?               inet:ip-address
   |  |     +--rw mtu?                    uint16
   |  |     +--rw ctrlWord?               enumeration
   |  |     +--rw tunnelPolicy?           string
   |  |     +--rw tdmEncapsulateNumber?   uint8
   |  |     +--rw jitterBuffer?           uint16
   |  |     +--rw rtpHeader?              boolean
   |  |     +--rw idleCode?               string
   |  |     +--rw tdmSequenceNumber?      boolean
   |  |     +--rw payloadCompression?     boolean
   |  |     +--rw timeSlot?               uint8
   |  |     +--rw maxAtmCells?            uint8
   |  |     +--rw atmPackOvertime?        uint16
   |  |     +--rw atmTransmitCell?        uint8
   |  |     +--rw sequenceNumber?         boolean
   ...


3.3.  VPWS Configuration

   The VPWS configuration container includes VPWS instance
   configuration, VPWS switch instance configuration and VPWS statistics
   information.

   +--rw l2vpnvpws
   |  +--rw vpwsStatisticInfo
   |  ...
   |  +--rw vpwsInstances
   |  ...
   |  +--rw vpwsSwitchInstances
   |  ...

3.3.1.  VPWS Instances Configuration

   The VPWS instance configuration includes per-instance parameters, AC
   configuration, PW configuration, TDM parameters, ATM parameters,
   reliability (including PW redundancy) configuration etc.







Zhuang, et al.          Expires September 9, 2015               [Page 4]

Internet-Draft            Yang Model for L2VPN                March 2015


   +--rw vpwsInstances
   |  +--rw vpwsInstance* [instanceName instanceType]
   |     +--rw instanceName       leafref
   |     +--rw instanceType       instanceType
   |     +--rw encapsulateType?   pw-encapsulation
   |     +--rw description?       string
   |     +--ro instanceState?     enumeration
   |     +--ro lastUpTime?        yang:date-and-time
   |     +--ro totalUpTime?       string
   |     +--rw tdmParameters
   |     |  +--rw tdmEncapsulateNumber?   uint8
   |     |  ...
   |     +--rw atmParameters
   |     |  ...
   |     +--rw l2vpnAcs
   |     |  ...
   |     +--rw vpwsPws
   |     |  ...
   |     +--rw reliabilitys
   |        +--rw reliability* [pwRedundancyMode]
   ...

3.3.2.  VPWS Switch Instances Configuration

   VPWS switch instance configuration includes the configuration for
   multi-segment PW such as per-instance parameters, PW configuration,
   ATM parameters, TDM parameters etc.
























Zhuang, et al.          Expires September 9, 2015               [Page 5]

Internet-Draft            Yang Model for L2VPN                March 2015


   +--rw vpwsSwitchInstances
      +--rw vpwsSwitchInstance* [instanceName instanceType]
         +--rw instanceName       string
         +--rw instanceType       instanceType
         +--rw encapsulateType?   pw-encapsulation
         +--rw switchType?        enumeration
         +--rw ctrlWordTrans?     boolean
         +--rw controlWord?       enumeration
         +--ro instanceState?     enumeration
         +--ro createTime?        string
         +--ro upTime?            string
         +--ro lastChgTime?       string
         +--ro lastUpTime?        yang:date-and-time
         +--ro totalUpTime?       string
         +--rw vpwsPws
            +--rw vpwsPw* [pwRole pwId]
               +--rw pwRole            pw-role
               +--rw pwId              uint32
               +--rw peerIp?           inet:ip-address
               +--rw transmitLabel?    uint32
               +--rw receiveLabel?     uint32
               +--rw ctrlWord?         enumeration
               +--rw vccvAbility?      boolean
               +--rw tnlPolicyName?    string
               +--rw pwTemplateName?   string
               +--rw requestVlanId?    uint16
               +--rw vlanTpId?         string
               +--rw pwTtl?            uint8
               +--rw tdmParameters
               ...
               +--rw atmParameters
               ...
               +--rw vpwsLdpPwInfo
   ...

3.3.3.  VPWS Statistics Information

   The VPWS statistics information container includes statistics
   information of VPWS.












Zhuang, et al.          Expires September 9, 2015               [Page 6]

Internet-Draft            Yang Model for L2VPN                March 2015


   +--rw vpwsStatisticInfo
   |  +--rw vpwsLdpAcStatInfo
   |  |  +--ro totalLdpAcNum?   uint32
   |  |  +--ro upLdpAcNum?      uint32
   |  |  +--ro downLdpAcNum?    uint32
   |  +--rw vpwsLdpPwStatInfo
   |  |  +--ro totalLdpPwNum?   uint32
   |  |  +--ro upLdpPwNum?      uint32
   |  |  +--ro downLdpPwNum?    uint32
   |  +--rw vpwsLdpPwRemoteStatInfo
   |  |  +--ro remoteVcNum?   uint32
   |  +--rw vpwsSwitchInstanceStatInfo
   |     +--ro totalSwitchInstanceNum?   uint32
   |     +--ro upSwitchInstanceNum?      uint32
   |     +--ro downSwitchInstanceNum?    uint32

3.4.  VPLS Configuration

   The L2VPN VPLS configuration includes VPLS instance configuration,
   VPLS statistics information.

   +--rw l2vpnvpls
      +--rw vplsStatisticInfo
      |  +--rw vplsInstStatisticsInfo
      ...
      |  +--rw vplsPwStatisticsInfo
      ...
      |  +--rw vplsAcStatisticsInfo
      ...
      |  +--ro vplsTnlRefInfos
      ...
      |  +--rw vplsLoopDetectStaticInfo
      |     +--ro totalVplsLoopDetectNum?   uint32
      +--rw vplsInstances
         +--rw vplsInstance* [instanceName]
            +--rw instanceName            string
            +--rw description?            string
            +--rw memberDiscoveryMode?    enumeration
            +--rw encapsulateType?        pw-encapsulation
            +--rw mtuValue?               uint16
            ...

3.4.1.  VPLS Instance Configuration

   The VPLS instance configuration includes member discovery mode,
   encapsulate type, VPLS LDP instance configuration, VPLS BGP AD
   instance configuration, VPLS BGP instance configuration and VPLS ACs
   configuration etc.



Zhuang, et al.          Expires September 9, 2015               [Page 7]

Internet-Draft            Yang Model for L2VPN                March 2015


   -- VPLS LDP instance configuration: This configuration describes how
   to configure LDP-based VPLS, with the signaling type being LDP.

   -- VPLS BGP AD instance configuration: This configuration describes
   how to configure BGP AD VPLS to exchange extended BGP packets to
   automatically discover member VSIs in a VPLS domain and then use LDP
   FEC 129 to negotiate PW establishment to achieve automatic VPLS PW
   deployment.

   -- VPLS BGP instance configuration: This configuration describes how
   to configure BGP VPLS.  Detailed operations include configuring BGP
   as the signaling protocol, and configuring VPN targets to implement
   automatic discovery of VPLS PEs.

   -- VPLS ACs configuration: This configuration describes configuration
   parameters of ACs.

   +--rw vplsInstances
      +--rw vplsInstance* [instanceName]
         +--rw instanceName            string
         +--rw description?            string
         +--rw memberDiscoveryMode?    enumeration
         +--rw encapsulateType?        pw-encapsulation
         +--rw mtuValue?               uint16
         ...
         +--rw vsiPipe
         ...
         +--rw vplsLdpInst
         |  +--rw vsiId?               uint32
         ...
         +--rw vplsBgpAdInst
         |  +--rw vplsId?           string
         |  +--ro bgpAdRd?          string
         |  +--ro vsiId?            inet:ip-address
         |  +--rw vpnTargets
         ...
         +--rw vplsBgpInst
         |  +--rw bgpRd?          string
         |  +--rw ignoreMtu?      boolean
         ...
         +--rw vplsAcs
         |  +--rw vplsAc* [interfaceName]
         ...
         +--rw vplsLoopDetectInfo
            ...






Zhuang, et al.          Expires September 9, 2015               [Page 8]

Internet-Draft            Yang Model for L2VPN                March 2015


3.4.2.  VPLS Statistics Information

   The VPLS statistics information container includes VPLS instance
   statistics information, VPLS PW statistics information, VPLS AC
   statistics information etc.

   +--rw vplsStatisticInfo
   |  +--rw vplsInstStatisticsInfo
   ...
   |  +--rw vplsPwStatisticsInfo
   ...
   |  +--rw vplsAcStatisticsInfo
   ...
   |  +--ro vplsTnlRefInfos
   ...
   |  +--rw vplsLoopDetectStaticInfo
   |     +--ro totalVplsLoopDetectNum?   uint32
   ...


4.  L2VPN Yang Module

<CODE BEGINS> file "l2vpn-yang@2014-08-21.yang"

module l2vpn {
    namespace "urn:huawei:params:xml:ns:yang:l2vpn";
    prefix "l2vpn";

    /* import */
    import ietf-inet-types {
        prefix inet;
    }
    import ietf-interfaces {
        prefix if;
    }
    import ietf-yang-types {
        prefix yang;
    }
    description
        "This YANG module defines the generic configuration data for
         L2VPN services.

         Terms and Acronyms
         L2VPN: Layer 2 Virtual Private Network
         VPLS: Virtual Private LAN Service
         VPWS: Virtual Private Wire Service
         ...
         ";



Zhuang, et al.          Expires September 9, 2015               [Page 9]

Internet-Draft            Yang Model for L2VPN                March 2015


    revision 2014-08-21 {
        description
            "Initial revision.";
    }

    /* Typedef */
    typedef pw-encapsulation {
        description "PW encapsulation type.";
        type enumeration {
            enum fr {
                value "0";
                description "fr:";
            }
            enum atm-aal5-sdu {
                value "1";
                description "atm-aal5-sdu:";
            }
            enum atm-trans-cell {
                value "2";
                description "atm-trans-cell:";
            }
            enum vlan {
                value "3";
                description "vlan:";
            }
            enum ethernet {
                value "4";
                description "ethernet:";
            }
            enum hdlc {
                value "5";
                description "hdlc:";
            }
            enum ppp {
                value "6";
                description "ppp:";
            }
            enum cem {
                value "7";
                description "cem:";
            }
            enum atm-nto1-vcc {
                value "8";
                description "atm-nto1-vcc:";
            }
            enum atm-nto1-vpc {
                value "9";
                description "atm-nto1-vpc:";



Zhuang, et al.          Expires September 9, 2015              [Page 10]

Internet-Draft            Yang Model for L2VPN                March 2015


            }
            enum ip-layer2 {
                value "10";
                description "ip-layer2:";
            }
            enum atm-1to1-vcc {
                value "11";
                description "atm-1to1-vcc:";
            }
            enum atm-1to1-vpc {
                value "12";
                description "atm-1to1-vpc:";
            }
            enum atm-aal5-pdu {
                value "13";
                description "atm-aal5-pdu:";
            }
            enum fr-port-mode {
                value "14";
                description "fr-port-mode:";
            }
            enum cesop {
                value "15";
                description "cesop:";
            }
            enum satop-e1 {
                value "16";
                description "satop-e1:";
            }
            enum satop-t1 {
                value "17";
                description "satop-t1:";
            }
            enum satop-e3 {
                value "18";
                description "satop-e3:";
            }
            enum satop-t3 {
                value "19";
                description "satop-t3:";
            }
            enum cesopsn-basic {
                value "20";
                description "cesopsn-basic:";
            }
            enum tdmoip_aal1 {
                value "21";
                description "tdmoip_aal1:";



Zhuang, et al.          Expires September 9, 2015              [Page 11]

Internet-Draft            Yang Model for L2VPN                March 2015


            }
            enum cesopsn_tdm {
                value "22";
                description "cesopsn_tdm:";
            }
            enum tdmoip_aal2 {
                value "23";
                description "tdmoip_aal2:";
            }
            enum fr_dlci {
                value "24";
                description "fr_dlci:";
            }
            enum ip-interworking {
                value "25";
                description "ip-interworking:";
            }
            enum unsupport {
                value "26";
                description "unsupport:";
            }
        }
    }

    typedef pw-role {
        description "pw role.";
        type enumeration {
            enum primary {
                value "0";
                description "primary:";
            }
            enum backup {
                value "1";
                description "backup:";
            }
            enum bypass {
                value "2";
                description "bypass:";
            }
            enum multiHopOneSidePrimary {
                value "3";
                description "multiHopOneSidePrimary:";
            }
            enum multiHopOtherSidePrimary {
                value "4";
                description "multiHopOtherSidePrimary:";
            }
            enum multiHopOtherSideBackup {



Zhuang, et al.          Expires September 9, 2015              [Page 12]

Internet-Draft            Yang Model for L2VPN                March 2015


                value "5";
                description "multiHopOtherSideBackup:";
            }
        }
    }

    typedef tunnelType {
        description "Indicates the type of tunnel used by the PW.";
        type enumeration {
            enum invalid {
                value "0";
                description "invalid tunnel type";
            }
            enum ldp {
                value "1";
                description "LDP LSP";
            }
            enum bgp {
                value "2";
                description "BGP LSP";
            }
            enum te {
                value "3";
                description "TE tunnel";
            }
            enum static_lsp {
                value "4";
                description "static lsp";
            }
            enum gre {
                value "5";
                description "GRE tunnel";
            }
            enum uni {
                value "6";
                description "uni tunnel";
            }
            enum tnl_group {
                value "7";
                description "tnl-group";
            }
            enum sub_te {
                value "8";
                description "TE sub tunnel";
            }
            enum sub_group {
                value "9";
                description "sub tunnel group";



Zhuang, et al.          Expires September 9, 2015              [Page 13]

Internet-Draft            Yang Model for L2VPN                March 2015


            }
            enum 6over4 {
                value "10";
                description "manual IPv6 tunnel carry IPv4 traffic";
            }
            enum 6to4 {
                value "11";
                description "automatic IPv6 tunnel carry IPv4 traffic";
            }
            enum bgp_local_ifnet {
                value "12";
                description "BGP created mpls localifnet tunnel";
            }
            enum ldp6 {
                value "13";
                description "IPv6 LDP LSP";
            }
        }
    }

    typedef ifState {
        description "Interface state.";
        type enumeration {
            enum down {
                value "0";
                description "down:";
            }
            enum up {
                value "1";
                description "up:";
            }
            enum plugOut {
                value "2";
                description "plugOut:";
            }
            enum notifyDown {
                value "3";
                description "notifyDown:";
            }
            enum downNotify {
                value "4";
                description "downNotify:";
            }
        }
    }

    typedef pwState {
        description "Indicates the status of the PW.";



Zhuang, et al.          Expires September 9, 2015              [Page 14]

Internet-Draft            Yang Model for L2VPN                March 2015


        type enumeration {
            enum down {
                value "0";
                description "down:";
            }
            enum up {
                value "1";
                description "up:";
            }
            enum backup {
                value "2";
                description "backup:";
            }
        }
    }

    typedef instanceType {
        description "Instance type. ";

        type enumeration {
            enum vpwsLocalccc {
                value "0";
                description "vpwsLocalccc:";
            }
            enum vpwsRemoteccc {
                value "1";
                description "vpwsRemoteccc:";
            }
            enum vpwsSvc {
                value "2";
                description "vpwsSvc:";
            }
            enum vpwsLdp {
                value "3";
                description "vpwsLdp:";
            }
            enum vpwsSwitch {
                value "4";
                description "vpwsSwitch:";
            }
            enum vpls {
                value "5";
                description "vpls:";
            }
        }
    }

    /* Grouping */



Zhuang, et al.          Expires September 9, 2015              [Page 15]

Internet-Draft            Yang Model for L2VPN                March 2015


    grouping tdmParameter {
        description
            "Configure TDM parameter.";
        leaf tdmEncapsulateNumber {
            description "Number of encapsulated TDM frames.";
            config "true";
            type uint8 {
                range "1..40";
            }
        }
        leaf jitterBuffer {
            description "Depth of the TDM jitter buffer.";
            config "true";
            type uint16 {
                range "1000..64000";
            }
        }
        leaf rtpHeader {
            description
                "Whether or not the RTP header is added into the
                 transparently transported TDM frame.";
            config "true";
            type boolean;
        }
        leaf idleCode {
            description
                "Specifies the value of the idle code that is filled
                 manually when the jitter buffer underflow occurs.";
            config "true";
            type string {
                length "1..2";
                pattern "^((([1-9]|[a-f]|[A-F])([0-9]|[a-f]|[A-F])?)|
                         (0([0-9]|[a-f]|[A-F])?))$";
            }
        }
        leaf tdmSequenceNumber {
            description "Enable the seq-number option.";
            config "true";
            type boolean;
        }
        leaf payloadCompression {
            description
                "Specifies the dynamic bandwidth allocation for payload
                 compression.";
            config "true";
            type boolean;
        }
        leaf timeSlot {



Zhuang, et al.          Expires September 9, 2015              [Page 16]

Internet-Draft            Yang Model for L2VPN                March 2015


            description
                "Specifies the time slot of the serial interface.";
            config "true";
            type uint8 {
                range "1..32";
            }
        }
    }

    grouping atmParameter {

        description "Configure ATM parameter.";

        leaf maxAtmCells {
            description "Maximum number of transmitted ATM cells.";
            config "true";
            type uint8 {
                range "1..28";
            }
        }
        leaf atmPackOvertime {
            description "Delay in packing ATM cells.";
            config "true";
            type uint16 {
                range "100..10000";
            }
        }
        leaf atmTransmitCell {
            description "ATM transmit cell.";
            config "true";
            type uint8 {
                range "1..28";
            }
        }
        leaf sequenceNumber {
            description
                "Enable the seq-number option.";
            config "true";
            type boolean;
        }
    }

    grouping speInfos {

        leaf speCount {
            description "Number of Spe.";
            config "false";
            type uint32;



Zhuang, et al.          Expires September 9, 2015              [Page 17]

Internet-Draft            Yang Model for L2VPN                March 2015


        }

        list speInfo {

            config "false";
            key "spePwId spePeerIp";

            leaf spePwId {
                description
                    "Indicates the identifier of the PW.";
                type uint32;
            }
            leaf spePeerIp {
                description
                    "Specifies the LSR ID of the peer PE.";
                type inet:ip-address;
            }
        }
    }

    grouping vpwsPws {

        list vpwsPw {

            key "pwRole pwId";
            description "L2vpn vpws pw class.";

            leaf pwRole {
                description
                    "VPWS pw role:primary, backup,bypass.";
                config "true";
                type pw-role;

            }
            leaf pwId {
                description
                    "Indicates the identifier of the PW.";
                config "true";
                type uint32 {
                    range "1..4294967295";
                }
            }
            leaf peerIp {
                description
                    "Specifies the LSR ID of the peer PE.";
                config "true";
                type inet:ip-address;
            }



Zhuang, et al.          Expires September 9, 2015              [Page 18]

Internet-Draft            Yang Model for L2VPN                March 2015


            leaf transmitLabel {
                description
                    "Indicates the label value of sent packets.";
                config "true";
                type uint32 {
                    range "0..1048575";
                }
            }
            leaf receiveLabel {
                description
                    "Indicates the label value of received packets.";
                config "true";
                type uint32 {
                    range "16..32767";
                }
            }
            leaf ctrlWord {
                description
                    "Enables the control word function. The control word
                    function is usually enabled on PWs with encapsulation
                    types being TDM, ATM or FR.

                    By default:
                    The control word function is enabled for TDM-, ATM-, or
                    Frame Relay-encapsulated PWs if PW profiles are not used.
                    If a PW profile is used, the control word function can
                    be enabled only after the control word is explicitly
                    specified. The control word function can be enabled for
                    PWs that use other types of encapsulation only after
                    the control word is explicitly specified.";
                config "true";
                type enumeration {
                    enum default {
                        value "0";
                        description "default:";
                    }
                    enum disable {
                        value "1";
                        description "disable:";
                    }
                    enum enable {
                        value "2";
                        description "enable:";
                    }
                }
            }
            leaf vccvAbility {
                description



Zhuang, et al.          Expires September 9, 2015              [Page 19]

Internet-Draft            Yang Model for L2VPN                March 2015


                    "Configures VC connectivity detection. VC connectivity
                    detection supports two modes: control word mode and
                    label alert mode.";

                config "true";
                default "true";
                type boolean;
            }
            leaf tnlPolicyName {
                description
                    "Specifies a tunnel policy name for the L2VC. If no name
                    is specified for a tunnel policy, the default tunnel
                    policy is adopted. The LSP tunnel is preferred and only
                    one LSP is used for load balancing in the default tunnel
                    policy. If the name of the tunnel policy is specified but
                    no tunnel policy is configured, the default tunnel policy
                    is still adopted.";

                config "true";
                type string {
                    length "1..39";
                }
            }
            leaf pwTemplateName {
                description
                    "Specifies the name of a PW template. You can set
                     attributes for a PW template, including the remote
                     peer, tunnel policy, and control word. When configuring
                     an LDP PW, you can directly apply the PW template rather
                     than specifying attributes for the PW.";

                config "true";
                type string {
                    length "1..19";
                }
            }
            leaf requestVlanId {
                description
                    "Indicates the requested VLAN ID.";
                config "true";
                type uint16 {
                    range "1..4094";
                }
            }
            leaf vlanTpId {
                description "Indicates the TPID of requested VLAN ID.";
                config "true";
                type string {



Zhuang, et al.          Expires September 9, 2015              [Page 20]

Internet-Draft            Yang Model for L2VPN                March 2015


                    length "1..4";
                    pattern "^([0-9]|[a-f]|[A-F]){0,4}$";
                }
            }
            leaf pwTtl {
                description "Specify the TTL for PW.";
                config "true";
                type uint8 {
                    range "1..255";
                }
            }
            container tdmParameters {
                uses tdmParameter;
            }

            container atmParameters {
                uses atmParameter;
            }

            container vpwsLdpPwInfo {

                leaf interfaceName {
                    description
                        "Indicates the type and number of the AC
                         interface.";
                    config "false";
                    type leafref {
                        path "/if:interfaces/if:interface/if:name";
                    }
                }
                leaf ifState {
                    description "Indicates  status of the AC interface.";
                    config "false";
                    type ifState;
                }
                leaf sessionState {
                    description
                        "Indicates the status of the LDP session established
                         between both ends of the VC.";
                    config "false";
                    type enumeration {
                        enum default {
                            value "0";
                            description "default:";
                        }
                        enum down {
                            value "1";
                            description "down:";



Zhuang, et al.          Expires September 9, 2015              [Page 21]

Internet-Draft            Yang Model for L2VPN                March 2015


                        }
                        enum up {
                            value "2";
                            description "up:";
                        }
                    }
                }
                leaf integrativeAcState {
                    description
                        "The integrative status of the AC.";
                    config "false";
                    type ifState;
                }
                leaf acState {
                    description
                        "Indicates the status of the AC.";
                    config "false";
                    type ifState;
                }
                leaf pwState {
                    description
                        "Indicates the status of the PW.";
                    config "false";
                    type pwState;
                }
                leaf pwId {
                    description
                        "Indicates the identifier of the PW.";
                    config "false";
                    type uint32;
                }
                leaf encapType {
                    description
                        "Indicates the encapsulation type of the PW.";
                    config "false";
                    type pw-encapsulation ;

                }
                leaf destination {
                    description
                        "Indicates the LSR ID of the VC peer device.";
                    config "false";
                    type inet:ip-address;
                }
                leaf localGroupId {
                    description "Indicates the local group ID.";
                    config "false";
                    type uint32;



Zhuang, et al.          Expires September 9, 2015              [Page 22]

Internet-Draft            Yang Model for L2VPN                March 2015


                }
                leaf remoteGroupId {
                    description "Indicates the remote group ID.";
                    config "false";
                    type uint32;
                }
                leaf localVcLabel {
                    description "Indicates the local VC label.";
                    config "false";
                    type uint32;
                }
                leaf remoteVcLabel {
                    description "Indicates the remote VC label.";
                    config "false";
                    type uint32;
                }
                container tdmInfo {

                    description "TDM info";
                    config "false";

                    leaf localTdmEncapsulateNum {
                        description "Number of encapsulated TDM frames.";
                        config "false";
                        type uint8;
                    }
                    leaf remoteTdmEncapsulateNum {
                        description "Number of encapsulated TDM frames.";
                        config "false";
                        type uint8;
                    }
                    leaf jitterBuffer {
                        description "Depth of the TDM jitter buffer.";
                        config "false";
                        type uint8;
                    }
                    leaf idleCode {
                        description
                             "Indicates the idle code that is filled manually
                              when the jitter buffer underflow occurs.";
                        config "false";
                        type string {
                            length "0..3";
                        }
                    }
                    leaf localRtpHeaderEnable {
                        description
                             "Whether or not the RTP header is added into



Zhuang, et al.          Expires September 9, 2015              [Page 23]

Internet-Draft            Yang Model for L2VPN                March 2015


                              the transparently transported TDM frame.";
                        config "false";
                        type boolean;
                    }
                    leaf remoteRtpHeaderEnable {
                        description
                             "Whether or not the RTP header is added into the
                              transparently transported TDM frame.";
                        config "false";
                        type boolean;
                    }
                    leaf localBitRate {
                        description "Indicates the bit-rate of the local VC.";
                        config "false";
                        type uint16;
                    }
                    leaf remoteBitRate {
                        description "Indicates the bit-rate of the remoteVC.";
                        config "false";
                        type uint16;
                    }
                }
                container atmInfo {

                    description "TDM info";
                    config "false";

                    leaf maxAtmCells {
                        description "Maximum number of transmitted ATM cells.";
                        config "false";
                        type uint8 {
                            range "1..28";
                        }
                    }
                    leaf remoteMaxAtmCells {
                        description "Maximum number of transmitted ATM cells.";
                        config "false";
                        type uint8 {
                            range "0..28";
                        }
                    }
                    leaf atmPackOvertime {
                        description "Delay in packing ATM cells.";
                        config "false";
                        type uint16 {
                            range "100..10000";
                        }
                    }



Zhuang, et al.          Expires September 9, 2015              [Page 24]

Internet-Draft            Yang Model for L2VPN                March 2015


                    leaf atmTransmitCell {
                        description "ATM transmit cell.";
                        config "false";
                        type uint16 {
                            range "1..28";
                        }
                    }
                    leaf sequenceNumber {
                        description
                             "Enable the seq-number option.By default, the
                              seq-number option is disabled.";
                        config "false";
                        type boolean;
                    }
                }
                leaf localFwdState {
                    description
                        "Indicates the status of the local forwarding table.";
                    config "false";
                    type enumeration {
                        enum notForwarding {
                            value "0";
                            description "notForwarding:";
                        }
                        enum forwarding {
                            value "1";
                            description "forwarding:";
                        }
                    }
                }
                leaf localStateCode {
                    description
                        "Indicates the status code of the local PW:
                        0x0: indicates that the local PW functioning as the
                             master PW is in the Up state.
                        0x20: indicates that the local PW functioning as the
                              backup PW is in the Up state.
                        0x1: indicates that the PW functioning as the master
                             PW and is in the Down state.
                        0x21: indicates that the PW functioning as the backup
                             PW and is in the Down state.";
                    config "false";
                    type uint32;
                }
                leaf remoteFwdState {
                    description
                        "Indicates the status of the remote forwarding
                         table.";



Zhuang, et al.          Expires September 9, 2015              [Page 25]

Internet-Draft            Yang Model for L2VPN                March 2015


                    config "false";
                    type enumeration {
                        enum notForwarding {
                            value "0";
                            description "notForwarding:";
                        }
                        enum forwarding {
                            value "1";
                            description "forwarding:";
                        }
                    }
                }
                leaf remoteStateCode {
                    description
                        " Indicates the status code of the remote PW:
                        0x0: indicates that the remote PW functioning as the
                             master PW is in the Up state.
                        0x20: indicates that the remote PW functioning as the
                              backup PW is in the Up state.
                        0x1: indicates that the PW functioning as the master
                             PW and is in the Down state.
                        0x21: indicates that the PW functioning as the backup
                              PW and is in the Down state.";
                    config "false";
                    type uint32;
                }
                leaf isActive {
                    description
                        "Indicates whether or not the PW is in active state
                        (if so, user packets can be forwarded).";
                    config "false";
                    type boolean;
                }
                leaf isForwardExist {
                    description
                        "Indicates whether or not forwarding entries exist.";
                    config "false";
                    type boolean;
                }
                leaf linkState {
                    description
                        "Indicates the link status of the AC interface:
                        Up: indicates that the physical layer status of
                            the interface is functional.
                        Down: indicates that the physical layer of the
                              interface fails.";
                    config "false";
                    type enumeration {



Zhuang, et al.          Expires September 9, 2015              [Page 26]

Internet-Draft            Yang Model for L2VPN                March 2015


                        enum default {
                            value "0";
                            description "default:";
                        }
                        enum down {
                            value "1";
                            description "down:";
                        }
                        enum up {
                            value "2";
                            description "up:";
                        }
                    }
                }
                leaf localVcMtu {
                    description "Indicates the MTU of the local VC.";
                    config "false";
                    type uint16;
                }
                leaf remoteVcMtu {
                    description "Indicates the MTU of the remote VC.";
                    config "false";
                    type uint16;
                }
                leaf localVCCV {
                    description
                        "Indicates the type of VCCV that is supported
                         locally. By default, the control word function
                         is not enabled, and the supported VCCV type is
                         alert lsp-ping bfd, indicating that LSP ping
                         and BFD are supported for the alert channel.
                         If the control word function is enabled, the
                         VCCV type is cw alert lsp-ping bfd, indicating
                         that LSP ping and BFD are supported both for the
                         control word channel and the alert channel.";
                    config "false";
                    type string {
                        length "0..40";
                    }
                }
                leaf remoteVCCV {
                    description
                        "Indicates the type of VCCV that is supported
                         remotely. By default, the control word function
                         is not enabled, and the supported VCCV type is
                         alert lsp-ping bfd, indicating that LSP ping and
                         BFD are supported for the alert channel. If the
                         control word function is enabled, the VCCV type



Zhuang, et al.          Expires September 9, 2015              [Page 27]

Internet-Draft            Yang Model for L2VPN                March 2015


                         is cw alert lsp-ping bfd, indicating that LSP ping
                         and BFD are supported both for the control word
                         channel and the alert channel.";

                    config "false";
                    type string {
                        length "0..40";
                    }
                }
                leaf localCtrlWord {
                    description
                        "Indicates whether or not the control word is enabled
                        on the local end.";
                    config "false";
                    type enumeration {
                        enum default {
                            value "0";
                            description "default:";
                        }
                        enum disable {
                            value "1";
                            description "disable:";
                        }
                        enum enable {
                            value "2";
                            description "enable:";
                        }
                    }
                }
                leaf remoteCtrlWord {
                    description
                        "Indicates whether or not the control word is enabled
                         on the remote end.";
                    config "false";
                    type enumeration {
                        enum default {
                            value "0";
                            description "default:";
                        }
                        enum disable {
                            value "1";
                            description "disable:";
                        }
                        enum enable {
                            value "2";
                            description "enable:";
                        }
                    }



Zhuang, et al.          Expires September 9, 2015              [Page 28]

Internet-Draft            Yang Model for L2VPN                March 2015


                }
                leaf tnlPolicyName {
                    description "Indicates the name of the tunnel policy.";
                    config "false";
                    type string {
                        length "1..39";
                    }
                }
                leaf pwTemplateName {
                    description "Indicates the name of the PW template.";
                    config "false";
                    type string {
                        length "1..19";
                    }
                }
                leaf priOrSec {
                    description
                        "Indicates whether the local status of the VC is
                         primary or secondary.";
                    config "false";
                    type enumeration {
                        enum primary {
                            value "0";
                            description "primary:";
                        }
                        enum secondary {
                            value "1";
                            description "secondary:";
                        }
                        enum bypass {
                            value "2";
                            description "bypass:";
                        }
                    }
                }
                leaf tunnelCount {
                    description
                        "Indicates that the PW uses one tunnel or token";
                    config "false";
                    type uint8;
                }
                container tunnelInfos {

                    config "false";
                    list tunnelInfo {

                        key "tunnelKey";




Zhuang, et al.          Expires September 9, 2015              [Page 29]

Internet-Draft            Yang Model for L2VPN                March 2015


                        leaf tunnelKey {
                            description
                                "Indicates the ID of the tunnel used by the
                                 PW.";

                            type string {
                                length "0..21";
                            }
                        }
                        leaf tunnelType {
                            description
                                "Indicates the type of tunnel used by the
                                 PW.";
                            config "false";
                            type tunnelType;
                        }
                        leaf tunnelName {
                            description
                                "Indicates the name of the tunnel used by the
                                 PW.";
                            config "false";
                            type string {
                                length "0..64";
                            }
                        }
                        leaf publicNextHop {
                            description
                                "Indicates public next hop of a tunnel.";
                            config "false";
                            type inet:ip-address;
                        }
                    }

                }

                container speInfos {
                    config "false";
                    uses speInfos;
                }

                leaf createTime {
                    description
                        "Indicates how long the VC has been created for.";
                    config "false";
                    type string {
                        length "1..80";
                    }
                }



Zhuang, et al.          Expires September 9, 2015              [Page 30]

Internet-Draft            Yang Model for L2VPN                March 2015


                leaf upTime {
                    description
                        "Indicates how long the VC keeps the Up state.
                         If the PW is currently in the Down state, the
                         value is 0.";
                    config "false";
                    type string {
                        length "1..80";
                    }
                }
                leaf lastChgTime {
                    description
                        "Indicates how long the VC status has remained
                         unchanged.";
                    config "false";
                    type string {
                        length "1..80";
                    }
                }
                leaf pwLastUpTime {
                    description
                        "Indicates the last time the VC was Up.";
                    config "false";
                    type yang:date-and-time;
                }
                leaf pwTotalUpTime {
                    description
                        "Indicates the total duration the VC is Up.";
                    config "false";
                    type string {
                        length "1..80";
                    }
                }
                leaf supportNotification {
                    description
                        "Indicates whether or not the Notification
                         message is supported.";
                    config "false";
                    type boolean;
                }
            }

        }

    }

    grouping vplsPwInfo {




Zhuang, et al.          Expires September 9, 2015              [Page 31]

Internet-Draft            Yang Model for L2VPN                March 2015


        leaf peerIp {
            description
                "Indicates the LSR ID of the VC peer device.";
            config "false";
            type inet:ip-address;
        }
        leaf pwId {
            description
                "Indicates the identifier of the PW.";
            config "false";
            type uint32;
        }
        leaf pwType {
            description "Type of the PW.label, QinQ,MEHVPLS";
            config "false";
            type enumeration {
                enum label {
                    value "0";
                    description "label:";
                }
                enum QinQ {
                    value "1";
                    description "QinQ:";
                }
                enum MEHVPLS {
                    value "2";
                    description "MEHVPLS:";
                }
            }
        }
        leaf sessionState {
            description
                "Indicates the status of the LDP session established
                 between both ends of the VC.";
            config "false";
            type enumeration {
                enum default {
                    value "0";
                    description "default:";
                }
                enum down {
                    value "1";
                    description "down:";
                }
                enum up {
                    value "2";
                    description "up:";
                }



Zhuang, et al.          Expires September 9, 2015              [Page 32]

Internet-Draft            Yang Model for L2VPN                March 2015


            }
        }
        leaf pwState {
            description "Indicates the status of the PW.";
            config "false";
            type enumeration {
                enum down {
                    value "0";
                    description "down:";
                }
                enum up {
                    value "1";
                    description "up:";
                }
                enum backup {
                    value "2";
                    description "backup:";
                }
            }
        }
        leaf localVcLabel {
            description "Indicates the local VC label.";
            config "false";
            type uint32;
        }
        leaf remoteVcLabel {
            description "Indicates the remote VC label.";
            config "false";
            type uint32;
        }
        leaf tnlPolicyName {
            description
                "Indicates the name of the tunnel policy.";
            config "false";
            type string {
                length "1..39";
            }
        }
        leaf pwLastUpTime {
            description
                "Indicates the last time the VC was Up.";
            config "false";
            type yang:date-and-time;
        }
        leaf pwTotalUpTime {
            description
                "Indicates the total duration the VC is Up.";
            config "false";



Zhuang, et al.          Expires September 9, 2015              [Page 33]

Internet-Draft            Yang Model for L2VPN                March 2015


            type string {
                length "1..80";
            }
        }
        container tunnelInfos {

            config "false";

            list tunnelInfo {

                key "tunnelKey";

                leaf tunnelKey {
                    description
                        "Indicates the ID of the tunnel used by the PW.";
                    type string {
                        length "0..21";
                    }
                }
                leaf tunnelType {
                    description
                        "Indicates the type of tunnel used by the PW.";
                    config "false";
                    type tunnelType;
                }
                leaf outIntf {
                    description
                        "Outbound interface.";
                    config "false";
                    type string {
                        length "0..256";
                    }
                }
                leaf tunnelName {
                    description
                        "Indicates the name of the tunnel used by the PW.";
                    config "false";
                    type string {
                        length "0..64";
                    }
                }
                leaf publicNextHop {
                    description "Assign public next hop of a tunnel.";
                    config "false";
                    type inet:ip-address;
                }
            }




Zhuang, et al.          Expires September 9, 2015              [Page 34]

Internet-Draft            Yang Model for L2VPN                March 2015


        }
        container speInfos {
            config "false";
            uses speInfos;
        }
        leaf remoteGroupId {
            description "ID of the remote group.";
            config "false";
            type uint32;
        }
        leaf remoteMtu {
            description "Indicates the MTU of a remote VC.";
            config "false";
            type uint16;
        }
        leaf remoteVCCVcode {
            description "Indicates the VCCV of a remote VC.";
            config "false";
            type string {
                length "0..40";
            }
        }
        leaf remoteStateCode {
            description
                "Indicates the status of a remote VC, which can be:
                FORWARD: The remote VC is in the forwarding state.
                STANDBY: The remote VC is in the standby state.
                AC FAULT: The remote AC interface is faulty.
                PSN FAULT: The remote VC is faulty.
                NO FORWRD: The remote VC interface cannot forward packets
                           owing to other reasons. ";
            config "false";
            type enumeration {
                enum forward {
                    value "0";
                    description "forward:";
                }
                enum not-forward {
                    value "1";
                    description "not forward:";
                }
                enum standby {
                    value "2";
                    description "standby:";
                }
                enum ac-fault {
                    value "3";
                    description "ac fault:";



Zhuang, et al.          Expires September 9, 2015              [Page 35]

Internet-Draft            Yang Model for L2VPN                March 2015


                }
                enum psn-fault {
                    value "4";
                    description "psn fault:";
                }
            }
        }
    }

    /* container */
    container l2vpncommon {

        container l2vpnGlobal {

            description "L2VPN golbal attribute.";

            leaf l2vpnEnable {
                description
                    "L2vpn enable flag.";
                type boolean;
                config "true";
                mandatory "true";
            }
            leaf vplsLoopDetectEnable {
                description
                    "Vpls mac withdraw loop detect enable flag.";
                type boolean;
                config "true";
            }
        }

        container pwTemplates {

            list pwTemplate {

                key "pwTemplateName";
                description "L2VPN pw template class.";

                leaf pwTemplateName {
                    description
                        "Specifies the PW template name. The value is a
                         case-sensitive string of 1 to 19 characters without
                         blank space.";
                    config "true";
                    type string {
                        length "1..19";
                    }
                }



Zhuang, et al.          Expires September 9, 2015              [Page 36]

Internet-Draft            Yang Model for L2VPN                March 2015


                leaf peerAddr {
                    description
                        "Assign a peer IP address to a PW template.";
                    config "true";
                    type inet:ip-address;
                }
                leaf mtu {
                    description
                        "Configure the mtu value for PW template, 46 to 9600.";
                    config "true";
                    default "1500";
                    type uint16 {
                        range "46..9600";
                    }
                }
                leaf ctrlWord {
                    description
                        "Enable the control word in a PW template.";
                    config "true";
                    type enumeration {
                        enum default {
                            value "0";
                            description "default:";
                        }
                        enum disable {
                            value "1";
                            description "disable:";
                        }
                        enum enable {
                            value "2";
                            description "enable:";
                        }
                    }
                }
                leaf tunnelPolicy {
                    description
                        "Configure a tunnel policy for a PW template.";
                    config "true";
                    type string {
                        length "1..39";
                    }
                }
                uses tdmParameter;

                uses atmParameter;

            }
        }



Zhuang, et al.          Expires September 9, 2015              [Page 37]

Internet-Draft            Yang Model for L2VPN                March 2015


        container notMatchRemoteLdpInfos {

            config "false";
            list notMatchRemoteLdpInfo {

                key "pwId peerIp encapsulateType";

                leaf pwId {
                    description
                        "After an ID is set for a VC, it cannot be changed.
                         Different VCs have different IDs.";
                    type uint32;
                }
                leaf peerIp {
                    description "Indicates the peer ip of the VC peer device.";
                    type inet:ip-address;
                }
                leaf encapsulateType{
                    description "Indicates the encapsualtion VC peer device.";
                    type pw-encapsulation;
                }
                leaf remoteLabel {
                    description "Indicates the remote VC label.";
                    config "false";
                    type uint32 ;
                }
                leaf remoteGroupId {
                    description "ID of the remote group.";
                    config "false";
                    type uint32;
                }
                leaf remoteMtu {
                    description "Indicates the MTU of a remote VC.";
                    config "false";
                    type uint16;
                }
                leaf remoteStateCode {
                    description
                        "Indicates the status of a remote VC, which can be:
                            FORWARD: The remote VC is in the forwarding state.
                            STANDBY: The remote VC is in the standby state.
                            AC FAULT: The remote AC interface is faulty.
                            PSN FAULT: The remote VC is faulty.
                            NO FORWRD: The remote VC interface cannot forward
                                       packets owing to other reasons.";
                    config "false";
                    type enumeration {
                        enum forward {



Zhuang, et al.          Expires September 9, 2015              [Page 38]

Internet-Draft            Yang Model for L2VPN                March 2015


                            value "0";
                            description "forward:";
                        }
                        enum not-forward {
                            value "1";
                            description "not forward:";
                        }
                        enum standby {
                            value "2";
                            description "standby:";
                        }
                        enum ac-fault {
                            value "3";
                            description "ac fault:";
                        }
                        enum psn-fault {
                            value "4";
                            description "psn fault:";
                        }
                    }
                }
            }

        }
    }

    container l2vpnvpws {

        container vpwsStatisticInfo {

            container vpwsLdpAcStatInfo {

                leaf totalLdpAcNum {
                    description "Total number of L2VPN VPWS LDP AC.";
                    config "false";
                    type uint32;
                }
                leaf upLdpAcNum {
                    description "Up number of L2VPN VPWS LDP AC.";
                    config "false";
                    type uint32;
                }
                leaf downLdpAcNum {
                    description "Down number of L2VPN VPWS LDP AC.";
                    config "false";
                    type uint32;
                }
            }



Zhuang, et al.          Expires September 9, 2015              [Page 39]

Internet-Draft            Yang Model for L2VPN                March 2015


            container vpwsLdpPwStatInfo {

                leaf totalLdpPwNum {
                    description
                        "Indicates the total number of established LDP PWs";
                    config "false";
                    type uint32;
                }
                leaf upLdpPwNum {
                    description "Number of LDP PWs in the up state.";
                    config "false";
                    type uint32;
                }
                leaf downLdpPwNum {
                    description "Number of LDP PWs in the down state.";
                    config "false";
                    type uint32;
                }
            }

            container vpwsLdpPwRemoteStatInfo {

                leaf remoteVcNum {
                    description
                        "Indicates the total number of created remote LDP
                         PWs.";
                    config "false";
                    type uint32;
                }
            }

            container vpwsSwitchInstanceStatInfo {

                leaf totalSwitchInstanceNum {
                    description
                        "Indicates the total number of established switch-vc";
                    config "false";
                    type uint32;
                }
                leaf upSwitchInstanceNum {
                    description "Number of switch-vc in the up state.";
                    config "false";
                    type uint32;
                }
                leaf downSwitchInstanceNum {
                    description "Number of switch-vc in the down state.";
                    config "false";
                    type uint32;



Zhuang, et al.          Expires September 9, 2015              [Page 40]

Internet-Draft            Yang Model for L2VPN                March 2015


                }
            }

        }

        container vpwsInstances {

            list vpwsInstance {

                key "instanceName instanceType";

                description "L2vpn vpws instance class.";

                leaf instanceName {

                    description "Specifies VPWS instance name.";
                    config "true";

                    type leafref {
                        path "/if:interfaces/if:interface/if:name";
                    }
                }
                leaf instanceType {
                    description "VPWS instance type:ldp,localccc.";
                    config "true";
                    type instanceType;
                }
                leaf encapsulateType {
                    type pw-encapsulation;
                }
                leaf description {
                    description "Specifies a description for the VC.";
                    config "true";
                    type string {
                        length "1..64";
                    }
                }
                leaf instanceState {
                    description "VPWS instance state.";
                    config "false";
                    type enumeration {
                        enum down {
                            value "0";
                            description "down:";
                        }
                        enum up {
                            value "1";
                            description "up:";



Zhuang, et al.          Expires September 9, 2015              [Page 41]

Internet-Draft            Yang Model for L2VPN                March 2015


                        }
                        enum adminDown {
                            value "2";
                            description "adminDown:";
                        }
                    }
                }
                leaf lastUpTime {
                    description
                        "Indicates how long the instance keeps the Up state.
                         If the PW is currently in the Down state, the value
                         is 0.";
                    config "false";
                    type yang:date-and-time;
                }
                leaf totalUpTime {
                    description
                        "Indicates the total duration the instance is Up.";
                    config "false";
                    type string {
                        length "1..80";
                    }
                }

                container tdmParameters {
                    uses tdmParameter;
                }

                container atmParameters {
                    uses atmParameter;
                }

                container l2vpnAcs {

                    list l2vpnAc {

                        key "interfaceName";
                        description "L2VPN ac class.";

                        leaf interfaceName {
                            description "Specifies the AC interface name.";
                            config "true";
                            type leafref {
                                path "/if:interfaces/if:interface/if:name";
                            }
                        }
                        leaf state {
                            description "Indicates the status of the AC.";



Zhuang, et al.          Expires September 9, 2015              [Page 42]

Internet-Draft            Yang Model for L2VPN                March 2015


                            config "false";
                            type enumeration {
                                enum default {
                                    value "0";
                                    description "default:";
                                }
                                enum down {
                                    value "1";
                                    description "down:";
                                }
                                enum up {
                                    value "2";
                                    description "up:";
                                }
                            }
                        }

                        container l2vpnPipe {

                            description "L2VPN pipe mode.";

                            leaf pipeMode {
                                description "Pipe mode.";
                                default "uniform";
                                type enumeration {
                                    enum pipe {
                                        value "0";
                                        description "pipe:";
                                    }
                                    enum shortPipe {
                                        value "1";
                                        description "shortPipe:";
                                    }
                                    enum uniform {
                                        value "2";
                                        description "uniform:";
                                    }
                                }
                            }
                        }

                        container ifLinkProtocolTran {

                            description "lacp status";

                            leaf protocolLacp {
                                description "lacp status";
                                config "true";



Zhuang, et al.          Expires September 9, 2015              [Page 43]

Internet-Draft            Yang Model for L2VPN                March 2015


                                type enumeration {
                                    enum enable {
                                        value "0";
                                        description "enable:";
                                    }
                                    enum disable {
                                        value "1";
                                        description "disable:";
                                    }
                                }
                            }
                            leaf protocolLldp {
                                description "lldp status";
                                config "true";
                                type enumeration {
                                    enum enable {
                                        value "0";
                                        description "enable:";
                                    }
                                    enum disable {
                                        value "1";
                                        description "disable:";
                                    }
                                }
                            }
                            leaf protocolBpdu {
                                description "bpdu status";
                                config "true";
                                type enumeration {
                                    enum enable {
                                        value "0";
                                        description "enable:";
                                    }
                                    enum disable {
                                        value "1";
                                        description "disable:";
                                    }
                                }
                            }
                            leaf protocolCdp {
                                description "cdp status";
                                config "true";
                                type enumeration {
                                    enum enable {
                                        value "0";
                                        description "enable:";
                                    }
                                    enum disable {



Zhuang, et al.          Expires September 9, 2015              [Page 44]

Internet-Draft            Yang Model for L2VPN                March 2015


                                        value "1";
                                        description "disable:";
                                    }
                                }
                            }
                            leaf protocolUdld {
                                description "udld status";
                                config "true";
                                type enumeration {
                                    enum enable {
                                        value "0";
                                        description "enable:";
                                    }
                                    enum disable {
                                        value "1";
                                        description "disable:";
                                    }
                                }
                            }
                        }

                    }

                }

                container vpwsPws {
                    uses vpwsPws;
                }

                container reliabilitys {

                    list reliability {

                        key "pwRedundancyMode";

                        leaf pwRedundancyMode {
                            description
                                "Specifies the redundancy mode of VPWS
                                 instance.";

                            config "true";
                            type enumeration {
                                enum frr {
                                    value "0";
                                    description "frr:";
                                }
                                enum masterSlave {
                                    value "1";



Zhuang, et al.          Expires September 9, 2015              [Page 45]

Internet-Draft            Yang Model for L2VPN                March 2015


                                    description "masterSlave:";
                                }
                                enum independent {
                                    value "2";
                                    description "independent:";
                                }
                            }
                        }
                        leaf switchover {
                            description
                                "Specifies switches traffic from the primary
                                 PW to the secondary PW.";
                            config "true";
                            type boolean;
                        }
                        leaf dualReceive {
                            description
                                "Specifies enables a UPE interface to receive
                                 packets from both the primary and secondary
                                 PWs.";
                            config "true";
                            type boolean;
                        }
                        container reRoute {

                            description "L2vpn vpws pw reroute class.";

                            leaf reRoutePolicy {
                                description "Specifies the Policy of Reroute.";
                                config "true";
                                type enumeration {
                                    enum delay {
                                        value "0";
                                        description "delay:";
                                    }
                                    enum immediately {
                                        value "1";
                                        description "immediately:";
                                    }
                                    enum never {
                                        value "2";
                                        description "never:";
                                    }
                                }
                            }
                            leaf delayTime {
                                description
                                    "Specifies the delay for switching traffic



Zhuang, et al.          Expires September 9, 2015              [Page 46]

Internet-Draft            Yang Model for L2VPN                March 2015


                                     back to the primary PW. ";
                                config "true";
                                type uint16 {
                                    range "10..600";
                                }
                            }
                            leaf resumeTime {
                                description
                                    "Specifies the time after which the peer PE
                                     on the secondary PW is notified that the
                                     local PE is recovered from the fault. ";
                                config "true";
                                type uint16 {
                                    range "0..600";
                                }
                            }
                            leaf lastReRouteReason {
                                description
                                    "Specifies the reason of Last Reroute.";
                                config "false";
                                type string {
                                    length "0..100";
                                }
                            }
                            leaf lastReRouteTime {
                                description
                                    "Specifies the time of Last Reroute.";
                                config "false";
                                type string {
                                    length "1..60";
                                }
                            }
                            leaf delayResidual {
                                description
                                    "Specifies the residual delay time for
                                     switching traffic back to the primary PW.
                                    ";
                                config "false";
                                type uint32;
                            }
                            leaf resumeResidual {
                                description
                                    "Specifies the residual time after which
                                     the peer PE on the secondary PW is
                                     notified that the local PE is recovered
                                     from the fault. ";
                                config "false";
                                type uint32;



Zhuang, et al.          Expires September 9, 2015              [Page 47]

Internet-Draft            Yang Model for L2VPN                March 2015


                            }
                        }

                    }

                }

            }

        }

        container vpwsSwitchInstances {

            list vpwsSwitchInstance {

                key "instanceName instanceType";

                description "L2vpn vpws instance class.";

                leaf instanceName {
                    description "Specifies VPWS instance name.";
                    config "true";
                    type string {
                        length "1..31";
                    }
                }
                leaf instanceType {
                    description "VPWS instance type:vpwsSwitch.";
                    config "true";
                    type instanceType;
                }
                leaf encapsulateType {
                    description "VPWS instance encapsulation type.";
                    config "true";
                    default "ethernet";
                    type pw-encapsulation;
                }
                leaf switchType {
                    description
                        "VPWS switch instance type:ldp2ldp,ldp2svc.";
                    config "true";
                    default "ldp2ldp";
                    type enumeration {
                        enum svc2svc {
                            value "0";
                            description "svc2svc:";
                        }
                        enum ldp2svc {



Zhuang, et al.          Expires September 9, 2015              [Page 48]

Internet-Draft            Yang Model for L2VPN                March 2015


                            value "1";
                            description "ldp2svc:";
                        }
                        enum ldp2ldp {
                            value "2";
                            description "ldp2ldp:";
                        }
                        enum upe {
                            value "3";
                            description "upe:";
                        }
                    }
                }
                leaf ctrlWordTrans {
                    description
                        "Transparent transmission of control word If BFD
                         is enabled to monitor dynamic multi-hop PWs,
                         transparent transmission of control word needs
                         to be configured on the SPE. Otherwise, the BFD
                         negotiation fails. By default, transparent
                         transmission of control word is disabled.";
                    config "true";
                    type boolean;
                    default "false";
                }
                leaf controlWord {
                    description
                        "Enables the control word function. The control
                         word function is usually enabled on PWs with
                         encapsulation types being TDM, ATM or FR.
                         By default:
                         The control word function is enabled for TDM-,
                         ATM-, or Frame Relay-encapsulated PWs if PW
                         profiles are not used. If a PW profile
                         is used, the control word function can be
                         enabled only after the control word is explicitly
                         specified. The control word function can be enabled
                         for PWs that use other types of encapsulation only
                         after the control word is explicitly specified.";
                    config "true";
                    type enumeration {
                        enum default {
                            value "0";
                            description "default:";
                        }
                        enum disable {
                            value "1";
                            description "disable:";



Zhuang, et al.          Expires September 9, 2015              [Page 49]

Internet-Draft            Yang Model for L2VPN                March 2015


                        }
                        enum enable {
                            value "2";
                            description "enable:";
                        }
                    }
                }
                leaf instanceState {
                    description "VPWS instance state.";
                    config "false";
                    type enumeration {
                        enum down {
                            value "0";
                            description "down:";
                        }
                        enum up {
                            value "1";
                            description "up:";
                        }
                        enum adminDown {
                            value "2";
                            description "adminDown:";
                        }
                    }
                }
                leaf createTime {
                    description
                        "Indicates how long the VC has been created for.";
                    config "false";
                    type string {
                        length "1..80";
                    }
                }
                leaf upTime {
                    description
                        "Indicates how long the VC keeps the Up state. If the
                         PW is currently in the Down state, the value is 0.";
                    config "false";
                    type string {
                        length "1..80";
                    }
                }
                leaf lastChgTime {
                    description
                        "Indicates how long the VC status has remained
                         unchanged.";
                    config "false";
                    type string {



Zhuang, et al.          Expires September 9, 2015              [Page 50]

Internet-Draft            Yang Model for L2VPN                March 2015


                            length "1..80";
                        }
                }
                leaf lastUpTime {
                    description
                        "Indicates how long the instance keeps the Up state.
                         If the PW is currently in the Down state, the value
                         is 0.";
                    config "false";
                    type yang:date-and-time;
                }
                leaf totalUpTime {
                    description
                        "Indicates the total duration the instance is Up.";
                    config "false";
                    type string {
                        length "1..80";
                    }
                }

                container vpwsPws {
                    uses vpwsPws;
                }

            }

        }
    }

    container l2vpnvpls {

        container vplsStatisticInfo {

            container vplsInstStatisticsInfo {

                leaf totalVsiNum {
                    description "None";
                    config "false";
                    type uint32;
                }
                leaf vsiUpNum {
                    config "false";
                    type uint32;
                }
                leaf vsiDownNum {
                    config "false";
                    type uint32;
                }



Zhuang, et al.          Expires September 9, 2015              [Page 51]

Internet-Draft            Yang Model for L2VPN                March 2015


                leaf ldpModeNum {
                    config "false";
                    type uint32;
                }
                leaf bgpVsiNum {
                    config "false";
                    type uint32;
                }
                leaf bgpAdVsiNum {
                    config "false";
                    type uint32;
                }
                leaf unspecifiedNum {
                    config "false";
                    type uint32;
                }
            }

            container vplsPwStatisticsInfo {

                leaf totalPwNum {
                    description "None";
                    config "false";
                    type uint32;
                }
                leaf upPwNum {
                    config "false";
                    type uint32;
                }
                leaf downPwNum {
                    config "false";
                    type uint32;
                }
                leaf ldpPwNum {
                    config "false";
                    type uint32;
                }
                leaf bgpPwNum {
                    config "false";
                    type uint32;
                }
                leaf bgpAdPwNum {
                    config "false";
                    type uint32;
                }
            }

            container vplsAcStatisticsInfo {



Zhuang, et al.          Expires September 9, 2015              [Page 52]

Internet-Draft            Yang Model for L2VPN                March 2015


                leaf totalVplsAcNum {
                    config "false";
                    type uint32;
                }
                leaf upVplsAcNum {
                    config "false";
                    type uint32;
                }
                leaf downVplsAcNum {
                    config "false";
                    type uint32;
                }
            }

            container vplsTnlRefInfos {

                config "false";
                list vplsTnlRefInfo {

                    key "tnlPolicyName";

                    leaf tnlPolicyName {
                        description "None";
                        config "false";
                        type string {
                            length "1..39";
                        }
                    }
                    container tnlVsiRefInfos {

                        list tnlVsiRefInfo {

                             key "instanceName";

                             leaf instanceName {
                                config "false";
                                type string {
                                    length "1..31";
                                }
                            }
                        }

                    }

                }

            }




Zhuang, et al.          Expires September 9, 2015              [Page 53]

Internet-Draft            Yang Model for L2VPN                March 2015


            container vplsLoopDetectStaticInfo {

                 leaf totalVplsLoopDetectNum {
                    config "false";
                    type uint32;
                }
            }

        }

        container vplsInstances {

            list vplsInstance {

                key "instanceName";

                leaf instanceName {
                    description
                        "Specifies VPLS instance name.";
                    config "true";
                    type string {
                        length "1..31";
                    }
                }
                leaf description {
                    description
                        "Specify the VPLS instance description.";
                    config "true";
                    type string {
                        length "1..64";
                    }
                }
                leaf memberDiscoveryMode {
                    description
                        "The VPLS member discovery mode for a created VSI.";
                    config "true";
                    default "default";
                    type enumeration {
                        enum default {
                            value "0";
                            description "default:";
                        }
                        enum auto {
                            value "1";
                            description "auto:";
                        }
                        enum static {
                            value "2";



Zhuang, et al.          Expires September 9, 2015              [Page 54]

Internet-Draft            Yang Model for L2VPN                March 2015


                            description "static:";
                        }
                        enum bdmode {
                            value "3";
                            description "bd mode:";
                        }
                    }
                }
                leaf encapsulateType {
                    description "VPWS instance encapsulation type.";
                    config "true";
                    default "vlan";
                    type pw-encapsulation;
                }
                leaf mtuValue {
                    description
                        "MTU specified in dynamic PW signaling negotiation.";
                    config "true";
                    default "1500";
                    type uint16 {
                        range "328..65535";
                    }
                }
                leaf tnlPolicyName {
                    description
                        "Specifies a tunnel policy name for the VSI. If no
                         name is specified for a tunnel policy, the default
                         tunnel policy is adopted. The LSP tunnel is
                         preferred and only one LSP is used for load balancing
                         in the default tunnel policy. If the name of the
                         tunnel policy is specified but no tunnel policy is
                         configured, the default tunnel policy is still adopted.
                         ";
                    config "true";
                    type string {
                        length "1..39";
                    }
                }
                leaf shutdown {
                    description
                        "Sometimes, because of service debugging or service
                         halt, a VSI can be disabled for function
                         modification.";
                    config "true";
                    default "false";
                    type boolean;
                }
                leaf isolateSpoken {



Zhuang, et al.          Expires September 9, 2015              [Page 55]

Internet-Draft            Yang Model for L2VPN                March 2015


                    description
                        "The isolate spoken command enables forwarding
                         isolation between AC interfaces, between UPE
                         PWs, and between ACs and UPE PWs on a VSI. The
                         undo isolate spoken command disables forwarding
                         isolation";
                    config "true";
                    default "false";
                    type boolean;
                }
                leaf unknownUnicastAction {
                    description
                        "Specifies the processing mode for received unknown
                         unicast frames.";
                    config "true";
                    type enumeration {
                        enum broadcast {
                            value "0";
                            description "broadcast:";
                        }
                        enum drop {
                            value "1";
                            description "drop:";
                        }
                        enum local-handle {
                            value "2";
                            description "local-handle:";
                        }
                        enum drop-learn {
                            value "3";
                            description "drop-learn:";
                        }
                    }
                }
                leaf macLearnEnable {
                    description
                        "Enables MAC address learning on a VSI.";
                    config "true";
                    default "true";
                    type boolean;
                }
                leaf macLearnStyle {
                    description
                        "Sets the MAC address learning style of a VSI.By
                         default, MAC address learning style is unqualify.
                         Currently, the VRP supports only the unqualified
                         mode.";




Zhuang, et al.          Expires September 9, 2015              [Page 56]

Internet-Draft            Yang Model for L2VPN                March 2015


                    config "true";
                    default "unqualify";
                    type enumeration {
                        enum qualify {
                            value "0";
                            description "qualify:";
                        }
                        enum unqualify {
                            value "1";
                            description "unqualify:";
                        }
                    }
                }
                leaf macAgeTimer {
                    description
                        "Sets the aging time of MAC address entries in a VSI.
                         By default, the aging time of MAC address entries in
                         a VSI is the global aging time. You can set the global
                         aging time by the command mac-address aging-time
                         (system view).";
                    config "true";
                    type uint32 {
                        range "0..1000000";
                    }
                }
                leaf totalAcService {
                    description
                        "Total number of interface in the instance.";
                    config "false";
                    type uint32;
                }
                leaf createTime {
                    description
                        "Indicates how long the VSI has been created for.";
                    config "false";
                    type string {
                        length "1..60";
                    }
                }
                leaf vsiState {
                    description "VPLS instance state.";
                    config "false";
                    type enumeration {
                        enum down {
                            value "0";
                            description "down:";
                        }
                        enum up {



Zhuang, et al.          Expires September 9, 2015              [Page 57]

Internet-Draft            Yang Model for L2VPN                March 2015


                            value "1";
                            description "up:";
                        }
                        enum adminDown {
                            value "2";
                            description "adminDown:";
                        }
                    }
                }
                leaf ignoreAcStateEffect {
                    description
                        "After the ignore-ac-state command is configured,
                         the VSI status is not subject to changes in the
                         status of the AC. That is, a VSI can go Up even
                         if no AC is connected to the VSI.";

                    config "false";
                    default "false";
                    type boolean;
                }

                container vsiPipe {

                    leaf pipeMode {
                        description "Pipe mode";
                        config "true";
                        default "uniform";
                        type enumeration {
                            enum pipe {
                                value "0";
                                description "pipe:";
                            }
                            enum shortPipe {
                                value "1";
                                description "shortPipe:";
                            }
                            enum uniform {
                                value "2";
                                description "uniform:";
                            }
                        }
                    }
                    leaf serviceClass {
                        description "service class";
                        config "true";
                        default "be";
                        type enumeration {
                            enum be {



Zhuang, et al.          Expires September 9, 2015              [Page 58]

Internet-Draft            Yang Model for L2VPN                March 2015


                                value "0";
                                description "be:";
                            }
                            enum af1 {
                                value "1";
                                description "af1:";
                            }
                            enum af2 {
                                value "2";
                                description "af2:";
                            }
                            enum af3 {
                                value "3";
                                description "af3:";
                            }
                            enum af4 {
                                value "4";
                                description "af4:";
                            }
                            enum ef {
                                value "5";
                                description "ef:";
                            }
                            enum cs6 {
                                value "6";
                                description "cs6:";
                            }
                            enum cs7 {
                                value "7";
                                description "cs7:";
                            }
                        }
                    }
                    leaf color {
                        description "service color";
                        config "true";
                        default "green";
                        type enumeration {
                            enum green {
                                value "0";
                                description "green:";
                            }
                            enum yellow {
                                value "1";
                                description "yellow:";
                            }
                            enum red {
                                value "2";



Zhuang, et al.          Expires September 9, 2015              [Page 59]

Internet-Draft            Yang Model for L2VPN                March 2015


                                description "red:";
                            }
                        }
                    }
                    leaf dsName {
                        description "domain name";
                        config "true";
                        type string {
                            length "1..31";
                        }
                    }
                }

                container vplsLdpInst {

                    leaf vsiId {
                        description
                            "After an ID is set for a VSI, it cannot be
                             changed. Different VSIs have different IDs.";
                        config "true";
                        type uint32 {
                            range "1..4294967295";
                        }
                    }
                    leaf macWithdraw {
                        description
                            "Configures a VSI to delete the local MAC
                             addresses and informs all the remote peers
                             of the deletion when an AC fault or a UPE
                             fault occurs and the VSI remains Up.";
                        config "true";
                        default "false";
                        type boolean;
                    }
                    leaf ifChgWithdraw {
                        description
                            "Configures PEs to send LDP MAC Withdraw
                             messages to all peers when the status of
                             the AC interface bound to the VSI changes.";
                        config "true";
                        default "false";
                        type boolean;
                    }
                    leaf upeUpeMacWithdraw {
                        description
                            "Configures an NPE to forward the LDP MAC
                             Withdraw messages received from a UPE to
                             other UPEs.";



Zhuang, et al.          Expires September 9, 2015              [Page 60]

Internet-Draft            Yang Model for L2VPN                March 2015


                        config "true";
                        default "false";
                        type boolean;
                    }
                    leaf upeNpeMacWithdraw {
                        description
                            "Configures an NPE to forward the LDP MAC
                             Withdraw messages received from UPEs to
                             other NPEs.";
                        config "true";
                        default "false";
                        type boolean;
                    }
                    leaf npeUpeMacWithdraw {
                        description
                            "Configures an NPE to forward the LDP MAC
                             Withdraw messages received from other NPEs
                             to UPEs.";
                        config "true";
                        type boolean;
                    }
                    container vplsLdpPws {

                        list vplsLdpPw {

                            key "peerIp pwId pwEncapType";

                            leaf peerIp {
                                description "Specifies the LSR ID of the peer PE.";
                                config "true";
                                type inet:ip-address;
                            }
                            leaf pwId {
                                description
                                    "Indicates the identifier of the PW. Default,
                                     we may use vsiId as the pwId. Sometimes we may
                                     create pw to different pw that the pwId not
                                     match our vsiId, so it must specify the pwId.";

                                config "true";
                                type uint32 {
                                    range "1..4294967295";
                                }
                            }
                            leaf pwEncapType {
                                description
                                    "Indicates the encapsulation of the PW.
                                     Default, we may use encapsulateType as



Zhuang, et al.          Expires September 9, 2015              [Page 61]

Internet-Draft            Yang Model for L2VPN                March 2015


                                     the pwEncapType. Sometimes we may create
                                     pw that the pwEncapType not match our
                                     encapsulateType, so it must specify the
                                     pwEncapType.";
                                config "true";
                                type pw-encapsulation;
                            }
                            leaf pwRole {
                                description
                                    "VPLS pw role:primary, secondary.";
                                config "true";
                                default "primary";
                                type pw-role;
                            }
                            leaf pwName {
                                description
                                    "Specifies the name of a PW, which is used
                                     to distinguish the PW from other PWs. The
                                     PW name must be unique in the same VSI,
                                     but can be the same as the PW names in
                                     other VSIs. ";
                                config "true";
                                type string {
                                    length "1..15";
                                }
                            }
                            leaf ifParaVCCV {
                                description
                                    "Deletes the VCCV byte (an interface
                                     parameter) in the Mapping packet.";
                                config "true";
                                default "true";
                                type boolean;
                            }
                            leaf isUpe {
                                description "set VPLS PW as upe.";
                                config "true";
                                default "false";
                                type boolean;
                            }
                            leaf tnlPolicyName {
                                description
                                    "Specifies a tunnel policy name for the
                                     VPLS PW. If no name is specified for a
                                     tunnel policy, the default tunnel policy
                                     is adopted. The LSP tunnel is preferred
                                     and only one LSP is used for load
                                     balancing in the default tunnel policy.



Zhuang, et al.          Expires September 9, 2015              [Page 62]

Internet-Draft            Yang Model for L2VPN                March 2015


                                     If the name of the tunnel policy is
                                     specified but no tunnel policy is
                                     configured, the default tunnel policy is
                                     still adopted.";
                                config "true";
                                type string {
                                    length "1..39";
                                }
                            }

                            container vplsLdpPwInfo {
                                config "false";
                                uses vplsPwInfo;
                            }
                        }

                    }
                }

                container vplsBgpAdInst {

                    leaf vplsId {
                        description
                            "Specifies the vpls id. The value is a
                             case-sensitive string of 3 to 21 characters
                             without blank space.";
                        config "true";
                        type string {
                            length "1..21";
                        }
                    }

                    leaf bgpAdRd {
                        description
                            "Specifies the Route Distinguisher. The value is
                             a case-sensitive string of 3 to 21 characters
                             without blank space.";
                        config "false";
                        type string {
                            length "1..21";
                        }
                    }

                    leaf vsiId {
                        description
                            "Specifies the negotiation ip address of the
                             local PE.";
                        config "false";



Zhuang, et al.          Expires September 9, 2015              [Page 63]

Internet-Draft            Yang Model for L2VPN                March 2015


                        type inet:ip-address;
                    }

                    container vpnTargets {
                        description "BGP-AD vpn-targets.";
                        list vpnTarget {
                            key "vpnRTValue";
                            description "BGP AD vpn targets.";

                            leaf vpnRTValue {

                              description
                                "Vpn-target:
                                 adds VPN target extended community attribute
                                 to the export or import VPN target extended
                                 community list. The vpn-target can be
                                 expressed in either of the following formats:
                                 (1)16-bit AS number:32-bit user-defined number
                                    For example, 1:3. The AS number ranges from
                                    0 to 65535. The user-defined number ranges
                                    from 0 to 4294967295. The AS number and the
                                    user-defined number cannot be 0s at the same
                                    time. That is, a VPN target cannot be 0:0.
                                 (2)32-bit IP address:16-bit user-defined number
                                    For example, 192.168.122.15:1. The IP address
                                    ranges from 0.0.0.0 to 255.255.255.255. The
                                    user-defined number ranges from 0 to 65535.";

                              mandatory "true";
                              type string {
                                length "3..21";
                              }
                            }

                            leaf vrfRTType {
                              description
                                "Specifies the vpn target type,
                                 export-extcommunity: specifies the extended
                                 community attributes carried in routing
                                 information to be sent. import-extcommunity:
                                 receives routing information carrying
                                 specified extended community attributes.";
                               mandatory "true";
                               type enumeration {
                               enum export_extcommunity {
                                 value "0";
                                 description "export-extcommunity:";
                               }



Zhuang, et al.          Expires September 9, 2015              [Page 64]

Internet-Draft            Yang Model for L2VPN                March 2015


                               enum import_extcommunity {
                                 value "1";
                                 description "import-extcommunity:";
                               }
                               enum both {
                                 value "2";
                                 description
                                   "export-extcommunity &
                                    import-extcommunity:";
                               }
                             }
                           }
                        }
                    }

                    container bgpAdPeerInfos {
                        config "false";

                        list bgpAdPeerInfo {

                            key "peerRouterID";
                            leaf peerRouterID {
                                description
                                    "The Router ID of the remote router.";
                                type inet:ip-address;
                            }

                            leaf vplsId {
                                description
                                    "The vpls id. The value is a case-sensitive
                                     string of 3 to 21 characters without blank
                                     space.";
                                type string {
                                    length "1..21";
                                }
                            }

                            leaf sourceAII {
                                description
                                    "The source AII of the remote PE.";
                                type inet:ip-address;
                            }

                            leaf targetAII {
                                description
                                    "The target AII of the remote PE.";
                                type inet:ip-address;
                            }



Zhuang, et al.          Expires September 9, 2015              [Page 65]

Internet-Draft            Yang Model for L2VPN                March 2015


                            leaf peerType {
                              description
                                "Specifies the peer type.Static,Dynamic.";

                                  type enumeration {
                                    enum static {
                                      value "0";
                                      description "Static pw";
                                    }
                                    enum dynamic {
                                      value "1";
                                      description "Dynamic pw";
                                    }
                              }
                            }

                            container bgpAdPwInfo {
                                config "false";

                                uses vplsPwInfo;
                            }

                        }
                    }

                }

                container vplsBgpInst {

                    leaf bgpRd {
                        description
                            "Specifies the Route Distinguisher. The value is a
                            case-sensitive string of 3 to 21 characters without
                            blank space.";
                        type string {
                            length "1..21";
                        }
                    }

                    leaf ignoreMtu {
                        description
                            "Ignore the mtu when negotiate pw.";
                        type boolean;
                    }

                    container vpnTargets {
                        description "BGP vpn-targets";
                        list vpnTarget {



Zhuang, et al.          Expires September 9, 2015              [Page 66]

Internet-Draft            Yang Model for L2VPN                March 2015


                            key "vpnRTValue";
                            description
                                "BGP vpn targets";

                            leaf vpnRTValue {

                              description
                                "Vpn-target: adds VPN target extended community
                                 attribute to the export or import VPN target
                                 extended community list. The vpn-target can be
                                 expressed in either of the following formats:
                                (1)16-bit AS number:32-bit user-defined number
                                   For example, 1:3. The AS number ranges from
                                   0 to 65535. The user-defined number ranges
                                   from 0 to 4294967295. The AS number and the
                                   user-defined number cannot be 0s at the same
                                   time. That is, a VPN target cannot be 0:0.
                                (2)32-bit IP address:16-bit user-defined number
                                   For example, 192.168.122.15:1. The IP address
                                   ranges from 0.0.0.0 to 255.255.255.255. The
                                   user-defined number ranges from 0 to 65535.";

                              mandatory "true";
                              type string {
                                length "3..21";
                              }
                            }

                            leaf vrfRTType {
                              description
                                "Specifies the vpn target type,
                                 export-extcommunity: specifies the extended
                                 community attributes carried in routing
                                 information to be sent.
                                 import-extcommunity: receives routing
                                 information carrying specified extended
                                 community attributes.";

                                  mandatory "true";
                                  type enumeration {
                                    enum export_extcommunity {
                                      value "0";
                                      description "export-extcommunity:";
                                    }
                                    enum import_extcommunity {
                                      value "1";
                                      description "import-extcommunity:";
                                    }



Zhuang, et al.          Expires September 9, 2015              [Page 67]

Internet-Draft            Yang Model for L2VPN                March 2015


                                    enum both {
                                      value "2";
                                      description "export-extcommunity &
                                                   import-extcommunity:";
                                    }
                              }
                            }
                        }
                    }

                    container bgpSite {

                        leaf siteId {
                            description
                                "Specifies the ID of the site.";
                            mandatory "true";
                            type uint16 {
                                range "1..65535";
                            }
                        }
                        leaf siteRange {
                            description
                                "Specifies the ID of the site range.";
                            type uint16 {
                                range "1..65535";
                            }
                        }
                        leaf defaultOffset {
                            description
                                "Specifies the default offset of the site ID.";
                            type uint8 {
                                range "0..1";
                            }
                        }
                    }

                    container bgpPeerInfos {
                        config "false";

                        list bgpPeerInfo {

                            key "siteId";

                            leaf siteId {
                                description
                                    "The site id of the peer.";
                                type uint16 {
                                    range "1..65535";



Zhuang, et al.          Expires September 9, 2015              [Page 68]

Internet-Draft            Yang Model for L2VPN                March 2015


                                }
                            }

                            container bgpPwInfo {
                                config "false";

                                uses vplsPwInfo;
                            }

                        }
                    }

                }

                container vplsAcs {

                    list vplsAc {

                        key "interfaceName";

                        leaf interfaceName {
                            description "Specifies the AC interface name. ";
                            config "true";
                            type leafref {
                                path "/if:interfaces/if:interface/if:name";
                            }
                        }
                        leaf hubModeEnable {
                            description
                                "Change the VSI attribute of the local
                                 interface from spoke to hub.By default,
                                 the AC side of a VSI has the attribute
                                 of spoke, and the PW side of a VSI has
                                 the attribute of hub.";
                            config "true";
                            default "false";
                            type boolean;
                        }
                        leaf state {
                            description
                                "Indicates the status of the AC.";
                            config "false";
                            type ifState;
                        }
                        leaf lastUpTime {
                            description
                                "Indicates how long the AC keeps the Up state.
                                 If the AC is currently in the Down state, the



Zhuang, et al.          Expires September 9, 2015              [Page 69]

Internet-Draft            Yang Model for L2VPN                March 2015


                                 value is 0.";
                            config "false";
                            type yang:date-and-time;
                        }
                        leaf totalUpTime {
                            description
                                "Indicates the total duration the AC is Up.";
                            config "false";
                            type string {
                                length "1..60";
                            }
                        }
                        container ifLinkProtocolTran {

                            description "lacp status";

                            leaf protocolLacp {
                                description "lacp status";
                                config "true";
                                type enumeration {
                                    enum enable {
                                        value "0";
                                        description "enable:";
                                    }
                                    enum disable {
                                        value "1";
                                        description "disable:";
                                    }
                                }
                            }
                            leaf protocolLldp {
                                description "lldp status";
                                config "true";
                                type enumeration {
                                    enum enable {
                                        value "0";
                                        description "enable:";
                                    }
                                    enum disable {
                                        value "1";
                                        description "disable:";
                                    }
                                }
                            }
                            leaf protocolBpdu {
                                description "bpdu status";
                                config "true";
                                type enumeration {



Zhuang, et al.          Expires September 9, 2015              [Page 70]

Internet-Draft            Yang Model for L2VPN                March 2015


                                    enum enable {
                                        value "0";
                                        description "enable:";
                                    }
                                    enum disable {
                                        value "1";
                                        description "disable:";
                                    }
                                }
                            }
                            leaf protocolCdp {
                                description "cdp status";
                                config "true";
                                type enumeration {
                                    enum enable {
                                        value "0";
                                        description "enable:";
                                    }
                                    enum disable {
                                        value "1";
                                        description "disable:";
                                    }
                                }
                            }
                            leaf protocolUdld {
                                description "udld status";
                                config "true";
                                type enumeration {
                                    enum enable {
                                        value "0";
                                        description "enable:";
                                    }
                                    enum disable {
                                        value "1";
                                        description "disable:";
                                    }
                                }
                            }
                        }
                    }

                }

                container vplsLoopDetectInfo {

                    description "L2vpn admin vsi binding class.";

                    leaf lastLoopType {



Zhuang, et al.          Expires September 9, 2015              [Page 71]

Internet-Draft            Yang Model for L2VPN                March 2015


                        description
                            "Indicates the last mac withdraw loop type.";
                        config "false";
                        type enumeration {
                            enum detect-loop {
                                value "0";
                                description "detect loop:";
                            }
                            enum exceed-max-hop {
                                value "1";
                                description "exceed max hop:";
                            }
                        }
                    }
                    leaf sendPeer {
                        description
                            "Indicates the mac withdraw send peer.";
                        config "false";
                        type inet:ip-address;
                    }
                    leaf receivePeer {
                        description
                            "Indicates the mac withdrawreceive peer.";
                        config "false";
                        type inet:ip-address;
                    }
                    leaf lastLoopTime {
                        description
                            "Indicates the last mac withdraw loop time.";
                        config "false";
                        type string {
                            length "1..80";
                        }
                    }
                }

            }

        }

    }
}
</CODE ENDS>








Zhuang, et al.          Expires September 9, 2015              [Page 72]

Internet-Draft            Yang Model for L2VPN                March 2015


5.  IANA Considerations

   This document makes no request of IANA.

6.  Security Considerations

   This document does not introduce any new security risk.

7.  Acknowledgements

   The authors would like to thank Guangying Zheng, Gang Yan for their
   contributions to this work.

8.  References

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

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

   [RFC6241]  Enns, R., Bjorklund, M., Schoenwaelder, J., and A.
              Bierman, "Network Configuration Protocol (NETCONF)", RFC
              6241, June 2011.

Authors' Addresses

   Shunwan Zhuang
   Huawei Technologies
   Huawei Bld., No.156 Beiqing Rd.
   Beijing  100095
   China

   Email: zhuangshunwan@huawei.com


   Haibo Wang
   Huawei Technologies
   Huawei Bld., No.156 Beiqing Rd.
   Beijing  100095
   China

   Email: rainsword.wang@huawei.com







Zhuang, et al.          Expires September 9, 2015              [Page 73]

Internet-Draft            Yang Model for L2VPN                March 2015


   Zhenbin Li
   Huawei Technologies
   Huawei Bld., No.156 Beiqing Rd.
   Beijing  100095
   China

   Email: lizhenbin@huawei.com












































Zhuang, et al.          Expires September 9, 2015              [Page 74]