draft-ietf-netmod-sub-intf-vlan-model-01.txt   draft-ietf-netmod-sub-intf-vlan-model-02.txt 
Internet Engineering Task Force R. Wilton, Ed. Internet Engineering Task Force R. Wilton, Ed.
Internet-Draft D. Ball Internet-Draft D. Ball
Intended status: Informational T. Singh Intended status: Informational T. Singh
Expires: September 14, 2017 Cisco Systems Expires: January 4, 2018 Cisco Systems
S. Sivaraj S. Sivaraj
Juniper Networks Juniper Networks
March 13, 2017 July 3, 2017
Sub-interface VLAN YANG Data Models Sub-interface VLAN YANG Data Models
draft-ietf-netmod-sub-intf-vlan-model-01 draft-ietf-netmod-sub-intf-vlan-model-02
Abstract Abstract
This document defines YANG modules to add support for classifying This document defines YANG modules to add support for classifying
traffic received on interfaces as Ethernet/VLAN framed packets to traffic received on interfaces as Ethernet/VLAN framed packets to
sub-interfaces based on the fields available in the Ethernet/VLAN sub-interfaces based on the fields available in the Ethernet/VLAN
frame headers. These modules allow configuration of Layer 3 and frame headers. These modules allow configuration of Layer 3 and
Layer 2 sub-interfaces (e.g. attachment circuits) that can Layer 2 sub-interfaces (e.g. attachment circuits) that can
interoperate with IETF based forwarding protocols; such as IP and interoperate with IETF based forwarding protocols; such as IP and
L3VPN services; or L2VPN services like VPWS, VPLS, and EVPN. The L3VPN services; or L2VPN services like VPWS, VPLS, and EVPN. The
skipping to change at page 1, line 49 skipping to change at page 1, line 49
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
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."
This Internet-Draft will expire on September 14, 2017. This Internet-Draft will expire on January 4, 2018.
Copyright Notice Copyright Notice
Copyright (c) 2017 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
skipping to change at page 2, line 30 skipping to change at page 2, line 30
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3
1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 4 1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 4
2. Objectives . . . . . . . . . . . . . . . . . . . . . . . . . 4 2. Objectives . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1. Interoperability with IEEE 802.1Q compliant bridges . . . 4 2.1. Interoperability with IEEE 802.1Q compliant bridges . . . 4
2.2. Extensibility . . . . . . . . . . . . . . . . . . . . . . 4 2.2. Extensibility . . . . . . . . . . . . . . . . . . . . . . 4
3. L3 Interface VLAN Model . . . . . . . . . . . . . . . . . . . 5 3. L3 Interface VLAN Model . . . . . . . . . . . . . . . . . . . 5
4. Flexible Encapsulation Model . . . . . . . . . . . . . . . . 5 4. Flexible Encapsulation Model . . . . . . . . . . . . . . . . 5
5. L3 Interface VLAN YANG Module . . . . . . . . . . . . . . . . 7 5. L3 Interface VLAN YANG Module . . . . . . . . . . . . . . . . 8
6. Flexible Encapsulation YANG Module . . . . . . . . . . . . . 10 6. Flexible Encapsulation YANG Module . . . . . . . . . . . . . 11
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 19 7. Open Issues . . . . . . . . . . . . . . . . . . . . . . . . . 19
8. ChangeLog . . . . . . . . . . . . . . . . . . . . . . . . . . 19 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 20
8.1. WG version -01 . . . . . . . . . . . . . . . . . . . . . 19 9. ChangeLog . . . . . . . . . . . . . . . . . . . . . . . . . . 20
8.2. Version -04 . . . . . . . . . . . . . . . . . . . . . . . 20 9.1. WG version -02 . . . . . . . . . . . . . . . . . . . . . 20
8.3. Version -03 . . . . . . . . . . . . . . . . . . . . . . . 20 9.2. WG version -01 . . . . . . . . . . . . . . . . . . . . . 20
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 20 9.3. Version -04 . . . . . . . . . . . . . . . . . . . . . . . 20
10. Security Considerations . . . . . . . . . . . . . . . . . . . 20 9.4. Version -03 . . . . . . . . . . . . . . . . . . . . . . . 20
10.1. if-l3-vlan.yang . . . . . . . . . . . . . . . . . . . . 21 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 21
10.2. flexible-encapsulation.yang . . . . . . . . . . . . . . 21 11. Security Considerations . . . . . . . . . . . . . . . . . . . 21
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 23 11.1. if-l3-vlan.yang . . . . . . . . . . . . . . . . . . . . 21
11.1. Normative References . . . . . . . . . . . . . . . . . . 23 11.2. flexible-encapsulation.yang . . . . . . . . . . . . . . 22
11.2. Informative References . . . . . . . . . . . . . . . . . 23 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 24
Appendix A. Comparison with the IEEE 802.1Q Configuration Model 24 12.1. Normative References . . . . . . . . . . . . . . . . . . 24
A.1. Sub-interface based configuration model overview . . . . 24 12.2. Informative References . . . . . . . . . . . . . . . . . 24
A.2. IEEE 802.1Q Bridge Configuration Model Overview . . . . . 25 Appendix A. Comparison with the IEEE 802.1Q Configuration Model 25
A.1. Sub-interface based configuration model overview . . . . 25
A.2. IEEE 802.1Q Bridge Configuration Model Overview . . . . . 26
A.3. Possible Overlap Between the Two Models . . . . . . . . . 26 A.3. Possible Overlap Between the Two Models . . . . . . . . . 26
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 26 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 27
1. Introduction 1. Introduction
This document defines two YANG [RFC7950] modules that augment the This document defines two YANG [RFC7950] modules that augment the
encapsulation choice YANG element defined in Interface Extensions encapsulation choice YANG element defined in Interface Extensions
YANG [I-D.ietf-netmod-intf-ext-yang] and the generic interfaces data YANG [I-D.ietf-netmod-intf-ext-yang] and the generic interfaces data
model defined in [RFC7223]. The two modules provide configuration model defined in [RFC7223]. The two modules provide configuration
nodes to support classification of Ethernet/VLAN traffic to sub- nodes to support classification of Ethernet/VLAN traffic to sub-
interfaces, that can have interface based feature and service interfaces, that can have interface based feature and service
configuration applied to them. configuration applied to them.
skipping to change at page 4, line 30 skipping to change at page 4, line 30
marked with a colon (":"). marked with a colon (":").
o Ellipsis ("...") stands for contents of subtrees that are not o Ellipsis ("...") stands for contents of subtrees that are not
shown. shown.
2. Objectives 2. Objectives
The primary aim of the YANG modules contained in this draft is to The primary aim of the YANG modules contained in this draft is to
provide the core model that is required to implement VLAN transport provide the core model that is required to implement VLAN transport
services on router based devices that is fully compatible with IEEE services on router based devices that is fully compatible with IEEE
802.1Q complaint bridges. 802.1Q compliant bridges.
A secondary aim is for the modules to be structured in such a way A secondary aim is for the modules to be structured in such a way
that they can be cleanly extended in future. that they can be cleanly extended in future.
2.1. Interoperability with IEEE 802.1Q compliant bridges 2.1. Interoperability with IEEE 802.1Q compliant bridges
The modules defined in this document are designed to fully The modules defined in this document are designed to fully
interoperate with IEEE 802.1Q compliant bridges. In particular, the interoperate with IEEE 802.1Q compliant bridges. In particular, the
models are restricted to only matching, adding, or rewriting the models are restricted to only matching, adding, or rewriting the
802.1Q VLAN tags in frames in ways that are compatible with IEEE 802.1Q VLAN tags in frames in ways that are compatible with IEEE
skipping to change at page 5, line 20 skipping to change at page 5, line 20
The L3 Interface VLAN model provides appropriate leaves for The L3 Interface VLAN model provides appropriate leaves for
termination of an 802.1Q VLAN tagged segment to a sub-interface based termination of an 802.1Q VLAN tagged segment to a sub-interface based
L3 service. It allows for termination of traffic with up to two L3 service. It allows for termination of traffic with up to two
802.1Q VLAN tags. 802.1Q VLAN tags.
The "if-l3-vlan" YANG module has the following structure: The "if-l3-vlan" YANG module has the following structure:
module: ietf-if-l3-vlan module: ietf-if-l3-vlan
augment /if:interfaces/if:interface/if-cmn:encapsulation/ augment /if:interfaces/if:interface/if-cmn:encapsulation/
if-cmn:encaps-type: if-cmn:encaps-type:
+--:(vlan) +--:(dot1q-vlan)
+--rw vlan +--rw dot1q-vlan
+--rw tag* [index] +--rw outer-tag!
+--rw index uint8 | +--rw dot1q-tag
| +--rw tag-type dot1q-tag-type
| +--rw vlan-id ieee:vlanid
+--rw second-tag!
+--rw dot1q-tag +--rw dot1q-tag
+--rw tag-type dot1q-tag-type +--rw tag-type dot1q-tag-type
+--rw vlan-id ieee:vlanid +--rw vlan-id ieee:vlanid
4. Flexible Encapsulation Model 4. Flexible Encapsulation Model
The Flexible Encapsulation model is designed to allow for the The Flexible Encapsulation model is designed to allow for the
flexible provisioning of layer 2 services. It provides the flexible provisioning of layer 2 services. It provides the
capability to classify Ethernet/VLAN frames received on an Ethernet capability to classify Ethernet/VLAN frames received on an Ethernet
trunk interface to sub-interfaces based on the fields available in trunk interface to sub-interfaces based on the fields available in
skipping to change at page 6, line 25 skipping to change at page 6, line 28
header, such as matching on the source or destination MAC address, header, such as matching on the source or destination MAC address,
PCP or DEI fields in the 802.1Q tags, or the EtherType of the frame PCP or DEI fields in the 802.1Q tags, or the EtherType of the frame
payload. Rewrites can also be extended to allow for modification of payload. Rewrites can also be extended to allow for modification of
other fields within the layer 2 frame header. other fields within the layer 2 frame header.
The "flexible-encapsulation" YANG module has the following structure: The "flexible-encapsulation" YANG module has the following structure:
module: ietf-flexible-encapsulation module: ietf-flexible-encapsulation
augment /if:interfaces/if:interface/if-cmn:encapsulation/ augment /if:interfaces/if:interface/if-cmn:encapsulation/
if-cmn:encaps-type: if-cmn:encaps-type:
+--:(flexible) {flexible-encapsulation-rewrites}? +--:(flexible)
+--rw flexible +--rw flexible
+--rw match +--rw match
| +--rw (match-type) | +--rw (match-type)
| +--:(default) | +--:(default)
| | +--rw default? empty | | +--rw default? empty
| +--:(untagged) | +--:(untagged)
| | +--rw untagged? empty | | +--rw untagged? empty
| +--:(priority-tagged) | +--:(dot1q-priority-tagged)
| | +--rw priority-tagged | | +--rw dot1q-priority-tagged
| | +--rw tag-type? dot1q-types:dot1q-tag-type | | +--rw tag-type? dot1q-types:dot1q-tag-type
| +--:(vlan-tagged) | +--:(dot1q-vlan-tagged)
| +--rw vlan-tagged | +--rw dot1q-vlan-tagged
| +--rw tag* [index] | +--rw outer-tag!
| | +--rw index uint8 | | +--rw dot1q-tag
| | +--rw tag-type dot1q-tag-type
| | +--rw vlan-id union
| +--rw second-tag!
| | +--rw dot1q-tag | | +--rw dot1q-tag
| | +--rw tag-type dot1q-tag-type | | +--rw tag-type dot1q-tag-type
| | +--rw vlan-id union | | +--rw vlan-id union
| +--rw match-exact-tags? empty | +--rw match-exact-tags? empty
+--rw rewrite {flexible-rewrites}? +--rw rewrite {flexible-rewrites}?
+--rw (direction)? | +--rw (direction)?
+--:(symmetrical) | +--:(symmetrical)
| +--rw symmetrical | | +--rw symmetrical
| +--rw tag-rewrite {tag-rewrites}? | | +--rw dot1q-tag-rewrite {dot1q-tag-rewrites}?
| +--rw pop-tags? uint8 | | +--rw pop-tags? uint8
| +--rw push-tag* [index] | | +--rw push-tags
| +--rw index uint8 | | +--rw outer-tag!
| +--rw dot1q-tag | | | +--rw dot1q-tag
| +--rw tag-type dot1q-tag-type | | | +--rw tag-type dot1q-tag-type
| +--rw vlan-id ieee:vlanid | | | +--rw vlan-id ieee:vlanid
+--:(asymmetrical) {asymmetric-rewrites}? | | +--rw second-tag!
+--rw ingress | | +--rw dot1q-tag
| +--rw tag-rewrite {tag-rewrites}? | | +--rw tag-type dot1q-tag-type
| +--rw pop-tags? uint8 | | +--rw vlan-id ieee:vlanid
| +--rw push-tag* [index] | +--:(asymmetrical) {asymmetric-rewrites}?
| +--rw index uint8 | +--rw ingress
| +--rw dot1q-tag | | +--rw dot1q-tag-rewrite {dot1q-tag-rewrites}?
| +--rw tag-type dot1q-tag-type | | +--rw pop-tags? uint8
| +--rw vlan-id ieee:vlanid | | +--rw push-tags
+--rw egress | | +--rw outer-tag!
+--rw tag-rewrite {tag-rewrites}? | | | +--rw dot1q-tag
+--rw pop-tags? uint8 | | | +--rw tag-type dot1q-tag-type
+--rw push-tag* [index] | | | +--rw vlan-id ieee:vlanid
+--rw index uint8 | | +--rw second-tag!
+--rw dot1q-tag | | +--rw dot1q-tag
+--rw tag-type dot1q-tag-type | | +--rw tag-type dot1q-tag-type
+--rw vlan-id ieee:vlanid | | +--rw vlan-id ieee:vlanid
augment /if:interfaces/if:interface: | +--rw egress
+--rw flexible-encapsulation | +--rw dot1q-tag-rewrite {dot1q-tag-rewrites}?
+--rw local-traffic-default-encaps | +--rw pop-tags? uint8
+--rw tag* [index] | +--rw push-tags
+--rw index uint8 | +--rw outer-tag!
+--rw dot1q-tag | | +--rw dot1q-tag
+--rw tag-type dot1q-tag-type | | +--rw tag-type dot1q-tag-type
+--rw vlan-id ieee:vlanid | | +--rw vlan-id ieee:vlanid
| +--rw second-tag!
| +--rw dot1q-tag
| +--rw tag-type dot1q-tag-type
| +--rw vlan-id ieee:vlanid
+--rw local-traffic-default-encaps!
+--rw outer-tag!
| +--rw dot1q-tag
| +--rw tag-type dot1q-tag-type
| +--rw vlan-id ieee:vlanid
+--rw second-tag!
+--rw dot1q-tag
+--rw tag-type dot1q-tag-type
+--rw vlan-id ieee:vlanid
5. L3 Interface VLAN YANG Module 5. L3 Interface VLAN YANG Module
This YANG module augments the encapsultion container defined in This YANG module augments the encapsultion container defined in
Interface Extensions YANG [I-D.ietf-netmod-intf-ext-yang]. Interface Extensions YANG [I-D.ietf-netmod-intf-ext-yang].
<CODE BEGINS> file "ietf-if-l3-vlan@2017-03-13.yang" <CODE BEGINS> file "ietf-if-l3-vlan@2017-07-03.yang"
module ietf-if-l3-vlan { module ietf-if-l3-vlan {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-if-l3-vlan"; namespace "urn:ietf:params:xml:ns:yang:ietf-if-l3-vlan";
prefix if-l3-vlan; prefix if-l3-vlan;
import ietf-interfaces { import ietf-interfaces {
prefix if; prefix if;
} }
skipping to change at page 8, line 35 skipping to change at page 9, line 5
WG Chair: Kent Watsen WG Chair: Kent Watsen
<mailto:kwatsen@juniper.net> <mailto:kwatsen@juniper.net>
Editor: Robert Wilton Editor: Robert Wilton
<mailto:rwilton@cisco.com>"; <mailto:rwilton@cisco.com>";
description description
"This YANG module models L3 VLAN sub-interfaces"; "This YANG module models L3 VLAN sub-interfaces";
revision 2017-03-13 { revision 2017-07-03 {
description "Latest draft revision"; description "Latest draft revision";
reference reference
"Internet-Draft draft-ietf-netmod-sub-intf-vlan-model-01"; "Internet-Draft draft-ietf-netmod-sub-intf-vlan-model-02";
} }
/* /*
* Add support for the 802.1Q VLAN encapsulation syntax on layer 3 * Add support for the 802.1Q VLAN encapsulation syntax on layer 3
* terminated VLAN sub-interfaces. * terminated VLAN sub-interfaces.
*/ */
augment "/if:interfaces/if:interface/if-cmn:encapsulation/" + augment "/if:interfaces/if:interface/if-cmn:encapsulation/" +
"if-cmn:encaps-type" { "if-cmn:encaps-type" {
when "../if:type = 'ianaift:l2vlan' and when
derived-from-or-self(../if-cmn:forwarding-mode, "derived-from-or-self(../if:type,
'if-cmn:network-layer')" { 'ianaift:ethernetCsmacd') or
derived-from-or-self(../if:type,
'ianaift:ieee8023adLag') or
derived-from-or-self(../if:type,
'if-cmn:ethSubInterface')" {
description description
"Applies only to VLAN sub-interfaces that are operating at "Applies only to Ethernet-like interfaces and
layer 3"; sub-interfaces";
} }
description description
"Augment the generic interface encapsulation with an "Augment the generic interface encapsulation with an
encapsulation for layer 3 VLAN sub-interfaces"; basic 802.1Q VLAN encapsulation for sub-interfaces.";
/* /*
* Matches a VLAN, or pair of VLAN Ids to classify traffic * Matches a single VLAN Id, or pair of VLAN Ids to classify
* into an L3 service. * traffic into an L3 service.
*/ */
case vlan { case dot1q-vlan {
container vlan { container dot1q-vlan {
description must
"Match VLAN tagged frames with specific VLAN Ids"; 'count(../../if-cmn:forwarding-mode) = 0 or ' +
list tag { 'derived-from-or-self(../../if-cmn:forwarding-mode,' +
must 'index != 0 or ' + '"if-cmn:layer-3-forwarding")' {
'count(../tag/index) != 2 or ' +
'dot1q-tag/tag-type = "s-vlan"' {
error-message error-message
"When matching two tags, the outer tag must be of "If the interface forwarding-mode leaf is set then it
S-VLAN tag type"; must be set to an identity that derives from
description layer-3-forwarding";
"For IEEE 802.1Q interoperability, when matching two
tags, it is required that the outer tag is an S-VLAN,
and the inner tag is a C-VLAN";
}
must 'index != 1 or ' +
'count(../tag/index) != 2 or ' +
'dot1q-tag/tag-type = "c-vlan"' {
error-message
"When matching two tags, the inner tag must be of
C-VLAN tag type";
description description
"For IEEE 802.1Q interoperability, when matching two "The forwarding-mode leaf on an interface can
tags, it is required that the outer tag is an S-VLAN, optionally be used to enforce consistency of
and the inner tag is a C-VLAN"; configuration";
} }
key "index"; description
min-elements 1; "Match VLAN tagged frames with specific VLAN Ids";
max-elements 2; container outer-tag {
presence "The outermost VLAN tag exists";
description description
"The tags to match, with the outermost tag to match with "Classifies traffic using the outermost VLAN tag on the
index 0"; frame.";
leaf index {
type uint8 {
range "0..1";
}
/* uses dot1q-types:dot1q-tag-classifier-grouping;
* Only allow matching on an inner tag (at index 1), if }
* also matching on the outer tag at the same time.
*/ container second-tag {
must ". = 0 or must
count(../../tag[index = 0]/index) > 0" { '../outer-tag/dot1q-tag/tag-type = "s-vlan" and ' +
error-message 'dot1q-tag/tag-type = "c-vlan"' {
"An inner tag can only be matched on when also
matching on an outer tag"; error-message
description "When matching two tags, the outermost tag must be
"Only allow matching on an inner tag, if also specified and of S-VLAN type and the second outermost
matching on the outer tag at the same time"; tag must be of C-VLAN tag type";
}
description description
"The index into the tag stack, outermost tag first"; "For IEEE 802.1Q interoperability, when matching two
tags, it is required that the outermost tag exists and
is an S-VLAN, and the second outermost tag is a
C-VLAN";
} }
presence "The second outermost VLAN tag exists";
description
"Classifies traffic using the second outermost VLAN tag
on the frame.";
uses dot1q-types:dot1q-tag-classifier-grouping; uses dot1q-types:dot1q-tag-classifier-grouping;
} }
} }
} }
} }
} }
<CODE ENDS> <CODE ENDS>
6. Flexible Encapsulation YANG Module 6. Flexible Encapsulation YANG Module
This YANG module augments the encapsultion container defined in This YANG module augments the encapsultion container defined in
Interface Extensions YANG [I-D.ietf-netmod-intf-ext-yang]. Interface Extensions YANG [I-D.ietf-netmod-intf-ext-yang].
This YANG module also augments the interface container defined in This YANG module also augments the interface container defined in
[RFC7223]. [RFC7223].
<CODE BEGINS> file "ietf-flexible-encapsulation@2017-03-13.yang" <CODE BEGINS> file "ietf-flexible-encapsulation@2017-07-03.yang"
module ietf-flexible-encapsulation { module ietf-flexible-encapsulation {
yang-version 1.1; yang-version 1.1;
namespace namespace
"urn:ietf:params:xml:ns:yang:ietf-flexible-encapsulation"; "urn:ietf:params:xml:ns:yang:ietf-flexible-encapsulation";
prefix flex; prefix flex;
import ietf-interfaces { import ietf-interfaces {
prefix if; prefix if;
} }
import iana-if-type {
prefix ianaift;
}
import ietf-interfaces-common { import ietf-interfaces-common {
prefix if-cmn; prefix if-cmn;
} }
import ieee802-dot1q-types { import ieee802-dot1q-types {
prefix dot1q-types; prefix dot1q-types;
} }
organization organization
"IETF NETMOD (NETCONF Data Modeling Language) Working Group"; "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
skipping to change at page 11, line 36 skipping to change at page 12, line 10
WG Chair: Kent Watsen WG Chair: Kent Watsen
<mailto:kwatsen@juniper.net> <mailto:kwatsen@juniper.net>
Editor: Robert Wilton Editor: Robert Wilton
<mailto:rwilton@cisco.com>"; <mailto:rwilton@cisco.com>";
description description
"This YANG module describes interface configuration for flexible "This YANG module describes interface configuration for flexible
VLAN matches and rewrites."; VLAN matches and rewrites.";
revision 2017-03-13 { revision 2017-07-03 {
description "Latest draft revision"; description "Latest draft revision";
reference reference
"Internet-Draft draft-ietf-netmod-sub-intf-vlan-model-01"; "Internet-Draft draft-ietf-netmod-sub-intf-vlan-model-02";
}
feature flexible-encapsulation-rewrites {
description
"This feature indicates whether the network element supports
flexible Ethernet encapsulation that allows for matching VLAN
ranges and performing independent tag manipulations";
} }
feature flexible-rewrites { feature flexible-rewrites {
description description
"This feature indicates whether the network element supports "This feature indicates whether the network element supports
specifying flexible rewrite operations"; specifying flexible rewrite operations";
} }
feature asymmetric-rewrites { feature asymmetric-rewrites {
description description
"This feature indicates whether the network element supports "This feature indicates whether the network element supports
specifying different rewrite operations for the ingress specifying different rewrite operations for the ingress
rewrite operation and egress rewrite operation."; rewrite operation and egress rewrite operation.";
} }
feature tag-rewrites { feature dot1q-tag-rewrites {
description description
"This feature indicates whether the network element supports "This feature indicates whether the network element supports
the flexible rewrite functionality specifying flexible tag the flexible rewrite functionality specifying flexible 802.1Q
rewrites"; tag rewrites";
} }
/* /*
* flexible-match grouping. * flexible-match grouping.
* *
* This grouping represents a flexible match. * This grouping represents a flexible match.
* *
* The rules for a flexible match are: * The rules for a flexible match are:
* 1. default, untagged, priority tag, or a stack of tags. * 1. default, untagged, priority tag, or a stack of tags.
* - Each tag in the stack of tags matches: * - Each tag in the stack of tags matches:
skipping to change at page 13, line 16 skipping to change at page 13, line 30
case untagged { case untagged {
description "Match untagged Ethernet frames only"; description "Match untagged Ethernet frames only";
leaf untagged { leaf untagged {
type empty; type empty;
description description
"Untagged match. Matches all untagged traffic."; "Untagged match. Matches all untagged traffic.";
} // leaf untagged } // leaf untagged
} // case untagged } // case untagged
case priority-tagged { case dot1q-priority-tagged {
description "Match priority tagged Ethernet frames only"; description
"Match 802.1Q priority tagged Ethernet frames only";
container priority-tagged { container dot1q-priority-tagged {
description "Priority tag match"; description "802.1Q priority tag match";
leaf tag-type { leaf tag-type {
type dot1q-types:dot1q-tag-type; type dot1q-types:dot1q-tag-type;
description "The 802.1Q tag type of matched priority description "The 802.1Q tag type of matched priority
tagged packets"; tagged packets";
} }
} }
} }
case vlan-tagged { case dot1q-vlan-tagged {
container vlan-tagged { container dot1q-vlan-tagged {
description "Matches VLAN tagged frames"; description "Matches VLAN tagged frames";
list tag {
must 'index != 0 or ' +
'count(../tag/index) != 2 or ' +
'dot1q-tag/tag-type = "s-vlan"' {
error-message
"When matching two tags, the outer tag must be of
S-VLAN tag type";
description
"For IEEE 802.1Q interoperability, when matching two
tags, it is required that the outer tag is an
S-VLAN, and the inner tag is a C-VLAN";
}
must 'index != 1 or ' + container outer-tag {
'count(../tag/index) != 2 or ' + presence "The outermost VLAN tag exists";
'dot1q-tag/tag-type = "c-vlan"' {
description
"Classifies traffic using the outermost VLAN tag on the
frame.";
uses
'dot1q-types:'+
'dot1q-tag-ranges-or-any-classifier-grouping';
}
container second-tag {
must
'../outer-tag/dot1q-tag/tag-type = "s-vlan" and ' +
'dot1q-tag/tag-type = "c-vlan"' {
error-message error-message
"When matching two tags, the inner tag must be of "When matching two tags, the outermost tag must be
C-VLAN tag type"; specified and of S-VLAN type and the second
outermost tag must be of C-VLAN tag type";
description description
"For IEEE 802.1Q interoperability, when matching two "For IEEE 802.1Q interoperability, when matching two
tags, it is required that the outer tag is an tags, it is required that the outermost tag exists
S-VLAN, and the inner tag is a C-VLAN"; and is an S-VLAN, and the second outermost tag is a
C-VLAN";
} }
key "index"; presence "The second outermost VLAN tag exists";
min-elements 1;
max-elements 2;
description "The tags to match, with the outermost tag to
match assigned index 0";
leaf index {
type uint8 {
range "0..1";
}
must ". = 0 or description
count(../../tag[index = 0]/index) > 0" { "Classifies traffic using the second outermost VLAN tag
error-message "An inner tag can only be matched on on the frame.";
when also matching on an outer tag";
description "Only allow matching on an inner tag, if
also matching on the outer tags at the
same time";
}
description
"The index into the tag stack, outermost tag first";
}
uses uses
'dot1q-types:'+ 'dot1q-types:'+
'dot1q-tag-ranges-or-any-classifier-grouping'; 'dot1q-tag-ranges-or-any-classifier-grouping';
} }
leaf match-exact-tags { leaf match-exact-tags {
type empty; type empty;
description description
"If set, indicates that all 802.1Q VLAN tags in the "If set, indicates that all 802.1Q VLAN tags in the
skipping to change at page 14, line 47 skipping to change at page 15, line 4
description description
"If set, indicates that all 802.1Q VLAN tags in the "If set, indicates that all 802.1Q VLAN tags in the
Ethernet frame header must be explicitly matched, i.e. Ethernet frame header must be explicitly matched, i.e.
the EtherType following the matched tags must not be a the EtherType following the matched tags must not be a
802.1Q tag EtherType. If unset then extra 802.1Q VLAN 802.1Q tag EtherType. If unset then extra 802.1Q VLAN
tags are allowed."; tags are allowed.";
} }
} }
} }
} // encaps-type } // encaps-type
} }
/* /*
* Grouping for tag-rewrite that can be expressed either * Grouping for tag-rewrite that can be expressed either
* symmetrically, or in the ingress and/or egress directions * symmetrically, or in the ingress and/or egress directions
* independently. * independently.
*/ */
grouping tag-rewrite { grouping dot1q-tag-rewrite {
description "Flexible rewrite"; description "Flexible rewrite";
leaf pop-tags { leaf pop-tags {
type uint8 { type uint8 {
range 1..2; range 1..2;
} }
description "The number of tags to pop (or translate if used in description "The number of tags to pop (or translate if used in
conjunction with push-tags)"; conjunction with push-tags)";
} }
list push-tag { container push-tags {
must 'index != 0 or ' + description "The 802.1Q tags to push (or translate if used in
'count(../push-tag/index) != 2 or ' + conjunction with pop-tags)";
'dot1q-tag/tag-type = "s-vlan"' {
error-message container outer-tag {
"When pushing two tags, the outer tag must be of presence
S-VLAN tag type"; "Indicates existence of the outermost VLAN tag to
description push/rewrite";
"For IEEE 802.1Q interoperability, when pushing two
tags, it is required that the outer tag is an
S-VLAN, and the inner tag is a C-VLAN";
}
must 'index != 1 or ' +
'count(../push-tag/index) != 2 or ' +
'dot1q-tag/tag-type = "c-vlan"' {
error-message
"When pushing two tags, the inner tag must be of
C-VLAN tag type";
description description
"For IEEE 802.1Q interoperability, when pushing two "The outermost VLAN tag to push onto the frame.";
tags, it is required that the outer tag is an
S-VLAN, and the inner tag is a C-VLAN"; uses dot1q-types:dot1q-tag-classifier-grouping;
} }
key "index"; container second-tag {
max-elements 2; must
description "The number of tags to push (or translate if used '../outer-tag/dot1q-tag/tag-type = "s-vlan" and ' +
in conjunction with pop-tags)"; 'dot1q-tag/tag-type = "c-vlan"' {
/*
* Server should order by increasing index. error-message
*/ "When pushing/rewriting two tags, the outermost tag must be
leaf index { specified and of S-VLAN type and the second outermost tag
type uint8 { must be of C-VLAN tag type";
range 0..1;
} description
/* "For IEEE 802.1Q interoperability, when pushing two tags,
* Only allow a push of an inner tag if an outer tag is also it is required that the outermost tag exists and is an
* being pushed. S-VLAN, and the second outermost tag is a C-VLAN";
*/
must ". != 0 or
count(../../push-tag[index = 0]/index) > 0" {
error-message "An inner tag can only be pushed if an outer
tag is also specified";
description "Only allow a push of an inner tag if an outer
tag is also being pushed";
} }
presence
"Indicates existence of a second outermost VLAN tag to
push/rewrite.";
description "The index into the tag stack"; description
} "The second outermost VLAN tag to push onto the frame.";
uses dot1q-types:dot1q-tag-classifier-grouping; uses dot1q-types:dot1q-tag-classifier-grouping;
}
} }
} }
/* /*
* Grouping for all flexible rewrites of fields in the L2 header. * Grouping for all flexible rewrites of fields in the L2 header.
* *
* This currently only includes flexible tag rewrites, but is * This currently only includes flexible tag rewrites, but is
* designed to be extensible to cover rewrites of other fields in * designed to be extensible to cover rewrites of other fields in
* the L2 header if required. * the L2 header if required.
*/ */
grouping flexible-rewrite { grouping flexible-rewrite {
description "Flexible rewrite"; description "Flexible rewrite";
/* /*
* Tag rewrite. * Tag rewrite.
* *
* All tag rewrites are formed using a combination of pop-tags * All tag rewrites are formed using a combination of pop-tags
* and push-tags operations. * and push-tags operations.
*/ */
container tag-rewrite { container dot1q-tag-rewrite {
if-feature tag-rewrites; if-feature dot1q-tag-rewrites;
description "Tag rewrite. Translate operations are expressed description "Tag rewrite. Translate operations are expressed
as a combination of tag push and pop operations."; as a combination of tag push and pop operations.";
uses tag-rewrite; uses dot1q-tag-rewrite;
} }
} }
augment "/if:interfaces/if:interface/if-cmn:encapsulation/" + augment "/if:interfaces/if:interface/if-cmn:encapsulation/" +
"if-cmn:encaps-type" { "if-cmn:encaps-type" {
when "../if:type = 'if-cmn:ethSubInterface' and when
derived-from-or-self(../if-cmn:forwarding-mode, "derived-from-or-self(../if:type,
'if-cmn:layer-2-forwarding')" { 'ianaift:ethernetCsmacd') or
description "Applies only to Ethernet sub-interfaces that are derived-from-or-self(../if:type,
operating at transport layer 2"; 'ianaift:ieee8023adLag') or
derived-from-or-self(../if:type,
'if-cmn:ethSubInterface')" {
description
"Applies only to Ethernet-like interfaces and
sub-interfaces";
} }
description description
"Add flexible match and rewrite for VLAN sub-interfaces"; "Add flexible match and rewrite for VLAN sub-interfaces";
/* /*
* A flexible encapsulation allows for the matching of ranges and * A flexible encapsulation allows for the matching of ranges and
* sets of VLAN Ids. The structure is also designed to be * sets of VLAN Ids. The structure is also designed to be
* extended to allow for matching/rewriting other fields within * extended to allow for matching/rewriting other fields within
* the L2 frame header if required. * the L2 frame header if required.
*/ */
case flexible { case flexible {
if-feature flexible-encapsulation-rewrites;
description "Flexible encapsulation and rewrite"; description "Flexible encapsulation and rewrite";
container flexible { container flexible {
must
'count(../../if-cmn:forwarding-mode) = 0 or ' +
'derived-from-or-self(../../if-cmn:forwarding-mode,' +
'"if-cmn:layer-2-forwarding")' {
error-message
"If the interface forwarding-mode leaf is set then it
must be set to an identity that derives from
layer-2-forwarding";
description
"The forwarding-mode leaf on an interface can
optionally be used to enforce consistency of
configuration";
}
description "Flexible encapsulation and rewrite"; description "Flexible encapsulation and rewrite";
container match { container match {
description description
"The match used to classify frames to this interface"; "The match used to classify frames to this interface";
uses flexible-match; uses flexible-match;
} }
container rewrite { container rewrite {
if-feature flexible-rewrites; if-feature flexible-rewrites;
description "L2 frame rewrite operations"; description "L2 frame rewrite operations";
choice direction { choice direction {
description "Whether the rewrite policy is symmetrical or description
asymmetrical"; "Whether the rewrite policy is symmetrical or
asymmetrical";
case symmetrical { case symmetrical {
container symmetrical { container symmetrical {
uses flexible-rewrite; uses flexible-rewrite;
description description
"Symmetrical rewrite. Expressed in the ingress "Symmetrical rewrite. Expressed in the ingress
direction, but the reverse operation is applied direction, but the reverse operation is applied to
to egress traffic"; egress traffic";
} }
} }
/* /*
* Allow asymmetrical rewrites to be specified. * Allow asymmetrical rewrites to be specified.
*/ */
case asymmetrical { case asymmetrical {
if-feature asymmetric-rewrites; if-feature asymmetric-rewrites;
description "Asymmetrical rewrite"; description "Asymmetrical rewrite";
container ingress { container ingress {
skipping to change at page 18, line 4 skipping to change at page 18, line 17
/* /*
* Allow asymmetrical rewrites to be specified. * Allow asymmetrical rewrites to be specified.
*/ */
case asymmetrical { case asymmetrical {
if-feature asymmetric-rewrites; if-feature asymmetric-rewrites;
description "Asymmetrical rewrite"; description "Asymmetrical rewrite";
container ingress { container ingress {
uses flexible-rewrite; uses flexible-rewrite;
description "Ingress rewrite"; description "Ingress rewrite";
} }
container egress { container egress {
uses flexible-rewrite; uses flexible-rewrite;
description "Egress rewrite"; description "Egress rewrite";
} }
} }
} }
} }
}
}
}
augment "/if:interfaces/if:interface" { /*
when "if:type = 'if-cmn:ethSubInterface' and * For encapsulations that match a range of VLANs (or Any),
derived-from-or-self(if-cmn:forwarding-mode, * allow configuration to specify the default 802.1Q VLAN tag
'if-cmn:layer-2-forwarding')" { * values to use for any traffic that is locally sourced from
description "Any L2 Ethernet sub-interfaces"; * an interface on the device.
} */
description "Add flexible encapsulation configuration for VLAN container local-traffic-default-encaps {
sub-interfaces"; presence
"A local traffic default encapsulation has been
specified";
description
"The 802.1Q VLAN tags to use by default for locally
sourced traffic";
/* container outer-tag {
* All flexible encapsulation specific interface configuration presence
* (except for the actual encapsulation and rewrite) is contained "Indicates existence of the outermost VLAN tag";
* by a flexible-encapsulation container on the interface.
*/
container flexible-encapsulation {
description
"All per interface flexible encapsulation related fields";
/* description
* For encapsulations that match a range of VLANs (or Any), "The outermost VLAN tag for locally sourced traffic";
* allow configuration to specify the default VLAN tag values
* to use for any traffic that is locally sourced from an
* interface on the device.
*/
container local-traffic-default-encaps {
description "The VLAN tags to use by default for locally
sourced traffic";
list tag {
key "index";
max-elements 2;
description uses dot1q-types:dot1q-tag-classifier-grouping;
"The VLAN tags to use by locally sourced traffic"; }
leaf index { container second-tag {
type uint8 { must
range "0..1"; '../outer-tag/dot1q-tag/tag-type = "s-vlan" and ' +
} 'dot1q-tag/tag-type = "c-vlan"' {
/* error-message
* Only allow an inner tag to be specified if an outer "When specifying two tags, the outermost tag must be
* tag has also been specified. specified and of S-VLAN type and the second outermost
*/ tag must be of C-VLAN tag type";
must ". = 0 or
count(../../tag[index = 0]/index) > 0" { description
error-message "An inner tag can only be specified if an "For IEEE 802.1Q interoperability, when specifying two
outer tag has also been specified"; tags, it is required that the outermost tag exists and
description "Ensure that an inner tag cannot be is an S-VLAN, and the second outermost tag is a
specified without an outer tag'"; C-VLAN";
} }
description "The index into the tag stack, outermost tag presence
assigned index 0"; "Indicates existence of a second outermost VLAN tag.";
}
uses dot1q-types:dot1q-tag-classifier-grouping; description
"The second outermost VLAN tag for locally sourced
traffic";
uses dot1q-types:dot1q-tag-classifier-grouping;
}
} }
} }
} }
} }
} }
<CODE ENDS> <CODE ENDS>
7. Acknowledgements 7. Open Issues
Open issues:
1. Consider whether to use interface property identities (as per
draft-wilton-netmod-interface-properties).
2. Provide configuration examples?
3. Remove extra 'dot1q-tag' container (required update to IEEE YANG
file.
8. Acknowledgements
The authors would particularly like to thank John Messenger, Glenn The authors would particularly like to thank John Messenger, Glenn
Parsons, and Dan Romascanu for their help progressing this draft. Parsons, and Dan Romascanu for their help progressing this draft.
The authors would also like to thank Alex Campbell, Eric Gray, Giles The authors would also like to thank Alex Campbell, Eric Gray, Giles
Heron, Marc Holness, Iftekhar Hussain, Neil Ketley, William Lupton, Heron, Marc Holness, Iftekhar Hussain, Neil Ketley, William Lupton,
John Messenger, Glenn Parsons, Ludwig Pauwels, and members of the John Messenger, Glenn Parsons, Ludwig Pauwels, Joseph White, and
IEEE 802.1 WG for their helpful reviews and feedback on this draft. members of the IEEE 802.1 WG for their helpful reviews and feedback
on this draft.
8. ChangeLog 9. ChangeLog
8.1. WG version -01 9.1. WG version -02
o Use explicit containers for outer and inner tags rather than
lists.
9.2. WG version -01
o Tweaked the abstract. o Tweaked the abstract.
o Removed unnecessary feature for the L3 sub-interface module. o Removed unnecessary feature for the L3 sub-interface module.
o Update the 802.1Qcp type references. o Update the 802.1Qcp type references.
o Remove extra tag container for L3 sub-interfaces YANG. o Remove extra tag container for L3 sub-interfaces YANG.
8.2. Version -04 9.3. Version -04
o IEEE 802.1 specific types have been removed from the draft. These o IEEE 802.1 specific types have been removed from the draft. These
are now referenced from the 802.1Qcp draft YANG modules. are now referenced from the 802.1Qcp draft YANG modules.
o Fixed errors in the xpath expressions. o Fixed errors in the xpath expressions.
8.3. Version -03 9.4. Version -03
o Incorporates feedback received from presenting to the IEEE 802.1 o Incorporates feedback received from presenting to the IEEE 802.1
WG. WG.
o Updates the modules for double tag matches/rewrites to restrict o Updates the modules for double tag matches/rewrites to restrict
the outer tag type to S-VLAN and inner tag type to C-VLAN. the outer tag type to S-VLAN and inner tag type to C-VLAN.
o Updates the introduction to indicate primary use case is for IETF o Updates the introduction to indicate primary use case is for IETF
forwarding protocols. forwarding protocols.
o Updates the objectives to make IEEE 802.1Q bridge interoperability o Updates the objectives to make IEEE 802.1Q bridge interoperability
a key objective. a key objective.
9. IANA Considerations 10. IANA Considerations
This document defines several new YANG module and the authors This document defines several new YANG module and the authors
politely request that IANA assigns unique names to the YANG module politely request that IANA assigns unique names to the YANG module
files contained within this draft, and also appropriate URIs in the files contained within this draft, and also appropriate URIs in the
"IETF XML Registry". "IETF XML Registry".
10. Security Considerations 11. Security Considerations
The YANG module defined in this memo is designed to be accessed via The YANG module defined in this memo is designed to be accessed via
the NETCONF protocol RFC 6241 [RFC6241]. The lowest NETCONF layer is the NETCONF protocol RFC 6241 [RFC6241]. The lowest NETCONF layer is
the secure transport layer and the mandatory to implement secure the secure transport layer and the mandatory to implement secure
transport is SSH RFC 6242 [RFC6242]. The NETCONF access control transport is SSH RFC 6242 [RFC6242]. The NETCONF access control
model RFC 6536 [RFC6536] provides the means to restrict access for model RFC 6536 [RFC6536] provides the means to restrict access for
particular NETCONF users to a pre-configured subset of all available particular NETCONF users to a pre-configured subset of all available
NETCONF protocol operations and content. NETCONF protocol operations and content.
There are a number of data nodes defined in this YANG module which There are a number of data nodes defined in this YANG module which
are writable/creatable/deletable (i.e. config true, which is the are writable/creatable/deletable (i.e. config true, which is the
default). These data nodes may be considered sensitive or vulnerable default). These data nodes may be considered sensitive or vulnerable
in some network environments. Write operations (e.g. edit-config) to in some network environments. Write operations (e.g. edit-config) to
these data nodes without proper protection can have a negative effect these data nodes without proper protection can have a negative effect
on network operations. These are the subtrees and data nodes and on network operations. These are the subtrees and data nodes and
their sensitivity/vulnerability: their sensitivity/vulnerability:
10.1. if-l3-vlan.yang 11.1. if-l3-vlan.yang
The nodes in the if-l3-vlan YANG module are concerned with matching The nodes in the if-l3-vlan YANG module are concerned with matching
particular frames received on the network device to connect them to a particular frames received on the network device to connect them to a
layer 3 forwarding instance, and as such adding/modifying/deleting layer 3 forwarding instance, and as such adding/modifying/deleting
these nodes has a high risk of causing traffic to be lost because it these nodes has a high risk of causing traffic to be lost because it
is not being classified correctly, or is being classified to a is not being classified correctly, or is being classified to a
separate sub-interface. The nodes, all under the subtree separate sub-interface. The nodes, all under the subtree
/interfaces/interface/encapsulation/vlan, that are sensitive to this /interfaces/interface/encapsulation/dot1q-vlan, that are sensitive to
are: this are:
o tag o outer-tag/dot1q-tag/tag-type
o tag/index o outer-tag/dot1q-tag/vlan-id
o tag/index/tag-type o second-tag/dot1q-tag/tag-type
o tag/index/vlan-id o second-tag/dot1q-tag/vlan-id
10.2. flexible-encapsulation.yang 11.2. flexible-encapsulation.yang
There are many nodes in the flexible-encapsulation YANG module that There are many nodes in the flexible-encapsulation YANG module that
are concerned with matching particular frames received on the network are concerned with matching particular frames received on the network
device, and as such adding/modifying/deleting these nodes has a high device, and as such adding/modifying/deleting these nodes has a high
risk of causing traffic to be lost because it is not being classified risk of causing traffic to be lost because it is not being classified
correctly, or is being classified to a separate sub-interface. The correctly, or is being classified to a separate sub-interface. The
nodes, all under the subtree nodes, all under the subtree
/interfaces/interface/encapsulation/flexible/match, that are /interfaces/interface/encapsulation/flexible/match, that are
sensitive to this are: sensitive to this are:
o default o default
o untagged o untagged
o priority-tagged o dot1q-priority-tagged
o priority-tagged/tag-type o dot1q-priority-tagged/tag-type
o vlan-tagged o dot1q-vlan-tagged/outer-tag/dot1q-tag/vlan-type
o vlan-tagged/index o dot1q-vlan-tagged/outer-tag/dot1q-tag/vlan-id
o vlan-tagged/index/dot1q-tag/vlan-type o dot1q-vlan-tagged/second-tag/dot1q-tag/vlan-type
o vlan-tagged/index/dot1q-tag/vlan-id o dot1q-vlan-tagged/second-tag/dot1q-tag/vlan-id
o vlan-tagged/match-exact-tags
There are also many modes in the flexible-encapsulation YANG module There are also many modes in the flexible-encapsulation YANG module
that are concerned with rewriting the fields in the L2 header for that are concerned with rewriting the fields in the L2 header for
particular frames received on the network device, and as such particular frames received on the network device, and as such
adding/modifying/deleting these nodes has a high risk of causing adding/modifying/deleting these nodes has a high risk of causing
traffic to be dropped or incorrectly processed on peer network traffic to be dropped or incorrectly processed on peer network
devices, or it could cause layer 2 tunnels to go down due to a devices, or it could cause layer 2 tunnels to go down due to a
mismatch in negotiated MTU. The nodes, all under the subtree mismatch in negotiated MTU. The nodes, all under the subtree
/interfaces/interface/encapsulation/flexible/rewrite, that are /interfaces/interface/encapsulation/flexible/rewrite, that are
sensitive to this are: sensitive to this are:
o symmetrical/tag-rewrite/pop-tags o symmetrical/dot1q-tag-rewrite/pop-tags
o symmetrical/tag-rewrite/push-tag o symmetrical/dot1q-tag-rewrite/push-tags/outer-tag/dot1q-tag/tag-
type
o symmetrical/tag-rewrite/push-tag/index o symmetrical/dot1q-tag-rewrite/push-tags/outer-tag/dot1q-tag/vlan-
id
o symmetrical/tag-rewrite/push-tag/dot1q-tag/tag-type o symmetrical/dot1q-tag-rewrite/push-tags/second-tag/dot1q-tag/tag-
type
o symmetrical/tag-rewrite/push-tag/dot1q-tag/vlan-id o symmetrical/dot1q-tag-rewrite/push-tags/second-tag/dot1q-tag/vlan-
id
o asymmetrical/ingress/tag-rewrite/pop-tags o asymmetrical/ingress/dot1q-tag-rewrite/pop-tags
o asymmetrical/ingress/tag-rewrite/push-tag o asymmetrical/ingress/dot1q-tag-rewrite/push-tags/outer-tag/dot1q-
tag/tag-type
o asymmetrical/ingress/tag-rewrite/push-tag/index o asymmetrical/ingress/dot1q-tag-rewrite/push-tags/outer-tag/dot1q-
tag/vlan-id
o asymmetrical/ingress/tag-rewrite/push-tag/dot1q-tag/tag-type o asymmetrical/ingress/dot1q-tag-rewrite/push-tags/second-tag/dot1q-
tag/tag-type
o asymmetrical/ingress/tag-rewrite/push-tag/dot1q-tag/vlan-id o asymmetrical/ingress/dot1q-tag-rewrite/push-tags/second-tag/dot1q-
tag/vlan-id
o asymmetrical/egress/tag-rewrite/pop-tags o asymmetrical/egress/dot1q-tag-rewrite/pop-tags
o asymmetrical/egress/tag-rewrite/push-tag o asymmetrical/egress/dot1q-tag-rewrite/push-tags/outer-tag/dot1q-
tag/tag-type
o asymmetrical/egress/tag-rewrite/push-tag/index o asymmetrical/egress/dot1q-tag-rewrite/push-tags/outer-tag/dot1q-
tag/vlan-id
o asymmetrical/egress/tag-rewrite/push-tag/dot1q-tag/tag-type o asymmetrical/egress/dot1q-tag-rewrite/push-tags/second-tag/dot1q-
tag/tag-type
o asymmetrical/egress/tag-rewrite/push-tag/dot1q-tag/vlan-id o asymmetrical/egress/dot1q-tag-rewrite/push-tags/second-tag/dot1q-
tag/vlan-id
Nodes in the flexible-encapsulation YANG module that are concerned Nodes in the flexible-encapsulation YANG module that are concerned
with the VLAN tags to use for traffic sourced from the network with the VLAN tags to use for traffic sourced from the network
element could cause protocol sessions (such as CFM) to fail if they element could cause protocol sessions (such as CFM) to fail if they
are added, modified or deleted. The nodes, all under the subtree are added, modified or deleted. The nodes, all under the subtree
/interfaces/interface/flexible-encapsulation/local-traffic-default- /interfaces/interface/flexible-encapsulation/local-traffic-default-
encaps that are sensitive to this are: encaps that are sensitive to this are:
o tag o outer-tag/dot1q-tag/vlan-type
o tag/index
o tag/dot1q-tag/tag-type o outer-tag/dot1q-tag/vlan-id
o tag/dot1q-tag/vlan-id o second-tag/dot1q-tag/vlan-type
11. References o second-tag/dot1q-tag/vlan-id
11.1. Normative References 12. References
12.1. Normative References
[I-D.ietf-netmod-intf-ext-yang] [I-D.ietf-netmod-intf-ext-yang]
Wilton, R., Ball, D., tsingh@juniper.net, t., and S. Wilton, R., Ball, D., tsingh@juniper.net, t., and S.
Sivaraj, "Common Interface Extension YANG Data Models", Sivaraj, "Common Interface Extension YANG Data Models",
draft-ietf-netmod-intf-ext-yang-04 (work in progress), draft-ietf-netmod-intf-ext-yang-04 (work in progress),
March 2017. March 2017.
[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, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
skipping to change at page 23, line 37 skipping to change at page 24, line 32
<http://www.rfc-editor.org/info/rfc7223>. <http://www.rfc-editor.org/info/rfc7223>.
[RFC7224] Bjorklund, M., "IANA Interface Type YANG Module", [RFC7224] Bjorklund, M., "IANA Interface Type YANG Module",
RFC 7224, DOI 10.17487/RFC7224, May 2014, RFC 7224, DOI 10.17487/RFC7224, May 2014,
<http://www.rfc-editor.org/info/rfc7224>. <http://www.rfc-editor.org/info/rfc7224>.
[RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language",
RFC 7950, DOI 10.17487/RFC7950, August 2016, RFC 7950, DOI 10.17487/RFC7950, August 2016,
<http://www.rfc-editor.org/info/rfc7950>. <http://www.rfc-editor.org/info/rfc7950>.
11.2. Informative References 12.2. Informative References
[dot1Qcp] Holness, M., "802.1Qcp Bridges and Bridged Networks - [dot1Qcp] Holness, M., "802.1Qcp Bridges and Bridged Networks -
Amendment: YANG Data Model", 2016. Amendment: YANG Data Model", 2016.
[RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 [RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6
(IPv6) Specification", RFC 2460, DOI 10.17487/RFC2460, (IPv6) Specification", RFC 2460, DOI 10.17487/RFC2460,
December 1998, <http://www.rfc-editor.org/info/rfc2460>. December 1998, <http://www.rfc-editor.org/info/rfc2460>.
[RFC4448] Martini, L., Ed., Rosen, E., El-Aawar, N., and G. Heron, [RFC4448] Martini, L., Ed., Rosen, E., El-Aawar, N., and G. Heron,
"Encapsulation Methods for Transport of Ethernet over MPLS "Encapsulation Methods for Transport of Ethernet over MPLS
 End of changes. 115 change blocks. 
344 lines changed or deleted 380 lines changed or added

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