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 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"; } } } } } } } 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]