draft-ietf-bess-evpn-yang-06.txt   draft-ietf-bess-evpn-yang-07.txt 
BESS Working Group P. Brissette Ed. BESS Working Group P. Brissette Ed.
Internet Draft Cisco System Internet Draft Cisco System
Intended Status: Proposed Standard H. Shah Ed. Intended Status: Proposed Standard H. Shah Ed.
Expires: April 25, 2019 Ciena Corporation Expires: September 12, 2019 Ciena Corporation
I. Chen Ed. I. Chen Ed.
Jabil Jabil
I. Hussain Ed. I. Hussain Ed.
Infinera Corporation Infinera Corporation
K. Tiruveedhula Ed. K. Tiruveedhula Ed.
Juniper Networks Juniper Networks
J. Rabadan Ed. J. Rabadan Ed.
Nokia Nokia
October 22, 2018 March 11, 2019
Yang Data Model for EVPN Yang Data Model for EVPN
draft-ietf-bess-evpn-yang-06 draft-ietf-bess-evpn-yang-07
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 7 skipping to change at page 2, line 7
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) 2019 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
skipping to change at page 2, line 34 skipping to change at page 2, line 34
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 . . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Specification of Requirements . . . . . . . . . . . . . . . . . 3 2. Specification of Requirements . . . . . . . . . . . . . . . . . 3
3. EVPN YANG Model . . . . . . . . . . . . . . . . . . . . . . . . 4 3. EVPN YANG Model . . . . . . . . . . . . . . . . . . . . . . . . 4
3.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . 4 3.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.2 Ethernet-Segment Model . . . . . . . . . . . . . . . . . . . 4 3.2 Ethernet-Segment Model . . . . . . . . . . . . . . . . . . . 4
3.3 EVPN Model . . . . . . . . . . . . . . . . . . . . . . . . . 5 3.3 EVPN Model . . . . . . . . . . . . . . . . . . . . . . . . . 5
4. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . . . 9 4. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4.1 Ethernet Segment Yang Module . . . . . . . . . . . . . . . . 9 4.1 Ethernet Segment Yang Module . . . . . . . . . . . . . . . . 9
4.2 EVPN Yang Module . . . . . . . . . . . . . . . . . . . . . . 14 4.2 EVPN Yang Module . . . . . . . . . . . . . . . . . . . . . . 15
5. Security Considerations . . . . . . . . . . . . . . . . . . . . 25 5. Security Considerations . . . . . . . . . . . . . . . . . . . . 26
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 26 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 26
7. References . . . . . . . . . . . . . . . . . . . . . . . . . . 26 7. References . . . . . . . . . . . . . . . . . . . . . . . . . . 26
7.1. Normative Reference . . . . . . . . . . . . . . . . . . . . 26 7.1. Normative References . . . . . . . . . . . . . . . . . . . 26
7.2. Informative References . . . . . . . . . . . . . . . . . . 26 7.2. Informative References . . . . . . . . . . . . . . . . . . 27
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 27 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 27
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.
skipping to change at page 5, line 15 skipping to change at page 5, line 15
+--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* if:interface-ref | | +--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? ethernet-segment-identifier-type
+--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-targets
| +--rw route-target | rt-types:vpn-route-targets
| rt-types:route-target
| +--rw 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*
| +--ro ip-address? inet:ip-address | +--ro ip-address? inet:ip-address
+--ro df* +--ro df*
skipping to change at page 6, line 20 skipping to change at page 6, line 18
| +--rw (replication-type)? | +--rw (replication-type)?
| +--:(ingress-replication) | +--:(ingress-replication)
| | +--rw ingress-replication? boolean | | +--rw ingress-replication? boolean
| +--:(p2mp-replication) | +--:(p2mp-replication)
| +--rw p2mp-replication? boolean | +--rw p2mp-replication? boolean
+--rw evpn-instances +--rw evpn-instances
+--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:mac-address
+--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-targets
| +--rw route-target | rt-types:vpn-route-targets
| rt-types:route-target
| +--rw 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]
| | | +--ro route-distinguisher | | | +--ro route-distinguisher
| | | rt-types:route-distinguisher | | | rt-types:route-distinguisher
| | | +--ro vpn-target* [route-target] | | | +--ro vpn-targets
| | | +--ro route-target rt-types:route-target | | | rt-types:vpn-route-targets
| | +--ro ethernet-segment-identifier? uint32 | | +--ro ethernet-segment-identifier? es:ethernet-segment-identifier-type
| | +--ro ethernet-tag? uint32 | | +--ro ethernet-tag? uint32
| | +--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 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-targets
| | | +--ro route-target | | | rt-types:vpn-route-targets
| | | rt-types:route-target | | +--ro ethernet-segment-identifier? es:ethernet-segment-identifier-type
| | +--ro ethernet-segment-identifier? uint32
| | +--ro ethernet-tag? uint32 | | +--ro ethernet-tag? uint32
| | +--ro mac-address? yang:hex-string | | +--ro mac-address? yang:mac-address
| | +--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-targets
| | | +--ro route-target | | | rt-types:vpn-route-targets
| | | rt-types:route-target | | +--ro originator-ip-prefix? inet:ip-prefix
| | +--ro ethernet-segment-identifier? uint32
| | +--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-targets
| | | +--ro route-target | | | rt-types:vpn-route-targets
| | | rt-types:route-target | | +--ro ethernet-segment-identifier? es:ethernet-segment-identifier-type
| | +--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-targets
| | +--ro route-target rt-types:route-target | | rt-types:vpn-route-targets
| +--ro ethernet-segment-identifier? uint32 | +--ro ethernet-segment-identifier?
| +--ro ip-prefix? inet:ip-prefix | | es:ethernet-segment-identifier-type
| +--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? yang:zero-based-counter32
+--ro rx-count? uint32 +--ro rx-count? yang:zero-based-counter32
+--ro detail +--ro detail
+--ro broadcast-tx-count? uint32 +--ro broadcast-tx-count?
+--ro broadcast-rx-count? uint32 yang:zero-based-counter32
+--ro multicast-tx-count? uint32 +--ro broadcast-rx-count?
+--ro multicast-rx-count? uint32 yang:zero-based-counter32
+--ro unknown-unicast-tx-count? uint32 +--ro multicast-tx-count?
+--ro unknown-unicast-rx-count? uint32 yang:zero-based-counter32
+--ro multicast-rx-count?
yang:zero-based-counter32
+--ro unknown-unicast-tx-count?
yang:zero-based-counter32
+--ro unknown-unicast-rx-count?
yang:zero-based-counter32
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 augment
/ni:network-instances/ni:network-instance/ni:ni-type/l2vpn:l2vpn: /ni:network-instances/ni:network-instance/ni:ni-type/l2vpn:l2vpn:
+--rw evpn-instance? evpn-instance-ref +--rw evpn-instance? evpn-instance-ref
augment augment
/ni:network-instances/ni:network-instance/ni:ni-type/l2vpn:l2vpn: /ni:network-instances/ni:network-instance/ni:ni-type/l2vpn:l2vpn:
skipping to change at page 9, line 8 skipping to change at page 9, line 4
+--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 configuration areas: following high level configuration areas:
4.1 Ethernet Segment Yang Module 4.1 Ethernet Segment Yang Module
<CODE BEGINS> file "ietf-ethernet-segment@2018-02-20.yang" <CODE BEGINS> file "ietf-ethernet-segment@2019-03-09.yang"
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";
skipping to change at page 9, line 41 skipping to change at page 9, line 38
} }
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 "2019-03-09" {
description " - Create an ethernet-segment type and change references " +
" to ethernet-segment-identifier " +
" - Updated Route-target lists to rt-types:vpn-route-targets " +
"";
reference "";
}
revision "2018-02-20" { revision "2018-02-20" {
description " - Change the type of attachment circuit to " + description " - Change the type of attachment circuit to " +
" if:interface-ref " + " if:interface-ref " +
""; "";
reference ""; 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 " +
skipping to change at page 11, line 41 skipping to change at page 11, line 45
} }
enum preference { enum preference {
value 2; value 2;
description "The preference based method"; description "The preference based method";
reference "draft-rabadan-bess-evpn-pref-df"; reference "draft-rabadan-bess-evpn-pref-df";
} }
} }
description "The DF election method type"; description "The DF election method type";
} }
typedef ethernet-segment-identifier-type {
type yang:hex-string {
length "29";
}
description "10-octet Ethernet segment identifier (esi),
ex: 00:5a:5a:5a:5a:5a:5a:5a:5a:5a";
}
/* EVPN Ethernet Segment YANG Model */ /* EVPN Ethernet Segment YANG Model */
container ethernet-segments { container ethernet-segments {
description "ethernet-segment"; description "ethernet-segment";
list ethernet-segment { list ethernet-segment {
key "name"; key "name";
leaf name { leaf name {
type string; type string;
description "Name of the ethernet segment"; description "Name of the ethernet segment";
} }
skipping to change at page 12, line 34 skipping to change at page 12, line 45
description "Reference to a pseudowire"; description "Reference to a pseudowire";
} }
} }
} }
leaf interface-status { leaf interface-status {
type status-type; type status-type;
config false; config false;
description "interface status"; description "interface status";
} }
leaf ethernet-segment-identifier { leaf ethernet-segment-identifier {
type uint32; type ethernet-segment-identifier-type;
description "Ethernet segment identifier (esi)"; description "Ethernet segment identifier (esi)";
} }
choice active-mode { choice active-mode {
mandatory true; mandatory true;
description "Choice of active mode"; description "Choice of active mode";
case single-active { case single-active {
leaf single-active-mode { leaf single-active-mode {
type empty; type empty;
description "single-active-mode"; description "single-active-mode";
} }
skipping to change at page 14, line 17 skipping to change at page 14, line 27
type uint32; type uint32;
description "election-wait-time"; description "election-wait-time";
} }
} }
leaf ead-evi-route { leaf ead-evi-route {
type boolean; type boolean;
default false; default false;
description "Enable (true) or disable (false) ead-evi-route"; description "Enable (true) or disable (false) ead-evi-route";
} }
leaf esi-label { leaf esi-label {
type string; type rt-types:mpls-label;
config false; config false;
description "esi-label"; description "esi-label";
} }
list member { list member {
config false; config false;
leaf ip-address { leaf ip-address {
type inet:ip-address; type inet:ip-address;
description "ip-address"; description "ip-address";
} }
description "member of the ethernet segment"; description "member of the ethernet segment";
skipping to change at page 15, line 4 skipping to change at page 15, line 15
} }
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@2018-02-20.yang"
<CODE BEGINS> file "ietf-evpn@2019-03-09.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";
skipping to change at page 15, line 33 skipping to change at page 15, line 45
} }
import ietf-l2vpn { import ietf-l2vpn {
prefix "l2vpn"; prefix "l2vpn";
} }
import ietf-pseudowires { import ietf-pseudowires {
prefix "pw"; prefix "pw";
} }
import ietf-ethernet-segment {
prefix "es";
}
organization "ietf"; organization "ietf";
contact "ietf"; contact "ietf";
description "evpn"; description "evpn";
revision "2019-03-09" {
description " - Incorporated ietf-ethernet-segment model and" +
" normalised ethernet-segment entries on routes " +
" - Updated Route-target lists to rt-types:vpn-route-targets " +
"";
reference "";
}
revision "2018-02-20" { revision "2018-02-20" {
description " - Incorporated ietf-network-instance model" + description " - Incorporated ietf-network-instance model" +
" on which ietf-l2vpn is now based " + " on which ietf-l2vpn is now based " +
""; "";
reference ""; 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" +
skipping to change at page 21, line 7 skipping to change at page 21, line 32
default false; default false;
description "Enable (TRUE) or disable (FALSE) " + description "Enable (TRUE) or disable (FALSE) " +
"VPWS VLAN aware"; "VPWS VLAN aware";
} }
container routes { container routes {
config false; config false;
description "routes"; description "routes";
list ethernet-auto-discovery-route { list ethernet-auto-discovery-route {
uses route-rd-rt-grp; uses route-rd-rt-grp;
leaf ethernet-segment-identifier { leaf ethernet-segment-identifier {
type uint32; type es:ethernet-segment-identifier-type;
description "Ethernet segment identifier (esi)"; description "Ethernet segment identifier (esi)";
} }
leaf ethernet-tag { leaf ethernet-tag {
type uint32; type uint32;
description "An ethernet tag (etag) indentifying a " + description "An ethernet tag (etag) indentifying a " +
"broadcast domain"; "broadcast domain";
} }
list path { list path {
uses next-hop-label-grp; uses next-hop-label-grp;
uses path-detail-grp; uses path-detail-grp;
description "path"; description "path";
} }
description "ethernet-auto-discovery-route"; description "ethernet-auto-discovery-route";
} }
list mac-ip-advertisement-route { list mac-ip-advertisement-route {
uses route-rd-rt-grp; uses route-rd-rt-grp;
leaf ethernet-segment-identifier { leaf ethernet-segment-identifier {
type uint32; type es:ethernet-segment-identifier-type;
description "Ethernet segment identifier (esi)"; description "Ethernet segment identifier (esi)";
} }
leaf ethernet-tag { leaf ethernet-tag {
type uint32; type uint32;
description "An ethernet tag (etag) indentifying a " + description "An ethernet tag (etag) indentifying a " +
"broadcast domain"; "broadcast domain";
} }
leaf mac-address { leaf mac-address {
type yang:hex-string; type yang:mac-address;
description "Route mac address"; description "Route mac address";
} }
leaf mac-address-length { leaf mac-address-length {
type uint8 { type uint8 {
range "0..48"; range "0..48";
} }
description "mac address length"; description "mac address length";
} }
leaf ip-prefix { leaf ip-prefix {
type inet:ip-prefix; type inet:ip-prefix;
skipping to change at page 22, line 4 skipping to change at page 22, line 30
} }
leaf ip-prefix { leaf ip-prefix {
type inet:ip-prefix; type inet:ip-prefix;
description "ip-prefix"; description "ip-prefix";
} }
list path { list path {
uses next-hop-label-grp; uses next-hop-label-grp;
uses next-hop-label2-grp; uses next-hop-label2-grp;
uses path-detail-grp; uses path-detail-grp;
description "path"; description "path";
} }
description "mac-ip-advertisement-route"; description "mac-ip-advertisement-route";
} }
list inclusive-multicast-ethernet-tag-route { list inclusive-multicast-ethernet-tag-route {
uses route-rd-rt-grp; uses route-rd-rt-grp;
leaf ethernet-segment-identifier {
type uint32;
description "Ethernet segment identifier (esi)";
}
leaf originator-ip-prefix { leaf originator-ip-prefix {
type inet:ip-prefix; type inet:ip-prefix;
description "originator-ip-prefix"; description "originator-ip-prefix";
} }
list path { list path {
uses next-hop-label-grp; uses next-hop-label-grp;
uses path-detail-grp; uses path-detail-grp;
description "path"; description "path";
} }
description "inclusive-multicast-ethernet-tag-route"; description "inclusive-multicast-ethernet-tag-route";
} }
list ethernet-segment-route { list ethernet-segment-route {
uses route-rd-rt-grp; uses route-rd-rt-grp;
leaf ethernet-segment-identifier { leaf ethernet-segment-identifier {
type uint32; type es:ethernet-segment-identifier-type;
description "Ethernet segment identifier (esi)"; description "Ethernet segment identifier (esi)";
} }
leaf originator-ip-prefix { leaf originator-ip-prefix {
type inet:ip-prefix; type inet:ip-prefix;
description "originator ip-prefix"; description "originator ip-prefix";
} }
list path { list path {
leaf next-hop { leaf next-hop {
type inet:ip-address; type inet:ip-address;
description "next-hop"; description "next-hop";
} }
uses path-detail-grp; uses path-detail-grp;
description "path"; description "path";
} }
description "ethernet-segment-route"; description "ethernet-segment-route";
} }
list ip-prefix-route { list ip-prefix-route {
uses route-rd-rt-grp; uses route-rd-rt-grp;
leaf ethernet-segment-identifier { leaf ethernet-segment-identifier {
type uint32; type es:ethernet-segment-identifier-type;
description "Ethernet segment identifier (esi)"; description "Ethernet segment identifier (esi)";
} }
leaf ip-prefix { leaf ip-prefix {
type inet:ip-prefix; type inet:ip-prefix;
description "ip-prefix"; description "ip-prefix";
} }
list path { list path {
uses next-hop-label-grp; uses next-hop-label-grp;
uses path-detail-grp; uses path-detail-grp;
description "path"; description "path";
} }
description "ip-prefix route"; description "ip-prefix route";
} }
} }
container statistics { container statistics {
config false; config false;
description "Statistics"; description "Statistics";
leaf tx-count { leaf tx-count {
type uint32; type yang:zero-based-counter32;
description "transmission count"; description "transmission count";
} }
leaf rx-count { leaf rx-count {
type uint32; type yang:zero-based-counter32;
description "receive count"; description "receive count";
} }
container detail { container detail {
description "Detailed statistics"; description "Detailed statistics";
leaf broadcast-tx-count { leaf broadcast-tx-count {
type uint32; type yang:zero-based-counter32;
description "broadcast transmission count"; description "broadcast transmission count";
} }
leaf broadcast-rx-count { leaf broadcast-rx-count {
type uint32; type yang:zero-based-counter32;
description "broadcast receive count"; description "broadcast receive count";
} }
leaf multicast-tx-count { leaf multicast-tx-count {
type uint32; type yang:zero-based-counter32;
description "multicast transmission count"; description "multicast transmission count";
} }
leaf multicast-rx-count { leaf multicast-rx-count {
type uint32; type yang:zero-based-counter32;
description "multicast receive count"; description "multicast receive count";
} }
leaf unknown-unicast-tx-count { leaf unknown-unicast-tx-count {
type uint32; type yang:zero-based-counter32;
description "unknown unicast transmission count"; description "unknown unicast transmission count";
} }
leaf unknown-unicast-rx-count { leaf unknown-unicast-rx-count {
type uint32; type yang:zero-based-counter32;
description "unknown-unicast receive count"; description "unknown-unicast receive count";
} }
} }
} }
} }
} }
} }
/* augments */ /* augments */
augment "/pw:pseudowires/pw:pseudowire/pw:pw-type" { augment "/pw:pseudowires/pw:pseudowire/pw:pw-type" {
description "Augment for an L2VPN instance to add EVPN VPWS " + description "Augment for an L2VPN instance to add EVPN VPWS " +
"pseudowire"; "pseudowire";
skipping to change at page 26, line 18 skipping to change at page 26, line 39
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 Reference 7.1. Normative References
[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, DOI Requirement Levels", BCP 14, RFC 2119, DOI
10.17487/RFC2119, March 1997, <https://www.rfc- 10.17487/RFC2119, March 1997, <https://www.rfc-
editor.org/info/rfc2119>. editor.org/info/rfc2119>.
[RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types",
RFC 6991, DOI 10.17487/RFC6991, July 2013,
<https://www.rfc-editor.org/info/rfc6991>.
[RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger,
"Common YANG Data Types for the Routing Area", RFC 8294,
DOI 10.17487/RFC8294, December 2017, <https://www.rfc-
editor.org/info/rfc8294>.
7.2. Informative References 7.2. Informative References
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
and A. Bierman, Ed., "Network Configuration Protocol and A. Bierman, Ed., "Network Configuration Protocol
(NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
<https://www.rfc-editor.org/info/rfc6241>. <https://www.rfc-editor.org/info/rfc6241>.
[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for
the Network Configuration Protocol (NETCONF)", RFC 6020, the Network Configuration Protocol (NETCONF)", RFC 6020,
DOI 10.17487/RFC6020, October 2010, <https://www.rfc- DOI 10.17487/RFC6020, October 2010, <https://www.rfc-
 End of changes. 48 change blocks. 
76 lines changed or deleted 105 lines changed or added

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