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 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* -> /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? -> /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? -> /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? -> /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? -> /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? -> /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? -> /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? -> /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* -> /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><CODE BEGINS> 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: <http://tools.ietf.org/wg/i2rs/> | "WG Web: <http://tools.ietf.org/wg/i2rs/> | |||
WG List: <mailto:i2rs@ietf.org> | WG List: <mailto:i2rs@ietf.org> | |||
Editor: Jie Dong | Editor: Jie Dong | |||
<mailto:jie.dong@huawei.com> | <mailto:jie.dong@huawei.com> | |||
Editor: Xiugang Wei | Editor: Xiugang Wei | |||
<mailto:weixiugang@huawei.com> | <mailto:weixiugang@huawei.com> | |||
Editor: Qin Wu | Editor: Qin Wu | |||
<mailto:bill.wu@huawei.com> | <mailto:bill.wu@huawei.com> | |||
Editor: Mohamed Boucadair | Editor: Mohamed Boucadair | |||
<mailto:mohamed.boucadair@orange.com> | <mailto:mohamed.boucadair@orange.com> | |||
Editor: Anders Liu | Editor: Anders Liu | |||
<andersliu@tencent.com>"; | <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; | |||
} | } | |||
} | } | |||
<CODE ENDS></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á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><CODE BEGINS> 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: <http://tools.ietf.org/wg/i2rs/> | "WG Web: <http://tools.ietf.org/wg/i2rs/> | |||
WG List: <mailto:i2rs@ietf.org> | WG List: <mailto:i2rs@ietf.org> | |||
Editor: Jie Dong | Editor: Jie Dong | |||
<mailto:jie.dong@huawei.com> | <mailto:jie.dong@huawei.com> | |||
Editor: Xiugang Wei | Editor: Xiugang Wei | |||
<mailto:weixiugang@huawei.com> | <mailto:weixiugang@huawei.com> | |||
Editor: Qin Wu | Editor: Qin Wu | |||
<mailto:bill.wu@huawei.com> | <mailto:bill.wu@huawei.com> | |||
Editor: Mohamed Boucadair | Editor: Mohamed Boucadair | |||
<mailto:mohamed.boucadair@orange.com> | <mailto:mohamed.boucadair@orange.com> | |||
Editor: Anders Liu | Editor: Anders Liu | |||
<andersliu@tencent.com>"; | <andersliu@tencent.com>"; | |||
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; | |||
} | } | |||
} | } | |||
<CODE ENDS></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 /-\ /-\ /-\ /-\ | |||
<--------->| | 1-0-1 | |---------------->| | 2-1-1 | | | <--------->| | 1-0-1 | |---------------->| | 2-1-1 | | | |||
1-0-1-2 | | 1-2-1 | |<----------------| | 2-0-1 | | | 1-0-1-2 | | 1-2-1 | |<----------------| | 2-0-1 | | | |||
<--------> \-/ 1-3-1 \-/ \-/ 2-3-1 \-/ | <--------> \-/ 1-3-1 \-/ \-/ 2-3-1 \-/ | |||
| /----\ | | /----\ | | | /----\ | | /----\ | | |||
+---| |---+ +---| |---+ | +---| |---+ +---| |---+ | |||
\----/ \----/ | \----/ \----/ | |||
A | A | | A | A | | |||
| | | | | | | | | | |||
| | | | | | | | | | |||
| | +------------+ | | | | | +------------+ | | | |||
| | | D3 | | | | | | | D3 | | | | |||
| | /-\ /-\ | | | | | /-\ /-\ | | | |||
| +----->| | 3-1-1 | |-------+ | | | +----->| | 3-1-1 | |-------+ | | |||
+---------| | 3-2-1 | |<---------+ | +---------| | 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/ |