| rfc9181xml2.original.xml | rfc9181.xml | |||
|---|---|---|---|---|
| <?xml version="1.0" encoding="US-ASCII"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
| <!-- This template is for creating an Internet Draft using xml2rfc, | ||||
| which is available here: http://xml.resource.org. --> | <!DOCTYPE rfc [ | |||
| <!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | <!ENTITY nbsp " "> | |||
| <!-- One method to get references from the online citation libraries. | <!ENTITY zwsp "​"> | |||
| There has to be one entity for each item to be referenced. | <!ENTITY nbhy "‑"> | |||
| An alternate method (rfc include) is described in the references. --> | <!ENTITY wj "⁠"> | |||
| ]> | ]> | |||
| <?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?> | ||||
| <!-- used by XSLT processors --> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" docName="draft-ietf-opsawg-vpn-c | |||
| <!-- For a complete list and description of processing instructions (PIs), | ommon-12" number="9181" ipr="trust200902" obsoletes="" updates="" submissionType | |||
| please see http://xml.resource.org/authoring/README.html. --> | ="IETF" category="std" consensus="true" xml:lang="en" tocInclude="true" tocDepth | |||
| <!-- Below are generally applicable Processing Instructions (PIs) that most I-Ds | ="4" symRefs="true" sortRefs="true" version="3"> | |||
| might want to use. | ||||
| (Here they are set differently than their defaults in xml2rfc v1.32) --> | <!-- xml2rfc v2v3 conversion 3.10.0 --> | |||
| <?rfc strict="yes" ?> | ||||
| <!-- give errors regarding ID-nits and DTD validation --> | ||||
| <!-- control the table of contents (ToC) --> | ||||
| <?rfc toc="yes"?> | ||||
| <!-- generate a ToC --> | ||||
| <?rfc tocdepth="4"?> | ||||
| <!-- the number of levels of subsections in ToC. default: 3 --> | ||||
| <!-- control references --> | ||||
| <?rfc symrefs="yes"?> | ||||
| <!-- use symbolic references tags, i.e, [RFC2119] instead of [1] --> | ||||
| <?rfc sortrefs="yes" ?> | ||||
| <!-- sort the reference entries alphabetically --> | ||||
| <!-- control vertical white space | ||||
| (using these PIs as follows is recommended by the RFC Editor) --> | ||||
| <?rfc compact="yes" ?> | ||||
| <!-- do not start each main section on a new page --> | ||||
| <?rfc subcompact="no" ?> | ||||
| <!-- keep one blank line between list items --> | ||||
| <!-- end of list of popular I-D processing instructions --> | ||||
| <rfc category="std" docName="draft-ietf-opsawg-vpn-common-12" | ||||
| ipr="trust200902"> | ||||
| <front> | <front> | |||
| <title abbrev="VPN Common YANG Model">A Layer 2/3 VPN Common YANG | <title abbrev="VPN Common YANG Data Model">A Common YANG Data Model for Laye | |||
| Model</title> | r 2 and Layer 3 VPNs</title> | |||
| <seriesInfo name="RFC" value="9181"/> | ||||
| <author fullname="Samier Barguil" initials="S." surname="Barguil"> | <author fullname="Samier Barguil" initials="S." surname="Barguil"> | |||
| <organization>Telefonica</organization> | <organization>Telefonica</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street></street> | ||||
| <city>Madrid</city> | <city>Madrid</city> | |||
| <region></region> | ||||
| <code></code> | ||||
| <country>Spain</country> | <country>Spain</country> | |||
| </postal> | </postal> | |||
| <phone></phone> | ||||
| <facsimile></facsimile> | ||||
| <email>samier.barguilgiraldo.ext@telefonica.com</email> | <email>samier.barguilgiraldo.ext@telefonica.com</email> | |||
| <uri/> | ||||
| <uri></uri> | ||||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Oscar Gonzalez de Dios" initials="O" role="editor" surname | ||||
| <author fullname="Oscar Gonzalez de Dios" initials="O" role="editor" | ="Gonzalez de Dios"> | |||
| surname="Gonzalez de Dios"> | ||||
| <organization>Telefonica</organization> | <organization>Telefonica</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street></street> | ||||
| <!-- Reorder these if your country does things differently --> | ||||
| <city>Madrid</city> | <city>Madrid</city> | |||
| <region></region> | ||||
| <code></code> | ||||
| <country>Spain</country> | <country>Spain</country> | |||
| </postal> | </postal> | |||
| <phone></phone> | ||||
| <email>oscar.gonzalezdedios@telefonica.com</email> | <email>oscar.gonzalezdedios@telefonica.com</email> | |||
| <!-- uri and facsimile elements may also be added --> | ||||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Mohamed Boucadair" initials="M." role="editor" surname="Bo | ||||
| <author fullname="Mohamed Boucadair" initials="M." role="editor" | ucadair"> | |||
| surname="Boucadair"> | ||||
| <organization>Orange</organization> | <organization>Orange</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street></street> | ||||
| <!-- Reorder these if your country does things differently --> | ||||
| <city></city> | ||||
| <region></region> | ||||
| <code></code> | ||||
| <country>France</country> | <country>France</country> | |||
| </postal> | </postal> | |||
| <phone></phone> | ||||
| <email>mohamed.boucadair@orange.com</email> | <email>mohamed.boucadair@orange.com</email> | |||
| <!-- uri and facsimile elements may also be added --> | ||||
| </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> | |||
| <region>Jiangsu</region> | <region>Jiangsu</region> | |||
| <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> | |||
| <date year="2022" month="February"/> | ||||
| <date /> | ||||
| <workgroup>opsawg</workgroup> | <workgroup>opsawg</workgroup> | |||
| <keyword>service automation</keyword> | <keyword>service automation</keyword> | |||
| <keyword>network automation</keyword> | <keyword>network automation</keyword> | |||
| <keyword>service delivery</keyword> | <keyword>service delivery</keyword> | |||
| <keyword>service provisioning</keyword> | <keyword>service provisioning</keyword> | |||
| <keyword>Slice</keyword> | <keyword>Slice</keyword> | |||
| <keyword>network slicing</keyword> | <keyword>network slicing</keyword> | |||
| <keyword>vitalisation</keyword> | <keyword>vitalisation</keyword> | |||
| <keyword>Automation</keyword> | <keyword>Automation</keyword> | |||
| <keyword>Network Models</keyword> | <keyword>Network Models</keyword> | |||
| <abstract> | <abstract> | |||
| <t>This document defines a common YANG module that is meant to be reused | <t>This document defines a common YANG module that is meant to be reused | |||
| by various VPN-related modules such as Layer 3 VPN and Layer 2 VPN | by various VPN-related modules such as Layer 3 VPN and Layer 2 VPN | |||
| network models.</t> | network models.</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 Layer 2/3 VPN Common YANG Model";</t> | ||||
| <t>reference: RFC XXXX</t> | ||||
| </list></t> | ||||
| <t>Also, please update the "revision" date of the YANG module.</t> | ||||
| </note> | ||||
| </front> | </front> | |||
| <middle> | <middle> | |||
| <section anchor="intro" title="Introduction"> | <section anchor="intro" numbered="true" toc="default"> | |||
| <t>The IETF has specified YANG data modules for VPN services, e.g., | <name>Introduction</name> | |||
| Layer 3 VPN Service Model (L3SM) <xref target="RFC8299"></xref> or Layer | <t>The IETF has specified YANG modules for VPN services, e.g., the | |||
| 2 VPN Service Model (L2SM) <xref target="RFC8466"></xref>. Other | Layer 3 VPN Service Model (L3SM) <xref target="RFC8299" format="default"/> | |||
| relevant YANG models are the Layer 3 VPN Network Model (L3NM) <xref | or the Layer | |||
| target="I-D.ietf-opsawg-l3sm-l3nm"></xref> and the Layer 2 VPN Network | 2 VPN Service Model (L2SM) <xref target="RFC8466" format="default"/>. Othe | |||
| Model (L2NM) <xref target="I-D.ietf-opsawg-l2nm"></xref>. There are | r | |||
| relevant YANG data models are the Layer 3 VPN Network Model (L3NM) <xref t | ||||
| arget="RFC9182" format="default"/> and the Layer 2 VPN Network | ||||
| Model (L2NM) <xref target="L2NM-YANG" format="default"/>. There are | ||||
| common data nodes and structures that are present in all of these models | common data nodes and structures that are present in all of these models | |||
| or at least a subset of them.</t> | or at least a subset of them.</t> | |||
| <t>This document defines a common YANG module that is meant to be reused | <t>This document defines a common YANG module that is meant to be reused | |||
| by various VPN-related modules such as L3NM <xref | by various VPN-related modules such as the L3NM <xref target="RFC9182" for | |||
| target="I-D.ietf-opsawg-l3sm-l3nm"></xref> and L2NM <xref | mat="default"/> and the L2NM <xref target="L2NM-YANG" format="default"/>: "ietf- | |||
| target="I-D.ietf-opsawg-l2nm"></xref>: "ietf-vpn-common" (<xref | vpn-common" (<xref target="module" format="default"/>).</t> | |||
| target="module"></xref>).</t> | ||||
| <t>The "ietf-vpn-common" module includes a set of identities, types, and | <t>The "ietf-vpn-common" module includes a set of identities, types, and | |||
| groupings that are meant to be reused by other VPN-related YANG modules | groupings that are meant to be reused by other VPN-related YANG modules | |||
| independently of their layer (e.g., Layer 2, Layer 3) and the type of | independently of their layer (e.g., Layer 2, Layer 3) and the type of | |||
| the module (e.g., network model, service model) including possible | the module (e.g., network model, service model), including possible | |||
| future revisions of existing models (e.g., L3SM <xref | future revisions of existing models (e.g., the L3SM <xref target="RFC8299" | |||
| target="RFC8299"></xref> or L2SM <xref target="RFC8466"></xref>).</t> | format="default"/> or the L2SM <xref target="RFC8466" format="default"/>).</t> | |||
| </section> | </section> | |||
| <section anchor="terminology" numbered="true" toc="default"> | ||||
| <section anchor="terminology" title="Terminology"> | <name>Terminology</name> | |||
| <t>The terminology for describing YANG modules is defined in <xref | <t>The terminology for describing YANG modules is defined in <xref target= | |||
| target="RFC7950"></xref>.</t> | "RFC7950" format="default"/>.</t> | |||
| <t>The meanings of the symbols in tree diagrams are defined in <xref targe | ||||
| <t>The meaning of the symbols in tree diagrams is defined in <xref | t="RFC8340" format="default"/>.</t> | |||
| target="RFC8340"></xref>.</t> | <t>The reader may refer to <xref target="RFC4026" format="default"/> and < | |||
| xref target="RFC4176" format="default"/> for VPN-related terms.</t> | ||||
| <t>The reader may refer to <xref target="RFC4026"></xref> and <xref | <t>This document inherits many terms from <xref target="RFC8299" format="d | |||
| target="RFC4176"></xref> for VPN-related terms.</t> | efault"/> | |||
| and <xref target="RFC8466" format="default"/> (e.g., Enhanced Mobile Broad | ||||
| <t>The document inherits many terms from <xref target="RFC8299"></xref> | band | |||
| and <xref target="RFC8466"></xref> (e.g., Enhanced Mobile Broadband | ||||
| (eMBB), Ultra-Reliable and Low Latency Communications (URLLC), Massive | (eMBB), Ultra-Reliable and Low Latency Communications (URLLC), Massive | |||
| Machine Type Communications (mMTC)).</t> | Machine Type Communications (mMTC)).</t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Description of the VPN Common YANG Module"> | <name>Description of the VPN Common YANG Module</name> | |||
| <t>The "ietf-vpn-common" module defines a set of common VPN-related | <t>The "ietf-vpn-common" module defines a set of common VPN-related | |||
| features, including: <list style="hanging"> | features, including the following:</t> | |||
| <t hangText="Encapsulation features such as:"><list style="symbols"> | <dl newline="false" spacing="normal"> | |||
| <t>Dot1q <xref target="IEEE802.1Q"></xref>,</t> | <dt>Encapsulation features, such as the following:</dt> | |||
| <dd> | ||||
| <t>QinQ <xref target="IEEE802.1ad"></xref>,</t> | <ul spacing="normal"> | |||
| <li>dot1Q <xref target="IEEE802.1Q" format="default"/>,</li> | ||||
| <t>link aggregation <xref target="IEEE802.1AX"></xref>, and</t> | <li>QinQ <xref target="IEEE802.1ad" format="default"/>,</li> | |||
| <li>link aggregation <xref target="IEEE802.1AX" format="default"/>, | ||||
| <t><xref target="RFC7348">Virtual eXtensible Local Area Network | and</li> | |||
| (VXLAN)</xref>.</t> | <li> | |||
| </list></t> | <xref target="RFC7348" format="default">Virtual eXtensible Local A | |||
| rea Networks | ||||
| <t hangText="Multicast [RFC6513]."></t> | (VXLANs)</xref>.</li> | |||
| </ul> | ||||
| <t hangText="Routing features such as:"><list style="symbols"> | </dd> | |||
| <t>BGP <xref target="RFC4271"></xref>,</t> | <dt>Multicast <xref target="RFC6513" format="default"/>.</dt> | |||
| <dd/> | ||||
| <t>OSPF <xref target="RFC4577"></xref><xref | <dt>Routing features, such as the following:</dt> | |||
| target="RFC6565"></xref>,</t> | <dd> | |||
| <ul spacing="normal"> | ||||
| <t>IS-IS <xref target="ISO10589"></xref>,</t> | <li>BGP <xref target="RFC4271" format="default"/>,</li> | |||
| <li>OSPF <xref target="RFC4577" format="default"/> <xref target="RFC | ||||
| <t>RIP <xref target="RFC2080"></xref><xref | 6565" format="default"/>,</li> | |||
| target="RFC2453"></xref>,</t> | <li>IS-IS <xref target="ISO10589" format="default"/>,</li> | |||
| <li>RIP <xref target="RFC2080" format="default"/> <xref target="RFC2 | ||||
| <t>Bidirectional Forwarding Detection (BFD) <xref | 453" format="default"/>,</li> | |||
| target="RFC5880"></xref><xref target="RFC7880"></xref>, and</t> | <li>Bidirectional Forwarding Detection (BFD) <xref target="RFC5880" | |||
| format="default"/> <xref target="RFC7880" format="default"/>, and</li> | ||||
| <t>Virtual Router Redundancy Protocol (VRRP) <xref | <li>Virtual Router Redundancy Protocol (VRRP) <xref target="RFC5798" | |||
| target="RFC5798"></xref>.</t> | format="default"/>.</li> | |||
| </list></t> | </ul> | |||
| </list> Also, the module defines a set of identities, including:<list | </dd> | |||
| style="hanging"> | </dl> | |||
| <t hangText="'service-type':">Used to identify the VPN service type. | <t> Also, the module defines a set of identities, including the following: | |||
| Examples of supported service types are: <list style="symbols"> | </t> | |||
| <t>L3VPN,</t> | <dl newline="false" spacing="normal"> | |||
| <dt>'service-type':</dt> | ||||
| <t>Virtual Private LAN Service (VPLS) using BGP <xref | <dd> | |||
| target="RFC4761"></xref>,</t> | <t>Used to identify the VPN service type. | |||
| Examples of supported service types are as follows: </t> | ||||
| <t><xref target="RFC4762">VPLS using Label Distribution Protocol | <ul spacing="normal"> | |||
| (LDP)</xref>,</t> | <li>L3VPN,</li> | |||
| <li>Virtual Private LAN Service (VPLS) using BGP <xref target="RFC47 | ||||
| <t><xref target="RFC8214">Virtual Private Wire Service | 61" format="default"/>,</li> | |||
| (VPWS)</xref>,</t> | <li> | |||
| <xref target="RFC4762" format="default">VPLS using the Label Distr | ||||
| <t><xref target="RFC7432">BGP MPLS-Based Ethernet | ibution Protocol | |||
| VPN</xref>,</t> | (LDP)</xref>,</li> | |||
| <li> | ||||
| <t><xref target="RFC8365">Ethernet VPN (EVPN)</xref>, and</t> | <xref target="RFC8214" format="default">Virtual Private Wire Servi | |||
| ce | ||||
| <t><xref target="RFC7623">Provider Backbone Bridging Combined | (VPWS)</xref>,</li> | |||
| with Ethernet VPN (PBB-EVPN)</xref>.</t> | <li> | |||
| </list></t> | <xref target="RFC7432" format="default">BGP MPLS-Based Ethernet | |||
| VPN</xref>,</li> | ||||
| <t hangText="'vpn-signaling-type':">Used to identify the signaling | <li> | |||
| <xref target="RFC8365" format="default">Ethernet VPN (EVPN)</xref> | ||||
| , and</li> | ||||
| <li> | ||||
| <xref target="RFC7623" format="default">Provider Backbone Bridging | ||||
| Combined | ||||
| with Ethernet VPN (PBB-EVPN)</xref>.</li> | ||||
| </ul> | ||||
| </dd> | ||||
| <dt>'vpn-signaling-type':</dt> | ||||
| <dd> | ||||
| <t>Used to identify the signaling | ||||
| mode used for a given service type. Examples of supported VPN | mode used for a given service type. Examples of supported VPN | |||
| signaling types are: <list style="symbols"> | signaling types are as follows: </t> | |||
| <t>L2VPNs using BGP <xref target="RFC6624"></xref>.</t> | <ul spacing="normal"> | |||
| <li>L2VPNs using BGP <xref target="RFC6624" format="default"/>,</li> | ||||
| <t>LDP <xref target="RFC5036"></xref>, and</t> | <li>LDP <xref target="RFC5036" format="default"/>, and</li> | |||
| <li>Layer Two Tunneling Protocol (L2TP) <xref target="RFC3931" forma | ||||
| <t>Layer Two Tunneling Protocol (L2TP) <xref | t="default"/>.</li> | |||
| target="RFC3931"></xref>.</t> | </ul> | |||
| </list></t> | </dd> | |||
| </list></t> | </dl> | |||
| <t>The module covers both IPv4 <xref target="RFC0791" format="default"/> a | ||||
| <t>The module covers both IPv4 <xref target="RFC0791"></xref> and IPv6 | nd IPv6 | |||
| <xref target="RFC8200"></xref> identities. It also includes multicast | <xref target="RFC8200" format="default"/> identities. It also includes | |||
| related identities such as Internet Group Management Protocol version 1 | multicast-related identities such as Internet Group Management Protocol ve | |||
| (IGMPv1) <xref target="RFC1112"></xref>, IGMPv2 <xref | rsion 1 | |||
| target="RFC2236"></xref>, IGMPv3 <xref target="RFC3376"></xref>, | (IGMPv1) <xref target="RFC1112" format="default"/>, IGMPv2 <xref target="R | |||
| Multicast Listener Discovery version 1 (MLDv1) <xref | FC2236" format="default"/>, IGMPv3 <xref target="RFC3376" format="default"/>, | |||
| target="RFC2710"></xref>, MLDv2 <xref target="RFC3810"></xref>, and | Multicast Listener Discovery version 1 (MLDv1) <xref target="RFC2710" form | |||
| Protocol Independent Multicast (PIM) <xref target="RFC7761"></xref>.</t> | at="default"/>, MLDv2 <xref target="RFC3810" format="default"/>, and | |||
| Protocol Independent Multicast (PIM) <xref target="RFC7761" format="defaul | ||||
| <t>The reader should refer to <xref target="module"></xref> for the full | t"/>.</t> | |||
| <t>The reader should refer to <xref target="module" format="default"/> for | ||||
| the full | ||||
| list of supported identities (identities related to address families, | list of supported identities (identities related to address families, | |||
| VPN topologies, network access types, operational and administrative | VPN topologies, network access types, operational and administrative | |||
| status, site or node roles, VPN service constraints, routing protocols, | status, site or node role, VPN service constraints, routing protocols, | |||
| routes imports and exports, bandwidth and Quality of Service (QoS), | route import and export policies, bandwidth, Quality of Service (QoS), | |||
| etc.).</t> | etc.).</t> | |||
| <t>The "ietf-vpn-common" module also contains a set of reusable | <t>The "ietf-vpn-common" module also contains a set of reusable | |||
| VPN-related groupings. The tree diagram of the "ietf-vpn-common" module | VPN-related groupings. <xref target="ctree" format="default"/> provides th | |||
| that depicts the common groupings is provided in <xref | e tree diagram that depicts the common groupings for the "ietf-vpn-common" modul | |||
| target="ctree"></xref>.</t> | e.</t> | |||
| <figure anchor="ctree"> | ||||
| <t><figure align="center" anchor="ctree" title="VPN Common Tree"> | <name>VPN Common Tree</name> | |||
| <artwork align="center"><![CDATA[module: ietf-vpn-common | <sourcecode name="" type="yangtree"><![CDATA[module: ietf-vpn-common | |||
| grouping vpn-description: | ||||
| grouping vpn-description | ||||
| +-- vpn-id? vpn-id | +-- vpn-id? vpn-id | |||
| +-- vpn-name? string | +-- vpn-name? string | |||
| +-- vpn-description? string | +-- vpn-description? string | |||
| +-- customer-name? string | +-- customer-name? string | |||
| grouping vpn-profile-cfg | grouping vpn-profile-cfg: | |||
| +-- valid-provider-identifiers | +-- valid-provider-identifiers | |||
| +-- external-connectivity-identifier* [id] | +-- external-connectivity-identifier* [id] | |||
| | {external-connectivity}? | | {external-connectivity}? | |||
| | +-- id string | | +-- id string | |||
| +-- encryption-profile-identifier* [id] | +-- encryption-profile-identifier* [id] | |||
| | +-- id string | | +-- id string | |||
| +-- qos-profile-identifier* [id] | +-- qos-profile-identifier* [id] | |||
| | +-- id string | | +-- id string | |||
| +-- bfd-profile-identifier* [id] | +-- bfd-profile-identifier* [id] | |||
| | +-- id string | | +-- id string | |||
| +-- forwarding-profile-identifier* [id] | +-- forwarding-profile-identifier* [id] | |||
| | +-- id string | | +-- id string | |||
| +-- routing-profile-identifier* [id] | +-- routing-profile-identifier* [id] | |||
| +-- id string | +-- id string | |||
| grouping oper-status-timestamp | grouping oper-status-timestamp: | |||
| +--ro status? identityref | +--ro status? identityref | |||
| +--ro last-change? yang:date-and-time | +--ro last-change? yang:date-and-time | |||
| grouping service-status | grouping service-status: | |||
| +-- status | +-- status | |||
| +-- admin-status | +-- admin-status | |||
| | +-- status? identityref | | +-- status? identityref | |||
| | +-- last-change? yang:date-and-time | | +-- last-change? yang:date-and-time | |||
| +-- oper-status | +--ro oper-status | |||
| +--ro status? identityref | +--ro status? identityref | |||
| +--ro last-change? yang:date-and-time | +--ro last-change? yang:date-and-time | |||
| grouping underlay-transport | grouping underlay-transport: | |||
| +-- (type)? | +-- (type)? | |||
| +--:(abstract) | +--:(abstract) | |||
| | +-- transport-instance-id? string | | +-- transport-instance-id? string | |||
| | +-- instance-type? identityref | ||||
| +--:(protocol) | +--:(protocol) | |||
| +-- protocol* identityref | +-- protocol* identityref | |||
| grouping vpn-route-targets | grouping vpn-route-targets: | |||
| +-- vpn-target* [id] | +-- vpn-target* [id] | |||
| | +-- id uint8 | | +-- id uint8 | |||
| | +-- route-targets* [route-target] | | +-- route-targets* [route-target] | |||
| | | +-- route-target rt-types:route-target | | | +-- route-target rt-types:route-target | |||
| | +-- route-target-type rt-types:route-target-type | | +-- route-target-type rt-types:route-target-type | |||
| +-- vpn-policies | +-- vpn-policies | |||
| +-- import-policy? string | +-- import-policy? string | |||
| +-- export-policy? string | +-- export-policy? string | |||
| grouping route-distinguisher | grouping route-distinguisher: | |||
| ... | ... | |||
| grouping vpn-components-group | grouping vpn-components-group: | |||
| +-- groups | +-- groups | |||
| +-- group* [group-id] | +-- group* [group-id] | |||
| +-- group-id string | +-- group-id string | |||
| grouping placement-constraints | grouping placement-constraints: | |||
| +-- constraint* [constraint-type] | +-- constraint* [constraint-type] | |||
| +-- constraint-type? identityref | +-- constraint-type? identityref | |||
| +-- target | +-- target | |||
| +-- (target-flavor)? | +-- (target-flavor)? | |||
| +--:(id) | +--:(id) | |||
| | +-- group* [group-id] | | +-- group* [group-id] | |||
| | +-- group-id string | | +-- group-id string | |||
| +--:(all-accesses) | +--:(all-accesses) | |||
| | +-- all-other-accesses? empty | | +-- all-other-accesses? empty | |||
| +--:(all-groups) | +--:(all-groups) | |||
| +-- all-other-groups? empty | +-- all-other-groups? empty | |||
| grouping ports | grouping ports: | |||
| ... | ... | |||
| grouping qos-classification-policy | grouping qos-classification-policy: | |||
| ... | ... | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure></t> | </figure> | |||
| <t>The descriptions of the common groupings are provided below:</t> | ||||
| <t>The description of the common groupings is provided below:</t> | <dl newline="true" spacing="normal"> | |||
| <dt>'vpn-description':</dt> | ||||
| <t><list style="hanging"> | <dd>A YANG grouping that provides common administrative VPN | |||
| <t hangText="'vpn-description':"><list style="empty"> | ||||
| <t>A YANG grouping that provides common administrative VPN | ||||
| information such as an identifier, a name, a textual | information such as an identifier, a name, a textual | |||
| description, and a customer name.</t> | description, and a customer name.</dd> | |||
| </list></t> | <dt>'vpn-profile-cfg':</dt> | |||
| <dd> | ||||
| <t hangText="'vpn-profile-cfg':"><list style="empty"> | ||||
| <t>A YANG grouping that defines a set of valid profiles | <t>A YANG grouping that defines a set of valid profiles | |||
| (encryption, routing, forwarding, etc.) that can be bound to a | (encryption, routing, forwarding, etc.) that can be bound to a | |||
| Layer 2/3 VPN. This document does not make any assumption about | Layer 2/3 VPN. This document does not make any assumptions about | |||
| the structure of such profiles, but allows "gluing" a VPN | the structure of such profiles but allows "gluing" a VPN | |||
| service with other parameters that can be required locally to | service with other parameters that can be required locally to | |||
| provide added value features to requesting customers. <vspace | provide value-added features to requesting customers. </t> | |||
| blankLines="1" />For example, a service provider may provide an | <t>For example, a service provider may provide | |||
| external connectivity to a VPN customer (e.g., to a private or | external connectivity to a VPN customer (e.g., to a private or | |||
| public cloud, Internet). Such service may involve tweaking both | public cloud, Internet). Such a service may involve tweaking both | |||
| filtering and NAT rules (e.g., bind a Virtual Routing and | filtering and NAT rules (e.g., binding a Virtual Routing and | |||
| Forwarding (VRF) interface with a NAT instance as discussed in | Forwarding (VRF) interface with a NAT instance as discussed in | |||
| Section 2.10 of <xref target="RFC8512"></xref>). These added | <xref target="RFC8512" sectionFormat="of" section="2.10"/>). These | |||
| value features may be bound to all or a subset of network | value-added features may be bound to all, or a subset of, network | |||
| accesses. Some of these added value features may be implemented | accesses. Some of these value-added features may be implemented | |||
| in nodes other than PEs (e.g., a P node or even a dedicated node | in nodes other than Provider Edges (PEs) (e.g., a P node or even a | |||
| that hosts the NAT function). <vspace blankLines="1" />It is out | dedicated node | |||
| of the scope of this document to elaborate the structure of | that hosts the NAT function). </t> | |||
| these profiles.</t> | <t>Elaborating on the structure of these profiles is beyond the sc | |||
| </list></t> | ope of this document.</t> | |||
| </dd> | ||||
| <t hangText="'oper-status-timestamp':"><list style="empty"> | <dt>'oper-status-timestamp':</dt> | |||
| <t>A YANG grouping that defines the operational status updates | <dd>A YANG grouping that defines the operational status updates | |||
| of a VPN service or component.</t> | of a VPN service or component.</dd> | |||
| </list></t> | <dt>'service-status':</dt> | |||
| <dd>A YANG grouping that defines the administrative and | ||||
| <t hangText="'service-status':"><list style="empty"> | ||||
| <t>A YANG grouping that defines the administrative and | ||||
| operational status of a component. The grouping can be applied | operational status of a component. The grouping can be applied | |||
| to the whole service or an endpoint.</t> | to the whole service or an endpoint.</dd> | |||
| </list></t> | <dt>'underlay-transport':</dt> | |||
| <dd> | ||||
| <t hangText="'underlay-transport':"><list style="empty"> | ||||
| <t>A YANG grouping that defines the type of the underlay | <t>A YANG grouping that defines the type of the underlay | |||
| transport for a VPN service or how that underlay is set. <vspace | transport for a VPN service or how that underlay is set. </t> | |||
| blankLines="1" />The underlay transport can be expressed as an | <t>The underlay transport can be expressed as an | |||
| abstract transport instance (e.g., an identifier of a VPN+ | abstract transport instance (e.g., an identifier of a VPN+ | |||
| instance <xref target="I-D.ietf-teas-enhanced-vpn"></xref>, a | instance <xref target="I-D.ietf-teas-enhanced-vpn" format="default | |||
| virtual network identifier <xref | "/>, a | |||
| target="I-D.ietf-teas-actn-vn-yang"></xref><xref | virtual network identifier <xref target="ACTN-VN-YANG" format="def | |||
| target="RFC8453"></xref>, or a network slice name <xref | ault"/> <xref target="RFC8453" format="default"/>, or a network slice name <xref | |||
| target="I-D.ietf-teas-ietf-network-slices"></xref>) or as an | target="Network-Slices-Framework" format="default"/>) or as an | |||
| ordered list of the actual protocols to be enabled in the | ordered list of the actual protocols to be enabled in the | |||
| network. <vspace blankLines="1" />The module supports a rich set | network. </t> | |||
| of protocol identifiers that can be used, e.g., to refer to an | <t>The module supports a rich set | |||
| underlay transport. Examples of supported protocols are:<list | of protocol identifiers that can be used, for example, to refer to | |||
| style="symbols"> | an | |||
| <t>IP-in-IP <xref target="RFC2003"></xref><xref | underlay transport. Examples of supported protocols are as follows | |||
| target="RFC2473"></xref>,</t> | :</t> | |||
| <ul spacing="normal"> | ||||
| <t>GRE <xref target="RFC1701"></xref><xref | <li>IP in IP <xref target="RFC2003" format="default"/> <xref tar | |||
| target="RFC1702"></xref><xref target="RFC7676"></xref>,</t> | get="RFC2473" format="default"/>,</li> | |||
| <li>Generic Routing Encapsulation (GRE) <xref target="RFC1701" f | ||||
| <t>MPLS-in-UDP <xref target="RFC7510"></xref>,</t> | ormat="default"/> <xref target="RFC1702" format="default"/> <xref target="RFC767 | |||
| 6" format="default"/>,</li> | ||||
| <t>Generic Network Virtualization Encapsulation (GENEVE) | <li>MPLS in UDP <xref target="RFC7510" format="default"/>,</li> | |||
| <xref target="RFC8926"></xref>,</t> | <li>Generic Network Virtualization Encapsulation (Geneve) | |||
| <xref target="RFC8926" format="default"/>,</li> | ||||
| <t>Segment Routing (SR) <xref target="RFC8660"></xref><xref | <li>Segment Routing (SR) <xref target="RFC8660" format="default" | |||
| target="RFC8663"></xref><xref target="RFC8754"></xref>,</t> | /> <xref target="RFC8663" format="default"/> <xref target="RFC8754" format="def | |||
| ault"/>,</li> | ||||
| <t>Resource ReSerVation Protocol (RSVP) with traffic | <li>Resource ReSerVation Protocol (RSVP) with traffic | |||
| engineering extensions <xref target="RFC3209"></xref>, | engineering extensions <xref target="RFC3209" format="default" | |||
| and</t> | />, | |||
| and</li> | ||||
| <t>BGP with labeled prefixes <xref | <li>BGP with labeled prefixes <xref target="RFC8277" format="def | |||
| target="RFC8277"></xref>.</t> | ault"/>.</li> | |||
| </list></t> | </ul> | |||
| </list></t> | </dd> | |||
| <dt>'vpn-route-targets':</dt> | ||||
| <t hangText="'vpn-route-targets':"><list style="empty"> | <dd>A YANG grouping that defines Route Target (RT) import/export | |||
| <t>A YANG grouping that defines Route Target (RT) import/export | ||||
| rules used in a BGP-enabled VPN. This grouping can be used for | rules used in a BGP-enabled VPN. This grouping can be used for | |||
| both L3VPNs <xref target="RFC4364"></xref> and L2VPNs<xref | both L3VPNs <xref target="RFC4364" format="default"/> and L2VPNs < | |||
| target="RFC4664"></xref>. Note that this is modelled as a list | xref target="RFC4664" format="default"/>. Note that this is modeled as a list | |||
| to ease the reuse of this grouping in modules where an RT | to ease the reuse of this grouping in modules where an RT | |||
| identifier is needed (e.g., associate an operator with RTs).</t> | identifier is needed (e.g., associating an operator with RTs).</dd | |||
| </list></t> | > | |||
| <dt>'route-distinguisher': </dt> | ||||
| <t hangText="'route-distinguisher': "><list style="empty"> | <dd> | |||
| <t>A YANG grouping that defines Route Distinguishers (RDs). | <t>A YANG grouping that defines Route Distinguishers (RDs).</t> | |||
| <vspace blankLines="1" />As depicted in <xref | <t>As depicted in <xref target="rtrd" format="default"/>, the modu | |||
| target="rtrd"></xref>, the module supports these RD assignment | le supports the following RD assignment | |||
| modes: direct assignment, automatic assignment from a given | modes: direct assignment, full automatic assignment, automatic ass | |||
| pool, automatic assignment, and no assignment. <vspace | ignment from a given pool, and no assignment.</t> | |||
| blankLines="1" />Also, the module accommodates deployments where | <t>Also, the module accommodates deployments where | |||
| only the Assigned Number subfield of RDs (Section 4.2 of <xref | only the Assigned Number subfield of RDs (<xref target="RFC4364" | |||
| target="RFC4364"></xref>) is assigned from a pool while the | sectionFormat="of" section="4.2"/>) is assigned from a pool while | |||
| Administrator subfield is set to, e.g., the router-id that is | the | |||
| assigned to a VPN node. The module supports these modes for | Administrator subfield is set to, for example, the Router ID that | |||
| is | ||||
| assigned to a VPN node. The module supports three modes for | ||||
| managing the Assigned Number subfield: explicit assignment, | managing the Assigned Number subfield: explicit assignment, | |||
| auto-assignment from a pool, and full auto-assignment.<figure | automatic assignment from a given pool, and full automatic assignm | |||
| align="center" anchor="rtrd" | ent.</t> | |||
| title="Route Distinguisher Grouping Subtree"> | ||||
| <artwork align="center"><![CDATA[ grouping route-distinguishe | <figure anchor="rtrd"> | |||
| r | <name>Route Distinguisher Grouping Subtree</name> | |||
| <sourcecode name="" type="yangtree"><![CDATA[ grouping route-distinguisher: | ||||
| +-- (rd-choice)? | +-- (rd-choice)? | |||
| +--:(directly-assigned) | +--:(directly-assigned) | |||
| | +-- rd? rt-types:route-distinguisher | | +-- rd? rt-types:route-distinguisher | |||
| +--:(directly-assigned-suffix) | +--:(directly-assigned-suffix) | |||
| | +-- rd-suffix? uint16 | | +-- rd-suffix? uint16 | |||
| +--:(auto-assigned) | +--:(auto-assigned) | |||
| | +-- rd-auto | | +-- rd-auto | |||
| | +-- (auto-mode)? | | +-- (auto-mode)? | |||
| | | +--:(from-pool) | | | +--:(from-pool) | |||
| | | | +-- rd-pool-name? string | | | | +-- rd-pool-name? string | |||
| | | +--:(full-auto) | | | +--:(full-auto) | |||
| | | +-- auto? empty | | | +-- auto? empty | |||
| | +--ro auto-assigned-rd? rt-types:route-distinguisher | | +--ro auto-assigned-rd? | |||
| | | rt-types:route-distinguisher | ||||
| +--:(auto-assigned-suffix) | +--:(auto-assigned-suffix) | |||
| | +-- rd-auto-suffix | | +-- rd-auto-suffix | |||
| | +-- (auto-mode)? | | +-- (auto-mode)? | |||
| | | +--:(from-pool) | | | +--:(from-pool) | |||
| | | | +-- rd-pool-name? string | | | | +-- rd-pool-name? string | |||
| | | +--:(full-auto) | | | +--:(full-auto) | |||
| | | +-- auto? empty | | | +-- auto? empty | |||
| | +--ro auto-assigned-rd-suffix? uint16 | | +--ro auto-assigned-rd-suffix? uint16 | |||
| +--:(no-rd) | +--:(no-rd) | |||
| +-- no-rd? empty | +-- no-rd? empty | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure></t> | </figure> | |||
| </list></t> | </dd> | |||
| <dt>'vpn-components-group':</dt> | ||||
| <t hangText="'vpn-components-group':"><list style="empty"> | <dd>A YANG grouping that is used to group VPN nodes, VPN network | |||
| <t>A YANG grouping that is used to group VPN nodes, VPN network | ||||
| accesses, or sites. For example, diversity or redundancy | accesses, or sites. For example, diversity or redundancy | |||
| constraints can be applied on a per-group basis.</t> | constraints can be applied on a per-group basis.</dd> | |||
| </list></t> | <dt>'placement-constraints':</dt> | |||
| <dd>A YANG grouping that is used to define the placement | ||||
| <t hangText="'placement-constraints':"><list style="empty"> | constraints of a VPN node, VPN network access, or site.</dd> | |||
| <t>A YANG grouping that is used to define the placement | <dt>'ports': </dt> | |||
| constraints of a VPN node, VPN network access, or site.</t> | <dd> | |||
| </list></t> | ||||
| <t hangText="'ports': "><list style="empty"> | ||||
| <t>A YANG grouping that defines ranges of source and destination | <t>A YANG grouping that defines ranges of source and destination | |||
| port numbers and operators. The subtree of this grouping is | port numbers and operators. The subtree of this grouping is | |||
| depicted in <xref target="ports"></xref>.<figure align="center" | depicted in <xref target="ports" format="default"/>.</t> | |||
| anchor="ports" title="Port Numbers Grouping Subtree"> | <figure anchor="ports"> | |||
| <artwork align="center"><![CDATA[ grouping ports | <name>Port Numbers Grouping Subtree</name> | |||
| <sourcecode name="" type="yangtree"><![CDATA[ grouping ports: | ||||
| +-- (source-port)? | +-- (source-port)? | |||
| | +--:(source-port-range-or-operator) | | +--:(source-port-range-or-operator) | |||
| | +-- source-port-range-or-operator | | +-- source-port-range-or-operator | |||
| | +-- (port-range-or-operator)? | | +-- (port-range-or-operator)? | |||
| | +--:(range) | | +--:(range) | |||
| | | +-- lower-port inet:port-number | | | +-- lower-port inet:port-number | |||
| | | +-- upper-port inet:port-number | | | +-- upper-port inet:port-number | |||
| | +--:(operator) | | +--:(operator) | |||
| | +-- operator? operator | | +-- operator? operator | |||
| | +-- port inet:port-number | | +-- port inet:port-number | |||
| +-- (destination-port)? | +-- (destination-port)? | |||
| +--:(destination-port-range-or-operator) | +--:(destination-port-range-or-operator) | |||
| +-- destination-port-range-or-operator | +-- destination-port-range-or-operator | |||
| +-- (port-range-or-operator)? | +-- (port-range-or-operator)? | |||
| +--:(range) | +--:(range) | |||
| | +-- lower-port inet:port-number | | +-- lower-port inet:port-number | |||
| | +-- upper-port inet:port-number | | +-- upper-port inet:port-number | |||
| +--:(operator) | +--:(operator) | |||
| +-- operator? operator | +-- operator? operator | |||
| +-- port inet:port-number | +-- port inet:port-number | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure></t> | </figure> | |||
| </list></t> | </dd> | |||
| <dt>'qos-classification-policy':</dt> | ||||
| <t hangText="'qos-classification-policy':"><list style="empty"> | <dd> | |||
| <t>A YANG grouping that defines a set of QoS classification | <t>A YANG grouping that defines a set of QoS classification | |||
| policies based on various match Layer 3/4 and application | policies based on various Layer 3/4 and application match criteria | |||
| criteria. The subtree of this grouping is depicted in <xref | . | |||
| target="qos"></xref>. <vspace blankLines="1" />The QoS match | The subtree of this grouping is depicted in <xref target="qos" format="default" | |||
| />. </t> | ||||
| <t>The QoS match | ||||
| criteria reuse groupings that are defined in the packet fields | criteria reuse groupings that are defined in the packet fields | |||
| module "ietf-packet-fields" (Section 4.2 of <xref | module "ietf-packet-fields" (<xref target="RFC8519" sectionFormat= | |||
| target="RFC8519"></xref>). <vspace blankLines="1" />Any layer 4 | "of" | |||
| section="4.2"/>). </t> | ||||
| <t>Any Layer 4 | ||||
| protocol can be indicated in the 'protocol' data node under | protocol can be indicated in the 'protocol' data node under | |||
| 'l3', but only TCP and UDP specific match criteria are | 'l3', but only TCP- and UDP-specific match criteria are | |||
| elaborated in this version as these protocols are widely used in | elaborated on in this version, as these protocols are widely used | |||
| in | ||||
| the context of VPN services. Future revisions can be considered | the context of VPN services. Future revisions can be considered | |||
| to add other Layer 4 specific parameters (e.g., Stream Control | to add other Layer-4-specific parameters (e.g., the Stream Control | |||
| Transmission Protocol <xref target="RFC4960"></xref>), if | Transmission Protocol <xref target="RFC4960" format="default"/>), | |||
| needed. <vspace blankLines="1" />Some transport protocols use | if | |||
| existing protocols (e.g., TCP or UDP) as substrate. The match | needed. </t> | |||
| <t>Some transport protocols use | ||||
| existing protocols (e.g., TCP or UDP) as the substrate. The match | ||||
| criteria for such protocols may rely upon the 'protocol' under | criteria for such protocols may rely upon the 'protocol' under | |||
| 'l3', TCP/UDP match criteria shown in <xref | 'l3', TCP/UDP match criteria as shown in <xref target="qos" format | |||
| target="qos"></xref>, part of the TCP/UDP payload, or a | ="default"/>, part of the TCP/UDP payload, or a | |||
| combination thereof. This version of the module does not support | combination thereof. This version of the module does not support | |||
| such advanced match criteria. Future revisions of the module may | such advanced match criteria. Future revisions of the module may | |||
| consider adding match criteria based on the transport protocol | consider adding match criteria based on the transport protocol | |||
| payload (e.g., by means of a bitmask match). <figure | payload (e.g., by means of a bitmask match). </t> | |||
| align="center" anchor="qos" | <figure anchor="qos"> | |||
| title="QoS Classification Subtree"> | <name>QoS Classification Subtree</name> | |||
| <artwork align="center"><![CDATA[ grouping qos-classification | <sourcecode name="" type="yangtree"><![CDATA[ grouping qos-classification-polic | |||
| -policy | y: | |||
| +-- rule* [id] | +-- rule* [id] | |||
| +-- id string | +-- id string | |||
| +-- (match-type)? | +-- (match-type)? | |||
| | +--:(match-flow) | | +--:(match-flow) | |||
| | | +-- (l3)? | | | +-- (l3)? | |||
| | | | +--:(ipv4) | | | | +--:(ipv4) | |||
| | | | | +-- ipv4 | | | | | +-- ipv4 | |||
| | | | | +-- dscp? inet:dscp | | | | | +-- dscp? inet:dscp | |||
| | | | | +-- ecn? uint8 | | | | | +-- ecn? uint8 | |||
| | | | | +-- length? uint16 | | | | | +-- length? uint16 | |||
| | | | | +-- ttl? uint8 | | | | | +-- ttl? uint8 | |||
| | | | | +-- protocol? uint8 | | | | | +-- protocol? uint8 | |||
| | | | | +-- ihl? uint8 | | | | | +-- ihl? uint8 | |||
| | | | | +-- flags? bits | | | | | +-- flags? bits | |||
| | | | | +-- offset? uint16 | | | | | +-- offset? uint16 | |||
| | | | | +-- identification? uint16 | | | | | +-- identification? uint16 | |||
| | | | | +-- (destination-network)? | | | | | +-- (destination-network)? | |||
| | | | | | +--:(destination-ipv4-network) | | | | | | +--:(destination-ipv4-network) | |||
| | | | | | +-- destination-ipv4-network? | | | | | | +-- destination-ipv4-network? | |||
| | | | | | inet:ipv4-prefix | | | | | | inet:ipv4-prefix | |||
| | | | | +-- (source-network)? | | | | | +-- (source-network)? | |||
| | | | | +--:(source-ipv4-network) | | | | | +--:(source-ipv4-network) | |||
| | | | | +-- source-ipv4-network? | | | | | +-- source-ipv4-network? | |||
| | | | | inet:ipv4-prefix | | | | | inet:ipv4-prefix | |||
| | | | +--:(ipv6) | | | | +--:(ipv6) | |||
| | | | +-- ipv6 | | | | +-- ipv6 | |||
| | | | +-- dscp? inet:dscp | | | | +-- dscp? inet:dscp | |||
| | | | +-- ecn? uint8 | | | | +-- ecn? uint8 | |||
| | | | +-- length? uint16 | | | | +-- length? uint16 | |||
| | | | +-- ttl? uint8 | | | | +-- ttl? uint8 | |||
| | | | +-- protocol? uint8 | | | | +-- protocol? uint8 | |||
| | | | +-- (destination-network)? | | | | +-- (destination-network)? | |||
| | | | | +--:(destination-ipv6-network) | | | | | +--:(destination-ipv6-network) | |||
| | | | | +-- destination-ipv6-network? | | | | | +-- destination-ipv6-network? | |||
| | | | | inet:ipv6-prefix | | | | | inet:ipv6-prefix | |||
| | | | +-- (source-network)? | | | | +-- (source-network)? | |||
| | | | | +--:(source-ipv6-network) | | | | | +--:(source-ipv6-network) | |||
| | | | | +-- source-ipv6-network? | | | | | +-- source-ipv6-network? | |||
| | | | | inet:ipv6-prefix | | | | | inet:ipv6-prefix | |||
| | | | +-- flow-label? | | | | +-- flow-label? | |||
| | | | inet:ipv6-flow-label | | | | inet:ipv6-flow-label | |||
| | | +-- (l4)? | | | +-- (l4)? | |||
| | | +--:(tcp) | | | +--:(tcp) | |||
| | | | +-- tcp | | | | +-- tcp | |||
| | | | +-- sequence-number? uint32 | | | | +-- sequence-number? uint32 | |||
| | | | +-- acknowledgement-number? uint32 | | | | +-- acknowledgement-number? uint32 | |||
| | | | +-- data-offset? uint8 | | | | +-- data-offset? uint8 | |||
| | | | +-- reserved? uint8 | | | | +-- reserved? uint8 | |||
| | | | +-- flags? bits | | | | +-- flags? bits | |||
| | | | +-- window-size? uint16 | | | | +-- window-size? uint16 | |||
| | | | +-- urgent-pointer? uint16 | | | | +-- urgent-pointer? uint16 | |||
| | | | +-- options? binary | | | | +-- options? binary | |||
| | | | +-- (source-port)? | | | | +-- (source-port)? | |||
| | | | | +--:(source-port-range-or-operator) | | | | | +--:(source-port-range-or-operator) | |||
| | | | | +-- source-port-range-or-operator | | | | | +-- source-port-range-or-operator | |||
| | | | | +-- (port-range-or-operator)? | | | | | +-- (port-range-or-operator)? | |||
| | | | | +--:(range) | | | | | +--:(range) | |||
| | | | | | +-- lower-port | | | | | | +-- lower-port | |||
| | | | | | | inet:port-number | | | | | | | inet:port-number | |||
| | | | | | +-- upper-port | | | | | | +-- upper-port | |||
| | | | | | inet:port-number | | | | | | inet:port-number | |||
| | | | | +--:(operator) | | | | | +--:(operator) | |||
| skipping to change at line 694 ¶ | skipping to change at line 544 ¶ | |||
| | | | +-- lower-port | | | | +-- lower-port | |||
| | | | | inet:port-number | | | | | inet:port-number | |||
| | | | +-- upper-port | | | | +-- upper-port | |||
| | | | inet:port-number | | | | inet:port-number | |||
| | | +--:(operator) | | | +--:(operator) | |||
| | | +-- operator? operator | | | +-- operator? operator | |||
| | | +-- port | | | +-- port | |||
| | | inet:port-number | | | inet:port-number | |||
| | +--:(match-application) | | +--:(match-application) | |||
| | +-- match-application? identityref | | +-- match-application? identityref | |||
| +-- target-class-id? string {qos}? | +-- target-class-id? string | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure></t> | </figure> | |||
| </list></t> | </dd> | |||
| </list></t> | </dl> | |||
| <t></t> | ||||
| </section> | </section> | |||
| <section anchor="module" numbered="true" toc="default"> | ||||
| <name>Layer 2/3 VPN Common Module</name> | ||||
| <t>This module uses types defined in <xref target="RFC6991" format="defaul | ||||
| t"/>, | ||||
| <xref target="RFC8294" format="default"/>, and <xref target="RFC8519" form | ||||
| at="default"/>. It | ||||
| also uses the extension defined in <xref target="RFC8341" format="default" | ||||
| />.</t> | ||||
| <section anchor="module" title="Layer 2/3 VPN Common Module"> | <sourcecode name="ietf-vpn-common@2022-02-11.yang" type="yang" markers="tr | |||
| <t>This module uses types defined in <xref target="RFC6991"></xref>, | ue"><![CDATA[ | |||
| <xref target="RFC8294"></xref>, and <xref target="RFC8519"></xref>. It | ||||
| also uses the extension defined in <xref target="RFC8341"></xref>.</t> | ||||
| <t><figure> | ||||
| <artwork><![CDATA[<CODE BEGINS> file "ietf-vpn-common@2021-09-10.yang | ||||
| " | ||||
| module ietf-vpn-common { | module ietf-vpn-common { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-vpn-common"; | namespace "urn:ietf:params:xml:ns:yang:ietf-vpn-common"; | |||
| prefix vpn-common; | prefix vpn-common; | |||
| import ietf-netconf-acm { | import ietf-netconf-acm { | |||
| prefix nacm; | prefix nacm; | |||
| reference | reference | |||
| "RFC 8341: Network Configuration Access Control Model"; | "RFC 8341: Network Configuration Access Control Model"; | |||
| } | } | |||
| skipping to change at line 743 ¶ | skipping to change at line 590 ¶ | |||
| "RFC 8519: YANG Data Model for Network Access | "RFC 8519: YANG Data Model for Network Access | |||
| Control Lists (ACLs)"; | Control Lists (ACLs)"; | |||
| } | } | |||
| organization | organization | |||
| "IETF OPSAWG (Operations and Management Area Working Group)"; | "IETF OPSAWG (Operations and Management Area Working Group)"; | |||
| contact | contact | |||
| "WG Web: <https://datatracker.ietf.org/wg/opsawg/> | "WG Web: <https://datatracker.ietf.org/wg/opsawg/> | |||
| WG List: <mailto:opsawg@ietf.org> | WG List: <mailto:opsawg@ietf.org> | |||
| Editor: Mohamed Boucadair | Editor: Mohamed Boucadair | |||
| <mailto:mohamed.boucadair@orange.com> | <mailto:mohamed.boucadair@orange.com> | |||
| Author: Samier Barguil | Author: Samier Barguil | |||
| <mailto:samier.barguilgiraldo.ext@telefonica.com> | <mailto:samier.barguilgiraldo.ext@telefonica.com> | |||
| Author: Oscar Gonzalez de Dios | Editor: Oscar Gonzalez de Dios | |||
| <mailto:oscar.gonzalezdedios@telefonica.com> | <mailto:oscar.gonzalezdedios@telefonica.com> | |||
| Author: Qin Wu | Author: Qin Wu | |||
| <mailto:bill.wu@huawei.com>"; | <mailto:bill.wu@huawei.com>"; | |||
| description | description | |||
| "This YANG module defines a common module that is meant | "This YANG module defines a common module that is meant | |||
| to be reused by various VPN-related modules (e.g., | to be reused by various VPN-related modules (e.g., the | |||
| Layer 3 VPN Service Model (L3SM), Layer 2 VPN Service | Layer 3 VPN Service Model (L3SM), the Layer 2 VPN Service | |||
| Model (L2SM), Layer 3 VPN Network Model (L3NM), Layer 2 | Model (L2SM), the Layer 3 VPN Network Model (L3NM), and | |||
| VPN Network Model (L2NM)). | the Layer 2 VPN Network Model (L2NM)). | |||
| Copyright (c) 2021 IETF Trust and the persons identified as | Copyright (c) 2022 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 | |||
| to the license terms contained in, the Simplified BSD License | the license terms contained in, the Revised BSD License set | |||
| set forth in Section 4.c of the IETF Trust's Legal Provisions | 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). | (https://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 9181; see the | |||
| the RFC itself for full legal notices."; | RFC itself for full legal notices."; | |||
| revision 2021-09-10 { | revision 2022-02-11 { | |||
| description | description | |||
| "Initial revision."; | "Initial revision."; | |||
| reference | reference | |||
| "RFC XXXX: A Layer 2/3 VPN Common YANG Model"; | "RFC 9181: A Common YANG Data Model for Layer 2 and Layer 3 | |||
| VPNs"; | ||||
| } | } | |||
| /******** Collection of VPN-related Features ********/ | /******** Collection of VPN-related features ********/ | |||
| /* | /* | |||
| * Features related to encapsulation schemes | * Features related to encapsulation schemes | |||
| */ | */ | |||
| feature dot1q { | feature dot1q { | |||
| description | description | |||
| "Indicates the support for the Dot1q encapsulation."; | "Indicates support for dot1Q encapsulation."; | |||
| reference | reference | |||
| "IEEE Std 802.1Q: Bridges and Bridged Networks"; | "IEEE Std 802.1Q: IEEE Standard for Local and Metropolitan | |||
| Area Networks--Bridges and Bridged | ||||
| Networks"; | ||||
| } | } | |||
| feature qinq { | feature qinq { | |||
| description | description | |||
| "Indicates the support for the QinQ encapsulation."; | "Indicates support for QinQ encapsulation."; | |||
| reference | reference | |||
| "IEEE Std 802.1ad: Provider Bridges"; | "IEEE Std 802.1ad: IEEE Standard for Local and Metropolitan | |||
| Area Networks---Virtual Bridged Local | ||||
| Area Networks---Amendment 4: Provider | ||||
| Bridges"; | ||||
| } | } | |||
| feature vxlan { | feature vxlan { | |||
| description | description | |||
| "Indicates the support for the Virtual eXtensible | "Indicates support for Virtual eXtensible Local Area | |||
| Local Area Network (VXLAN) encapsulation."; | Network (VXLAN) 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"; | |||
| } | } | |||
| feature qinany { | feature qinany { | |||
| description | description | |||
| "Indicates the support for the QinAny encapsulation. | "Indicates support for QinAny encapsulation. | |||
| The outer VLAN tag is set to a specific value but | The outer VLAN tag is set to a specific value, but | |||
| the inner VLAN tag is set to any."; | the inner VLAN tag is set to any."; | |||
| } | } | |||
| feature lag-interface { | feature lag-interface { | |||
| description | description | |||
| "Indicates the support for Link Aggregation Group (LAG) | "Indicates support for Link Aggregation Groups (LAGs) | |||
| between VPN network accesses."; | between VPN network accesses."; | |||
| reference | reference | |||
| "IEEE Std. 802.1AX: Link Aggregation"; | "IEEE Std 802.1AX: IEEE Standard for Local and Metropolitan | |||
| Area Networks--Link Aggregation"; | ||||
| } | } | |||
| /* | /* | |||
| * Features related to multicast | * Features related to multicast | |||
| */ | */ | |||
| feature multicast { | feature multicast { | |||
| description | description | |||
| "Indicates multicast capabilities support in a VPN."; | "Indicates support for multicast capabilities in a VPN."; | |||
| reference | reference | |||
| "RFC 6513: Multicast in MPLS/BGP IP VPNs"; | "RFC 6513: Multicast in MPLS/BGP IP VPNs"; | |||
| } | } | |||
| feature igmp { | feature igmp { | |||
| description | description | |||
| "Indicates support for Internet Group Management Protocol | "Indicates support for the Internet Group Management | |||
| (IGMP)."; | Protocol (IGMP)."; | |||
| reference | reference | |||
| "RFC 1112: Host Extensions for IP Multicasting | "RFC 1112: Host Extensions for IP Multicasting | |||
| RFC 2236: Internet Group Management Protocol, Version 2 | RFC 2236: Internet Group Management Protocol, Version 2 | |||
| RFC 3376: Internet Group Management Protocol, Version 3"; | RFC 3376: Internet Group Management Protocol, Version 3"; | |||
| } | } | |||
| feature mld { | feature mld { | |||
| description | description | |||
| "Indicates support for Multicast Listener Discovery (MLD)."; | "Indicates support for Multicast Listener Discovery (MLD)."; | |||
| reference | reference | |||
| "RFC 2710: Multicast Listener Discovery (MLD) for IPv6 | "RFC 2710: Multicast Listener Discovery (MLD) for IPv6 | |||
| RFC 3810: Multicast Listener Discovery Version 2 (MLDv2) | RFC 3810: Multicast Listener Discovery Version 2 (MLDv2) | |||
| for IPv6"; | for IPv6"; | |||
| } | } | |||
| feature pim { | feature pim { | |||
| description | description | |||
| "Indicates support for Protocol Independent Multicast (PIM)."; | "Indicates support for Protocol Independent Multicast | |||
| (PIM)."; | ||||
| reference | reference | |||
| "RFC 7761: Protocol Independent Multicast - Sparse Mode | "RFC 7761: Protocol Independent Multicast - Sparse Mode | |||
| (PIM-SM): Protocol Specification (Revised)"; | (PIM-SM): Protocol Specification (Revised)"; | |||
| } | } | |||
| /* | /* | |||
| * Features related to address family types | * Features related to address family types | |||
| */ | */ | |||
| feature ipv4 { | feature ipv4 { | |||
| description | description | |||
| "Indicates IPv4 support in a VPN. That is, IPv4 traffic | "Indicates IPv4 support in a VPN. That is, IPv4 traffic | |||
| can be carried in the VPN, IPv4 addresses/prefixes can | can be carried in the VPN, IPv4 addresses/prefixes can | |||
| be assigned to a VPN network access, IPv4 routes can be | be assigned to a VPN network access, IPv4 routes can be | |||
| installed for the CE/PE link, etc."; | installed for the Customer Edge to Provider Edge (CE-PE) | |||
| link, etc."; | ||||
| reference | reference | |||
| "RFC 791: Internet Protocol"; | "RFC 791: Internet Protocol"; | |||
| } | } | |||
| feature ipv6 { | feature ipv6 { | |||
| description | description | |||
| "Indicates IPv6 support in a VPN. That is, IPv6 traffic | "Indicates IPv6 support in a VPN. That is, IPv6 traffic | |||
| can be carried in the VPN, IPv6 addresses/prefixes can | can be carried in the VPN, IPv6 addresses/prefixes can | |||
| be assigned to a VPN network access, IPv6 routes can be | be assigned to a VPN network access, IPv6 routes can be | |||
| installed for the CE/PE link, etc."; | installed for the CE-PE link, etc."; | |||
| reference | reference | |||
| "RFC 8200: Internet Protocol, Version 6 (IPv6)"; | "RFC 8200: Internet Protocol, Version 6 (IPv6) | |||
| Specification"; | ||||
| } | } | |||
| /* | /* | |||
| * Features related to routing protocols | * Features related to routing protocols | |||
| */ | */ | |||
| feature rtg-ospf { | feature rtg-ospf { | |||
| description | description | |||
| "Indicates support for the OSPF as the Provider Edge (PE)/ | "Indicates support for OSPF as the Provider Edge to | |||
| Customer Edge (CE) routing protocol."; | Customer Edge (PE-CE) routing protocol."; | |||
| reference | reference | |||
| "RFC 4577: OSPF as the Provider/Customer Edge Protocol | "RFC 4577: OSPF as the Provider/Customer Edge Protocol | |||
| for BGP/MPLS IP Virtual Private Networks (VPNs) | for BGP/MPLS IP Virtual Private Networks (VPNs) | |||
| RFC 6565: OSPFv3 as a Provider Edge to Customer Edge | RFC 6565: OSPFv3 as a Provider Edge to Customer Edge | |||
| (PE-CE) Routing Protocol"; | (PE-CE) Routing Protocol"; | |||
| } | } | |||
| feature rtg-ospf-sham-link { | feature rtg-ospf-sham-link { | |||
| description | description | |||
| "Indicates support for OSPF sham links."; | "Indicates support for OSPF sham links."; | |||
| reference | reference | |||
| "RFC 4577: OSPF as the Provider/Customer Edge Protocol | "RFC 4577: OSPF as the Provider/Customer Edge Protocol | |||
| for BGP/MPLS IP Virtual Private Networks (VPNs), | for BGP/MPLS IP Virtual Private Networks (VPNs), | |||
| Section 4.2.7 | Section 4.2.7 | |||
| RFC 6565: OSPFv3 as a Provider Edge to Customer Edge | RFC 6565: OSPFv3 as a Provider Edge to Customer Edge | |||
| (PE-CE) Routing Protocol, Section 5"; | (PE-CE) Routing Protocol, Section 5"; | |||
| } | } | |||
| feature rtg-bgp { | feature rtg-bgp { | |||
| description | description | |||
| "Indicates support for BGP as the PE/CE routing protocol."; | "Indicates support for BGP as the PE-CE routing protocol."; | |||
| reference | reference | |||
| "RFC 4271: A Border Gateway Protocol 4 (BGP-4)"; | "RFC 4271: A Border Gateway Protocol 4 (BGP-4)"; | |||
| } | } | |||
| feature rtg-rip { | feature rtg-rip { | |||
| description | description | |||
| "Indicates support for RIP as the PE/CE routing protocol."; | "Indicates support for RIP as the PE-CE routing protocol."; | |||
| reference | reference | |||
| "RFC 2453: RIP Version 2 | "RFC 2453: RIP Version 2 | |||
| RFC 2080: RIPng for IPv6"; | RFC 2080: RIPng for IPv6"; | |||
| } | } | |||
| feature rtg-isis { | feature rtg-isis { | |||
| description | description | |||
| "Indicates support for IS-IS as the PE/CE routing protocol."; | "Indicates support for IS-IS as the PE-CE routing | |||
| protocol."; | ||||
| reference | reference | |||
| "ISO10589: Intermediate System to Intermediate System intra- | "ISO10589: Information technology - Telecommunications and | |||
| domain routeing information exchange protocol for | information exchange between systems - | |||
| use in conjunction with the protocol for providing | Intermediate System to Intermediate System | |||
| the connectionless-mode network service | intra-domain routeing information exchange | |||
| (ISO 8473)"; | protocol for use in conjunction with the protocol | |||
| for providing the connectionless-mode network | ||||
| service (ISO 8473)"; | ||||
| } | } | |||
| feature rtg-vrrp { | feature rtg-vrrp { | |||
| description | description | |||
| "Indicates support for the Virtual Router Redundancy | "Indicates support for the Virtual Router Redundancy | |||
| Protocol (VRRP) in CE/PE link."; | Protocol (VRRP) in the CE-PE link."; | |||
| reference | reference | |||
| "RFC 5798: Virtual Router Redundancy Protocol (VRRP) Version 3 | "RFC 5798: Virtual Router Redundancy Protocol (VRRP) | |||
| for IPv4 and IPv6"; | Version 3 for IPv4 and IPv6"; | |||
| } | } | |||
| feature bfd { | feature bfd { | |||
| description | description | |||
| "Indicates support for Bidirectional Forwarding Detection (BFD) | "Indicates support for Bidirectional Forwarding Detection | |||
| between the CE and the PE."; | (BFD) between the CE and the PE."; | |||
| reference | reference | |||
| "RFC 5880: Bidirectional Forwarding Detection (BFD)"; | "RFC 5880: Bidirectional Forwarding Detection (BFD)"; | |||
| } | } | |||
| /* | /* | |||
| * Features related to VPN service constraints | * Features related to VPN service constraints | |||
| */ | */ | |||
| feature bearer-reference { | feature bearer-reference { | |||
| description | description | |||
| "A bearer refers to properties of the CE-PE attachment that | "A bearer refers to properties of the CE-PE attachment that | |||
| are below Layer 3. | are below Layer 3. | |||
| This feature indicates support for the bearer reference access | This feature indicates support for the bearer reference | |||
| constraint. That is, the reuse of a network connection that was | access constraint, i.e., the reuse of a network connection | |||
| already ordered to the service provider apart from the IP VPN | that was already ordered to the service provider apart from | |||
| site."; | the IP VPN site."; | |||
| } | } | |||
| feature placement-diversity { | feature placement-diversity { | |||
| description | description | |||
| "Indicates support for placement diversity constraints in the | "Indicates support for placement diversity constraints in | |||
| customer premises. An example of these constraints may be to | the customer premises. An example of these constraints | |||
| avoid connecting a site network access to the same Provider | may be to avoid connecting a site network access to the | |||
| Edge as a target site network access."; | same PE as a target site network access."; | |||
| } | } | |||
| /* | /* | |||
| * Features related to bandwidth and Quality of Service (QoS) | * Features related to bandwidth and Quality of Service (QoS) | |||
| */ | */ | |||
| feature qos { | feature qos { | |||
| description | description | |||
| "Indicates support for Classes of Service (CoSes) in the VPN."; | "Indicates support for Classes of Service (CoSes) in | |||
| the VPN."; | ||||
| } | } | |||
| feature inbound-bw { | feature inbound-bw { | |||
| description | description | |||
| "Indicates support for the inbound bandwidth in a VPN. That is, | "Indicates support for the inbound bandwidth in a VPN, | |||
| support for specifying the download bandwidth from the service | i.e., support for specifying the download bandwidth from | |||
| provider network to the VPN site. Note that the L3SM uses | the service provider network to the VPN site. Note that | |||
| 'input' to identify the same feature. That terminology should | the L3SM uses 'input' to identify the same feature. | |||
| be deprecated in favor of the one defined in this module."; | That terminology should be deprecated in favor of | |||
| the terminology defined in this module."; | ||||
| } | } | |||
| feature outbound-bw { | feature outbound-bw { | |||
| description | description | |||
| "Indicates support for the outbound bandwidth in a VPN. That is, | "Indicates support for the outbound bandwidth in a VPN, | |||
| support for specifying the upload bandwidth from the VPN site | i.e., support for specifying the upload bandwidth from | |||
| to the service provider network. Note that the L3SM uses | the VPN site to the service provider network. Note that | |||
| 'output' to identify the same feature. That terminology should | the L3SM uses 'output' to identify the same feature. | |||
| be deprecated in favor of the one defined in this module."; | That terminology should be deprecated in favor of the | |||
| terminology defined in this module."; | ||||
| } | } | |||
| /* | /* | |||
| * Features related to security and resilience | * Features related to security and resilience | |||
| */ | */ | |||
| feature encryption { | feature encryption { | |||
| description | description | |||
| "Indicates support for encryption in the VPN."; | "Indicates support for encryption in the VPN."; | |||
| } | } | |||
| skipping to change at line 1032 ¶ | skipping to change at line 895 ¶ | |||
| description | description | |||
| "Indicates support for the VPN to provide external | "Indicates support for the VPN to provide external | |||
| connectivity (e.g., Internet, private or public cloud)."; | connectivity (e.g., Internet, private or public cloud)."; | |||
| reference | reference | |||
| "RFC 4364: BGP/MPLS IP Virtual Private Networks | "RFC 4364: BGP/MPLS IP Virtual Private Networks | |||
| (VPNs), Section 11"; | (VPNs), Section 11"; | |||
| } | } | |||
| feature extranet-vpn { | feature extranet-vpn { | |||
| description | description | |||
| "Indicates support for extranet VPNs. That is, the capability of | "Indicates support for extranet VPNs, i.e., the capability | |||
| a VPN to access a list of other VPNs."; | of a VPN to access a list of other VPNs."; | |||
| reference | reference | |||
| "RFC 4364: BGP/MPLS IP Virtual Private Networks | "RFC 4364: BGP/MPLS IP Virtual Private Networks | |||
| (VPNs), Section 1.1"; | (VPNs), Section 1.1"; | |||
| } | } | |||
| feature carriers-carrier { | feature carriers-carrier { | |||
| description | description | |||
| "Indicates support for Carrier-of-Carrier VPNs."; | "Indicates support for Carriers' Carriers in VPNs."; | |||
| reference | reference | |||
| "RFC 4364: BGP/MPLS IP Virtual Private Networks | "RFC 4364: BGP/MPLS IP Virtual Private Networks | |||
| (VPNs), Section 9"; | (VPNs), Section 9"; | |||
| } | } | |||
| /* | /* | |||
| * Address family related identities | * Identities related to address families | |||
| */ | */ | |||
| identity address-family { | identity address-family { | |||
| description | description | |||
| "Defines a type for the address family."; | "Defines a type for the address family."; | |||
| } | } | |||
| identity ipv4 { | identity ipv4 { | |||
| base address-family; | base address-family; | |||
| description | description | |||
| "Identity for IPv4 address family."; | "Identity for an IPv4 address family."; | |||
| } | } | |||
| identity ipv6 { | identity ipv6 { | |||
| base address-family; | base address-family; | |||
| description | description | |||
| "Identity for IPv6 address family."; | "Identity for an IPv6 address family."; | |||
| } | } | |||
| identity dual-stack { | identity dual-stack { | |||
| base address-family; | base address-family; | |||
| description | description | |||
| "Identity for IPv4 and IPv6 address family."; | "Identity for IPv4 and IPv6 address families."; | |||
| } | } | |||
| /* | /* | |||
| * Identities related to VPN topology | * Identities related to VPN topology | |||
| */ | */ | |||
| identity vpn-topology { | identity vpn-topology { | |||
| description | description | |||
| "Base identity of the VPN topology."; | "Base identity of the VPN topology."; | |||
| } | } | |||
| identity any-to-any { | identity any-to-any { | |||
| base vpn-topology; | base vpn-topology; | |||
| description | description | |||
| "Identity for any-to-any VPN topology. All VPN sites | "Identity for any-to-any VPN topology. All VPN sites | |||
| can communicate with each other without any restrictions."; | can communicate with each other without any restrictions."; | |||
| } | } | |||
| identity hub-spoke { | identity hub-spoke { | |||
| base vpn-topology; | base vpn-topology; | |||
| description | description | |||
| "Identity for Hub-and-Spoke VPN topology. All Spokes can | "Identity for Hub-and-Spoke VPN topology. All Spokes can | |||
| communicate only with Hubs but not with each other. Hubs | communicate with Hubs only and not with each other. Hubs | |||
| can communicate with each other."; | can communicate with each other."; | |||
| } | } | |||
| identity hub-spoke-disjoint { | identity hub-spoke-disjoint { | |||
| base vpn-topology; | base vpn-topology; | |||
| description | description | |||
| "Identity for Hub-and-Spoke VPN topology where Hubs cannot | "Identity for Hub-and-Spoke VPN topology where Hubs cannot | |||
| communicate with each other."; | communicate with each other."; | |||
| } | } | |||
| identity custom { | identity custom { | |||
| base vpn-topology; | base vpn-topology; | |||
| description | description | |||
| "Identity for custom VPN topologies where the role of the nodes | "Identity for custom VPN topologies where the role of the | |||
| is not strictly Hub or Spoke. The VPN topology is controlled by | nodes is not strictly Hub or Spoke. The VPN topology is | |||
| the import/export policies. The custom topology reflects more | controlled by the import/export policies. The custom | |||
| complex VPN nodes such as VPN node that acts as Hub for certain | topology reflects more complex VPN nodes, such as a | |||
| nodes and Spoke to others."; | VPN node that acts as a Hub for certain nodes and a Spoke | |||
| for others."; | ||||
| } | } | |||
| /* | /* | |||
| * Identities related to network access types | * Identities related to network access types | |||
| */ | */ | |||
| identity site-network-access-type { | identity site-network-access-type { | |||
| description | description | |||
| "Base identity for site network access type."; | "Base identity for site network access types."; | |||
| } | } | |||
| identity point-to-point { | identity point-to-point { | |||
| base site-network-access-type; | base site-network-access-type; | |||
| description | description | |||
| "Point-to-point access type."; | "Point-to-point access type."; | |||
| } | } | |||
| identity multipoint { | identity multipoint { | |||
| base site-network-access-type; | base site-network-access-type; | |||
| description | description | |||
| "Multipoint access type."; | "Multipoint access type."; | |||
| } | } | |||
| identity irb { | identity irb { | |||
| base site-network-access-type; | base site-network-access-type; | |||
| description | description | |||
| "Integrated Routing Bridge (IRB). | "Integrated Routing and Bridging (IRB). | |||
| Identity for pseudowire connections."; | Identity for pseudowire connections."; | |||
| } | } | |||
| identity loopback { | identity loopback { | |||
| base site-network-access-type; | base site-network-access-type; | |||
| description | description | |||
| "Loopback access type."; | "Loopback access type."; | |||
| } | } | |||
| /* | /* | |||
| * Identities related to operational and administrative status | * Identities related to operational and administrative status | |||
| */ | */ | |||
| identity operational-status { | identity operational-status { | |||
| description | description | |||
| "Base identity for the operational status."; | "Base identity for operational status."; | |||
| } | } | |||
| identity op-up { | identity op-up { | |||
| base operational-status; | base operational-status; | |||
| description | description | |||
| "Operational status is Up/Enabled."; | "Operational status is Up/Enabled."; | |||
| } | } | |||
| identity op-down { | identity op-down { | |||
| base operational-status; | base operational-status; | |||
| skipping to change at line 1196 ¶ | skipping to change at line 1060 ¶ | |||
| identity admin-down { | identity admin-down { | |||
| base administrative-status; | base administrative-status; | |||
| description | description | |||
| "Administrative status is Down/Disabled."; | "Administrative status is Down/Disabled."; | |||
| } | } | |||
| identity admin-testing { | identity admin-testing { | |||
| base administrative-status; | base administrative-status; | |||
| description | description | |||
| "Administrative status is up for testing purposes."; | "Administrative status is Up for testing purposes."; | |||
| } | } | |||
| identity admin-pre-deployment { | identity admin-pre-deployment { | |||
| base administrative-status; | base administrative-status; | |||
| description | description | |||
| "Administrative status is pre-deployment phase. That is, | "Administrative status reflects a pre-deployment phase, | |||
| prior to the actual deployment of a service."; | i.e., prior to the actual deployment of a service."; | |||
| } | } | |||
| /* | /* | |||
| * Identities related to site or node role | * Identities related to site or node roles | |||
| */ | */ | |||
| identity role { | identity role { | |||
| description | description | |||
| "Base identity of a site or a node role."; | "Base identity of a site or node role."; | |||
| } | } | |||
| identity any-to-any-role { | identity any-to-any-role { | |||
| base role; | base role; | |||
| description | description | |||
| "Any-to-any role."; | "Any-to-any role."; | |||
| } | } | |||
| identity spoke-role { | identity spoke-role { | |||
| base role; | base role; | |||
| skipping to change at line 1236 ¶ | skipping to change at line 1100 ¶ | |||
| identity hub-role { | identity hub-role { | |||
| base role; | base role; | |||
| description | description | |||
| "A node or a site is acting as a Hub."; | "A node or a site is acting as a Hub."; | |||
| } | } | |||
| identity custom-role { | identity custom-role { | |||
| base role; | base role; | |||
| description | description | |||
| "VPN node with custom or complex role in the VPN. For some | "VPN node with a custom or complex role in the VPN. For | |||
| sources/destinations it can behave as a Hub, but for others it | some sources/destinations, it can behave as a Hub, but for | |||
| can act as a Spoke depending on the configured policy."; | others, it can act as a Spoke, depending on the configured | |||
| policy."; | ||||
| } | } | |||
| /* | /* | |||
| * Identities related to VPN service constraints | * Identities related to VPN service constraints | |||
| */ | */ | |||
| identity placement-diversity { | identity placement-diversity { | |||
| description | description | |||
| "Base identity for access placement constraints."; | "Base identity for access placement constraints."; | |||
| } | } | |||
| skipping to change at line 1267 ¶ | skipping to change at line 1132 ¶ | |||
| identity pe-diverse { | identity pe-diverse { | |||
| base placement-diversity; | base placement-diversity; | |||
| description | description | |||
| "PE diversity."; | "PE diversity."; | |||
| } | } | |||
| identity pop-diverse { | identity pop-diverse { | |||
| base placement-diversity; | base placement-diversity; | |||
| description | description | |||
| "Point Of Presence (POP) diversity."; | "Point of Presence (POP) diversity."; | |||
| } | } | |||
| identity linecard-diverse { | identity linecard-diverse { | |||
| base placement-diversity; | base placement-diversity; | |||
| description | description | |||
| "Linecard diversity."; | "Linecard diversity."; | |||
| } | } | |||
| identity same-pe { | identity same-pe { | |||
| base placement-diversity; | base placement-diversity; | |||
| skipping to change at line 1294 ¶ | skipping to change at line 1159 ¶ | |||
| description | description | |||
| "Having sites connected using the same bearer."; | "Having sites connected using the same bearer."; | |||
| } | } | |||
| /* | /* | |||
| * Identities related to service types | * Identities related to service types | |||
| */ | */ | |||
| identity service-type { | identity service-type { | |||
| description | description | |||
| "Base identity for service type."; | "Base identity for service types."; | |||
| } | } | |||
| identity l3vpn { | identity l3vpn { | |||
| base service-type; | base service-type; | |||
| description | description | |||
| "L3VPN service."; | "L3VPN service."; | |||
| reference | reference | |||
| "RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs)"; | "RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs)"; | |||
| } | } | |||
| identity vpls { | identity vpls { | |||
| base service-type; | base service-type; | |||
| description | description | |||
| "VPLS service."; | "Virtual Private LAN Service (VPLS)."; | |||
| reference | reference | |||
| "RFC 4761: Virtual Private LAN Service (VPLS) Using BGP for | "RFC 4761: Virtual Private LAN Service (VPLS) Using BGP for | |||
| Auto-Discovery and Signaling | Auto-Discovery and Signaling | |||
| RFC 4762: Virtual Private LAN Service (VPLS) Using Label | RFC 4762: Virtual Private LAN Service (VPLS) Using Label | |||
| Distribution Protocol (LDP) Signaling"; | Distribution Protocol (LDP) Signaling"; | |||
| } | } | |||
| identity vpws { | identity vpws { | |||
| base service-type; | base service-type; | |||
| description | description | |||
| "Virtual Private Wire Service (VPWS) service."; | "Virtual Private Wire Service (VPWS)."; | |||
| reference | reference | |||
| "RFC 4664: Framework for Layer 2 Virtual Private Networks | "RFC 4664: Framework for Layer 2 Virtual Private Networks | |||
| (L2VPNs), Section 3.1.1"; | (L2VPNs), Section 3.1.1"; | |||
| } | } | |||
| identity vpws-evpn { | identity vpws-evpn { | |||
| base service-type; | base service-type; | |||
| description | description | |||
| "EVPN used to support VPWS service."; | "Ethernet VPN (EVPN) used to support VPWS."; | |||
| reference | reference | |||
| "RFC 8214: Virtual Private Wire Service Support in Ethernet VPN"; | "RFC 8214: Virtual Private Wire Service Support in | |||
| Ethernet VPN"; | ||||
| } | } | |||
| identity pbb-evpn { | identity pbb-evpn { | |||
| base service-type; | base service-type; | |||
| description | description | |||
| "Provider Backbone Bridging (PBB) EVPNs service."; | "Provider Backbone Bridging (PBB) EVPN service."; | |||
| reference | reference | |||
| "RFC 7623: Provider Backbone Bridging Combined with Ethernet VPN | "RFC 7623: Provider Backbone Bridging Combined with | |||
| (PBB-EVPN)"; | Ethernet VPN (PBB-EVPN)"; | |||
| } | } | |||
| identity mpls-evpn { | identity mpls-evpn { | |||
| base service-type; | base service-type; | |||
| description | description | |||
| "MPLS-based EVPN service."; | "MPLS-based EVPN service."; | |||
| reference | reference | |||
| "RFC 7432: BGP MPLS-Based Ethernet VPN"; | "RFC 7432: BGP MPLS-Based Ethernet VPN"; | |||
| } | } | |||
| identity vxlan-evpn { | identity vxlan-evpn { | |||
| base service-type; | base service-type; | |||
| description | description | |||
| "VXLAN-based EVPN service."; | "VXLAN-based EVPN service."; | |||
| reference | reference | |||
| "RFC 8365: A Network Virtualization Overlay Solution Using | "RFC 8365: A Network Virtualization Overlay Solution Using | |||
| Ethernet VPN (EVPN)"; | Ethernet VPN (EVPN)"; | |||
| } | } | |||
| /* | /* | |||
| * Identities related to VPN signaling type | * Identities related to VPN signaling types | |||
| */ | */ | |||
| identity vpn-signaling-type { | identity vpn-signaling-type { | |||
| description | description | |||
| "Base identity for VPN signaling types"; | "Base identity for VPN signaling types."; | |||
| } | } | |||
| identity bgp-signaling { | identity bgp-signaling { | |||
| base vpn-signaling-type; | base vpn-signaling-type; | |||
| description | description | |||
| "Layer 2 VPNs using BGP signaling."; | "Layer 2 VPNs using BGP signaling."; | |||
| reference | reference | |||
| "RFC 6624: Layer 2 Virtual Private Networks Using BGP for | "RFC 6624: Layer 2 Virtual Private Networks Using BGP for | |||
| Auto-Discovery and Signaling | Auto-Discovery and Signaling | |||
| RFC 7432: BGP MPLS-Based Ethernet VPN"; | RFC 7432: BGP MPLS-Based Ethernet VPN"; | |||
| skipping to change at line 1400 ¶ | skipping to change at line 1266 ¶ | |||
| reference | reference | |||
| "RFC 3931: Layer Two Tunneling Protocol - Version 3 (L2TPv3)"; | "RFC 3931: Layer Two Tunneling Protocol - Version 3 (L2TPv3)"; | |||
| } | } | |||
| /* | /* | |||
| * Identities related to routing protocols | * Identities related to routing protocols | |||
| */ | */ | |||
| identity routing-protocol-type { | identity routing-protocol-type { | |||
| description | description | |||
| "Base identity for routing protocol type."; | "Base identity for routing protocol types."; | |||
| } | } | |||
| identity static-routing { | identity static-routing { | |||
| base routing-protocol-type; | base routing-protocol-type; | |||
| description | description | |||
| "Static routing protocol."; | "Static routing protocol."; | |||
| } | } | |||
| identity bgp-routing { | identity bgp-routing { | |||
| if-feature "rtg-bgp"; | if-feature "rtg-bgp"; | |||
| skipping to change at line 1425 ¶ | skipping to change at line 1291 ¶ | |||
| "RFC 4271: A Border Gateway Protocol 4 (BGP-4)"; | "RFC 4271: A Border Gateway Protocol 4 (BGP-4)"; | |||
| } | } | |||
| identity ospf-routing { | identity ospf-routing { | |||
| if-feature "rtg-ospf"; | if-feature "rtg-ospf"; | |||
| base routing-protocol-type; | base routing-protocol-type; | |||
| description | description | |||
| "OSPF routing protocol."; | "OSPF routing protocol."; | |||
| reference | reference | |||
| "RFC 4577: OSPF as the Provider/Customer Edge Protocol | "RFC 4577: OSPF as the Provider/Customer Edge Protocol | |||
| for BGP/MPLS IP Virtual Private Networks(VPNs) | for BGP/MPLS IP Virtual Private Networks (VPNs) | |||
| RFC 6565: OSPFv3 as a Provider Edge to Customer Edge | RFC 6565: OSPFv3 as a Provider Edge to Customer Edge | |||
| (PE-CE) Routing Protocol"; | (PE-CE) Routing Protocol"; | |||
| } | } | |||
| identity rip-routing { | identity rip-routing { | |||
| if-feature "rtg-rip"; | if-feature "rtg-rip"; | |||
| base routing-protocol-type; | base routing-protocol-type; | |||
| description | description | |||
| "RIP routing protocol."; | "RIP routing protocol."; | |||
| reference | reference | |||
| "RFC 2453: RIP Version 2 | "RFC 2453: RIP Version 2 | |||
| RFC 2080: RIPng for IPv6"; | RFC 2080: RIPng for IPv6"; | |||
| } | } | |||
| identity isis-routing { | identity isis-routing { | |||
| if-feature "rtg-isis"; | if-feature "rtg-isis"; | |||
| base routing-protocol-type; | base routing-protocol-type; | |||
| description | description | |||
| "IS-IS routing protocol."; | "IS-IS routing protocol."; | |||
| reference | reference | |||
| "ISO10589: Intermediate System to Intermediate System intra- | "ISO10589: Information technology - Telecommunications and | |||
| domain routeing information exchange protocol for | information exchange between systems - | |||
| use in conjunction with the protocol for providing | Intermediate System to Intermediate System | |||
| the connectionless-mode network service | intra-domain routeing information exchange | |||
| (ISO 8473)"; | protocol for use in conjunction with the protocol | |||
| for providing the connectionless-mode network | ||||
| service (ISO 8473)"; | ||||
| } | } | |||
| identity vrrp-routing { | identity vrrp-routing { | |||
| if-feature "rtg-vrrp"; | if-feature "rtg-vrrp"; | |||
| base routing-protocol-type; | base routing-protocol-type; | |||
| description | description | |||
| "VRRP protocol. | "VRRP protocol. | |||
| This is to be used when LANs are directly connected to PEs."; | This is to be used when LANs are directly connected to | |||
| PEs."; | ||||
| reference | reference | |||
| "RFC 5798: Virtual Router Redundancy Protocol (VRRP) Version 3 | "RFC 5798: Virtual Router Redundancy Protocol (VRRP) | |||
| for IPv4 and IPv6"; | Version 3 for IPv4 and IPv6"; | |||
| } | } | |||
| identity direct-routing { | identity direct-routing { | |||
| base routing-protocol-type; | base routing-protocol-type; | |||
| description | description | |||
| "Direct routing. | "Direct routing. | |||
| This is to be used when LANs are directly connected to PEs | This is to be used when LANs are directly connected to PEs | |||
| and must be advertised in the VPN."; | and must be advertised in the VPN."; | |||
| } | } | |||
| identity any-routing { | identity any-routing { | |||
| base routing-protocol-type; | base routing-protocol-type; | |||
| description | description | |||
| "Any routing protocol. | "Any routing protocol. | |||
| This can be, e.g., used to set policies that apply to any | For example, this can be used to set policies that apply | |||
| routing protocol in place."; | to any routing protocol in place."; | |||
| } | } | |||
| identity isis-level { | identity isis-level { | |||
| if-feature "rtg-isis"; | if-feature "rtg-isis"; | |||
| description | description | |||
| "Base identity for the IS-IS level."; | "Base identity for the IS-IS level."; | |||
| reference | reference | |||
| "ISO10589: Intermediate System to Intermediate System intra- | "ISO10589: Information technology - Telecommunications and | |||
| domain routeing information exchange protocol for | information exchange between systems - | |||
| use in conjunction with the protocol for providing | Intermediate System to Intermediate System | |||
| the connectionless-mode network service | intra-domain routeing information exchange | |||
| (ISO 8473)"; | protocol for use in conjunction with the protocol | |||
| for providing the connectionless-mode network | ||||
| service (ISO 8473)"; | ||||
| } | } | |||
| identity level-1 { | identity level-1 { | |||
| base isis-level; | base isis-level; | |||
| description | description | |||
| "IS-IS level 1."; | "IS-IS Level 1."; | |||
| } | } | |||
| identity level-2 { | identity level-2 { | |||
| base isis-level; | base isis-level; | |||
| description | description | |||
| "IS-IS level 2."; | "IS-IS Level 2."; | |||
| } | } | |||
| identity level-1-2 { | identity level-1-2 { | |||
| base isis-level; | base isis-level; | |||
| description | description | |||
| "IS-IS levels 1 and 2."; | "IS-IS Levels 1 and 2."; | |||
| } | } | |||
| identity bfd-session-type { | identity bfd-session-type { | |||
| if-feature "bfd"; | if-feature "bfd"; | |||
| description | description | |||
| "Base identity for the BFD session type."; | "Base identity for the BFD session type."; | |||
| } | } | |||
| identity classic-bfd { | identity classic-bfd { | |||
| base bfd-session-type; | base bfd-session-type; | |||
| skipping to change at line 1532 ¶ | skipping to change at line 1403 ¶ | |||
| "Classic BFD."; | "Classic BFD."; | |||
| reference | reference | |||
| "RFC 5880: Bidirectional Forwarding Detection (BFD)"; | "RFC 5880: Bidirectional Forwarding Detection (BFD)"; | |||
| } | } | |||
| identity s-bfd { | identity s-bfd { | |||
| base bfd-session-type; | base bfd-session-type; | |||
| description | description | |||
| "Seamless BFD."; | "Seamless BFD."; | |||
| reference | reference | |||
| "RFC 7880: Seamless Bidirectional Forwarding Detection (S-BFD)"; | "RFC 7880: Seamless Bidirectional Forwarding Detection | |||
| (S-BFD)"; | ||||
| } | } | |||
| /* | /* | |||
| * Identities related to Routes Import and Export | * Identities related to route import and export policies | |||
| */ | */ | |||
| identity ie-type { | identity ie-type { | |||
| description | description | |||
| "Base identity for 'import/export' routing profiles. | "Base identity for import/export routing profiles. | |||
| These profiles can be reused between VPN nodes."; | These profiles can be reused between VPN nodes."; | |||
| } | } | |||
| identity import { | identity import { | |||
| base ie-type; | base ie-type; | |||
| description | description | |||
| "'Import' routing profile."; | "Import routing profile."; | |||
| reference | reference | |||
| "RFC 4364: BGP/MPLS IP Virtual Private Networks | "RFC 4364: BGP/MPLS IP Virtual Private Networks | |||
| (VPNs), Section 4.3.1"; | (VPNs), Section 4.3.1"; | |||
| } | } | |||
| identity export { | identity export { | |||
| base ie-type; | base ie-type; | |||
| description | description | |||
| "'Export' routing profile."; | "Export routing profile."; | |||
| reference | reference | |||
| "RFC 4364: BGP/MPLS IP Virtual Private Networks | "RFC 4364: BGP/MPLS IP Virtual Private Networks | |||
| (VPNs), Section 4.3.1"; | (VPNs), Section 4.3.1"; | |||
| } | } | |||
| identity import-export { | identity import-export { | |||
| base ie-type; | base ie-type; | |||
| description | description | |||
| "'Import/export' routing profile."; | "Import/export routing profile."; | |||
| } | } | |||
| /* | /* | |||
| * Identities related to bandwidth and QoS | * Identities related to bandwidth and QoS | |||
| */ | */ | |||
| identity bw-direction { | identity bw-direction { | |||
| description | description | |||
| "Base identity for the bandwidth direction."; | "Base identity for the bandwidth direction."; | |||
| } | } | |||
| skipping to change at line 1601 ¶ | skipping to change at line 1473 ¶ | |||
| identity bw-type { | identity bw-type { | |||
| description | description | |||
| "Base identity for the bandwidth type."; | "Base identity for the bandwidth type."; | |||
| } | } | |||
| identity bw-per-cos { | identity bw-per-cos { | |||
| if-feature "qos"; | if-feature "qos"; | |||
| base bw-type; | base bw-type; | |||
| description | description | |||
| "The bandwidth is per-CoS."; | "The bandwidth is per CoS."; | |||
| } | } | |||
| identity bw-per-port { | identity bw-per-port { | |||
| base bw-type; | base bw-type; | |||
| description | description | |||
| "The bandwidth is per-site network access."; | "The bandwidth is per a given site network access."; | |||
| } | } | |||
| identity bw-per-site { | identity bw-per-site { | |||
| base bw-type; | base bw-type; | |||
| description | description | |||
| "The bandwidth is per-site. It is applicable to all the site | "The bandwidth is per site. It is applicable to all the | |||
| network accesses within a site."; | site network accesses within a site."; | |||
| } | } | |||
| identity bw-per-service { | identity bw-per-service { | |||
| base bw-type; | base bw-type; | |||
| description | description | |||
| "The bandwidth is per-VPN service."; | "The bandwidth is per VPN service."; | |||
| } | } | |||
| identity qos-profile-direction { | identity qos-profile-direction { | |||
| if-feature "qos"; | if-feature "qos"; | |||
| description | description | |||
| "Base identity for the QoS profile direction."; | "Base identity for the QoS profile direction."; | |||
| } | } | |||
| identity site-to-wan { | identity site-to-wan { | |||
| base qos-profile-direction; | base qos-profile-direction; | |||
| description | description | |||
| "Customer site to provider's network direction. | "From the customer site to the provider's network. | |||
| This is typically the CE-to-PE direction."; | This is typically the CE-to-PE direction."; | |||
| } | } | |||
| identity wan-to-site { | identity wan-to-site { | |||
| base qos-profile-direction; | base qos-profile-direction; | |||
| description | description | |||
| "Provider's network to customer site direction. | "From the provider's network to the customer site. | |||
| This is typically the PE-to-CE direction."; | This is typically the PE-to-CE direction."; | |||
| } | } | |||
| identity both { | identity both { | |||
| base qos-profile-direction; | base qos-profile-direction; | |||
| description | description | |||
| "Both WAN-to-Site and Site-to-WAN directions."; | "Both the WAN-to-site direction and the site-to-WAN | |||
| direction."; | ||||
| } | } | |||
| /* | /* | |||
| * Identities related to underlay transport instances | * Identities related to underlay transport instances | |||
| */ | */ | |||
| identity transport-instance-type { | identity transport-instance-type { | |||
| description | description | |||
| "Base identity for underlay transport instance type."; | "Base identity for underlay transport instance types."; | |||
| } | } | |||
| identity virtual-network { | identity virtual-network { | |||
| base transport-instance-type; | base transport-instance-type; | |||
| description | description | |||
| "Virtual network."; | "Virtual network."; | |||
| reference | reference | |||
| "RFC 8453: Framework for Abstraction and Control of TE | "RFC 8453: Framework for Abstraction and Control of TE | |||
| Networks (ACTN)"; | Networks (ACTN)"; | |||
| } | } | |||
| identity enhanced-vpn { | identity enhanced-vpn { | |||
| base transport-instance-type; | base transport-instance-type; | |||
| description | description | |||
| "Enhanced VPN (VPN+). VPN+ is an approach that is | "Enhanced VPN (VPN+). VPN+ is an approach that is | |||
| based on existing VPN and Traffic Engineering (TE) | based on existing VPN and Traffic Engineering (TE) | |||
| technologies but adds characteristics that specific | technologies but adds characteristics that specific | |||
| services require over and above classical VPNs."; | services require over and above classical VPNs."; | |||
| reference | reference | |||
| "I-D.ietf-teas-enhanced-vpn: | "draft-ietf-teas-enhanced-vpn-09: | |||
| A Framework for Enhanced Virtual Private Network | A Framework for Enhanced Virtual Private Network | |||
| (VPN+) Services"; | (VPN+) Services"; | |||
| } | } | |||
| identity ietf-network-slice { | identity ietf-network-slice { | |||
| base transport-instance-type; | base transport-instance-type; | |||
| description | description | |||
| "IETF network slice. An IETF network slice | "IETF network slice. An IETF network slice | |||
| is a logical network topology connecting a number of | is a logical network topology connecting a number of | |||
| endpoints using a set of shared or dedicated network | endpoints using a set of shared or dedicated network | |||
| resources that are used to satisfy specific service | resources that are used to satisfy specific service | |||
| objectives."; | objectives."; | |||
| reference | reference | |||
| "I-D.ietf-teas-ietf-network-slices: | "draft-ietf-teas-ietf-network-slices-05: | |||
| Framework for IETF Network Slices"; | Framework for IETF Network Slices"; | |||
| } | } | |||
| /* | /* | |||
| * Identities related to protocol types. These types are typically | * Identities related to protocol types. These types are | |||
| * used to identify the underlay transport. | * typically used to identify the underlay transport. | |||
| */ | */ | |||
| identity protocol-type { | identity protocol-type { | |||
| description | description | |||
| "Base identity for Protocol Type."; | "Base identity for protocol types."; | |||
| } | } | |||
| identity ip-in-ip { | identity ip-in-ip { | |||
| base protocol-type; | base protocol-type; | |||
| description | description | |||
| "Transport is based on IP-in-IP."; | "Transport is based on IP in IP."; | |||
| reference | reference | |||
| "RFC 2003: IP Encapsulation within IP | "RFC 2003: IP Encapsulation within IP | |||
| RFC 2473: Generic Packet Tunneling in IPv6 Specification"; | RFC 2473: Generic Packet Tunneling in IPv6 Specification"; | |||
| } | } | |||
| identity ip-in-ipv4 { | identity ip-in-ipv4 { | |||
| base ip-in-ip; | base ip-in-ip; | |||
| description | description | |||
| "Transport is based on IP over IPv4."; | "Transport is based on IP over IPv4."; | |||
| reference | reference | |||
| skipping to change at line 1731 ¶ | skipping to change at line 1604 ¶ | |||
| base ip-in-ip; | base ip-in-ip; | |||
| description | description | |||
| "Transport is based on IP over IPv6."; | "Transport is based on IP over IPv6."; | |||
| reference | reference | |||
| "RFC 2473: Generic Packet Tunneling in IPv6 Specification"; | "RFC 2473: Generic Packet Tunneling in IPv6 Specification"; | |||
| } | } | |||
| identity gre { | identity gre { | |||
| base protocol-type; | base protocol-type; | |||
| description | description | |||
| "Transport is based on Generic Routing Encapsulation (GRE)."; | "Transport is based on Generic Routing Encapsulation | |||
| (GRE)."; | ||||
| reference | reference | |||
| "RFC 1701: Generic Routing Encapsulation (GRE) | "RFC 1701: Generic Routing Encapsulation (GRE) | |||
| RFC 1702: Generic Routing Encapsulation over IPv4 networks | RFC 1702: Generic Routing Encapsulation over IPv4 networks | |||
| RFC 7676: IPv6 Support for Generic Routing Encapsulation (GRE)"; | RFC 7676: IPv6 Support for Generic Routing Encapsulation | |||
| (GRE)"; | ||||
| } | } | |||
| identity gre-v4 { | identity gre-v4 { | |||
| base gre; | base gre; | |||
| description | description | |||
| "Transport is based on GRE over IPv4."; | "Transport is based on GRE over IPv4."; | |||
| reference | reference | |||
| "RFC 1702: Generic Routing Encapsulation over IPv4 networks"; | "RFC 1702: Generic Routing Encapsulation over IPv4 | |||
| networks"; | ||||
| } | } | |||
| identity gre-v6 { | identity gre-v6 { | |||
| base gre; | base gre; | |||
| description | description | |||
| "Transport is based on GRE over IPv6."; | "Transport is based on GRE over IPv6."; | |||
| reference | reference | |||
| "RFC 7676: IPv6 Support for Generic Routing Encapsulation (GRE)"; | "RFC 7676: IPv6 Support for Generic Routing Encapsulation | |||
| (GRE)"; | ||||
| } | } | |||
| identity vxlan-trans { | identity vxlan-trans { | |||
| base protocol-type; | base protocol-type; | |||
| description | description | |||
| "Transport is based on VXLAN."; | "Transport is based on VXLANs."; | |||
| 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 geneve { | identity geneve { | |||
| base protocol-type; | base protocol-type; | |||
| description | description | |||
| "Transport is based on Generic Network Virtualization | "Transport is based on Generic Network Virtualization | |||
| Encapsulation (GENEVE)."; | Encapsulation (Geneve)."; | |||
| reference | reference | |||
| "RFC 8926: Geneve: Generic Network Virtualization Encapsulation"; | "RFC 8926: Geneve: Generic Network Virtualization | |||
| Encapsulation"; | ||||
| } | } | |||
| identity ldp { | identity ldp { | |||
| base protocol-type; | base protocol-type; | |||
| description | description | |||
| "Transport is based on LDP."; | "Transport is based on LDP."; | |||
| reference | reference | |||
| "RFC 5036: LDP Specification"; | "RFC 5036: LDP Specification"; | |||
| } | } | |||
| identity mpls-in-udp { | identity mpls-in-udp { | |||
| base protocol-type; | base protocol-type; | |||
| description | description | |||
| "Transport is MPLS in UDP."; | "Transport is based on MPLS in UDP."; | |||
| reference | reference | |||
| "RFC 7510: Encapsulating MPLS in UDP"; | "RFC 7510: Encapsulating MPLS in UDP"; | |||
| } | } | |||
| identity sr { | identity sr { | |||
| base protocol-type; | base protocol-type; | |||
| description | description | |||
| "Transport is based on Segment Routing (SR)."; | "Transport is based on Segment Routing (SR)."; | |||
| reference | reference | |||
| "RFC 8660: Segment Routing with the MPLS Data Plane | "RFC 8660: Segment Routing with the MPLS Data Plane | |||
| RFC 8663: MPLS Segment Routing over IP | RFC 8663: MPLS Segment Routing over IP | |||
| RFC 8754: IPv6 Segment Routing Header (SRH)"; | RFC 8754: IPv6 Segment Routing Header (SRH)"; | |||
| } | } | |||
| identity sr-mpls { | identity sr-mpls { | |||
| base sr; | base sr; | |||
| description | description | |||
| "Transport is based on SR with MPLS."; | "Transport is based on SR with the MPLS data plane."; | |||
| reference | reference | |||
| "RFC 8660: Segment Routing with the MPLS Data Plane"; | "RFC 8660: Segment Routing with the MPLS Data Plane"; | |||
| } | } | |||
| identity srv6 { | identity srv6 { | |||
| base sr; | base sr; | |||
| description | description | |||
| "Transport is based on SR over IPv6."; | "Transport is based on SR over IPv6."; | |||
| reference | reference | |||
| "RFC 8754: IPv6 Segment Routing Header (SRH)"; | "RFC 8754: IPv6 Segment Routing Header (SRH)"; | |||
| skipping to change at line 1834 ¶ | skipping to change at line 1712 ¶ | |||
| base protocol-type; | base protocol-type; | |||
| description | description | |||
| "Transport setup relies upon RSVP-TE."; | "Transport setup relies upon RSVP-TE."; | |||
| reference | reference | |||
| "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels"; | "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels"; | |||
| } | } | |||
| identity bgp-lu { | identity bgp-lu { | |||
| base protocol-type; | base protocol-type; | |||
| description | description | |||
| "Transport setup relies upon BGP-LU."; | "Transport setup relies upon BGP-based labeled prefixes."; | |||
| reference | reference | |||
| "RFC 8277: Using BGP to Bind MPLS Labels to Address Prefixes"; | "RFC 8277: Using BGP to Bind MPLS Labels to Address Prefixes"; | |||
| } | } | |||
| identity unknown { | identity unknown { | |||
| base protocol-type; | base protocol-type; | |||
| description | description | |||
| "Not known protocol type."; | "Unknown protocol type."; | |||
| } | } | |||
| /* | /* | |||
| * Identities related to encapsulations | * Identities related to encapsulation types | |||
| */ | */ | |||
| identity encapsulation-type { | identity encapsulation-type { | |||
| description | description | |||
| "Base identity for the encapsulation type."; | "Base identity for encapsulation types."; | |||
| } | } | |||
| identity priority-tagged { | identity priority-tagged { | |||
| base encapsulation-type; | base encapsulation-type; | |||
| description | description | |||
| "Priority-tagged interface."; | "Priority-tagged interface."; | |||
| } | } | |||
| identity dot1q { | identity dot1q { | |||
| if-feature "dot1q"; | if-feature "dot1q"; | |||
| base encapsulation-type; | base encapsulation-type; | |||
| description | description | |||
| "Dot1q encapsulation."; | "dot1Q encapsulation."; | |||
| } | } | |||
| identity qinq { | identity qinq { | |||
| if-feature "qinq"; | if-feature "qinq"; | |||
| base encapsulation-type; | base encapsulation-type; | |||
| description | description | |||
| "QinQ encapsulation."; | "QinQ encapsulation."; | |||
| } | } | |||
| identity qinany { | identity qinany { | |||
| if-feature "qinany"; | if-feature "qinany"; | |||
| base encapsulation-type; | base encapsulation-type; | |||
| description | description | |||
| "QinAny encapsulation."; | "QinAny encapsulation."; | |||
| } | } | |||
| identity vxlan { | identity vxlan { | |||
| if-feature "vxlan"; | if-feature "vxlan"; | |||
| base encapsulation-type; | base encapsulation-type; | |||
| description | description | |||
| "VxLAN encapsulation."; | "VXLAN encapsulation."; | |||
| } | } | |||
| identity ethernet-type { | identity ethernet-type { | |||
| base encapsulation-type; | base encapsulation-type; | |||
| description | description | |||
| "Ethernet encapsulation type."; | "Ethernet encapsulation type."; | |||
| } | } | |||
| identity vlan-type { | identity vlan-type { | |||
| base encapsulation-type; | base encapsulation-type; | |||
| skipping to change at line 1920 ¶ | skipping to change at line 1798 ¶ | |||
| } | } | |||
| identity lag-int { | identity lag-int { | |||
| if-feature "lag-interface"; | if-feature "lag-interface"; | |||
| base encapsulation-type; | base encapsulation-type; | |||
| description | description | |||
| "LAG interface type."; | "LAG interface type."; | |||
| } | } | |||
| /* | /* | |||
| * Identities related to VLAN Tag | * Identities related to VLAN tags | |||
| */ | */ | |||
| identity tag-type { | identity tag-type { | |||
| description | description | |||
| "Base identity for the tag types."; | "Base identity for VLAN tag types."; | |||
| } | } | |||
| identity c-vlan { | identity c-vlan { | |||
| base tag-type; | base tag-type; | |||
| description | description | |||
| "Indicates Customer VLAN (C-VLAN) tag, normally using | "Indicates a Customer VLAN (C-VLAN) tag, normally using | |||
| the 0x8100 Ethertype."; | the 0x8100 Ethertype."; | |||
| } | } | |||
| identity s-vlan { | identity s-vlan { | |||
| base tag-type; | base tag-type; | |||
| description | description | |||
| "Indicates Service VLAN (S-VLAN) tag."; | "Indicates a Service VLAN (S-VLAN) tag."; | |||
| } | } | |||
| identity s-c-vlan { | identity s-c-vlan { | |||
| base tag-type; | base tag-type; | |||
| description | description | |||
| "Uses both an S-VLAN tag and a C-VLAN tag."; | "Uses both an S-VLAN tag and a C-VLAN tag."; | |||
| } | } | |||
| /* | /* | |||
| * Identities related to VXLAN | * Identities related to VXLANs | |||
| */ | */ | |||
| identity vxlan-peer-mode { | identity vxlan-peer-mode { | |||
| if-feature "vxlan"; | if-feature "vxlan"; | |||
| description | description | |||
| "Base identity for the VXLAN peer mode."; | "Base identity for VXLAN peer modes."; | |||
| } | } | |||
| identity static-mode { | identity static-mode { | |||
| base vxlan-peer-mode; | base vxlan-peer-mode; | |||
| description | description | |||
| "VXLAN access in the static mode."; | "VXLAN access in the static mode."; | |||
| } | } | |||
| identity bgp-mode { | identity bgp-mode { | |||
| base vxlan-peer-mode; | base vxlan-peer-mode; | |||
| skipping to change at line 1976 ¶ | skipping to change at line 1854 ¶ | |||
| "VXLAN access by BGP EVPN learning."; | "VXLAN access by BGP EVPN learning."; | |||
| } | } | |||
| /* | /* | |||
| * Identities related to multicast | * Identities related to multicast | |||
| */ | */ | |||
| identity multicast-gp-address-mapping { | identity multicast-gp-address-mapping { | |||
| if-feature "multicast"; | if-feature "multicast"; | |||
| description | description | |||
| "Base identity for multicast group mapping type."; | "Base identity for multicast group mapping types."; | |||
| } | } | |||
| identity static-mapping { | identity static-mapping { | |||
| base multicast-gp-address-mapping; | base multicast-gp-address-mapping; | |||
| description | description | |||
| "Static mapping, i.e., attach the interface to the | "Static mapping, i.e., an interface is attached to the | |||
| multicast group as a static member."; | multicast group as a static member."; | |||
| } | } | |||
| identity dynamic-mapping { | identity dynamic-mapping { | |||
| base multicast-gp-address-mapping; | base multicast-gp-address-mapping; | |||
| description | description | |||
| "Dynamic mapping, i.e., an interface is added to the | "Dynamic mapping, i.e., an interface is added to the | |||
| multicast group as a result of snooping."; | multicast group as a result of snooping."; | |||
| } | } | |||
| identity multicast-tree-type { | identity multicast-tree-type { | |||
| if-feature "multicast"; | if-feature "multicast"; | |||
| description | description | |||
| "Base identity for multicast tree type."; | "Base identity for multicast tree types."; | |||
| } | } | |||
| identity ssm-tree-type { | identity ssm-tree-type { | |||
| base multicast-tree-type; | base multicast-tree-type; | |||
| description | description | |||
| "Source-Specific Multicast (SSM) tree type."; | "Source-Specific Multicast (SSM) tree type."; | |||
| } | } | |||
| identity asm-tree-type { | identity asm-tree-type { | |||
| base multicast-tree-type; | base multicast-tree-type; | |||
| skipping to change at line 2020 ¶ | skipping to change at line 1898 ¶ | |||
| identity bidir-tree-type { | identity bidir-tree-type { | |||
| base multicast-tree-type; | base multicast-tree-type; | |||
| description | description | |||
| "Bidirectional tree type."; | "Bidirectional tree type."; | |||
| } | } | |||
| identity multicast-rp-discovery-type { | identity multicast-rp-discovery-type { | |||
| if-feature "multicast"; | if-feature "multicast"; | |||
| description | description | |||
| "Base identity for Rendezvous Point (RP) discovery type."; | "Base identity for Rendezvous Point (RP) discovery types."; | |||
| } | } | |||
| identity auto-rp { | identity auto-rp { | |||
| base multicast-rp-discovery-type; | base multicast-rp-discovery-type; | |||
| description | description | |||
| "Auto-RP discovery type."; | "Auto-RP discovery type."; | |||
| } | } | |||
| identity static-rp { | identity static-rp { | |||
| base multicast-rp-discovery-type; | base multicast-rp-discovery-type; | |||
| skipping to change at line 2044 ¶ | skipping to change at line 1922 ¶ | |||
| identity bsr-rp { | identity bsr-rp { | |||
| base multicast-rp-discovery-type; | base multicast-rp-discovery-type; | |||
| description | description | |||
| "Bootstrap Router (BSR) discovery type."; | "Bootstrap Router (BSR) discovery type."; | |||
| } | } | |||
| identity group-management-protocol { | identity group-management-protocol { | |||
| if-feature "multicast"; | if-feature "multicast"; | |||
| description | description | |||
| "Base identity for multicast group management protocol."; | "Base identity for multicast group management protocols."; | |||
| } | } | |||
| identity igmp-proto { | identity igmp-proto { | |||
| base group-management-protocol; | base group-management-protocol; | |||
| description | description | |||
| "IGMP."; | "IGMP."; | |||
| reference | reference | |||
| "RFC 1112: Host Extensions for IP Multicasting | "RFC 1112: Host Extensions for IP Multicasting | |||
| RFC 2236: Internet Group Management Protocol, Version 2 | RFC 2236: Internet Group Management Protocol, Version 2 | |||
| RFC 3376: Internet Group Management Protocol, Version 3"; | RFC 3376: Internet Group Management Protocol, Version 3"; | |||
| skipping to change at line 2074 ¶ | skipping to change at line 1952 ¶ | |||
| for IPv6"; | for IPv6"; | |||
| } | } | |||
| identity pim-proto { | identity pim-proto { | |||
| if-feature "pim"; | if-feature "pim"; | |||
| base routing-protocol-type; | base routing-protocol-type; | |||
| description | description | |||
| "PIM."; | "PIM."; | |||
| reference | reference | |||
| "RFC 7761: Protocol Independent Multicast - Sparse Mode | "RFC 7761: Protocol Independent Multicast - Sparse Mode | |||
| (PIM-SM): Protocol Specification (Revised)"; | (PIM-SM): Protocol Specification (Revised)"; | |||
| } | } | |||
| identity igmp-version { | identity igmp-version { | |||
| if-feature "igmp"; | if-feature "igmp"; | |||
| description | description | |||
| "Base identity for IGMP version."; | "Base identity for indicating the IGMP version."; | |||
| } | } | |||
| identity igmpv1 { | identity igmpv1 { | |||
| base igmp-version; | base igmp-version; | |||
| description | description | |||
| "IGMPv1."; | "IGMPv1."; | |||
| reference | reference | |||
| "RFC 1112: Host Extensions for IP Multicasting"; | "RFC 1112: Host Extensions for IP Multicasting"; | |||
| } | } | |||
| skipping to change at line 2110 ¶ | skipping to change at line 1988 ¶ | |||
| base igmp-version; | base igmp-version; | |||
| description | description | |||
| "IGMPv3."; | "IGMPv3."; | |||
| reference | reference | |||
| "RFC 3376: Internet Group Management Protocol, Version 3"; | "RFC 3376: Internet Group Management Protocol, Version 3"; | |||
| } | } | |||
| identity mld-version { | identity mld-version { | |||
| if-feature "mld"; | if-feature "mld"; | |||
| description | description | |||
| "Base identity for MLD version."; | "Base identity for indicating the MLD version."; | |||
| } | } | |||
| identity mldv1 { | identity mldv1 { | |||
| base mld-version; | base mld-version; | |||
| description | description | |||
| "MLDv1."; | "MLDv1."; | |||
| reference | reference | |||
| "RFC 2710: Multicast Listener Discovery (MLD) for IPv6"; | "RFC 2710: Multicast Listener Discovery (MLD) for IPv6"; | |||
| } | } | |||
| skipping to change at line 2136 ¶ | skipping to change at line 2014 ¶ | |||
| "RFC 3810: Multicast Listener Discovery Version 2 (MLDv2) | "RFC 3810: Multicast Listener Discovery Version 2 (MLDv2) | |||
| for IPv6"; | for IPv6"; | |||
| } | } | |||
| /* | /* | |||
| * Identities related to traffic types | * Identities related to traffic types | |||
| */ | */ | |||
| identity tf-type { | identity tf-type { | |||
| description | description | |||
| "Base identity for the traffic type."; | "Base identity for traffic types."; | |||
| } | } | |||
| identity multicast-traffic { | identity multicast-traffic { | |||
| base tf-type; | base tf-type; | |||
| description | description | |||
| "Multicast traffic."; | "Multicast traffic."; | |||
| } | } | |||
| identity broadcast-traffic { | identity broadcast-traffic { | |||
| base tf-type; | base tf-type; | |||
| skipping to change at line 2181 ¶ | skipping to change at line 2059 ¶ | |||
| identity mail { | identity mail { | |||
| base customer-application; | base customer-application; | |||
| description | description | |||
| "Mail application."; | "Mail application."; | |||
| } | } | |||
| identity file-transfer { | identity file-transfer { | |||
| base customer-application; | base customer-application; | |||
| description | description | |||
| "File transfer application (e.g., FTP, SFTP)."; | "File transfer application (e.g., FTP, Secure FTP (SFTP))."; | |||
| } | } | |||
| identity database { | identity database { | |||
| base customer-application; | base customer-application; | |||
| description | description | |||
| "Database application."; | "Database application."; | |||
| } | } | |||
| identity social { | identity social { | |||
| base customer-application; | base customer-application; | |||
| skipping to change at line 2211 ¶ | skipping to change at line 2089 ¶ | |||
| identity p2p { | identity p2p { | |||
| base customer-application; | base customer-application; | |||
| description | description | |||
| "Peer-to-peer application."; | "Peer-to-peer application."; | |||
| } | } | |||
| identity network-management { | identity network-management { | |||
| base customer-application; | base customer-application; | |||
| description | description | |||
| "Management application (e.g., Telnet, syslog, | "Management application (e.g., Telnet, syslog, SNMP)."; | |||
| SNMP)."; | ||||
| } | } | |||
| identity voice { | identity voice { | |||
| base customer-application; | base customer-application; | |||
| description | description | |||
| "Voice application."; | "Voice application."; | |||
| } | } | |||
| identity video { | identity video { | |||
| base customer-application; | base customer-application; | |||
| description | description | |||
| "Video conference application."; | "Video-conference application."; | |||
| } | } | |||
| identity embb { | identity embb { | |||
| base customer-application; | base customer-application; | |||
| description | description | |||
| "Enhanced Mobile Broadband (eMBB) application. | "Enhanced Mobile Broadband (eMBB) application. | |||
| Note that an eMBB application demands network performance with a | Note that eMBB applications demand network performance | |||
| wide variety of characteristics, such as data rate, latency, | with a wide variety of such characteristics as data rate, | |||
| loss rate, reliability, and many other parameters."; | latency, loss rate, reliability, and many other | |||
| parameters."; | ||||
| } | } | |||
| identity urllc { | identity urllc { | |||
| base customer-application; | base customer-application; | |||
| description | description | |||
| "Ultra-Reliable and Low Latency Communications | "Ultra-Reliable and Low Latency Communications (URLLC) | |||
| (URLLC) application. Note that an URLLC application demands | application. Note that URLLC applications demand | |||
| network performance with a wide variety of characteristics, such | network performance with a wide variety of such | |||
| as latency, reliability, and many other parameters."; | characteristics as latency, reliability, and many other | |||
| parameters."; | ||||
| } | } | |||
| identity mmtc { | identity mmtc { | |||
| base customer-application; | base customer-application; | |||
| description | description | |||
| "Massive Machine Type Communications (mMTC) application. | "Massive Machine Type Communications (mMTC) application. | |||
| Note that an mMTC application demands network performance with | Note that mMTC applications demand network performance | |||
| a wide variety of characteristics, such as data rate, latency, | with a wide variety of such characteristics as data rate, | |||
| loss rate, reliability, and many other parameters."; | latency, loss rate, reliability, and many other | |||
| parameters."; | ||||
| } | } | |||
| /* | /* | |||
| * Identities related to service bundling | * Identities related to service bundling | |||
| */ | */ | |||
| identity bundling-type { | identity bundling-type { | |||
| description | description | |||
| "The base identity for the bundling type. It supports a subset or | "The base identity for the bundling type. It supports a | |||
| all CE-VLANs associated with an L2VPN service."; | subset or all Customer Edge VLAN IDs (CE-VLAN IDs) | |||
| associated with an L2VPN service."; | ||||
| } | } | |||
| identity multi-svc-bundling { | identity multi-svc-bundling { | |||
| base bundling-type; | base bundling-type; | |||
| description | description | |||
| "Multi-service bundling, i.e., multiple C-VLAN IDs | "Multi-service bundling, i.e., multiple CE-VLAN IDs | |||
| can be associated with an L2VPN service at a site."; | can be associated with an L2VPN service at a site."; | |||
| } | } | |||
| identity one2one-bundling { | identity one2one-bundling { | |||
| base bundling-type; | base bundling-type; | |||
| description | description | |||
| "One-to-one service bundling, i.e., each L2VPN can | "One-to-one service bundling, i.e., each L2VPN can | |||
| be associated with only one C-VLAN ID at a site."; | be associated with only one CE-VLAN ID at a site."; | |||
| } | } | |||
| identity all2one-bundling { | identity all2one-bundling { | |||
| base bundling-type; | base bundling-type; | |||
| description | description | |||
| "All-to-one bundling, i.e., all C-VLAN IDs are mapped | "All-to-one bundling, i.e., all CE-VLAN IDs are mapped | |||
| to one L2VPN service."; | to one L2VPN service."; | |||
| } | } | |||
| /* | /* | |||
| * Identities related to Ethernet Services | * Identities related to Ethernet services | |||
| */ | */ | |||
| identity control-mode { | identity control-mode { | |||
| description | description | |||
| "Base Identity for the type of control mode on Layer 2 | "Base identity for the type of control mode used with the | |||
| Control Protocol (L2CP)."; | Layer 2 Control Protocol (L2CP)."; | |||
| } | } | |||
| identity peer { | identity peer { | |||
| base control-mode; | base control-mode; | |||
| description | description | |||
| "'peer' mode, i.e., participate in the protocol towards the CE. | "'peer' mode, i.e., participate in the protocol towards | |||
| Peering is common for Link Aggregation Control Protocol (LACP) | the CE. Peering is common for the Link Aggregation Control | |||
| and the Ethernet Local Management Interface (E-LMI) and, | Protocol (LACP) and the Ethernet Local Management Interface | |||
| occasionally, for Link Layer Discovery Protocol (LLDP). | (E-LMI) and, occasionally, for the Link Layer Discovery | |||
| For VPLSs and VPWSs, the subscriber can also request that the | Protocol (LLDP). For VPLSs and VPWSs, the subscriber can | |||
| peer service provider enables spanning tree."; | also request that the peer service provider enable | |||
| spanning tree."; | ||||
| } | } | |||
| identity tunnel { | identity tunnel { | |||
| base control-mode; | base control-mode; | |||
| description | description | |||
| "'tunnel' mode, i.e., pass to the egress or destination site. For | "'tunnel' mode, i.e., pass to the egress or destination | |||
| Ethernet Private Lines (EPLs), the expectation is that L2CP | site. For Ethernet Private Lines (EPLs), the expectation | |||
| frames are tunnelled."; | is that L2CP frames are tunneled."; | |||
| } | } | |||
| identity discard { | identity discard { | |||
| base control-mode; | base control-mode; | |||
| description | description | |||
| "'Discard' mode, i.e., discard the frame."; | "'Discard' mode, i.e., discard the frame."; | |||
| } | } | |||
| identity neg-mode { | identity neg-mode { | |||
| description | description | |||
| "Base identity for the negotiation mode."; | "Base identity for the type of negotiation mode."; | |||
| } | } | |||
| identity full-duplex { | identity full-duplex { | |||
| base neg-mode; | base neg-mode; | |||
| description | description | |||
| "Full-duplex negotiation mode."; | "Full-duplex negotiation mode."; | |||
| } | } | |||
| identity auto-neg { | identity auto-neg { | |||
| base neg-mode; | base neg-mode; | |||
| description | description | |||
| "Auto-negotiation mode."; | "Auto-negotiation mode."; | |||
| } | } | |||
| /******** Collection of VPN-related Types ********/ | /******** VPN-related type ********/ | |||
| typedef vpn-id { | typedef vpn-id { | |||
| type string; | type string; | |||
| description | description | |||
| "Defines an identifier that is used with a VPN module. | "Defines an identifier that is used with a VPN module. | |||
| This can be, for example, a service identifier, a node | For example, this can be a service identifier, a node | |||
| identifier, etc."; | identifier, etc."; | |||
| } | } | |||
| /******* VPN-related reusable groupings *******/ | /******* VPN-related reusable groupings *******/ | |||
| grouping vpn-description { | grouping vpn-description { | |||
| description | description | |||
| "Provides common VPN information."; | "Provides common VPN information."; | |||
| leaf vpn-id { | leaf vpn-id { | |||
| type vpn-common:vpn-id; | type vpn-common:vpn-id; | |||
| skipping to change at line 2380 ¶ | skipping to change at line 2262 ¶ | |||
| } | } | |||
| leaf customer-name { | leaf customer-name { | |||
| type string; | type string; | |||
| description | description | |||
| "Name of the customer that actually uses the VPN."; | "Name of the customer that actually uses the VPN."; | |||
| } | } | |||
| } | } | |||
| grouping vpn-profile-cfg { | grouping vpn-profile-cfg { | |||
| description | description | |||
| "Grouping for VPN Profile configuration."; | "Grouping for VPN profile configuration."; | |||
| container valid-provider-identifiers { | container valid-provider-identifiers { | |||
| description | description | |||
| "Container for valid provider profile identifiers."; | "Container for valid provider profile identifiers."; | |||
| list external-connectivity-identifier { | list external-connectivity-identifier { | |||
| if-feature "external-connectivity"; | if-feature "external-connectivity"; | |||
| key "id"; | key "id"; | |||
| description | description | |||
| "List for profile identifiers that uniquely identify profiles | "List of profile identifiers that uniquely identify | |||
| governing how external connectivity is provided to a VPN. | profiles governing how external connectivity is | |||
| A profile indicates the type of external connectivity | provided to a VPN. A profile indicates the type of | |||
| (Internet, cloud, etc.), the sites/nodes that are associated | external connectivity (Internet, cloud, etc.), the | |||
| with a connectivity profile, etc. A profile can also indicate | sites/nodes that are associated with a connectivity | |||
| filtering rules and/or address translation rules. Such | profile, etc. A profile can also indicate filtering | |||
| features may involve PE, P, or dedicated nodes as a function | rules and/or address translation rules. Such features | |||
| may involve PE, P, or dedicated nodes as a function | ||||
| of the deployment."; | of the deployment."; | |||
| leaf id { | leaf id { | |||
| type string; | type string; | |||
| description | description | |||
| "Identification of an external connectivity profile. The | "Identification of an external connectivity profile. | |||
| profile only has significance within the service provider's | The profile only has significance within the service | |||
| administrative domain."; | provider's administrative domain."; | |||
| } | } | |||
| } | } | |||
| list encryption-profile-identifier { | list encryption-profile-identifier { | |||
| key "id"; | key "id"; | |||
| description | description | |||
| "List for encryption profile identifiers."; | "List of encryption profile identifiers."; | |||
| leaf id { | leaf id { | |||
| type string; | type string; | |||
| description | description | |||
| "Identification of the encryption profile to be used. The | "Identification of the encryption profile to be used. | |||
| profile only has significance within the service provider's | The profile only has significance within the service | |||
| administrative domain."; | provider's administrative domain."; | |||
| } | } | |||
| } | } | |||
| list qos-profile-identifier { | list qos-profile-identifier { | |||
| key "id"; | key "id"; | |||
| description | description | |||
| "List for QoS Profile Identifiers."; | "List of QoS profile identifiers."; | |||
| leaf id { | leaf id { | |||
| type string; | type string; | |||
| description | description | |||
| "Identification of the QoS profile to be used. The | "Identification of the QoS profile to be used. The | |||
| profile only has significance within the service provider's | profile only has significance within the service | |||
| administrative domain."; | provider's administrative domain."; | |||
| } | } | |||
| } | } | |||
| list bfd-profile-identifier { | list bfd-profile-identifier { | |||
| key "id"; | key "id"; | |||
| description | description | |||
| "List for BFD profile identifiers."; | "List of BFD profile identifiers."; | |||
| leaf id { | leaf id { | |||
| type string; | type string; | |||
| description | description | |||
| "Identification of the BFD profile to be used. The | "Identification of the BFD profile to be used. The | |||
| profile only has significance within the service provider's | profile only has significance within the service | |||
| administrative domain."; | provider's administrative domain."; | |||
| } | } | |||
| } | } | |||
| list forwarding-profile-identifier { | list forwarding-profile-identifier { | |||
| key "id"; | key "id"; | |||
| description | description | |||
| "List for forwarding profile identifiers."; | "List of forwarding profile identifiers."; | |||
| leaf id { | leaf id { | |||
| type string; | type string; | |||
| description | description | |||
| "Identification of the forwarding profile to be used. | "Identification of the forwarding profile to be used. | |||
| The profile only has significance within the service | The profile only has significance within the service | |||
| provider's administrative domain."; | provider's administrative domain."; | |||
| } | } | |||
| } | } | |||
| list routing-profile-identifier { | list routing-profile-identifier { | |||
| key "id"; | key "id"; | |||
| description | description | |||
| "List for Routing Profile Identifiers."; | "List of routing profile identifiers."; | |||
| leaf id { | leaf id { | |||
| type string; | type string; | |||
| description | description | |||
| "Identification of the routing profile to be used by the | "Identification of the routing profile to be used by | |||
| routing protocols within sites, vpn-network-accesses, or | the routing protocols within sites, VPN network | |||
| vpn-nodes for refering VRF's import/export policies. | accesses, or VPN nodes for referring to VRF's | |||
| import/export policies. | ||||
| The profile only has significance within the service | The profile only has significance within the service | |||
| provider's administrative domain."; | provider's administrative domain."; | |||
| } | } | |||
| } | } | |||
| nacm:default-deny-write; | nacm:default-deny-write; | |||
| } | } | |||
| } | } | |||
| grouping oper-status-timestamp { | grouping oper-status-timestamp { | |||
| description | description | |||
| "This grouping defines some operational parameters for the | "This grouping defines some operational parameters for the | |||
| service."; | service."; | |||
| leaf status { | leaf status { | |||
| type identityref { | type identityref { | |||
| base operational-status; | base operational-status; | |||
| } | } | |||
| config false; | config false; | |||
| description | description | |||
| "Operations status."; | "Operational status."; | |||
| } | } | |||
| leaf last-change { | leaf last-change { | |||
| type yang:date-and-time; | type yang:date-and-time; | |||
| config false; | config false; | |||
| description | description | |||
| "Indicates the actual date and time of the service status | "Indicates the actual date and time of the service status | |||
| change."; | change."; | |||
| } | } | |||
| } | } | |||
| skipping to change at line 2511 ¶ | skipping to change at line 2395 ¶ | |||
| leaf status { | leaf status { | |||
| type identityref { | type identityref { | |||
| base administrative-status; | base administrative-status; | |||
| } | } | |||
| description | description | |||
| "Administrative service status."; | "Administrative service status."; | |||
| } | } | |||
| leaf last-change { | leaf last-change { | |||
| type yang:date-and-time; | type yang:date-and-time; | |||
| description | description | |||
| "Indicates the actual date and time of the service status | "Indicates the actual date and time of the service | |||
| change."; | status change."; | |||
| } | } | |||
| } | } | |||
| container oper-status { | container oper-status { | |||
| config false; | ||||
| description | description | |||
| "Operational service status."; | "Operational service status."; | |||
| uses oper-status-timestamp; | uses oper-status-timestamp; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping underlay-transport { | grouping underlay-transport { | |||
| description | description | |||
| "This grouping defines the type of underlay transport for the | "This grouping defines the type of underlay transport for | |||
| VPN service or how that underlay is set. It can include an | the VPN service or how that underlay is set. It can | |||
| identifier to an abstract transport instance to which the VPN | include an identifier for an abstract transport instance to | |||
| is grafted or indicate a technical implementation that is | which the VPN is grafted or indicate a technical | |||
| expressed as an ordered list of protocols."; | implementation that is expressed as an ordered list of | |||
| protocols."; | ||||
| choice type { | choice type { | |||
| description | description | |||
| "A choice based on the type of underlay transport | "A choice based on the type of underlay transport | |||
| constraints."; | constraints."; | |||
| case abstract { | case abstract { | |||
| description | description | |||
| "Indicates that the transport constraint is an abstract | "Indicates that the transport constraint is an abstract | |||
| concept."; | concept."; | |||
| leaf transport-instance-id { | leaf transport-instance-id { | |||
| type string; | type string; | |||
| description | description | |||
| "An optional identifier of the abstract transport instance."; | "An optional identifier of the abstract transport | |||
| instance."; | ||||
| } | } | |||
| leaf instance-type { | leaf instance-type { | |||
| type identityref { | type identityref { | |||
| base transport-instance-type; | base transport-instance-type; | |||
| } | } | |||
| description | description | |||
| "Indicates a transport instance type. For example, it can | "Indicates a transport instance type. For example, | |||
| be a VPN+, an IETF network slice, a virtual network, etc."; | it can be a VPN+, an IETF network slice, a virtual | |||
| network, etc."; | ||||
| } | } | |||
| } | } | |||
| case protocol { | case protocol { | |||
| description | description | |||
| "Indicates a list of protocols."; | "Indicates a list of protocols."; | |||
| leaf-list protocol { | leaf-list protocol { | |||
| type identityref { | type identityref { | |||
| base protocol-type; | base protocol-type; | |||
| } | } | |||
| ordered-by user; | ordered-by user; | |||
| description | description | |||
| "A client ordered list of transport protocols."; | "A client-ordered list of transport protocols."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping vpn-route-targets { | grouping vpn-route-targets { | |||
| description | description | |||
| "A grouping that specifies Route Target (RT) import-export rules | "A grouping that specifies Route Target (RT) import/export | |||
| used in a BGP-enabled VPN."; | rules used in a BGP-enabled VPN."; | |||
| reference | reference | |||
| "RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs) | "RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs) | |||
| RFC 4664: Framework for Layer 2 Virtual Private Networks | RFC 4664: Framework for Layer 2 Virtual Private Networks | |||
| (L2VPNs)"; | (L2VPNs)"; | |||
| list vpn-target { | list vpn-target { | |||
| key "id"; | key "id"; | |||
| description | description | |||
| "Route targets. AND/OR operations may be defined | "RTs. AND/OR operations may be defined based on the | |||
| based on the RTs assigment."; | assigned RTs."; | |||
| leaf id { | leaf id { | |||
| type uint8; | type uint8; | |||
| description | description | |||
| "Identifies each VPN Target."; | "Identifies each VPN target."; | |||
| } | } | |||
| list route-targets { | list route-targets { | |||
| key "route-target"; | key "route-target"; | |||
| description | description | |||
| "List of RTs."; | "List of RTs."; | |||
| leaf route-target { | leaf route-target { | |||
| type rt-types:route-target; | type rt-types:route-target; | |||
| description | description | |||
| "Conveys an RT value."; | "Conveys an RT value."; | |||
| } | } | |||
| } | } | |||
| leaf route-target-type { | leaf route-target-type { | |||
| type rt-types:route-target-type; | type rt-types:route-target-type; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "Import/export type of the RT."; | "Import/export type of the RT."; | |||
| } | } | |||
| } | } | |||
| container vpn-policies { | container vpn-policies { | |||
| description | description | |||
| "VPN service policies. It contains references to the | "VPN service policies. 'vpn-policies' contains references | |||
| import and export policies to be associated with the | to the import and export policies to be associated with | |||
| VPN service."; | the VPN service."; | |||
| leaf import-policy { | leaf import-policy { | |||
| type string; | type string; | |||
| description | description | |||
| "Identifies the 'import' policy."; | "Identifies the import policy."; | |||
| } | } | |||
| leaf export-policy { | leaf export-policy { | |||
| type string; | type string; | |||
| description | description | |||
| "Identifies the 'export' policy."; | "Identifies the export policy."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping route-distinguisher { | grouping route-distinguisher { | |||
| description | description | |||
| "Grouping for route distinguisher (RD)."; | "Grouping for Route Distinguishers (RDs)."; | |||
| choice rd-choice { | choice rd-choice { | |||
| description | description | |||
| "Route distinguisher choice between several options | "RD choice between several options for providing the RD | |||
| on providing the route distinguisher value."; | value."; | |||
| case directly-assigned { | case directly-assigned { | |||
| description | description | |||
| "Explicitly assign an RD value."; | "Explicitly assigns an RD value."; | |||
| leaf rd { | leaf rd { | |||
| type rt-types:route-distinguisher; | type rt-types:route-distinguisher; | |||
| description | description | |||
| "Indicates an RD value that is explicitly | "Indicates an RD value that is explicitly assigned."; | |||
| assigned."; | ||||
| } | } | |||
| } | } | |||
| case directly-assigned-suffix { | case directly-assigned-suffix { | |||
| description | description | |||
| "The value of the Assigned Number subfield of the RD. | "The value of the Assigned Number subfield of the RD. | |||
| The Administrator subfield of the RD will be | The Administrator subfield of the RD will be | |||
| based on other configuration information such as | based on other configuration information such as the | |||
| router-id or ASN."; | Router ID or Autonomous System Number (ASN)."; | |||
| leaf rd-suffix { | leaf rd-suffix { | |||
| type uint16; | type uint16; | |||
| description | description | |||
| "Indicates the value of the Assigned Number | "Indicates the value of the Assigned Number | |||
| subfield that is explicitly assigned."; | subfield that is explicitly assigned."; | |||
| } | } | |||
| } | } | |||
| case auto-assigned { | case auto-assigned { | |||
| description | description | |||
| "The RD is auto-assigned."; | "The RD is auto-assigned."; | |||
| container rd-auto { | container rd-auto { | |||
| description | description | |||
| "The RD is auto-assigned."; | "The RD is auto-assigned."; | |||
| choice auto-mode { | choice auto-mode { | |||
| description | description | |||
| "Indicates the auto-assignment mode. RD can be | "Indicates the auto-assignment mode. The RD can be | |||
| automatically assigned with or without | automatically assigned with or without | |||
| indicating a pool from which the RD should be | indicating a pool from which the RD should be | |||
| taken. | taken. | |||
| For both cases, the server will auto-assign an RD | For both cases, the server will auto-assign an RD | |||
| value 'auto-assigned-rd' and use that value | value 'auto-assigned-rd' and use that value | |||
| operationally."; | operationally."; | |||
| case from-pool { | case from-pool { | |||
| leaf rd-pool-name { | leaf rd-pool-name { | |||
| type string; | type string; | |||
| description | description | |||
| "The auto-assignment will be made from the pool | "The auto-assignment will be made from the pool | |||
| identified by the rd-pool-name."; | identified by 'rd-pool-name'."; | |||
| } | } | |||
| } | } | |||
| case full-auto { | case full-auto { | |||
| leaf auto { | leaf auto { | |||
| type empty; | type empty; | |||
| description | description | |||
| "Indicates an RD is fully auto-assigned."; | "Indicates that an RD is fully auto-assigned."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| leaf auto-assigned-rd { | leaf auto-assigned-rd { | |||
| type rt-types:route-distinguisher; | type rt-types:route-distinguisher; | |||
| config false; | config false; | |||
| description | description | |||
| "The value of the auto-assigned RD."; | "The value of the auto-assigned RD."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| case auto-assigned-suffix { | case auto-assigned-suffix { | |||
| description | description | |||
| "The value of the Assigned Number subfield will | "The value of the Assigned Number subfield will be | |||
| be auto-assigned. The Administrator subfield | auto-assigned. The Administrator subfield will be | |||
| will be based on other configuration information such as | based on other configuration information such as the | |||
| router-id or ASN."; | Router ID or ASN."; | |||
| container rd-auto-suffix { | container rd-auto-suffix { | |||
| description | description | |||
| "The Assigned Number subfield is auto-assigned."; | "The Assigned Number subfield is auto-assigned."; | |||
| choice auto-mode { | choice auto-mode { | |||
| description | description | |||
| "Indicates the auto-assignment mode of the Assigned Number | "Indicates the auto-assignment mode of the | |||
| subfield. This number can be automatically assigned | Assigned Number subfield. This number can be | |||
| with or without indicating a pool from which the value | automatically assigned with or without indicating a | |||
| should be taken. | pool from which the value should be taken. | |||
| For both cases, the server will auto-assign | For both cases, the server will auto-assign | |||
| 'auto-assigned-rd-suffix' and use that value to build | 'auto-assigned-rd-suffix' and use that value to | |||
| the RD that will be used operationally."; | build the RD that will be used operationally."; | |||
| case from-pool { | case from-pool { | |||
| leaf rd-pool-name { | leaf rd-pool-name { | |||
| type string; | type string; | |||
| description | description | |||
| "The assignment will be made from the pool identified | "The assignment will be made from the pool | |||
| by the rd-pool-name."; | identified by 'rd-pool-name'."; | |||
| } | } | |||
| } | } | |||
| case full-auto { | case full-auto { | |||
| leaf auto { | leaf auto { | |||
| type empty; | type empty; | |||
| description | description | |||
| "Indicates that the Assigned Number is fully auto | "Indicates that the Assigned Number subfield is | |||
| assigned."; | fully auto-assigned."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| leaf auto-assigned-rd-suffix { | leaf auto-assigned-rd-suffix { | |||
| type uint16; | type uint16; | |||
| config false; | config false; | |||
| description | description | |||
| "Includes the value of the Assigned Number subfield that | "Includes the value of the Assigned Number subfield | |||
| is auto-assigned ."; | that is auto-assigned."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| case no-rd { | case no-rd { | |||
| description | description | |||
| "Use the empty type to indicate RD has no value and is not to | "Uses the 'empty' type to indicate that the RD has no | |||
| be auto-assigned."; | value and is not to be auto-assigned."; | |||
| leaf no-rd { | leaf no-rd { | |||
| type empty; | type empty; | |||
| description | description | |||
| "No RD is assigned."; | "No RD is assigned."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping vpn-components-group { | grouping vpn-components-group { | |||
| description | description | |||
| "Grouping definition to assign group-ids to associate VPN nodes, | "Grouping definition to assign group IDs to associate | |||
| sites, or network accesses."; | VPN nodes, sites, or network accesses."; | |||
| container groups { | container groups { | |||
| description | description | |||
| "Lists the groups to which a VPN node, a site, or a network | "Lists the groups to which a VPN node, a site, or a | |||
| access belongs to."; | network access belongs."; | |||
| list group { | list group { | |||
| key "group-id"; | key "group-id"; | |||
| description | description | |||
| "List of group-ids."; | "List of group IDs."; | |||
| leaf group-id { | leaf group-id { | |||
| type string; | type string; | |||
| description | description | |||
| "Is the group-id to which a VPN node, a site, or a network | "The group ID to which a VPN node, a site, or a | |||
| access belongs to."; | network access belongs."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping placement-constraints { | grouping placement-constraints { | |||
| description | description | |||
| "Constraints for placing a network access."; | "Constraints related to placement of a network access."; | |||
| list constraint { | list constraint { | |||
| key "constraint-type"; | key "constraint-type"; | |||
| description | description | |||
| "List of constraints."; | "List of constraints."; | |||
| leaf constraint-type { | leaf constraint-type { | |||
| type identityref { | type identityref { | |||
| base placement-diversity; | base placement-diversity; | |||
| } | } | |||
| description | description | |||
| "Diversity constraint type."; | "Diversity constraint type."; | |||
| } | } | |||
| container target { | container target { | |||
| description | description | |||
| "The constraint will apply against this list of groups."; | "The constraint will apply against this list of | |||
| groups."; | ||||
| choice target-flavor { | choice target-flavor { | |||
| description | description | |||
| "Choice for the group definition."; | "Choice for the group definition."; | |||
| case id { | case id { | |||
| list group { | list group { | |||
| key "group-id"; | key "group-id"; | |||
| description | description | |||
| "List of groups."; | "List of groups."; | |||
| leaf group-id { | leaf group-id { | |||
| type string; | type string; | |||
| description | description | |||
| "The constraint will apply against this particular | "The constraint will apply against this | |||
| group-id."; | particular group ID."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| case all-accesses { | case all-accesses { | |||
| leaf all-other-accesses { | leaf all-other-accesses { | |||
| type empty; | type empty; | |||
| description | description | |||
| "The constraint will apply against all other network | "The constraint will apply against all other | |||
| accesses of a site."; | network accesses of a site."; | |||
| } | } | |||
| } | } | |||
| case all-groups { | case all-groups { | |||
| leaf all-other-groups { | leaf all-other-groups { | |||
| type empty; | type empty; | |||
| description | description | |||
| "The constraint will apply against all other groups that | "The constraint will apply against all other | |||
| the customer is managing."; | groups managed by the customer."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping ports { | grouping ports { | |||
| description | description | |||
| "Choice of specifying a source or destination port numbers."; | "Choice of specifying source or destination port numbers."; | |||
| choice source-port { | choice source-port { | |||
| description | description | |||
| "Choice of specifying the source port or referring to a group | "Choice of specifying the source port or referring to a | |||
| of source port numbers."; | group of source port numbers."; | |||
| container source-port-range-or-operator { | container source-port-range-or-operator { | |||
| description | description | |||
| "Source port definition."; | "Source port definition."; | |||
| uses packet-fields:port-range-or-operator; | uses packet-fields:port-range-or-operator; | |||
| } | } | |||
| } | } | |||
| choice destination-port { | choice destination-port { | |||
| description | description | |||
| "Choice of specifying a destination port or referring to a group | "Choice of specifying a destination port or referring to a | |||
| of destination port numbers."; | group of destination port numbers."; | |||
| container destination-port-range-or-operator { | container destination-port-range-or-operator { | |||
| description | description | |||
| "Destination port definition."; | "Destination port definition."; | |||
| uses packet-fields:port-range-or-operator; | uses packet-fields:port-range-or-operator; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping qos-classification-policy { | grouping qos-classification-policy { | |||
| description | description | |||
| skipping to change at line 2872 ¶ | skipping to change at line 2760 ¶ | |||
| choice match-type { | choice match-type { | |||
| default "match-flow"; | default "match-flow"; | |||
| description | description | |||
| "Choice for classification."; | "Choice for classification."; | |||
| case match-flow { | case match-flow { | |||
| choice l3 { | choice l3 { | |||
| description | description | |||
| "Either IPv4 or IPv6."; | "Either IPv4 or IPv6."; | |||
| container ipv4 { | container ipv4 { | |||
| description | description | |||
| "Rule set that matches IPv4 header."; | "Rule set that matches the IPv4 header."; | |||
| uses packet-fields:acl-ip-header-fields; | uses packet-fields:acl-ip-header-fields; | |||
| uses packet-fields:acl-ipv4-header-fields; | uses packet-fields:acl-ipv4-header-fields; | |||
| } | } | |||
| container ipv6 { | container ipv6 { | |||
| description | description | |||
| "Rule set that matches IPv6 header."; | "Rule set that matches the IPv6 header."; | |||
| uses packet-fields:acl-ip-header-fields; | uses packet-fields:acl-ip-header-fields; | |||
| uses packet-fields:acl-ipv6-header-fields; | uses packet-fields:acl-ipv6-header-fields; | |||
| } | } | |||
| } | } | |||
| choice l4 { | choice l4 { | |||
| description | description | |||
| "Includes Layer 4 specific information. | "Includes Layer-4-specific information. | |||
| This version focuses on TCP and UDP."; | This version focuses on TCP and UDP."; | |||
| container tcp { | container tcp { | |||
| description | description | |||
| "Rule set that matches TCP header."; | "Rule set that matches the TCP header."; | |||
| uses packet-fields:acl-tcp-header-fields; | uses packet-fields:acl-tcp-header-fields; | |||
| uses ports; | uses ports; | |||
| } | } | |||
| container udp { | container udp { | |||
| description | description | |||
| "Rule set that matches UDP header."; | "Rule set that matches the UDP header."; | |||
| uses packet-fields:acl-udp-header-fields; | uses packet-fields:acl-udp-header-fields; | |||
| uses ports; | uses ports; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| case match-application { | case match-application { | |||
| leaf match-application { | leaf match-application { | |||
| type identityref { | type identityref { | |||
| base customer-application; | base customer-application; | |||
| } | } | |||
| description | description | |||
| "Defines the application to match."; | "Defines the application to match."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| leaf target-class-id { | leaf target-class-id { | |||
| if-feature "qos"; | ||||
| type string; | type string; | |||
| description | description | |||
| "Identification of the class of service. This identifier is | "Identification of the class of service. This | |||
| internal to the administration."; | identifier is internal to the administration."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS>]]></artwork> | ]]></sourcecode> | |||
| </figure></t> | ||||
| </section> | ||||
| <section anchor="Security" title="Security Considerations"> | ||||
| <t>The YANG modules specified in this document define schemas for data | ||||
| that is designed to be accessed via network management protocols such as | ||||
| NETCONF <xref target="RFC6241"></xref> or RESTCONF <xref | ||||
| target="RFC8040"></xref>. The lowest NETCONF layer is the secure | ||||
| transport layer, and the mandatory-to-implement secure transport is | ||||
| Secure Shell (SSH) <xref target="RFC6242"></xref>. The lowest RESTCONF | ||||
| layer is HTTPS, and the mandatory-to-implement secure transport is TLS | ||||
| <xref target="RFC8446"></xref>.</t> | ||||
| <t>The Network Configuration Access Control Model (NACM) <xref | ||||
| target="RFC8341"></xref> provides the means to restrict access for | ||||
| particular NETCONF or RESTCONF users to a preconfigured subset of all | ||||
| available NETCONF or RESTCONF protocol operations and content.</t> | ||||
| </section> | ||||
| <section anchor="Security" numbered="true" toc="default"> | ||||
| <name>Security Considerations</name> | ||||
| <t>The YANG module specified in this document defines a schema for data | ||||
| that is designed to be accessed via network management protocols such | ||||
| as NETCONF <xref target="RFC6241"/> or RESTCONF <xref target="RFC8040"/>. | ||||
| The lowest NETCONF layer is the secure transport layer, and the | ||||
| mandatory-to-implement secure transport is Secure Shell (SSH) | ||||
| <xref target="RFC6242"/>. The lowest RESTCONF layer is HTTPS, and the | ||||
| mandatory-to-implement secure transport is TLS <xref target="RFC8446"/>.</t> | ||||
| <t>The Network Configuration Access Control Model (NACM) <xref target="RFC8341"/ | ||||
| > | ||||
| provides the means to restrict access for particular NETCONF or RESTCONF users | ||||
| to a preconfigured subset of all available NETCONF or RESTCONF protocol | ||||
| operations and content.</t> | ||||
| <t>The "ietf-vpn-common" module defines a set of identities, types, and | <t>The "ietf-vpn-common" module defines a set of identities, types, and | |||
| groupings. These nodes are intended to be reused by other YANG modules. | groupings. These nodes are intended to be reused by other YANG modules. | |||
| The module does not expose by itself any data nodes which are writable, | The module by itself does not expose any data nodes that are writable, | |||
| contain read-only state, or RPCs. As such, there are no additional | data nodes that contain read-only state, or RPCs. As such, there are no ad | |||
| security issues to be considered relating to the "ietf-vpn-common" | ditional | |||
| module.</t> | security issues related to the "ietf-vpn-common" module that need to be co | |||
| nsidered.</t> | ||||
| <t>Modules that use the groupings that are defined in this document | <t>Modules that use the groupings that are defined in this document | |||
| should identify the corresponding security considerations. For example, | should identify the corresponding security considerations. For example, | |||
| reusing some of these groupings will expose privacy-related information | reusing some of these groupings will expose privacy-related information | |||
| (e.g., customer-name). Disclosing such information may be considered as | (e.g., 'customer-name'). Disclosing such information may be considered | |||
| a violation of the customer-provider trust relationship.</t> | a violation of the customer-provider trust relationship.</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 URI in the "ns" | <t>IANA has registered the following URI in the "ns" | |||
| subregistry within the "IETF XML Registry" <xref | subregistry within the "IETF XML Registry" <xref target="RFC3688" format=" | |||
| target="RFC3688"></xref>:</t> | default"/>:</t> | |||
| <dl newline="false" spacing="compact"> | ||||
| <t><figure> | <dt>URI:</dt><dd>urn:ietf:params:xml:ns:yang:ietf-vpn-common</dd> | |||
| <artwork><![CDATA[ URI: urn:ietf:params:xml:ns:yang:ietf-vpn-comm | <dt>Registrant Contact:</dt><dd>The IESG.</dd> | |||
| on | <dt>XML:</dt><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.]]></artwork> | <t>IANA has registered the following YANG module in | |||
| </figure></t> | the "YANG Module Names" subregistry <xref target="RFC6020" format="default | |||
| "/> | ||||
| <t>This document requests IANA to register the following YANG module in | ||||
| the "YANG Module Names" subregistry <xref target="RFC6020"></xref> | ||||
| within the "YANG Parameters" registry.</t> | within the "YANG Parameters" registry.</t> | |||
| <dl newline="false" spacing="compact"> | ||||
| <t><figure> | <dt>Name:</dt><dd>ietf-vpn-common</dd> | |||
| <artwork><![CDATA[ name: ietf-vpn-common | <dt>Namespace:</dt><dd>urn:ietf:params:xml:ns:yang:ietf-vpn-common</dd> | |||
| namespace: urn:ietf:params:xml:ns:yang:ietf-vpn-common | <dt>Maintained by IANA?</dt><dd>N</dd> | |||
| maintained by IANA: N | <dt>Prefix:</dt><dd>vpn-common</dd> | |||
| prefix: vpn-common | <dt>Reference:</dt><dd>RFC 9181</dd> | |||
| reference: RFC XXXX]]></artwork> | </dl> | |||
| </figure></t> | ||||
| </section> | ||||
| <section anchor="ack" title="Acknowledgements"> | ||||
| <t>During the discussions of this work, helpful comments and reviews | ||||
| were received from (listed alphabetically): Alejandro Aguado, Raul Arco, | ||||
| Miguel Cros Cecilia, Joe Clarke, Dhruv Dhody, Adrian Farrel, Roque | ||||
| Gagliano, Christian Jacquenet, Kireeti Kompella, Julian Lucek, Tom | ||||
| Petch, Erez Segev, and Paul Sherratt. Many thanks to them.</t> | ||||
| <t>This work is partially supported by the European Commission under | ||||
| Horizon 2020 grant agreement number 101015857 Secured autonomic traffic | ||||
| management for a Tera of SDN flows (Teraflow).</t> | ||||
| <t>Many thanks to Radek Krejci for the yangdoctors review, Wesley Eddy | ||||
| for the tsvart review, Ron Bonica and Victoria Pritchard for the Rtgdir | ||||
| review, Joel Halpern for the genart review, Tim Wicinski for the opsdir | ||||
| review, and Suresh Krishnan for the intdir review.</t> | ||||
| <t>Special thanks to Robert Wilton for the AD review.</t> | ||||
| <t>Thanks to Roman Danyliw, Lars Eagert, Warren Kumari, Erik Kline, | ||||
| Zaheduzzaman Sarker, Benjamin Kaduk, and Éric Vyncke for the IESG | ||||
| review.</t> | ||||
| </section> | ||||
| <section title="Contributors"> | ||||
| <t><figure> | ||||
| <artwork><![CDATA[ Italo Busi | ||||
| Huawei Technologies | ||||
| Email: Italo.Busi@huawei.com | ||||
| Luis Angel Munoz | ||||
| Vodafone | ||||
| Email: luis-angel.munoz@vodafone.com | ||||
| Victor Lopez Alvarez | ||||
| Telefonica | ||||
| Email: victor.lopezalvarez@telefonica.com]]></artwork> | ||||
| </figure></t> | ||||
| </section> | </section> | |||
| </middle> | </middle> | |||
| <!-- *****BACK MATTER ***** --> | ||||
| <back> | <back> | |||
| <references title="Normative References"> | ||||
| <?rfc include='reference.RFC.6991'?> | ||||
| <?rfc include='reference.RFC.3688'?> | ||||
| <?rfc include='reference.RFC.6020'?> | ||||
| <?rfc include='reference.RFC.7950'?> | ||||
| <?rfc include='reference.RFC.6241'?> | ||||
| <?rfc include='reference.RFC.8040'?> | ||||
| <?rfc include='reference.RFC.6242'?> | ||||
| <?rfc include='reference.RFC.8446'?> | ||||
| <?rfc include='reference.RFC.8341'?> | ||||
| <?rfc include='reference.RFC.8294'?> | ||||
| <?rfc include='reference.RFC.8519'?> | ||||
| <?rfc include='reference.RFC.4364'?> | ||||
| </references> | ||||
| <references title="Informative References"> | ||||
| <?rfc include='reference.RFC.8340'?> | ||||
| <?rfc include='reference.RFC.0791'?> | ||||
| <?rfc include='reference.RFC.8200'?> | ||||
| <?rfc include='reference.RFC.8512'?> | ||||
| <?rfc include='reference.RFC.1112'?> | ||||
| <?rfc include='reference.RFC.2236'?> | ||||
| <?rfc include='reference.RFC.3376'?> | ||||
| <?rfc include='reference.RFC.2710'?> | ||||
| <?rfc include='reference.RFC.3810'?> | ||||
| <?rfc include='reference.RFC.7761'?> | ||||
| <?rfc include='reference.RFC.5798'?> | ||||
| <?rfc include='reference.I-D.ietf-opsawg-l3sm-l3nm'?> | ||||
| <?rfc include='reference.I-D.ietf-teas-enhanced-vpn'?> | ||||
| <?rfc include='reference.I-D.ietf-teas-actn-vn-yang'?> | ||||
| <?rfc include='reference.I-D.ietf-opsawg-l2nm'?> | ||||
| <?rfc include='reference.RFC.8299'?> | ||||
| <?rfc include='reference.RFC.8466'?> | ||||
| <?rfc include='reference.RFC.7348'?> | ||||
| <?rfc include='reference.RFC.6513'?> | ||||
| <?rfc include='reference.RFC.4577'?> | ||||
| <?rfc include='reference.RFC.6565'?> | ||||
| <?rfc include='reference.RFC.5880'?> | ||||
| <?rfc include='reference.RFC.1701'?> | ||||
| <?rfc include='reference.RFC.1702'?> | ||||
| <?rfc include='reference.RFC.7676'?> | ||||
| <?rfc include='reference.RFC.8660'?> | ||||
| <?rfc include='reference.RFC.8663'?> | ||||
| <?rfc include='reference.RFC.8754'?> | ||||
| <?rfc include='reference.RFC.8277'?> | ||||
| <?rfc include='reference.RFC.6624'?> | ||||
| <?rfc include='reference.RFC.7432'?> | ||||
| <?rfc include='reference.RFC.5036'?> | ||||
| <?rfc include='reference.RFC.4762'?> | ||||
| <?rfc include='reference.RFC.4761'?> | <displayreference target="I-D.ietf-teas-enhanced-vpn" to="Enhanced-VPN-Framework | |||
| "/> | ||||
| <?rfc include='reference.RFC.8214'?> | ||||
| <?rfc include='reference.RFC.7623'?> | ||||
| <?rfc include='reference.RFC.4664'?> | ||||
| <?rfc include='reference.RFC.8365'?> | ||||
| <?rfc include='reference.RFC.3931'?> | ||||
| <?rfc include='reference.RFC.2003'?> | ||||
| <?rfc include='reference.RFC.2473'?> | ||||
| <?rfc include='reference.RFC.8926'?> | ||||
| <?rfc include='reference.RFC.7510'?> | ||||
| <?rfc include='reference.RFC.3209'?> | ||||
| <?rfc include='reference.RFC.4176'?> | ||||
| <?rfc include='reference.RFC.4026'?> | ||||
| <?rfc include='reference.RFC.8453'?> | ||||
| <?rfc include='reference.RFC.4960'?> | ||||
| <?rfc include='reference.RFC.4271'?> | ||||
| <?rfc include='reference.RFC.2453'?> | ||||
| <?rfc include='reference.RFC.2080'?> | ||||
| <?rfc include='reference.RFC.7880'?> | ||||
| <?rfc include='reference.I-D.ietf-teas-ietf-network-slices'?> | ||||
| <reference anchor="IEEE802.1Q"> | ||||
| <front> | ||||
| <title>Bridges and Bridged Networks</title> | ||||
| <author> | ||||
| <organization></organization> | ||||
| </author> | ||||
| <date day="06" month="July" year="2018" /> | ||||
| </front> | ||||
| <seriesInfo name="IEEE" value="Std 802.1Q-2018" /> | ||||
| </reference> | ||||
| <reference anchor="IEEE802.1ad"> | <references> | |||
| <front> | <name>References</name> | |||
| <title>Virtual Bridged Local Area Networks Amendment 4: Provider | <references> | |||
| Bridges</title> | <name>Normative References</name> | |||
| <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.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.7950.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.8040.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.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.8294.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8519.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.4364.xml"/> | ||||
| </references> | ||||
| <references> | ||||
| <name>Informative References</name> | ||||
| <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.0791.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8200.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8512.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.1112.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.2236.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.3376.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.2710.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.3810.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.7761.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.5798.xml"/> | ||||
| <author> | <!-- draft-ietf-opsawg-l3sm-l3nm (RFC 9182) --> | |||
| <organization></organization> | <reference anchor='RFC9182' target="https://www.rfc-editor.org/info/rfc9182"> | |||
| </author> | <front> | |||
| <title>A YANG Network Data Model for Layer 3 VPNs</title> | ||||
| <author initials='S' surname='Barguil' fullname='Samier Barguil'> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='O' surname='Gonzalez de Dios' fullname='Oscar Gonzalez de Dios | ||||
| ' role="editor"> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='M' surname='Boucadair' fullname='Mohamed Boucadair' role="edit | ||||
| or"> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='L' surname='Munoz' fullname='Luis Munoz'> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='A' surname='Aguado' fullname='Alejandro Aguado'> | ||||
| <organization /> | ||||
| </author> | ||||
| <date year='2022' month='February'/> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="9182"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC9182"/> | ||||
| </reference> | ||||
| <date month="" year="2006" /> | <!-- draft-ietf-teas-enhanced-vpn (I-D Exists) --> | |||
| </front> | <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D | |||
| .ietf-teas-enhanced-vpn.xml"/> | ||||
| <seriesInfo name="IEEE" value="Std 802.1ad-2005" /> | <!-- draft-ietf-teas-actn-vn-yang (I-D Exists) | |||
| </reference> | Long way; two editors --> | |||
| <reference anchor='ACTN-VN-YANG'> | ||||
| <front> | ||||
| <title>A YANG Data Model for VN Operation</title> | ||||
| <author initials='Y' surname='Lee' fullname='Young Lee' role="editor"> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='D' surname='Dhody' fullname='Dhruv Dhody' role="editor"> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='D' surname='Ceccarelli' fullname='Daniele Ceccarelli'> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='I' surname='Bryskin' fullname='Igor Bryskin'> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='B' surname='Yoon' fullname='Bin-Yeong Yoon'> | ||||
| <organization /> | ||||
| </author> | ||||
| <date year='2021' month='October' day='23' /> | ||||
| </front> | ||||
| <seriesInfo name='Internet-Draft' value='draft-ietf-teas-actn-vn-yang-13'/> | ||||
| </reference> | ||||
| <reference anchor="IEEE802.1AX"> | <!-- draft-ietf-opsawg-l2nm (I-D Exists) | |||
| <front> | Long way; two editors, plus a couple names messed up in original repo. file -- | |||
| <title>Link Aggregation</title> | > | |||
| <reference anchor='L2NM-YANG'> | ||||
| <front> | ||||
| <title>A Layer 2 VPN Network YANG Model</title> | ||||
| <author initials='S' surname='Barguil' fullname='Samier Barguil'> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='O' surname='Gonzalez de Dios' fullname='Oscar Gonzalez de Dios | ||||
| ' role="editor"> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='M' surname='Boucadair' fullname='Mohamed Boucadair' role="edit | ||||
| or"> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='L' surname='Munoz' fullname='Luis Munoz'> | ||||
| <organization /> | ||||
| </author> | ||||
| <date year='2021' month='November' day='22' /> | ||||
| </front> | ||||
| <seriesInfo name='Internet-Draft' value='draft-ietf-opsawg-l2nm-12'/> | ||||
| </reference> | ||||
| <author> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| <organization></organization> | FC.8299.xml"/> | |||
| </author> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| FC.8466.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.6513.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.4577.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.6565.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.5880.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.1701.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.1702.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.7676.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8660.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8663.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8754.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8277.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.6624.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.7432.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.5036.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.4762.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.4761.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8214.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.7623.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.4664.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8365.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.3931.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.2003.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.2473.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8926.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.7510.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.3209.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.4176.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.4026.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8453.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.4960.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.4271.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.2453.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.2080.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.7880.xml"/> | ||||
| <date month="" year="2020" /> | <!-- draft-ietf-teas-ietf-network-slices I-D Exists | |||
| </front> | Long way; one author is editor --> | |||
| <reference anchor="Network-Slices-Framework"> | ||||
| <front> | ||||
| <title>Framework for IETF Network Slices</title> | ||||
| <author initials="A" surname="Farrel" fullname="Adrian Farrel" role="editor"> | ||||
| <organization/></author> | ||||
| <author initials="E" surname="Gray" fullname="Eric Gray"> | ||||
| <organization/></author> | ||||
| <author initials="J" surname="Drake" fullname="John Drake"> | ||||
| <organization/></author> | ||||
| <author initials="R" surname="Rokui" fullname="Reza Rokui"> | ||||
| <organization/></author> | ||||
| <author initials="S" surname="Homma" fullname="Shunsuke Homma"> | ||||
| <organization/></author> | ||||
| <author initials="K" surname="Makhijani" fullname="Kiran Makhijani"> | ||||
| <organization/></author> | ||||
| <author initials="LM" surname="Contreras" fullname="Luis M. Contreras"> | ||||
| <organization/></author> | ||||
| <author initials="J" surname="Tantsura" fullname="Jeff Tantsura"> | ||||
| <organization/></author> | ||||
| <date month='October' day='25' year='2021'/> | ||||
| </front> | ||||
| <seriesInfo name='Internet-Draft' value='draft-ietf-teas-ietf-network-slices-05' | ||||
| /> | ||||
| </reference> | ||||
| <seriesInfo name="IEEE" value="Std 802.1AX-2020" /> | <reference anchor="IEEE802.1Q" target="https://standards.ieee.org/standa | |||
| </reference> | rd/802_1Q-2018.html"> | |||
| <front> | ||||
| <title>IEEE Standard for Local and Metropolitan Area Networks--Bridg | ||||
| es and Bridged Networks</title> | ||||
| <author><organization>IEEE</organization></author> | ||||
| <!-- <date day="06" month="July" year="2018"/> --> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="ISO10589" | <reference anchor="IEEE802.1ad" target="https://standards.ieee.org/stand | |||
| target="International Standard 10589:2002, Second Edition"> | ard/802_1ad-2005.html"> | |||
| <front> | <front> | |||
| <title>Intermediate System to Intermediate System intra- domain | <title>IEEE Standard for Local and Metropolitan Area Networks---Virt | |||
| routeing information exchange protocol for use in conjunction with | ual Bridged Local Area Networks---Amendment 4: Provider Bridges</title> | |||
| the protocol for providing the connectionless-mode network service | <author><organization>IEEE</organization></author> | |||
| (ISO 8473)</title> | <!-- <date month="" year="2006"/> --> | |||
| </front> | ||||
| </reference> | ||||
| <author fullname="ISO"> | <reference anchor="IEEE802.1AX" target="https://standards.ieee.org/stand | |||
| <organization></organization> | ard/802_1AX-2020.html"> | |||
| </author> | <front> | |||
| <title>IEEE Standard for Local and Metropolitan Area Networks--Link | ||||
| Aggregation</title> | ||||
| <author><organization>IEEE</organization></author> | ||||
| <!-- <date month="" year="2020"/> --> | ||||
| </front> | ||||
| </reference> | ||||
| <date year="2002" /> | <reference anchor="ISO10589" target="https://www.iso.org/standard/30932. | |||
| </front> | html"> | |||
| </reference> | <front> | |||
| <title>Information technology - Telecommunications and information e | ||||
| xchange between systems - Intermediate System to Intermediate System intra-domai | ||||
| n routeing information exchange protocol for use in conjunction with the protoco | ||||
| l for providing the connectionless-mode network service (ISO 8473)</title> | ||||
| <author><organization>ISO</organization></author> | ||||
| <date month="November" year="2002"/> | ||||
| </front> | ||||
| <refcontent>International Standard 10589:2002, Second Edition</refcont | ||||
| ent> | ||||
| </reference> | ||||
| </references> | ||||
| </references> | </references> | |||
| <section anchor="app-ex" numbered="true" toc="default"> | ||||
| <section anchor="app-ex" | <name>Example of Common Data Nodes in Early L2NM/L3NM Designs</name> | |||
| title="Example of Common Data Nodes in Early L2NM/L3NM Designs"> | <t>In order to avoid duplication of data nodes and to ease passing data | |||
| <t>In order to avoid data nodes duplication and to ease passing data | ||||
| among layers (i.e., from the service layer to the network layer and vice | among layers (i.e., from the service layer to the network layer and vice | |||
| versa), early versions of the L3NM reused many of the data nodes that | versa), early versions of the L3NM reused many of the data nodes that | |||
| are defined in the L3SM. Nevertheless, that approach was abandoned | are defined in the L3SM. Nevertheless, that approach was abandoned | |||
| because that design was interpreted as if the deployment of L3NM depends | because that design was interpreted as if the deployment of the L3NM depen | |||
| on L3SM, while this is not required. For example, a service provider may | ds | |||
| on the L3SM, while this is not required. For example, a service provider m | ||||
| ay | ||||
| decide to use the L3NM to build its L3VPN services without exposing the | decide to use the L3NM to build its L3VPN services without exposing the | |||
| L3SM to customers.</t> | L3SM to customers.</t> | |||
| <t>Likewise, early versions of the L2NM reused many of the data nodes | <t>Likewise, early versions of the L2NM reused many of the data nodes | |||
| that are defined in both L2SM and L3NM. An example of L3NM groupings | that are defined in both the L2SM and the L3NM. An example of L3NM groupin | |||
| reused in L2NM is shown in <xref target="ex2"></xref>. Such data nodes | gs | |||
| reuse was interpreted as if the deployment of the L2NM requires the | reused in the L2NM is shown in <xref target="ex2" format="default"/>. Such | |||
| support of the L3NM; which is not required.</t> | reuse of data nodes was interpreted as if the deployment of the L2NM requi | |||
| res | ||||
| <t><figure align="left" anchor="ex2" | support for the L3NM, which is not required.</t> | |||
| title="Excerpt from the L2NM YANG Module"> | <figure anchor="ex2"> | |||
| <artwork><![CDATA[module ietf-l2vpn-ntw { | <name>Excerpt from the L2NM YANG Module</name> | |||
| <artwork name="" type="ascii-art" align="left" alt=""><![CDATA[module ie | ||||
| tf-l2vpn-ntw { | ||||
| ... | ... | |||
| import ietf-l3vpn-ntw { | import ietf-l3vpn-ntw { | |||
| prefix l3vpn-ntw; | prefix l3vpn-ntw; | |||
| reference | reference | |||
| "RFC NNNN: A Layer 3 VPN Network YANG Model"; | "RFC 9182: A YANG Network Data Model for Layer 3 VPNs"; | |||
| } | } | |||
| ... | ... | |||
| container l2vpn-ntw { | container l2vpn-ntw { | |||
| ... | ... | |||
| container vpn-services { | container vpn-services { | |||
| list vpn-service { | list vpn-service { | |||
| ... | ... | |||
| uses l3vpn-ntw:service-status; | uses l3vpn-ntw:service-status; | |||
| uses l3vpn-ntw:svc-transport-encapsulation; | uses l3vpn-ntw:svc-transport-encapsulation; | |||
| ... | ... | |||
| } | } | |||
| } | } | |||
| ... | ... | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure></t> | </figure> | |||
| </section> | ||||
| <section anchor="ack" numbered="false" toc="default"> | ||||
| <name>Acknowledgements</name> | ||||
| <t>During the discussions of this work, helpful comments and reviews | ||||
| were received from (listed alphabetically) <contact fullname="Alejandro Ag | ||||
| uado"/>, <contact fullname="Raul Arco"/>, | ||||
| <contact fullname="Miguel Cros Cecilia"/>, <contact fullname="Joe Clarke"/ | ||||
| >, <contact fullname="Dhruv Dhody"/>, <contact fullname="Adrian Farrel"/>, <cont | ||||
| act fullname="Roque Gagliano"/>, <contact fullname="Christian Jacquenet"/>, <con | ||||
| tact fullname="Kireeti Kompella"/>, <contact fullname="Julian Lucek"/>, <contact | ||||
| fullname="Tom Petch"/>, <contact fullname="Erez Segev"/>, and <contact fullname | ||||
| ="Paul Sherratt"/>. Many thanks to them.</t> | ||||
| <t>This work is partially supported by the European Commission under | ||||
| Horizon 2020 Secured autonomic traffic management for a Tera of SDN flows | ||||
| (Teraflow) project (grant agreement number 101015857).</t> | ||||
| <t>Many thanks to <contact fullname="Radek Krejci"/> for the YANG Doctors | ||||
| review, <contact fullname="Wesley Eddy"/> | ||||
| for the tsvart review, <contact fullname="Ron Bonica"/> and <contact fulln | ||||
| ame="Victoria Pritchard"/> for the RtgDir | ||||
| review, <contact fullname="Joel Halpern"/> for the genart review, <contact | ||||
| fullname="Tim Wicinski"/> for the opsdir | ||||
| review, and <contact fullname="Suresh Krishnan"/> for the intdir review.</ | ||||
| t> | ||||
| <t>Special thanks to <contact fullname="Robert Wilton"/> for the AD review | ||||
| .</t> | ||||
| <t>Thanks to <contact fullname="Roman Danyliw"/>, <contact fullname="Lars | ||||
| Eggert"/>, <contact fullname="Warren Kumari"/>, <contact fullname="Erik Kline"/> | ||||
| , | ||||
| <contact fullname="Zaheduzzaman Sarker"/>, <contact fullname="Benjamin Kad | ||||
| uk"/>, and <contact fullname="Éric Vyncke"/> for the IESG review.</t> | ||||
| </section> | ||||
| <section numbered="false" toc="default"> | ||||
| <name>Contributors</name> | ||||
| <contact fullname="Italo Busi"> | ||||
| <organization>Huawei Technologies</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <street></street> | ||||
| <city></city> | ||||
| <region></region> | ||||
| <code></code> | ||||
| <country></country> | ||||
| </postal> | ||||
| <email>Italo.Busi@huawei.com</email> | ||||
| </address> | ||||
| </contact> | ||||
| <t></t> | <contact fullname="Luis Angel Munoz"> | |||
| <organization>Vodafone</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <street></street> | ||||
| <city></city> | ||||
| <region></region> | ||||
| <code></code> | ||||
| <country></country> | ||||
| </postal> | ||||
| <email>luis-angel.munoz@vodafone.com</email> | ||||
| </address> | ||||
| </contact> | ||||
| <contact fullname="Victor Lopez"> | ||||
| <organization>Nokia</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <street></street> | ||||
| <city>Madrid</city> | ||||
| <region></region> | ||||
| <code></code> | ||||
| <country>Spain</country> | ||||
| </postal> | ||||
| <email>victor.lopez@nokia.com</email> | ||||
| </address> | ||||
| </contact> | ||||
| </section> | </section> | |||
| </back> | </back> | |||
| </rfc> | </rfc> | |||
| End of changes. 326 change blocks. | ||||
| 1043 lines changed or deleted | 1118 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/ | ||||