draft-ietf-bess-evpn-yang-03.txt   draft-ietf-bess-evpn-yang-04.txt 
BESS Working Group P. Brissette BESS Working Group P. Brissette
A.Sajassi
Internet Draft Cisco System Internet Draft Cisco System
Intended Status: Proposed Standard H. Shah Intended Status: Proposed Standard H. Shah
Expires: April 24, 2018 Ciena Corporation Expires: August 24, 2018 Ciena Corporation
Z. Li
Huawei Technologies
I. Chen I. Chen
Jabil Jabil
K. Tiruveedhula K. Tiruveedhula
Juniper Networks Juniper Networks
I. Hussain
Infinera Corporation
J. Rabadan J. Rabadan
Nokia Nokia
October 21, 2017 February 20, 2018
Yang Data Model for EVPN Yang Data Model for EVPN
draft-ietf-bess-evpn-yang-03 draft-ietf-bess-evpn-yang-04
Abstract Abstract
This document describes a YANG data model for Ethernet VPN services. This document describes a YANG data model for Ethernet VPN services.
The model is agnostic of the underlay. It apply to MPLS as well as to The model is agnostic of the underlay. It apply to MPLS as well as to
VxLAN encapsulation. The model is also agnostic of the services VxLAN encapsulation. The model is also agnostic of the services
including E-LAN, E-LINE and E-TREE services. This document mainly including E-LAN, E-LINE and E-TREE services. This document mainly
focuses on EVPN and Ethernet-Segment instance framework. focuses on EVPN and Ethernet-Segment instance framework.
Status of this Memo Status of this Memo
skipping to change at page 2, line 10 skipping to change at page 2, line 4
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/1id-abstracts.html http://www.ietf.org/1id-abstracts.html
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html http://www.ietf.org/shadow.html
Copyright and License Notice Copyright and License Notice
Copyright (c) 2018 IETF Trust and the persons identified as the
Copyright (c) 2017 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Convention Convention
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119]. document are to be interpreted as described in [RFC2119].
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Specification of Requirements . . . . . . . . . . . . . . . . . 5 2. Specification of Requirements . . . . . . . . . . . . . . . . . 3
3. EVPN YANG Model . . . . . . . . . . . . . . . . . . . . . . . . 5 3. EVPN YANG Model . . . . . . . . . . . . . . . . . . . . . . . . 4
3.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . 5 3.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.2 Ethernet-Segment Model . . . . . . . . . . . . . . . . . . . 6 3.2 Ethernet-Segment Model . . . . . . . . . . . . . . . . . . . 4
3.3 EVPN Model . . . . . . . . . . . . . . . . . . . . . . . . . 6 3.3 EVPN Model . . . . . . . . . . . . . . . . . . . . . . . . . 5
4. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . . . 7 4. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4.1 Ethernet Segment Yang Module . . . . . . . . . . . . . . . . 7 4.1 Ethernet Segment Yang Module . . . . . . . . . . . . . . . . 9
4.2 EVPN Yang Module . . . . . . . . . . . . . . . . . . . . . . 9 4.2 EVPN Yang Module . . . . . . . . . . . . . . . . . . . . . . 14
5. Security Considerations . . . . . . . . . . . . . . . . . . . . 11 5. Security Considerations . . . . . . . . . . . . . . . . . . . . 25
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 11 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 26
7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . 11 7. References . . . . . . . . . . . . . . . . . . . . . . . . . . 26
8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 12 7.1. Normative Reference . . . . . . . . . . . . . . . . . . . . 26
8.1. Normative References . . . . . . . . . . . . . . . . . . . 12 7.2. Informative References . . . . . . . . . . . . . . . . . . 26
8.2. Informative References . . . . . . . . . . . . . . . . . . 12 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 27
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 12
1. Introduction 1. Introduction
The Network Configuration Protocol (NETCONF) [RFC6241] is a network The Network Configuration Protocol (NETCONF) [RFC6241] is a network
management protocol that defines mechanisms to manage network management protocol that defines mechanisms to manage network
devices. YANG [RFC6020] is a modular language that represents data devices. YANG [RFC6020] is a modular language that represents data
structures in an XML or JSON tree format, and is used as a data structures in an XML or JSON tree format, and is used as a data
modeling language for the NETCONF. modeling language for the NETCONF.
This document introduces a YANG data model for Ethernet VPN services This document introduces a YANG data model for Ethernet VPN services
(EVPN) [RFC7432], Provider Backbone Bridging Combined with Ethernet (EVPN) [RFC7432], Provider Backbone Bridging Combined with Ethernet
VPN (PBB-EVPN) [RFC7623] as well as other WG draft such as EVPN-VPWS, VPN (PBB-EVPN) [RFC7623] as well as other WG draft such as EVPN-VPWS,
skipping to change at page 4, line 4 skipping to change at page 3, line 42
The EVPN data object model defined in this document uses the instance The EVPN data object model defined in this document uses the instance
centric approach whereby EVPN service attributes are specified for a centric approach whereby EVPN service attributes are specified for a
given EVPN instance. given EVPN instance.
The Ethernet-Segment data object model defined in this document refer The Ethernet-Segment data object model defined in this document refer
to a specific interface. That interface can be a physical interface, to a specific interface. That interface can be a physical interface,
a bundle interface or virtual interface. The latter includes a bundle interface or virtual interface. The latter includes
attachment-circuit and pseudowire. The purpose of creating a separate attachment-circuit and pseudowire. The purpose of creating a separate
module is due to the fact that it can be used without having the need module is due to the fact that it can be used without having the need
to have EVPN configured as layer 2 service. For example, an access to have EVPN configured as layer 2/3 service. For example, an access
node can be dual-homed to two service nodes servicing a VPLS core. node can be dual-homed to two service nodes servicing a VPLS or an
The access connectivity can be represented by an Ethernet-Segment IPVPN core. The access connectivity can be represented by an
where EVPN BGP DF election is performed over both service nodes. The Ethernet-Segment where EVPN BGP DF election is performed over both
core remains VPLS where no EVPN instance is required. service nodes.
2. Specification of Requirements 2. Specification of Requirements
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL"
in this document are to be interpreted as described in [RFC2119]. in this document are to be interpreted as described in [RFC2119].
3. EVPN YANG Model 3. EVPN YANG Model
3.1. Overview 3.1. Overview
Two top level module, Ethernet-Segment and EVPN, are defined. The Two top level module, Ethernet-Segment and EVPN, are defined. The
Ethernet-Segment contains a list of interface to which any Ethernet- Ethernet-Segment contains a list of interface to which any Ethernet-
Segment attributes are configured/applied. Segment attributes are configured/applied.
The EVPN module has 2 main containers: common and instance. The The EVPN module has two main containers: common and instance. The
first one has common attributes to all VPNs where as the latter has first one has common attributes to all VPNs where as the latter has
attributes specific to an EVI. This document state the scope of the attributes specific to an EVI (EVPN instance). This document state
EVPN object models definition. The following documents are within the the scope of the EVPN object models definition. The following
scope. This is not an exhaustive list but a representation of documents are within the scope. This is not an exhaustive list but a
documents that are covered for this work: representation of documents that are covered for this work:
o Requirements for EVPN: RFC 7209 o Requirements for EVPN: [RFC7209]
o EVPN: RFC 7432 o EVPN: [RFC7432]
o PBB-EVPN: RFC 7623 o PBB-EVPN: [RFC7623]
o EVPN-VPWS: RFC 8214 o EVPN-VPWS: [RFC8214]
The integration with L2VPN instance Yang model is being done as part The integration with L2VPN instance Yang model is being done as part
of the L2VPN Yang model. of the L2VPN Yang model.
Following documents will be covered at that time: Following documents will be covered at that time:
o E-TREE Support in EVPN & PBB-EVPN: o E-TREE Support in EVPN & PBB-EVPN:
draft-ietf-bess-evpn-etree draft-ietf-bess-evpn-etree
o (PBB-)EVPN Seamless Integration with (PBB-)VPLS: o (PBB-)EVPN Seamless Integration with (PBB-)VPLS:
draft-ietf-bess-evpn-vpls-seamless-integ draft-ietf-bess-evpn-vpls-seamless-integ
o EVPN Virtual Ethernet Segment: o EVPN Virtual Ethernet Segment:
draft-sajassi-bess-evpn-virtual-eth-segment draft-sajassi-bess-evpn-virtual-eth-segment
o IP Prefix Advertisement in EVPN: o IP Prefix Advertisement in EVPN:
draft-ietf-bess-evpn-prefix-advertisement draft-ietf-bess-evpn-prefix-advertisement
o VXLAN DCI Using EVPN: o VXLAN DCI Using EVPN:
draft-boutros-l2vpn-vxlan-evpn draft-boutros-l2vpn-vxlan-evpn
o A Network Virtualization Overlay Solution using EVPN: o A Network Virtualization Overlay Solution using EVPN:
draft-ietf-bess-evpn-overlay draft-ietf-bess-evpn-overlay
o Interconnect Solution for EVPN Overlay networks: o Interconnect Solution for EVPN Overlay networks:
draft-ietf-bess-dci-evpn-overlay
o Integrated Routing and Bridging in EVPN: o Integrated Routing and Bridging in EVPN:
draft-ietf-bess-evpn-inter-subnet-forwarding draft-ietf-bess-evpn-inter-subnet-forwarding
3.2 Ethernet-Segment Model 3.2 Ethernet-Segment Model
The Ethernet-Segment data model has a list of ES where each refer to The Ethernet-Segment data model has a list of ES where each refer to
an interface. All attributes are optional due to auto-sensing default an interface. All attributes are optional due to auto-sensing default
mode where all values are auto-derive from the network connectivity. mode where all values are auto-derive from the network connectivity.
module: ietf-ethernet-segment module: ietf-ethernet-segment
+--rw ethernet-segments +--rw ethernet-segments
+--rw ethernet-segment* [name] +--rw ethernet-segment* [name]
+--rw name string +--rw name string
+--ro service-type? string +--ro service-type? string
+--ro status? status-type +--ro status? status-type
+--rw (ac-or-pw)? +--rw (ac-or-pw)?
| +--:(ac) | +--:(ac)
| | +--rw ac* string | | +--rw ac* if:interface-ref
| +--:(pw) | +--:(pw)
| +--rw pw* pw:pseudowire-ref | +--rw pw* pw:pseudowire-ref
+--ro interface-status? status-type +--ro interface-status? status-type
+--rw ethernet-segment-identifier? uint32 +--rw ethernet-segment-identifier? uint32
+--rw (active-mode) +--rw (active-mode)
| +--:(single-active) | +--:(single-active)
| | +--rw single-active-mode? empty | | +--rw single-active-mode? empty
| +--:(all-active) | +--:(all-active)
| +--rw all-active-mode? empty | +--rw all-active-mode? empty
+--rw pbb-parameters {ethernet-segment-pbb-params}? +--rw pbb-parameters {ethernet-segment-pbb-params}?
| +--rw backbone-src-mac? yang:mac-address | +--rw backbone-src-mac? yang:mac-address
+--rw bgp-parameters +--rw bgp-parameters
| +--rw common | +--rw common
| +--rw rd-rt* [route-distinguisher] | +--rw rd-rt* [route-distinguisher]
{ethernet-segment-bgp-params}? {ethernet-segment-bgp-params}?
| +--rw route-distinguisher | +--rw route-distinguisher
rt-types:route-distinguisher rt-types:route-distinguisher
| +--rw vpn-target* [route-target] | +--rw vpn-target* [route-target]
| +--rw route-target rt-types:route-target | +--rw route-target
rt-types:route-target
| +--rw route-target-type | +--rw route-target-type
rt-types:route-target-type rt-types:route-target-type
+--rw df-election +--rw df-election
| +--rw df-election-method? df-election-method-type | +--rw df-election-method? df-election-method-type
| +--rw preference? uint16 | +--rw preference? uint16
| +--rw revertive? boolean | +--rw revertive? boolean
| +--rw election-wait-time? uint32 | +--rw election-wait-time? uint32
+--rw ead-evi-route? boolean +--rw ead-evi-route? boolean
+--ro esi-label? string +--ro esi-label? string
+--ro member* +--ro member*
skipping to change at page 6, line 36 skipping to change at page 6, line 25
+--rw evpn-instance* [name] +--rw evpn-instance* [name]
+--rw name string +--rw name string
+--rw evi? uint32 +--rw evi? uint32
+--rw pbb-parameters {evpn-pbb-params}? +--rw pbb-parameters {evpn-pbb-params}?
| +--rw source-bmac? yang:hex-string | +--rw source-bmac? yang:hex-string
+--rw bgp-parameters +--rw bgp-parameters
| +--rw common | +--rw common
| +--rw rd-rt* [route-distinguisher] | +--rw rd-rt* [route-distinguisher]
{evpn-bgp-params}? {evpn-bgp-params}?
| +--rw route-distinguisher | +--rw route-distinguisher
rt-types:route-distinguisher | | rt-types:route-distinguisher
| +--rw vpn-target* [route-target] | +--rw vpn-target* [route-target]
| +--rw route-target rt-types:route-target | +--rw route-target
rt-types:route-target
| +--rw route-target-type | +--rw route-target-type
rt-types:route-target-type rt-types:route-target-type
+--rw arp-proxy? boolean +--rw arp-proxy? boolean
+--rw arp-suppression? boolean +--rw arp-suppression? boolean
+--rw nd-proxy? boolean +--rw nd-proxy? boolean
+--rw nd-suppression? boolean +--rw nd-suppression? boolean
+--rw underlay-multicast? boolean +--rw underlay-multicast? boolean
+--rw flood-unknown-unicast-supression? boolean +--rw flood-unknown-unicast-supression? boolean
+--rw vpws-vlan-aware? boolean +--rw vpws-vlan-aware? boolean
+--ro routes +--ro routes
| +--ro ethernet-auto-discovery-route* | +--ro ethernet-auto-discovery-route*
| | +--ro rd-rt* [route-distinguisher] | | +--ro rd-rt* [route-distinguisher]
skipping to change at page 7, line 21 skipping to change at page 7, line 11
| | +--ro label? rt-types:mpls-label | | +--ro label? rt-types:mpls-label
| | +--ro detail | | +--ro detail
| | +--ro attributes | | +--ro attributes
| | | +--ro extended-community* string | | | +--ro extended-community* string
| | +--ro bestpath? empty | | +--ro bestpath? empty
| +--ro mac-ip-advertisement-route* | +--ro mac-ip-advertisement-route*
| | +--ro rd-rt* [route-distinguisher] | | +--ro rd-rt* [route-distinguisher]
| | | +--ro route-distinguisher | | | +--ro route-distinguisher
rt-types:route-distinguisher rt-types:route-distinguisher
| | | +--ro vpn-target* [route-target] | | | +--ro vpn-target* [route-target]
| | | +--ro route-target rt-types:route-target | | | +--ro route-target
rt-types:route-target
| | +--ro ethernet-segment-identifier? uint32 | | +--ro ethernet-segment-identifier? uint32
| | +--ro ethernet-tag? uint32 | | +--ro ethernet-tag? uint32
| | +--ro mac-address? yang:hex-string | | +--ro mac-address? yang:hex-string
| | +--ro mac-address-length? uint8 | | +--ro mac-address-length? uint8
| | +--ro ip-prefix? inet:ip-prefix | | +--ro ip-prefix? inet:ip-prefix
| | +--ro path* | | +--ro path*
| | +--ro next-hop? inet:ip-address | | +--ro next-hop? inet:ip-address
| | +--ro label? rt-types:mpls-label | | +--ro label? rt-types:mpls-label
| | +--ro label2? rt-types:mpls-label | | +--ro label2? rt-types:mpls-label
| | +--ro detail | | +--ro detail
| | +--ro attributes | | +--ro attributes
| | | +--ro extended-community* string | | | +--ro extended-community* string
| | +--ro bestpath? empty | | +--ro bestpath? empty
| +--ro inclusive-multicast-ethernet-tag-route* | +--ro inclusive-multicast-ethernet-tag-route*
| | +--ro rd-rt* [route-distinguisher] | | +--ro rd-rt* [route-distinguisher]
| | | +--ro route-distinguisher | | | +--ro route-distinguisher
rt-types:route-distinguisher rt-types:route-distinguisher
| | | +--ro vpn-target* [route-target] | | | +--ro vpn-target* [route-target]
| | | +--ro route-target rt-types:route-target | | | +--ro route-target
rt-types:route-target
| | +--ro ethernet-segment-identifier? uint32 | | +--ro ethernet-segment-identifier? uint32
| | +--ro originator-ip-prefix? inet:ip-prefix | | +--ro originator-ip-prefix? inet:ip-prefix
| | +--ro path* | | +--ro path*
| | +--ro next-hop? inet:ip-address | | +--ro next-hop? inet:ip-address
| | +--ro label? rt-types:mpls-label | | +--ro label? rt-types:mpls-label
| | +--ro detail | | +--ro detail
| | +--ro attributes | | +--ro attributes
| | | +--ro extended-community* string | | | +--ro extended-community* string
| | +--ro bestpath? empty | | +--ro bestpath? empty
| +--ro ethernet-segment-route* | +--ro ethernet-segment-route*
| | +--ro rd-rt* [route-distinguisher] | | +--ro rd-rt* [route-distinguisher]
| | | +--ro route-distinguisher | | | +--ro route-distinguisher
rt-types:route-distinguisher rt-types:route-distinguisher
| | | +--ro vpn-target* [route-target] | | | +--ro vpn-target* [route-target]
| | | +--ro route-target rt-types:route-target | | | +--ro route-target
rt-types:route-target
| | +--ro ethernet-segment-identifier? uint32 | | +--ro ethernet-segment-identifier? uint32
| | +--ro originator-ip-prefix? inet:ip-prefix | | +--ro originator-ip-prefix? inet:ip-prefix
| | +--ro path* | | +--ro path*
| | +--ro next-hop? inet:ip-address | | +--ro next-hop? inet:ip-address
| | +--ro detail | | +--ro detail
| | +--ro attributes | | +--ro attributes
| | | +--ro extended-community* string | | | +--ro extended-community* string
| | +--ro bestpath? empty | | +--ro bestpath? empty
| +--ro ip-prefix-route* | +--ro ip-prefix-route*
| +--ro rd-rt* [route-distinguisher] | +--ro rd-rt* [route-distinguisher]
| | +--ro route-distinguisher | | +--ro route-distinguisher
rt-types:route-distinguisher rt-types:route-distinguisher
| | +--ro vpn-target* [route-target] | | +--ro vpn-target* [route-target]
| | +--ro route-target rt-types:route-target | | +--ro route-target rt-types:route-target
| +--ro ethernet-segment-identifier? uint32 | +--ro ethernet-segment-identifier? uint32
| +--ro ip-prefix? inet:ip-prefix | +--ro ip-prefix? inet:ip-prefix
| +--ro path* | +--ro path*
| +--ro next-hop? inet:ip-address | +--ro next-hop? inet:ip-address
| +--ro label? rt-types:mpls-label | +--ro label? rt-types:mpls-label
| +--ro detail | +--ro detail
| +--ro attributes | +--ro attributes
| | +--ro extended-community* string | | +--ro extended-community* string
| +--ro bestpath? empty | +--ro bestpath? empty
+--ro statistics +--ro statistics
+--ro tx-count? uint32 +--ro tx-count? uint32
+--ro rx-count? uint32 +--ro rx-count? uint32
skipping to change at page 8, line 46 skipping to change at page 8, line 39
+--ro broadcast-rx-count? uint32 +--ro broadcast-rx-count? uint32
+--ro multicast-tx-count? uint32 +--ro multicast-tx-count? uint32
+--ro multicast-rx-count? uint32 +--ro multicast-rx-count? uint32
+--ro unknown-unicast-tx-count? uint32 +--ro unknown-unicast-tx-count? uint32
+--ro unknown-unicast-rx-count? uint32 +--ro unknown-unicast-rx-count? uint32
augment /pw:pseudowires/pw:pseudowire/pw:pw-type: augment /pw:pseudowires/pw:pseudowire/pw:pw-type:
+--:(evpn-pw) +--:(evpn-pw)
+--rw evpn-pw +--rw evpn-pw
+--rw remote-id? uint32 +--rw remote-id? uint32
+--rw local-id? uint32 +--rw local-id? uint32
augment /l2vpn:l2vpn/l2vpn:instances/l2vpn:instance: augment
/ni:network-instances/ni:network-instance/ni:ni-type/l2vpn:l2vpn:
+--rw evpn-instance? evpn-instance-ref +--rw evpn-instance? evpn-instance-ref
augment /l2vpn:l2vpn/l2vpn:instances/l2vpn:instance: augment
/ni:network-instances/ni:network-instance/ni:ni-type/l2vpn:l2vpn:
+--rw vpls-contstraints +--rw vpls-contstraints
notifications: notifications:
+---n evpn-state-change-notification +---n evpn-state-change-notification
+--ro evpn-instance? evpn-instance-ref +--ro evpn-instance? evpn-instance-ref
+--ro state? identityref +--ro state? identityref
4. YANG Module 4. YANG Module
The EVPN configuration container is logically divided into The EVPN configuration container is logically divided into
following high level config areas: following high level configuration areas:
4.1 Ethernet Segment Yang Module 4.1 Ethernet Segment Yang Module
<CODE BEGINS> file "ietf-ethernet-segment@2017-10-21.yang" <CODE BEGINS> file "ietf-ethernet-segment@2018-02-20.yang"
module ietf-ethernet-segment {
module ietf-ethernet-segment { module ietf-ethernet-segment {
namespace "urn:ietf:params:xml:ns:yang:ietf-ethernet-segment"; namespace "urn:ietf:params:xml:ns:yang:ietf-ethernet-segment";
prefix "es"; prefix "es";
import ietf-yang-types { import ietf-yang-types {
prefix "yang"; prefix "yang";
} }
import ietf-inet-types { import ietf-inet-types {
prefix "inet"; prefix "inet";
} }
import ietf-routing-types { import ietf-routing-types {
prefix "rt-types"; prefix "rt-types";
} }
import ietf-interfaces {
prefix "if";
}
import ietf-pseudowires { import ietf-pseudowires {
prefix "pw"; prefix "pw";
} }
organization "ietf"; organization "ietf";
contact "ietf"; contact "ietf";
description "ethernet segment"; description "ethernet segment";
revision "2018-02-20" {
description " - Change the type of attachment circuit to " +
" if:interface-ref " +
"";
reference "";
}
revision "2017-10-21" { revision "2017-10-21" {
description " - Updated ethernet segment's AC/PW members to " + description " - Updated ethernet segment's AC/PW members to " +
" accommodate more than one AC or more than one " + " accommodate more than one AC or more than one " +
" PW " + " PW " +
" - Added the new preference based DF election " + " - Added the new preference based DF election " +
" method " + " method " +
" - Referenced pseudowires in the new " + " - Referenced pseudowires in the new " +
" ietf-pseudowires.yang model " + " ietf-pseudowires.yang model " +
" - Moved model to NMDA style specified in " + " - Moved model to NMDA style specified in " +
" draft-dsdt-nmda-guidelines-01.txt " + " draft-dsdt-nmda-guidelines-01.txt " +
skipping to change at page 12, line 12 skipping to change at page 12, line 15
} }
leaf status { leaf status {
type status-type; type status-type;
config false; config false;
description "Ethernet segment status"; description "Ethernet segment status";
} }
choice ac-or-pw { choice ac-or-pw {
description "ac-or-pw"; description "ac-or-pw";
case ac { case ac {
leaf-list ac { leaf-list ac {
type string; type if:interface-ref;
description "Eventual reference to standard " + description "Name of attachment circuit";
"attachment circuit definition";
} }
} }
case pw { case pw {
leaf-list pw { leaf-list pw {
type pw:pseudowire-ref; type pw:pseudowire-ref;
description "Reference to a pseudowire"; description "Reference to a pseudowire";
} }
} }
} }
leaf interface-status { leaf interface-status {
skipping to change at page 14, line 49 skipping to change at page 14, line 50
description "df of an evpn instance's vlan"; description "df of an evpn instance's vlan";
} }
description "An ethernet segment"; description "An ethernet segment";
} }
} }
} }
<CODE ENDS> <CODE ENDS>
4.2 EVPN Yang Module 4.2 EVPN Yang Module
<CODE BEGINS> file "ietf-evpn@2017-10-21.yang" <CODE BEGINS> file "ietf-evpn@2018-02-20.yang"
module ietf-evpn { module ietf-evpn {
namespace "urn:ietf:params:xml:ns:yang:ietf-evpn"; namespace "urn:ietf:params:xml:ns:yang:ietf-evpn";
prefix "evpn"; prefix "evpn";
import ietf-inet-types { import ietf-inet-types {
prefix "inet"; prefix "inet";
} }
import ietf-yang-types { import ietf-yang-types {
prefix "yang"; prefix "yang";
} }
import ietf-l2vpn {
prefix "l2vpn";
}
import ietf-routing-types { import ietf-routing-types {
prefix "rt-types"; prefix "rt-types";
} }
import ietf-network-instance {
prefix "ni";
}
import ietf-l2vpn {
prefix "l2vpn";
}
import ietf-pseudowires { import ietf-pseudowires {
prefix "pw"; prefix "pw";
} }
organization "ietf"; organization "ietf";
contact "ietf"; contact "ietf";
description "evpn"; description "evpn";
revision "2018-02-20" {
description " - Incorporated ietf-network-instance model" +
" on which ietf-l2vpn is now based " +
"";
reference "";
}
revision "2017-10-21" { revision "2017-10-21" {
description " - Modified the operational state augment " + description " - Modified the operational state augment " +
" - Renamed evpn-instances-state to evpn-instances" + " - Renamed evpn-instances-state to evpn-instances" +
" - Added vpws-vlan-aware to an EVPN instance " + " - Added vpws-vlan-aware to an EVPN instance " +
" - Added a new augment to L2VPN to add EPVN " + " - Added a new augment to L2VPN to add EPVN " +
" - pseudowire for the case of EVPN VPWS " + " - pseudowire for the case of EVPN VPWS " +
" - Added state change notification " + " - Added state change notification " +
""; "";
reference ""; reference "";
} }
revision "2017-03-13" { revision "2017-03-13" {
description " - Added an augment to base L2VPN model to " + description " - Added an augment to base L2VPN model to " +
" reference an EVPN instance " + " reference an EVPN instance " +
" - Reused ietf-routing-types.yang " + " - Reused ietf-routing-types.yang " +
" vpn-route-targets grouping instead of " + " vpn-route-targets grouping instead of " +
" defining it in this module " + " defining it in this module " +
""; "";
reference ""; reference "";
skipping to change at page 24, line 15 skipping to change at page 24, line 28
description "Remote pseudowire ID"; description "Remote pseudowire ID";
} }
leaf local-id { leaf local-id {
type uint32; type uint32;
description "Local pseudowire ID"; description "Local pseudowire ID";
} }
} }
} }
} }
augment "/l2vpn:l2vpn/l2vpn:instances/l2vpn:instance" { augment "/ni:network-instances/ni:network-instance/ni:ni-type" +
"/l2vpn:l2vpn" {
description "Augment for an L2VPN instance and EVPN association"; description "Augment for an L2VPN instance and EVPN association";
leaf evpn-instance { leaf evpn-instance {
type evpn-instance-ref; type evpn-instance-ref;
description "Reference to an EVPN instance"; description "Reference to an EVPN instance";
} }
} }
augment "/l2vpn:l2vpn/l2vpn:instances/l2vpn:instance" { augment "/ni:network-instances/ni:network-instance/ni:ni-type" +
"/l2vpn:l2vpn" {
when "l2vpn:type = 'l2vpn:vpls-instance-type'" { when "l2vpn:type = 'l2vpn:vpls-instance-type'" {
description "Constraints only for VPLS pseudowires"; description "Constraints only for VPLS pseudowires";
} }
description "Augment for VPLS instance"; description "Augment for VPLS instance";
container vpls-contstraints { container vpls-contstraints {
must "not(boolean(/pw:pseudowires/pw:pseudowire" + must "not(boolean(/pw:pseudowires/pw:pseudowire" +
" [pw:name = current()/../l2vpn:endpoint" + " [pw:name = current()/../l2vpn:endpoint" +
" /l2vpn:pw/l2vpn:name]" + " /l2vpn:pw/l2vpn:name]" +
" /evpn-pw/remote-id)) and " + " /evpn-pw/remote-id)) and " +
"not(boolean(/pw:pseudowires/pw:pseudowire" + "not(boolean(/pw:pseudowires/pw:pseudowire" +
skipping to change at page 25, line 48 skipping to change at page 26, line 14
The security concerns listed above are, however, no different than The security concerns listed above are, however, no different than
faced by other routing protocols. Hence, this draft does not change faced by other routing protocols. Hence, this draft does not change
any underlying security issues inherent in [I-D.ietf-netmod-routing- any underlying security issues inherent in [I-D.ietf-netmod-routing-
cfg] cfg]
6. IANA Considerations 6. IANA Considerations
None. None.
7. References 7. References
7.1. Normative References 7.1. Normative Reference
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997. Requirement Levels", BCP 14, RFC 2119, DOI
10.17487/RFC2119, March 1997, <http://www.rfc-
editor.org/info/rfc2119>.
7.2. Informative References 7.2. Informative References
[RFC6241] R.Enns et al., "Network Configuration
Protocol (NETCONF)",
RFC 6241, June 2011
[RFC6020] M. Bjorklund, "YANG - A Data Modeling Language for [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
the Network Configuration Protocol (NETCONF)", and A. Bierman, Ed., "Network Configuration Protocol
RFC 6020, October 2010. (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
<http://www.rfc-editor.org/info/rfc6241>.
[RFC6242] M. Wasserman, "Using the NETCONF Protocol over [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for
Secure Shell (SSH)", the Network Configuration Protocol (NETCONF)", RFC 6020,
RFC 6242, June 2011. DOI 10.17487/RFC6020, October 2010, <http://www.rfc-
editor.org/info/rfc6020>.
[RFC6536] A. Bierman et al., "Network Configuration Protocol [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure
(NETCONF) Access Control Model" Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011,
RFC 6536, March 2012. <http://www.rfc-editor.org/info/rfc6242>.
[RFC7432] Sajassi et al., "BGP MPLS-Based Ethernet VPN", [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration
RFC 7432, February 2015. Protocol (NETCONF) Access Control Model", RFC 6536, DOI
10.17487/RFC6536, March 2012, <http://www.rfc-
editor.org/info/rfc6536>.
[RFC7623] Sajassi et al., "Provider Backbone Bridging [RFC7432] Sajassi, A., Ed., Aggarwal, R., Bitar, N., Isaac, A.,
Combined with Ethernet VPN (PBB-EVPN)", Uttaro, J., Drake, J., and W. Henderickx, "BGP MPLS-Based
RFC 7623, September 2015 Ethernet VPN", RFC 7432, DOI 10.17487/RFC7432, February
2015, <http://www.rfc-editor.org/info/rfc7432>.
[RFC7623] Sajassi, A., Ed., Salam, S., Bitar, N., Isaac, A., and W.
Henderickx, "Provider Backbone Bridging Combined with
Ethernet VPN (PBB-EVPN)", RFC 7623, DOI 10.17487/RFC7623,
September 2015, <http://www.rfc-editor.org/info/rfc7623>.
Authors' Addresses Authors' Addresses
Patrice Brissette Patrice Brissette
Cisco Systems, Inc. Cisco Systems, Inc.
EMail: pbrisset@cisco.com EMail: pbrisset@cisco.com
Ali Sajassi
Cisco Systems, Inc.
EMail: sajassi@cisco.com
Himanshu Shah Himanshu Shah
Ciena Corporation Ciena Corporation
EMail: hshah@ciena.com EMail: hshah@ciena.com
Zhenbin Li
Huawei Technologies
EMail: lizhenbin@huawei.com
Helen Chen Helen Chen
Jabil Jabil
EMail: Ing-Wher_Chen@jabil.com EMail: Ing-Wher_Chen@jabil.com
Kishore Tiruveedhula Kishore Tiruveedhula
Juniper Networks Juniper Networks
EMail: kishoret@juniper.net EMail: kishoret@juniper.net
Iftekar Hussain
Infinera Corporation
EMail: ihussain@infinera.com
Jorge Rabadan Jorge Rabadan
Nokia Nokia
EMail: jorge.rabadan@nokia.com EMail: jorge.rabadan@nokia.com
Ali Sajassi
Cisco Systems, Inc.
EMail: sajassi@cisco.com
Zhenbin Li
Huawei Technologies
EMail: lizhenbin@huawei.com
Iftekar Hussain
Infinera Corporation
EMail: ihussain@infinera.com
 End of changes. 57 change blocks. 
106 lines changed or deleted 125 lines changed or added

This html diff was produced by rfcdiff 1.46. The latest version is available from http://tools.ietf.org/tools/rfcdiff/