rfc8944xml2.original.xml   rfc8944.xml 
<?xml version="1.0" encoding="US-ASCII"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd"> <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<?rfc toc="yes"?>
<?rfc tocompact="yes"?> <rfc xmlns:xi="http://www.w3.org/2001/XInclude" docName="draft-ietf-i2rs-yang-l
<?rfc tocdepth="3"?> 2-network-topology-18" number="8944" ipr="trust200902" obsoletes="" updates="" s
<?rfc tocindent="yes"?> ubmissionType="IETF" category="std" consensus="true" xml:lang="en" tocInclude="t
<?rfc symrefs="yes"?> rue" tocDepth="3" symRefs="true" sortRefs="true" version="3">
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?> <!-- xml2rfc v2v3 conversion 3.1.1 -->
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc category="std" docName="draft-ietf-i2rs-yang-l2-network-topology-18"
ipr="trust200902">
<front> <front>
<title abbrev="YANG Data Model for L2 Topologies">A YANG Data Model for <title abbrev="YANG Data Model for L2 Topologies">A YANG Data Model for
Layer 2 Network Topologies</title> Layer 2 Network Topologies</title>
<seriesInfo name="RFC" value="8944"/>
<author fullname="Jie Dong" initials="J." surname="Dong"> <author fullname="Jie Dong" initials="J." surname="Dong">
<organization>Huawei</organization> <organization>Huawei</organization>
<address> <address>
<postal> <postal>
<street>Huawei Campus, No. 156 Beiqing Rd.</street> <street>No. 156 Beiqing Rd.</street>
<extaddr>Huawei Campus</extaddr>
<city>Beijing</city> <city>Beijing</city>
<code>100095</code> <code>100095</code>
<country>China</country> <country>China</country>
</postal> </postal>
<email>jie.dong@huawei.com</email> <email>jie.dong@huawei.com</email>
</address> </address>
</author> </author>
<author fullname="Xiugang Wei" initials="X." surname="Wei"> <author fullname="Xiugang Wei" initials="X." surname="Wei">
<organization>Huawei</organization> <organization>Huawei</organization>
<address> <address>
<postal> <postal>
<street>Huawei Campus, No. 156 Beiqing Rd.</street> <street>No. 156 Beiqing Rd.</street>
<extaddr>Huawei Campus</extaddr>
<city>Beijing</city> <city>Beijing</city>
<code>100095</code> <code>100095</code>
<country>China</country> <country>China</country>
</postal> </postal>
<email>weixiugang@huawei.com</email> <email>weixiugang@huawei.com</email>
</address> </address>
</author> </author>
<author fullname="Qin Wu" initials="Q." surname="Wu"> <author fullname="Qin Wu" initials="Q." surname="Wu">
<organization>Huawei</organization> <organization>Huawei</organization>
<address> <address>
<postal> <postal>
<street>101 Software Avenue, Yuhua District</street> <street>101 Software Avenue</street>
<street>Yuhua District</street>
<city>Nanjing</city> <city>Nanjing</city>
<code>210012</code> <code>210012</code>
<country>China</country> <country>China</country>
</postal> </postal>
<email>bill.wu@huawei.com</email> <email>bill.wu@huawei.com</email>
</address> </address>
</author> </author>
<author fullname="Mohamed Boucadair" initials="M." surname="Boucadair"> <author fullname="Mohamed Boucadair" initials="M." surname="Boucadair">
<organization>Orange</organization> <organization>Orange</organization>
<address> <address>
<postal> <postal>
<street>Rennes 35000</street> <street>Rennes 35000</street>
<country>France</country> <country>France</country>
</postal> </postal>
<email>mohamed.boucadair@orange.com</email> <email>mohamed.boucadair@orange.com</email>
</address> </address>
</author> </author>
<author fullname="Anders Liu" initials="A." surname="Liu"> <author fullname="Anders Liu" initials="A." surname="Liu">
<organization>Tecent</organization> <organization>Tecent</organization>
<address> <address>
<postal> <postal>
<street>Yinke Building 38 Haidian St, Haidian District</street> <street>38 Haidian St</street>
<extaddr>Yinke Building</extaddr>
<street>Haidian District</street>
<city>Beijing</city> <city>Beijing</city>
<code>100080</code> <code>100080</code>
<country>China</country> <country>China</country>
</postal> </postal>
<email>andersliu@tencent.com</email> <email>andersliu@tencent.com</email>
</address> </address>
</author> </author>
<date year="2020" month="November"/>
<date year="2020"/> <keyword>VxLAN</keyword>
<keyword>VLAN</keyword>
<keyword>QinQ</keyword>
<keyword>Provider Backbone Bridging</keyword>
<keyword>Ethernet</keyword>
<keyword>VPLS</keyword>
<abstract> <abstract>
<t>This document defines a YANG data model for Layer 2 network <t>This document defines a YANG data model for Layer 2 network
topologies. In particular, this data model augments the generic network topologies. In particular, this data model augments the generic network
and network topology data models with Layer 2 specific topology and network topology data models with topology
attributes.</t> attributes that are specific to Layer 2.</t>
</abstract> </abstract>
<note title="Editorial Note (To be removed by RFC Editor)">
<t>Please update these statements within the document with the RFC
number to be assigned to this document:<list style="symbols">
<t>"This version of this YANG module is part of RFC XXXX;"</t>
<t>"RFC XXXX: A YANG Data Model for Layer 2 Network Topologies";</t>
<t>reference: RFC XXXX</t>
</list></t>
<t>Please update the "revision" date of the YANG module.</t>
</note>
</front> </front>
<middle> <middle>
<section title="Introduction"> <section numbered="true" toc="default">
<t><xref target="RFC8345"/> defines the YANG <xref target="RFC6020"/> <name>Introduction</name>
<xref target="RFC7950"/> data models of the abstract (generic) network <t><xref target="RFC8345" format="default"/> defines the YANG <xref target
="RFC6020" format="default"/>
<xref target="RFC7950" format="default"/> data models of the abstract (g
eneric) network
and network topology. Such models can be augmented with and network topology. Such models can be augmented with
technology-specific details to build more specific topology models.</t> technology-specific details to build more specific topology models.</t>
<t>This document defines the YANG data model for Layer 2 (L2) network <t>This document defines the YANG data model for Layer 2 (L2) network
topologies by augmenting the generic network (Section 6.1 of <xref topologies by augmenting the generic network (<xref target="RFC8345"
target="RFC8345"/>) and network topology (Section 6.2 of <xref sectionFormat="of" section="6.1"/>) and network topology (<xref
target="RFC8345"/>) data models with L2-specific topology attributes. An target="RFC8345" sectionFormat="of" section="6.2"/>) data models with
example is provided in <xref target="ex"/>.</t> L2-specific topology attributes. An
example is provided in <xref target="ex" format="default"/>.</t>
<t>There are multiple applications for such a data model. For example, <t>There are multiple applications for such a data model. For example,
within the context of Interface to the Routing System (I2RS), nodes within the context of Interface to the Routing System (I2RS), nodes
within the network can use the data model to capture their understanding within the network can use the data model to capture their understanding
of the overall network topology and expose it to a network controller. A of the overall network topology and expose it to a network controller. A
network controller can then use the instantiated topology data to network controller can then use the instantiated topology data to
compare and reconcile its own view of the network topology with that of compare and reconcile its own view of the network topology with that of
the network elements that it controls. Alternatively, nodes within the the network elements that it controls. Alternatively, nodes within the
network may compare and reconcile this understanding either among network may compare and reconcile this understanding either among
themselves or with the help of a controller. Beyond the network element themselves or with the help of a controller. Beyond the network element
and the immediate context of I2RS itself, a network controller might and the immediate context of I2RS itself, a network controller might
even use the data model to represent its view of the topology that it even use the data model to represent its view of the topology that it
controls and expose it to external applications. Further use cases where controls and expose it to external applications. Further use cases where
the data model can be applied are described in <xref the data model can be applied are described in <xref target="I-D.ietf-i2rs
target="I2RS-UR"/>.</t> -usecase-reqs-summary" format="default"/>.</t>
<t>This document uses the common YANG types defined in <xref target="RFC69
<t>This document uses the common YANG types defined in <xref 91" format="default"/> and adopts the Network Management Datastore
target="RFC6991"/> and adopts the Network Management Datastore Architecture (NMDA) <xref target="RFC8342" format="default"/>.</t>
Architecture (NMDA) <xref target="RFC8342"/>.</t>
</section> </section>
<section numbered="true" toc="default">
<name>Terminology</name>
<t>
The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>",
"<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>",
"<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are
to be interpreted as described in BCP&nbsp;14 <xref target="RFC2119"/>
<xref target="RFC8174"/> when, and only when, they appear in all capitals,
as shown here.
</t>
<section title="Terminology"> <t>The terminology for describing YANG modules is defined in <xref target=
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "RFC7950" format="default"/>. The meanings of the symbols used in the tree diagr
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and am
"OPTIONAL" in this document are to be interpreted as described in BCP 14 are defined in <xref target="RFC8340" format="default"/>.</t>
<xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when,
they appear in all capitals, as shown here.</t>
<t>The terminology for describing YANG modules is defined in <xref
target="RFC7950"/>. The meanings of the symbols used in the tree diagram
are defined in <xref target="RFC8340"/>.</t>
</section> </section>
<section numbered="true" toc="default">
<section title="Layer 2 Topology Model"> <name>Layer 2 Topology Model</name>
<t>The Layer 2 network topology YANG module is designed to be generic <t>The Layer 2 network topology YANG module is designed to be generic
and applicable to Layer 2 networks built with different Layer 2 and applicable to Layer 2 networks built with different Layer 2
technologies. It can be used to describe both the physical and the technologies. It can be used to describe both the physical and the
logical (virtual) Layer 2 network topologies.</t> logical (virtual) Layer 2 network topologies.</t>
<t>The relationship between the Layer 2 topology module and the generic <t>The relationship between the Layer 2 topology module and the generic
network and network topology module is shown in <xref target="dia"/>. In network and network topology module is shown in <xref target="dia" format= "default"/>. In
order to represent a Layer 2 network topology, the generic network and order to represent a Layer 2 network topology, the generic network and
topology models are augmented with Layer 2 specific information, such as topology models are augmented with L2-specific information, such as
the identifiers, identities (e.g., Provider Backbone Bridging <xref the identifiers, identities (e.g., Provider Backbone Bridging <xref
target="IEEE802.1ah"/>, QinQ <xref target="IEEE802.1ad"/>, or VXLAN target="IEEE802.1ah" format="default"/>, QinQ <xref target="IEEE802.1ad"
<xref target="RFC7348"/>), attributes, and states of the Layer 2 format="default"/>, or Virtual eXtensible Local Area Network (VXLAN)
<xref target="RFC7348" format="default"/>), attributes, and states of the
Layer 2
networks, nodes, links, and termination points. Some of the information networks, nodes, links, and termination points. Some of the information
may be collected via Link Layer Discovery Protocol (LLDP) <xref may be collected via Link Layer Discovery Protocol (LLDP) <xref target="IE
target="IEEE802.1AB"/> or other Layer 2 protocols, and some of them may EE802.1AB" format="default"/> or other Layer 2 protocols, and some of them may
be locally configured.</t> be locally configured.</t>
<figure anchor="dia">
<t><figure anchor="dia" title="Layer 2 Topology YANG Module Structure"> <name>Layer 2 Topology YANG Module Structure</name>
<artwork align="center"> +---------------------+ <artwork align="center" name="" type="" alt=""><![CDATA[
| ietf-network | +---------------------+
+----------^----------+ | ietf-network |
| +----------^----------+
| |
+---------------------+ |
|ietf-network-topology| +---------------------+
+----------^----------+ |ietf-network-topology|
| +----------^----------+
| |
+----------^----------+ |
| ietf-l2-topology | +----------^----------+
+---------------------+ | ietf-l2-topology |
</artwork> +---------------------+
</figure></t> ]]></artwork>
</figure>
<t>The structure of the "ietf-l2-topology" YANG module is depicted in <t>The structure of the "ietf-l2-topology" YANG module is depicted in
the following tree diagram:</t> the following tree diagram:</t>
<t><figure> <sourcecode name="" type="yangtree" ><![CDATA[
<artwork>module: ietf-l2-topology module: ietf-l2-topology
augment /nw:networks/nw:network/nw:network-types: augment /nw:networks/nw:network/nw:network-types:
+--rw l2-topology! +--rw l2-topology!
augment /nw:networks/nw:network: augment /nw:networks/nw:network:
+--rw l2-topology-attributes +--rw l2-topology-attributes
+--rw name? string +--rw name? string
+--rw flags* l2-flag-type +--rw flags* l2-flag-type
augment /nw:networks/nw:network/nw:node: augment /nw:networks/nw:network/nw:node:
+--rw l2-node-attributes +--rw l2-node-attributes
+--rw name? string +--rw name? string
+--rw flags* node-flag-type +--rw flags* node-flag-type
skipping to change at line 247 skipping to change at line 209
+--rw interface-name? string +--rw interface-name? string
+--rw mac-address? yang:mac-address +--rw mac-address? yang:mac-address
+--rw port-number* uint32 +--rw port-number* uint32
+--rw unnumbered-id* uint32 +--rw unnumbered-id* uint32
+--rw encapsulation-type? identityref +--rw encapsulation-type? identityref
+--rw outer-tag? dot1q-types:vid-range-type {VLAN}? +--rw outer-tag? dot1q-types:vid-range-type {VLAN}?
+--rw outer-tpid? dot1q-types:dot1q-tag-type {QinQ}? +--rw outer-tpid? dot1q-types:dot1q-tag-type {QinQ}?
+--rw inner-tag? dot1q-types:vid-range-type {VLAN}? +--rw inner-tag? dot1q-types:vid-range-type {VLAN}?
+--rw inner-tpid? dot1q-types:dot1q-tag-type {QinQ}? +--rw inner-tpid? dot1q-types:dot1q-tag-type {QinQ}?
+--rw lag? boolean +--rw lag? boolean
+--rw member-link-tp* -&gt; /nw:networks/network/node/nt:terminatio +--rw member-link-tp*
n-point/tp-id -> /nw:networks/network/node/nt:termination-point/tp-id
+--rw vxlan {VXLAN}? +--rw vxlan {VXLAN}?
+--rw vni-id? vni +--rw vni-id? vni
notifications: notifications:
+---n l2-node-event +---n l2-node-event
| +--ro event-type? l2-network-event-type | +--ro event-type? l2-network-event-type
| +--ro node-ref? -&gt; /nw:networks/network[nw:network-id=curr | +--ro node-ref?
ent() -> /nw:networks/network[nw:network-id=current()
/../network-ref]/node/node-id /../network-ref]/node/node-id
| +--ro network-ref? -&gt; /nw:networks/network/network-id | +--ro network-ref? -> /nw:networks/network/network-id
| +--ro l2-topology! | +--ro l2-topology!
| +--ro l2-node-attributes | +--ro l2-node-attributes
| +--ro name? string | +--ro name? string
| +--ro flags* node-flag-type | +--ro flags* node-flag-type
| +--ro bridge-id* uint64 | +--ro bridge-id* uint64
| +--ro management-address* inet:ip-address | +--ro management-address* inet:ip-address
| +--ro management-mac? yang:mac-address | +--ro management-mac? yang:mac-address
| +--ro management-vlan? string | +--ro management-vlan? string
+---n l2-link-event +---n l2-link-event
| +--ro event-type? l2-network-event-type | +--ro event-type? l2-network-event-type
| +--ro link-ref? -&gt; /nw:networks/network[nw:network-id=curr | +--ro link-ref?
ent() -> /nw:networks/network[nw:network-id=current()
/../network-ref]/nt:link/link-id /../network-ref]/nt:link/link-id
| +--ro network-ref? -&gt; /nw:networks/network/network-id | +--ro network-ref? -> /nw:networks/network/network-id
| +--ro l2-topology! | +--ro l2-topology!
| +--ro l2-link-attributes | +--ro l2-link-attributes
| +--ro name? string | +--ro name? string
| +--ro flags* link-flag-type | +--ro flags* link-flag-type
| +--ro rate? uint64 | +--ro rate? uint64
| +--ro delay? uint32 | +--ro delay? uint32
| +--ro auto-nego? boolean | +--ro auto-nego? boolean
| +--ro duplex? duplex-mode | +--ro duplex? duplex-mode
+---n l2-termination-point-event +---n l2-termination-point-event
+--ro event-type? l2-network-event-type +--ro event-type? l2-network-event-type
+--ro tp-ref? -&gt; /nw:networks/network[nw:ne +--ro tp-ref?
twork-id=current() -> /nw:networks/network[nw:network-id=current()
/../network-ref]/node[nw:node-id=current() /../network-ref]/node[nw:node-id=current()
/../node-ref]/nt:termination-point/tp-id /../node-ref]/nt:termination-point/tp-id
+--ro node-ref? -&gt; /nw:networks/network[nw:network-id= +--ro node-ref?
current() -> /nw:networks/network[nw:network-id=current()
/../network-ref]/node/node-id /../network-ref]/node/node-id
+--ro network-ref? -&gt; /nw:networks/network/network-id +--ro network-ref? -> /nw:networks/network/network-id
+--ro l2-topology! +--ro l2-topology!
+--ro l2-termination-point-attributes +--ro l2-termination-point-attributes
+--ro interface-name? string +--ro interface-name? string
+--ro mac-address? yang:mac-address +--ro mac-address? yang:mac-address
+--ro port-number* uint32 +--ro port-number* uint32
+--ro unnumbered-id* uint32 +--ro unnumbered-id* uint32
+--ro encapsulation-type? identityref +--ro encapsulation-type? identityref
+--ro outer-tag? dot1q-types:vid-range-type {VLAN}? +--ro outer-tag? dot1q-types:vid-range-type {VLAN}?
+--ro outer-tpid? dot1q-types:dot1q-tag-type {QinQ}? +--ro outer-tpid? dot1q-types:dot1q-tag-type {QinQ}?
+--ro inner-tag? dot1q-types:vid-range-type {VLAN}? +--ro inner-tag? dot1q-types:vid-range-type {VLAN}?
+--ro inner-tpid? dot1q-types:dot1q-tag-type {QinQ}? +--ro inner-tpid? dot1q-types:dot1q-tag-type {QinQ}?
+--ro lag? boolean +--ro lag? boolean
+--ro member-link-tp* -&gt; /nw:networks/network/node/nt:termina +--ro member-link-tp*
tion-point/tp-id -> /nw:networks/network/node/nt:termination-point/tp-id
+--ro vxlan {VXLAN}? +--ro vxlan {VXLAN}?
+--ro vni-id? vni</artwork> +--ro vni-id? vni
</figure></t> ]]></sourcecode>
<t>The Layer 2 Topology YANG module augments the "ietf-network" and
<t>The Layer 2 topology YANG module augments the "ietf-network" and
"ietf-network-topology" YANG modules as follows:</t> "ietf-network-topology" YANG modules as follows:</t>
<ul spacing="normal">
<t><list style="symbols"> <li>A new network type "l2-network-type" is introduced. This is
<t>A new network type "l2-network-type" is introduced. This is represented by a container object and is inserted under the
represented by a container object, and is inserted under the
"network-types" container of the generic "ietf-network" module "network-types" container of the generic "ietf-network" module
defined in Section 6.1 of <xref target="RFC8345"/>.</t> defined in <xref target="RFC8345" sectionFormat="of" section="6.1"/>.<
/li>
<t>Additional network attributes are introduced in a grouping <li>Additional network attributes are introduced in a grouping
"l2-network-attributes", which augments the "network" list of the "l2-network-attributes", which augments the "network" list of the
"ietf-network" module. The attributes include Layer 2 network name "ietf-network" module. The attributes include the Layer 2 network name
and a set of flags. Each type of flag is represented by a separate and a set of flags. Each type of flag is represented by a separate
identity.</t> identity.</li>
<t>Additional data objects for Layer 2 nodes are introduced by
augmenting the "node" list of the generic "ietf-network" module. New
objects include Layer 2 node identifier, management address,
management mac, mangement vlan and a set of flags.</t>
<t>Additional data objects for Layer 2 termination points are <li>Additional data objects for Layer 2 nodes are introduced by
augmenting the "node" list of the generic "ietf-network" module.
New objects include the Layer 2 node identifier, management address,
management MAC address, management VLAN, and a set of flags.</li>
<li>Additional data objects for Layer 2 termination points are
introduced by augmenting the "termination-point" list of the introduced by augmenting the "termination-point" list of the
"ietf-network-topology" module defined in Section 6.2 of <xref "ietf-network-topology" module defined in <xref target="RFC8345"
target="RFC8345"/>. New objects include interface name, sectionFormat="of" section="6.2"/>.
encapsulation type, lag support and Layer 2 termination point type New objects include the interface name, encapsulation type,
specific attributes.</t> lag support indication, and attributes that are specific to
the Layer 2 termination point type.</li>
<t>Links in the "ietf-network-topology" module are augmented as well <li>Links in the "ietf-network-topology" module are augmented as well
with a set of Layer 2 parameters, allowing to associate a link with with a set of Layer 2 parameters, allowing to associate a link with
a name, a set of Layer 2 link attributes, and flags.</t> a name, a set of Layer 2 link attributes, and flags.</li>
<li>Some optional Layer 2 technology-specific attributes are
<t>Some optional Layer 2 technology specific attributes are
introduced in this module as Layer 2 features because these introduced in this module as Layer 2 features because these
attributes may be useful to expose to above services/applications. attributes may be useful to expose to above services/applications.
Note that learning or configuring advanced Layer 2 Note that learning or configuring advanced
technology-specific attributes is not within the scope of the Layer Layer 2 technology-specific attributes is not within the scope of
the Layer
2 Topology YANG module; dedicated YANG modules should be used 2 Topology YANG module; dedicated YANG modules should be used
instead (e.g., <xref target="I-D.ietf-trill-yang"/>).</t> instead (e.g., <xref target="I-D.ietf-trill-yang" format="default"/>).
</list></t> </li>
</ul>
</section> </section>
<section anchor="L2YANG" numbered="true" toc="default">
<name>Layer 2 Topology YANG Module</name>
<section anchor="L2YANG" title="Layer 2 Topology YANG Module"> <t>This module uses types defined in <xref target="RFC6991"
<t>This module uses types defined in <xref target="RFC6991"/>, <xref format="default"/>, <xref target="RFC7224" format="default"/>, <xref
target="RFC7224"/>, <xref target="IEEE802.1Qcp"/>, and <xref target="IEEE802.1Qcp" format="default"/>, and <xref target="RFC8345"
target="RFC8345"/>. It also references <xref target="RFC4761"/><xref format="default"/>. It also references <xref target="IEEE802.1Q-2014"
target="RFC4762">, </xref>, and <xref target="RFC4202"/>.</t> format="default"/>, <xref target="IEEE802.1ad" format="default"/>, <xref
target="RFC7348" format="default"/>, and
<xref target="RFC7727" format="default"/>.</t>
<t><figure> <sourcecode name="ietf-l2-topology@2020-11-02.yang" type="yang" markers="t
<artwork>&lt;CODE BEGINS&gt; file "ietf-l2-topology@2020-06-29.yang" rue"><![CDATA[
module ietf-l2-topology { module ietf-l2-topology {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-l2-topology"; namespace "urn:ietf:params:xml:ns:yang:ietf-l2-topology";
prefix l2t; prefix l2t;
import ietf-network { import ietf-network {
prefix nw; prefix nw;
reference reference
"RFC 8345: A YANG Data Model for Network Topologies"; "RFC 8345: A YANG Data Model for Network Topologies";
} }
skipping to change at line 392 skipping to change at line 359
import ieee802-dot1q-types { import ieee802-dot1q-types {
prefix dot1q-types; prefix dot1q-types;
reference reference
"IEEE Std 802.1Qcp-2018: Bridges and Bridged "IEEE Std 802.1Qcp-2018: Bridges and Bridged
Networks - Amendment: YANG Data Model"; Networks - Amendment: YANG Data Model";
} }
organization organization
"IETF I2RS (Interface to the Routing System) Working Group"; "IETF I2RS (Interface to the Routing System) Working Group";
contact contact
"WG Web: &lt;http://tools.ietf.org/wg/i2rs/&gt; "WG Web: <http://tools.ietf.org/wg/i2rs/>
WG List: &lt;mailto:i2rs@ietf.org&gt; WG List: <mailto:i2rs@ietf.org>
Editor: Jie Dong Editor: Jie Dong
<mailto:jie.dong@huawei.com&gt; <mailto:jie.dong@huawei.com&gt;
Editor: Xiugang Wei Editor: Xiugang Wei
<mailto:weixiugang@huawei.com&gt; <mailto:weixiugang@huawei.com&gt;
Editor: Qin Wu Editor: Qin Wu
<mailto:bill.wu@huawei.com&gt; <mailto:bill.wu@huawei.com&gt;
Editor: Mohamed Boucadair Editor: Mohamed Boucadair
<mailto:mohamed.boucadair@orange.com&gt; <mailto:mohamed.boucadair@orange.com&gt;
Editor: Anders Liu Editor: Anders Liu
&lt;andersliu@tencent.com&gt;"; <mailto:andersliu@tencent.com>";
description description
"This module defines a basic model for the Layer 2 topology "This module defines a basic model for the Layer 2 topology
of a network. of a network.
Copyright (c) 2020 IETF Trust and the persons identified as Copyright (c) 2020 IETF Trust and the persons identified as
authors of the code. All rights reserved. authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(http://trustee.ietf.org/license-info). (http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see This version of this YANG module is part of RFC 8944; see
the RFC itself for full legal notices."; the RFC itself for full legal notices.";
revision 2020-06-29 { revision 2020-11-02 {
description description
"Initial revision"; "Initial revision.";
reference reference
"RFC XXXX: A YANG Data Model for Layer 2 "RFC 8944: A YANG Data Model for Layer 2 Network Topologies";
Network Topologies";
} }
feature VLAN { feature VLAN {
description description
"Enables VLAN tag support as defined in IEEE 802.1Q."; "Enables VLAN tag support as defined in IEEE 802.1Q.";
reference reference
"IEEE Std 802.1Q-2014: Bridges and Bridged Networks"; "IEEE Std 802.1Q-2014: Bridges and Bridged Networks";
} }
feature QinQ { feature QinQ {
description description
"Enables QinQ double tag support as defined in IEEE 802.1ad."; "Enables QinQ double tag support as defined in IEEE 802.1ad.";
reference reference
"IEEE Std 802.1ad: Provider Bridges"; "IEEE Std 802.1ad: Provider Bridges";
} }
feature VXLAN { feature VXLAN {
description description
"Enables VXLAN support as defined in RFC7348."; "Enables VXLAN support as defined in RFC 7348.";
reference reference
"RFC 7348: Virtual eXtensible Local Area Network (VXLAN): "RFC 7348: Virtual eXtensible Local Area Network (VXLAN):
A Framework for Overlaying Virtualized Layer 2 A Framework for Overlaying Virtualized Layer 2
Networks over Layer 3 Networks"; Networks over Layer 3 Networks";
} }
identity flag-identity { identity flag-identity {
description description
"Base type for flags."; "Base type for flags.";
} }
identity eth-encapsulation-type { identity eth-encapsulation-type {
base ianaift:iana-interface-type; base ianaift:iana-interface-type;
description description
skipping to change at line 492 skipping to change at line 458
identity qinq { identity qinq {
base eth-encapsulation-type; base eth-encapsulation-type;
description description
"QinQ encapsulation."; "QinQ encapsulation.";
} }
identity pbb { identity pbb {
base eth-encapsulation-type; base eth-encapsulation-type;
description description
"Provider-backbone-bridging (PBB) encapsulation. "Provider Backbone Bridging (PBB) encapsulation.
The PBB functions are developed in IEEE 802.1ah."; The PBB functions are developed in IEEE 802.1ah.";
} }
identity trill { identity trill {
base eth-encapsulation-type; base eth-encapsulation-type;
description description
"TRILL encapsulation."; "Transparent Interconnection of Lots of Links (TRILL)
encapsulation.";
} }
identity vpls { identity vpls {
base eth-encapsulation-type; base eth-encapsulation-type;
description description
"Ethernet VPLS interface encapsulation."; "Ethernet Virtual Private LAN Service (VPLS)
interface encapsulation.";
} }
identity vxlan { identity vxlan {
base eth-encapsulation-type; base eth-encapsulation-type;
description description
"VXLAN MAC in UDP encapsulation."; "VXLAN Media Access Control (MAC) in UDP encapsulation.";
reference reference
"RFC 7348: Virtual eXtensible Local Area Network (VXLAN): "RFC 7348: Virtual eXtensible Local Area Network (VXLAN):
A Framework for Overlaying Virtualized Layer 2 A Framework for Overlaying Virtualized Layer 2
Networks over Layer 3 Networks"; Networks over Layer 3 Networks";
} }
typedef vni { typedef vni {
type uint32 { type uint32 {
range "0..16777215"; range "0..16777215";
} }
description description
"VXLAN Network Identifier or VXLAN Segment ID. "VXLAN Network Identifier or VXLAN Segment ID.
It allows up to 16 M VXLAN segments to coexist It allows up to 16 M VXLAN segments to coexist
within the same administrative domain. within the same administrative domain.
The use of value '0' is implementation-specific."; The use of value '0' is implementation specific.";
reference reference
"RFC 7348: Virtual eXtensible Local Area Network (VXLAN): "RFC 7348: Virtual eXtensible Local Area Network (VXLAN):
A Framework for Overlaying Virtualized Layer 2 A Framework for Overlaying Virtualized Layer 2
Networks over Layer 3 Networks"; Networks over Layer 3 Networks";
} }
typedef l2-flag-type { typedef l2-flag-type {
type identityref { type identityref {
base flag-identity; base flag-identity;
} }
description description
"Base type for L2 flags. One example of L2 flag "Base type for L2 flags. One example of L2 flag
type is trill which represents trill topology type is trill, which represents the trill topology
type."; type.";
} }
typedef node-flag-type { typedef node-flag-type {
type identityref { type identityref {
base flag-identity; base flag-identity;
} }
description description
"Node flag attributes. The physical node can be "Node flag attributes. The physical node can be
one example of node flag attribute."; one example of a node flag attribute.";
} }
typedef link-flag-type { typedef link-flag-type {
type identityref { type identityref {
base flag-identity; base flag-identity;
} }
description description
"Link flag attributes. One example of link flag "Link flag attributes. One example of a link flag
attribute is the pseudowire."; attribute is the pseudowire.";
} }
typedef l2-network-event-type { typedef l2-network-event-type {
type enumeration { type enumeration {
enum addition { enum addition {
value 0; value 0;
description description
"A Layer 2 node or link or termination-point "A Layer 2 node or link or termination-point
has been added."; has been added.";
skipping to change at line 615 skipping to change at line 583
container l2-topology { container l2-topology {
presence "Indicates L2 Network Topology."; presence "Indicates L2 Network Topology.";
description description
"The presence of the container node indicates "The presence of the container node indicates
L2 Network Topology."; L2 Network Topology.";
} }
} }
grouping l2-topology-attributes { grouping l2-topology-attributes {
description description
"L2 Topology scope attributes."; "L2 topology scope attributes.";
container l2-topology-attributes { container l2-topology-attributes {
description description
"Contains L2 topology attributes."; "Contains L2 topology attributes.";
leaf name { leaf name {
type string; type string;
description description
"Name of the topology."; "Name of the topology.";
} }
leaf-list flags { leaf-list flags {
type l2-flag-type; type l2-flag-type;
description description
"Topology flags."; "Topology flags.";
} }
} }
} }
grouping l2-node-attributes { grouping l2-node-attributes {
description description
"L2 node attributes"; "L2 node attributes.";
container l2-node-attributes { container l2-node-attributes {
description description
"Contains L2 node attributes."; "Contains L2 node attributes.";
leaf name { leaf name {
type string; type string;
description description
"Node name."; "Node name.";
} }
leaf-list flags { leaf-list flags {
type node-flag-type; type node-flag-type;
description description
"Node flags. It can be used to indicates "Node flags. It can be used to indicate
node flag attributes."; node flag attributes.";
} }
leaf-list bridge-id { leaf-list bridge-id {
type string { type string {
pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){7}'; pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){7}';
} }
description description
"This is the bridge identifier represented as "This is the bridge identifier represented as a
hexadecimal 8 octet string. It has 4 bits of hexadecimal 8-octet string. It has 4 bits of
priority, 12 bits of MSTI-ID and the base bridge priority, 12 bits of Multiple Spanning Tree
identifier. There may be multiple one for each Instance Identifier (MSTI-ID), and the base bridge
identifier. There may be multiple for each
spanning tree instance."; spanning tree instance.";
reference reference
"RFC 7727: Spanning Tree Protocol (STP) Application of "RFC 7727: Spanning Tree Protocol (STP) Application of
the Inter-Chassis Communication Protocol (ICCP)"; the Inter-Chassis Communication Protocol
(ICCP)";
} }
leaf-list management-address { leaf-list management-address {
type inet:ip-address; type inet:ip-address;
description description
"IP address used for management purpose."; "IP address used for management purpose.";
} }
leaf management-mac { leaf management-mac {
type yang:mac-address; type yang:mac-address;
description description
"This is a MAC address used the bridge management. "This is a MAC address used for the bridge management.
It can be the Bridge Base VID, interface It can be the Bridge Base VLAN ID (VID), interface
MAC address or other. "; MAC address, or other. ";
} }
leaf management-vlan { leaf management-vlan {
type string; type string;
description description
"This is a VLAN that supports the Management address. "This is a VLAN that supports the management address.
The actual VLAN ID type and value would be a member of The actual VLAN ID type and value would be a member of
this VLAN."; this VLAN.";
} }
} }
} }
grouping l2-link-attributes { grouping l2-link-attributes {
description description
"L2 link attributes"; "L2 link attributes.";
container l2-link-attributes { container l2-link-attributes {
description description
"Contains L2 link attributes."; "Contains L2 link attributes.";
leaf name { leaf name {
type string; type string;
description description
"Link name."; "Link name.";
} }
leaf-list flags { leaf-list flags {
type link-flag-type; type link-flag-type;
description description
"Link flags. It can be used to indicate "Link flags. It can be used to indicate
link flag attributes."; link flag attributes.";
} }
leaf rate { leaf rate {
type uint64; type uint64;
units "Kbps"; units "Kbps";
description description
"Link rate. It specifies bandwidth requirements "Link rate. It specifies bandwidth requirements
associated with the specific link. The link associated with the specific link. The link
contains a source and a destination."; contains a source and a destination.";
} }
leaf delay { leaf delay {
type uint32; type uint32;
units "microseconds"; units "microseconds";
description description
"Unidirectional Link delay in "Unidirectional link delay in
microseconds."; microseconds.";
} }
leaf auto-nego { leaf auto-nego {
type boolean; type boolean;
default "true"; default "true";
description description
"Set to true if auto negotiation is supported. "Set to true if auto-negotiation is supported.
Set to false if auto negotiation is not supported."; Set to false if auto-negotiation is not supported.";
} }
leaf duplex { leaf duplex {
type duplex-mode; type duplex-mode;
description description
"Expose the duplex mode, full duplex or half-duplex."; "Exposes the duplex mode, full-duplex or half-duplex.";
} }
} }
} }
grouping l2-termination-point-attributes { grouping l2-termination-point-attributes {
description description
"L2 termination point attributes"; "L2 termination point attributes.";
container l2-termination-point-attributes { container l2-termination-point-attributes {
description description
"Containing L2 termination point attributes."; "Containing L2 termination point attributes.";
leaf interface-name { leaf interface-name {
type string; type string;
description description
"Name of the interface. The name can (but does not "Name of the interface. The name can (but does not
have to) correspond to an interface reference of a have to) correspond to an interface reference of a
containing node's interface, i.e., the path name of a containing node's interface, i.e., the path name of a
corresponding interface data node on the containing corresponding interface data node on the containing
node reminiscent of data type interface-ref defined node is reminiscent of data type interface-ref defined
in RFC 8343. It should be noted that data type in RFC 8343. It should be noted that data type
interface-ref of RFC 8343 cannot be used directly, interface-ref of RFC 8343 cannot be used directly,
as this data type is used to reference an interface as this data type is used to reference an interface
in a datastore of a single node in the network, not in a datastore of a single node in the network, not
to uniquely reference interfaces across a network."; to uniquely reference interfaces across a network.";
} }
leaf mac-address { leaf mac-address {
type yang:mac-address; type yang:mac-address;
description description
"Interface MAC address for logical link control."; "Interface MAC address for logical link control.";
} }
leaf-list port-number { leaf-list port-number {
type uint32; type uint32;
description description
" List of port numbers of the Bridge ports for which each " List of port numbers of the bridge ports for which each
entry contains Bridge management information."; entry contains bridge management information.";
} }
leaf-list unnumbered-id { leaf-list unnumbered-id {
type uint32; type uint32;
description description
"List of unnumbered interface identifiers. "List of unnumbered interface identifiers.
The unnumbered interface identifier will correspond to The unnumbered interface identifier will correspond to
the ifIndex value of the interface, i.e., the ifIndex value the ifIndex value of the interface, i.e., the ifIndex
of the ifEntry that represents the interface in value of the ifEntry that represents the interface in
implementations where the Interfaces Group MIB implementations where the Interfaces Group MIB
(RFC 2863) is supported."; (RFC 2863) is supported.";
} }
leaf encapsulation-type { leaf encapsulation-type {
type identityref { type identityref {
base eth-encapsulation-type; base eth-encapsulation-type;
} }
description description
"Encapsulation type of this "Encapsulation type of this
termination point."; termination point.";
} }
leaf outer-tag { leaf outer-tag {
if-feature "VLAN"; if-feature "VLAN";
type dot1q-types:vid-range-type; type dot1q-types:vid-range-type;
description description
"The outermost VLAN tag. It may include a list of VLAN "The outermost VLAN tag. It may include a list of VLAN
Ids, or non overlapping VLAN ranges."; Ids or nonoverlapping VLAN ranges.";
} }
leaf outer-tpid { leaf outer-tpid {
if-feature "QinQ"; if-feature "QinQ";
type dot1q-types:dot1q-tag-type; type dot1q-types:dot1q-tag-type;
description description
"Identifies a specific 802.1Q tag type of outermost VLAN tag."; "Identifies a specific 802.1Q tag type of outermost VLAN
tag.";
} }
leaf inner-tag { leaf inner-tag {
if-feature "VLAN"; if-feature "VLAN";
type dot1q-types:vid-range-type; type dot1q-types:vid-range-type;
description description
"The inner VLAN tag. It may include a list of VLAN "The inner VLAN tag. It may include a list of VLAN
Ids, or non overlapping VLAN ranges."; Ids or nonoverlapping VLAN ranges.";
} }
leaf inner-tpid { leaf inner-tpid {
if-feature "QinQ"; if-feature "QinQ";
type dot1q-types:dot1q-tag-type; type dot1q-types:dot1q-tag-type;
description description
"Identifies a specific 802.1Q tag type of inner VLAN tag."; "Identifies a specific 802.1Q tag type of inner VLAN tag.";
} }
leaf lag { leaf lag {
type boolean; type boolean;
default "false"; default "false";
description description
"Defines whether lag is supported or not. "Defines whether lag is supported or not.
When it is set to true, the lag is supported."; When it is set to true, the lag is supported.";
} }
leaf-list member-link-tp { leaf-list member-link-tp {
when "../lag = 'true'" { when "../lag = 'true'" {
description description
"Relevant only when the lag interface is supported."; "Relevant only when the lag interface is supported.";
} }
type leafref { type leafref {
path "/nw:networks/nw:network/nw:node/nt:termination-point/nt:tp-id"; path "/nw:networks/nw:network/nw:node"
+ "/nt:termination-point/nt:tp-id";
} }
description description
"List of member link termination points associated with "List of member link termination points associated with
specific l2 termination point."; specific L2 termination point.";
} }
container vxlan { container vxlan {
when "derived-from-or-self(../encapsulation-type, 'l2t:vxlan')" { when "derived-from-or-self(../encapsulation-type, "
+ "'l2t:vxlan')" {
description description
"Only applies when the type of the Ethernet "Only applies when the type of the Ethernet
encapsulation is 'vxlan'."; encapsulation is 'vxlan'.";
} }
if-feature "VXLAN"; if-feature "VXLAN";
leaf vni-id { leaf vni-id {
type vni; type vni;
description description
"VXLAN Network Identifier (VNI)."; "VXLAN Network Identifier (VNI).";
} }
skipping to change at line 931 skipping to change at line 904
leaf event-type { leaf event-type {
type l2-network-event-type; type l2-network-event-type;
description description
"Event type."; "Event type.";
} }
uses nt:tp-ref; uses nt:tp-ref;
uses l2-network-type; uses l2-network-type;
uses l2-termination-point-attributes; uses l2-termination-point-attributes;
} }
} }
&lt;CODE ENDS&gt;</artwork> ]]></sourcecode>
</figure></t>
</section> </section>
<section anchor="IANA" numbered="true" toc="default">
<section anchor="IANA" title="IANA Considerations"> <name>IANA Considerations</name>
<t>This document requests IANA to register the following URIs in the <t>IANA has registered the following URIs in the
"ns" subregistry within the "IETF XML Registry" <xref "ns" subregistry within "The IETF XML Registry" <xref target="RFC3688" for
target="RFC3688"/>:</t> mat="default"/>:</t>
<dl newline="false" spacing="compact">
<t><figure> <dt>URI:</dt>
<artwork> URI: urn:ietf:params:xml:ns:yang:ietf-l2-topology <dd>urn:ietf:params:xml:ns:yang:ietf-l2-topology</dd>
Registrant Contact: The IESG. <dt>Registrant Contact:</dt>
XML: N/A; the requested URI is an XML namespace. <dd>The IESG.</dd>
<dt>XML:</dt>
URI: urn:ietf:params:xml:ns:yang:ietf-l2-topology-state <dd>N/A; the requested URI is an XML namespace.</dd>
Registrant Contact: The IESG. </dl>
XML: N/A; the requested URI is an XML namespace. <dl newline="false" spacing="compact">
</artwork> <dt>URI:</dt>
</figure></t> <dd>urn:ietf:params:xml:ns:yang:ietf-l2-topology-state</dd>
<dt>Registrant Contact:</dt>
<t>This document requests IANA to register the following YANG modules in <dd>The IESG.</dd>
the "YANG Module Names" subregistry <xref target="RFC6020"/> within the <dt>XML:</dt>
<dd>N/A; the requested URI is an XML namespace.</dd>
</dl>
<t>IANA has registered the following YANG modules in
the "YANG Module Names" subregistry <xref target="RFC6020" format="default
"/> within the
"YANG Parameters" registry.</t> "YANG Parameters" registry.</t>
<dl newline="false" spacing="compact">
<figure> <dt>Name:</dt>
<artwork> name: ietf-l2-topology <dd>ietf-l2-topology</dd>
namespace: urn:ietf:params:xml:ns:yang:ietf-l2-topology <dt>Namespace:</dt>
prefix: l2t <dd>urn:ietf:params:xml:ns:yang:ietf-l2-topology</dd>
reference: RFC XXXX <dt>Prefix:</dt>
<dd>l2t</dd>
name: ietf-l2-topology-state <dt>Reference:</dt>
namespace: urn:ietf:params:xml:ns:yang:ietf-l2-topology-state <dd>RFC 8944</dd>
prefix: l2t-s </dl>
reference: RFC XXXX</artwork> <dl newline="false" spacing="compact">
</figure> <dt>Name:</dt>
<dd>ietf-l2-topology-state</dd>
<t/> <dt>Namespace:</dt>
<dd>urn:ietf:params:xml:ns:yang:ietf-l2-topology-state</dd>
<dt>Prefix:</dt>
<dd>l2t-s</dd>
<dt>Reference:</dt>
<dd>RFC 8944</dd>
</dl>
<t>These modules are not maintained by IANA.</t> <t>These modules are not maintained by IANA.</t>
</section> </section>
<section anchor="Security" numbered="true" toc="default">
<section anchor="Security" title="Security Considerations"> <name>Security Considerations</name>
<t>The YANG module specified in this document defines a schema for data <t>The YANG modules specified in this document define a schema for data
that is designed to be accessed via network management protocols such as that is designed to be accessed via network management protocols, such as
NETCONF <xref target="RFC6241"/> or RESTCONF <xref target="RFC8040"/>. Network Configuration Protocol (NETCONF) <xref target="RFC6241"
format="default"/> or RESTCONF <xref target="RFC8040"
format="default"/>.
The lowest NETCONF layer is the secure transport layer, and the The lowest NETCONF layer is the secure transport layer, and the
mandatory-to-implement secure transport is Secure Shell (SSH) <xref mandatory-to-implement secure transport is Secure Shell (SSH) <xref target
target="RFC6242"/>. The lowest RESTCONF layer is HTTPS, and the ="RFC6242" format="default"/>. The lowest RESTCONF layer is HTTPS, and the
mandatory-to-implement secure transport is TLS <xref mandatory-to-implement secure transport is TLS <xref target="RFC8446" form
target="RFC8446"/>.</t> at="default"/>.</t>
<t>The Network Configuration Access Control Model (NACM) <xref target="RFC
<t>The Network Configuration Access Control Model (NACM) <xref 8341" format="default"/> provides the means to restrict access for particular
target="RFC8341"/> provides the means to restrict access for particular
NETCONF or RESTCONF users to a preconfigured subset of all available NETCONF or RESTCONF users to a preconfigured subset of all available
NETCONF or RESTCONF protocol operations and content.</t> NETCONF or RESTCONF protocol operations and content.</t>
<t>The Layer 2 topology module defines information that can be <t>The Layer 2 topology module defines information that can be
configurable in certain instances, for example in the case of virtual configurable in certain instances, for example, in the case of virtual
topologies that can be created by client applications. In such cases, a topologies that can be created by client applications. In such cases, a
malicious client could introduce topologies that are undesired. malicious client could introduce topologies that are undesired.
Specifically, a malicious client could attempt to remove or add a node, Specifically, a malicious client could attempt to remove or add a node,
a link, a termination point, by creating or deleting corresponding a link, or a termination point by creating or deleting corresponding
elements in the node, link, and termination point lists, respectively. elements in the node, link, and termination point lists, respectively.
In the case of a topology that is learned, the server will automatically In the case of a topology that is learned, the server will automatically
prohibit such misconfiguration attempts. In the case of a topology that prohibit such misconfiguration attempts. In the case of a topology that
is configured, i.e. whose origin is "intended", the undesired is configured, i.e., whose origin is "intended", the undesired
configuration could become effective and be reflected in the operational configuration could become effective and be reflected in the operational
state datastore [RFC8342], leading to disruption of services provided state datastore <xref target="RFC8342" format="default"/>, leading to
disruption of services provided
via this topology. For those reasons, it is important that the NACM is via this topology. For those reasons, it is important that the NACM is
vigorously applied to prevent topology misconfiguration by unauthorized vigorously applied to prevent topology misconfiguration by unauthorized
clients.</t> clients.</t>
<t>There are a number of data nodes defined in this YANG module that are <t>There are a number of data nodes defined in this YANG module that are
writable/creatable/deletable (i.e., config true, which is the default). writable/creatable/deletable (i.e., config true, which is the default).
These data nodes may be considered sensitive or vulnerable in some These data nodes may be considered sensitive or vulnerable in some
network environments. Write operations (e.g., edit-config) to these data network environments. Write operations (e.g., edit-config) to these data
nodes without proper protection can have a negative effect on network nodes without proper protection can have a negative effect on network
operations. These are the subtrees and data nodes and their operations. These are the subtrees and data nodes and their
sensitivity/vulnerability:<list style="symbols"> sensitivity/vulnerability:</t>
<t>l2-network-attributes: A malicious client could attempt to <dl newline="true" spacing="normal">
<dt>l2-network-attributes:</dt>
<dd>A malicious client could attempt to
sabotage the configuration of any of the contained attributes, such sabotage the configuration of any of the contained attributes, such
as the name or the flag data nodes.</t> as the name or the flag data nodes.</dd>
<dt>l2-node-attributes:</dt>
<t>l2-node-attributes: A malicious client could attempt to sabotage <dd>A malicious client could attempt to sabotage
the configuration of important node attributes, such as the name or the configuration of important node attributes, such as the name or
the management-address.</t> the management-address.</dd>
<dt>l2-link-attributes:</dt>
<t>l2-link-attributes: A malicious client could attempt to sabotage <dd>A malicious client could attempt to sabotage
the configuration of important link attributes, such as the rate or the configuration of important link attributes, such as the rate or
the delay data nodes.</t> the delay data nodes.</dd>
<dt>l2-termination-point-attributes:</dt>
<t>l2-termination-point-attributes: A malicious client could attempt <dd>A malicious client could attempt
to sabotage the configuration of important termination point to sabotage the configuration of important termination point
attributes (e.g., 'maximum-frame-size').</t> attributes (e.g., 'maximum-frame-size').</dd>
</list></t> </dl>
<t>Some of the readable data nodes in this YANG module may be considered <t>Some of the readable data nodes in this YANG module may be considered
sensitive or vulnerable in some network environments. It is thus sensitive or vulnerable in some network environments. It is thus
important to control read access (e.g., via get, get-config, or important to control read access (e.g., via get, get-config, or
notification) to these data nodes. In particular, the YANG model for notification) to these data nodes. In particular, the YANG module for
layer 2 topology may expose sensitive information, for example the MAC Layer 2 topology may expose sensitive information, for example, the MAC
addresses of devices, VLAN/VXLAN identifiers. Unrestricted use of such addresses of devices or VLAN/VXLAN identifiers. Unrestricted use of such
information can lead to privacy violations. For example, listing MAC information can lead to privacy violations. For example, listing MAC
addresses in a network allows monitoring of devices and their movements. addresses in a network allows monitoring of devices and their movements.
Location information can be derived from MAC addresses of network Location information can be derived from MAC addresses of network
devices, bypassing protection of location information by the Operating devices, bypassing protection of location information by the Operating
System.</t> System.</t>
</section> </section>
<section title="Acknowledgements">
<t>The authors would like to acknowledge the comments and suggestions
received from Susan Hares, Alia Atlas, Juergen Schoenwaelder, Mach Chen,
Alexander Clemm, Sriganesh Kini, Oscar Gonz&aacute;lez de Dios, Stig
Venaas, Christian Huitema, and Meral Shirazipour,Benjamin Kaduk,Don
Fedyk.</t>
<t>Many thanks to Ladislav Lhotka for the yang-doctors review.</t>
</section>
</middle> </middle>
<back> <back>
<references title="Normative References">
<?rfc include="reference.RFC.2119"?>
<?rfc include='reference.RFC.3688'?> <displayreference target="I-D.ietf-trill-yang" to="TRILL-YANG"/>
<displayreference target="I-D.ietf-i2rs-usecase-reqs-summary" to="I2RS-UR"/>
<?rfc include='reference.RFC.4202'?>
<?rfc include='reference.RFC.4761'?>
<?rfc include='reference.RFC.4762'?>
<?rfc include='reference.RFC.6020'?>
<?rfc include='reference.RFC.6991'?>
<?rfc include='reference.RFC.7224'?>
<?rfc include='reference.RFC.7348'?>
<?rfc include='reference.RFC.7950'?>
<?rfc include='reference.RFC.8345'?>
<?rfc include='reference.RFC.8446'?>
<?rfc include='reference.RFC.8341'?>
<?rfc include='reference.RFC.8174'?>
</references>
<references title="Informative References">
<?rfc include='reference.RFC.7951'?>
<?rfc include='reference.RFC.8340'?>
<?rfc include='reference.RFC.8342'?>
<?rfc include='reference.RFC.6241'?>
<?rfc include='reference.RFC.6242'?>
<?rfc include='reference.RFC.8040'?>
<?rfc include="reference.I-D.ietf-trill-yang"?>
<reference anchor="IEEE802.1AB">
<front>
<title>Station and Media Access Control Connectivity
Discovery</title>
<author>
<organization/>
</author>
<date day="11" month="March" year="2016"/>
</front>
<seriesInfo name="IEEE" value="Std 802.1AB-2016"/>
</reference>
<reference anchor="IEEE802.1Qcp">
<front>
<title>Bridges and Bridged Networks - Amendment: YANG Data
Model</title>
<author>
<organization/>
</author>
<date day="14" month="September" year="2018"/>
</front>
<seriesInfo name="IEEE" value="Std 802.1Qcp-2018"/>
</reference>
<reference anchor="IEEE802.1ad">
<front>
<title>Virtual Bridged Local Area Networks Amendment 4: Provider
Bridges</title>
<author>
<organization/>
</author>
<date month="May" year="2006"/>
</front>
<seriesInfo name="IEEE" value="Std 802.1ad-2005"/> <references>
</reference> <name>References</name>
<references>
<name>Normative References</name>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.2119.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.3688.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.6020.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.6991.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.7224.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.7348.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.7950.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.8345.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.8446.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.8341.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.8174.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.6241.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.6242.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.8040.xml"/>
</references>
<references>
<name>Informative References</name>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.7951.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.8340.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.8342.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.7727.xml"/>
<reference anchor="IEEE802.1ah"> <!-- [I-D.ietf-trill-yang] IESG state Expired -->
<front>
<title>Virtual Bridged Local Area Networks Amendment 4: Provider
Bridges</title>
<author> <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D
<organization/> .ietf-trill-yang.xml"/>
</author>
<date day="14" month="August" year="2008"/> <!-- [I-D.ietf-i2rs-usecase-reqs-summary] IESG state Expired -->
</front>
<seriesInfo name="IEEE" value="Std 802.1ah-2008"/> <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D.
</reference> ietf-i2rs-usecase-reqs-summary.xml"/>
<reference anchor="I2RS-UR"> <reference anchor="IEEE802.1AB">
<front> <front>
<title>Summary of I2RS Use Case Requirements</title> <title>IEEE Standard for Local and metropolitan area networks -
Station and Media Access Control Connectivity Discovery</title>
<author>
<organization>IEEE</organization>
</author>
<date month="March" year="2016"/>
</front>
<seriesInfo name="IEEE" value="Std 802.1AB-2016"/>
<seriesInfo name="DOI" value="10.1109/IEEESTD.2016.7433915"/>
</reference>
<author fullname="Susan Hares" initials="S." surname="Hares"> <reference anchor="IEEE802.1Qcp">
<organization/> <front>
</author> <title>IEEE Standard for Local and metropolitan area
networks--Bridges and Bridged Networks--Amendment 30: YANG Data
Model</title>
<author>
<organization>IEEE</organization>
</author>
<date month="September" year="2018"/>
</front>
<seriesInfo name="IEEE" value="Std 802.1Qcp-2018"/>
<seriesInfo name="DOI" value=" 10.1109/IEEESTD.2018.8467507"/>
</reference>
<author fullname="Mach Chen" initials="M." surname="Chen"> <reference anchor="IEEE802.1ad">
<organization/> <front>
</author> <title>IEEE Standard for Local and Metropolitan Area
Networks--Virtual Bridged Local Area Networks--Amendment 4:
Provider Bridges</title>
<author>
<organization>IEEE</organization>
</author>
<date month="May" year="2006"/>
</front>
<seriesInfo name="IEEE" value="Std 802.1ad-2005"/>
<seriesInfo name="DOI" value="10.1109/IEEESTD.2006.6044678"/>
</reference>
<date month="November" year="2016"/> <reference anchor="IEEE802.1ah">
</front> <front>
<title>IEEE Standard for Local and metropolitan area networks --
Virtual Bridged Local Area Networks Amendment 7: Provider Backbone
Bridges</title>
<author>
<organization>IEEE</organization>
</author>
<date month="August" year="2008"/>
</front>
<seriesInfo name="IEEE" value="Std 802.1ah-2008"/>
<seriesInfo name="DOI" value=" 10.1109/IEEESTD.2008.4602826"/>
</reference>
<seriesInfo name="Internet-Draft" <reference anchor="IEEE802.1Q-2014">
value="draft-ietf-i2rs-usecase-reqs-summary-03"/> <front>
</reference> <title>IEEE Standard for Local and metropolitan area
networks--Bridges and Bridged Networks</title>
<author>
<organization>IEEE</organization>
</author>
<date month="December" year="2014"/>
</front>
<seriesInfo name="IEEE" value="802.1Q-2014"/>
<seriesInfo name="DOI" value="10.1109/IEEESTD.2014.6991462"/>
</reference>
</references>
</references> </references>
<section numbered="true" toc="default">
<section title="Companion YANG Module for Non-NMDA Compliant Implementations <name>Companion YANG Module for Non-NMDA-Compliant Implementations</name>
">
<t>The YANG module ietf-l2-topology defined in this document augments <t>The YANG module ietf-l2-topology defined in this document augments
two modules, "ietf-network" and "ietf-network-topology", that are two modules, "ietf-network" and "ietf-network-topology", that are
designed to be used in conjunction with implementations that support the designed to be used in conjunction with implementations that support the
Network Management Datastore Architecture (NMDA) defined in <xref Network Management Datastore Architecture (NMDA) defined in <xref
target="RFC8342"/>. In order to allow implementations to use the model target="RFC8342" format="default"/>. In order to allow implementations
to use the model
even in cases when NMDA is not supported, a set of companion modules even in cases when NMDA is not supported, a set of companion modules
have been defined that represent a state model of networks and network have been defined that represent a state model of networks and network
topologies, "ietf-network-state" and "ietf-network-topology-state", topologies, "ietf-network-state" and "ietf-network-topology-state",
respectively.</t> respectively.</t>
<t>In order to be able to use the model for Layer 2 topologies defined
<t>In order to be able to use the model for layer 2 topologies defined in this document in conjunction with non-NMDA-compliant implementations,
in this document in conjunction with non-NMDA compliant implementations,
a corresponding companion module is defined that represents the a corresponding companion module is defined that represents the
operational state of layer 2 network topologies. The module operational state of Layer 2 network topologies. The module
"ietf-l2-topology-state" mirrors the module "ietf-l2-topology" defined "ietf-l2-topology-state" mirrors the module "ietf-l2-topology" defined
in <xref target="L2YANG"/>. However, it augments "ietf-network-state" in <xref target="L2YANG" format="default"/>. However, it augments "ietf-ne twork-state"
and "ietf-network-topology-state" (instead of "ietf-network" and and "ietf-network-topology-state" (instead of "ietf-network" and
"ietf-network-topology") and all its data nodes are "ietf-network-topology") and all its data nodes are
non-configurable.</t> nonconfigurable.</t>
<t>The companion module "ietf-l2-topology" <bcp14>SHOULD NOT</bcp14> be su
<t>The companion module "ietf-l2-topology" SHOULD NOT be supported by pported by
implementations that support NMDA. It is for this reason that this implementations that support NMDA. It is for this reason that this
module is defined in the informative Appendix.</t> module is defined in the informative appendix.</t>
<t>As the structure of this module mirrors that of its underlying
<t>As the structure of this modules mirrors that of its underlying
modules, the YANG tree is not depicted separately.</t> modules, the YANG tree is not depicted separately.</t>
<sourcecode name="ietf-l2-topology-state@2020-11-02.yang" type="yang" mark
<t><figure> ers="true"><![CDATA[
<artwork>&lt;CODE BEGINS&gt; file "ietf-l2-topology-state@2020-06-29.y
ang"
module ietf-l2-topology-state { module ietf-l2-topology-state {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-l2-topology-state"; namespace "urn:ietf:params:xml:ns:yang:ietf-l2-topology-state";
prefix l2t-s; prefix l2t-s;
import ietf-network-state { import ietf-network-state {
prefix nw-s; prefix nw-s;
reference reference
"RFC 8345: A YANG Data Model for Network Topologies"; "RFC 8345: A YANG Data Model for Network Topologies";
} }
import ietf-network-topology-state { import ietf-network-topology-state {
prefix nt-s; prefix nt-s;
reference reference
"RFC 8345: A YANG Data Model for Network Topologies"; "RFC 8345: A YANG Data Model for Network Topologies";
} }
import ietf-l2-topology { import ietf-l2-topology {
prefix l2t; prefix l2t;
reference reference
"RFC XXXX: A YANG Data Model for Layer 2 Network "RFC 8944: A YANG Data Model for Layer 2 Network Topologies";
Topologies";
} }
organization organization
"IETF I2RS (Interface to the Routing System) Working Group"; "IETF I2RS (Interface to the Routing System) Working Group";
contact contact
"WG Web: &lt;http://tools.ietf.org/wg/i2rs/&gt; "WG Web: <http://tools.ietf.org/wg/i2rs/>
WG List: &lt;mailto:i2rs@ietf.org&gt; WG List: <mailto:i2rs@ietf.org>
Editor: Jie Dong Editor: Jie Dong
<mailto:jie.dong@huawei.com&gt; <mailto:jie.dong@huawei.com&gt;
Editor: Xiugang Wei Editor: Xiugang Wei
<mailto:weixiugang@huawei.com&gt; <mailto:weixiugang@huawei.com&gt;
Editor: Qin Wu Editor: Qin Wu
<mailto:bill.wu@huawei.com&gt; <mailto:bill.wu@huawei.com&gt;
Editor: Mohamed Boucadair Editor: Mohamed Boucadair
<mailto:mohamed.boucadair@orange.com&gt; <mailto:mohamed.boucadair@orange.com&gt;
Editor: Anders Liu Editor: Anders Liu
<andersliu@tencent.com&gt;"; <andersliu@tencent.com&gt;";
description description
"This module defines a model for Layer 2 Network Topology "This module defines a model for Layer 2 Network Topology
state, representing topology that either is learned or state, representing topology that either is learned or
results from applying topology that has been configured per results from applying topology that has been configured per
the 'ietf-l2-topology' model, mirroring the the 'ietf-l2-topology' model, mirroring the
corresponding data nodes in this model. corresponding data nodes in this model.
This model mirrors 'ietf-l2-topology' but contains only This model mirrors 'ietf-l2-topology' but contains only
read-only state data. The model is not needed when the read-only state data. The model is not needed when the
underlying implementation infrastructure supports the underlying implementation infrastructure supports the
skipping to change at line 1267 skipping to change at line 1213
Copyright (c) 2020 IETF Trust and the persons identified as Copyright (c) 2020 IETF Trust and the persons identified as
authors of the code. All rights reserved. authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(http://trustee.ietf.org/license-info). (http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see This version of this YANG module is part of RFC 8944; see
the RFC itself for full legal notices."; the RFC itself for full legal notices.";
revision 2020-06-29 { revision 2020-11-02 {
description description
"Initial revision"; "Initial revision.";
reference reference
"RFC XXXX: A YANG Data Model for Layer 2 Network "RFC 8944: A YANG Data Model for Layer 2 Network Topologies";
Topologies";
} }
/* /*
* Data nodes * Data nodes
*/ */
augment "/nw-s:networks/nw-s:network/nw-s:network-types" { augment "/nw-s:networks/nw-s:network/nw-s:network-types" {
description description
"Introduces a new network type for L2 topology."; "Introduces a new network type for L2 topology.";
uses l2t:l2-network-type; uses l2t:l2-network-type;
skipping to change at line 1354 skipping to change at line 1299
description description
"Event type."; "Event type.";
} }
uses nw-s:node-ref; uses nw-s:node-ref;
uses l2t:l2-network-type; uses l2t:l2-network-type;
uses l2t:l2-node-attributes; uses l2t:l2-node-attributes;
} }
notification l2-link-event { notification l2-link-event {
description description
"Notification event for a L2 link."; "Notification event for an L2 link.";
leaf event-type { leaf event-type {
type l2t:l2-network-event-type; type l2t:l2-network-event-type;
description description
"Event type."; "Event type.";
} }
uses nt-s:link-ref; uses nt-s:link-ref;
uses l2t:l2-network-type; uses l2t:l2-network-type;
uses l2t:l2-link-attributes; uses l2t:l2-link-attributes;
} }
skipping to change at line 1378 skipping to change at line 1323
leaf event-type { leaf event-type {
type l2t:l2-network-event-type; type l2t:l2-network-event-type;
description description
"Event type."; "Event type.";
} }
uses nt-s:tp-ref; uses nt-s:tp-ref;
uses l2t:l2-network-type; uses l2t:l2-network-type;
uses l2t:l2-termination-point-attributes; uses l2t:l2-termination-point-attributes;
} }
} }
&lt;CODE ENDS&gt;</artwork> ]]></sourcecode>
</figure></t>
</section> </section>
<section anchor="ex" numbered="true" toc="default">
<section anchor="ex" title="An Example"> <name>An Example</name>
<t>This section contains an example of an instance data tree in JSON <t>This section contains an example of an instance data tree in JSON
encoding <xref target="RFC7951"/>. The example instantiates encoding <xref target="RFC7951" format="default"/>. The example instantiat es
"ietf-l2-topology" for the topology that is depicted in the following "ietf-l2-topology" for the topology that is depicted in the following
diagram. There are three nodes: D1, D2, and D3. D1 has three termination diagram. There are three nodes: D1, D2, and D3. D1 has three termination
points: 1-0-1, 1-2-1, and 1-3-1. D2 has three termination points as points: 1-0-1, 1-2-1, and 1-3-1. D2 has three termination points as
well: 2-1-1, 2-0-1, and 2-3-1. D3 has two termination points: 3-1-1 and well: 2-1-1, 2-0-1, and 2-3-1. D3 has two termination points: 3-1-1 and
3-2-1. For termination point 1-0-1, it provides lag support and has two 3-2-1. For termination point 1-0-1, it provides lag support and has two
member link termination points: 1-0-1-1,1-0-1-2. In addition, there are member link termination points: 1-0-1-1 and 1-0-1-2. In addition, there ar
six links, two between each pair of nodes, with one going in each e
six links, two between each pair of nodes with one going in each
direction.</t> direction.</t>
<figure>
<t><figure> <name>A Network Topology Example</name>
<artwork> +------------+ +----------- <artwork name="" type="" align="left" alt=""><![CDATA[
-+ +------------+ +------------+
| D1 | | D2 | | D1 | | D2 |
1-0-1-1 /-\ /-\ /-\ /-\ 1-0-1-1 /-\ /-\ /-\ /-\
&lt;---------&gt;| | 1-0-1 | |----------------&gt;| | 2-1-1 | | <--------->| | 1-0-1 | |---------------->| | 2-1-1 | |
1-0-1-2 | | 1-2-1 | |&lt;----------------| | 2-0-1 | | 1-0-1-2 | | 1-2-1 | |<----------------| | 2-0-1 | |
&lt;--------&gt; \-/ 1-3-1 \-/ \-/ 2-3-1 \-/ <--------> \-/ 1-3-1 \-/ \-/ 2-3-1 \-/
| /----\ | | /----\ | | /----\ | | /----\ |
+---| |---+ +---| |---+ +---| |---+ +---| |---+
\----/ \----/ \----/ \----/
A | A | A | A |
| | | | | | | |
| | | | | | | |
| | +------------+ | | | | +------------+ | |
| | | D3 | | | | | | D3 | | |
| | /-\ /-\ | | | | /-\ /-\ | |
| +-----&gt;| | 3-1-1 | |-------+ | | +----->| | 3-1-1 | |-------+ |
+---------| | 3-2-1 | |&lt;---------+ +---------| | 3-2-1 | |<---------+
\-/ \-/ \-/ \-/
| | | |
+------------+ +------------+
]]></artwork>
Figure 2. A Network Topology Example</artwork> </figure>
</figure></t>
<t>The corresponding instance data tree is depicted below:</t> <t>The corresponding instance data tree is depicted below:</t>
<sourcecode type="json"><![CDATA[
<t><figure> {
<artwork>{
"ietf-network:networks": { "ietf-network:networks": {
"network": [ "network": [
{ {
"network-id": "l2-topo-example", "network-id": "l2-topo-example",
"node": [ "node": [
{ {
"node-id": "D1", "node-id": "D1",
"ietf-network-topology:termination-point": [ "ietf-network-topology:termination-point": [
{ {
"tp-id": "1-0-1", "tp-id": "1-0-1",
skipping to change at line 1616 skipping to change at line 1558
"dest-tp": "2-3-1" "dest-tp": "2-3-1"
}, },
"ietf-l2-topology:l2-link-attributes": { "ietf-l2-topology:l2-link-attributes": {
"rate": "1000" "rate": "1000"
} }
} }
] ]
} }
] ]
} }
}</artwork> }
</figure></t> ]]></sourcecode>
</section>
<section numbered="false" toc="default">
<name>Acknowledgements</name>
<t>The authors would like to acknowledge the comments and suggestions
received from <contact fullname="Susan Hares"/>, <contact fullname="Alia
Atlas"/>, <contact fullname="Juergen Schoenwaelder"/>, <contact
fullname="Mach Chen"/>, <contact fullname="Alexander Clemm"/>, <contact
fullname="Sriganesh Kini"/>, <contact fullname="Oscar Gonzalez de
Dios"/>, <contact fullname="Stig Venaas"/>, <contact fullname="Christian
Huitema"/>, <contact fullname="Meral Shirazipour"/>, <contact
fullname="Benjamin Kaduk"/>, and <contact fullname="Don Fedyk"/>.</t>
<t>Many thanks to <contact fullname="Ladislav Lhotka"/> for the
yang-doctors review.</t>
</section> </section>
</back> </back>
</rfc> </rfc>
 End of changes. 172 change blocks. 
500 lines changed or deleted 488 lines changed or added

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