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