| 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/ | ||||