rfc9291xml2.original.xml | rfc9291.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, | <!DOCTYPE rfc [ | |||
which is available here: http://xml.resource.org. --> | <!ENTITY nbsp " "> | |||
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | <!ENTITY zwsp "​"> | |||
<!-- One method to get references from the online citation libraries. | <!ENTITY nbhy "‑"> | |||
There has to be one entity for each item to be referenced. | <!ENTITY wj "⁠"> | |||
An alternate method (rfc include) is described in the references. --> | ||||
<!ENTITY RFC2119 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.2119.xml"> | ||||
<!ENTITY RFC3688 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.3688.xml"> | ||||
<!ENTITY RFC6020 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.6020.xml"> | ||||
<!ENTITY RFC6241 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.6241.xml"> | ||||
<!ENTITY RFC6242 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.6242.xml"> | ||||
<!ENTITY RFC7950 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.7950.xml"> | ||||
<!ENTITY RFC7432 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.7432.xml"> | ||||
<!ENTITY RFC8040 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.8040.xml"> | ||||
<!ENTITY RFC8174 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.8174.xml"> | ||||
<!ENTITY RFC8214 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.8214.xml"> | ||||
<!ENTITY RFC8309 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.8309.xml"> | ||||
<!ENTITY RFC8340 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.8340.xml"> | ||||
<!ENTITY RFC8341 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.8341.xml"> | ||||
<!ENTITY RFC8453 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.8453.xml"> | ||||
<!ENTITY RFC8466 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.8466.xml"> | ||||
]> | ]> | |||
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?> | ||||
<!-- used by XSLT processors --> | ||||
<!-- For a complete list and description of processing instructions (PIs), | ||||
please see http://xml.resource.org/authoring/README.html. --> | ||||
<!-- Below are generally applicable Processing Instructions (PIs) that most I-Ds | ||||
might want to use. | ||||
(Here they are set differently than their defaults in xml2rfc v1.32) --> | ||||
<?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="5"?> | ||||
<!-- 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-l2nm-19" ipr="trust200902"> | ||||
<!-- category values: std, bcp, info, exp, and historic | ||||
ipr values: full3667, noModification3667, noDerivatives3667 | ||||
you can add the attributes updates="NNNN" and obsoletes="NNNN" | ||||
they will automatically be output with "(if approved)" --> | ||||
<!-- ***** FRONT MATTER ***** --> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" number="9291" doc Name="draft-ietf-opsawg-l2nm-19" ipr="trust200902" obsoletes="" updates="" conse nsus="true" submissionType="IETF" xml:lang="en" tocInclude="true" tocDepth="5" s ymRefs="true" sortRefs="true" version="3"> | |||
<front> | <front> | |||
<!-- The abbreviated title is used in the page header - it is only necessary | <title abbrev="A Network YANG Data Model for L2VPNs">A YANG Network Data Mod | |||
if the | el for Layer 2 VPNs</title> | |||
full title is longer than 39 characters --> | <seriesInfo name="RFC" value="9291"/> | |||
<title abbrev="L2NM">A YANG Network Data Model for Layer 2 VPNs</title> | ||||
<!-- add 'role="editor"' below for the editors if appropriate --> | ||||
<!-- Another author who claims to be an editor --> | ||||
<author fullname="Mohamed Boucadair" initials="M." role="editor" | <author fullname="Mohamed Boucadair" initials="M." role="editor" surname="Bo | |||
surname="Boucadair "> | ucadair "> | |||
<organization>Orange</organization> | <organization>Orange</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street></street> | <street/> | |||
<!-- Reorder these if your country does things differently --> | ||||
<city>Rennes</city> | <city>Rennes</city> | |||
<region/> | ||||
<region></region> | <code/> | |||
<code></code> | ||||
<country>France</country> | <country>France</country> | |||
</postal> | </postal> | |||
<phone/> | ||||
<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="Oscar Gonzalez de Dios" initials="O." role="editor" surnam | ||||
<author fullname="Oscar Gonzalez de Dios" initials="O." role="editor" | e="Gonzalez de Dios"> | |||
surname="Gonzalez de Dios"> | ||||
<organization>Telefonica</organization> | <organization>Telefonica</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street></street> | <street/> | |||
<!-- Reorder these if your country does things differently --> | ||||
<city>Madrid</city> | <city>Madrid</city> | |||
<region/> | ||||
<region></region> | <code/> | |||
<code></code> | ||||
<country>Spain</country> | <country>Spain</country> | |||
</postal> | </postal> | |||
<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="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> | <street/> | |||
<!-- Reorder these if your country does things differently --> | ||||
<city>Madrid</city> | <city>Madrid</city> | |||
<region/> | ||||
<region></region> | <code/> | |||
<code></code> | ||||
<country>Spain</country> | <country>Spain</country> | |||
</postal> | </postal> | |||
<phone/> | ||||
<phone></phone> | ||||
<email>samier.barguilgiraldo.ext@telefonica.com</email> | <email>samier.barguilgiraldo.ext@telefonica.com</email> | |||
<!-- uri and facsimile elements may also be added --> | ||||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Luis Angel Munoz" initials="L." surname="Munoz"> | <author fullname="Luis Angel Munoz" initials="L." surname="Munoz"> | |||
<organization>Vodafone</organization> | <organization>Vodafone</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street></street> | <street/> | |||
<city/> | ||||
<!-- Reorder these if your country does things differently --> | <region/> | |||
<code/> | ||||
<city></city> | ||||
<region></region> | ||||
<code></code> | ||||
<country>Spain</country> | <country>Spain</country> | |||
</postal> | </postal> | |||
<phone/> | ||||
<phone></phone> | ||||
<email>luis-angel.munoz@vodafone.com</email> | <email>luis-angel.munoz@vodafone.com</email> | |||
<!-- uri and facsimile elements may also be added --> | ||||
</address> | </address> | |||
</author> | </author> | |||
<date month="September" year="2022"/> | ||||
<date day="02" month="June" year="2022" /> | ||||
<!-- Meta-data Declarations --> | ||||
<area>ops</area> | <area>ops</area> | |||
<workgroup>OPSAWG</workgroup> | <workgroup>OPSAWG</workgroup> | |||
<keyword>automation</keyword> | <keyword>automation</keyword> | |||
<keyword>network model</keyword> | <keyword>network model</keyword> | |||
<keyword>service provider</keyword> | <keyword>service provider</keyword> | |||
<keyword>service provisionning</keyword> | <keyword>service provisionning</keyword> | |||
<keyword>network automation</keyword> | <keyword>network automation</keyword> | |||
<keyword>service delivery</keyword> | <keyword>service delivery</keyword> | |||
<abstract> | <abstract> | |||
<t>This document defines an L2VPN Network YANG Model (L2NM) which can be | ||||
used to manage the provisioning of Layer 2 Virtual Private Network | <t>This document defines an L2VPN Network Model (L2NM) that can be | |||
services within a network (e.g., service provider network). The L2NM | used to manage the provisioning of Layer 2 Virtual Private Network (L2VPN) | |||
complements the Layer 2 Service Model (L2SM) by providing a | services within a network (e.g., a service provider network). The L2NM | |||
complements the L2VPN Service Model (L2SM) by providing a | ||||
network-centric view of the service that is internal to a service | network-centric view of the service that is internal to a service | |||
provider. The L2NM is particularly meant to be used by a network | provider. The L2NM is particularly meant to be used by a network | |||
controller to derive the configuration information that will be sent to | controller to derive the configuration information that will be sent to | |||
relevant network devices.</t> | relevant network devices.</t> | |||
<t>Also, this document defines a YANG module to manage Ethernet segments | <t>Also, this document defines a YANG module to manage Ethernet segments | |||
and the initial versions of two IANA-maintained modules that include a | and the initial versions of two IANA-maintained modules that include a | |||
set of identities of BGP Layer 2 encapsulation types and pseudowire | set of identities of BGP Layer 2 encapsulation types and pseudowire | |||
types.</t> | types.</t> | |||
</abstract> | </abstract> | |||
<note title="Editorial Note (To be removed by RFC Editor)"> | ||||
<t>Please update these statements within the document with the RFC | ||||
number to be assigned to this document:<list style="symbols"> | ||||
<t>"This version of this YANG module is part of RFC XXXX;"</t> | ||||
<t>"RFC XXXX: A YANG Network Data Model for Layer 2 VPNs";</t> | ||||
<t>reference: RFC XXXX</t> | ||||
</list></t> | ||||
<t>Also, please update the "revision" date of the YANG modules.</t> | ||||
</note> | ||||
</front> | </front> | |||
<middle> | <middle> | |||
<section title="Introduction"> | <section numbered="true" toc="default"> | |||
<t><xref target="RFC8466"></xref> defines an L2VPN Service Model (L2SM) | <name>Introduction</name> | |||
<t><xref target="RFC8466" format="default"/> defines an L2VPN Service Mode | ||||
l (L2SM) | ||||
YANG data model that can be used between customers and service providers | YANG data model that can be used between customers and service providers | |||
for ordering Layer 2 Virtual Private Network (L2VPN) services. This | for ordering Layer 2 Virtual Private Network (L2VPN) services. This | |||
document complements the L2SM by creating a network-centric view of the | document complements the L2SM by creating a network-centric view of the | |||
service: the L2VPN Network Model (L2NM).</t> | service: the L2VPN Network Model (L2NM).</t> | |||
<t>Also, this document defines the initial versions of two | <t>Also, this document defines the initial versions of two | |||
IANA-maintained modules that define a set of identities of BGP Layer 2 | IANA-maintained modules that define a set of identities of BGP Layer 2 | |||
encapsulation types (<xref target="iana-bgp"></xref>) and pseudowire | encapsulation types (<xref target="iana-bgp" format="default"/>) and pseud | |||
types (<xref target="iana-pw"></xref>). These types are used in the L2NM | owire | |||
to identify a Layer 2 encapsulation type as a function of the signalling | types (<xref target="iana-pw" format="default"/>). These types are used in | |||
the L2NM | ||||
to identify a Layer 2 encapsulation type as a function of the signaling | ||||
option used to deliver an L2VPN service. Relying upon these | option used to deliver an L2VPN service. Relying upon these | |||
IANA-maintained modules is meant to provide more flexibility in handling | IANA-maintained modules is meant to provide more flexibility in handling | |||
new types rather than being limited by a set of identities defined in | new types rather than being limited by a set of identities defined in | |||
the L2NM itself. <xref target="es-yang"></xref> defines another YANG | the L2NM itself. <xref target="es-yang" format="default"/> defines another YANG | |||
module to manage Ethernet Segments (ESes) that are required for | module to manage Ethernet Segments (ESes) that are required for | |||
instantiating Ethernet VPNs (EVPNs). References to Ethernet segments | instantiating Ethernet VPNs (EVPNs). References to Ethernet segments | |||
that are created using the module in <xref target="es-yang"></xref> can | that are created using the module in <xref target="es-yang" format="defaul t"/> can | |||
be included in the L2NM for EVPNs.</t> | be included in the L2NM for EVPNs.</t> | |||
<t>The L2NM (<xref target="YANG_module" format="default"/>) can be exposed | ||||
<t>The L2NM (<xref target="YANG_module"></xref>) can be exposed, for | , for | |||
example, by a network controller to a service controller within the | example, by a network controller to a service controller within the | |||
service provider's network. In particular, the model can be used in the | service provider's network. In particular, the model can be used in the | |||
communication interface between the entity that interacts directly with | communication interface between the entity that interacts directly with | |||
the customer (i.e., the service orchestrator) and the entity in charge | the customer (i.e., the service orchestrator) and the entity in charge | |||
of network orchestration and control (a.k.a., network | of network orchestration and control (a.k.a., network | |||
controller/orchestrator) by allowing for more network-centric | controller/orchestrator) by allowing for more network-centric | |||
information to be included.</t> | information to be included.</t> | |||
<t>The L2NM supports capabilities such as exposing operational | ||||
<t>The L2NM supports capabilities, such as exposing operational | ||||
parameters, transport protocols selection, and precedence. It can also | parameters, transport protocols selection, and precedence. It can also | |||
serve as a multi-domain orchestration interface.</t> | serve as a multi-domain orchestration interface.</t> | |||
<t>The L2NM is scoped for a variety of Layer 2 Virtual Private Networks | ||||
<t>The L2NM is scoped for a variety of Layer 2 Virtual Private Networks, | such as: </t> | |||
such as: <?rfc subcompact="yes" ?><list style="symbols"> | <ul spacing="compact"> | |||
<t>Virtual Private LAN Service (VPLS) <xref | <li>Virtual Private LAN Service (VPLS) <xref target="RFC4761" format="de | |||
target="RFC4761"></xref><xref target="RFC4762"></xref></t> | fault"/> <xref target="RFC4762" format="default"/></li> | |||
<li>Virtual Private Wire Service (VPWS) (<xref target="RFC4664" sectionF | ||||
<t>Virtual Private Wire Service (VPWS) (Section 3.1.1 of <xref | ormat="of" section="3.1.1" format="default"/>)</li> | |||
target="RFC4664"></xref>)</t> | <li> | |||
<t>Various flavors of EVPNs: </t> | ||||
<t>Various flavors of EVPNs: <list style="symbols"> | <ul spacing="compact"> | |||
<t>VPWS EVPN <xref target="RFC8214"></xref>,</t> | <li>VPWS EVPN <xref target="RFC8214" format="default"/>,</li> | |||
<li>Provider Backbone Bridging Combined with Ethernet VPNs (PBB-EVPN | ||||
<t>Provider Backbone Bridging Ethernet VPNs (PBB EVPNs) <xref | s) <xref target="RFC7623" format="default"/>,</li> | |||
target="RFC7623"></xref>,</t> | <li>EVPN over MPLS <xref target="RFC7432" format="default"/>, and</l | |||
i> | ||||
<t>EVPN over MPLS <xref target="RFC7432"></xref>, and</t> | <li>EVPN over Virtual Extensible LAN (VXLAN) <xref target="RFC8365" | |||
format="default"/>.</li> | ||||
<t>EVPN over Virtual eXtensible Local Area Network (VXLAN) <xref | </ul> | |||
target="RFC8365"></xref>.</t> | </li> | |||
</list></t> | </ul> | |||
</list></t> | <t>The L2NM is designed to easily support future | |||
<t><?rfc subcompact="no" ?>The L2NM is designed to easily support future | ||||
Layer 2 VPN flavors and procedures (e.g., advanced configuration such as | Layer 2 VPN flavors and procedures (e.g., advanced configuration such as | |||
pseudowires resilience or Multi-Segment pseudowires <xref | pseudowires resilience or multi-segment pseudowires <xref target="RFC7267" | |||
target="RFC7267"></xref>). A set of examples to illustrate the use of | format="default"/>). A set of examples to illustrate the use of | |||
the L2NM are provided in <xref target="examples"></xref>.</t> | the L2NM are provided in <xref target="examples" format="default"/>.</t> | |||
<t>This document uses the common Virtual Private Network (VPN) YANG | <t>This document uses the common Virtual Private Network (VPN) YANG | |||
module defined in <xref target="RFC9181"></xref>.</t> | module defined in <xref target="RFC9181" format="default"/>.</t> | |||
<t>The YANG data models in this document conform to the Network | ||||
<t>The YANG data models in this document conforms to the Network | Management Datastore Architecture (NMDA) defined in <xref target="RFC8342" | |||
Management Datastore Architecture (NMDA) defined in <xref | format="default"/>.</t> | |||
target="RFC8342"></xref>.</t> | ||||
</section> | </section> | |||
<section anchor="terminology" numbered="true" toc="default"> | ||||
<section anchor="terminology" title="Terminology"> | <name>Terminology</name> | |||
<t>This document assumes that the reader is familiar with <xref | <t>This document assumes that the reader is familiar with <xref target="RF | |||
target="RFC6241"></xref>, <xref target="RFC7950"></xref>, <xref | C6241" format="default"/>, <xref target="RFC7950" format="default"/>, <xref targ | |||
target="RFC8466"></xref>, <xref target="RFC4026"></xref>, and <xref | et="RFC8466" format="default"/>, <xref target="RFC4026" format="default"/>, and | |||
target="RFC8309"></xref>. This document uses terminology from those | <xref target="RFC8309" format="default"/>. This document uses terminology from t | |||
hose | ||||
documents.</t> | documents.</t> | |||
<t>This document uses the term "network model" as defined in <xref | ||||
<t>This document uses the term "network model" as defined in Section 2.1 | target="RFC8969" sectionFormat="of" section="2.1" | |||
of <xref target="RFC8969"></xref>.</t> | format="default"/>.</t> | |||
<t>The meanings of the symbols in the YANG tree diagrams are defined in <x | ||||
<t>The meanings of the symbols in YANG tree diagrams is defined in <xref | ref target="RFC8340" format="default"/>.</t> | |||
target="RFC8340"></xref>.</t> | ||||
<t>This document makes use of the following terms:</t> | <t>This document makes use of the following terms:</t> | |||
<dl newline="false" spacing="normal"> | ||||
<t><list style="hanging"> | <dt>Ethernet Segment (ES):</dt> | |||
<t hangText="Ethernet segment (ES):">Refers to the set of the | <dd>Refers to the set of | |||
Ethernet links that are used by a customer site (device or network) | Ethernet links that are used by a customer site (device or network) | |||
to connect to one or more Provider Edges (PEs).</t> | to connect to one or more Provider Edges (PEs).</dd> | |||
<dt>L2VPN Service Model (L2SM):</dt> | ||||
<t hangText="Layer 2 VPN Service Model (L2SM):">Describes the | <dd>Describes the | |||
service characterization of an L2VPN that interconnects a set of | service characterization of an L2VPN that interconnects a set of | |||
sites from the customer's perspective. The customer service model | sites from the customer's perspective. The customer service model | |||
does not provide details on the service provider network. An L2VPN | does not provide details on the service provider network. An L2VPN | |||
customer service model is defined in <xref | customer service model is defined in <xref target="RFC8466" format="de | |||
target="RFC8466"></xref>.</t> | fault"/>.</dd> | |||
<dt>L2VPN Network Model (L2NM):</dt> | ||||
<t hangText="Layer 2 VPN Network Model (L2NM):">Refers to the YANG | <dd>Refers to the YANG | |||
data model that describes an L2VPN service with a network-centric | data model that describes an L2VPN service with a network-centric | |||
view. It contains information on the service provider network and | view. It contains information on the service provider network and | |||
might include allocated resources. Network controllers can use it to | might include allocated resources. Network controllers can use it to | |||
manage the Layer 2 VPN service configuration in the service | manage the Layer 2 VPN service configuration in the service | |||
provider's network. The corresponding YANG module can be used by a | provider's network. The corresponding YANG module can be used by a | |||
service orchestrator to request a VPN service to a network | service orchestrator to request a VPN service to a network | |||
controller or to expose the list of active L2VPN services. The L2NM | controller or to expose the list of active L2VPN services. The L2NM | |||
can also be used to retrieve a set of L2VPN-related state | can also be used to retrieve a set of L2VPN-related state | |||
information (including OAM).</t> | information (including Operations, Administration, and Maintenance (OA | |||
M)).</dd> | ||||
<t hangText="MAC-VRF:">Refers to a Virtual Routing and Forwarding | <dt>MAC-VRF:</dt> | |||
(VRF) table for Media Access Control (MAC) addresses on a PE.</t> | <dd>Refers to a Virtual Routing and Forwarding | |||
(VRF) table for Media Access Control (MAC) addresses on a PE.</dd> | ||||
<t hangText="Network controller:">Denotes a functional entity | <dt>Network controller:</dt> | |||
responsible for the management of the service provider network.</t> | <dd>Denotes a functional entity | |||
responsible for the management of the service provider network.</dd> | ||||
<t hangText="Service orchestrator:">Refers to a functional entity | <dt>Service orchestrator:</dt> | |||
that interacts with the customer of an L2VPN relying upon, e.g., the | <dd>Refers to a functional entity that interacts with the customer of | |||
L2SM. The service orchestrator is responsible for the Customer Edge | an L2VPN relying upon, e.g., the L2SM. The service orchestrator is | |||
- to Provider Edge (CE-PE) attachment circuits, the PE selection, | responsible for the Customer Edge to Provider Edge (CE-PE) attachment | |||
and requesting the activation of the L2VPN service to a network | circuits, the PE selection, and requesting the activation of the L2VPN | |||
controller.</t> | service to a network controller.</dd> | |||
<dt>Service provider network:</dt> | ||||
<t hangText="Service provider network:">Is a network able to provide | <dd>A network that is able to provide | |||
L2VPN-related services.</t> | L2VPN-related services.</dd> | |||
<dt>VPN node:</dt> | ||||
<t hangText="VPN node:">Is an abstraction that represents a set of | <dd>An abstraction that represents a set of | |||
policies applied on a PE and belonging to a single VPN service. A | policies applied on a PE and belongs to a single VPN service. A | |||
VPN service involves one or more VPN nodes. The VPN node will | VPN service involves one or more VPN nodes. The VPN node will | |||
identify the service providers' node on which the VPN is | identify the service providers' node on which the VPN is | |||
deployed.</t> | deployed.</dd> | |||
<dt>VPN network access:</dt> | ||||
<t hangText="VPN network access:">Is an abstraction that represents | <dd>An abstraction that represents | |||
the network interfaces that are associated with a given VPN node. | the network interfaces that are associated with a given VPN node. | |||
Traffic coming from the VPN network access belongs to the VPN. The | Traffic coming from the VPN network access belongs to the VPN. The | |||
attachment circuits (bearers) between Customer Edges (CEs) and | attachment circuits (bearers) between CEs and | |||
Provider Edges (PEs) are terminated in the VPN network access.</t> | PEs are terminated in the VPN network access.</dd> | |||
<dt>VPN service provider:</dt> | ||||
<t hangText="VPN service provider:">Is a service provider that | <dd>A service provider that | |||
offers L2VPN-related services.</t> | offers L2VPN-related services.</dd> | |||
</list></t> | </dl> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Acronyms and Abbreviations "> | <name>Acronyms and Abbreviations</name> | |||
<t>The following acronyms and abbreviations are used in this | <t>The following acronyms and abbreviations are used in this | |||
document:<?rfc subcompact="yes" ?></t> | document:</t> | |||
<dl newline="false" spacing="compact" indent="8"> | ||||
<t><list hangIndent="8" style="hanging"> | <dt>ACL</dt> | |||
<t hangText="ACL">Access Control List</t> | <dd>Access Control List</dd> | |||
<dt>BGP</dt> | ||||
<t hangText="BGP">Border Gateway Protocol</t> | <dd>Border Gateway Protocol</dd> | |||
<dt>BUM</dt> | ||||
<t hangText="BUM">Broadcast, unknown unicast, or multicast</t> | <dd>Broadcast, Unknown Unicast, or Multicast</dd> | |||
<dt>CE</dt> | ||||
<t hangText="CE">Customer Edge</t> | <dd>Customer Edge</dd> | |||
<dt>ES</dt> | ||||
<t hangText="ES">Ethernet Segment</t> | <dd>Ethernet Segment</dd> | |||
<dt>ESI</dt> | ||||
<t hangText="ESI">Ethernet Segment Identifier</t> | <dd>Ethernet Segment Identifier</dd> | |||
<dt>EVPN</dt> | ||||
<t hangText="EVPN">Ethernet VPN</t> | <dd>Ethernet VPN</dd> | |||
<dt>L2VPN</dt> | ||||
<t hangText="L2VPN">Layer 2 Virtual Private Network</t> | <dd>Layer 2 Virtual Private Network</dd> | |||
<dt>L2SM</dt> | ||||
<t hangText="L2SM">L2VPN Service Model</t> | <dd>L2VPN Service Model</dd> | |||
<dt>L2NM</dt> | ||||
<t hangText="L2NM">L2VPN Network Model</t> | <dd>L2VPN Network Model</dd> | |||
<dt>MAC</dt> | ||||
<t hangText="MAC">Media Access Control</t> | <dd>Media Access Control</dd> | |||
<dt>PBB</dt> | ||||
<t hangText="PBB">Provider Backbone Bridging</t> | <dd>Provider Backbone Bridging</dd> | |||
<dt>PCP</dt> | ||||
<t hangText="PCP">Priority Code Point</t> | <dd>Priority Code Point</dd> | |||
<dt>PE</dt> | ||||
<t hangText="PE">Provider Edge</t> | <dd>Provider Edge</dd> | |||
<dt>QoS</dt> | ||||
<t hangText="QoS">Quality of Service</t> | <dd>Quality of Service</dd> | |||
<dt>RD</dt> | ||||
<t hangText="RD">Route Distinguisher</t> | <dd>Route Distinguisher</dd> | |||
<dt>RT</dt> | ||||
<t hangText="RT">Route Target</t> | <dd>Route Target</dd> | |||
<dt>VPLS</dt> | ||||
<t hangText="VPLS">Virtual Private LAN Service</t> | <dd>Virtual Private LAN Service</dd> | |||
<dt>VPN</dt> | ||||
<t hangText="VPN">Virtual Private Network</t> | <dd>Virtual Private Network</dd> | |||
<dt>VPWS</dt> | ||||
<t hangText="VPWS">Virtual Private Wire Service</t> | <dd>Virtual Private Wire Service</dd> | |||
<dt>VRF</dt> | ||||
<t hangText="VRF">Virtual Routing and Forwarding</t> | <dd>Virtual Routing and Forwarding</dd> | |||
</list></t> | </dl> | |||
<t/> | ||||
<t><?rfc subcompact="no" ?></t> | ||||
</section> | </section> | |||
<section anchor="ref" title="Reference Architecture"> | <section anchor="ref" numbered="true" toc="default"> | |||
<t><xref target="L2SM_and_L2NM"></xref> illustrates how the L2NM is | <name>Reference Architecture</name> | |||
<t><xref target="L2SM_and_L2NM" format="default"/> illustrates how the L2N | ||||
M is | ||||
used. As a reminder, this figure is an expansion of the architecture | used. As a reminder, this figure is an expansion of the architecture | |||
presented in Section 3 of <xref target="RFC8466"></xref> and decomposes | presented in <xref target="RFC8466" sectionFormat="of" section="3" format= "default"/> and decomposes | |||
the box marked "orchestration" in that figure into three separate | the box marked "orchestration" in that figure into three separate | |||
functional components called "Service Orchestration", "Network | functional components called "Service Orchestration", "Network | |||
Orchestration", and "Domain Orchestration".</t> | Orchestration", and "Domain Orchestration".</t> | |||
<t>Similar to <xref target="RFC8466" sectionFormat="of" section="3" format | ||||
<t>Similar to Section 3 of <xref target="RFC8466"></xref>, CE to PE | ="default"/>, CE to PE | |||
attachment is achieved through a bearer with a Layer 2 connection on | attachment is achieved through a bearer with a Layer 2 connection on | |||
top. The bearer refers to properties of the attachment that are below | top. The bearer refers to properties of the attachment that are below | |||
Layer 2, while the connection refers to Layer 2 protocol-oriented | Layer 2, while the connection refers to Layer 2 protocol-oriented | |||
properties.</t> | properties.</t> | |||
<t>The reader may refer to <xref target="RFC8309" format="default"/> for t | ||||
<t>The reader may refer to <xref target="RFC8309"></xref> for the | he | |||
distinction between the "Customer Service Model", the "Service Delivery | distinction between the "Customer Service Model", "Service Delivery | |||
Model", the "Network Configuration Model", and the "Device Configuration | Model", "Network Configuration Model", and "Device Configuration | |||
Model". The "Domain Orchestration" and "Config Manager" roles may be | Model". The "Domain Orchestration" and "Config Manager" roles may be | |||
performed by "SDN Controllers".</t> | performed by "SDN Controllers".</t> | |||
<figure anchor="L2SM_and_L2NM"> | ||||
<figure align="center" anchor="L2SM_and_L2NM" | <name>L2SM and L2NM Interaction</name> | |||
title="L2SM and L2NM Interaction"> | <artwork align="left" name="" type="" alt=""><![CDATA[ | |||
<artwork align="left"><![CDATA[ | ||||
+---------------+ | +---------------+ | |||
| Customer | | | Customer | | |||
+-------+-------+ | +-------+-------+ | |||
Customer Service Model | | Customer Service Model | | |||
e.g., l2vpn-svc | | e.g., l2vpn-svc | | |||
+-------+-------+ | +-------+-------+ | |||
| Service | | | Service | | |||
| Orchestration | | | Orchestration | | |||
+-------+-------+ | +-------+-------+ | |||
Network Model | | Network Model | | |||
skipping to change at line 480 ¶ | skipping to change at line 336 ¶ | |||
\ / | \ / | |||
+----+ Bearer +----+ +----+ +----+ | +----+ Bearer +----+ +----+ +----+ | |||
|CE A+ ---------- +PE A+ +PE B+ ------- +CE B| | |CE A+ ---------- +PE A+ +PE B+ ------- +CE B| | |||
+----+ Connection +----+ +----+ +----+ | +----+ Connection +----+ +----+ +----+ | |||
Site A Site B | Site A Site B | |||
NETCONF: Network Configuration Protocol | NETCONF: Network Configuration Protocol | |||
CLI: Command-Line Interface ]]></artwork> | CLI: Command-Line Interface ]]></artwork> | |||
</figure> | </figure> | |||
<t/> | ||||
<t></t> | ||||
<t>The customer may use various means to request a service that may | <t>The customer may use various means to request a service that may | |||
trigger the instantiation of an L2NM. The customer may use the L2SM or | trigger the instantiation of an L2NM. The customer may use the L2SM or | |||
may rely upon more abstract models to request a service that relies upon | may rely upon more abstract models to request a service that relies upon | |||
an L2VPN service. For example, the customer may supply an IP | an L2VPN service. For example, the customer may supply an IP | |||
Connectivity Provisioning Profile (CPP) that characterizes the requested | Connectivity Provisioning Profile (CPP) that characterizes the requested | |||
service <xref target="RFC7297"></xref>, an enhanced VPN (VPN+) service | service <xref target="RFC7297" format="default"/>, an enhanced VPN (VPN+) | |||
<xref target="I-D.ietf-teas-enhanced-vpn"></xref>, or an IETF network | service | |||
slice service <xref | <xref target="I-D.ietf-teas-enhanced-vpn" format="default"/>, or an IETF n | |||
target="I-D.ietf-teas-ietf-network-slices"></xref>.</t> | etwork | |||
slice service <xref target="I-D.ietf-teas-ietf-network-slices" format="def | ||||
<t>Note also that both the L2SM and the L2NM may be used in the context | ault"/>.</t> | |||
of the Abstraction and Control of TE Networks (ACTN) framework <xref | <t>Note also that both the L2SM and L2NM may be used in the context | |||
target="RFC8453"></xref>. <xref target="l2sm_actn"></xref> shows the | of the Abstraction and Control of TE Networks (ACTN) framework <xref targe | |||
t="RFC8453" format="default"/>. <xref target="l2sm_actn" format="default"/> show | ||||
s the | ||||
Customer Network Controller (CNC), the Multi-Domain Service Coordinator | Customer Network Controller (CNC), the Multi-Domain Service Coordinator | |||
(MDSC), and the Provisioning Network Controller (PNC).</t> | (MDSC), and the Provisioning Network Controller (PNC).</t> | |||
<figure anchor="l2sm_actn"> | ||||
<figure align="center" anchor="l2sm_actn" | <name>L2SM and L2NM in the Context of ACTN</name> | |||
title="L2SM and L2NM in the Context of ACTN"> | <artwork align="left" name="" type="" alt=""><![CDATA[ | |||
<artwork align="left"><![CDATA[ | ||||
+----------------------------------+ | +----------------------------------+ | |||
| Customer | | | Customer | | |||
| +-----------------------------+ | | | +-----------------------------+ | | |||
| | CNC | | | | | CNC | | | |||
| +-----------------------------+ | | | +-----------------------------+ | | |||
+----+-----------------------+-----+ | +----+-----------------------+-----+ | |||
| | | | | | |||
| L2SM | L2SM | | L2SM | L2SM | |||
| | | | | | |||
+---------+---------+ +---------+---------+ | +---------+---------+ +---------+---------+ | |||
skipping to change at line 543 ¶ | skipping to change at line 393 ¶ | |||
| +---------+ | | +---------+ | | | +---------+ | | +---------+ | | |||
+------------+-------+ +---------+------------+ | +------------+-------+ +---------+------------+ | |||
| | | | | | |||
| Device Configuration | | | Device Configuration | | |||
| | | | | | |||
+----+---+ +----+---+ | +----+---+ +----+---+ | |||
| Device | | Device | | | Device | | Device | | |||
+--------+ +--------+ ]]></artwork> | +--------+ +--------+ ]]></artwork> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="relation" numbered="true" toc="default"> | ||||
<section anchor="relation" title="Relationship to Other YANG Data Models"> | <name>Relationship to Other YANG Data Models</name> | |||
<t>The "ietf-vpn-common" module <xref target="RFC9181"></xref> includes | <t>The "ietf-vpn-common" module <xref target="RFC9181" format="default"/> | |||
includes | ||||
a set of identities, types, and groupings that are meant to be reused by | a set of identities, types, and groupings that are meant to be reused by | |||
VPN-related YANG modules independently of the layer (e.g., Layer 2, | VPN-related YANG modules independently of the layer (e.g., Layer 2 or | |||
Layer 3) and the type of the module (e.g., network model, service model) | Layer 3) and the type of the module (e.g., network model or service model) | |||
including future revisions of existing models (e.g., <xref | including future revisions of existing models (e.g., <xref target="RFC8466 | |||
target="RFC8466"></xref>). The L2NM reuses these common types and | " format="default"/>). The L2NM reuses these common types and | |||
groupings.</t> | groupings.</t> | |||
<t>Also, the L2NM uses the IANA-maintained modules "iana-bgp-l2-encaps" | <t>Also, the L2NM uses the IANA-maintained modules "iana-bgp-l2-encaps" | |||
(<xref target="iana-bgp"></xref>) and "iana-pseudowire-types" (<xref | (<xref target="iana-bgp" format="default"/>) and "iana-pseudowire-types" ( | |||
target="iana-pw"></xref>) to identify Layer 2 encapsulation and | <xref target="iana-pw" format="default"/>) to identify Layer 2 encapsulation and | |||
pseudowire types. More details are provided in Sections <xref | pseudowire types. More details are provided in Sections <xref format="coun | |||
format="counter" target="bgp"></xref> and <xref format="counter" | ter" target="bgp"/> and <xref format="counter" target="l2tp"/>.</t> | |||
target="l2tp"></xref>.</t> | ||||
<t>For the particular case of EVPN, the L2NM includes a name that refers | <t>For the particular case of EVPN, the L2NM includes a name that refers | |||
to an Ethernet segment that is created using the "ietf-ethernet-segment" | to an Ethernet segment that is created using the "ietf-ethernet-segment" | |||
module (<xref target="es-yang"></xref>). Some ES-related examples are | module (<xref target="es-yang" format="default"/>). Some ES-related exampl | |||
provided in Appendices <xref format="counter" | es are | |||
target="evpn-vpws-app"></xref> and <xref format="counter" | provided in Appendices <xref format="counter" target="evpn-vpws-app"/> and | |||
target="auto-ex"></xref>.</t> | <xref format="counter" target="auto-ex"/>.</t> | |||
<t>As discussed in <xref target="ref" format="default"/>, the L2NM is used | ||||
<t>As discussed in <xref target="ref"></xref>, the L2NM is used to | to | |||
manage L2VPN services within a service provider network. The module | manage L2VPN services within a service provider network. The module | |||
provides a network view of the L2VPN service. Such a view is only | provides a network view of the L2VPN service. Such a view is only | |||
visible to the service provider and is not exposed outside (to | visible to the service provider and is not exposed outside (to | |||
customers, for example). The following discusses how the L2NM interfaces | customers, for example). The following discusses how the L2NM interfaces | |||
with other YANG modules:</t> | with other YANG modules:</t> | |||
<dl newline="false" spacing="normal"> | ||||
<dt>L2SM:</dt> | ||||
<dd> | ||||
<t>The L2NM is not a customer service model.</t> | ||||
<t>The internal view of the service (i.e., the L2NM) | ||||
may be mapped to an external view that is visible to customers: | ||||
L2VPN Service Model (L2SM) <xref target="RFC8466" format="default"/>. | ||||
</t> | ||||
<t><list style="hanging"> | <t>The L2NM can be fed with inputs that are requested by customers and | |||
<t hangText="L2SM:">The L2NM is not a customer service model.<vspace | that typically rely on an L2SM template. Concretely, | |||
blankLines="1" />The internal view of the service (i.e., the L2NM) | ||||
may be mapped to an external view which is visible to customers: | ||||
L2VPN Service Model (L2SM) <xref target="RFC8466"></xref>. <vspace | ||||
blankLines="1" />The L2NM can be fed with inputs that are requested | ||||
by customers, typically, relying upon an L2SM template. Concretely, | ||||
some parts of the L2SM module can be directly mapped into the L2NM | some parts of the L2SM module can be directly mapped into the L2NM | |||
while other parts are generated as a function of the requested | while other parts are generated as a function of the requested | |||
service and local guidelines. Finally, there are parts local to the | service and local guidelines. Finally, there are parts local to the | |||
service provider and do not map directly to the L2SM.<vspace | service provider, and they do not map directly to the L2SM.</t> | |||
blankLines="1" />Note that using the L2NM within a service provider | <t>Note that using the L2NM within a service provider | |||
does not assume, nor does it preclude, exposing the VPN service via | does not assume, nor does it preclude, exposing the VPN service via | |||
the L2SM. This is deployment specific. Nevertheless, the design of | the L2SM. This is deployment specific. Nevertheless, the design of | |||
L2NM tries to align as much as possible with the features supported | L2NM tries to align as much as possible with the features supported | |||
by the L2SM to ease the grafting of both the L2NM and the L2SM for | by the L2SM to ease the grafting of both the L2NM and the L2SM for | |||
the sake of highly automated VPN service provisioning and | the sake of highly automated VPN service provisioning and | |||
delivery.</t> | delivery.</t> | |||
</dd> | ||||
<t hangText="Network Topology Modules:">An L2VPN involves nodes that | <dt>Network Topology Modules:</dt> | |||
<dd>An L2VPN involves nodes that | ||||
are part of a topology managed by the service provider network. Such | are part of a topology managed by the service provider network. Such | |||
a topology can be represented using the network topology module in | a topology can be represented using the network topology module in | |||
<xref target="RFC8345"></xref> or its extension, such as a network | <xref target="RFC8345" format="default"/> or its extension, such as a | |||
YANG module for Service Attachment Points (SAPs) <xref | network | |||
target="I-D.ietf-opsawg-sap"></xref>.</t> | YANG module for Service Attachment Points (SAPs) <xref target="I-D.iet | |||
f-opsawg-sap" format="default"/>.</dd> | ||||
<t hangText="Device Modules:">The L2NM is not a device model. | <dt>Device Modules:</dt> | |||
<vspace blankLines="1" />Once a global VPN service is captured by | <dd> | |||
<t>The L2NM is not a device model. | ||||
</t> | ||||
<t>Once a global VPN service is captured by | ||||
means of the L2NM, the actual activation and provisioning of the VPN | means of the L2NM, the actual activation and provisioning of the VPN | |||
service will involve a variety of device modules to tweak the | service will involve a variety of device modules to tweak the | |||
required functions for the delivery of the service. These functions | required functions for the delivery of the service. These functions | |||
are supported by the VPN nodes and can be managed using device YANG | are supported by the VPN nodes and can be managed using device YANG | |||
modules. A non-comprehensive list of such device YANG modules is | modules. A non-comprehensive list of such device YANG modules is | |||
provided below:<list style="symbols"> | provided below:</t> | |||
<t>Interfaces <xref target="RFC8343"></xref>.</t> | <ul spacing="normal"> | |||
<li>Interfaces <xref target="RFC8343" format="default"/></li> | ||||
<t>BGP <xref target="I-D.ietf-idr-bgp-model"></xref>.</t> | <li>BGP <xref target="I-D.ietf-idr-bgp-model" format="default"/></li | |||
> | ||||
<t>MPLS <xref target="RFC8960"></xref>.</t> | <li>MPLS <xref target="RFC8960" format="default"/></li> | |||
<li>Access Control Lists (ACLs) <xref target="RFC8519" format="defau | ||||
<t>Access Control Lists (ACLs) <xref | lt"/></li> | |||
target="RFC8519"></xref>.</t> | </ul> | |||
</list><vspace blankLines="1" />How the L2NM is used to derive | <t>How the L2NM is used to derive | |||
device-specific actions is implementation specific.</t> | device-specific actions is implementation specific.</t> | |||
</list></t> | </dd> | |||
</dl> | ||||
</section> | </section> | |||
<section anchor="es" numbered="true" toc="default"> | ||||
<section anchor="es" | <name>Description of the Ethernet Segment YANG Module</name> | |||
title="Description of the Ethernet Segment YANG Module"> | <t>The 'ietf-ethernet-segment' module (<xref target="es-tree" format="defa | |||
<t>The 'ietf-ethernet-segment' module (<xref target="es-tree"></xref>) | ult"/>) | |||
is used to manage a set of Ethernet segments in the context of an EVPN | is used to manage a set of Ethernet segments in the context of an EVPN | |||
service.</t> | service.</t> | |||
<figure anchor="es-tree"> | ||||
<t><figure align="center" anchor="es-tree" | <name>Ethernet Segments Tree Structure</name> | |||
title="Ethernet Segments Tree Structure"> | <sourcecode type="yangtree"><![CDATA[module: ietf-ethernet-segment | |||
<artwork align="center"><![CDATA[module: ietf-ethernet-segment | ||||
+--rw ethernet-segments | +--rw ethernet-segments | |||
+--rw ethernet-segment* [name] | +--rw ethernet-segment* [name] | |||
+--rw name string | +--rw name string | |||
+--rw esi-type? identityref | +--rw esi-type? identityref | |||
+--rw (esi-choice)? | +--rw (esi-choice)? | |||
| +--:(directly-assigned) | | +--:(directly-assigned) | |||
| | +--rw ethernet-segment-identifier? yang:hex-string | | | +--rw ethernet-segment-identifier? yang:hex-string | |||
| +--:(auto-assigned) | | +--:(auto-assigned) | |||
| +--rw esi-auto | | +--rw esi-auto | |||
| +--rw (auto-mode)? | | +--rw (auto-mode)? | |||
skipping to change at line 656 ¶ | skipping to change at line 497 ¶ | |||
+--rw esi-redundancy-mode? identityref | +--rw esi-redundancy-mode? identityref | |||
+--rw df-election | +--rw df-election | |||
| +--rw df-election-method? identityref | | +--rw df-election-method? identityref | |||
| +--rw revertive? boolean | | +--rw revertive? boolean | |||
| +--rw election-wait-time? uint32 | | +--rw election-wait-time? uint32 | |||
+--rw split-horizon-filtering? boolean | +--rw split-horizon-filtering? boolean | |||
+--rw pbb | +--rw pbb | |||
| +--rw backbone-src-mac? yang:mac-address | | +--rw backbone-src-mac? yang:mac-address | |||
+--rw member* [ne-id interface-id] | +--rw member* [ne-id interface-id] | |||
+--rw ne-id string | +--rw ne-id string | |||
+--rw interface-id string ]]></artwork> | +--rw interface-id string ]]></sourcecode> | |||
</figure></t> | </figure> | |||
<t>The descriptions of the data nodes depicted in <xref target="es-tree" f | ||||
<t>The descriptions of the data nodes depicted in <xref | ormat="default"/> are as follows:</t> | |||
target="es-tree"></xref> are as follows:<list style="hanging"> | <dl newline="false" spacing="normal"> | |||
<t hangText="'name':">Sets a name to uniquely identify an ES within | <dt>'name':</dt> | |||
<dd> | ||||
<t>Sets a name to uniquely identify an ES within | ||||
a service provider network. In order to ease referencing ESes by | a service provider network. In order to ease referencing ESes by | |||
their name in other modules, "es-ref" typedef is defined.<vspace | their name in other modules, "es-ref" typedef is defined.</t> | |||
blankLines="1" />This typedef is used in the VPN network access | <t>This typedef is used in the VPN network access | |||
level of the L2NM to reference an ES (<xref target="sna"></xref>). | level of the L2NM to reference an ES (<xref target="sna" format="defau | |||
An example to illustrate such a use in the L2NM is provided in <xref | lt"/>). | |||
target="evpn-vpws-app"></xref>.</t> | An example to illustrate such a use in the L2NM is provided in <xref t | |||
arget="evpn-vpws-app" format="default"/>.</t> | ||||
<t hangText="'esi-type':">Indicates the Ethernet Segment Identifier | </dd> | |||
(ESI) type as discussed in Section 5 of <xref | <dt>'esi-type':</dt> | |||
target="RFC7432"></xref>. ESIs can be automatically assigned either | <dd> | |||
<t>Indicates the Ethernet Segment Identifier | ||||
(ESI) type as discussed in <xref target="RFC7432" sectionFormat="of" s | ||||
ection="5" format="default"/>. ESIs can be automatically assigned either | ||||
with or without indicating a pool from which an ESI should be taken | with or without indicating a pool from which an ESI should be taken | |||
('esi-pool-name'). The following types are supported: <list | ('esi-pool-name'). The following types are supported: </t> | |||
style="hanging"> | <dl newline="false" spacing="normal"> | |||
<t hangText="'esi-type-0-operator':">The ESI is directly | <dt>'esi-type-0-operator':</dt> | |||
<dd>The ESI is directly | ||||
configured by the VPN service provider. The configured value is | configured by the VPN service provider. The configured value is | |||
provided in 'ethernet-segment-identifier'.</t> | provided in 'ethernet-segment-identifier'.</dd> | |||
<dt>'esi-type-1-lacp':</dt> | ||||
<t hangText="'esi-type-1-lacp':">The ESI is auto-generated from | <dd>The ESI is auto-generated from | |||
the IEEE 802.1AX Link Aggregation Control Protocol (LACP) <xref | the IEEE 802.1AX Link Aggregation Control Protocol (LACP) <xref ta | |||
target="IEEE802.1AX"></xref>.</t> | rget="IEEE802.1AX" format="default"/>.</dd> | |||
<dt>'esi-type-2-bridge':</dt> | ||||
<t hangText="'esi-type-2-bridge':">The ESI is auto-generated and | <dd>The ESI is auto-generated and | |||
determined based on the Layer 2 bridge protocol.</t> | determined based on the Layer 2 bridge protocol.</dd> | |||
<dt>'esi-type-3-mac':</dt> | ||||
<t hangText="'esi-type-3-mac':">The ESI is a MAC-based ESI value | <dd>The ESI is a MAC-based ESI value | |||
that can be auto-generated or configured by the VPN service | that can be auto-generated or configured by the VPN service | |||
provider.</t> | provider.</dd> | |||
<dt>'esi-type-4-router-id':</dt> | ||||
<t hangText="'esi-type-4-router-id':">The ESI is auto-generated | <dd>The ESI is auto-generated | |||
or configured by the VPN service provider based on the Router | or configured by the VPN service provider based on the Router | |||
ID. The 'router-id' supplied in <xref target="vpn_node"></xref> | ID. The 'router-id' supplied in <xref target="vpn_node" format="de | |||
can be used to auto-derive an ESI when this type is used.</t> | fault"/> | |||
can be used to auto-derive an ESI when this type is used.</dd> | ||||
<t hangText="'esi-type-5-asn':">The ESI is auto-generated or | <dt>'esi-type-5-asn':</dt> | |||
<dd>The ESI is auto-generated or | ||||
configured by the VPN service provider based on the Autonomous | configured by the VPN service provider based on the Autonomous | |||
System (AS) number. The 'local-autonomous-system' supplied in | System (AS) number. The 'local-autonomous-system' supplied in | |||
<xref target="profile"></xref> can be used to auto-derive an ESI | <xref target="profile" format="default"/> can be used to auto-deri | |||
when this type is used.</t> | ve an ESI | |||
</list><vspace blankLines="1" />Auto-generated values can be | when this type is used.</dd> | |||
</dl> | ||||
<t>Auto-generated values can be | ||||
retrieved using 'auto-ethernet-segment-identifier'.</t> | retrieved using 'auto-ethernet-segment-identifier'.</t> | |||
</dd> | ||||
<t hangText="'esi-redundancy-mode':">Specifies the EVPN redundancy | <dt>'esi-redundancy-mode':</dt> | |||
<dd>Specifies the EVPN redundancy | ||||
mode for a given ES. The following modes are supported: | mode for a given ES. The following modes are supported: | |||
Single-Active (Section 14.1.1 of <xref target="RFC7432"></xref>) or | Single-Active (<xref target="RFC7432" sectionFormat="of" section="14.1 | |||
All-Active (Section 14.1.2 of <xref target="RFC7432"></xref>).</t> | .1" format="default"/>) or | |||
All-Active (<xref target="RFC7432" sectionFormat="of" section="14.1.2" | ||||
<t hangText="'df-election':">Specifies a set of parameters related | format="default"/>).</dd> | |||
to the Designated Forwarder (DF) election (Section 8.5 of <xref | <dt>'df-election':</dt> | |||
target="RFC7432"></xref>). For example, this data node can be used | <dd> | |||
to indicate an election method (e.g., <xref target="RFC8584"></xref> | <t>Specifies a set of parameters related | |||
or <xref target="I-D.ietf-bess-evpn-pref-df"></xref>). If no | to the Designated Forwarder (DF) election (<xref target="RFC7432" sect | |||
election method is indicated, the default method defined in Section | ionFormat="of" section="8.5" format="default"/>). For example, this data node ca | |||
8.5 of <xref target="RFC7432"></xref> is used. <vspace | n be used | |||
blankLines="1" />As discussed in Section 1.3.2 of <xref | to indicate an election method (e.g., <xref target="RFC8584" format="d | |||
target="RFC8584"></xref>, the default behavior is to trigger the DF | efault"/> | |||
or <xref target="I-D.ietf-bess-evpn-pref-df" format="default"/>). If n | ||||
o | ||||
election method is indicated, the default method defined in <xref targ | ||||
et="RFC7432" sectionFormat="of" section="8.5" format="default"/> is used. </t> | ||||
<t>As discussed in <xref target="RFC8584" sectionFormat="of" section=" | ||||
1.3.2" format="default"/>, the default behavior is to trigger the DF | ||||
election procedure when a DF fails (e.g., link failure). The former | election procedure when a DF fails (e.g., link failure). The former | |||
DF will take over when it is available again. Such a mode is called | DF will take over when it is available again. Such a mode is called | |||
revertive. The behavior can be overridden by setting the 'revertive' | 'revertive'. The behavior can be overridden by setting the 'revertive' | |||
leaf to 'false'. <vspace blankLines="1" />Also, this data node can | leaf to 'false'. </t> | |||
be used to configure a DF Wait timer ('election-wait-time') (Section | <t>Also, this data node can | |||
2.1 of <xref target="RFC8584"></xref>).</t> | be used to configure a DF Wait timer ('election-wait-time') (<xref tar | |||
get="RFC8584" sectionFormat="of" section="2.1" format="default"/>).</t> | ||||
<t hangText="'split-horizon-filtering':">Controls the activation of | </dd> | |||
the split-horizon filtering for an ES (Section 8.3 of <xref | <dt>'split-horizon-filtering':</dt> | |||
target="RFC7432"></xref>).</t> | <dd>Controls the activation of | |||
the split-horizon filtering for an ES (<xref target="RFC7432" sectionF | ||||
<t hangText="'pbb':">Indicates data nodes that are specific to PBB | ormat="of" section="8.3" format="default"/>).</dd> | |||
<xref target="IEEE-802-1ah"></xref>: <list style="hanging"> | <dt>'pbb':</dt> | |||
<t hangText="'backbone-src-mac':">Associates a Provider Backbone | <dd> | |||
<t>Indicates data nodes that are specific to PBB | ||||
<xref target="IEEE-802-1ah" format="default"/>: </t> | ||||
<dl newline="false" spacing="normal"> | ||||
<dt>'backbone-src-mac':</dt> | ||||
<dd>Associates a Provider Backbone | ||||
MAC (B-MAC) address with an ES. This is particularly useful for | MAC (B-MAC) address with an ES. This is particularly useful for | |||
All-Active multihomed ESes (Section 9.1 of <xref | All-Active multihomed ESes (<xref target="RFC7623" sectionFormat=" | |||
target="RFC7623"></xref>).</t> | of" section="9.1" format="default"/>).</dd> | |||
</list></t> | </dl> | |||
</dd> | ||||
<t hangText="'member':">Lists the members of an ES in a service | <dt>'member':</dt> | |||
provider network.</t> | <dd>Lists the members of an ES in a service | |||
</list></t> | provider network.</dd> | |||
</dl> | ||||
</section> | </section> | |||
<section anchor="design_data_model" numbered="true" toc="default"> | ||||
<section anchor="design_data_model" | <name>Description of the L2NM YANG Module</name> | |||
title="Description of the L2NM YANG Module"> | <t>The L2NM ('ietf-l2vpn-ntw'; see <xref target="YANG_module" format="defa | |||
<t>The L2NM ('ietf-l2vpn-ntw', <xref target="YANG_module"></xref>) is | ult"/>) is | |||
used to manage L2VPNs within a service provider network. In particular, | used to manage L2VPNs within a service provider network. In particular, | |||
the 'ietf-l2vpn-ntw' module can be used to create, modify, delete and | the 'ietf-l2vpn-ntw' module can be used to create, modify, delete, and | |||
retrieve L2VPN services in a network controller. The module is designed | retrieve L2VPN services in a network controller. The module is designed | |||
to minimize the amount of customer-related information.</t> | to minimize the amount of customer-related information.</t> | |||
<t>The full tree diagram of the module can be generated using the | <t>The full tree diagram of the module can be generated using the | |||
"pyang" tool <xref target="PYANG"></xref>. That tree is not included | "pyang" tool <xref target="PYANG" format="default"/>. That tree is not inc | |||
here because it is too long (Section 3.3 of <xref | luded | |||
target="RFC8340"></xref>). Instead, subtrees are provided for the | here because it is too long (<xref target="RFC8340" sectionFormat="of" sec | |||
tion="3.3" format="default"/>). Instead, subtrees are provided for the | ||||
reader's convenience.</t> | reader's convenience.</t> | |||
<t>Note that the following subsections introduce some data nodes that | <t>Note that the following subsections introduce some data nodes that | |||
enclose textual descriptions (e.g., VPN service (<xref | enclose textual descriptions (e.g., VPN service (<xref target="l2_vpn_serv | |||
target="l2_vpn_service"></xref>), VPN node (<xref | ice" format="default"/>), VPN node (<xref target="vpn_node" format="default"/>), | |||
target="vpn_node"></xref>), or VPN network access (<xref | or VPN network access (<xref target="sna" format="default"/>)). Such descriptio | |||
target="sna"></xref>)). Such descriptions are not intended for random | ns are not intended for random | |||
end users but for network/system/software engineers that use their local | end users but for network/system/software engineers that use their local | |||
context to provide and interpret such information. Therefore, no | context to provide and interpret such information. Therefore, no | |||
mechanism for language tagging is needed.</t> | mechanism for language tagging is needed.</t> | |||
<section anchor="structure_model" numbered="true" toc="default"> | ||||
<name>Overall Structure of the Module</name> | ||||
<section anchor="structure_model" | ||||
title="Overall Structure of the Module"> | ||||
<t>The 'ietf-l2vpn-ntw' module uses two main containers: | <t>The 'ietf-l2vpn-ntw' module uses two main containers: | |||
'vpn-profiles' and 'vpn-services' (see <xref | 'vpn-profiles' and 'vpn-services' (see <xref target="ietf-l2vpn-ntw_tree | |||
target="ietf-l2vpn-ntw_tree"></xref>).</t> | " format="default"/>).</t> | |||
<t>The 'vpn-profiles' container is used by the provider to define and | <t>The 'vpn-profiles' container is used by the provider to define and | |||
maintain a set of common VPN profiles that apply to VPN services | maintain a set of common VPN profiles that apply to VPN services | |||
(<xref target="vpn_profiles"></xref>).</t> | (<xref target="vpn_profiles" format="default"/>).</t> | |||
<t>The 'vpn-services' container | ||||
<t hangText="'ethernet-segments':">The 'vpn-services' container | ||||
maintains the set of L2VPN services managed in the service provider | maintains the set of L2VPN services managed in the service provider | |||
network. The module allows creating a new L2VPN service by adding a | network. The module allows creating a new L2VPN service by adding a | |||
new instance of 'vpn-service'. The 'vpn-service' is the data structure | new instance of 'vpn-service'. The 'vpn-service' is the data structure | |||
that abstracts the VPN service (<xref | that abstracts the VPN service (<xref target="l2_vpn_service" format="de | |||
target="l2_vpn_service"></xref>).</t> | fault"/>).</t> | |||
<figure anchor="ietf-l2vpn-ntw_tree"> | ||||
<figure align="center" anchor="ietf-l2vpn-ntw_tree" | <name>Overall L2NM Tree Structure</name> | |||
title="Overall L2NM Tree Structure"> | <sourcecode type="yangtree"><![CDATA[module: ietf-l2vpn-ntw | |||
<artwork align="center"><![CDATA[module: ietf-l2vpn-ntw | ||||
+--rw l2vpn-ntw | +--rw l2vpn-ntw | |||
+--rw vpn-profiles | +--rw vpn-profiles | |||
| ... | | ... | |||
+--rw vpn-services | +--rw vpn-services | |||
+--rw vpn-service* [vpn-id] | +--rw vpn-service* [vpn-id] | |||
... | ... | |||
+--rw vpn-nodes | +--rw vpn-nodes | |||
+--rw vpn-node* [vpn-node-id] | +--rw vpn-node* [vpn-node-id] | |||
... | ... | |||
+--rw vpn-network-accesses | +--rw vpn-network-accesses | |||
+--rw vpn-network-access* [id] | +--rw vpn-network-access* [id] | |||
... ]]></artwork> | ... ]]></sourcecode> | |||
</figure> | </figure> | |||
<t/> | ||||
<t></t> | ||||
</section> | </section> | |||
<section anchor="vpn_profiles" numbered="true" toc="default"> | ||||
<section anchor="vpn_profiles" title="VPN Profiles"> | <name>VPN Profiles</name> | |||
<t>The 'vpn-profiles' container (<xref | <t>The 'vpn-profiles' container (<xref target="vpn_profiles_tree" format | |||
target="vpn_profiles_tree"></xref>) is used by a VPN service provider | ="default"/>) is used by a VPN service provider | |||
to define and maintain a set of VPN profiles <xref | to define and maintain a set of VPN profiles <xref target="RFC9181" form | |||
target="RFC9181"></xref> that apply to one or several VPN | at="default"/> that apply to one or several VPN | |||
services.</t> | services.</t> | |||
<figure anchor="vpn_profiles_tree"> | ||||
<t><figure align="center" anchor="vpn_profiles_tree" | <name>VPN Profiles Subtree Structure</name> | |||
title="VPN Profiles Subtree Structure"> | <sourcecode type="yangtree"><![CDATA[ +--rw l2vpn-ntw | |||
<artwork align="center"><![CDATA[ +--rw l2vpn-ntw | ||||
+--rw vpn-profiles | +--rw vpn-profiles | |||
| +--rw valid-provider-identifiers | | +--rw valid-provider-identifiers | |||
| +--rw external-connectivity-identifier* [id] | | +--rw external-connectivity-identifier* [id] | |||
| | {external-connectivity}? | | | {external-connectivity}? | |||
| | +--rw id string | | | +--rw id string | |||
| +--rw encryption-profile-identifier* [id] | | +--rw encryption-profile-identifier* [id] | |||
| | +--rw id string | | | +--rw id string | |||
| +--rw qos-profile-identifier* [id] | | +--rw qos-profile-identifier* [id] | |||
| | +--rw id string | | | +--rw id string | |||
| +--rw bfd-profile-identifier* [id] | | +--rw bfd-profile-identifier* [id] | |||
| | +--rw id string | | | +--rw id string | |||
| +--rw forwarding-profile-identifier* [id] | | +--rw forwarding-profile-identifier* [id] | |||
| | +--rw id string | | | +--rw id string | |||
| +--rw routing-profile-identifier* [id] | | +--rw routing-profile-identifier* [id] | |||
| +--rw id string | | +--rw id string | |||
+--rw vpn-services | +--rw vpn-services | |||
... ]]></artwork> | ... ]]></sourcecode> | |||
</figure></t> | </figure> | |||
<t>The exact definition of these profiles is local to each VPN service | <t>The exact definition of these profiles is local to each VPN service | |||
provider. The model only includes an identifier for these profiles in | provider. The model only includes an identifier for these profiles in | |||
order to ease identifying and binding local policies when building a | order to ease identifying and binding local policies when building a | |||
VPN service. As shown in <xref target="vpn_profiles_tree"></xref>, the | VPN service. As shown in <xref target="vpn_profiles_tree" format="defaul | |||
following identifiers can be included:<list style="hanging"> | t"/>, the | |||
<t hangText="'external-connectivity-identifier':">This identifier | following identifiers can be included:</t> | |||
<dl newline="false" spacing="normal"> | ||||
<dt>'external-connectivity-identifier':</dt> | ||||
<dd>This identifier | ||||
refers to a profile that defines the external connectivity | refers to a profile that defines the external connectivity | |||
provided to a VPN service (or a subset of VPN sites). External | provided to a VPN service (or a subset of VPN sites). External | |||
connectivity may be access to the Internet or restricted | connectivity may be access to the Internet or restricted | |||
connectivity, such as access to a public/private cloud.</t> | connectivity such as access to a public/private cloud.</dd> | |||
<dt>'encryption-profile-identifier':</dt> | ||||
<t hangText="'encryption-profile-identifier':">An encryption | <dd>An encryption | |||
profile refers to a set of policies related to the encryption | profile refers to a set of policies related to the encryption | |||
schemes and setup that can be applied when building and offering a | schemes and setup that can be applied when building and offering a | |||
VPN service.</t> | VPN service.</dd> | |||
<dt>'qos-profile-identifier':</dt> | ||||
<t hangText="'qos-profile-identifier':">A Quality of Service (QoS) | <dd>A Quality of Service (QoS) | |||
profile refers to as set of policies, such as classification, | profile refers to a set of policies such as classification, | |||
marking, and actions (e.g., <xref target="RFC3644"></xref>).</t> | marking, and actions (e.g., <xref target="RFC3644" format="default"/ | |||
>).</dd> | ||||
<t hangText="'bfd-profile-identifier':">A Bidirectional Forwarding | <dt>'bfd-profile-identifier':</dt> | |||
Detection (BFD) profile refers to a set of BFD policies <xref | <dd>A Bidirectional Forwarding | |||
target="RFC5880"></xref> that can be invoked when building a VPN | Detection (BFD) profile refers to a set of BFD policies <xref target | |||
service.</t> | ="RFC5880" format="default"/> that can be invoked when building a VPN | |||
service.</dd> | ||||
<t hangText="'forwarding-profile-identifier':">A forwarding | <dt>'forwarding-profile-identifier':</dt> | |||
<dd>A forwarding | ||||
profile refers to the policies that apply to the forwarding of | profile refers to the policies that apply to the forwarding of | |||
packets conveyed within a VPN. Such policies may consist, for | packets conveyed within a VPN. Such policies may consist of, for | |||
example, of applying ACLs.</t> | example, applying ACLs.</dd> | |||
<dt>'routing-profile-identifier':</dt> | ||||
<t hangText="'routing-profile-identifier':">A routing profile | <dd>A routing profile | |||
refers to a set of routing policies that will be invoked (e.g., | refers to a set of routing policies that will be invoked (e.g., | |||
BGP policies) when delivering the VPN service.</t> | BGP policies) when delivering the VPN service.</dd> | |||
</list></t> | </dl> | |||
<t/> | ||||
<t></t> | ||||
</section> | </section> | |||
<section anchor="l2_vpn_service" numbered="true" toc="default"> | ||||
<section anchor="l2_vpn_service" title="VPN Services"> | <name>VPN Services</name> | |||
<t>The 'vpn-service' is the data structure that abstracts an L2VPN | <t>The 'vpn-service' is the data structure that abstracts an L2VPN | |||
service in the service provider network. Each 'vpn-service' is | service in the service provider network. Each 'vpn-service' is | |||
uniquely identified by an identifier: 'vpn-id'. Such a 'vpn-id' is | uniquely identified by an identifier: 'vpn-id'. Such a 'vpn-id' is | |||
only meaningful locally within the network controller. The subtree of | only meaningful locally within the network controller. The subtree of | |||
the 'vpn-services' is shown in <xref | the 'vpn-services' is shown in <xref target="vpn-service_tree" format="d | |||
target="vpn-service_tree"></xref>.</t> | efault"/>.</t> | |||
<figure anchor="vpn-service_tree"> | ||||
<figure align="center" anchor="vpn-service_tree" | <name>VPN Services Subtree</name> | |||
title="VPN Services Subtree"> | <sourcecode type="yangtree"><![CDATA[ +--rw vpn-services | |||
<artwork align="center"><![CDATA[ +--rw vpn-services | ||||
+--rw vpn-service* [vpn-id] | +--rw vpn-service* [vpn-id] | |||
+--rw vpn-id vpn-common:vpn-id | +--rw vpn-id vpn-common:vpn-id | |||
+--rw vpn-name? string | +--rw vpn-name? string | |||
+--rw vpn-description? string | +--rw vpn-description? string | |||
+--rw customer-name? string | +--rw customer-name? string | |||
+--rw parent-service-id? vpn-common:vpn-id | +--rw parent-service-id? vpn-common:vpn-id | |||
+--rw vpn-type? identityref | +--rw vpn-type? identityref | |||
+--rw vpn-service-topology? identityref | +--rw vpn-service-topology? identityref | |||
+--rw bgp-ad-enabled? boolean | +--rw bgp-ad-enabled? boolean | |||
+--rw signaling-type? identityref | +--rw signaling-type? identityref | |||
skipping to change at line 906 ¶ | skipping to change at line 732 ¶ | |||
| +--:(protocol) | | +--:(protocol) | |||
| +--rw protocol* identityref | | +--rw protocol* identityref | |||
+--rw status | +--rw status | |||
| +--rw admin-status | | +--rw admin-status | |||
| | +--rw status? identityref | | | +--rw status? identityref | |||
| | +--rw last-change? yang:date-and-time | | | +--rw last-change? yang:date-and-time | |||
| +--ro 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 | |||
+--rw vpn-nodes | +--rw vpn-nodes | |||
... ]]></artwork> | ... ]]></sourcecode> | |||
</figure> | </figure> | |||
<t>The descriptions of the VPN service data nodes that are depicted in | <t>The descriptions of the VPN service data nodes that are depicted in | |||
<xref target="vpn-service_tree"></xref> are as follows: <list | <xref target="vpn-service_tree" format="default"/> are as follows: </t> | |||
style="hanging"> | <dl newline="false" spacing="normal"> | |||
<t hangText="'vpn-id':">An identifier that is used to uniquely | <dt>'vpn-id':</dt> | |||
identify the L2VPN service within the L2NM scope.</t> | <dd>An identifier that is used to uniquely | |||
identify the L2VPN service within the L2NM scope.</dd> | ||||
<t hangText="'vpn-name':">Associates a name with the service in | <dt>'vpn-name':</dt> | |||
order to facilitate the identification of the service.</t> | <dd>Associates a name with the service in | |||
order to facilitate the identification of the service.</dd> | ||||
<t hangText="'vpn-description':">Includes a textual description of | <dt>'vpn-description':</dt> | |||
the service. <vspace blankLines="1" />The internal structure of a | <dd> | |||
<t>Includes a textual description of | ||||
the service. </t> | ||||
<t>The internal structure of a | ||||
VPN description is local to each VPN service provider.</t> | VPN description is local to each VPN service provider.</t> | |||
</dd> | ||||
<t hangText="'customer-name':">Indicates the name of the customer | <dt>'customer-name':</dt> | |||
who ordered the service.</t> | <dd>Indicates the name of the customer | |||
who ordered the service.</dd> | ||||
<t hangText="'parent-service-id':">Refers to an identifier of the | <dt>'parent-service-id':</dt> | |||
parent service (e.g., the L2SM, IETF network slice, VPN+) that | <dd>Refers to an identifier of the | |||
parent service (e.g., the L2SM, IETF network slice, and VPN+) that | ||||
triggered the creation of the L2VPN service. This identifier is | triggered the creation of the L2VPN service. This identifier is | |||
used to easily correlate the (network) service as built in the | used to easily correlate the (network) service as built in the | |||
network with a service order. A controller can use that | network with a service order. A controller can use that | |||
correlation to enrich or populate some fields (e.g., description | correlation to enrich or populate some fields (e.g., description | |||
fields) as a function of local deployments.</t> | fields) as a function of local deployments.</dd> | |||
<dt>'vpn-type':</dt> | ||||
<t hangText="'vpn-type':">Indicates the L2VPN type. The following | <dd> | |||
types, defined in <xref target="RFC9181"></xref>, can be used for | <t>Indicates the L2VPN type. The following | |||
the L2NM:<list style="hanging"> | types, defined in <xref target="RFC9181" format="default"/>, can be | |||
<t hangText="'vpls':">Virtual Private LAN Service (VPLS) as | used for | |||
defined in <xref target="RFC4761"></xref> or <xref | the L2NM:</t> | |||
target="RFC4762"></xref>. This type is also used for | <dl newline="false" spacing="normal"> | |||
hierarchical VPLS (H-VPLS) (Section 10 of <xref | <dt>'vpls':</dt> | |||
target="RFC4762"></xref>).</t> | <dd>Virtual Private LAN Service (VPLS) as | |||
defined in <xref target="RFC4761" format="default"/> or <xref ta | ||||
<t hangText="'vpws':">Virtual Private Wire Service (VPWS) as | rget="RFC4762" format="default"/>. This type is also used for | |||
defined in Section 3.1.1 of <xref | hierarchical VPLS (H-VPLS) (<xref target="RFC4762" sectionFormat | |||
target="RFC4664"></xref>.</t> | ="of" section="10" format="default"/>).</dd> | |||
<dt>'vpws':</dt> | ||||
<t hangText="'vpws-evpn':">VPWS as defined in <xref | <dd>Virtual Private Wire Service (VPWS) as | |||
target="RFC8214"></xref>.</t> | defined in <xref target="RFC4664" sectionFormat="of" section="3. | |||
1.1" format="default"/>.</dd> | ||||
<t hangText="'pbb-evpn':">Provider Backbone Bridging (PBB) | ||||
EVPNs as defined in <xref target="RFC7623"></xref>.</t> | ||||
<t hangText="'mpls-evpn':">MPLS-based EVPNs <xref | <dt>'vpws-evpn':</dt> | |||
target="RFC7432"></xref>.</t> | <dd>VPWS EVPNs as defined in <xref target="RFC8214" format="defaul | |||
t"/>.</dd> | ||||
<t hangText="'vxlan-evpn':">VXLAN based EVPNs <xref | <dt>'pbb-evpn':</dt> | |||
target="RFC8365"></xref>.</t> | <dd>Provider Backbone Bridging (PBB) | |||
</list>The type is used as a condition for the presence of some | EVPNs as defined in <xref target="RFC7623" format="default"/>.</ | |||
dd> | ||||
<dt>'mpls-evpn':</dt> | ||||
<dd>MPLS-based EVPNs <xref target="RFC7432" format="default"/>.</d | ||||
d> | ||||
<dt>'vxlan-evpn':</dt> | ||||
<dd>VXLAN-based EVPNs <xref target="RFC8365" format="default"/>.</ | ||||
dd> | ||||
</dl> | ||||
<t>The type is used as a condition for the presence of some | ||||
data nodes in the L2NM.</t> | data nodes in the L2NM.</t> | |||
</dd> | ||||
<t hangText="'vpn-service-topology':">Indicates the network | <dt>'vpn-service-topology':</dt> | |||
<dd>Indicates the network | ||||
topology for the service: hub-spoke, any-to-any, or custom. These | topology for the service: hub-spoke, any-to-any, or custom. These | |||
types are defined in <xref target="RFC9181"></xref>.</t> | types are defined in <xref target="RFC9181" format="default"/>.</dd> | |||
<dt>'bgp-ad-enabled':</dt> | ||||
<t hangText="'bgp-ad-enabled':">Controls whether BGP | <dd>Controls whether BGP | |||
auto-discovery is enabled. If so, additional data nodes are | auto-discovery is enabled. If so, additional data nodes are | |||
included (<xref target="bgpad"></xref>).</t> | included (<xref target="bgpad" format="default"/>).</dd> | |||
<dt>'signaling-type':</dt> | ||||
<t hangText="'signaling-type':">Indicates the signaling that is | <dd> | |||
<t>Indicates the signaling that is | ||||
used for setting up pseudowires. Signaling type values are taken | used for setting up pseudowires. Signaling type values are taken | |||
from <xref target="RFC9181"></xref>. The following signaling | from <xref target="RFC9181" format="default"/>. The following signal | |||
options are supported:<list style="hanging"> | ing | |||
<t hangText="'bgp-signaling':">The L2NM supports two flavors | options are supported:</t> | |||
of BGP-signaled L2VPNs: <list style="hanging"> | <dl newline="false" spacing="normal"> | |||
<t hangText="'l2vpn-bgp':">The service is a Multipoint | <dt>'bgp-signaling':</dt> | |||
VPLS that uses a BGP control plane as described in <xref | <dd> | |||
target="RFC4761"></xref> and <xref | <t>The L2NM supports two flavors | |||
target="RFC6624"></xref>.</t> | of BGP-signaled L2VPNs: </t> | |||
<dl newline="false" spacing="normal"> | ||||
<t hangText="'evpn-bgp':">The service is a Multipoint VPLS | <dt>'l2vpn-bgp':</dt> | |||
that uses also a BGP control plane, but also includes the | <dd>The service is a Multipoint | |||
additional EVPN features and related parameters <xref | VPLS that uses a BGP control plane as described in <xref tar | |||
target="RFC7432"></xref> and <xref | get="RFC4761" format="default"/> and <xref target="RFC6624" format="default"/>.< | |||
target="RFC7209"></xref>.</t> | /dd> | |||
</list></t> | <dt>'evpn-bgp':</dt> | |||
<dd>The service is a Multipoint VPLS | ||||
<t hangText="'ldp-signaling':">A Multipoint VPLS that uses a | that uses a BGP control plane but also includes the | |||
mesh of LDP-signaled Pseudowires <xref | additional EVPN features and related parameters as described | |||
target="RFC6074"></xref>.</t> | in <xref target="RFC7432" format="default"/> and <xref target="RFC7209" format= | |||
"default"/>.</dd> | ||||
<t hangText="'l2tp-signaling':">The L2NM uses L2TP-signaled | </dl> | |||
Pseudowires as described in <xref | </dd> | |||
target="RFC6074"></xref>.</t> | <dt>'ldp-signaling':</dt> | |||
</list>Table 1 summarizes the allowed signaling types for each | <dd>A Multipoint VPLS that uses a | |||
VPN service type ('vpn-type'). See <xref | mesh of LDP-signaled pseudowires <xref target="RFC6074" format=" | |||
target="signaling_options"></xref> for more details.<figure | default"/>.</dd> | |||
align="center"> | <dt>'l2tp-signaling':</dt> | |||
<artwork align="center"><![CDATA[+============+================= | <dd>The L2NM uses L2TP-signaled | |||
===============+ | pseudowires as described in <xref target="RFC6074" format="defau | |||
| VPN Type | Signaling Options | | lt"/>.</dd> | |||
+============+================================+ | </dl> | |||
| vpls | l2tp-signaling, ldp-signaling, | | <t><xref target="options-vpn"/> summarizes the allowed signaling typ | |||
| | bgp-signaling (l2vpn-bgp) | | es for each | |||
+------------+--------------------------------+ | VPN service type ('vpn-type'). See <xref target="signaling_options" | |||
| vpws | l2tp-signaling, ldp-signaling, | | format="default"/> for more details.</t> | |||
| | bgp-signaling (l2vpn-bgp) | | ||||
+------------+--------------------------------+ | ||||
| vpws-evpn | bgp-signaling (evpn-bgp) | | ||||
+------------+--------------------------------+ | ||||
| pbb-evpn | bgp-signaling (evpn-bgp) | | ||||
+------------+--------------------------------+ | ||||
| mpls-evpn | bgp-signaling (evpn-bgp) | | ||||
+------------+--------------------------------+ | ||||
| vxlan-evpn | bgp-signaling (evpn-bgp) | | ||||
+------------+--------------------------------+ | ||||
Table 1: Signaling Options per VPN | ||||
Service Type]]></artwork> | ||||
</figure></t> | ||||
<t hangText="'global-parameters-profiles':">Defines reusable | <table anchor="options-vpn"> | |||
parameters for the same L2VPN service. <vspace | <name>Signaling Options per VPN Service Type</name> | |||
blankLines="1" />More details are provided in <xref | <thead> | |||
target="profile"></xref>.</t> | <tr> | |||
<th>VPN Type</th> | ||||
<th>Signaling Options</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td>vpls</td> | ||||
<td>l2tp-signaling, ldp-signaling, bgp-signaling (l2vpn-bgp)</td> | ||||
</tr> | ||||
<tr> | ||||
<td>vpws</td> | ||||
<td>l2tp-signaling, ldp-signaling, bgp-signaling (l2vpn-bgp) </td> | ||||
</tr> | ||||
<tr> | ||||
<td>vpws-evpn</td> | ||||
<td>bgp-signaling (evpn-bgp)</td> | ||||
</tr> | ||||
<tr> | ||||
<td>pbb-evpn</td> | ||||
<td>bgp-signaling (evpn-bgp)</td> | ||||
</tr> | ||||
<tr> | ||||
<td>mpls-evpn</td> | ||||
<td>bgp-signaling (evpn-bgp)</td> | ||||
</tr> | ||||
<tr> | ||||
<td>vxlan-evpn</td> | ||||
<td>bgp-signaling (evpn-bgp)</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
<t hangText="'underlay-transport':">Describes the preference for | </dd> | |||
<dt>'global-parameters-profiles':</dt> | ||||
<dd> | ||||
<t>Defines reusable | ||||
parameters for the same L2VPN service. </t> | ||||
<t>More details are provided in <xref target="profile" format="defau | ||||
lt"/>.</t> | ||||
</dd> | ||||
<dt>'underlay-transport':</dt> | ||||
<dd> | ||||
<t>Describes the preference for | ||||
the transport technology to carry the traffic of the VPN service. | the transport technology to carry the traffic of the VPN service. | |||
This preference is especially useful in networks with multiple | This preference is especially useful in networks with multiple | |||
domains and Network-to-Network Interface (NNI) types. The underlay | domains and Network-to-Network Interface (NNI) types. The underlay | |||
transport can be expressed as an abstract transport instance | transport can be expressed as an abstract transport instance | |||
(e.g., an identifier of a VPN+ instance, a virtual network | (e.g., an identifier of a VPN+ instance, a virtual network | |||
identifier, or a network slice name) or as an ordered list of the | identifier, or a network slice name) or as an ordered list of the | |||
actual protocols to be enabled in the network. <vspace | actual protocols to be enabled in the network. </t> | |||
blankLines="1" />A rich set of protocol identifiers that can be | <t>A rich set of protocol identifiers that can be | |||
used to refer to an underlay transport (or how such an underlay is | used to refer to an underlay transport (or how such an underlay is | |||
set up) are defined in <xref target="RFC9181"></xref>. <vspace | set up) are defined in <xref target="RFC9181" format="default"/>. </ | |||
blankLines="1" />The model defined in Section 6.3.2 of <xref | t> | |||
target="I-D.ietf-teas-te-service-mapping-yang"></xref> may be used | <t>The model defined in <xref target="I-D.ietf-teas-te-service-mappi | |||
ng-yang" format="default" sectionFormat="of" section="6.3.2"/> may be used | ||||
if specific protection and availability requirements are needed | if specific protection and availability requirements are needed | |||
between PEs.</t> | between PEs.</t> | |||
</dd> | ||||
<t hangText="'status':">Used to track the overall status of a | <dt>'status':</dt> | |||
<dd> | ||||
<t>Used to track the overall status of a | ||||
given VPN service. Both operational and administrative status are | given VPN service. Both operational and administrative status are | |||
maintained together with a timestamp. For example, a service can | maintained together with a timestamp. For example, a service can | |||
be created, but not put into effect.<vspace | be created but not put into effect.</t> | |||
blankLines="1" />Administrative and operational status can be used | <t>Administrative and operational status can be used | |||
as a trigger to detect service anomalies. For example, a service | as a trigger to detect service anomalies. For example, a service | |||
that is declared at the service layer as being created but still | that is declared at the service layer as being created but still | |||
inactive at the network layer is an indication that network | inactive at the network layer is an indication that network | |||
provisioning actions are needed to align the observed service | provisioning actions are needed to align the observed service | |||
status with the expected service status.</t> | status with the expected service status.</t> | |||
</dd> | ||||
<t hangText="'vpn-node':">An abstraction that represents a set of | <dt>'vpn-node':</dt> | |||
<dd> | ||||
<t>An abstraction that represents a set of | ||||
policies applied to a network node and belonging to a single | policies applied to a network node and belonging to a single | |||
'vpn-service'. An L2VPN service is typically built by adding | 'vpn-service'. An L2VPN service is typically built by adding | |||
instances of 'vpn-node' to the 'vpn-nodes' container. <vspace | instances of 'vpn-node' to the 'vpn-nodes' container. </t> | |||
blankLines="1" />A 'vpn-node' contains 'vpn-network-accesses', | <t>A 'vpn-node' contains 'vpn-network-accesses', | |||
which are the interfaces attached to the VPN by which the customer | which are the interfaces attached to the VPN by which the customer | |||
traffic is received. Therefore, the customer sites are connected | traffic is received. Therefore, the customer sites are connected | |||
to the 'vpn-network-accesses'.<vspace blankLines="1" />Note that, | to the 'vpn-network-accesses'.</t> | |||
<t>Note that, | ||||
as this is a network data model, the information about customers | as this is a network data model, the information about customers | |||
sites is not required in the model. Such information is rather | sites is not required in the model. Such information is rather | |||
relevant in the L2SM. Whether that information is included in the | relevant in the L2SM. Whether that information is included in the | |||
L2NM, e.g., to populate the various 'description' data nodes is | L2NM, e.g., to populate the various 'description' data nodes, is | |||
implementation specific. <vspace blankLines="1" />More details are | implementation specific. </t> | |||
provided in <xref target="vpn_node"></xref>.</t> | <t>More details are | |||
</list></t> | provided in <xref target="vpn_node" format="default"/>.</t> | |||
</dd> | ||||
<t></t> | </dl> | |||
<t/> | ||||
</section> | </section> | |||
<section anchor="profile" numbered="true" toc="default"> | ||||
<section anchor="profile" title="Global Parameters Profiles"> | <name>Global Parameters Profiles</name> | |||
<t>The 'global-parameters-profile' defines reusable parameters for the | <t>The 'global-parameters-profile' defines reusable parameters for the | |||
same L2VPN service instance ('vpn-service'). Global parameters | same L2VPN service instance ('vpn-service'). Global parameters | |||
profiles are defined at the VPN service level, activated at the VPN | profiles are defined at the VPN service level, activated at the VPN | |||
node level, and then an activated VPN profile may be used at the VPN | node level, and then an activated VPN profile may be used at the VPN | |||
network access level. Each VPN instance profile is identified by | network access level. Each VPN instance profile is identified by | |||
'profile-id'. Some of the data nodes can be adjusted at the VPN node | 'profile-id'. Some of the data nodes can be adjusted at the VPN node | |||
or VPN network access levels. These adjusted values take precedence | or VPN network access levels. These adjusted values take precedence | |||
over the global values. The subtree of 'global-parameters-profile' is | over the global values. The subtree of 'global-parameters-profile' is | |||
depicted in <xref target="global_param_prof_tree"></xref>.</t> | depicted in <xref target="global_param_prof_tree" format="default"/>.</t | |||
> | ||||
<figure align="center" anchor="global_param_prof_tree" | <figure anchor="global_param_prof_tree"> | |||
title="Global Parameters Profiles Subtree"> | <name>Global Parameters Profiles Subtree</name> | |||
<artwork align="center"><![CDATA[ ... | <sourcecode type="yangtree"><![CDATA[ ... | |||
+--rw vpn-services | +--rw vpn-services | |||
+--rw vpn-service* [vpn-id] | +--rw vpn-service* [vpn-id] | |||
... | ... | |||
+--rw global-parameters-profiles | +--rw global-parameters-profiles | |||
| +--rw global-parameters-profile* [profile-id] | | +--rw global-parameters-profile* [profile-id] | |||
| +--rw profile-id string | | +--rw profile-id string | |||
| +--rw (rd-choice)? | | +--rw (rd-choice)? | |||
| | +--:(directly-assigned) | | | +--:(directly-assigned) | |||
| | | +--rw rd? | | | | +--rw rd? | |||
| | | rt-types:route-distinguisher | | | | rt-types:route-distinguisher | |||
skipping to change at line 1143 ¶ | skipping to change at line 996 ¶ | |||
| | | +--rw action? identityref | | | | +--rw action? identityref | |||
| | +--rw mac-loop-prevention | | | +--rw mac-loop-prevention | |||
| | +--rw window? uint32 | | | +--rw window? uint32 | |||
| | +--rw frequency? uint32 | | | +--rw frequency? uint32 | |||
| | +--rw retry-timer? uint32 | | | +--rw retry-timer? uint32 | |||
| | +--rw protection-type? identityref | | | +--rw protection-type? identityref | |||
| +--rw multicast {vpn-common:multicast}? | | +--rw multicast {vpn-common:multicast}? | |||
| +--rw enabled? boolean | | +--rw enabled? boolean | |||
| +--rw customer-tree-flavors | | +--rw customer-tree-flavors | |||
| +--rw tree-flavor* identityref | | +--rw tree-flavor* identityref | |||
... ]]></artwork> | ... ]]></sourcecode> | |||
</figure> | </figure> | |||
<t>The description of the global parameters profile is as follows:</t> | <t>The description of the global parameters profile is as follows:</t> | |||
<dl newline="false" spacing="normal"> | ||||
<t><list style="hanging"> | <dt>'profile-id':</dt> | |||
<t hangText="'profile-id':">Uniquely identifies a global parameter | <dd>Uniquely identifies a global parameter | |||
profile in the context of an L2VPN service.</t> | profile in the context of an L2VPN service.</dd> | |||
<dt>'rd':</dt> | ||||
<t hangText="'rd':">As defined in <xref target="RFC9181"></xref>, | <dd> | |||
<t>As defined in <xref target="RFC9181" format="default"/>, | ||||
these RD assignment modes are supported: direct assignment, | these RD assignment modes are supported: direct assignment, | |||
automatic assignment from a given pool, full automatic assignment, | automatic assignment from a given pool, full automatic assignment, | |||
and no assignment. <vspace blankLines="1" />Also, the module | and no assignment. </t> | |||
<t>Also, the module | ||||
accommodates deployments where only the Assigned Number subfield | accommodates deployments where only the Assigned Number subfield | |||
of RDs is assigned from a pool while the Administrator subfield is | of RDs is assigned from a pool while the Administrator subfield is | |||
set to, e.g., the Router ID that is assigned to a VPN node. The | set to, e.g., the Router ID that is assigned to a VPN node. The | |||
module supports these modes for managing the Assigned Number | module supports these modes to manage the Assigned Number | |||
subfield: explicit assignment, auto-assignment from a pool, and | subfield: explicit assignment, auto-assignment from a pool, and | |||
full auto-assignment.</t> | full auto-assignment.</t> | |||
</dd> | ||||
<t hangText="'vpn-targets':">Specifies RT import/export rules for | <dt>'vpn-targets':</dt> | |||
the VPN service.</t> | <dd>Specifies RT import/export rules for | |||
the VPN service.</dd> | ||||
<t hangText="'local-autonomous-system':">Indicates the Autonomous | <dt>'local-autonomous-system':</dt> | |||
<dd>Indicates the Autonomous | ||||
System Number (ASN) that is configured for the VPN node. The ASN | System Number (ASN) that is configured for the VPN node. The ASN | |||
can be used to auto-derive some other attributes such as RDs or | can be used to auto-derive some other attributes such as RDs or | |||
Ethernet Segment Identifiers (ESIs).</t> | Ethernet Segment Identifiers (ESIs).</dd> | |||
<dt>'svc-mtu':</dt> | ||||
<t hangText="'svc-mtu':">Is the service MTU for an L2VPN service | <dd>Is the service MTU for an L2VPN service | |||
(i.e., Layer 2 MTU including L2 frame header/trailer). It is also | (i.e., a Layer 2 MTU including an L2 frame header/trailer). It is al | |||
so | ||||
known as the maximum transmission unit or maximum frame size. It | known as the maximum transmission unit or maximum frame size. It | |||
is expressed in bytes.</t> | is expressed in bytes.</dd> | |||
<dt>'ce-vlan-preservation':</dt> | ||||
<t hangText="'ce-vlan-preservation':">Is set to preserve the | <dd>Is set to preserve the | |||
Customer Edge VLAN IDs (CE-VLAN IDs) from ingress to egress, i.e., | Customer Edge VLAN (CE VLAN) IDs from ingress to egress, i.e., | |||
CE-VLAN tag of the egress frame are identical to those of the | CE VLAN tags of the egress frame are identical to those of the | |||
ingress frame that yielded this egress service frame. If | ingress frame that yielded this egress service frame. If | |||
all-to-one bundling within a site is enabled, then preservation | all-to-one bundling within a site is enabled, then preservation | |||
applies to all ingress service frames. If all-to-one bundling is | applies to all ingress service frames. If all-to-one bundling is | |||
disabled, then preservation applies to tagged Ingress service | disabled, then preservation applies to tagged Ingress service | |||
frames having CE-VLAN ID 1 through 4094.</t> | frames having CE VLAN ID 1 through 4094.</dd> | |||
<dt>'ce-vlan-cos-preservation':</dt> | ||||
<t hangText="'ce-vlan-cos-preservation':">Controls the CE VLAN CoS | <dd>Controls the CE VLAN Class of Service (CoS) | |||
preservation. When set, Priority Code Point (PCP) bits in the | preservation. When set, Priority Code Point (PCP) bits in the | |||
CE-VLAN tag of the egress frame are identical to those of the | CE VLAN tag of the egress frame are identical to those of the | |||
ingress frame that yielded this egress service frame.</t> | ingress frame that yielded this egress service frame.</dd> | |||
<dt>'control-word-negotiation':</dt> | ||||
<t hangText="'control-word-negotiation':">Controls whether | <dd>Controls whether | |||
control-word negotiation is enabled (if set to true) or not (if | control-word negotiation is enabled (if set to true) or not (if | |||
set to false). Refer to Section 7 of <xref | set to false). Refer to <xref target="RFC8077" sectionFormat="of" se | |||
target="RFC8077"></xref> for more details.</t> | ction="7" format="default"/> for more details.</dd> | |||
<dt>'mac-policies':</dt> | ||||
<t hangText="'mac-policies':">Includes a set of MAC policies that | <dd> | |||
apply to the service:<list style="hanging"> | <t>Includes a set of MAC policies that | |||
<t hangText="'mac-addr-limit':">Is a container of MAC address | apply to the service:</t> | |||
<dl newline="false" spacing="normal"> | ||||
<dt>'mac-addr-limit':</dt> | ||||
<dd> | ||||
<t>Is a container of MAC address | ||||
limit configuration. It includes the following data nodes: | limit configuration. It includes the following data nodes: | |||
<list style="hanging"> | </t> | |||
<t hangText="'limit-number':">Maximum number of MAC | <dl newline="false" spacing="normal"> | |||
<dt>'limit-number':</dt> | ||||
<dd>Maximum number of MAC | ||||
addresses learned from the customer for a single service | addresses learned from the customer for a single service | |||
instance.</t> | instance.</dd> | |||
<dt>'time-interval':</dt> | ||||
<t hangText="'time-interval':">The aging time of the MAC | <dd>The aging time of the MAC | |||
address.</t> | address.</dd> | |||
<dt>'action':</dt> | ||||
<t hangText="'action':">Specifies the action when the | <dd>Specifies the action when the | |||
upper limit is exceeded: drop the packet, flood the | upper limit is exceeded: drop the packet, flood the | |||
packet, or simply send a warning message.</t> | packet, or simply send a warning message.</dd> | |||
</list></t> | </dl> | |||
</dd> | ||||
<t hangText="'mac-loop-prevention':">Container for MAC loop | <dt>'mac-loop-prevention':</dt> | |||
prevention.<list style="hanging"> | <dd> | |||
<t hangText="'window':">The time interval over which a MAC | <t>Container for MAC loop | |||
mobility event is detected and checked.</t> | prevention.</t> | |||
<dl newline="false" spacing="normal"> | ||||
<t hangText="'frequency':">The number of times to detect | <dt>'window':</dt> | |||
<dd>The time interval over which a MAC | ||||
mobility event is detected and checked.</dd> | ||||
<dt>'frequency':</dt> | ||||
<dd>The number of times to detect | ||||
MAC duplication, where a 'duplicate MAC address' situation | MAC duplication, where a 'duplicate MAC address' situation | |||
has occurred within the 'window' time interval, and the | has occurred within the 'window' time interval, and the | |||
duplicate MAC address has been added to a list of | duplicate MAC address has been added to a list of | |||
duplicate MAC addresses.</t> | duplicate MAC addresses.</dd> | |||
<dt>'retry-timer':</dt> | ||||
<t hangText="'retry-timer':">The retry timer. When the | <dd>The retry timer. When the | |||
retry timer expires, the duplicate MAC address will be | retry timer expires, the duplicate MAC address will be | |||
flushed from the MAC-VRF.</t> | flushed from the MAC-VRF.</dd> | |||
<dt>'protection-type':</dt> | ||||
<t hangText="'protection-type':">It defines the loop | <dd>It defines the loop | |||
prevention type (e.g., shut).</t> | prevention type (e.g., shut).</dd> | |||
</list></t> | </dl> | |||
</list></t> | </dd> | |||
</dl> | ||||
<t hangText="'multicast':">Controls whether multicast is allowed | </dd> | |||
in the service.</t> | <dt>'multicast':</dt> | |||
</list></t> | <dd>Controls whether multicast is allowed | |||
in the service.</dd> | ||||
</dl> | ||||
</section> | </section> | |||
<section anchor="vpn_node" numbered="true" toc="default"> | ||||
<name>VPN Nodes</name> | ||||
<section anchor="vpn_node" title="VPN Nodes"> | <t>The 'vpn-node' (<xref target="vpn-node_tree" format="default"/>) is a | |||
<t>The 'vpn-node' (<xref target="vpn-node_tree"></xref>) is an | n | |||
abstraction that represents a set of policies/configurations applied | abstraction that represents a set of policies applied | |||
to a network node and that belong to a single 'vpn-service'. A | to a network node that belongs to a single 'vpn-service'. A | |||
'vpn-node' contains 'vpn-network-accesses', which are the interfaces | 'vpn-node' contains 'vpn-network-accesses', which are the interfaces | |||
involved in the creation of the VPN. The customer sites are connected | involved in the creation of the VPN. The customer sites are connected | |||
to the 'vpn-network-accesses'.</t> | to the 'vpn-network-accesses'.</t> | |||
<figure anchor="vpn-node_tree"> | ||||
<figure align="right" anchor="vpn-node_tree" title="VPN Nodes Subtree"> | <name>VPN Nodes Subtree</name> | |||
<artwork align="center"><![CDATA[ +--rw l2vpn-ntw | <sourcecode type="yangtree"><![CDATA[ +--rw l2vpn-ntw | |||
+--rw vpn-profiles | +--rw vpn-profiles | |||
| ... | | ... | |||
+--rw vpn-services | +--rw vpn-services | |||
+--rw vpn-service* [vpn-id] | +--rw vpn-service* [vpn-id] | |||
... | ... | |||
+--rw vpn-nodes | +--rw vpn-nodes | |||
+--rw vpn-node* [vpn-node-id] | +--rw vpn-node* [vpn-node-id] | |||
+--rw vpn-node-id vpn-common:vpn-id | +--rw vpn-node-id vpn-common:vpn-id | |||
+--rw description? string | +--rw description? string | |||
+--rw ne-id? string | +--rw ne-id? string | |||
skipping to change at line 1289 ¶ | skipping to change at line 1156 ¶ | |||
| +--rw enabled? boolean | | +--rw enabled? boolean | |||
| +--rw customer-tree-flavors | | +--rw customer-tree-flavors | |||
| +--rw tree-flavor* identityref | | +--rw tree-flavor* identityref | |||
+--rw status | +--rw status | |||
| ... | | ... | |||
+--rw bgp-auto-discovery | +--rw bgp-auto-discovery | |||
| ... | | ... | |||
+--rw signaling-option | +--rw signaling-option | |||
| ... | | ... | |||
+--rw vpn-network-accesses | +--rw vpn-network-accesses | |||
... ]]></artwork> | ... ]]></sourcecode> | |||
</figure> | </figure> | |||
<t>The descriptions of VPN node data nodes are as follows:<list | <t>The descriptions of VPN node data nodes are as follows:</t> | |||
style="hanging"> | <dl newline="false" spacing="normal"> | |||
<t hangText="'vpn-node-id':">Used to uniquely identify a node that | <dt>'vpn-node-id':</dt> | |||
enables a VPN network access.</t> | <dd>Used to uniquely identify a node that | |||
enables a VPN network access.</dd> | ||||
<t hangText="'description':">Provides a textual description of the | <dt>'description':</dt> | |||
VPN node.</t> | <dd>Provides a textual description of the | |||
VPN node.</dd> | ||||
<t hangText="'ne-id':">Includes an identifier of the network | <dt>'ne-id':</dt> | |||
element where the VPN node is deployed.</t> | <dd>Includes an identifier of the network | |||
element where the VPN node is deployed.</dd> | ||||
<t hangText="'role':">Indicates the role of the VPN instance | <dt>'role':</dt> | |||
profile in the VPN. Role values are defined in <xref | <dd>Indicates the role of the VPN instance | |||
target="RFC9181"></xref> (e.g., 'any-to-any-role', 'spoke-role', | profile in the VPN. Role values are defined in <xref target="RFC9181 | |||
'hub-role').</t> | " format="default"/> (e.g., 'any-to-any-role', 'spoke-role', and | |||
'hub-role').</dd> | ||||
<t hangText="'router-id':">Indicates a 32-bit number that is used | <dt>'router-id':</dt> | |||
to uniquely identify a router within an Autonomous System | <dd>Indicates a 32-bit number that is used | |||
(AS).</t> | to uniquely identify a router within an AS.</dd> | |||
<dt>'active-global-parameters-profiles':</dt> | ||||
<t hangText="'active-global-parameters-profiles':">Lists the set | <dd> | |||
of active global VPN parameters profiles for this VPN node. | <t>Lists the set | |||
of active global VPN parameter profiles for this VPN node. | ||||
Concretely, one or more global profiles that are defined at the | Concretely, one or more global profiles that are defined at the | |||
VPN service level (i.e., under | VPN service level (i.e., under | |||
'l2vpn-ntw/vpn-services/vpn-service' level) can be activated at | 'l2vpn-ntw/vpn-services/vpn-service' level) can be activated at | |||
the VPN node level; each of these profiles is uniquely identified | the VPN node level; each of these profiles is uniquely identified | |||
by means of 'profile-id'. The structure of | by means of 'profile-id'. The structure of | |||
'active-global-parameters-profiles' uses the same data nodes as | 'active-global-parameters-profiles' uses the same data nodes as | |||
<xref target="profile"></xref> except RD and RT related data | <xref target="profile" format="default"/> with the exception of the | |||
nodes.<vspace blankLines="1" />Values defined in | data nodes related to RD and RT.</t> | |||
'active-global-parameters-profiles' overrides the values defined | <t>Values defined in | |||
'active-global-parameters-profiles' override the values defined | ||||
in the VPN service level.</t> | in the VPN service level.</t> | |||
</dd> | ||||
<t hangText="'status':">Tracks the status of a node involved in a | <dt>'status':</dt> | |||
<dd>Tracks the status of a node involved in a | ||||
VPN service. Both operational and administrative status are | VPN service. Both operational and administrative status are | |||
maintained. A mismatch between the administrative status vs. the | maintained. A mismatch between the administrative status vs. the | |||
operational status can be used as a trigger to detect | operational status can be used as a trigger to detect | |||
anomalies.</t> | anomalies.</dd> | |||
<dt>'bgp-auto-discovery':</dt> | ||||
<t hangText="'bgp-auto-discovery':">See <xref | <dd>See <xref target="bgpad" format="default"/>.</dd> | |||
target="bgpad"></xref>.</t> | <dt>'signaling-option':</dt> | |||
<dd>See <xref target="signaling_options" format="default"/>.</dd> | ||||
<t hangText="'signaling-option':">See <xref | <dt>'vpn-network-accesses':</dt> | |||
target="signaling_options"></xref>.</t> | <dd> | |||
<t>Represents the point to | ||||
<t hangText="'vpn-network-accesses':">Represents the point to | which sites are connected. </t> | |||
which sites are connected. <vspace blankLines="1" />Note that, | <t>Note that, | |||
unlike the L2SM, the L2NM does not need to model the customer site | unlike the L2SM, the L2NM does not need to model the customer site; | |||
-- only the points that receive traffic from the site are covered | only the points that receive traffic from the site are covered | |||
(i.e., the PE side of Provider Edge to Customer Edge (PE-CE) | (i.e., the PE side of Provider Edge to Customer Edge (PE-CE) | |||
connections). Hence, the VPN network access contains the | connections). Hence, the VPN network access contains the | |||
connectivity information between the provider's network and the | connectivity information between the provider's network and the | |||
customer premises. The VPN profiles ('vpn-profiles') have a set of | customer premises. The VPN profiles ('vpn-profiles') have a set of | |||
routing policies that can be applied during the service creation. | routing policies that can be applied during the service creation. | |||
<vspace blankLines="1" />See <xref target="sna"></xref> for more | </t> | |||
<t>See <xref target="sna" format="default"/> for more | ||||
details.</t> | details.</t> | |||
</list></t> | </dd> | |||
</dl> | ||||
<section anchor="bgpad" title="BGP Auto-Discovery"> | <section anchor="bgpad" numbered="true" toc="default"> | |||
<t>The 'bgp-auto-discovery' container (<xref | <name>BGP Auto-Discovery</name> | |||
target="bgpad-tree"></xref>) includes the required information for | <t>The 'bgp-auto-discovery' container (<xref target="bgpad-tree" forma | |||
the activation of BGP auto-discovery <xref | t="default"/>) includes the required information for | |||
target="RFC4761"></xref><xref target="RFC6624"></xref>.</t> | the activation of BGP auto-discovery <xref target="RFC4761" format="de | |||
fault"/><xref target="RFC6624" format="default"/>.</t> | ||||
<t><figure align="right" anchor="bgpad-tree" | <figure anchor="bgpad-tree"> | |||
title="BGP Auto-Discovery Subtree"> | <name>BGP Auto-Discovery Subtree</name> | |||
<artwork align="center"><![CDATA[ +--rw l2vpn-ntw | <sourcecode type="yangtree"><![CDATA[ +--rw l2vpn-ntw | |||
+--rw vpn-profiles | +--rw vpn-profiles | |||
| ... | | ... | |||
+--rw vpn-services | +--rw vpn-services | |||
+--rw vpn-service* [vpn-id] | +--rw vpn-service* [vpn-id] | |||
... | ... | |||
+--rw vpn-nodes | +--rw vpn-nodes | |||
+--rw vpn-node* [vpn-node-id] | +--rw vpn-node* [vpn-node-id] | |||
... | ... | |||
+--rw bgp-auto-discovery | +--rw bgp-auto-discovery | |||
| +--rw (bgp-type)? | | +--rw (bgp-type)? | |||
skipping to change at line 1414 ¶ | skipping to change at line 1280 ¶ | |||
| | +--rw route-targets* [route-target] | | | +--rw route-targets* [route-target] | |||
| | | +--rw route-target rt-types:route-target | | | | +--rw route-target rt-types:route-target | |||
| | +--rw route-target-type | | | +--rw route-target-type | |||
| | rt-types:route-target-type | | | rt-types:route-target-type | |||
| +--rw vpn-policies | | +--rw vpn-policies | |||
| +--rw import-policy? string | | +--rw import-policy? string | |||
| +--rw export-policy? string | | +--rw export-policy? string | |||
+--rw signaling-option | +--rw signaling-option | |||
| ... | | ... | |||
+--rw vpn-network-accesses | +--rw vpn-network-accesses | |||
... ]]></artwork> | ... ]]></sourcecode> | |||
</figure></t> | </figure> | |||
<t>As discussed in <xref target="RFC6624" sectionFormat="of" | ||||
<t>As discussed in Section 1 of <xref target="RFC6624"></xref>, all | section="1" format="default"/>, all BGP-based methods include the | |||
of BGP-based methods include the notion of a VPN identifier that | notion of a VPN identifier that serves to unify components of a | |||
serves to unify components of a given VPN and the concept of | given VPN and the concept of auto-discovery, hence the support of | |||
auto-discovery; hence the support of the data node 'vpn-id'.</t> | the data node 'vpn-id'.</t> | |||
<t>For the particular case of EVPN, the L2NM supports RT | <t>For the particular case of EVPN, the L2NM supports RT | |||
auto-derivation based on the Ethernet Tag ID specified in Section | auto-derivation based on the Ethernet Tag ID specified in <xref target | |||
7.10.1 of <xref target="RFC7432"></xref>. A VPN service provider can | ="RFC7432" sectionFormat="of" section="7.10.1" format="default"/>. A VPN service | |||
provider can | ||||
enable/disable this functionality by means of 'auto-rt-enable'. The | enable/disable this functionality by means of 'auto-rt-enable'. The | |||
assigned RT can be retrieved using 'auto-route-target'.</t> | assigned RT can be retrieved using 'auto-route-target'.</t> | |||
<t>For all BGP-based L2VPN flavors, other data nodes such as RD and | <t>For all BGP-based L2VPN flavors, other data nodes such as RD and | |||
RT are used. These data nodes have the same structure as the one | RT are used. These data nodes have the same structure as the one | |||
discussed in <xref target="profile"></xref>.</t> | discussed in <xref target="profile" format="default"/>.</t> | |||
</section> | </section> | |||
<section anchor="signaling_options" numbered="true" toc="default"> | ||||
<section anchor="signaling_options" title="Signaling Options"> | <name>Signaling Options</name> | |||
<t>The 'signaling-option' container (<xref target="so"></xref>) | <t>The 'signaling-option' container (<xref target="so" format="default | |||
"/>) | ||||
defines a set of data nodes for a given signaling protocol that is | defines a set of data nodes for a given signaling protocol that is | |||
used for an L2VPN service. As discussed in <xref | used for an L2VPN service. As discussed in <xref target="l2_vpn_servic | |||
target="l2_vpn_service"></xref>, several signaling options to | e" format="default"/>, several signaling options to | |||
exchange membership information between PEs of an L2VPN are | exchange membership information between PEs of an L2VPN are | |||
supported. The signaling type to be used for an L2VPN service is | supported. The signaling type to be used for an L2VPN service is | |||
controlled at the VPN service level by means of | controlled at the VPN service level by means of | |||
'signaling-type'.</t> | 'signaling-type'.</t> | |||
<figure anchor="so"> | ||||
<t><figure align="center" anchor="so" | <name>Signaling Option Overall Subtree</name> | |||
title="Signaling Option Overall Subtree"> | <sourcecode type="yangtree"><![CDATA[... | |||
<artwork align="center"><![CDATA[... | ||||
+--rw vpn-nodes | +--rw vpn-nodes | |||
+--rw vpn-node* [vpn-node-id] | +--rw vpn-node* [vpn-node-id] | |||
... | ... | |||
+--rw signaling-option | +--rw signaling-option | |||
| +--rw advertise-mtu? boolean | | +--rw advertise-mtu? boolean | |||
| +--rw mtu-allow-mismatch? boolean | | +--rw mtu-allow-mismatch? boolean | |||
| +--rw signaling-type? leafref | | +--rw signaling-type? leafref | |||
| +--rw (signaling-option)? | | +--rw (signaling-option)? | |||
| +--:(bgp) | | +--:(bgp) | |||
| | ... | | | ... | |||
| +--:(ldp-or-l2tp) | | +--:(ldp-or-l2tp) | |||
| +--rw ldp-or-l2tp | | +--rw ldp-or-l2tp | |||
| ... | | ... | |||
| +--rw (ldp-or-l2tp)? | | +--rw (ldp-or-l2tp)? | |||
| +--:(ldp) | | +--:(ldp) | |||
| | ... | | | ... | |||
| +--:(l2tp) | | +--:(l2tp) | |||
| ... | | ... | |||
]]></artwork> | ]]></sourcecode> | |||
</figure></t> | </figure> | |||
<t>The following signaling data nodes are supported:</t> | ||||
<t>The following signaling data nodes are supported:<list | <dl newline="false" spacing="normal"> | |||
style="hanging"> | <dt>'advertise-mtu':</dt> | |||
<t hangText="'advertise-mtu':">Controls whether MTU is | <dd>Controls whether MTU is | |||
advertised when setting a pseudowire (e.g., Section 4.3 of <xref | advertised when setting a pseudowire (e.g., <xref target="RFC4667" | |||
target="RFC4667"></xref>, Section 5.1 of <xref | sectionFormat="of" section="4.3" format="default"/>, <xref target="RFC6624" se | |||
target="RFC6624"></xref>, or Section 6.1 of <xref | ctionFormat="of" section="5.1" format="default"/>, or <xref target="RFC4762" sec | |||
target="RFC4762"></xref>).</t> | tionFormat="of" section="6.1" format="default"/>).</dd> | |||
<dt>'mtu-allow-mismatch':</dt> | ||||
<t hangText="'mtu-allow-mismatch':">When set to true, it allows | <dd>When set to true, it allows | |||
MTU mismatch for a pseudowire (see, e.g., Section 4.3 of <xref | an MTU mismatch for a pseudowire (see, e.g., <xref target="RFC4667 | |||
target="RFC4667"></xref>).</t> | " sectionFormat="of" section="4.3" format="default"/>).</dd> | |||
<dt>'signaling-type':</dt> | ||||
<t hangText="'signaling-type':">Indicates the signaling type. | <dd>Indicates the signaling type. | |||
This type inherits the value of 'signaling-type' defined at the | This type inherits the value of 'signaling-type' defined at the | |||
service level (<xref target="l2_vpn_service"></xref>).</t> | service level (<xref target="l2_vpn_service" format="default"/>).< | |||
/dd> | ||||
<t hangText="'bgp':">Is provided when BGP is used for L2VPN | <dt>'bgp':</dt> | |||
signaling. Refer to <xref target="bgp"></xref> for more | <dd>Is provided when BGP is used for L2VPN | |||
details.</t> | signaling. Refer to <xref target="bgp" format="default"/> for more | |||
details.</dd> | ||||
<t hangText="'ldp':">The model supports the configuration of the | <dt>'ldp':</dt> | |||
parameters that are discussed in Section 6 of <xref | <dd>The model supports the configuration of the | |||
target="RFC4762"></xref>. Refer to <xref target="ldp"></xref> | parameters that are discussed in <xref target="RFC4762" sectionFor | |||
for more details.</t> | mat="of" section="6" format="default"/>. Refer to <xref target="ldp" format="def | |||
ault"/> | ||||
<t hangText="'l2tp':">The model supports the configuration of | for more details.</dd> | |||
the parameters that are discussed in Section 4 of <xref | <dt>'l2tp':</dt> | |||
target="RFC4667"></xref>. Refer to <xref target="l2tp"></xref> | <dd>The model supports the configuration of | |||
for more details.</t> | the parameters that are discussed in <xref target="RFC4667" sectio | |||
</list></t> | n="4" sectionFormat="of" format="default"/>. Refer to <xref target="l2tp" format | |||
="default"/> | ||||
for more details.</dd> | ||||
</dl> | ||||
<t>Note that LDP and L2TP choices are bundled ("ldp-or-l2tp") | <t>Note that LDP and L2TP choices are bundled ("ldp-or-l2tp") | |||
because they share a set of common parameters that are further | because they share a set of common parameters that are further | |||
detailed in Sections <xref format="counter" target="ldp"></xref> and | detailed in Sections <xref format="counter" target="ldp"/> and | |||
<xref format="counter" target="l2tp"></xref>.</t> | <xref format="counter" target="l2tp"/>.</t> | |||
<section anchor="bgp" numbered="true" toc="default"> | ||||
<section anchor="bgp" title="BGP"> | <name>BGP</name> | |||
<t>The structure of the BGP-related data nodes is provided in | <t>The structure of the BGP-related data nodes is provided in | |||
<xref target="so-bgp"></xref>.</t> | <xref target="so-bgp" format="default"/>.</t> | |||
<figure anchor="so-bgp"> | ||||
<t><figure align="center" anchor="so-bgp" | <name>Signaling Option Subtree (BGP)</name> | |||
title="Signaling Option Subtree (BGP)"> | <sourcecode type="yangtree"><![CDATA[ ... | |||
<artwork align="center"><![CDATA[ ... | ||||
| +--rw (signaling-option)? | | +--rw (signaling-option)? | |||
| ... | | ... | |||
| +--:(bgp) | | +--:(bgp) | |||
| | +--rw (bgp-type)? | | | +--rw (bgp-type)? | |||
| | +--:(l2vpn-bgp) | | | +--:(l2vpn-bgp) | |||
| | | +--rw ce-range? uint16 | | | | +--rw ce-range? uint16 | |||
| | | +--rw pw-encapsulation-type? | | | | +--rw pw-encapsulation-type? | |||
| | | | identityref | | | | | identityref | |||
| | | +--rw vpls-instance | | | | +--rw vpls-instance | |||
| | | +--rw vpls-edge-id? uint16 | | | | +--rw vpls-edge-id? uint16 | |||
skipping to change at line 1551 ¶ | skipping to change at line 1404 ¶ | |||
| | +--rw nd-proxy {vpn-common:ipv6}? | | | +--rw nd-proxy {vpn-common:ipv6}? | |||
| | | +--rw enable? boolean | | | | +--rw enable? boolean | |||
| | | +--rw nd-suppression? | | | | +--rw nd-suppression? | |||
| | | | boolean | | | | | boolean | |||
| | | +--rw ip-mobility-threshold? | | | | +--rw ip-mobility-threshold? | |||
| | | | uint16 | | | | | uint16 | |||
| | | +--rw duplicate-ip-detection-interval? | | | | +--rw duplicate-ip-detection-interval? | |||
| | | uint16 | | | | uint16 | |||
| | +--rw underlay-multicast? | | | +--rw underlay-multicast? | |||
| | | boolean | | | | boolean | |||
| | +--rw flood-unknown-unicast-supression? | | | +--rw flood-unknown-unicast-suppression? | |||
| | | boolean | | | | boolean | |||
| | +--rw vpws-vlan-aware? boolean | | | +--rw vpws-vlan-aware? boolean | |||
| | +--rw bum-management | | | +--rw bum-management | |||
| | | +--rw discard-broadcast? | | | | +--rw discard-broadcast? | |||
| | | | boolean | | | | | boolean | |||
| | | +--rw discard-unknown-multicast? | | | | +--rw discard-unknown-multicast? | |||
| | | | boolean | | | | | boolean | |||
| | | +--rw discard-unknown-unicast? | | | | +--rw discard-unknown-unicast? | |||
| | | boolean | | | | boolean | |||
| | +--rw pbb | | | +--rw pbb | |||
| | +--rw backbone-src-mac? | | | +--rw backbone-src-mac? | |||
| | yang:mac-address | | | yang:mac-address | |||
| +--:(ldp-or-l2tp) | | +--:(ldp-or-l2tp) | |||
| ...]]></artwork> | | ...]]></sourcecode> | |||
</figure></t> | </figure> | |||
<t>Remote CEs that are entitled to connect to the same VPN should | <t>Remote CEs that are entitled to connect to the same VPN should | |||
fit with the CE range ('ce-range') as discussed in Section 2.2.3 | fit with the CE range ('ce-range') as discussed in <xref target="RFC | |||
of <xref target="RFC6624"></xref>. 'pw-encapsulation-type' is used | 6624" sectionFormat="of" section="2.2.3" format="default"/>. 'pw-encapsulation-t | |||
to control the pseudowire encapsulation type (Section 3 of <xref | ype' is used | |||
target="RFC6624"></xref>). The value of the | to control the pseudowire encapsulation type (<xref target="RFC6624" | |||
'pw-encapsulation-type' are taken from the IANA-maintained | sectionFormat="of" section="3" format="default"/>). The value of the | |||
"iana-bgp-l2-encaps" module (<xref target="iana-bgp"></xref>).</t> | 'pw-encapsulation-type' is taken from the IANA-maintained | |||
"iana-bgp-l2-encaps" module (<xref target="iana-bgp" format="default | ||||
<t>For the specific case of VPLS, the VPLS Edge ID (VE ID, | "/>).</t> | |||
'vpls-edge-id') and a VE ID range ('vpls-edge-id-range') are | <t>For the specific case of VPLS, the VPLS Edge Identifier (VE ID) | |||
provided as per Section 3.2 of <xref target="RFC4761"></xref>. If | ('vpls-edge-id') and a VE ID range ('vpls-edge-id-range') are | |||
different VE IDs are required (e.g., multihoming as per Section | provided as per <xref target="RFC4761" sectionFormat="of" section="3 | |||
3.5 of <xref target="RFC4761"></xref>), these IDs are configured | .2" format="default"/>. If | |||
at the VPN network access level (under 'signaling-option' in <xref | different VE IDs are required (e.g., multihoming as per <xref target | |||
target="sna"></xref>).</t> | ="RFC4761" sectionFormat="of" section="3.5" format="default"/>), these IDs are c | |||
onfigured | ||||
at the VPN network access level (under 'signaling-option' in <xref t | ||||
arget="sna" format="default"/>).</t> | ||||
<t>For EVPN-related L2VPNs, 'service-interface-type' indicates | <t>For EVPN-related L2VPNs, 'service-interface-type' indicates | |||
whether this is a VLAN-based, VLAN bundle, or VLAN-aware bundle | whether this is a VLAN-based, VLAN-aware, or VLAN bundle service | |||
service interface (Section 6 of <xref target="RFC7432"></xref>). | interface (<xref target="RFC7432" sectionFormat="of" section="6" | |||
Moreover, a set of policies can be provided such as MAC address | format="default"/>). Moreover, a set of policies can be provided | |||
learning mode (Section 9 of <xref target="RFC7432"></xref>), | such as the MAC address learning mode (<xref target="RFC7432" | |||
ingress replication (Section 12.1 of <xref | sectionFormat="of" section="9" format="default"/>), ingress | |||
target="RFC7432"></xref>), Address Resolution Protocol (ARP) and | replication (<xref target="RFC7432" sectionFormat="of" | |||
Nighbor Discovery (ND) proxy (Section 10 of <xref | section="12.1" format="default"/>), the Address Resolution | |||
target="RFC7432"></xref>), processing of Broadcast, unknown | Protocol (ARP) and Neighbor Discovery (ND) proxy (<xref | |||
unicast, or multicast (BUM) (Section 12 of <xref | target="RFC7432" sectionFormat="of" section="10" | |||
target="RFC7432"></xref>), etc.</t> | format="default"/>), the processing of Broadcast, Unknown Unicast, | |||
or Multicast (BUM) (<xref target="RFC7432" sectionFormat="of" | ||||
section="12" format="default"/>), etc.</t> | ||||
</section> | </section> | |||
<section anchor="ldp" numbered="true" toc="default"> | ||||
<section anchor="ldp" title="LDP"> | <name>LDP</name> | |||
<t>The model supports the configuration of the parameters that are | <t>The L2NM supports the configuration of the parameters that are | |||
discussed in Section 6 of <xref target="RFC4762"></xref>. Such | discussed in <xref target="RFC4762" sectionFormat="of" section="6" f | |||
ormat="default"/>. Such | ||||
parameters include an Attachment Group Identifier (AGI) (a.k.a., | parameters include an Attachment Group Identifier (AGI) (a.k.a., | |||
VPLS-id), a Source Attachment Individual Identifier (SAII), a list | VPLS-id), a Source Attachment Individual Identifier (SAII), a list | |||
of peers that are associated with a Target Attachment Individual | of peers that are associated with a Target Attachment Individual | |||
Identifier (TAII), a pseudowire type, and a pseudowire description | Identifier (TAII), a pseudowire type, and a pseudowire description | |||
(<xref target="so-ldp"></xref>). Unlike BGP, only Ethernet and | (<xref target="so-ldp" format="default"/>). Unlike BGP, only Etherne t and | |||
Ethernet tagged mode are supported. The AGI, SAII, and TAII are | Ethernet tagged mode are supported. The AGI, SAII, and TAII are | |||
encoded following the types defined in Section 3.4 of <xref | encoded following the types defined in <xref target="RFC4446" sectio | |||
target="RFC4446"></xref>.</t> | nFormat="of" section="3.4" format="default"/>.</t> | |||
<figure anchor="so-ldp"> | ||||
<t><figure align="right" anchor="so-ldp" | <name>Signaling Option Subtree (LDP)</name> | |||
title="Signaling Option Subtree (LDP)"> | <sourcecode type="yangtree"><![CDATA[ ... | |||
<artwork align="center"><![CDATA[ ... | ||||
| +--rw (signaling-option)? | | +--rw (signaling-option)? | |||
| ... | | ... | |||
| +--:(bgp) | | +--:(bgp) | |||
| | ... | | | ... | |||
| +--:(ldp-or-l2tp) | | +--:(ldp-or-l2tp) | |||
| +--rw ldp-or-l2tp | | +--rw ldp-or-l2tp | |||
| +--rw agi? | | +--rw agi? | |||
| | rt-types:route-distinguisher | | | rt-types:route-distinguisher | |||
| +--rw saii? uint32 | | +--rw saii? uint32 | |||
| +--rw remote-targets* [taii] | | +--rw remote-targets* [taii] | |||
skipping to change at line 1643 ¶ | skipping to change at line 1490 ¶ | |||
| | | +--rw peer-addr | | | | +--rw peer-addr | |||
| | | | inet:ip-address | | | | | inet:ip-address | |||
| | | +--rw vc-id string | | | | +--rw vc-id string | |||
| | | +--rw pw-priority? uint32 | | | | +--rw pw-priority? uint32 | |||
| | +--rw qinq | | | +--rw qinq | |||
| | +--rw s-tag dot1q-types:vlanid | | | +--rw s-tag dot1q-types:vlanid | |||
| | +--rw c-tag dot1q-types:vlanid | | | +--rw c-tag dot1q-types:vlanid | |||
| +--:(l2tp) | | +--:(l2tp) | |||
| ... | | ... | |||
... | ... | |||
]]></artwork> | ]]></sourcecode> | |||
</figure></t> | </figure> | |||
</section> | </section> | |||
<section anchor="l2tp" numbered="true" toc="default"> | ||||
<section anchor="l2tp" title="L2TP"> | <name>L2TP</name> | |||
<t>The model supports the configuration of the parameters that are | <t>The L2NM supports the configuration of the parameters that are | |||
discussed in Section 4 of <xref target="RFC4667"></xref>. Such | discussed in <xref target="RFC4667" sectionFormat="of" section="4" f | |||
ormat="default"/>. Such | ||||
parameters include a Router ID that is used to uniquely identify a | parameters include a Router ID that is used to uniquely identify a | |||
PE, a pseudowire type, an AGI, an SAII, and a list of peers that | PE, a pseudowire type, an AGI, an SAII, and a list of peers that | |||
are associated with a TAII (<xref target="so-l2tp"></xref>). The | are associated with a TAII (<xref target="so-l2tp" format="default"/ >). The | |||
pseudowire type ('pseudowire-type') value is taken from the | pseudowire type ('pseudowire-type') value is taken from the | |||
IANA-maintained "iana-pseudowire-types" module (<xref | IANA-maintained "iana-pseudowire-types" module (<xref target="iana-p | |||
target="iana-pw"></xref>).</t> | w" format="default"/>).</t> | |||
<figure anchor="so-l2tp"> | ||||
<t><figure align="center" anchor="so-l2tp" | <name>Signaling Option Subtree (L2TP)</name> | |||
title="Signaling Option Subtree (L2TP)"> | <sourcecode type="yangtree"><![CDATA[ ... | |||
<artwork align="center"><![CDATA[ ... | ||||
| +--rw (signaling-option)? | | +--rw (signaling-option)? | |||
| ... | | ... | |||
| +--:(bgp) | | +--:(bgp) | |||
| | ... | | | ... | |||
| +--:(ldp-or-l2tp) | | +--:(ldp-or-l2tp) | |||
| +--rw ldp-or-l2tp | | +--rw ldp-or-l2tp | |||
| +--rw agi? | | +--rw agi? | |||
| | rt-types:route-distinguisher | | | rt-types:route-distinguisher | |||
| +--rw saii? uint32 | | +--rw saii? uint32 | |||
| +--rw remote-targets* [taii] | | +--rw remote-targets* [taii] | |||
| | +--rw taii uint32 | | | +--rw taii uint32 | |||
| | +--rw peer-addr inet:ip-address | | | +--rw peer-addr inet:ip-address | |||
| +--rw (ldp-or-l2tp)? | | +--rw (ldp-or-l2tp)? | |||
| +--:(ldp) | | +--:(ldp) | |||
| | ... | | | ... | |||
| +--:(l2tp) | | +--:(l2tp) | |||
| +--rw router-id? | | +--rw router-id? | |||
| | rt-types:router-id | | | rt-types:router-id | |||
| +--rw pseudowire-type? | | +--rw pseudowire-type? | |||
| identityref | | identityref | |||
...]]></artwork> | ...]]></sourcecode> | |||
</figure></t> | </figure> | |||
</section> | </section> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="sna" numbered="true" toc="default"> | ||||
<section anchor="sna" title="VPN Network Accesses"> | <name>VPN Network Accesses</name> | |||
<t>A 'vpn-network-access' (<xref | <t>A 'vpn-network-access' (<xref target="vpn_network_access_tree" format | |||
target="vpn_network_access_tree"></xref>) represents an entry point to | ="default"/>) represents an entry point to | |||
a VPN service. In other words, this container encloses the parameters | a VPN service. In other words, this container encloses the parameters | |||
that describe the access information for the traffic that belongs to a | that describe the access information for the traffic that belongs to a | |||
particular L2VPN.</t> | particular L2VPN.</t> | |||
<t>A 'vpn-network-access' includes information such as the connection | <t>A 'vpn-network-access' includes information such as the connection | |||
on which the access is defined, the specific Layer 2 service | on which the access is defined, the specific Layer 2 service | |||
requirements, etc.</t> | requirements, etc.</t> | |||
<figure anchor="vpn_network_access_tree"> | ||||
<t><figure align="right" anchor="vpn_network_access_tree" | <name>VPN Network Access Subtree</name> | |||
title="VPN Network Access Subtree"> | <sourcecode type="yangtree"><![CDATA[ ... | |||
<artwork align="center"><![CDATA[ ... | ||||
+--rw vpn-nodes | +--rw vpn-nodes | |||
+--rw vpn-node* [vpn-node-id] | +--rw vpn-node* [vpn-node-id] | |||
... | ... | |||
+--rw vpn-network-accesses | +--rw vpn-network-accesses | |||
+--rw vpn-network-access* [id] | +--rw vpn-network-access* [id] | |||
+--rw id vpn-common:vpn-id | +--rw id vpn-common:vpn-id | |||
+--rw description? string | +--rw description? string | |||
+--rw interface-id? string | +--rw interface-id? string | |||
+--rw active-vpn-node-profile? leafref | +--rw active-vpn-node-profile? leafref | |||
+--rw status | +--rw status | |||
| ... | | ... | |||
+--rw connection | +--rw connection | |||
| ... | | ... | |||
+--rw (signaling-option)? | +--rw (signaling-option)? | |||
| +--:(bgp) | | +--:(bgp) | |||
| +--rw (bgp-type)? | | +--rw (bgp-type)? | |||
skipping to change at line 1733 ¶ | skipping to change at line 1576 ¶ | |||
| +--rw vpws-service-instance | | +--rw vpws-service-instance | |||
| ... | | ... | |||
+--rw group* [group-id] | +--rw group* [group-id] | |||
| +--rw group-id string | | +--rw group-id string | |||
| +--rw precedence? identityref | | +--rw precedence? identityref | |||
| +--rw ethernet-segment-identifier? | | +--rw ethernet-segment-identifier? | |||
| l2vpn-es:es-ref | | l2vpn-es:es-ref | |||
+--rw ethernet-service-oam | +--rw ethernet-service-oam | |||
| ... | | ... | |||
+--rw service | +--rw service | |||
...]]></artwork> | ...]]></sourcecode> | |||
</figure></t> | </figure> | |||
<t>The VPN network access is comprised of the following:</t> | ||||
<t>The VPN network access comprises:</t> | <dl newline="false" spacing="normal"> | |||
<dt>'id':</dt> | ||||
<t><list style="hanging"> | <dd>Includes an identifier of the VPN network | |||
<t hangText="'id':">Includes an identifier of the VPN network | access.</dd> | |||
access.</t> | <dt>'description':</dt> | |||
<dd>Includes a textual description of the | ||||
<t hangText="'description':">Includes a textual description of the | VPN network access.</dd> | |||
VPN network access.</t> | <dt>'interface-id':</dt> | |||
<dd>Indicates the interface on which the | ||||
<t hangText="'interface-id':">Indicates the interface on which the | VPN network access is bound.</dd> | |||
VPN network access is bound.</t> | <dt>'active-vpn-node-profile':</dt> | |||
<dd>Provides a pointer to an | ||||
<t hangText="'active-vpn-node-profile':">Provides a pointer to an | ||||
active 'global-parameters-profile' at the VPN node level. | active 'global-parameters-profile' at the VPN node level. | |||
Referencing an active 'global-parameters-profile' implies that all | Referencing an active 'global-parameters-profile' implies that all | |||
associated data nodes will be inherited by the VPN network access. | associated data nodes will be inherited by the VPN network access. | |||
However, some of the inherited data nodes (e.g., ACL policies) can | However, some of the inherited data nodes (e.g., ACL policies) can | |||
be overridden at the VPN network access level. In such case, | be overridden at the VPN network access level. In such case, | |||
adjusted values take precedence over inherited values.</t> | adjusted values take precedence over inherited values.</dd> | |||
<dt>'status':</dt> | ||||
<t hangText="'status':">Indicates the administrative and | <dd>Indicates the administrative and | |||
operational status of the VPN network access.</t> | operational status of the VPN network access.</dd> | |||
<dt>'connection':</dt> | ||||
<t hangText="'connection':">Represents and groups the set of Layer | <dd>Represents and groups the set of Layer | |||
2 connectivity from where the traffic of the L2VPN in a particular | 2 connectivity from where the traffic of the L2VPN in a particular | |||
VPN Network access is coming. See <xref | VPN network access is coming. See <xref target="connection" format=" | |||
target="connection"></xref>.</t> | default"/>.</dd> | |||
<dt>'signaling-option':</dt> | ||||
<t hangText="'signaling-option':">Indicates a set of signaling | <dd> | |||
<t>Indicates a set of signaling | ||||
options that are specific to a given VPN network access, e.g., a | options that are specific to a given VPN network access, e.g., a | |||
CE ID ('ce-id' identifying the CE within the VPN) and a remote CE | CE ID ('ce-id' identifying the CE within the VPN) and a remote CE | |||
ID as discussed in Section 2.2.2 of <xref | ID as discussed in <xref target="RFC6624" sectionFormat="of" section | |||
target="RFC6624"></xref>. <vspace blankLines="1" />It can also | ="2.2.2" format="default"/>. </t> | |||
<t>It can also | ||||
include a set of data nodes that are required for the | include a set of data nodes that are required for the | |||
configuration of a VPWS-EVPN <xref target="RFC8214"></xref>. See | configuration of a VPWS-EVPN <xref target="RFC8214" format="default" | |||
<xref target="vsi"></xref>.</t> | />. See | |||
<xref target="vsi" format="default"/>.</t> | ||||
<t hangText="'group':">Is used for grouping VPN network accesses | </dd> | |||
<dt>'group':</dt> | ||||
<dd>Is used for grouping VPN network accesses | ||||
by assigning the same identifier to these accesses. The precedence | by assigning the same identifier to these accesses. The precedence | |||
attribute is used to differentiate the primary and secondary | attribute is used to differentiate the primary and secondary | |||
accesses for a service with multiple accesses. An example to | accesses for a service with multiple accesses. An example to | |||
illustrate the use of this container for redundancy purposes is | illustrate the use of this container for redundancy purposes is | |||
provided in <xref target="prec-example"></xref>. This container is | provided in <xref target="prec-example" format="default"/>. This con tainer is | |||
also used to identify the link of an ES by allocating the same | also used to identify the link of an ES by allocating the same | |||
ESI. An example to illustrate this functionality is provided in | ESI. An example to illustrate this functionality is provided in | |||
Appendices <xref format="counter" target="evpn-vpws-app"></xref> | Appendices <xref format="counter" target="evpn-vpws-app"/> | |||
and <xref format="counter" target="auto-ex"></xref>.</t> | and <xref format="counter" target="auto-ex"/>.</dd> | |||
<dt>'ethernet-service-oam':</dt> | ||||
<t hangText="'ethernet-service-oam':">Carries information about | <dd>Carries information about | |||
the service OAM. See <xref target="oam"></xref>.</t> | the service OAM. See <xref target="oam" format="default"/>.</dd> | |||
<dt>'service':</dt> | ||||
<t hangText="'service':">Specifies the service parameters (e.g., | <dd>Specifies the service parameters (e.g., | |||
QoS, multicast) to apply for a given VPN network access. See <xref | QoS and multicast) to apply for a given VPN network access. See <xre | |||
target="service"></xref>.</t> | f target="service" format="default"/>.</dd> | |||
</list></t> | </dl> | |||
<section anchor="connection" numbered="true" toc="default"> | ||||
<name>Connection</name> | ||||
<section anchor="connection" title="Connection"> | <t>The 'connection' container (<xref target="connection_tree" format=" | |||
<t>The 'connection' container (<xref | default"/>) is used to configure the relevant | |||
target="connection_tree"></xref>) is used to configure the relevant | ||||
properties of the interface to which the L2VPN instance is attached | properties of the interface to which the L2VPN instance is attached | |||
to (e.g., encapsulation type, Link Aggregation Group (LAG) | to (e.g., encapsulation type, Link Aggregation Group (LAG) | |||
interfaces, split-horizon). The L2NM supports tag manipulation | interfaces, and split-horizon). The L2NM supports tag manipulation | |||
operations (e.g., tag rewrite).</t> | operations (e.g., tag rewrite).</t> | |||
<t>Note that the 'connection' container does not include the | <t>Note that the 'connection' container does not include the | |||
physical-specific configuration as this is assumed to be directly | physical-specific configuration as this is assumed to be directly | |||
handled using device modules (e.g., interfaces module). Moreover, | handled using device modules (e.g., an interfaces module). Moreover, | |||
this design is also meant to avoid manipulated global parameters at | this design is also meant to avoid manipulated global parameters at | |||
the service level and lower the risk of impacting other services | the service level and lower the risk of impacting other services | |||
sharing the same physical interface.</t> | sharing the same physical interface.</t> | |||
<t>A reference to the bearer is maintained to allow keeping the link | <t>A reference to the bearer is maintained to allow keeping the link | |||
between the L2SM and the L2NM when both data models are used in a | between the L2SM and the L2NM when both data models are used in a | |||
given deployment.</t> | given deployment.</t> | |||
<t>Some consistency checks should be ensured by implementations | <t>Some consistency checks should be ensured by implementations | |||
(typically, network controllers) for LAG interface as the same | (typically, network controllers) for LAG interfaces, as the same | |||
information (e.g., LACP system-id) should be provided to the | information (e.g., LACP system-id) should be provided to the | |||
involved nodes.</t> | involved nodes.</t> | |||
<t>The L2NM inherits the 'member-link-list' structure from the L2SM | <t>The L2NM inherits the 'member-link-list' structure from the L2SM | |||
(including indication of OAM 802.3ah support <xref | (including indication of OAM 802.3ah support <xref target="IEEE-802-3a | |||
target="IEEE-802-3ah"></xref>).</t> | h" format="default"/>).</t> | |||
<figure align="right" anchor="connection_tree" | <figure anchor="connection_tree"> | |||
title="Connection Subtree"> | <name>Connection Subtree</name> | |||
<artwork align="center"><![CDATA[ ... | <sourcecode type="yangtree"><![CDATA[ ... | |||
+--rw vpn-nodes | +--rw vpn-nodes | |||
+--rw vpn-node* [vpn-node-id] | +--rw vpn-node* [vpn-node-id] | |||
... | ... | |||
+--rw vpn-network-accesses | +--rw vpn-network-accesses | |||
+--rw vpn-network-access* [id] | +--rw vpn-network-access* [id] | |||
... | ... | |||
+--rw connection | +--rw connection | |||
| +--rw l2-termination-point? | | +--rw l2-termination-point? | |||
| | string | | | string | |||
| +--rw local-bridge-reference? | | +--rw local-bridge-reference? | |||
skipping to change at line 1907 ¶ | skipping to change at line 1744 ¶ | |||
| | | +--rw speed? uint32 | | | | +--rw speed? uint32 | |||
| | | +--rw mode? identityref | | | | +--rw mode? identityref | |||
| | | +--rw link-mtu? uint32 | | | | +--rw link-mtu? uint32 | |||
| | | +--rw oam-802.3ah-link | | | | +--rw oam-802.3ah-link | |||
| | | | {oam-3ah}? | | | | | {oam-3ah}? | |||
| | | +--rw enable? boolean | | | | +--rw enable? boolean | |||
| | +--rw flow-control? boolean | | | +--rw flow-control? boolean | |||
| | +--rw lldp? boolean | | | +--rw lldp? boolean | |||
| +--rw split-horizon | | +--rw split-horizon | |||
| +--rw group-name? string | | +--rw group-name? string | |||
... ]]></artwork> | ... ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="vsi" numbered="true" toc="default"> | ||||
<section anchor="vsi" title="EVPN-VPWS Service Instance"> | <name>EVPN-VPWS Service Instance</name> | |||
<t>The 'vpws-service-instance' provides the local and remote VPWS | <t>The 'vpws-service-instance' provides the local and remote VPWS | |||
Service Instance (VSI) <xref target="RFC8214"></xref>. This | Service Instance (VSI) <xref target="RFC8214" format="default"/>. This | |||
container is only present when the 'vpn-type' is VPWS-EVPN. As shown | container is only present when the 'vpn-type' is VPWS-EVPN. As shown | |||
in <xref target="vsi-tree"></xref>, the VSIs can be configured by a | in <xref target="vsi-tree" format="default"/>, the VSIs can be configu red by a | |||
VPN service provider or auto-generated.</t> | VPN service provider or auto-generated.</t> | |||
<t>An example to illustrate the use of the L2NM to configure | <t>An example to illustrate the use of the L2NM to configure | |||
VPWS-EVPN instances is provided in <xref | VPWS-EVPN instances is provided in <xref target="evpn-vpws-app" format | |||
target="evpn-vpws-app"></xref>.</t> | ="default"/>.</t> | |||
<figure anchor="vsi-tree"> | ||||
<t><figure align="left" anchor="vsi-tree" | <name>EVPN-VPWS Service Instance Subtree</name> | |||
title="EVPN-VPWS Service Instance Subtree"> | <sourcecode type="yangtree"><![CDATA[... | |||
<artwork><![CDATA[... | ||||
+--rw vpn-nodes | +--rw vpn-nodes | |||
+--rw vpn-node* [vpn-node-id] | +--rw vpn-node* [vpn-node-id] | |||
... | ... | |||
+--rw vpn-network-accesses | +--rw vpn-network-accesses | |||
+--rw vpn-network-access* [id] | +--rw vpn-network-access* [id] | |||
... | ... | |||
+--rw (signaling-option)? | +--rw (signaling-option)? | |||
| +--:(bgp) | | +--:(bgp) | |||
| +--rw (bgp-type)? | | +--rw (bgp-type)? | |||
| +--:(l2vpn-bgp) | | +--:(l2vpn-bgp) | |||
skipping to change at line 1966 ¶ | skipping to change at line 1800 ¶ | |||
| +--:(auto-assigned) | | +--:(auto-assigned) | |||
| +--rw remote-vsi-auto | | +--rw remote-vsi-auto | |||
| +--rw (auto-mode)? | | +--rw (auto-mode)? | |||
| | +--:(from-pool) | | | +--:(from-pool) | |||
| | | +--rw vsi-pool-name? | | | | +--rw vsi-pool-name? | |||
| | | string | | | | string | |||
| | +--:(full-auto) | | | +--:(full-auto) | |||
| | +--rw auto? empty | | | +--rw auto? empty | |||
| +--ro auto-remote-vsi? uint32 | | +--ro auto-remote-vsi? uint32 | |||
... | ... | |||
]]></artwork> | ]]></sourcecode> | |||
</figure></t> | </figure> | |||
</section> | </section> | |||
<section anchor="oam" numbered="true" toc="default"> | ||||
<section anchor="oam" title="Ethernet OAM"> | <name>Ethernet OAM</name> | |||
<t>Ethernet OAM refers to both <xref target="IEEE-802-1ag"></xref> | <t>Ethernet OAM refers to both <xref target="IEEE-802-1ag" format="def | |||
and <xref target="ITU-T-Y-1731"></xref>.</t> | ault"/> | |||
and <xref target="ITU-T-Y-1731" format="default"/>.</t> | ||||
<t>As shown in <xref target="oamt"></xref>, the L2NM inherits the | <t>As shown in <xref target="oamt" format="default"/>, the L2NM inheri | |||
same structure as in Section 5.3.2.2.6 of <xref | ts the | |||
target="RFC8466"></xref> for OAM matters.</t> | same structure as in <xref target="RFC8466" sectionFormat="of" section | |||
="5.3.2.2.6" format="default"/> for OAM matters.</t> | ||||
<t><figure align="center" anchor="oamt" title="OAM Subtree"> | <figure anchor="oamt"> | |||
<artwork align="center"><![CDATA[ +--rw l2vpn-ntw | <name>OAM Subtree</name> | |||
<sourcecode type="yangtree"><![CDATA[ +--rw l2vpn-ntw | ||||
+--rw vpn-profiles | +--rw vpn-profiles | |||
| ... | | ... | |||
+--rw vpn-services | +--rw vpn-services | |||
+--rw vpn-service* [vpn-id] | +--rw vpn-service* [vpn-id] | |||
... | ... | |||
+--rw vpn-nodes | +--rw vpn-nodes | |||
+--rw vpn-node* [vpn-node-id] | +--rw vpn-node* [vpn-node-id] | |||
... | ... | |||
+--rw vpn-network-accesses | +--rw vpn-network-accesses | |||
+--rw vpn-network-access* [id] | +--rw vpn-network-access* [id] | |||
skipping to change at line 2028 ¶ | skipping to change at line 1860 ¶ | |||
| | ccm-priority-type | | | ccm-priority-type | |||
| +--rw y-1731* [maid] | | +--rw y-1731* [maid] | |||
| +--rw maid string | | +--rw maid string | |||
| +--rw mep-id? uint32 | | +--rw mep-id? uint32 | |||
| +--rw pm-type? identityref | | +--rw pm-type? identityref | |||
| +--rw remote-mep-id? uint32 | | +--rw remote-mep-id? uint32 | |||
| +--rw message-period? uint32 | | +--rw message-period? uint32 | |||
| +--rw measurement-interval? uint32 | | +--rw measurement-interval? uint32 | |||
| +--rw cos? uint32 | | +--rw cos? uint32 | |||
| +--rw loss-measurement? boolean | | +--rw loss-measurement? boolean | |||
| +--rw synthethic-loss-measurement? | | +--rw synthetic-loss-measurement? | |||
| | boolean | | | boolean | |||
| +--rw delay-measurement | | +--rw delay-measurement | |||
| | +--rw enable-dm? boolean | | | +--rw enable-dm? boolean | |||
| | +--rw two-way? boolean | | | +--rw two-way? boolean | |||
| +--rw frame-size? uint32 | | +--rw frame-size? uint32 | |||
| +--rw session-type? enumeration | | +--rw session-type? enumeration | |||
...]]></artwork> | ...]]></sourcecode> | |||
</figure></t> | </figure> | |||
</section> | </section> | |||
<section anchor="service" numbered="true" toc="default"> | ||||
<section anchor="service" title="Services"> | <name>Services</name> | |||
<t>The 'service' container (<xref target="service_tree"></xref>) | <t>The 'service' container (<xref target="service_tree" format="defaul | |||
provides a set of service-specific configuration such as Quality of | t"/>) | |||
Service (QoS).</t> | provides a set of service-specific configurations such as QoS.</t> | |||
<figure anchor="service_tree"> | ||||
<t><figure align="center" anchor="service_tree" | <name>Service Overall Subtree</name> | |||
title="Service Overall Subtree"> | <sourcecode type="yangtree"><![CDATA[ +--rw l2vpn-ntw | |||
<artwork align="center"><![CDATA[ +--rw l2vpn-ntw | ||||
+--rw vpn-profiles | +--rw vpn-profiles | |||
| ... | | ... | |||
+--rw vpn-services | +--rw vpn-services | |||
+--rw vpn-service* [vpn-id] | +--rw vpn-service* [vpn-id] | |||
... | ... | |||
+--rw vpn-nodes | +--rw vpn-nodes | |||
+--rw vpn-node* [vpn-node-id] | +--rw vpn-node* [vpn-node-id] | |||
... | ... | |||
+--rw vpn-network-accesses | +--rw vpn-network-accesses | |||
+--rw vpn-network-access* [id] | +--rw vpn-network-access* [id] | |||
skipping to change at line 2071 ¶ | skipping to change at line 1901 ¶ | |||
| {vpn-common:inbound-bw}? | | {vpn-common:inbound-bw}? | |||
| ... | | ... | |||
+--rw svc-ce-to-pe-bandwidth | +--rw svc-ce-to-pe-bandwidth | |||
| {vpn-common:outbound-bw}? | | {vpn-common:outbound-bw}? | |||
| ... | | ... | |||
+--rw qos {vpn-common:qos}? | +--rw qos {vpn-common:qos}? | |||
| ... | | ... | |||
+--rw mac-policies | +--rw mac-policies | |||
| ... | | ... | |||
+--rw broadcast-unknown-unicast-multicast | +--rw broadcast-unknown-unicast-multicast | |||
... ]]></artwork> | ... ]]></sourcecode> | |||
</figure>The description of the service data nodes is as | </figure> | |||
<t>The description of the service data nodes is as | ||||
follows:</t> | follows:</t> | |||
<dl newline="false" spacing="normal"> | ||||
<dt>'mtu':</dt> | ||||
<dd>Specifies the Layer 2 MTU, in bytes, for | ||||
the VPN network access.</dd> | ||||
<dt>'svc-pe-to-ce-bandwidth' and 'svc-ce-to-pe-bandwidth':</dt> | ||||
<dd> | ||||
<t><list style="hanging"> | <t>Specify | |||
<t hangText="'mtu':">Specifies the Layer 2 MTU, in bytes, for | the service bandwidth for the L2VPN service. </t> | |||
the VPN network access.</t> | <t>'svc-pe-to-ce-bandwidth' indicates the inbound | |||
<t | ||||
hangText="'svc-pe-to-ce-bandwidth' and 'svc-ce-to-pe-bandwidth':"> | ||||
Specify | ||||
the service bandwidth for the L2VPN service. <vspace | ||||
blankLines="1" />'svc-pe-to-ce-bandwidth' indicates the inbound | ||||
bandwidth of the connection (i.e., download bandwidth from the | bandwidth of the connection (i.e., download bandwidth from the | |||
service provider to the site). <vspace | service provider to the site). </t> | |||
blankLines="1" />'svc-ce-to-pe-bandwidth' indicates the outbound | <t>'svc-ce-to-pe-bandwidth' indicates the outbound | |||
bandwidth of the connection (i.e., upload bandwidth from the | bandwidth of the connection (i.e., upload bandwidth from the | |||
site to the service provider). <vspace | site to the service provider). </t> | |||
blankLines="1" />'svc-pe-to-ce-bandwidth' and | <t>'svc-pe-to-ce-bandwidth' and | |||
'svc-ce-to-pe-bandwidth' can be represented using the Committed | 'svc-ce-to-pe-bandwidth' can be represented using the Committed | |||
Information Rate (CIR), the Excess Information Rate (EIR), or | Information Rate (CIR), the Excess Information Rate (EIR), or | |||
the Peak Information Rate (PIR). <vspace blankLines="1" />As | the Peak Information Rate (PIR). </t> | |||
shown in <xref target="bwtree"></xref>, the structure of service | <t>As | |||
bandwidth data nodes is inherited from the L2SM <xref | shown in <xref target="bwtree" format="default"/>, the structure o | |||
target="RFC8466"></xref>. The following types, defined in <xref | f service | |||
target="RFC9181"></xref>, can be used to indicate the bandwidth | bandwidth data nodes is inherited from the L2SM <xref target="RFC8 | |||
type: <list style="hanging"> | 466" format="default"/>. The following types, defined in <xref target="RFC9181" | |||
<t hangText="'bw-per-cos':">The bandwidth is per Class of | format="default"/>, can be used to indicate the bandwidth | |||
Service (CoS).</t> | type: </t> | |||
<dl newline="false" spacing="normal"> | ||||
<t hangText="'bw-per-port':">The bandwidth is per VPN | <dt>'bw-per-cos':</dt> | |||
network access.</t> | <dd>The bandwidth is per CoS.</dd> | |||
<dt>'bw-per-port':</dt> | ||||
<t hangText="'bw-per-site':">The bandwidth is to all VPN | <dd>The bandwidth is per VPN | |||
network accesses that belong to the same site.</t> | network access.</dd> | |||
<dt>'bw-per-site':</dt> | ||||
<t hangText="'bw-per-service':">The bandwidth is per L2VPN | <dd>The bandwidth is to all VPN | |||
service.</t> | network accesses that belong to the same site.</dd> | |||
</list><vspace blankLines="1" /><figure align="center" | <dt>'bw-per-service':</dt> | |||
anchor="bwtree" title="Service Bandwidth Subtree"> | <dd>The bandwidth is per L2VPN | |||
<artwork align="center"><![CDATA[ +--rw | service.</dd> | |||
service | </dl> | |||
<figure anchor="bwtree"> | ||||
<name>Service Bandwidth Subtree</name> | ||||
<sourcecode type="yangtree"><![CDATA[ +--r | ||||
w service | ||||
... | ... | |||
+--rw svc-pe-to-ce-bandwidth | +--rw svc-pe-to-ce-bandwidth | |||
| {vpn-common:inbound-bw}? | | {vpn-common:inbound-bw}? | |||
| +--rw pe-to-ce-bandwidth* [bw-type] | | +--rw pe-to-ce-bandwidth* [bw-type] | |||
| +--rw bw-type identityref | | +--rw bw-type identityref | |||
| +--rw (type)? | | +--rw (type)? | |||
| +--:(per-cos) | | +--:(per-cos) | |||
| | +--rw cos* [cos-id] | | | +--rw cos* [cos-id] | |||
| | +--rw cos-id uint8 | | | +--rw cos-id uint8 | |||
| | +--rw cir? uint64 | | | +--rw cir? uint64 | |||
skipping to change at line 2155 ¶ | skipping to change at line 1988 ¶ | |||
| | +--rw pir? uint64 | | | +--rw pir? uint64 | |||
| | +--rw pbs? uint64 | | | +--rw pbs? uint64 | |||
| +--:(other) | | +--:(other) | |||
| +--rw cir? uint64 | | +--rw cir? uint64 | |||
| +--rw cbs? uint64 | | +--rw cbs? uint64 | |||
| +--rw eir? uint64 | | +--rw eir? uint64 | |||
| +--rw ebs? uint64 | | +--rw ebs? uint64 | |||
| +--rw pir? uint64 | | +--rw pir? uint64 | |||
| +--rw pbs? uint64 | | +--rw pbs? uint64 | |||
... | ... | |||
]]></sourcecode> | ||||
]]></artwork> | </figure> | |||
</figure></t> | </dd> | |||
<dt>'qos':</dt> | ||||
<t hangText="'qos':">Is used to define a set of QoS policies to | <dd> | |||
apply on a given VPN network access (<xref | <t>Is used to define a set of QoS policies to | |||
target="qos-tree"></xref>). The QoS classification can be based | apply on a given VPN network access (<xref target="qos-tree" forma | |||
t="default"/>). The QoS classification can be based | ||||
on many criteria such as source MAC address, destination MAC | on many criteria such as source MAC address, destination MAC | |||
address, etc. See also Section 5.10.2.1 of <xref | address, etc. See also <xref target="RFC8466" sectionFormat="of" se | |||
target="RFC8466"></xref> for more discussion of QoS | ction="5.10.2.1" format="default"/> for more discussion of QoS | |||
classification including the use of color types.<figure | classification including the use of color types.</t> | |||
align="center" anchor="qos-tree" title="QoS Subtree"> | <figure anchor="qos-tree"> | |||
<artwork align="center"><![CDATA[ +--rw | <name>QoS Subtree</name> | |||
service | <sourcecode type="yangtree"><![CDATA[ | |||
... | +--rw service | |||
+--rw qos {vpn-common:qos}? | ... | |||
| +--rw qos-classification-policy | +--rw qos {vpn-common:qos}? | |||
| | +--rw rule* [id] | | +--rw qos-classification-policy | |||
| | +--rw id string | | | +--rw rule* [id] | |||
| | +--rw (match-type)? | | | +--rw id string | |||
| | | +--:(match-flow) | | | +--rw (match-type)? | |||
| | | | +--rw match-flow | | | | +--:(match-flow) | |||
| | | | +--rw dscp? inet:dscp | | | | | +--rw match-flow | |||
| | | | +--rw dot1q? uint16 | | | | | +--rw dscp? inet:dscp | |||
| | | | +--rw pcp? uint8 | | | | | +--rw dot1q? uint16 | |||
| | | | +--rw src-mac-address? | | | | | +--rw pcp? uint8 | |||
| | | | | yang:mac-address | | | | | +--rw src-mac-address? | |||
| | | | +--rw dst-mac-address? | | | | | | yang:mac-address | |||
| | | | | yang:mac-address | | | | | +--rw dst-mac-address? | |||
| | | | +--rw color-type? | | | | | | yang:mac-address | |||
| | | | | identityref | | | | | +--rw color-type? | |||
| | | | +--rw any? empty | | | | | | identityref | |||
| | | +--:(match-application) | | | | | +--rw any? empty | |||
| | | +--rw match-application? | | | | +--:(match-application) | |||
| | | identityref | | | | +--rw match-application? | |||
| | +--rw target-class-id? string | | | | identityref | |||
| +--rw qos-profile | | | +--rw target-class-id? string | |||
| +--rw qos-profile* [profile] | | +--rw qos-profile | |||
| +--rw profile leafref | | +--rw qos-profile* [profile] | |||
| +--rw direction? identityref | | +--rw profile leafref | |||
... ]]></artwork> | | +--rw direction? identityref | |||
</figure></t> | ... | |||
]]></sourcecode> | ||||
<t hangText="'mac-policies':">Lists a set of MAC-related | </figure> | |||
policies such as MAC ACLs. Similar to <xref | </dd> | |||
target="RFC8519"></xref>, an ACL match can be based upon source | <dt>'mac-policies':</dt> | |||
<dd> | ||||
<t>Lists a set of MAC-related | ||||
policies such as MAC ACLs. Similar to <xref target="RFC8519" forma | ||||
t="default"/>, an ACL match can be based upon source | ||||
MAC address, source MAC address mask, destination MAC address, | MAC address, source MAC address mask, destination MAC address, | |||
destination MAC address mask, or a combination thereof.<vspace | destination MAC address mask, or a combination thereof.</t> | |||
blankLines="1" />A data frame that matches an ACL can be | <t>A data frame that matches an ACL can be | |||
dropped, flooded, or trigger an alarm. A rate-limit policy can | dropped, be flooded, or trigger an alarm. A rate-limit policy can | |||
be defined for handling frames that match an ACL entry with | be defined for handling frames that match an ACL entry with | |||
'flood' action. <vspace blankLines="1" />When | 'flood' action. </t> | |||
<t>When | ||||
'mac-loop-prevention' or 'mac-addr-limit' data nodes are | 'mac-loop-prevention' or 'mac-addr-limit' data nodes are | |||
provided, they take precedence over the ones inlcuded in the | provided, they take precedence over the ones included in the | |||
'global-parameters-profile' at the VPN service or VPN node | 'global-parameters-profile' at the VPN service or VPN node | |||
levels.<figure align="center" anchor="mac-policies-tree" | levels.</t> | |||
title="MAC Policies Subtree"> | <figure anchor="mac-policies-tree"> | |||
<artwork align="center"><![CDATA[ +--rw | <name>MAC Policies Subtree</name> | |||
service | <sourcecode type="yangtree"><![CDATA[ +--rw | |||
... | service | |||
+--rw mac-policies | ... | |||
| +--rw access-control-list* [name] | +--rw mac-policies | |||
| | +--rw name string | | +--rw access-control-list* [name] | |||
| | +--rw src-mac-address* | | | +--rw name string | |||
| | | yang:mac-address | | | +--rw src-mac-address* | |||
| | +--rw src-mac-address-mask* | | | | yang:mac-address | |||
| | | yang:mac-address | | | +--rw src-mac-address-mask* | |||
| | +--rw dst-mac-address* | | | | yang:mac-address | |||
| | | yang:mac-address | | | +--rw dst-mac-address* | |||
| | +--rw dst-mac-address-mask* | | | | yang:mac-address | |||
| | | yang:mac-address | | | +--rw dst-mac-address-mask* | |||
| | +--rw action? identityref | | | | yang:mac-address | |||
| | +--rw rate-limit? decimal64 | | | +--rw action? identityref | |||
| +--rw mac-loop-prevention | | | +--rw rate-limit? decimal64 | |||
| | +--rw window? uint32 | | +--rw mac-loop-prevention | |||
| | +--rw frequency? uint32 | | | +--rw window? uint32 | |||
| | +--rw retry-timer? uint32 | | | +--rw frequency? uint32 | |||
| | +--rw protection-type? identityref | | | +--rw retry-timer? uint32 | |||
| +--rw mac-addr-limit | | | +--rw protection-type? identityref | |||
| +--rw limit-number? uint16 | | +--rw mac-addr-limit | |||
| +--rw time-interval? uint32 | | +--rw limit-number? uint16 | |||
| +--rw action? identityref | | +--rw time-interval? uint32 | |||
... ]]></artwork> | | +--rw action? identityref | |||
</figure></t> | ... ]]></sourcecode> | |||
</figure> | ||||
<t hangText="'broadcast-unknown-unicast-multicast':">Defines the | </dd> | |||
<dt>'broadcast-unknown-unicast-multicast':</dt> | ||||
<dd> | ||||
<t>Defines the | ||||
type of site in the customer multicast service topology: source, | type of site in the customer multicast service topology: source, | |||
receiver, or both. It is also used to define multicast | receiver, or both. It is also used to define multicast | |||
group-to-port mappings. <figure align="center" anchor="bum_tree" | group-to-port mappings. </t> | |||
title="BUM Subtree"> | <figure anchor="bum_tree"> | |||
<artwork align="center"><![CDATA[ +--rw | <name>BUM Subtree</name> | |||
service | <sourcecode type="yangtree"><![CDATA[ | |||
... | +--rw service | |||
+--rw broadcast-unknown-unicast-multicast | ... | |||
+--rw multicast-site-type? | +--rw broadcast-unknown-unicast-multicast | |||
| enumeration | +--rw multicast-site-type? | |||
+--rw multicast-gp-address-mapping* [id] | | enumeration | |||
| +--rw id uint16 | +--rw multicast-gp-address-mapping* [id] | |||
| +--rw vlan-id uint32 | | +--rw id uint16 | |||
| +--rw mac-gp-address | | +--rw vlan-id uint32 | |||
| | yang:mac-address | | +--rw mac-gp-address | |||
| +--rw port-lag-number? uint32 | | | yang:mac-address | |||
+--rw bum-overall-rate? uint64 ]]></art | | +--rw port-lag-number? uint32 | |||
work> | +--rw bum-overall-rate? uint64 | |||
</figure></t> | ]]></sourcecode> | |||
</list></t> | </figure> | |||
</dd> | ||||
</dl> | ||||
</section> | </section> | |||
</section> | </section> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<name>YANG Modules</name> | ||||
<t/> | ||||
<section anchor="iana-bgp" numbered="true" toc="default"> | ||||
<name>IANA-Maintained Module for BGP Layer 2 Encapsulation Types</name> | ||||
<section title="YANG Modules"> | <t>The "iana-bgp-l2-encaps" YANG module matches the "BGP Layer 2 Encapsu | |||
<t></t> | lation Types" registry <xref target="IANA-BGP-L2" format="default"/>.</t> | |||
<t>This module references <xref target="RFC3032" format="default"/>, <xr | ||||
<section anchor="iana-bgp" | ef target="RFC4446" format="default"/>, <xref target="RFC4448" format="default"/ | |||
title="IANA-Maintained Module for BGP Layer 2 Encapsulation Types | >, <xref target="RFC4553" format="default"/>, <xref target="RFC4618" format="def | |||
"> | ault"/>, <xref target="RFC4619" format="default"/>, <xref target="RFC4717" forma | |||
<t>The "iana-bgp-l2-encaps" YANG module echoes the registry available | t="default"/>, <xref target="RFC4761" format="default"/>, <xref target="RFC4816" | |||
at <xref target="IANA-BGP-L2"></xref>.</t> | format="default"/>, <xref target="RFC4842" format="default"/>, and <xref target | |||
="RFC5086" format="default"/>.</t> | ||||
<t>This module references <xref target="RFC3032"></xref>, <xref | ||||
target="RFC4446"></xref>, <xref target="RFC4448"></xref>, <xref | ||||
target="RFC4553"></xref>, <xref target="RFC4618"></xref>, <xref | ||||
target="RFC4619"></xref>, <xref target="RFC4717"></xref>, <xref | ||||
target="RFC4761"></xref>, <xref target="RFC4816"></xref>, <xref | ||||
target="RFC4842"></xref>, and <xref target="RFC5086"></xref>.</t> | ||||
<t><figure align="center"> | <sourcecode name="iana-bgp-l2-encaps@2022-09-20.yang" type="yang" markers | |||
<artwork><![CDATA[<CODE BEGINS>file "iana-bgp-l2-encaps@2021-07-05.y | ="true"><![CDATA[ | |||
ang" | ||||
module iana-bgp-l2-encaps { | module iana-bgp-l2-encaps { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:iana-bgp-l2-encaps"; | namespace "urn:ietf:params:xml:ns:yang:iana-bgp-l2-encaps"; | |||
prefix iana-bgp-l2-encaps; | prefix iana-bgp-l2-encaps; | |||
organization | organization | |||
"IANA"; | "IANA"; | |||
contact | contact | |||
"Internet Assigned Numbers Authority | "Internet Assigned Numbers Authority | |||
Postal: ICANN | Postal: ICANN | |||
12025 Waterfront Drive, Suite 300 | 12025 Waterfront Drive, Suite 300 | |||
Los Angeles, CA 90094-2536 | Los Angeles, CA 90094-2536 | |||
United States of America | United States of America | |||
Tel: +1 310 301 5800 | Tel: +1 310 301 5800 | |||
<mailto:iana@iana.org>"; | <mailto:iana@iana.org>"; | |||
description | description | |||
"This module contains a collection of IANA-maintained YANG | "This YANG module contains a collection of IANA-maintained YANG | |||
data types that are used for referring to BGP Layer 2 | data types that are used for referring to BGP Layer 2 | |||
encapsulation types. | encapsulation types. | |||
Copyright (c) 2022 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 the license terms contained in, the Revised BSD License | to the license terms contained in, the Revised BSD License | |||
set forth in Section 4.c of the IETF Trust's Legal Provisions | set forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(https://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 9291; see | |||
the RFC itself for full legal notices."; | the RFC itself for full legal notices."; | |||
revision 2021-07-05 { | revision 2022-09-20 { | |||
description | description | |||
"First revision."; | "First revision."; | |||
reference | reference | |||
"RFC XXXX: A YANG Network Data Model for Layer 2 VPNs."; | "RFC 9291: A YANG Network Data Model for Layer 2 VPNs."; | |||
} | } | |||
identity bgp-l2-encaps-type { | identity bgp-l2-encaps-type { | |||
description | description | |||
"Base BGP Layer 2 encapsulation type."; | "Base BGP Layer 2 encapsulation type."; | |||
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"; | |||
} | } | |||
skipping to change at line 2545 ¶ | skipping to change at line 2381 ¶ | |||
identity sf { | identity sf { | |||
base bgp-l2-encaps-type; | base bgp-l2-encaps-type; | |||
description | description | |||
"DS1 (SF) Nx64kbit/s with CAS using Structure-aware."; | "DS1 (SF) Nx64kbit/s with CAS using Structure-aware."; | |||
reference | reference | |||
"RFC 5086: Structure-Aware Time Division Multiplexed (TDM) | "RFC 5086: Structure-Aware Time Division Multiplexed (TDM) | |||
Circuit Emulation Service over Packet Switched | Circuit Emulation Service over Packet Switched | |||
Network (CESoPSN)"; | Network (CESoPSN)"; | |||
} | } | |||
} | } | |||
<CODE ENDS>]]></artwork> | ]]></sourcecode> | |||
</figure></t> | ||||
</section> | </section> | |||
<section anchor="iana-pw" | <section anchor="iana-pw" numbered="true" toc="default"> | |||
title="IANA-Maintained Module for Pseudowire Types"> | <name>IANA-Maintained Module for Pseudowire Types</name> | |||
<t>The initial version of the "iana-pseudowire-types" YANG module | <t>The initial version of the "iana-pseudowire-types" YANG module | |||
echoes the registry available at <xref | matches the "MPLS Pseudowire Types Registry" <xref target="IANA-PW-TYPES | |||
target="IANA-PW-Types"></xref>.</t> | " format="default"/>.</t> | |||
<t>This module references <xref target="MFA" format="default"/>, <xref t | ||||
arget="RFC2507" format="default"/>, <xref target="RFC2508" format="default"/>, < | ||||
xref target="RFC3032" format="default"/>, <xref target="RFC3545" format="default | ||||
"/>, <xref target="RFC4448" format="default"/>, <xref target="RFC4553" format="d | ||||
efault"/>, <xref target="RFC4618" format="default"/>, <xref target="RFC4619" | ||||
<t>This module references <xref target="MFA"></xref>, <xref | format="default"/>, <xref target="RFC4717" format="default"/>, <xref targ | |||
target="RFC2507"></xref>, <xref target="RFC2508"></xref>, <xref | et="RFC4842" format="default"/>, <xref target="RFC4863" format="default"/>, <xre | |||
target="RFC3032"></xref>, <xref target="RFC3545"></xref>, <xref | f target="RFC4901" format="default"/>, <xref target="RFC5086" format="default"/> | |||
target="RFC4448"></xref>, <xref target="RFC4618"></xref>, <xref | , <xref target="RFC5087" format="default"/>, <xref target="RFC5143" format="defa | |||
target="RFC4619"></xref>, <xref target="RFC4717"></xref>, <xref | ult"/>, <xref target="RFC5795" format="default"/>, and <xref target="RFC6307" fo | |||
target="RFC4842"></xref>, <xref target="RFC4863"></xref>, <xref | rmat="default"/>.</t> | |||
target="RFC4901"></xref>, <xref target="RFC5086"></xref>, <xref | ||||
target="RFC5087"></xref>, <xref target="RFC5143"></xref>, <xref | ||||
target="RFC5795"></xref>, and <xref target="RFC6307"></xref>.</t> | ||||
<t><figure align="center"> | <sourcecode name="iana-pseudowire-types@2022-09-20.yang" type="yang" mar | |||
<artwork><![CDATA[<CODE BEGINS>file "iana-pseudowire-types@2021-07-0 | kers="true"><![CDATA[ | |||
5.yang" | ||||
module iana-pseudowire-types { | module iana-pseudowire-types { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:iana-pseudowire-types"; | namespace "urn:ietf:params:xml:ns:yang:iana-pseudowire-types"; | |||
prefix iana-pw-types; | prefix iana-pw-types; | |||
organization | organization | |||
"IANA"; | "IANA"; | |||
contact | contact | |||
"Internet Assigned Numbers Authority | "Internet Assigned Numbers Authority | |||
skipping to change at line 2597 ¶ | skipping to change at line 2423 ¶ | |||
Copyright (c) 2022 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 the license terms contained in, the Revised BSD License | to the license terms contained in, the Revised BSD License | |||
set forth in Section 4.c of the IETF Trust's Legal Provisions | set forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(https://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 9291; see | |||
the RFC itself for full legal notices."; | the RFC itself for full legal notices."; | |||
revision 2021-07-05 { | revision 2022-09-20 { | |||
description | description | |||
"First revision."; | "First revision."; | |||
reference | reference | |||
"RFC XXXX: A YANG Network Data Model for Layer 2 VPNs."; | "RFC RFC 9291: A YANG Network Data Model for Layer 2 VPNs."; | |||
} | } | |||
identity iana-pw-types { | identity iana-pw-types { | |||
description | description | |||
"Base Pseudowire Layer 2 encapsulation type."; | "Base Pseudowire Layer 2 encapsulation type."; | |||
} | } | |||
identity frame-relay { | identity frame-relay { | |||
base iana-pw-types; | base iana-pw-types; | |||
description | description | |||
skipping to change at line 2918 ¶ | skipping to change at line 2744 ¶ | |||
} | } | |||
identity wildcard { | identity wildcard { | |||
base iana-pw-types; | base iana-pw-types; | |||
description | description | |||
"Wildcard."; | "Wildcard."; | |||
reference | reference | |||
"RFC 4863: Wildcard Pseudowire Type"; | "RFC 4863: Wildcard Pseudowire Type"; | |||
} | } | |||
} | } | |||
<CODE ENDS>]]></artwork> | ]]></sourcecode> | |||
</figure></t> | ||||
</section> | </section> | |||
<section anchor="es-yang" title="Ethernet Segments"> | <section anchor="es-yang" numbered="true" toc="default"> | |||
<t>The "ietf-ethernet-segment" YANG module uses types defined in <xref | <name>Ethernet Segments</name> | |||
target="RFC6991"></xref>.</t> | <t>The "ietf-ethernet-segment" YANG module uses types defined in <xref t | |||
arget="RFC6991" format="default"/>.</t> | ||||
<t><figure> | <sourcecode name="ietf-ethernet-segment@2022-09-20.yang" type="yang" mar | |||
<artwork><![CDATA[<CODE BEGINS>file "ietf-ethernet-segment@2022-05-2 | kers="true"><![CDATA[ | |||
5.yang" | ||||
module ietf-ethernet-segment { | module ietf-ethernet-segment { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-ethernet-segment"; | namespace "urn:ietf:params:xml:ns:yang:ietf-ethernet-segment"; | |||
prefix l2vpn-es; | prefix l2vpn-es; | |||
import ietf-yang-types { | import ietf-yang-types { | |||
prefix yang; | prefix yang; | |||
reference | reference | |||
"RFC 6991: Common YANG Data Types, Section 3"; | "RFC 6991: Common YANG Data Types (see Section 3)"; | |||
} | } | |||
organization | organization | |||
"IETF OPSA (Operations and Management Area) Working Group"; | "IETF OPSA (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> | |||
skipping to change at line 2947 ¶ | skipping to change at line 2770 ¶ | |||
} | } | |||
organization | organization | |||
"IETF OPSA (Operations and Management Area) Working Group"; | "IETF OPSA (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> | |||
Editor: Samier Barguil | Editor: Samier Barguil | |||
<mailto:samier.barguilgiraldo.ext@telefonica.com> | <mailto:samier.barguilgiraldo.ext@telefonica.com> | |||
Author: Oscar Gonzalez de Dios | Author: Oscar Gonzalez de Dios | |||
<mailto:oscar.gonzalezdedios@telefonica.com>"; | <mailto:oscar.gonzalezdedios@telefonica.com>"; | |||
description | description | |||
"This YANG module defines a model for Ethernet Segments. | "This YANG module defines a model for Ethernet Segments. | |||
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 the license terms contained in, the Revised BSD License | to the license terms contained in, the Revised BSD License | |||
set forth in Section 4.c of the IETF Trust's Legal Provisions | set forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(https://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 9291; see | |||
the RFC itself for full legal notices."; | the RFC itself for full legal notices."; | |||
revision 2022-05-25 { | revision 2022-09-20 { | |||
description | description | |||
"Initial version."; | "Initial version."; | |||
reference | reference | |||
"RFC XXXX: A YANG Network Data Model for Layer 2 VPNs."; | "RFC 9291: A YANG Network Data Model for Layer 2 VPNs."; | |||
} | } | |||
/* Typedefs */ | /* Typedefs */ | |||
typedef es-ref { | typedef es-ref { | |||
type leafref { | type leafref { | |||
path "/l2vpn-es:ethernet-segments/l2vpn-es:ethernet-segment" | path "/l2vpn-es:ethernet-segments/l2vpn-es:ethernet-segment" | |||
+ "/l2vpn-es:name"; | + "/l2vpn-es:name"; | |||
} | } | |||
description | description | |||
"Defines a type for referencing an Ethernet segment in | "Defines a type for referencing an Ethernet segment in | |||
other modules."; | other modules."; | |||
} | } | |||
/* Identities */ | /* Identities */ | |||
identity esi-type { | identity esi-type { | |||
description | description | |||
"T-(Ethernet Segment Identifier (ESI) Type) is a 1-octet field | "T (Ethernet Segment Identifier (ESI) Type) is a 1-octet field | |||
(most significant octet) that specifies the format of the | (most significant octet) that specifies the format of the | |||
remaining 9 octets (ESI Value)."; | remaining 9 octets (ESI Value)."; | |||
reference | reference | |||
"RFC 7432: BGP MPLS-Based Ethernet VPN, Section 5"; | "RFC 7432: BGP MPLS-Based Ethernet VPN, Section 5"; | |||
} | } | |||
identity esi-type-0-operator { | identity esi-type-0-operator { | |||
base esi-type; | base esi-type; | |||
description | description | |||
"This type indicates an arbitrary 9-octet ESI value, | "This type indicates an arbitrary 9-octet ESI value, | |||
which is managed and configured by the operator."; | which is managed and configured by the operator."; | |||
} | } | |||
identity esi-type-1-lacp { | identity esi-type-1-lacp { | |||
base esi-type; | base esi-type; | |||
description | description | |||
"When IEEE 802.1AX Link Aggregation Control Protocol (LACP) | "When the IEEE 802.1AX Link Aggregation Control Protocol (LACP) | |||
is used between the Provider Edge (PE) and Customer Edge (CE) | is used between the Provider Edge (PE) and Customer Edge (CE) | |||
devices, this ESI type indicates an auto-generated ESI value | devices, this ESI type indicates an auto-generated ESI value | |||
determined from LACP."; | determined from LACP."; | |||
reference | reference | |||
"IEEE Std. 802.1AX: Link Aggregation"; | "IEEE Std 802.1AX: Link Aggregation"; | |||
} | } | |||
identity esi-type-2-bridge { | identity esi-type-2-bridge { | |||
base esi-type; | base esi-type; | |||
description | description | |||
"The ESI value is auto-generated and determined based | "The ESI value is auto-generated and determined based | |||
on the Layer 2 bridge protocol."; | on the Layer 2 bridge protocol."; | |||
} | } | |||
identity esi-type-3-mac { | identity esi-type-3-mac { | |||
skipping to change at line 3073 ¶ | skipping to change at line 2899 ¶ | |||
description | description | |||
"The highest random weight (HRW) method."; | "The highest random weight (HRW) method."; | |||
reference | reference | |||
"RFC 8584: Framework for Ethernet VPN Designated | "RFC 8584: Framework for Ethernet VPN Designated | |||
Forwarder Election Extensibility, Section 3"; | Forwarder Election Extensibility, Section 3"; | |||
} | } | |||
identity preference { | identity preference { | |||
base df-election-methods; | base df-election-methods; | |||
description | description | |||
"The preference based method. PEs are assigned with | "The preference-based method. PEs are assigned with | |||
preferences to become the DF in the Ethernet Segment (ES). | preferences to become the DF in the Ethernet Segment (ES). | |||
The exact preference-based algorithm (e.g., lowest-preference | The exact preference-based algorithm (e.g., lowest-preference | |||
algorithm, highest-preference algorithm) to use is | algorithm or highest-preference algorithm) to use is | |||
signaled at the control plane."; | signaled at the control plane."; | |||
} | } | |||
identity es-redundancy-mode { | identity es-redundancy-mode { | |||
description | description | |||
"Base identity for ES redundancy modes."; | "Base identity for ES redundancy modes."; | |||
} | } | |||
identity single-active { | identity single-active { | |||
base es-redundancy-mode; | base es-redundancy-mode; | |||
skipping to change at line 3160 ¶ | skipping to change at line 2986 ¶ | |||
} | } | |||
} | } | |||
case auto-assigned { | case auto-assigned { | |||
description | description | |||
"The ESI is auto-assigned."; | "The ESI is auto-assigned."; | |||
container esi-auto { | container esi-auto { | |||
description | description | |||
"The ESI is auto-assigned."; | "The ESI is auto-assigned."; | |||
choice auto-mode { | choice auto-mode { | |||
description | description | |||
"Indicates the auto-assignment mode. ESI can be | "Indicates the auto-assignment mode. ESI can be | |||
automatically assigned either with or without | automatically assigned either with or without | |||
indicating a pool from which the ESI should be | indicating a pool from which the ESI should be | |||
taken. | taken. | |||
For both cases, the server will auto-assign an | For both cases, the server will auto-assign an | |||
ESI value 'auto-assigned-ESI' and use that value | ESI value 'auto-assigned-ESI' and use that value | |||
operationally."; | operationally."; | |||
case from-pool { | case from-pool { | |||
leaf esi-pool-name { | leaf esi-pool-name { | |||
type string; | type string; | |||
skipping to change at line 3230 ¶ | skipping to change at line 3056 ¶ | |||
+ "'preference')" { | + "'preference')" { | |||
description | description | |||
"The revertive value is only applicable | "The revertive value is only applicable | |||
to the preference method."; | to the preference method."; | |||
} | } | |||
type boolean; | type boolean; | |||
default "true"; | default "true"; | |||
description | description | |||
"The default behavior is that the DF election | "The default behavior is that the DF election | |||
procedure is triggered upon PE failures following | procedure is triggered upon PE failures following | |||
configured preference values. Such a mode is called | configured preference values. Such a mode is called | |||
the revertive mode. This mode may not be suitable in | the 'revertive' mode. This mode may not be suitable in | |||
some scenarios where, e.g., an operator may want to | some scenarios where, e.g., an operator may want to | |||
maintain the new DF even if the former DF recovers. | maintain the new DF even if the former DF recovers. | |||
Such a mode is called the 'non-revertive' mode. | Such a mode is called the 'non-revertive' mode. | |||
The non-revertive mode can be configured by | The non-revertive mode can be configured by | |||
setting 'revertive' leaf to 'false'."; | setting 'revertive' leaf to 'false'."; | |||
reference | reference | |||
"RFC 8584: Framework for Ethernet VPN Designated | "RFC 8584: Framework for Ethernet VPN Designated | |||
Forwarder Election Extensibility, | Forwarder Election Extensibility, | |||
Section 1.3.2"; | Section 1.3.2"; | |||
} | } | |||
leaf election-wait-time { | leaf election-wait-time { | |||
type uint32; | type uint32; | |||
units "seconds"; | units "seconds"; | |||
default "3"; | default "3"; | |||
description | description | |||
"Election wait timer."; | "Designated Forwarder Wait timer."; | |||
reference | reference | |||
"RFC 8584: Framework for Ethernet VPN Designated | "RFC 8584: Framework for Ethernet VPN Designated | |||
Forwarder Election Extensibility"; | Forwarder Election Extensibility"; | |||
} | } | |||
} | } | |||
leaf split-horizon-filtering { | leaf split-horizon-filtering { | |||
type boolean; | type boolean; | |||
description | description | |||
"Controls split-horizon filtering. It is enabled | "Controls split-horizon filtering. It is enabled | |||
when set to 'true'. | when set to 'true'. | |||
In order to achieve split-horizon filtering, every | In order to achieve split-horizon filtering, every | |||
Broadcast, unknown unicast, or multicast (BUM) | Broadcast, Unknown Unicast, or Multicast (BUM) | |||
packet originating from a non-DF PE is encapsulated | packet originating from a non-DF PE is encapsulated | |||
with an MPLS label that identifies the origin ES."; | with an MPLS label that identifies the origin ES."; | |||
reference | reference | |||
"RFC 7432: BGP MPLS-Based Ethernet VPN, Section 8.3"; | "RFC 7432: BGP MPLS-Based Ethernet VPN, Section 8.3"; | |||
} | } | |||
container pbb { | container pbb { | |||
description | description | |||
"Provider Backbone Bridging (PBB) parameters ."; | "Provider Backbone Bridging (PBB) parameters ."; | |||
reference | reference | |||
"IEEE 802.1ah: Provider Backbone Bridge"; | "IEEE 802.1ah: Provider Backbone Bridges"; | |||
leaf backbone-src-mac { | leaf backbone-src-mac { | |||
type yang:mac-address; | type yang:mac-address; | |||
description | description | |||
"The PEs connected to the same CE must share the | "The PEs connected to the same CE must share the | |||
same Provider Backbone (B-MAC) address in | same Provider Backbone (B-MAC) address in | |||
All-Active mode."; | All-Active mode."; | |||
reference | reference | |||
"RFC 7623: Provider Backbone Bridging Combined with | "RFC 7623: Provider Backbone Bridging Combined with | |||
Ethernet VPN (PBB-EVPN), Section 6.2.1.1"; | Ethernet VPN (PBB-EVPN), Section 6.2.1.1"; | |||
} | } | |||
skipping to change at line 3302 ¶ | skipping to change at line 3128 ¶ | |||
} | } | |||
leaf interface-id { | leaf interface-id { | |||
type string; | type string; | |||
description | description | |||
"Identifier of a node interface."; | "Identifier of a node interface."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
<CODE ENDS> | ]]></sourcecode> | |||
]]></artwork> | ||||
</figure></t> | ||||
</section> | </section> | |||
<section anchor="YANG_module" numbered="true" toc="default"> | ||||
<name>L2NM</name> | ||||
<t>The "ietf-l2vpn-ntw" YANG module uses types defined in <xref target=" | ||||
RFC6991" format="default"/>, <xref target="RFC9181" format="default"/>, <xref ta | ||||
rget="RFC8294" format="default"/>, and <xref target="IEEE802.1Qcp" format="defau | ||||
lt"/>.</t> | ||||
<section anchor="YANG_module" title="L2NM"> | <sourcecode name="ietf-l2vpn-ntw@2022-09-20.yang" type="yang" markers="true"><![ | |||
<t>The "ietf-l2vpn-ntw" YANG module uses types defined in <xref | CDATA[ | |||
target="RFC6991"></xref>, <xref target="RFC9181"></xref>, <xref | ||||
target="RFC8294"></xref>, and <xref | ||||
target="IEEE802.1Qcp-2018"></xref>.</t> | ||||
<figure align="center"> | ||||
<artwork align="center"><![CDATA[<CODE BEGINS>file "ietf-l2vpn-ntw@202 | ||||
2-05-25.yang" | ||||
module ietf-l2vpn-ntw { | module ietf-l2vpn-ntw { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-l2vpn-ntw"; | namespace "urn:ietf:params:xml:ns:yang:ietf-l2vpn-ntw"; | |||
prefix l2vpn-ntw; | prefix l2vpn-ntw; | |||
import ietf-inet-types { | import ietf-inet-types { | |||
prefix inet; | prefix inet; | |||
reference | reference | |||
"RFC 6991: Common YANG Data Types, Section 4"; | "RFC 6991: Common YANG Data Types, Section 4"; | |||
} | } | |||
skipping to change at line 3339 ¶ | skipping to change at line 3159 ¶ | |||
} | } | |||
import ietf-vpn-common { | import ietf-vpn-common { | |||
prefix vpn-common; | prefix vpn-common; | |||
reference | reference | |||
"RFC 9181: A Common YANG for Data Model for Layer 2 | "RFC 9181: A Common YANG for Data Model for Layer 2 | |||
and Layer 3 VPNs"; | and Layer 3 VPNs"; | |||
} | } | |||
import iana-bgp-l2-encaps { | import iana-bgp-l2-encaps { | |||
prefix iana-bgp-l2-encaps; | prefix iana-bgp-l2-encaps; | |||
reference | reference | |||
"RFC XXXX: A YANG Network Data Model for Layer 2 VPNs."; | "RFC 9291: A YANG Network Data Model for Layer 2 VPNs."; | |||
} | } | |||
import iana-pseudowire-types { | import iana-pseudowire-types { | |||
prefix iana-pw-types; | prefix iana-pw-types; | |||
reference | reference | |||
"RFC XXXX: A YANG Network Data Model for Layer 2 VPNs."; | "RFC 9291: A YANG Network Data Model for Layer 2 VPNs."; | |||
} | } | |||
import ietf-ethernet-segment { | import ietf-ethernet-segment { | |||
prefix l2vpn-es; | prefix l2vpn-es; | |||
reference | reference | |||
"RFC XXXX: A YANG Network Data Model for Layer 2 VPNs."; | "RFC 9291: A YANG Network Data Model for Layer 2 VPNs."; | |||
} | } | |||
import ietf-routing-types { | import ietf-routing-types { | |||
prefix rt-types; | prefix rt-types; | |||
reference | reference | |||
"RFC 8294: Common YANG Data Types for the Routing Area"; | "RFC 8294: Common YANG Data Types for the Routing Area"; | |||
} | } | |||
import ieee802-dot1q-types { | import ieee802-dot1q-types { | |||
prefix dot1q-types; | prefix dot1q-types; | |||
reference | reference | |||
"IEEE Std 802.1Qcp-2018: Bridges and Bridged Networks - | "IEEE Std 802.1Qcp: Bridges and Bridged Networks-- | |||
Amendment: YANG Data Model"; | Amendment 30: YANG Data Model"; | |||
} | } | |||
organization | organization | |||
"IETF OPSA (Operations and Management Area) Working Group"; | "IETF OPSA (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> | |||
skipping to change at line 3371 ¶ | skipping to change at line 3191 ¶ | |||
} | } | |||
organization | organization | |||
"IETF OPSA (Operations and Management Area) Working Group"; | "IETF OPSA (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> | |||
Editor: Samier Barguil | Editor: Samier Barguil | |||
<mailto:samier.barguilgiraldo.ext@telefonica.com> | <mailto:samier.barguilgiraldo.ext@telefonica.com> | |||
Author: Oscar Gonzalez de Dios | Author: Oscar Gonzalez de Dios | |||
<mailto:oscar.gonzalezdedios@telefonica.com>"; | <mailto:oscar.gonzalezdedios@telefonica.com>"; | |||
description | description | |||
"This YANG module defines a network model for Layer 2 VPN | "This YANG module defines a network model for Layer 2 VPN | |||
services. | services. | |||
Copyright (c) 2022 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 the license terms contained in, the Revised BSD License | to the license terms contained in, the Revised BSD License | |||
set forth in Section 4.c of the IETF Trust's Legal Provisions | set forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(https://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 9291; see | |||
the RFC itself for full legal notices."; | the RFC itself for full legal notices."; | |||
revision 2022-05-25 { | revision 2022-09-20 { | |||
description | description | |||
"Initial version."; | "Initial version."; | |||
reference | reference | |||
"RFC XXXX: A YANG Network Data Model for Layer 2 VPNs."; | "RFC 9291: A YANG Network Data Model for Layer 2 VPNs."; | |||
} | } | |||
/* Features */ | /* Features */ | |||
feature oam-3ah { | feature oam-3ah { | |||
description | description | |||
"Indicates the support of OAM 802.3ah."; | "Indicates the support of OAM 802.3ah."; | |||
reference | reference | |||
"IEEE Std 802.3ah: Media Access Control Parameters, Physical | "IEEE Std 802.3ah: Media Access Control Parameters, Physical | |||
Layers, and Management Parameters for | Layers, and Management Parameters for | |||
skipping to change at line 3420 ¶ | skipping to change at line 3243 ¶ | |||
/* Identities */ | /* Identities */ | |||
identity evpn-service-interface-type { | identity evpn-service-interface-type { | |||
description | description | |||
"Base identity for EVPN service interface type."; | "Base identity for EVPN service interface type."; | |||
} | } | |||
identity vlan-based-service-interface { | identity vlan-based-service-interface { | |||
base evpn-service-interface-type; | base evpn-service-interface-type; | |||
description | description | |||
"VLAN-Based Service Interface."; | "VLAN-based service interface."; | |||
reference | reference | |||
"RFC 7432: BGP MPLS-Based Ethernet VPN, Section 6.1"; | "RFC 7432: BGP MPLS-Based Ethernet VPN, Section 6.1"; | |||
} | } | |||
identity vlan-bundle-service-interface { | identity vlan-bundle-service-interface { | |||
base evpn-service-interface-type; | base evpn-service-interface-type; | |||
description | description | |||
"VLAN Bundle Service Interface."; | "VLAN bundle service interface."; | |||
reference | reference | |||
"RFC 7432: BGP MPLS-Based Ethernet VPN, Section 6.2"; | "RFC 7432: BGP MPLS-Based Ethernet VPN, Section 6.2"; | |||
} | } | |||
identity vlan-aware-bundle-service-interface { | identity vlan-aware-bundle-service-interface { | |||
base evpn-service-interface-type; | base evpn-service-interface-type; | |||
description | description | |||
"VLAN-Aware Bundle Service Interface."; | "VLAN-aware bundle service interface."; | |||
reference | reference | |||
"RFC 7432: BGP MPLS-Based Ethernet VPN, Section 6.3"; | "RFC 7432: BGP MPLS-Based Ethernet VPN, Section 6.3"; | |||
} | } | |||
identity mapping-type { | identity mapping-type { | |||
base vpn-common:multicast-gp-address-mapping; | base vpn-common:multicast-gp-address-mapping; | |||
description | description | |||
"Identity for multicast group mapping type."; | "Identity for multicast group mapping type."; | |||
} | } | |||
skipping to change at line 3466 ¶ | skipping to change at line 3289 ¶ | |||
} | } | |||
identity trap { | identity trap { | |||
base loop-prevention-type; | base loop-prevention-type; | |||
description | description | |||
"Trap protection type."; | "Trap protection type."; | |||
} | } | |||
identity color-type { | identity color-type { | |||
description | description | |||
"Identity of color types. A type is assigned to a service frame | "Identity of color types. A type is assigned to a service | |||
to identify its QoS profile conformance."; | frame to identify its QoS profile conformance."; | |||
} | } | |||
identity green { | identity green { | |||
base color-type; | base color-type; | |||
description | description | |||
"'green' color type. A service frame is 'green' if it is | "'green' color type. A service frame is 'green' if it is | |||
conformant with the committed rate of the bandwidth profile."; | conformant with the committed rate of the bandwidth profile."; | |||
} | } | |||
identity yellow { | identity yellow { | |||
base color-type; | base color-type; | |||
description | description | |||
"'yellow' color type. A service frame is 'yellow' if it exceeds | "'yellow' color type. A service frame is 'yellow' if it | |||
the committed rate but is conformant with the excess rate | exceeds the committed rate but is conformant with the excess | |||
of the bandwidth profile."; | rate of the bandwidth profile."; | |||
} | } | |||
identity red { | identity red { | |||
base color-type; | base color-type; | |||
description | description | |||
"'red' color type. A service famre is 'red' if it is not | "'red' color type. A service frame is 'red' if it is not | |||
conformant with both the committed and excess rates of the | conformant with both the committed and excess rates of the | |||
bandwidth profile."; | bandwidth profile."; | |||
} | } | |||
identity t-ldp-pw-type { | identity t-ldp-pw-type { | |||
description | description | |||
"Identity for t-ldp-pw-type."; | "Identity for T-LDP pseudowire (PW) type."; | |||
} | } | |||
identity vpws-type { | identity vpws-type { | |||
base t-ldp-pw-type; | base t-ldp-pw-type; | |||
description | description | |||
"Virtual Private Wire Service (VPWS) t-ldp-pw-type."; | "Virtual Private Wire Service (VPWS) t-ldp-pw-type."; | |||
reference | reference | |||
"RFC 4664: Framework for Layer 2 Virtual Private Networks | "RFC 4664: Framework for Layer 2 Virtual Private Networks | |||
(L2VPNs), Section 3.3"; | (L2VPNs), Section 3.3"; | |||
} | } | |||
skipping to change at line 3549 ¶ | skipping to change at line 3372 ¶ | |||
is initiated followed by an establishment of an | is initiated followed by an establishment of an | |||
Ethernet channel with the other end."; | Ethernet channel with the other end."; | |||
} | } | |||
identity lacp-passive { | identity lacp-passive { | |||
base lacp-mode; | base lacp-mode; | |||
description | description | |||
"LACP passive mode. | "LACP passive mode. | |||
This mode refers to the LACP mode where an endpoint does | This mode refers to the LACP mode where an endpoint does | |||
not initiate the negotiation, but only responds to LACP | not initiate the negotiation but only responds to LACP | |||
packets initiated by the other end (e.g., full duplex | packets initiated by the other end (e.g., full duplex | |||
or half duplex)"; | or half duplex)"; | |||
} | } | |||
identity pm-type { | identity pm-type { | |||
description | description | |||
"Identity for performance monitoring type."; | "Identity for performance monitoring type."; | |||
} | } | |||
identity loss { | identity loss { | |||
skipping to change at line 3613 ¶ | skipping to change at line 3436 ¶ | |||
} | } | |||
identity warning { | identity warning { | |||
base mac-action; | base mac-action; | |||
description | description | |||
"Log a warning message as the MAC action."; | "Log a warning message as the MAC action."; | |||
} | } | |||
identity precedence-type { | identity precedence-type { | |||
description | description | |||
"Redundancy type. The service can be created | "Redundancy type. The service can be created | |||
with primary and secondary signalization."; | with primary and secondary signalization."; | |||
} | } | |||
identity primary { | identity primary { | |||
base precedence-type; | base precedence-type; | |||
description | description | |||
"Identifies the main VPN network access."; | "Identifies the main VPN network access."; | |||
} | } | |||
identity secondary { | identity secondary { | |||
skipping to change at line 3657 ¶ | skipping to change at line 3480 ¶ | |||
"PW Ethernet tagged mode type."; | "PW Ethernet tagged mode type."; | |||
} | } | |||
/* Typedefs */ | /* Typedefs */ | |||
typedef ccm-priority-type { | typedef ccm-priority-type { | |||
type uint8 { | type uint8 { | |||
range "0..7"; | range "0..7"; | |||
} | } | |||
description | description | |||
"A 3-bit priority value to be used in the VLAN tag, | "A 3-bit priority value to be used in the VLAN tag | |||
if present in the transmitted frame. A larger value | if present in the transmitted frame. A larger value | |||
indicates a higher priority."; | indicates a higher priority."; | |||
} | } | |||
/* Groupings */ | /* Groupings */ | |||
grouping cfm-802 { | grouping cfm-802 { | |||
description | description | |||
"Grouping for 802.1ag Connectivity Fault Management (CFM) | "Grouping for 802.1ag Connectivity Fault Management (CFM) | |||
attributes."; | attributes."; | |||
reference | reference | |||
"IEEE Std 802-1ag: Virtual Bridged Local Area Networks | "IEEE Std 802.1ag: Virtual Bridged Local Area Networks | |||
Amendment 5: Connectivity Fault Management"; | Amendment 5: Connectivity Fault Management"; | |||
leaf maid { | leaf maid { | |||
type string; | type string; | |||
description | description | |||
"Maintenance Association Identifier (MAID)."; | "Maintenance Association Identifier (MAID)."; | |||
} | } | |||
leaf mep-id { | leaf mep-id { | |||
type uint32; | type uint32; | |||
description | description | |||
"Local Maintenance Entity Group End Point (MEP) ID."; | "Local Maintenance Entity Group End Point (MEP) ID."; | |||
skipping to change at line 3709 ¶ | skipping to change at line 3532 ¶ | |||
"MEP up/down."; | "MEP up/down."; | |||
} | } | |||
leaf remote-mep-id { | leaf remote-mep-id { | |||
type uint32; | type uint32; | |||
description | description | |||
"Remote MEP ID."; | "Remote MEP ID."; | |||
} | } | |||
leaf cos-for-cfm-pdus { | leaf cos-for-cfm-pdus { | |||
type uint32; | type uint32; | |||
description | description | |||
"Class of service for CFM PDUs."; | "Class of Service for CFM PDUs."; | |||
} | } | |||
leaf ccm-interval { | leaf ccm-interval { | |||
type uint32; | type uint32; | |||
units "milliseconds"; | units "milliseconds"; | |||
default "10000"; | default "10000"; | |||
description | description | |||
"Continuity Check Message (CCM) interval."; | "Continuity Check Message (CCM) interval."; | |||
} | } | |||
leaf ccm-holdtime { | leaf ccm-holdtime { | |||
type uint32; | type uint32; | |||
units "milliseconds"; | units "milliseconds"; | |||
default "35000"; | default "35000"; | |||
description | description | |||
"CCM hold time."; | "CCM hold time."; | |||
} | } | |||
leaf ccm-p-bits-pri { | leaf ccm-p-bits-pri { | |||
type ccm-priority-type; | type ccm-priority-type; | |||
description | description | |||
"The priority parameter for Continuity Check Messages (CCMs) | "The priority parameter for CCMs | |||
transmitted by the MEP."; | transmitted by the MEP."; | |||
} | } | |||
} | } | |||
grouping y-1731 { | grouping y-1731 { | |||
description | description | |||
"Grouping for Y-1731"; | "Grouping for Y-1731"; | |||
reference | reference | |||
"ITU-T Y-1731: Operations, administration and maintenance | "ITU-T G.8013/Y.1731: Operations, administration and | |||
(OAM) functions and mechanisms for | maintenance (OAM) functions and | |||
Ethernet-based networks"; | mechanisms for Ethernet-based | |||
networks"; | ||||
list y-1731 { | list y-1731 { | |||
key "maid"; | key "maid"; | |||
description | description | |||
"List of configured Y-1731 instances."; | "List of configured Y-1731 instances."; | |||
leaf maid { | leaf maid { | |||
type string; | type string; | |||
description | description | |||
"MAID."; | "MAID."; | |||
} | } | |||
leaf mep-id { | leaf mep-id { | |||
skipping to change at line 3792 ¶ | skipping to change at line 3616 ¶ | |||
description | description | |||
"Identifies the Class of Service."; | "Identifies the Class of Service."; | |||
} | } | |||
leaf loss-measurement { | leaf loss-measurement { | |||
type boolean; | type boolean; | |||
default "false"; | default "false"; | |||
description | description | |||
"Controls whether loss measurement is ('true') or | "Controls whether loss measurement is ('true') or | |||
disabled ('false')."; | disabled ('false')."; | |||
} | } | |||
leaf synthethic-loss-measurement { | leaf synthetic-loss-measurement { | |||
type boolean; | type boolean; | |||
default "false"; | default "false"; | |||
description | description | |||
"Indicates whether synthetic loss measurement is enabled | "Indicates whether synthetic loss measurement is | |||
('true') or disabled ('false')."; | enabled ('true') or disabled ('false')."; | |||
} | } | |||
container delay-measurement { | container delay-measurement { | |||
description | description | |||
"Container for delay measurement"; | "Container for delay measurement."; | |||
leaf enable-dm { | leaf enable-dm { | |||
type boolean; | type boolean; | |||
default "false"; | default "false"; | |||
description | description | |||
"Controls whether delay measurement is enabled ('true') | "Controls whether delay measurement is enabled | |||
or disabled ('false')."; | ('true') or disabled ('false')."; | |||
} | } | |||
leaf two-way { | leaf two-way { | |||
type boolean; | type boolean; | |||
default "false"; | default "false"; | |||
description | description | |||
"Whether delay measurement is two-way ('true') of one- | "Whether delay measurement is two-way ('true') of one- | |||
way ('false')."; | way ('false')."; | |||
} | } | |||
} | } | |||
leaf frame-size { | leaf frame-size { | |||
skipping to change at line 3853 ¶ | skipping to change at line 3677 ¶ | |||
"Container for per-service parameters."; | "Container for per-service parameters."; | |||
leaf local-autonomous-system { | leaf local-autonomous-system { | |||
type inet:as-number; | type inet:as-number; | |||
description | description | |||
"Indicates a local AS Number (ASN)."; | "Indicates a local AS Number (ASN)."; | |||
} | } | |||
leaf svc-mtu { | leaf svc-mtu { | |||
type uint32; | type uint32; | |||
units "bytes"; | units "bytes"; | |||
description | description | |||
"Layer 2 service MTU. | "Layer 2 service MTU. It is also known | |||
It is also known as the maximum transmission | as the maximum transmission unit or | |||
unit or maximum frame size."; | maximum frame size."; | |||
} | } | |||
leaf ce-vlan-preservation { | leaf ce-vlan-preservation { | |||
type boolean; | type boolean; | |||
description | description | |||
"Preserve the CE-VLAN ID from ingress to egress, i.e., | "Preserves the CE VLAN ID from ingress to egress, i.e., | |||
CE-VLAN tag of the egress frame is identical to | the CE VLAN tag of the egress frame is identical to | |||
that of the ingress frame that yielded this egress | that of the ingress frame that yielded this egress | |||
service frame. If all-to-one bundling within a site | service frame. If all-to-one bundling within a site | |||
is enabled, then preservation applies to all ingress | is enabled, then preservation applies to all ingress | |||
service frames. If all-to-one bundling is disabled, | service frames. If all-to-one bundling is disabled, | |||
then preservation applies to tagged ingress service | then preservation applies to tagged ingress service | |||
frames having CE-VLAN ID 1 through 4094."; | frames having CE VLAN ID 1 through 4094."; | |||
} | } | |||
leaf ce-vlan-cos-preservation { | leaf ce-vlan-cos-preservation { | |||
type boolean; | type boolean; | |||
description | description | |||
"CE VLAN CoS preservation. Priority Code Point (PCP) bits | "CE VLAN CoS preservation. Priority Code Point (PCP) bits | |||
in the CE-VLAN tag of the egress frame are identical to | in the CE VLAN tag of the egress frame are identical to | |||
those of the ingress frame that yielded this egress | those of the ingress frame that yielded this egress | |||
service frame."; | service frame."; | |||
} | } | |||
leaf control-word-negotiation { | leaf control-word-negotiation { | |||
type boolean; | type boolean; | |||
description | description | |||
"Controls whether Control-word negotiation is enabled | "Controls whether control-word negotiation is enabled | |||
(if set to true) or not (if set to false)."; | (if set to true) or not (if set to false)."; | |||
reference | reference | |||
"RFC 8077: Pseudowire Setup and Maintenance | "RFC 8077: Pseudowire Setup and Maintenance | |||
Using the Label Distribution Protocol (LDP), | Using the Label Distribution Protocol (LDP), | |||
Section 7"; | Section 7"; | |||
} | } | |||
container mac-policies { | container mac-policies { | |||
description | description | |||
"Container of MAC policies."; | "Container of MAC policies."; | |||
container mac-addr-limit { | container mac-addr-limit { | |||
skipping to change at line 3905 ¶ | skipping to change at line 3729 ¶ | |||
description | description | |||
"Maximum number of MAC addresses learned from | "Maximum number of MAC addresses learned from | |||
the customer for a single service instance. | the customer for a single service instance. | |||
The default value is '2' when this grouping | The default value is '2' when this grouping | |||
is used at the service level."; | is used at the service level."; | |||
} | } | |||
leaf time-interval { | leaf time-interval { | |||
type uint32; | type uint32; | |||
units "milliseconds"; | units "milliseconds"; | |||
description | description | |||
"The aging time of the mac address. | "The aging time of the MAC address. | |||
The default value is '300' when this grouping | The default value is '300' when this grouping | |||
is used at the service level."; | is used at the service level."; | |||
} | } | |||
leaf action { | leaf action { | |||
type identityref { | type identityref { | |||
base mac-action; | base mac-action; | |||
} | } | |||
description | description | |||
"Specifies the action when the upper limit is | "Specifies the action when the upper limit is | |||
exceeded: drop the packet, flood the packet, | exceeded: drop the packet, flood the packet, | |||
skipping to change at line 3949 ¶ | skipping to change at line 3773 ¶ | |||
within the 'window' time interval and the duplicate | within the 'window' time interval and the duplicate | |||
MAC address has been added to a list of duplicate | MAC address has been added to a list of duplicate | |||
MAC addresses. | MAC addresses. | |||
The default value is '5' when this grouping is | The default value is '5' when this grouping is | |||
called at the service level."; | called at the service level."; | |||
} | } | |||
leaf retry-timer { | leaf retry-timer { | |||
type uint32; | type uint32; | |||
units "seconds"; | units "seconds"; | |||
description | description | |||
"The retry timer. When the retry timer expires, | "The retry timer. When the retry timer expires, | |||
the duplicate MAC address will be flushed from | the duplicate MAC address will be flushed from | |||
the MAC-VRF."; | the MAC-VRF."; | |||
} | } | |||
leaf protection-type { | leaf protection-type { | |||
type identityref { | type identityref { | |||
base loop-prevention-type; | base loop-prevention-type; | |||
} | } | |||
description | description | |||
"Protection type. | "Protection type. | |||
The default value is 'trap' when this grouping | The default value is 'trap' when this grouping | |||
skipping to change at line 3995 ¶ | skipping to change at line 3819 ¶ | |||
} | } | |||
} | } | |||
grouping bandwidth-parameters { | grouping bandwidth-parameters { | |||
description | description | |||
"A grouping for bandwidth parameters."; | "A grouping for bandwidth parameters."; | |||
leaf cir { | leaf cir { | |||
type uint64; | type uint64; | |||
units "bps"; | units "bps"; | |||
description | description | |||
"Committed Information Rate. The maximum | "Committed Information Rate (CIR). The maximum | |||
number of bits that a port can receive or | number of bits that a port can receive or | |||
send during one-second over an | send during one second over an | |||
interface."; | interface."; | |||
} | } | |||
leaf cbs { | leaf cbs { | |||
type uint64; | type uint64; | |||
units "bytes"; | units "bytes"; | |||
description | description | |||
"Committed Burst Size. CBS controls the | "Committed Burst Size (CBS). CBS controls the | |||
bursty nature of the traffic. Traffic | bursty nature of the traffic. Traffic | |||
that does not use the configured CIR | that does not use the configured CIR | |||
accumulates credits until the credits | accumulates credits until the credits | |||
reach the configured CBS."; | reach the configured CBS."; | |||
} | } | |||
leaf eir { | leaf eir { | |||
type uint64; | type uint64; | |||
units "bps"; | units "bps"; | |||
description | description | |||
"Excess Information Rate, i.e., excess | "Excess Information Rate (EIR), i.e., excess | |||
frame delivery allowed not subject to | frame delivery allowed not subject to | |||
SLA. The traffic rate can be limited | a Service Level Agreement (SLA). The | |||
by EIR."; | traffic rate can be limited by EIR."; | |||
} | } | |||
leaf ebs { | leaf ebs { | |||
type uint64; | type uint64; | |||
units "bytes"; | units "bytes"; | |||
description | description | |||
"Excess Burst Size. The bandwidth | "Excess Burst Size (EBS). The bandwidth | |||
available for burst traffic from the | available for burst traffic from the | |||
EBS is subject to the amount of | EBS is subject to the amount of | |||
bandwidth that is accumulated during | bandwidth that is accumulated during | |||
periods when traffic allocated by the | periods when traffic allocated by the | |||
EIR policy is not used."; | EIR policy is not used."; | |||
} | } | |||
leaf pir { | leaf pir { | |||
type uint64; | type uint64; | |||
units "bps"; | units "bps"; | |||
description | description | |||
"Peak Information Rate, i.e., maximum | "Peak Information Rate (PIR), i.e., maximum | |||
frame delivery allowed. It is equal | frame delivery allowed. It is equal | |||
to or less than sum of CIR and EIR."; | to or less than sum of CIR and EIR."; | |||
} | } | |||
leaf pbs { | leaf pbs { | |||
type uint64; | type uint64; | |||
units "bytes"; | units "bytes"; | |||
description | description | |||
"Peak Burst Size."; | "Peak Burst Size (PBS)."; | |||
} | } | |||
} | } | |||
/* Main L2NM Container */ | /* Main L2NM Container */ | |||
container l2vpn-ntw { | container l2vpn-ntw { | |||
description | description | |||
"Container for the L2NM."; | "Container for the L2NM."; | |||
container vpn-profiles { | container vpn-profiles { | |||
description | description | |||
skipping to change at line 4086 ¶ | skipping to change at line 3910 ¶ | |||
error-message "L3VPN is only applicable in L3NM."; | error-message "L3VPN is only applicable in L3NM."; | |||
} | } | |||
description | description | |||
"Service type."; | "Service type."; | |||
} | } | |||
leaf vpn-service-topology { | leaf vpn-service-topology { | |||
type identityref { | type identityref { | |||
base vpn-common:vpn-topology; | base vpn-common:vpn-topology; | |||
} | } | |||
description | description | |||
"Defining service topology, such as | "Defines service topology such as | |||
any-to-any, hub-spoke, etc."; | any-to-any, hub-spoke, etc."; | |||
} | } | |||
leaf bgp-ad-enabled { | leaf bgp-ad-enabled { | |||
type boolean; | type boolean; | |||
description | description | |||
"Indicates whether BGP auto-discovery is enabled | "Indicates whether BGP auto-discovery is enabled | |||
or disabled."; | or disabled."; | |||
} | } | |||
leaf signaling-type { | leaf signaling-type { | |||
type identityref { | type identityref { | |||
skipping to change at line 4147 ¶ | skipping to change at line 3971 ¶ | |||
} | } | |||
leaf description { | leaf description { | |||
type string; | type string; | |||
description | description | |||
"Textual description of a VPN node."; | "Textual description of a VPN node."; | |||
} | } | |||
leaf ne-id { | leaf ne-id { | |||
type string; | type string; | |||
description | description | |||
"An identifier of the network element where | "An identifier of the network element where | |||
the VPN node is deployed. This identifier | the VPN node is deployed. This identifier | |||
uniquely identifies the network element within | uniquely identifies the network element within | |||
an administrative domain."; | an administrative domain."; | |||
} | } | |||
leaf role { | leaf role { | |||
type identityref { | type identityref { | |||
base vpn-common:role; | base vpn-common:role; | |||
} | } | |||
default "vpn-common:any-to-any-role"; | default "vpn-common:any-to-any-role"; | |||
description | description | |||
"Role of the VPN node in the VPN."; | "Role of the VPN node in the VPN."; | |||
} | } | |||
leaf router-id { | leaf router-id { | |||
type rt-types:router-id; | type rt-types:router-id; | |||
description | description | |||
"A 32-bit number in the dotted-quad format that is | "A 32-bit number in the dotted-quad format that is | |||
used to uniquely identify a node within an | used to uniquely identify a node within an | |||
autonomous system (AS)."; | Autonomous System (AS)."; | |||
} | } | |||
container active-global-parameters-profiles { | container active-global-parameters-profiles { | |||
description | description | |||
"Container for a list of global parameters | "Container for a list of global parameters | |||
profiles."; | profiles."; | |||
list global-parameters-profile { | list global-parameters-profile { | |||
key "profile-id"; | key "profile-id"; | |||
description | description | |||
"List of active global parameters profiles."; | "List of active global parameters profiles."; | |||
leaf profile-id { | leaf profile-id { | |||
skipping to change at line 4188 ¶ | skipping to change at line 4012 ¶ | |||
} | } | |||
description | description | |||
"Points to a global profile defined at the | "Points to a global profile defined at the | |||
service level."; | service level."; | |||
} | } | |||
uses parameters-profile; | uses parameters-profile; | |||
} | } | |||
} | } | |||
uses vpn-common:service-status; | uses vpn-common:service-status; | |||
container bgp-auto-discovery { | container bgp-auto-discovery { | |||
when "../../../bgp-ad-enabled = 'true'" { | when "../../../bgp-ad-enabled = 'true'" { | |||
description | description | |||
"Only applies when BGP auto-discovery is enabled."; | "Only applies when BGP auto-discovery is enabled."; | |||
} | } | |||
description | description | |||
"BGP is used for auto-discovery."; | "BGP is used for auto-discovery."; | |||
choice bgp-type { | choice bgp-type { | |||
description | description | |||
"Choice for the BGP type."; | "Choice for the BGP type."; | |||
case l2vpn-bgp { | case l2vpn-bgp { | |||
description | description | |||
"Container for BGP L2VPN."; | "Container for BGP L2VPN."; | |||
leaf vpn-id { | leaf vpn-id { | |||
type vpn-common:vpn-id; | type vpn-common:vpn-id; | |||
description | description | |||
"VPN Identifier. This identifier serves to | "VPN Identifier. This identifier serves to | |||
unify components of a given VPN for the | unify components of a given VPN for the | |||
sake of auto-discovery."; | sake of auto-discovery."; | |||
reference | reference | |||
"RFC 6624: Layer 2 Virtual Private Networks | "RFC 6624: Layer 2 Virtual Private Networks | |||
Using BGP for Auto-Discovery and | Using BGP for Auto-Discovery and | |||
Signaling"; | Signaling"; | |||
} | } | |||
} | } | |||
case evpn-bgp { | case evpn-bgp { | |||
description | description | |||
skipping to change at line 4316 ¶ | skipping to change at line 4140 ¶ | |||
when "derived-from-or-self(../../../../" | when "derived-from-or-self(../../../../" | |||
+ "vpn-type, 'vpn-common:vpls')" { | + "vpn-type, 'vpn-common:vpls')" { | |||
description | description | |||
"Only applies for VPLS."; | "Only applies for VPLS."; | |||
} | } | |||
description | description | |||
"VPLS instance."; | "VPLS instance."; | |||
leaf vpls-edge-id { | leaf vpls-edge-id { | |||
type uint16; | type uint16; | |||
description | description | |||
"VPLS Edge Identifier (VE ID). This is | "VPLS Edge Identifier (VE ID). This is | |||
used when the same VE ID is configured | used when the same VE ID is configured | |||
for the PE."; | for the PE."; | |||
reference | reference | |||
"RFC 4761: Virtual Private LAN Service | "RFC 4761: Virtual Private LAN Service | |||
(VPLS) Using BGP for Auto- | (VPLS) Using BGP for Auto- | |||
Discovery and Signaling, | Discovery and Signaling, | |||
Section 3.5"; | Section 3.5"; | |||
} | } | |||
leaf vpls-edge-id-range { | leaf vpls-edge-id-range { | |||
type uint16; | type uint16; | |||
skipping to change at line 4374 ¶ | skipping to change at line 4198 ¶ | |||
base mac-learning-mode; | base mac-learning-mode; | |||
} | } | |||
description | description | |||
"Indicates through which plane MAC | "Indicates through which plane MAC | |||
addresses are advertised."; | addresses are advertised."; | |||
} | } | |||
leaf ingress-replication { | leaf ingress-replication { | |||
type boolean; | type boolean; | |||
description | description | |||
"Controls whether ingress replication is | "Controls whether ingress replication is | |||
enabled ('true') or disabled ('false')."; | enabled ('true') or disabled | |||
('false')."; | ||||
reference | reference | |||
"RFC 7432: BGP MPLS-Based Ethernet VPN, | "RFC 7432: BGP MPLS-Based Ethernet VPN, | |||
Section 8.3.1.1"; | Section 8.3.1.1"; | |||
} | } | |||
leaf p2mp-replication { | leaf p2mp-replication { | |||
type boolean; | type boolean; | |||
description | description | |||
"Controles whether P2MP replication is | "Controls whether Point-to-Multipoint | |||
enabled ('true') or disabled ('false')"; | (P2MP) replication is enabled ('true') | |||
or disabled ('false')"; | ||||
reference | reference | |||
"RFC 7432: BGP MPLS-Based Ethernet VPN, | "RFC 7432: BGP MPLS-Based Ethernet VPN, | |||
Section 8.3.1.2"; | Section 8.3.1.2"; | |||
} | } | |||
container arp-proxy { | container arp-proxy { | |||
if-feature "vpn-common:ipv4"; | if-feature "vpn-common:ipv4"; | |||
description | description | |||
"Top container for the ARP proxy."; | "Top container for the ARP proxy."; | |||
leaf enable { | leaf enable { | |||
type boolean; | type boolean; | |||
default "false"; | default "false"; | |||
description | description | |||
"Enables (when set to 'true') or | "Enables (when set to 'true') or | |||
disables (when set to 'false') | disables (when set to 'false') | |||
ARP proxy."; | the ARP proxy."; | |||
reference | reference | |||
"RFC 7432: BGP MPLS-Based Ethernet VPN, | "RFC 7432: BGP MPLS-Based Ethernet VPN, | |||
Section 10"; | Section 10"; | |||
} | } | |||
leaf arp-suppression { | leaf arp-suppression { | |||
type boolean; | type boolean; | |||
default "false"; | default "false"; | |||
description | description | |||
"Enables (when set to 'true') or | "Enables (when set to 'true') or | |||
disables (when set to 'false') ARP | disables (when set to 'false') ARP | |||
suppression."; | suppression."; | |||
reference | reference | |||
"RFC 7432: BGP MPLS-Based Ethernet | "RFC 7432: BGP MPLS-Based Ethernet | |||
VPN"; | VPN"; | |||
} | } | |||
leaf ip-mobility-threshold { | leaf ip-mobility-threshold { | |||
type uint16; | type uint16; | |||
description | description | |||
"It is possible for a given host (as | "It is possible for a given host (as | |||
defined by its IP address) to move | defined by its IP address) to move | |||
from one ES to another. | from one ES to another. The | |||
IP mobility threshold specifies the | IP mobility threshold specifies the | |||
number of IP mobility events | number of IP mobility events | |||
that are detected for a given IP | that are detected for a given IP | |||
address within the | address within the | |||
detection-threshold before it | detection-threshold before it | |||
is identified as a duplicate IP | is identified as a duplicate IP | |||
address. | address. Once the detection threshold | |||
Once the detection threshold is | is reached, updates for the IP address | |||
reached, updates for the IP address | ||||
are suppressed."; | are suppressed."; | |||
} | } | |||
leaf duplicate-ip-detection-interval { | leaf duplicate-ip-detection-interval { | |||
type uint16; | type uint16; | |||
units "seconds"; | units "seconds"; | |||
description | description | |||
"The time interval used in detecting a | "The time interval used in detecting a | |||
duplicate IP address. Duplicate IP | duplicate IP address. Duplicate IP | |||
address detection number of host moves | address detection number of host moves | |||
are allowed within this interval | are allowed within this interval | |||
period."; | period."; | |||
} | } | |||
} | } | |||
container nd-proxy { | container nd-proxy { | |||
if-feature "vpn-common:ipv6"; | if-feature "vpn-common:ipv6"; | |||
description | description | |||
"Top container for the ND proxy."; | "Top container for the ND proxy."; | |||
leaf enable { | leaf enable { | |||
type boolean; | type boolean; | |||
default "false"; | default "false"; | |||
description | description | |||
"Enables (when set to 'true') or | "Enables (when set to 'true') or | |||
disables (when set to 'false') ND | disables (when set to 'false') the | |||
proxy."; | ND proxy."; | |||
reference | reference | |||
"RFC 7432: BGP MPLS-Based Ethernet VPN, | "RFC 7432: BGP MPLS-Based Ethernet VPN, | |||
Section 10"; | Section 10"; | |||
} | } | |||
leaf nd-suppression { | leaf nd-suppression { | |||
type boolean; | type boolean; | |||
default "false"; | default "false"; | |||
description | description | |||
"Enables (when set to 'true') or | "Enables (when set to 'true') or | |||
disables (when set to 'false') | disables (when set to 'false') | |||
Neighbor Discovery (ND) message | Neighbor Discovery (ND) message | |||
suppression. | suppression. | |||
ND suppression is a technique that | ND suppression is a technique that | |||
is used to reduce the amount of ND | is used to reduce the amount of ND | |||
packets flooding within individual | packets flooding within individual | |||
segments, that is between hosts | segments between hosts | |||
connected to the same logical | connected to the same logical | |||
switch."; | switch."; | |||
} | } | |||
leaf ip-mobility-threshold { | leaf ip-mobility-threshold { | |||
type uint16; | type uint16; | |||
description | description | |||
"It is possible for a given host (as | "It is possible for a given host (as | |||
defined by its IP address) to move | defined by its IP address) to move | |||
from one ES to another. | from one ES to another. The | |||
IP mobility threshold specifies the | IP mobility threshold specifies the | |||
number of IP mobility events | number of IP mobility events | |||
that are detected for a given IP | that are detected for a given IP | |||
address within the | address within the | |||
detection-threshold before it | detection-threshold before it | |||
is identified as a duplicate IP | is identified as a duplicate IP | |||
address. | address. | |||
Once the detection threshold is | Once the detection threshold is | |||
reached, updates for the IP address | reached, updates for the IP address | |||
are suppressed."; | are suppressed."; | |||
} | } | |||
leaf duplicate-ip-detection-interval { | leaf duplicate-ip-detection-interval { | |||
type uint16; | type uint16; | |||
units "seconds"; | units "seconds"; | |||
description | description | |||
"The time interval used in detecting a | "The time interval used in detecting a | |||
duplicate IP address. Duplicate IP | duplicate IP address. Duplicate IP | |||
address detection number of host moves | address detection number of host moves | |||
are allowed within this interval | are allowed within this interval | |||
period."; | period."; | |||
} | } | |||
} | } | |||
leaf underlay-multicast { | leaf underlay-multicast { | |||
type boolean; | type boolean; | |||
default "false"; | default "false"; | |||
description | description | |||
"Enables (when set to 'true') or disables | "Enables (when set to 'true') or disables | |||
(when set to 'false') underlay | (when set to 'false') underlay | |||
multicast."; | multicast."; | |||
} | } | |||
leaf flood-unknown-unicast-supression { | leaf flood-unknown-unicast-suppression { | |||
type boolean; | type boolean; | |||
default "false"; | default "false"; | |||
description | description | |||
"Enables (when set to 'true') or disables | "Enables (when set to 'true') or disables | |||
(when set to 'false') unknown flood | (when set to 'false') unknown flood | |||
unicast suppression."; | unicast suppression."; | |||
} | } | |||
leaf vpws-vlan-aware { | leaf vpws-vlan-aware { | |||
type boolean; | type boolean; | |||
default "false"; | default "false"; | |||
description | description | |||
"Enables (when set to 'true') or disables | "Enables (when set to 'true') or disables | |||
(when set to 'false') VPWS VLAN-aware."; | (when set to 'false') VPWS VLAN-aware | |||
service for the EVPN instance."; | ||||
} | } | |||
container bum-management { | container bum-management { | |||
description | description | |||
"Broadcast-unknown-unicast-multicast | "Broadcast-unknown-unicast-multicast | |||
management."; | management."; | |||
leaf discard-broadcast { | leaf discard-broadcast { | |||
type boolean; | type boolean; | |||
default "false"; | default "false"; | |||
description | description | |||
"Discards broadcast, when enabled."; | "Discards broadcast, when enabled."; | |||
skipping to change at line 4557 ¶ | skipping to change at line 4383 ¶ | |||
} | } | |||
container pbb { | container pbb { | |||
when "derived-from-or-self(" | when "derived-from-or-self(" | |||
+ "../../evpn-type, 'pbb-evpn')" { | + "../../evpn-type, 'pbb-evpn')" { | |||
description | description | |||
"Only applies for PBB EVPN."; | "Only applies for PBB EVPN."; | |||
} | } | |||
description | description | |||
"PBB parameters container."; | "PBB parameters container."; | |||
reference | reference | |||
"IEEE 802.1ah: Provider Backbone Bridge"; | "IEEE 802.1ah: Provider Backbone | |||
Bridges"; | ||||
leaf backbone-src-mac { | leaf backbone-src-mac { | |||
type yang:mac-address; | type yang:mac-address; | |||
description | description | |||
"Includes provider backbone MAC (B-MAC) | "Includes Provider Backbone MAC (B-MAC) | |||
address."; | address."; | |||
reference | reference | |||
"RFC 7623: Provider Backbone Bridging | "RFC 7623: Provider Backbone Bridging | |||
Combined with Ethernet VPN | Combined with Ethernet VPN | |||
(PBB-EVPN), Section 8.1"; | (PBB-EVPN), Section 8.1"; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
container ldp-or-l2tp { | container ldp-or-l2tp { | |||
description | description | |||
"Container for LDP or L2TP-signaled PWs | "Container for LDP or L2TP-signaled PWs | |||
choice."; | choice."; | |||
leaf agi { | leaf agi { | |||
type rt-types:route-distinguisher; | type rt-types:route-distinguisher; | |||
description | description | |||
"Attachment Group Identifier. Also, called | "Attachment Group Identifier. Also, called | |||
VPLS-Id."; | VPLS-Id."; | |||
reference | reference | |||
"RFC 4667: Layer 2 Virtual Private Network | "RFC 4667: Layer 2 Virtual Private Network | |||
(L2VPN) Extensions for Layer 2 | (L2VPN) Extensions for Layer 2 | |||
Tunneling Protocol (L2TP), | Tunneling Protocol (L2TP), | |||
Section 4.3 | Section 4.3 | |||
RFC 4762: Virtual Private LAN Service (VPLS) | RFC 4762: Virtual Private LAN Service (VPLS) | |||
Using Label Distribution Protocol | Using Label Distribution Protocol | |||
(LDP) Signaling, Section 6.1.1"; | (LDP) Signaling, Section 6.1.1"; | |||
} | } | |||
skipping to change at line 4606 ¶ | skipping to change at line 4433 ¶ | |||
reference | reference | |||
"RFC 4667: Layer 2 Virtual Private Network | "RFC 4667: Layer 2 Virtual Private Network | |||
(L2VPN) Extensions for Layer 2 | (L2VPN) Extensions for Layer 2 | |||
Tunneling Protocol (L2TP), | Tunneling Protocol (L2TP), | |||
Section 3"; | Section 3"; | |||
} | } | |||
list remote-targets { | list remote-targets { | |||
key "taii"; | key "taii"; | |||
description | description | |||
"List of allowed target Attachment Individual | "List of allowed target Attachment Individual | |||
Identifier (AII) and peers."; | Identifiers (AIIs) and peers."; | |||
reference | reference | |||
"RFC 4667: Layer 2 Virtual Private Network | "RFC 4667: Layer 2 Virtual Private Network | |||
(L2VPN) Extensions for Layer 2 | (L2VPN) Extensions for Layer 2 | |||
Tunneling Protocol (L2TP), | Tunneling Protocol (L2TP), | |||
Section 5"; | Section 5"; | |||
leaf taii { | leaf taii { | |||
type uint32; | type uint32; | |||
description | description | |||
"Target Attachment Individual Identifier."; | "Target Attachment Individual Identifier."; | |||
reference | reference | |||
skipping to change at line 4657 ¶ | skipping to change at line 4484 ¶ | |||
reference | reference | |||
"RFC 4762: Virtual Private LAN Service | "RFC 4762: Virtual Private LAN Service | |||
(VPLS) Using Label Distribution | (VPLS) Using Label Distribution | |||
Protocol (LDP) Signaling, | Protocol (LDP) Signaling, | |||
Section 6.1.1"; | Section 6.1.1"; | |||
} | } | |||
leaf pw-description { | leaf pw-description { | |||
type string; | type string; | |||
description | description | |||
"Includes a human-readable description | "Includes a human-readable description | |||
of the interface. This may be used when | of the interface. This may be used when | |||
communicating with a remote peer."; | communicating with a remote peer."; | |||
reference | reference | |||
"RFC 4762: Virtual Private LAN Service | "RFC 4762: Virtual Private LAN Service | |||
(VPLS) Using Label Distribution | (VPLS) Using Label Distribution | |||
Protocol (LDP) Signaling, | Protocol (LDP) Signaling, | |||
Section 6.1.1"; | Section 6.1.1"; | |||
} | } | |||
leaf mac-addr-withdraw { | leaf mac-addr-withdraw { | |||
type boolean; | type boolean; | |||
description | description | |||
skipping to change at line 4681 ¶ | skipping to change at line 4508 ¶ | |||
disabled."; | disabled."; | |||
reference | reference | |||
"RFC 4762: Virtual Private LAN Service | "RFC 4762: Virtual Private LAN Service | |||
(VPLS) Using Label Distribution | (VPLS) Using Label Distribution | |||
Protocol (LDP) Signaling, | Protocol (LDP) Signaling, | |||
Section 6.2"; | Section 6.2"; | |||
} | } | |||
list pw-peer-list { | list pw-peer-list { | |||
key "peer-addr vc-id"; | key "peer-addr vc-id"; | |||
description | description | |||
"List of AC and PW bindings."; | "List of attachment circuit (AC) and PW | |||
bindings."; | ||||
leaf peer-addr { | leaf peer-addr { | |||
type inet:ip-address; | type inet:ip-address; | |||
description | description | |||
"Indicates the peer's IP address."; | "Indicates the peer's IP address."; | |||
} | } | |||
leaf vc-id { | leaf vc-id { | |||
type string; | type string; | |||
description | description | |||
"VC label used to identify a PW."; | "VC label used to identify a PW."; | |||
} | } | |||
skipping to change at line 4705 ¶ | skipping to change at line 4533 ¶ | |||
"Defines the priority for the PW. | "Defines the priority for the PW. | |||
The higher the pw-priority value, the | The higher the pw-priority value, the | |||
higher the preference of the PW will | higher the preference of the PW will | |||
be."; | be."; | |||
} | } | |||
} | } | |||
container qinq { | container qinq { | |||
when "derived-from-or-self(" | when "derived-from-or-self(" | |||
+ "../t-ldp-pw-type, 'hvpls')" { | + "../t-ldp-pw-type, 'hvpls')" { | |||
description | description | |||
"Only applies when t-ldp pw type | "Only applies when T-LDP PW type | |||
is h-vpls."; | is H-VPLS."; | |||
} | } | |||
description | description | |||
"Container for QinQ."; | "Container for QinQ."; | |||
leaf s-tag { | leaf s-tag { | |||
type dot1q-types:vlanid; | type dot1q-types:vlanid; | |||
mandatory true; | mandatory true; | |||
description | description | |||
"S-TAG."; | "S-TAG."; | |||
} | } | |||
leaf c-tag { | leaf c-tag { | |||
skipping to change at line 4766 ¶ | skipping to change at line 4594 ¶ | |||
container vpn-network-accesses { | container vpn-network-accesses { | |||
description | description | |||
"Main container for VPN network accesses."; | "Main container for VPN network accesses."; | |||
list vpn-network-access { | list vpn-network-access { | |||
key "id"; | key "id"; | |||
description | description | |||
"List of VPN network accesses."; | "List of VPN network accesses."; | |||
leaf id { | leaf id { | |||
type vpn-common:vpn-id; | type vpn-common:vpn-id; | |||
description | description | |||
"Identifier of the network access"; | "Identifier of the network access."; | |||
} | } | |||
leaf description { | leaf description { | |||
type string; | type string; | |||
description | description | |||
"A textual description of the VPN network | "A textual description of the VPN network | |||
access."; | access."; | |||
} | } | |||
leaf interface-id { | leaf interface-id { | |||
type string; | type string; | |||
description | description | |||
"Refers to a physical or logical interface."; | "Refers to a physical or logical interface."; | |||
} | } | |||
leaf active-vpn-node-profile { | leaf active-vpn-node-profile { | |||
type leafref { | type leafref { | |||
path "../../.." | path "../../.." | |||
+ "/active-global-parameters-profiles" | + "/active-global-parameters-profiles" | |||
+ "/global-parameters-profile/profile-id"; | + "/global-parameters-profile/profile-id"; | |||
} | } | |||
description | description | |||
"An identifier of an active VPN instance | "An identifier of an active VPN instance | |||
profile."; | profile."; | |||
} | } | |||
uses vpn-common:service-status; | uses vpn-common:service-status; | |||
container connection { | container connection { | |||
description | description | |||
skipping to change at line 4825 ¶ | skipping to change at line 4653 ¶ | |||
} | } | |||
container encapsulation { | container encapsulation { | |||
description | description | |||
"Container for Layer 2 encapsulation."; | "Container for Layer 2 encapsulation."; | |||
leaf encap-type { | leaf encap-type { | |||
type identityref { | type identityref { | |||
base vpn-common:encapsulation-type; | base vpn-common:encapsulation-type; | |||
} | } | |||
default "vpn-common:priority-tagged"; | default "vpn-common:priority-tagged"; | |||
description | description | |||
"Tagged interface type. By default, the | "Tagged interface type. By default, the | |||
type of the tagged interface is | type of the tagged interface is | |||
'priority-tagged'."; | 'priority-tagged'."; | |||
} | } | |||
container dot1q { | container dot1q { | |||
when "derived-from-or-self(../encap-type, " | when "derived-from-or-self(../encap-type, " | |||
+ "'vpn-common:dot1q')" { | + "'vpn-common:dot1q')" { | |||
description | description | |||
"Only applies when the type of the | "Only applies when the type of the | |||
tagged interface is 'dot1q'."; | tagged interface is 'dot1q'."; | |||
} | } | |||
description | description | |||
"Tagged interface."; | "Tagged interface."; | |||
leaf tag-type { | leaf tag-type { | |||
type identityref { | type identityref { | |||
base vpn-common:tag-type; | base vpn-common:tag-type; | |||
} | } | |||
default "vpn-common:c-vlan"; | default "vpn-common:c-vlan"; | |||
description | description | |||
"Tag type. By default, the tag type is | "Tag type. By default, the tag type is | |||
'c-vlan'."; | 'c-vlan'."; | |||
} | } | |||
leaf cvlan-id { | leaf cvlan-id { | |||
type dot1q-types:vlanid; | type dot1q-types:vlanid; | |||
description | description | |||
"VLAN identifier."; | "VLAN identifier."; | |||
} | } | |||
container tag-operations { | container tag-operations { | |||
description | description | |||
"Sets the tag manipulation policy for this | "Sets the tag manipulation policy for this | |||
VPN network access. It defines a set of | VPN network access. It defines a set of | |||
tag manipulations that allow for the | tag manipulations that allow for the | |||
insertion, removal, or rewriting | insertion, removal, or rewriting | |||
of 802.1Q VLAN tags. These operations are | of 802.1Q VLAN tags. These operations are | |||
indicated for the CE-PE direction. | indicated for the CE-PE direction. | |||
By default, tag operations are symmetric. | By default, tag operations are symmetric. | |||
As such, the reverse tag operation is | As such, the reverse tag operation is | |||
assumed on the PE-CE direction."; | assumed on the PE-CE direction."; | |||
choice op-choice { | choice op-choice { | |||
description | description | |||
"Selects the tag rewriting policy for a | "Selects the tag rewriting policy for a | |||
VPN network access."; | VPN network access."; | |||
leaf pop { | leaf pop { | |||
type empty; | type empty; | |||
description | description | |||
"Pop the outer tag."; | "Pop the outer tag."; | |||
} | } | |||
leaf push { | leaf push { | |||
type empty; | type empty; | |||
description | description | |||
"Push one or two tags defined by the | "Pushes one or two tags defined by the | |||
tag-1 and tag-2 leaves. It is | tag-1 and tag-2 leaves. It is | |||
assumed that, absent any policy, the | assumed that, absent any policy, the | |||
default value of 0 will be used for | default value of 0 will be used for | |||
PCP setting."; | the PCP setting."; | |||
} | } | |||
leaf translate { | leaf translate { | |||
type empty; | type empty; | |||
description | description | |||
"Translate the outer tag to one or two | "Translates the outer tag to one or two | |||
tags. PCP bits are preserved."; | tags. PCP bits are preserved."; | |||
} | } | |||
} | } | |||
leaf tag-1 { | leaf tag-1 { | |||
when 'not(../pop)'; | when 'not(../pop)'; | |||
type dot1q-types:vlanid; | type dot1q-types:vlanid; | |||
description | description | |||
"A first tag to be used for push or | "A first tag to be used for push or | |||
translate operations. This tag will be | translate operations. This tag will be | |||
used as the outermost tag as a result | used as the outermost tag as a result | |||
of the tag operation."; | of the tag operation."; | |||
} | } | |||
leaf tag-1-type { | leaf tag-1-type { | |||
type dot1q-types:dot1q-tag-type; | type dot1q-types:dot1q-tag-type; | |||
default "dot1q-types:s-vlan"; | default "dot1q-types:s-vlan"; | |||
description | description | |||
"Specifies a specific 802.1Q tag type | "Specifies a specific 802.1Q tag type | |||
of tag-1."; | of tag-1."; | |||
} | } | |||
skipping to change at line 4935 ¶ | skipping to change at line 4763 ¶ | |||
tagged interface is 'priority-tagged'."; | tagged interface is 'priority-tagged'."; | |||
} | } | |||
description | description | |||
"Priority tagged container."; | "Priority tagged container."; | |||
leaf tag-type { | leaf tag-type { | |||
type identityref { | type identityref { | |||
base vpn-common:tag-type; | base vpn-common:tag-type; | |||
} | } | |||
default "vpn-common:c-vlan"; | default "vpn-common:c-vlan"; | |||
description | description | |||
"Tag type. By default, the tag type is | "Tag type. By default, the tag type is | |||
'c-vlan'."; | 'c-vlan'."; | |||
} | } | |||
} | } | |||
container qinq { | container qinq { | |||
when "derived-from-or-self(../encap-type, " | when "derived-from-or-self(../encap-type, " | |||
+ "'vpn-common:qinq')" { | + "'vpn-common:qinq')" { | |||
description | description | |||
"Only applies when the type of the tagged | "Only applies when the type of the tagged | |||
interface is QinQ."; | interface is 'QinQ'."; | |||
} | } | |||
description | description | |||
"Includes QinQ parameters."; | "Includes QinQ parameters."; | |||
leaf tag-type { | leaf tag-type { | |||
type identityref { | type identityref { | |||
base vpn-common:tag-type; | base vpn-common:tag-type; | |||
} | } | |||
default "vpn-common:s-c-vlan"; | default "vpn-common:s-c-vlan"; | |||
description | description | |||
"Tag type. By default, the tag type is | "Tag type. By default, the tag type is | |||
's-c-vlan'."; | 's-c-vlan'."; | |||
} | } | |||
leaf svlan-id { | leaf svlan-id { | |||
type dot1q-types:vlanid; | type dot1q-types:vlanid; | |||
mandatory true; | mandatory true; | |||
description | description | |||
"S-VLAN identifier."; | "S-VLAN identifier."; | |||
} | } | |||
leaf cvlan-id { | leaf cvlan-id { | |||
type dot1q-types:vlanid; | type dot1q-types:vlanid; | |||
mandatory true; | mandatory true; | |||
description | description | |||
"C-VLAN identifier."; | "C-VLAN identifier."; | |||
} | } | |||
container tag-operations { | container tag-operations { | |||
description | description | |||
"Sets the tag manipulation policy for this | "Sets the tag manipulation policy for this | |||
VPN network access. It defines a set of | VPN network access. It defines a set of | |||
tag manipulations that allow for the | tag manipulations that allow for the | |||
insertion, removal, or rewriting | insertion, removal, or rewriting | |||
of 802.1Q VLAN tags. These operations are | of 802.1Q VLAN tags. These operations are | |||
indicated for the CE-PE direction. | indicated for the CE-PE direction. | |||
By default, tag operations are symmetric. | By default, tag operations are symmetric. | |||
As such, the reverse tag operation is | As such, the reverse tag operation is | |||
assumed on the PE-CE direction."; | assumed on the PE-CE direction."; | |||
choice op-choice { | choice op-choice { | |||
description | description | |||
"Selects the tag rewriting policy for a | "Selects the tag rewriting policy for a | |||
VPN network access."; | VPN network access."; | |||
leaf pop { | leaf pop { | |||
type uint8 { | type uint8 { | |||
range "1|2"; | range "1|2"; | |||
} | } | |||
description | description | |||
"Pop one or two tags as a function | "Pops one or two tags as a function | |||
of the indicated pop value."; | of the indicated pop value."; | |||
} | } | |||
leaf push { | leaf push { | |||
type empty; | type empty; | |||
description | description | |||
"Push one or two tags defined by the | "Pushes one or two tags defined by the | |||
tag-1 and tag-2 leaves. It is | tag-1 and tag-2 leaves. It is | |||
assumed that, absent any policy, the | assumed that, absent any policy, the | |||
default value of 0 will be used for | default value of 0 will be used for | |||
PCP setting."; | PCP setting."; | |||
} | } | |||
leaf translate { | leaf translate { | |||
type uint8 { | type uint8 { | |||
range "1|2"; | range "1|2"; | |||
} | } | |||
description | description | |||
"Translate one or two outer tags. PCP | "Translates one or two outer tags. PCP | |||
bits are preserved. | bits are preserved. | |||
The following operations are | The following operations are | |||
supported: | supported: | |||
- translate 1 with tag-1 leaf is | - translate 1 with tag-1 leaf is | |||
provided: only the outermost tag is | provided: only the outermost tag is | |||
translated to the value in tag-1. | translated to the value in tag-1. | |||
- translate 2 with both tag-1 and | - translate 2 with both tag-1 and | |||
skipping to change at line 5033 ¶ | skipping to change at line 4861 ¶ | |||
provided: the outer tag is popped | provided: the outer tag is popped | |||
while the inner tag is translated | while the inner tag is translated | |||
to the value in tag-1."; | to the value in tag-1."; | |||
} | } | |||
} | } | |||
leaf tag-1 { | leaf tag-1 { | |||
when 'not(../pop)'; | when 'not(../pop)'; | |||
type dot1q-types:vlanid; | type dot1q-types:vlanid; | |||
description | description | |||
"A first tag to be used for push or | "A first tag to be used for push or | |||
translate operations. This tag will be | translate operations. This tag will be | |||
used as the outermost tag as a result | used as the outermost tag as a result | |||
of the tag operation."; | of the tag operation."; | |||
} | } | |||
leaf tag-1-type { | leaf tag-1-type { | |||
type dot1q-types:dot1q-tag-type; | type dot1q-types:dot1q-tag-type; | |||
default "dot1q-types:s-vlan"; | default "dot1q-types:s-vlan"; | |||
description | description | |||
"Specifies a specific 802.1Q tag type | "Specifies a specific 802.1Q tag type | |||
of tag-1."; | of tag-1."; | |||
} | } | |||
skipping to change at line 5092 ¶ | skipping to change at line 4920 ¶ | |||
base lacp-mode; | base lacp-mode; | |||
} | } | |||
description | description | |||
"Indicates the LACP mode."; | "Indicates the LACP mode."; | |||
} | } | |||
leaf speed { | leaf speed { | |||
type uint32; | type uint32; | |||
units "mbps"; | units "mbps"; | |||
default "10"; | default "10"; | |||
description | description | |||
"LACP speed. This low default value | "LACP speed. This low default value | |||
is inherited from the L2SM."; | is inherited from the L2SM."; | |||
} | } | |||
leaf mini-link-num { | leaf mini-link-num { | |||
type uint32; | type uint32; | |||
description | description | |||
"Defines the minimum number of links that | "Defines the minimum number of links that | |||
must be active before the aggregating | must be active before the aggregating | |||
link is put into service."; | link is put into service."; | |||
} | } | |||
leaf system-id { | leaf system-id { | |||
skipping to change at line 5157 ¶ | skipping to change at line 4985 ¶ | |||
} | } | |||
leaf link-mtu { | leaf link-mtu { | |||
type uint32; | type uint32; | |||
units "bytes"; | units "bytes"; | |||
description | description | |||
"Link MTU size."; | "Link MTU size."; | |||
} | } | |||
container oam-802.3ah-link { | container oam-802.3ah-link { | |||
if-feature "oam-3ah"; | if-feature "oam-3ah"; | |||
description | description | |||
"Container for oam 802.3ah link."; | "Container for the OAM 802.3ah | |||
link."; | ||||
leaf enable { | leaf enable { | |||
type boolean; | type boolean; | |||
default "false"; | default "false"; | |||
description | description | |||
"Indicates support of OAM 802.3ah | "Indicates support of the OAM | |||
link."; | 802.3ah link."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
leaf flow-control { | leaf flow-control { | |||
type boolean; | type boolean; | |||
default "false"; | default "false"; | |||
description | description | |||
"Indicates whether flow control is | "Indicates whether flow control is | |||
supported."; | supported."; | |||
} | } | |||
leaf lldp { | leaf lldp { | |||
type boolean; | type boolean; | |||
default "false"; | default "false"; | |||
description | description | |||
"Indicates whether Link Layer Discovery | "Indicates whether the Link Layer | |||
Protocol (LLDP) is supported."; | Discovery Protocol (LLDP) is | |||
supported."; | ||||
} | } | |||
} | } | |||
container split-horizon { | container split-horizon { | |||
description | description | |||
"Configuration with split horizon enabled."; | "Configuration with Split Horizon enabled."; | |||
leaf group-name { | leaf group-name { | |||
type string; | type string; | |||
description | description | |||
"Group name of the Split Horizon."; | "Group name of the Split Horizon."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
choice signaling-option { | choice signaling-option { | |||
description | description | |||
skipping to change at line 5254 ¶ | skipping to change at line 5084 ¶ | |||
"Used for EVPN."; | "Used for EVPN."; | |||
leaf df-preference { | leaf df-preference { | |||
type uint16; | type uint16; | |||
default "32767"; | default "32767"; | |||
description | description | |||
"Defines a 2-octet value that indicates | "Defines a 2-octet value that indicates | |||
the PE preference to become the DF in | the PE preference to become the DF in | |||
the ES. | the ES. | |||
The preference value is only applicable | The preference value is only applicable | |||
to the preference based method."; | to the preference-based method."; | |||
reference | reference | |||
"RFC 8584: Framework for Ethernet VPN | "RFC 8584: Framework for Ethernet VPN | |||
Designated Forwarder Election | Designated Forwarder Election | |||
Extensibility"; | Extensibility"; | |||
} | } | |||
container vpws-service-instance { | container vpws-service-instance { | |||
when "derived-from-or-self(../../../../../" | when "derived-from-or-self(../../../../../" | |||
+ "vpn-type, 'vpn-common:vpws-evpn')" { | + "vpn-type, 'vpn-common:vpws-evpn')" { | |||
description | description | |||
"Only applies for EVPN-VPWS."; | "Only applies for EVPN-VPWS."; | |||
skipping to change at line 5296 ¶ | skipping to change at line 5126 ¶ | |||
} | } | |||
case auto-assigned { | case auto-assigned { | |||
description | description | |||
"The local VSI is auto-assigned."; | "The local VSI is auto-assigned."; | |||
container local-vsi-auto { | container local-vsi-auto { | |||
description | description | |||
"The local VSI is auto-assigned."; | "The local VSI is auto-assigned."; | |||
choice auto-mode { | choice auto-mode { | |||
description | description | |||
"Indicates the auto-assignment | "Indicates the auto-assignment | |||
mode of local VSI. VSI can be | mode of local VSI. VSI can be | |||
automatically assigned either | automatically assigned either | |||
with or without indicating a | with or without indicating a | |||
pool from which the VSI | pool from which the VSI | |||
should be taken. | should be taken. | |||
For both cases, the server | For both cases, the server | |||
will auto-assign a local VSI | will auto-assign a local VSI | |||
value and use that value."; | value and use that value."; | |||
case from-pool { | case from-pool { | |||
leaf vsi-pool-name { | leaf vsi-pool-name { | |||
skipping to change at line 5358 ¶ | skipping to change at line 5188 ¶ | |||
} | } | |||
case auto-assigned { | case auto-assigned { | |||
description | description | |||
"The remote VSI is auto-assigned."; | "The remote VSI is auto-assigned."; | |||
container remote-vsi-auto { | container remote-vsi-auto { | |||
description | description | |||
"The remote VSI is auto-assigned."; | "The remote VSI is auto-assigned."; | |||
choice auto-mode { | choice auto-mode { | |||
description | description | |||
"Indicates the auto-assignment | "Indicates the auto-assignment | |||
mode of remote VSI. VSI can be | mode of remote VSI. VSI can be | |||
automatically assigned either | automatically assigned either | |||
with or without indicating a | with or without indicating a | |||
pool from which the VSI | pool from which the VSI | |||
should be taken. | should be taken. | |||
For both cases, the server | For both cases, the server | |||
will auto-assign a remote VSI | will auto-assign a remote VSI | |||
value and use that value."; | value and use that value."; | |||
case from-pool { | case from-pool { | |||
leaf vsi-pool-name { | leaf vsi-pool-name { | |||
skipping to change at line 5416 ¶ | skipping to change at line 5246 ¶ | |||
type string; | type string; | |||
description | description | |||
"Indicates the group-id to which the network | "Indicates the group-id to which the network | |||
access belongs to."; | access belongs to."; | |||
} | } | |||
leaf precedence { | leaf precedence { | |||
type identityref { | type identityref { | |||
base precedence-type; | base precedence-type; | |||
} | } | |||
description | description | |||
"Defining service redundancy in transport | "Defines service redundancy in transport | |||
network."; | network."; | |||
} | } | |||
leaf ethernet-segment-identifier { | leaf ethernet-segment-identifier { | |||
type l2vpn-es:es-ref; | type l2vpn-es:es-ref; | |||
description | description | |||
"Reference to the ESI associated with the VPN | "Reference to the ESI associated with the VPN | |||
network access."; | network access."; | |||
} | } | |||
} | } | |||
container ethernet-service-oam { | container ethernet-service-oam { | |||
skipping to change at line 5464 ¶ | skipping to change at line 5294 ¶ | |||
} | } | |||
uses y-1731; | uses y-1731; | |||
} | } | |||
container service { | container service { | |||
description | description | |||
"Container for service"; | "Container for service"; | |||
leaf mtu { | leaf mtu { | |||
type uint32; | type uint32; | |||
units "bytes"; | units "bytes"; | |||
description | description | |||
"Layer 2 MTU, it is also known as the maximum | "Layer 2 MTU; it is also known as the maximum | |||
transmission unit or maximum frame size."; | transmission unit or maximum frame size."; | |||
} | } | |||
container svc-pe-to-ce-bandwidth { | container svc-pe-to-ce-bandwidth { | |||
if-feature "vpn-common:inbound-bw"; | if-feature "vpn-common:inbound-bw"; | |||
description | description | |||
"From the customer site's perspective, the | "From the customer site's perspective, the | |||
service inbound bandwidth of the connection | service inbound bandwidth of the connection | |||
or download bandwidth from the service | or download bandwidth from the service | |||
provider the site. Note that the L2SM uses | provider to the site. Note that the L2SM uses | |||
'input-bandwidth' to refer to the same | 'input-bandwidth' to refer to the same | |||
concept."; | concept."; | |||
list pe-to-ce-bandwidth { | list pe-to-ce-bandwidth { | |||
key "bw-type"; | key "bw-type"; | |||
description | description | |||
"List for PE-to-CE bandwidth data nodes."; | "List for PE-to-CE bandwidth data nodes."; | |||
leaf bw-type { | leaf bw-type { | |||
type identityref { | type identityref { | |||
base vpn-common:bw-type; | base vpn-common:bw-type; | |||
} | } | |||
skipping to change at line 5496 ¶ | skipping to change at line 5326 ¶ | |||
} | } | |||
choice type { | choice type { | |||
description | description | |||
"Choice based upon bandwidth type."; | "Choice based upon bandwidth type."; | |||
case per-cos { | case per-cos { | |||
description | description | |||
"Bandwidth per CoS."; | "Bandwidth per CoS."; | |||
list cos { | list cos { | |||
key "cos-id"; | key "cos-id"; | |||
description | description | |||
"List of class of services."; | "List of Class of Services."; | |||
leaf cos-id { | leaf cos-id { | |||
type uint8; | type uint8; | |||
description | description | |||
"Identifier of the CoS, indicated by | "Identifier of the CoS, indicated by | |||
DSCP or a CE-CLAN CoS (802.1p) value | a Differentiated Services Code Point | |||
in the service frame."; | (DSCP) or a CE-CLAN CoS (802.1p) | |||
value in the service frame."; | ||||
reference | reference | |||
"IEEE Std 802.1Q: Bridges and Bridged | "IEEE Std 802.1Q: Bridges and Bridged | |||
Networks"; | Networks"; | |||
} | } | |||
uses bandwidth-parameters; | uses bandwidth-parameters; | |||
} | } | |||
} | } | |||
case other { | case other { | |||
description | description | |||
"Other bandwidth types."; | "Other bandwidth types."; | |||
skipping to change at line 5524 ¶ | skipping to change at line 5355 ¶ | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
container svc-ce-to-pe-bandwidth { | container svc-ce-to-pe-bandwidth { | |||
if-feature "vpn-common:outbound-bw"; | if-feature "vpn-common:outbound-bw"; | |||
description | description | |||
"From the customer site's perspective, | "From the customer site's perspective, | |||
the service outbound bandwidth of the | the service outbound bandwidth of the | |||
connection or upload bandwidth from | connection or upload bandwidth from | |||
the CE to the PE. Note that the L2SM uses | the CE to the PE. Note that the L2SM uses | |||
'output-bandwidth' to refer to the same | 'output-bandwidth' to refer to the same | |||
concept."; | concept."; | |||
list ce-to-pe-bandwidth { | list ce-to-pe-bandwidth { | |||
key "bw-type"; | key "bw-type"; | |||
description | description | |||
"List for CE-to-PE bandwidth."; | "List for CE-to-PE bandwidth."; | |||
leaf bw-type { | leaf bw-type { | |||
type identityref { | type identityref { | |||
base vpn-common:bw-type; | base vpn-common:bw-type; | |||
} | } | |||
skipping to change at line 5547 ¶ | skipping to change at line 5378 ¶ | |||
} | } | |||
choice type { | choice type { | |||
description | description | |||
"Choice based upon bandwidth type."; | "Choice based upon bandwidth type."; | |||
case per-cos { | case per-cos { | |||
description | description | |||
"Bandwidth per CoS."; | "Bandwidth per CoS."; | |||
list cos { | list cos { | |||
key "cos-id"; | key "cos-id"; | |||
description | description | |||
"List of class of services."; | "List of Class of Services."; | |||
leaf cos-id { | leaf cos-id { | |||
type uint8; | type uint8; | |||
description | description | |||
"Identifier of the CoS, indicated by | "Identifier of the CoS, indicated by | |||
DSCP or a CE-CLAN CoS (802.1p) value | DSCP or a CE-CLAN CoS (802.1p) value | |||
in the service frame."; | in the service frame."; | |||
reference | reference | |||
"IEEE Std 802.1Q: Bridges and Bridged | "IEEE Std 802.1Q: Bridges and Bridged | |||
Networks"; | Networks"; | |||
} | } | |||
skipping to change at line 5668 ¶ | skipping to change at line 5499 ¶ | |||
} | } | |||
} | } | |||
} | } | |||
container qos-profile { | container qos-profile { | |||
description | description | |||
"QoS profile configuration."; | "QoS profile configuration."; | |||
list qos-profile { | list qos-profile { | |||
key "profile"; | key "profile"; | |||
description | description | |||
"QoS profile. | "QoS profile. | |||
Can be standard profile or customized | Can be a standard or customized | |||
profile."; | profile."; | |||
leaf profile { | leaf profile { | |||
type leafref { | type leafref { | |||
path "/l2vpn-ntw/vpn-profiles" | path "/l2vpn-ntw/vpn-profiles" | |||
+ "/valid-provider-identifiers" | + "/valid-provider-identifiers" | |||
+ "/qos-profile-identifier/id"; | + "/qos-profile-identifier/id"; | |||
} | } | |||
description | description | |||
"QoS profile to be used."; | "QoS profile to be used."; | |||
} | } | |||
skipping to change at line 5697 ¶ | skipping to change at line 5528 ¶ | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
container mac-policies { | container mac-policies { | |||
description | description | |||
"Container for MAC-related policies."; | "Container for MAC-related policies."; | |||
list access-control-list { | list access-control-list { | |||
key "name"; | key "name"; | |||
description | description | |||
"Container for access control List."; | "Container for the Access Control List | |||
(ACL)."; | ||||
leaf name { | leaf name { | |||
type string; | type string; | |||
description | description | |||
"Specifies the name of the ACL."; | "Specifies the name of the ACL."; | |||
} | } | |||
leaf-list src-mac-address { | leaf-list src-mac-address { | |||
type yang:mac-address; | type yang:mac-address; | |||
description | description | |||
"Specifies the source MAC address."; | "Specifies the source MAC address."; | |||
} | } | |||
skipping to change at line 5773 ¶ | skipping to change at line 5605 ¶ | |||
duplication, where a 'duplicate MAC | duplication, where a 'duplicate MAC | |||
address' situation has occurred and | address' situation has occurred and | |||
the duplicate MAC address has been | the duplicate MAC address has been | |||
added to a list of duplicate MAC | added to a list of duplicate MAC | |||
addresses."; | addresses."; | |||
} | } | |||
leaf retry-timer { | leaf retry-timer { | |||
type uint32; | type uint32; | |||
units "seconds"; | units "seconds"; | |||
description | description | |||
"The retry timer. When the retry timer | "The retry timer. When the retry timer | |||
expires, the duplicate MAC address will | expires, the duplicate MAC address will | |||
be flushed from the MAC-VRF."; | be flushed from the MAC-VRF."; | |||
} | } | |||
leaf protection-type { | leaf protection-type { | |||
type identityref { | type identityref { | |||
base loop-prevention-type; | base loop-prevention-type; | |||
} | } | |||
default "trap"; | default "trap"; | |||
description | description | |||
"Protection type"; | "Protection type"; | |||
} | } | |||
} | } | |||
container mac-addr-limit { | container mac-addr-limit { | |||
description | description | |||
"Container of MAC-Addr limit configurations"; | "Container of MAC-Addr limit | |||
configurations."; | ||||
leaf limit-number { | leaf limit-number { | |||
type uint16; | type uint16; | |||
default "2"; | default "2"; | |||
description | description | |||
"Maximum number of MAC addresses learned | "Maximum number of MAC addresses learned | |||
from the subscriber for a single service | from the subscriber for a single service | |||
instance."; | instance."; | |||
} | } | |||
leaf time-interval { | leaf time-interval { | |||
type uint32; | type uint32; | |||
units "milliseconds"; | units "milliseconds"; | |||
default "300"; | default "300"; | |||
description | description | |||
"The aging time of the mac address."; | "The aging time of the MAC address."; | |||
} | } | |||
leaf action { | leaf action { | |||
type identityref { | type identityref { | |||
base mac-action; | base mac-action; | |||
} | } | |||
default "warning"; | default "warning"; | |||
description | description | |||
"Specifies the action when the upper limit | "Specifies the action when the upper limit | |||
is exceeded: drop the packet, flood the | is exceeded: drop the packet, flood the | |||
packet, or log a warning message (without | packet, or log a warning message (without | |||
dropping the packet)."; | dropping the packet)."; | |||
} | } | |||
} | } | |||
} | } | |||
container broadcast-unknown-unicast-multicast { | container broadcast-unknown-unicast-multicast { | |||
description | description | |||
"Container of broadcast, unknown unicast, and | "Container of broadcast, unknown unicast, or | |||
multicast configurations"; | multicast configurations."; | |||
leaf multicast-site-type { | leaf multicast-site-type { | |||
type enumeration { | type enumeration { | |||
enum receiver-only { | enum receiver-only { | |||
description | description | |||
"The site only has receivers."; | "The site only has receivers."; | |||
} | } | |||
enum source-only { | enum source-only { | |||
description | description | |||
"The site only has sources."; | "The site only has sources."; | |||
} | } | |||
skipping to change at line 5844 ¶ | skipping to change at line 5677 ¶ | |||
receivers."; | receivers."; | |||
} | } | |||
} | } | |||
default "source-receiver"; | default "source-receiver"; | |||
description | description | |||
"Type of the multicast site."; | "Type of the multicast site."; | |||
} | } | |||
list multicast-gp-address-mapping { | list multicast-gp-address-mapping { | |||
key "id"; | key "id"; | |||
description | description | |||
"List of Port to group mappings."; | "List of port-to-group mappings."; | |||
leaf id { | leaf id { | |||
type uint16; | type uint16; | |||
description | description | |||
"Unique identifier for the mapping."; | "Unique identifier for the mapping."; | |||
} | } | |||
leaf vlan-id { | leaf vlan-id { | |||
type uint32; | type uint32; | |||
mandatory true; | mandatory true; | |||
description | description | |||
"The VLAN ID of the multicast group."; | "The VLAN ID of the multicast group."; | |||
skipping to change at line 5885 ¶ | skipping to change at line 5718 ¶ | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
<CODE ENDS> ]]></artwork> | ]]></sourcecode> | |||
</figure> | ||||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="Security" title="Security Considerations"> | <section anchor="Security" numbered="true" toc="default"> | |||
<t>The YANG modules specified in this document defines schemas for data | <name>Security Considerations</name> | |||
<t>The YANG modules specified in this document define schemas for data | ||||
that are designed to be accessed via network management protocols such | that are designed to be accessed via network management protocols such | |||
as NETCONF <xref target="RFC6241"></xref> or RESTCONF <xref | as NETCONF <xref target="RFC6241" format="default"/> or RESTCONF <xref tar | |||
target="RFC8040"></xref>. The lowest NETCONF layer is the secure | get="RFC8040" format="default"/>. The lowest NETCONF layer is the secure | |||
transport layer, and the mandatory-to-implement secure transport is | transport layer, and the mandatory-to-implement secure transport is | |||
Secure Shell (SSH) <xref target="RFC6242"></xref>. The lowest RESTCONF | Secure Shell (SSH) <xref target="RFC6242" format="default"/>. The lowest R ESTCONF | |||
layer is HTTPS, and the mandatory-to-implement secure transport is TLS | layer is HTTPS, and the mandatory-to-implement secure transport is TLS | |||
<xref target="RFC8446"></xref>.</t> | <xref target="RFC8446" format="default"/>.</t> | |||
<t>The Network Configuration Access Control Model (NACM) <xref target="RFC8 | ||||
<t>The Network Configuration Access Control Model (NACM) <xref | 341" format="default"/> provides the means to restrict access for | |||
target="RFC8341"></xref> provides the means to restrict access for | ||||
particular NETCONF or RESTCONF users to a preconfigured subset of all | particular NETCONF or RESTCONF users to a preconfigured subset of all | |||
available NETCONF or RESTCONF protocol operations and content.</t> | available NETCONF or RESTCONF protocol operations and content.</t> | |||
<t>There are a number of data nodes defined in "ietf-l2vpn-ntw" and | <t>There are a number of data nodes defined in the "ietf-l2vpn-ntw" and | |||
"ietf-ethernet-segment" YANG modules that are | "ietf-ethernet-segment" YANG modules that are | |||
writable/creatable/deletable (i.e., config true, which is the default). | writable/creatable/deletable (i.e., config true, which is the default). | |||
These data nodes may be considered sensitive or vulnerable in some | These data nodes may be considered sensitive or vulnerable in some | |||
network environments. Write operations (e.g., edit-config) and delete | network environments. Write operations (e.g., edit-config) and delete | |||
operations to these data nodes without proper protection or | operations to these data nodes without proper protection or | |||
authentication can have a negative effect on network operations. These | authentication can have a negative effect on network operations. These | |||
are the subtrees and data nodes and their sensitivity/vulnerability in | are the subtrees and data nodes and their sensitivity/vulnerability in | |||
the "ietf-l2vpn-ntw" and "ietf-ethernet-segment" modules: <list | the "ietf-l2vpn-ntw" and "ietf-ethernet-segment" modules: </t> | |||
style="symbols"> | ||||
<t>'vpn-profiles': This container includes a set of sensitive data | ||||
that influence how the L3VPN service is delivered. For example, an | ||||
attacker who has access to these data nodes may be able to | ||||
manipulate routing policies, QoS policies, or encryption properties. | ||||
These data nodes are defined with "nacm:default-deny-write" tagging | ||||
<xref target="RFC9181"></xref>.</t> | ||||
<t>'ethernet-segments' and 'vpn-services': An attacker who is able | <dl> | |||
to access network nodes can undertake various attacks, such as | <dt>'vpn-profiles': | |||
deleting a running L2VPN service, interrupting all the traffic of a | </dt> | |||
client. In addition, an attacker may modify the attributes of a | <dd> This container includes a set of sensitive data that influences | |||
running service (e.g., QoS, bandwidth) or an ES, leading to | how the L3VPN service is delivered. For example, an attacker who has | |||
malfunctioning of the service and therefore to SLA violations. In | access to these data nodes may be able to manipulate routing policies, | |||
addition, an attacker could attempt to create an L2VPN service, add | QoS policies, or encryption properties. These data nodes are defined | |||
a new network access, or intercept/redirect the traffic to a | with "nacm:default-deny-write" tagging <xref target="RFC9181" | |||
non-authorized node. In addition to using NACM to prevent authorized | format="default"/>. | |||
access, such activity can be detected by adequately monitoring and | </dd> | |||
tracking network configuration changes.</t> | ||||
</list></t> | ||||
<t>Some of the readable data nodes in the "ietf-l2vpn-ntw" YANG module | <dt>'ethernet-segments' and 'vpn-services': | |||
</dt> | ||||
<dd>An attacker who is able to access network nodes can undertake | ||||
various attacks, such as deleting a running L2VPN service, | ||||
interrupting all the traffic of a client. In addition, an attacker may | ||||
modify the attributes of a running service (e.g., QoS, bandwidth) or | ||||
an ES, leading to malfunctioning of the service and therefore to SLA | ||||
violations. In addition, an attacker could attempt to create an L2VPN | ||||
service, add a new network access, or intercept/redirect the traffic | ||||
to a non-authorized node. In addition to using NACM to prevent | ||||
authorized access, such activity can be detected by adequately | ||||
monitoring and tracking network configuration changes. | ||||
</dd> | ||||
</dl> | ||||
<t>Some of the readable data nodes in the "ietf-l2vpn-ntw" YANG module | ||||
may be considered sensitive or vulnerable in some network environments. | may be considered sensitive or vulnerable in some network environments. | |||
It is thus important to control read access (e.g., via get, get-config, | It is thus important to control read access (e.g., via get, get-config, | |||
or notification) to these data nodes. These are the subtrees and data | or notification) to these data nodes. | |||
These are the subtrees and data | ||||
nodes and their sensitivity/vulnerability:</t> | nodes and their sensitivity/vulnerability:</t> | |||
<t><list style="symbols"> | <dl> | |||
<t>'customer-name' and 'ip-connection': An attacker can retrieve | <dt>'customer-name' and 'ip-connection': | |||
privacy-related information which can be used to track a customer. | </dt> | |||
Disclosing such information may be considered as a violation of the | <dd>An attacker can retrieve privacy-related information that can be used to | |||
customer-provider trust relationship.</t> | track a customer. Disclosing such information may be considered a | |||
</list></t> | violation of the customer-provider trust relationship. | |||
</dd> | ||||
</dl> | ||||
<t>Both "iana-bgp-l2-encaps" and "iana-pseudowire-types" modules define | <t>Both "iana-bgp-l2-encaps" and "iana-pseudowire-types" modules define | |||
YANG identities for encapsulation/pseudowires types. These identities | YANG identities for encapsulation/pseudowires types. These identities | |||
are intended to be referenced by other YANG modules, and by themselves | are intended to be referenced by other YANG modules and by themselves | |||
do not expose any nodes which are writable, contain read-only state, or | do not expose any nodes that are writable or contain read-only state or | |||
RPCs.</t> | RPCs.</t> | |||
</section> | </section> | |||
<section anchor="IANA" numbered="true" toc="default"> | ||||
<name>IANA Considerations</name> | ||||
<section numbered="true" toc="default"> | ||||
<name>Registering YANG Modules</name> | ||||
<t>IANA has registered the following URIs in the | ||||
"ns" subregistry within the "IETF XML Registry" <xref target="RFC3688" f | ||||
ormat="default"/>:</t> | ||||
<section anchor="IANA" title="IANA Considerations"> | <dl spacing="compact"> | |||
<section title="Registering YANG Modules"> | <dt>URI: | |||
<t>This document requests IANA to register the following URIs in the | </dt> | |||
"ns" subregistry within the "IETF XML Registry" <xref | <dd>urn:ietf:params:xml:ns:yang:iana-bgp-l2-encaps | |||
target="RFC3688"></xref>:</t> | </dd> | |||
<figure> | <dt>Registrant Contact: | |||
<artwork><![CDATA[ URI: urn:ietf:params:xml:ns:yang:iana-bgp-l2-e | </dt> | |||
ncaps | <dd>The IESG. | |||
Registrant Contact: The IESG. | </dd> | |||
XML: N/A; the requested URI is an XML namespace. | ||||
URI: urn:ietf:params:xml:ns:yang:iana-pseudowire-types | <dt>XML: | |||
Registrant Contact: The IESG. | </dt> | |||
XML: N/A; the requested URI is an XML namespace. | <dd>N/A; the requested URI is an XML namespace. | |||
</dd> | ||||
</dl> | ||||
URI: urn:ietf:params:xml:ns:yang:ietf-ethernet-segment | <dl spacing="compact"> | |||
Registrant Contact: The IESG. | <dt>URI: | |||
XML: N/A; the requested URI is an XML namespace. | </dt> | |||
<dd>urn:ietf:params:xml:ns:yang:iana-pseudowire-types | ||||
</dd> | ||||
URI: urn:ietf:params:xml:ns:yang:ietf-l2vpn-ntw | <dt>Registrant Contact: | |||
Registrant Contact: The IESG. | </dt> | |||
XML: N/A; the requested URI is an XML namespace.]]></artwork> | <dd>The IESG. | |||
</figure> | </dd> | |||
<t>This document requests IANA to register the following YANG modules | <dt>XML: | |||
in the "YANG Module Names" subregistry <xref target="RFC6020"></xref> | </dt> | |||
<dd>N/A; the requested URI is an XML namespace. | ||||
</dd> | ||||
</dl> | ||||
<dl spacing="compact"> | ||||
<dt>URI: | ||||
</dt> | ||||
<dd>urn:ietf:params:xml:ns:yang:ietf-ethernet-segment | ||||
</dd> | ||||
<dt>Registrant Contact: | ||||
</dt> | ||||
<dd>The IESG. | ||||
</dd> | ||||
<dt>XML: | ||||
</dt> | ||||
<dd>N/A; the requested URI is an XML namespace. | ||||
</dd> | ||||
</dl> | ||||
<dl spacing="compact"> | ||||
<dt>URI: | ||||
</dt> | ||||
<dd>urn:ietf:params:xml:ns:yang:ietf-l2vpn-ntw | ||||
</dd> | ||||
<dt>Registrant Contact: | ||||
</dt> | ||||
<dd>The IESG. | ||||
</dd> | ||||
<dt>XML: | ||||
</dt> | ||||
<dd>N/A; the requested URI is an XML namespace. | ||||
</dd> | ||||
</dl> | ||||
<t>IANA has registered the following YANG modules | ||||
in the "YANG Module Names" subregistry <xref target="RFC6020" format="de | ||||
fault"/> | ||||
within the "YANG Parameters" registry:</t> | within the "YANG Parameters" registry:</t> | |||
<figure> | <dl spacing="compact"> | |||
<artwork><![CDATA[ name: iana-bgp-l2-encaps | <dt>name:</dt> | |||
namespace: urn:ietf:params:xml:ns:yang:iana-bgp-l2-encaps | <dd>iana-bgp-l2-encaps | |||
maintained by IANA: Y | </dd> | |||
prefix: iana-bgp-l2-encaps | ||||
reference: RFC XXXX | ||||
name: iana-pseudowire-types | <dt>namespace:</dt> | |||
namespace: urn:ietf:params:xml:ns:yang:iana-pseudowire-types | <dd>urn:ietf:params:xml:ns:yang:iana-bgp-l2-encaps | |||
maintained by IANA: Y | </dd> | |||
prefix: iana-pw-types | ||||
reference: RFC XXXX | ||||
name: ietf-ethernet-segment | <dt>maintained by IANA:</dt> | |||
namespace: urn:ietf:params:xml:ns:yang:ietf-ethernet-segment | <dd>Y | |||
maintained by IANA: N | </dd> | |||
prefix: l2vpn-es | ||||
reference: RFC XXXX | ||||
name: ietf-l2vpn-ntw | <dt>prefix:</dt> | |||
namespace: urn:ietf:params:xml:ns:yang:ietf-l2vpn-ntw | <dd>iana-bgp-l2-encaps | |||
maintained by IANA: N | </dd> | |||
prefix: l2vpn-ntw | ||||
reference: RFC XXXX]]></artwork> | ||||
</figure> | ||||
<t></t> | <dt>reference:</dt> | |||
</section> | <dd>RFC 9291 | |||
</dd> | ||||
<section title="BGP Layer 2 Encapsulation Types"> | </dl> | |||
<dl spacing="compact"> | ||||
<dt>name:</dt> | ||||
<dd>iana-pseudowire-types | ||||
</dd> | ||||
<dt>namespace:</dt> | ||||
<dd>urn:ietf:params:xml:ns:yang:iana-pseudowire-types | ||||
</dd> | ||||
<dt>maintained by IANA:</dt> | ||||
<dd>Y | ||||
</dd> | ||||
<dt>prefix:</dt> | ||||
<dd>iana-pw-types | ||||
</dd> | ||||
<dt>reference:</dt> | ||||
<dd>RFC 9291 | ||||
</dd> | ||||
</dl> | ||||
<dl spacing="compact"> | ||||
<dt>name:</dt> | ||||
<dd>ietf-ethernet-segment | ||||
</dd> | ||||
<dt>namespace:</dt> | ||||
<dd>urn:ietf:params:xml:ns:yang:ietf-ethernet-segment | ||||
</dd> | ||||
<dt>maintained by IANA:</dt> | ||||
<dd>N | ||||
</dd> | ||||
<dt>prefix:</dt> | ||||
<dd>l2vpn-es | ||||
</dd> | ||||
<dt>reference:</dt> | ||||
<dd>RFC 9291 | ||||
</dd> | ||||
</dl> | ||||
<dl spacing="compact"> | ||||
<dt>name:</dt> | ||||
<dd>ietf-l2vpn-ntw | ||||
</dd> | ||||
<dt>namespace:</dt> | ||||
<dd>urn:ietf:params:xml:ns:yang:ietf-l2vpn-ntw | ||||
</dd> | ||||
<dt>maintained by IANA:</dt> | ||||
<dd>N | ||||
</dd> | ||||
<dt>prefix:</dt> | ||||
<dd>l2vpn-ntw | ||||
</dd> | ||||
<dt>reference:</dt> | ||||
<dd>RFC 9291 | ||||
</dd> | ||||
</dl> | ||||
<t/> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>BGP Layer 2 Encapsulation Types</name> | ||||
<t>This document defines the initial version of the IANA-maintained | <t>This document defines the initial version of the IANA-maintained | |||
"iana-bgp-l2-encaps" YANG module (<xref target="iana-bgp"></xref>). | "iana-bgp-l2-encaps" YANG module (<xref target="iana-bgp" format="defaul | |||
IANA is requested to add this note to the registry:<list style="empty"> | t"/>). | |||
<t>BGP Layer 2 encapsulation types must not be directly added to | IANA has added this note to the "YANG Module Names" registry:</t> | |||
<ul empty="true" spacing="normal"> | ||||
<li>BGP Layer 2 encapsulation types must not be directly added to | ||||
the "iana-bgp-l2-encaps" YANG module. They must instead be added | the "iana-bgp-l2-encaps" YANG module. They must instead be added | |||
to the "BGP Layer 2 Encapsulation Types" registry <xref | to the "BGP Layer 2 Encapsulation Types" registry at <xref target="I | |||
target="IANA-BGP-L2"></xref>.</t> | ANA-BGP-L2" format="default"/>.</li> | |||
</list></t> | </ul> | |||
<t>When a Layer 2 encapsulation type is added to the "BGP Layer 2 | <t>When a Layer 2 encapsulation type is added to the "BGP Layer 2 | |||
Encapsulation Types" registry, a new "identity" statement must be | Encapsulation Types" registry, a new "identity" statement must be | |||
added to the "iana-bgp-l2-encaps" YANG module. The name of the | added to the "iana-bgp-l2-encaps" YANG module. The name of the | |||
"identity" is a lower-case version of the encapsulation name provided | "identity" is a lower-case version of the encapsulation name provided | |||
in the description. The "identity" statement should have the following | in the description. The "identity" statement should have the following | |||
sub-statements defined:</t> | sub-statements defined:</t> | |||
<dl newline="false" spacing="normal" indent="15"> | ||||
<t><list hangIndent="15" style="hanging"> | <dt>"base":</dt> | |||
<t hangText=""base":">Contains 'bgp-l2-encaps-type'.</t> | <dd>Contains 'bgp-l2-encaps-type'.</dd> | |||
<dt>"description":</dt> | ||||
<t hangText=""description":">Replicates the description | <dd>Replicates the description | |||
from the registry.</t> | from the registry.</dd> | |||
<dt>"reference":</dt> | ||||
<t hangText=""reference":">Replicates the reference from | <dd>Replicates the reference from | |||
the registry with the title of the document added.</t> | the registry with the title of the document added.</dd> | |||
</list></t> | </dl> | |||
<t>Unassigned or reserved values are not present in the module.</t> | <t>Unassigned or reserved values are not present in the module.</t> | |||
<t>When the "iana-bgp-l2-encaps" YANG module is updated, a new | <t>When the "iana-bgp-l2-encaps" YANG module is updated, a new | |||
"revision" statement with a unique revision date must be added in | "revision" statement with a unique revision date must be added in | |||
front of the existing revision statements.</t> | front of the existing revision statements.</t> | |||
<t>IANA has added this note to <xref target="IANA-BGP-L2" format="defaul | ||||
<t>IANA is requested to add this note to <xref | t"/>:</t> | |||
target="IANA-BGP-L2"></xref>:</t> | <ul empty="true" spacing="normal"> | |||
<li>When this registry is modified, the YANG module | ||||
<t><list style="empty"> | "iana-bgp-l2-encaps" must be updated as defined in RFC 9291.</li> | |||
<t>When this registry is modified, the YANG module | </ul> | |||
"iana-bgp-l2-encaps" must be updated as defined in RFCXXXX.</t> | ||||
</list></t> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Pseudowire Types"> | <name>Pseudowire Types</name> | |||
<t>This document defines the initial version of the IANA-maintained | <t>This document defines the initial version of the IANA-maintained | |||
"iana-pseudowire-types" YANG module (<xref target="iana-pw"></xref>). | "iana-pseudowire-types" YANG module (<xref target="iana-pw" format="defa | |||
IANA is requested to add this note to the registry:<list style="empty"> | ult"/>). | |||
<t>MPLS pseudowire types must not be directly added to the | IANA has added this note to the "YANG Module Names" registry:</t> | |||
"iana-bgp-l2-encaps" YANG module. They must instead be added to | <ul empty="true" spacing="normal"> | |||
the "MPLS Pseudowire Types" registry <xref | <li>MPLS pseudowire types must not be directly added to the | |||
target="IANA-PW-Types"></xref>.</t> | "iana-pseudowire-types" YANG module. They must instead be added to | |||
</list></t> | the "MPLS Pseudowire Types" registry at <xref target="IANA-PW-TYPES" | |||
format="default"/>.</li> | ||||
</ul> | ||||
<t>When a pseudowire type is added to the "iana-pseudowire-types" | <t>When a pseudowire type is added to the "iana-pseudowire-types" | |||
registry, a new "identity" statement must be added to the | registry, a new "identity" statement must be added to the | |||
"iana-pseudowire-types" YANG module. The name of the "identity" is a | "iana-pseudowire-types" YANG module. The name of the "identity" is a | |||
lower-case version of the encapsulation name provided in the | lower-case version of the encapsulation name provided in the | |||
description. The "identity" statement should have the following | description. The "identity" statement should have the following | |||
sub-statements defined:</t> | sub-statements defined:</t> | |||
<dl newline="false" spacing="normal" indent="15"> | ||||
<t><list hangIndent="15" style="hanging"> | <dt>"base":</dt> | |||
<t hangText=""base":">Contains 'iana-pw-types'.</t> | <dd>Contains 'iana-pw-types'.</dd> | |||
<dt>"description":</dt> | ||||
<t hangText=""description":">Replicates the description | <dd>Replicates the description | |||
from the registry.</t> | from the registry.</dd> | |||
<dt>"reference":</dt> | ||||
<t hangText=""reference":">Replicates the reference from | <dd>Replicates the reference from | |||
the registry with the title of the document added</t> | the registry with the title of the document added.</dd> | |||
</list></t> | </dl> | |||
<t>Unassigned or reserved values are not present in the module.</t> | <t>Unassigned or reserved values are not present in the module.</t> | |||
<t>When the "iana-pseudowire-types" YANG module is updated, a new | <t>When the "iana-pseudowire-types" YANG module is updated, a new | |||
"revision" statement with a unique revision date must be added in | "revision" statement with a unique revision date must be added in | |||
front of the existing revision statements.</t> | front of the existing revision statements.</t> | |||
<t>IANA has added this note to <xref target="IANA-PW-TYPES" format="defa | ||||
<t>IANA is requested to add this note to <xref | ult"/>:</t> | |||
target="IANA-PW-Types"></xref>:</t> | <ul empty="true" spacing="normal"> | |||
<li>When this registry is modified, the YANG module | ||||
<t><list style="empty"> | "iana-pseudowire-types" must be updated as defined in RFC 9291.</li> | |||
<t>When this registry is modified, the YANG module | </ul> | |||
"iana-pseudowire-types" must be updated as defined in RFCXXXX.</t> | ||||
</list></t> | ||||
</section> | </section> | |||
</section> | </section> | |||
</middle> | </middle> | |||
<!-- *****BACK MATTER ***** --> | ||||
<back> | <back> | |||
<!-- References split into informative and normative --> | ||||
<!-- There are 2 ways to insert reference entries from the citation librarie | ||||
s: | ||||
1. define an ENTITY at the top, and use "ampersand character"RFC2629; here | ||||
(as shown) | ||||
2. simply use a PI "less than character"?rfc include="reference.RFC.2119.xm | ||||
l"?> here | ||||
(for I-Ds: include="reference.I-D.narten-iana-considerations-rfc2434bis. | ||||
xml") | ||||
Both are cited textually in the same manner: by using xref elements. | ||||
If you use the PI option, xml2rfc will, by default, try to find included fi | ||||
les in the same | ||||
directory as the including file. You can also define the XML_LIBRARY enviro | ||||
nment variable | ||||
with a value containing a set of directories to search. These can be eithe | ||||
r in the local | ||||
filing system or remote ones accessed by http (http://domain/dir/... ).--> | ||||
<references title="Normative References"> | <displayreference target="I-D.ietf-bess-evpn-pref-df" to="EVPN-PERF-DF"/> | |||
<!--?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC. | ||||
2119.xml"?--> | ||||
&RFC3688; | ||||
&RFC6242; | ||||
&RFC8341; | ||||
&RFC6020; | ||||
&RFC6241; | ||||
&RFC7950; | ||||
&RFC8040; | ||||
&RFC8466; | ||||
&RFC8214; | ||||
&RFC7432; | ||||
<?rfc include='reference.RFC.9181'?> | ||||
<?rfc include='reference.RFC.8342'?> | ||||
<?rfc include='reference.RFC.6074'?> | ||||
<?rfc include='reference.RFC.4761'?> | ||||
<?rfc include='reference.RFC.4762'?> | ||||
<?rfc include='reference.RFC.7623'?> | ||||
<?rfc include='reference.RFC.8365'?> | ||||
<?rfc include='reference.RFC.8077'?> | ||||
<?rfc include='reference.RFC.6991'?> | ||||
<?rfc include='reference.RFC.8294'?> | ||||
<?rfc include='reference.RFC.4667'?> | ||||
<?rfc include='reference.RFC.6624'?> | ||||
<?rfc include='reference.RFC.4026'?> | <displayreference target="I-D.ietf-bess-evpn-yang" to="EVPN-YANG"/> | |||
<?rfc include='reference.RFC.4446'?> | <displayreference target="I-D.ietf-idr-bgp-model" to="BGP-YANG-MODEL"/> | |||
<?rfc include='reference.RFC.8446'?> | <displayreference target="I-D.ietf-opsawg-sap" to="YANG-SAPS"/> | |||
<?rfc include='reference.RFC.8584'?> | <displayreference target="I-D.ietf-teas-enhanced-vpn" to="VPN+-FRAMEWORK"/> | |||
<reference anchor="IANA-BGP-L2" | <displayreference target="I-D.ietf-teas-ietf-network-slices" to="IETF-NET-SL | |||
target="https://www.iana.org/assignments/bgp-parameters/bgp-par | ICES"/> | |||
ameters.xhtml#bgp-l2-encapsulation-types-registry"> | ||||
<front> | ||||
<title>BGP Layer 2 Encapsulation Types</title> | ||||
<author> | <displayreference target="I-D.ietf-teas-te-service-mapping-yang" to="TE-SERV | |||
<organization abbrev="IANA">Internet Assigned Numbers | ICE-MAPPING"/> | |||
Authority</organization> | ||||
</author> | ||||
<date /> | <references> | |||
</front> | <name>References</name> | |||
</reference> | ||||
<reference anchor="IANA-PW-Types" | <references> | |||
target="http://www.iana.org/assignments/pwe3-parameters/pwe3-pa | <name>Normative References</name> | |||
rameters.xhtml#pwe3-parameters-2"> | ||||
<front> | ||||
<title>MPLS Pseudowire Types Registry</title> | ||||
<author fullname="IANA"> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | |||
<organization abbrev="IANA">Internet Assigned Numbers | .3688.xml"/> | |||
Authority</organization> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
</author> | FC.6242.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.6020.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.7950.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.8466.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.7432.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.9181.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8342.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.6074.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.4762.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.8365.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8077.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.6991.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8294.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.4667.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.4026.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.4446.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.8584.xml"/> | ||||
<date /> | <reference anchor="IANA-BGP-L2" target="https://www.iana.org/assignments | |||
</front> | /bgp-parameters"> | |||
</reference> | <front> | |||
<title>BGP Layer 2 Encapsulation Types</title> | ||||
<author> | ||||
<organization>IANA</organization> | ||||
</author> | ||||
<date/> | ||||
</front> | ||||
</reference> | ||||
<reference anchor="IANA-PW-TYPES" target="http://www.iana.org/assignment | ||||
s/pwe3-parameters/"> | ||||
<front> | ||||
<title>MPLS Pseudowire Types Registry</title> | ||||
<author> | ||||
<organization>IANA</organization> | ||||
</author> | ||||
<date/> | ||||
</front> | ||||
</reference> | ||||
<reference anchor="IEEE-802-1ag" | <reference anchor="IEEE-802-1ag"> | |||
target="DOI 10.1109/IEEESTD.2007.4431836"> | <front> | |||
<front> | <title>IEEE Standard for Local and Metropolitan | |||
<title>802.1ag - 2007 - IEEE Standard for Local and Metropolitan | ||||
Area Networks - Virtual Bridged Local Area Networks Amendment 5: | Area Networks - Virtual Bridged Local Area Networks Amendment 5: | |||
Connectivity Fault Management</title> | Connectivity Fault Management</title> | |||
<author> | ||||
<organization>IEEE</organization> | ||||
</author> | ||||
<date month="December" year="2007"/> | ||||
</front> | ||||
<seriesInfo name="DOI" value="10.1109/IEEESTD.2007.4431836"/> | ||||
<seriesInfo name="IEEE Std" value="802.1ag-2007"/> | ||||
</reference> | ||||
<author fullname="IEEE"> | <reference anchor="ITU-T-Y-1731" target="https://www.itu.int/rec/T-REC-Y.17 | |||
<organization></organization> | 31/en"> | |||
</author> | ||||
<date year="2007" /> | ||||
</front> | ||||
</reference> | ||||
<reference anchor="ITU-T-Y-1731" | ||||
target="https://www.itu.int/rec/T-REC-Y.1731/en"> | ||||
<front> | <front> | |||
<title>Operations, administration and maintenance (OAM) functions | <title>Operation, administration and maintenance (OAM) functions and m | |||
and mechanisms for Ethernet-based networks</title> | echanisms for Ethernet-based networks</title> | |||
<author> | ||||
<author fullname="International Telecommunication Union"> | <organization>ITU-T</organization> | |||
<organization></organization> | ||||
</author> | </author> | |||
<date month="August" year="2015"/> | ||||
<date month="August" year="2015" /> | ||||
</front> | </front> | |||
<seriesInfo name="ITU-T Recommendation" value="G.8013/Y.1731"/> | ||||
</reference> | </reference> | |||
<reference anchor="IEEE802.1Qcp-2018" | <reference anchor="IEEE802.1Qcp"> | |||
target="https://ieeexplore.ieee.org/document/8467507"> | <front> | |||
<front> | <title>IEEE Standard for Local and metropolitan area | |||
<title>IEEE Standard for Local and metropolitan area | ||||
networks--Bridges and Bridged Networks--Amendment 30: YANG Data | networks--Bridges and Bridged Networks--Amendment 30: YANG Data | |||
Model</title> | Model</title> | |||
<author> | ||||
<organization>IEEE</organization> | ||||
</author> | ||||
<date month="September" year="2018"/> | ||||
</front> | ||||
<seriesInfo name="DOI" value="10.1109/IEEESTD.2018.8467507"/> | ||||
<seriesInfo name="IEEE Std" value="802.1Qcp-2018"/> | ||||
</reference> | ||||
<author fullname="IEEE"> | </references> | |||
<organization></organization> | <references> | |||
</author> | <name>Informative References</name> | |||
<date month="September" year="2018" /> | ||||
</front> | ||||
</reference> | ||||
</references> | ||||
<references title="Informative References"> | ||||
<!-- Here we use entities that we defined at the beginning. --> | ||||
&RFC8309; | ||||
&RFC8340; | ||||
&RFC8453; | ||||
<?rfc include='reference.RFC.3644'?> | ||||
<?rfc include='reference.RFC.7209'?> | ||||
<?rfc include='reference.RFC.5880'?> | ||||
<?rfc include='reference.RFC.8969'?> | ||||
<?rfc include='reference.RFC.7297'?> | ||||
<?rfc include='reference.I-D.ietf-teas-enhanced-vpn'?> | ||||
<?rfc include='reference.I-D.ietf-teas-ietf-network-slices'?> | ||||
<?rfc include='reference.I-D.ietf-idr-bgp-model'?> | ||||
<?rfc include='reference.I-D.ietf-bess-evpn-pref-df'?> | ||||
<?rfc include='reference.RFC.8345'?> | ||||
<?rfc include='reference.RFC.4664'?> | ||||
<?rfc include='reference.RFC.2507'?> | ||||
<?rfc include='reference.RFC.2508'?> | ||||
<?rfc include='reference.RFC.3032'?> | ||||
<?rfc include='reference.RFC.3545'?> | ||||
<?rfc include='reference.RFC.4553'?> | ||||
<?rfc include='reference.RFC.4448'?> | ||||
<?rfc include='reference.RFC.4618'?> | ||||
<?rfc include='reference.RFC.4619'?> | ||||
<?rfc include='reference.RFC.4717'?> | ||||
<?rfc include='reference.RFC.4816'?> | ||||
<?rfc include='reference.RFC.4842'?> | ||||
<?rfc include='reference.RFC.4863'?> | ||||
<?rfc include='reference.RFC.4901'?> | ||||
<?rfc include='reference.RFC.5086'?> | ||||
<?rfc include='reference.RFC.5087'?> | ||||
<?rfc include='reference.RFC.5143'?> | ||||
<?rfc include='reference.RFC.5795'?> | ||||
<?rfc include='reference.RFC.6307'?> | ||||
<?rfc include='reference.RFC.8343'?> | ||||
<?rfc include='reference.RFC.8519'?> | ||||
<?rfc include='reference.RFC.7951'?> | ||||
<?rfc include='reference.RFC.8792'?> | ||||
<?rfc include='reference.RFC.8960'?> | ||||
<?rfc include='reference.RFC.7267'?> | ||||
<?rfc include='reference.I-D.ietf-bess-evpn-yang'?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | |||
.8309.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8340.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8453.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.3644.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.7209.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.8969.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.7297.xml"/> | ||||
<xi:include href="https://datatracker.ietf.org/doc/bibxml3/draft-ietf-te | ||||
as-enhanced-vpn.xml"/> | ||||
<?rfc include='reference.I-D.ietf-teas-te-service-mapping-yang'?> | <reference anchor="I-D.ietf-teas-ietf-network-slices"> | |||
<front> | ||||
<title>Framework for IETF Network Slices</title> | ||||
<author initials="A" surname="Farrel" fullname="A. Farrel" role="editor"/> | ||||
<author initials="J" surname="Drake" fullname="J. Drake" role="editor"/> | ||||
<author initials="R" surname="Rokui" fullname="R. Rokui"/> | ||||
<author initials="S" surname="Homma" fullname="S. Homma"/> | ||||
<author initials="K" surname="Makhijani" fullname="K. Makhijani"/> | ||||
<author initials="L. M." surname="Contreras" fullname="L.M. Contreras"/> | ||||
<author initials="J" surname="Tantsura" fullname="J. Tantsura"/> | ||||
<date month="August" day="3" year="2022"/> | ||||
</front> | ||||
<seriesInfo name="Internet-Draft" value="draft-ietf-teas-ietf-network-slices-14" | ||||
/> | ||||
</reference> | ||||
<?rfc include='reference.I-D.ietf-opsawg-sap'?> | <xi:include href="https://datatracker.ietf.org/doc/bibxml3/draft-ietf-idr-bgp-mo del.xml"/> | |||
<reference anchor="PYANG" target="https://github.com/mbj4668/pyang"> | <reference anchor="I-D.ietf-bess-evpn-pref-df"> | |||
<front> | <front> | |||
<title>pyang</title> | <title> | |||
Preference-based EVPN DF Election | ||||
</title> | ||||
<author initials="J" surname="Rabadan" fullname="J. Rabadan" role="editor"/> | ||||
<author initials="S" surname="Sathappan" fullname="S. Sathappan"/> | ||||
<author initials="W" surname="Lin" fullname="W. Lin"/> | ||||
<author initials="J" surname="Drake" fullname="J. Drake"/> | ||||
<author initials="A" surname="Sajassi" fullname="A. Sajassi"/> | ||||
<date month="September" day="2" year="2022"/> | ||||
</front> | ||||
<seriesInfo name="Internet-Draft" value="draft-ietf-bess-evpn-pref-df-10"/> | ||||
</reference> | ||||
<author> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | |||
<organization></organization> | C.8345.xml"/> | |||
</author> | <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.2507.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.2508.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.3032.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.3545.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.4553.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.4448.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.4618.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.4619.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.4717.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.4816.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.4842.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.4863.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.4901.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.5086.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.5087.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.5143.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.5795.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.6307.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8343.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.7951.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8792.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8960.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.7267.xml"/> | ||||
<date month="November" year="2020" /> | <reference anchor="I-D.ietf-bess-evpn-yang"> | |||
</front> | <front> | |||
</reference> | <title> | |||
Yang Data Model for EVPN | ||||
</title> | ||||
<author initials="P" surname="Brissette" fullname="P. Brissette" role="editor"/> | ||||
<author initials="H" surname="Shah" fullname="H. Shah" role="editor"/> | ||||
<author initials="I" surname="Chen" fullname="I. Chen" role="editor"/> | ||||
<author initials="I" surname="Hussain " fullname="I. Hussain " role="editor"/> | ||||
<author initials="K" surname="Tiruveedhula" fullname="K. Tiruveedhula" role="edi | ||||
tor"/> | ||||
<author initials="J" surname="Rabadan" fullname="J. Rabadan" role="editor"/> | ||||
<date month="March" day="11" year="2019"/> | ||||
</front> | ||||
<seriesInfo name="Internet-Draft" value="draft-ietf-bess-evpn-yang-07"/> | ||||
</reference> | ||||
<reference anchor="IEEE802.1AX"> | <reference anchor="I-D.ietf-teas-te-service-mapping-yang"> | |||
<front> | <front> <title> | |||
<title>Link Aggregation</title> | Traffic Engineering (TE) and Service Mapping YANG Data Model | |||
</title> | ||||
<author initials="Y" surname="Lee" fullname="Y. Lee" role="editor"/> | ||||
<author initials="D" surname="Dhody" fullname="D. Dhody" role="editor"/> | ||||
<author initials="G" surname="Fioccola" fullname="G. Fioccola"/> | ||||
<author initials="Q" surname="Wu" fullname="Q. Wu" role="editor"/> | ||||
<author initials="D" surname="Ceccarelli" fullname="D. Ceccarelli" /> | ||||
<author initials="J" surname="Tantsura" fullname="J. Tantsura"/> | ||||
<date month="July" day="11" year="2022"/> | ||||
</front> | ||||
<seriesInfo name="Internet-Draft" value="draft-ietf-teas-te-service-mapping-yang | ||||
-11"/> | ||||
</reference> | ||||
<author> | <reference anchor="I-D.ietf-opsawg-sap"> | |||
<organization></organization> | <front> <title> | |||
</author> | A YANG Network Model for Service Attachment Points (SAPs) | |||
</title> | ||||
<author initials="M" surname="Boucadair" fullname="M. Boucadair" role="editor"/> | ||||
<author initials="O" surname="Gonzalez de Dios" fullname="O. Gonzalez de Dios"/> | ||||
<author initials="S" surname="Barguil" fullname="S. Barguil"/> | ||||
<author initials="Q" surname="Wu" fullname="Q. Wu"/> | ||||
<author initials="V" surname="Lopez" fullname="V. Lopez" /> | ||||
<date month="July" day="28" year="2022"/> | ||||
</front> | ||||
<seriesInfo name="Internet-Draft" value="draft-ietf-opsawg-sap-09"/> | ||||
</reference> | ||||
<date month="" year="2020" /> | <reference anchor="PYANG" target="https://github.com/mbj4668/pyang"> | |||
</front> | <front> | |||
<title>pyang</title> | ||||
<author> | ||||
<organization/> | ||||
</author> | ||||
<date month="November" year="2020"/> | ||||
</front> | ||||
</reference> | ||||
<seriesInfo name="IEEE" value="Std 802.1AX-2020" /> | <reference anchor="IEEE802.1AX"> | |||
</reference> | <front> | |||
<title>IEEE Standard for Local and Metropolitan Area Networks--Link | ||||
Aggregation</title> | ||||
<author> | ||||
<organization>IEEE | ||||
</organization> | ||||
</author> | ||||
<date month="May" year="2020"/> | ||||
</front> | ||||
<seriesInfo name="DOI" value="10.1109/IEEESTD.2020.9105034" /> | ||||
<seriesInfo name="IEEE" value="Std 802.1AX-2020"/> | ||||
</reference> | ||||
<reference anchor="IEEE-802-3ah" target="DOI 10.1109/IEEESTD.2004.94617"> | <reference anchor="IEEE-802-3ah"> | |||
<front> | <front> | |||
<title>802.3ah - 2004 - IEEE Standard for Information technology-- | <title>IEEE Standard for Information technology-- | |||
Local and metropolitan area networks-- Part 3: CSMA/CD Access Method | Local and metropolitan area networks-- Part 3: CSMA/CD Access Method | |||
and Physical Layer Specifications Amendment: Media Access Control | and Physical Layer Specifications Amendment: Media Access Control | |||
Parameters, Physical Layers, and Management Parameters for | Parameters, Physical Layers, and Management Parameters for | |||
Subscriber Access Networks</title> | Subscriber Access Networks</title> | |||
<author fullname="IEEE"> | ||||
<organization></organization> | ||||
</author> | ||||
<date month="" year="2004" /> | ||||
</front> | ||||
<seriesInfo name="IEEE" value="Std 802.3AH-2004" /> | ||||
</reference> | ||||
<reference anchor="IEEE-802-1ah" | ||||
target="https://standards.ieee.org/standard/802_1ah-2008.html"> | ||||
<front> | ||||
<title>IEEE Standard for Local and metropolitan area networks -- | ||||
Virtual Bridged Local Area Networks Amendment 7: Provider Backbone | ||||
Bridges</title> | ||||
<author fullname="IEEE"> | ||||
<organization></organization> | ||||
</author> | ||||
<date month="" year="2008" /> | ||||
</front> | ||||
<seriesInfo name="IEEE" value="Std 801.3AH-2008" /> | ||||
</reference> | ||||
<reference anchor="IEEE802.1Q" | ||||
target="https://ieeexplore.ieee.org/document/8403927"> | ||||
<front> | ||||
<title>Bridges and Bridged Networks</title> | ||||
<author> | <author> | |||
<organization></organization> | <organization>IEEE</organization> | |||
</author> | </author> | |||
<date month="September" year="2004"/> | ||||
</front> | ||||
<seriesInfo name="DOI" value="10.1109/IEEESTD.2004.94617"/> | ||||
<seriesInfo name="IEEE Std" value="802.3AH-2004"/> | ||||
</reference> | ||||
<date day="06" month="July" year="2018" /> | <reference anchor="IEEE-802-1ah" target="https://standards.ieee.org/stan | |||
</front> | dard/802_1ah-2008.html"> | |||
<front> | ||||
<title>IEEE Standard for Local and metropolitan area networks -- | ||||
Virtual Bridged Local Area Networks Amendment 7: Provider Backbone | ||||
Bridges</title> | ||||
<author> | ||||
<organization>IEEE</organization> | ||||
</author> | ||||
<date month="August" year="2008"/> | ||||
</front> | ||||
<seriesInfo name="IEEE" value="Std 801.3AH-2008"/> | ||||
</reference> | ||||
<seriesInfo name="IEEE" value="Std 802.1Q-2018" /> | <reference anchor="IEEE802.1Q"> | |||
</reference> | <front> | |||
<title>IEEE Standard for Local and Metropolitan Area Network--Bridge | ||||
s and Bridged Networks</title> | ||||
<author> | ||||
<organization>IEEE</organization> | ||||
</author> | ||||
<date month="July" year="2018"/> | ||||
</front> | ||||
<seriesInfo name="DOI" value="10.1109/IEEESTD.2018.8403927"/> | ||||
<seriesInfo name="IEEE" value="Std 802.1Q-2018"/> | ||||
</reference> | ||||
<reference anchor="MFA"> | <reference anchor="MFA"> | |||
<front> | <front> | |||
<title>The Use of Virtual Trunks for ATM/MPLS Control Plane | <title>The Use of Virtual Trunks for ATM/MPLS Control Plane | |||
Interworking Specification</title> | Interworking Specification</title> | |||
<author> | ||||
<organization>MFA Forum Technical Committee</organization> | ||||
</author> | ||||
<date month="February" year="2006"/> | ||||
</front> | ||||
<refcontent>MFA Forum 9.0.0</refcontent> | ||||
</reference> | ||||
<author fullname=""> | </references> | |||
<organization></organization> | ||||
</author> | ||||
<date day="" month="February" year="2006" /> | ||||
</front> | ||||
<seriesInfo name="MFA Forum 9.0.0" value="" /> | ||||
</reference> | ||||
</references> | </references> | |||
<section anchor="examples" numbered="true" toc="default"> | ||||
<section anchor="examples" title="Examples"> | <name>Examples</name> | |||
<t>This section includes a non-exhaustive list of examples to illustrate | <t>This section includes a non-exhaustive list of examples to illustrate | |||
the use of the L2NM.</t> | the use of the L2NM.</t> | |||
<t>In the following subsections, only the content of the message bodies | <t>In the following subsections, only the content of the message bodies | |||
is shown using JSON notations <xref target="RFC7951"></xref>.</t> | is shown using JSON notations <xref target="RFC7951" format="default"/>.</ | |||
t> | ||||
<t>The examples use the folding defined in <xref | ||||
target="RFC8792"></xref> for long lines.</t> | ||||
<section anchor="ex1" title="BGP-based VPLS"> | <t>The examples use folding as defined in <xref target="RFC8792" format="d | |||
efault"/> for long lines.</t> | ||||
<section anchor="ex1" numbered="true" toc="default"> | ||||
<name>BGP-Based VPLS</name> | ||||
<t>This section provides an example to illustrate how the L2NM can be | <t>This section provides an example to illustrate how the L2NM can be | |||
used to manage BGP-based VPLS. We consider the sample VPLS service | used to manage BGP-based VPLS. We consider the sample VPLS service | |||
delivered using the architecture depicted in <xref | delivered using the architecture depicted in <xref target="vpls-ex" form | |||
target="vpls-ex"></xref>. In accordance with <xref | at="default"/>. In accordance with <xref target="RFC4761" format="default"/>, we | |||
target="RFC4761"></xref>, we assume that a full mesh is established | assume that a full mesh is established | |||
between all PEs. The details about such full mesh are not detailed | between all PEs. The details about such full mesh are not detailed | |||
here.</t> | here.</t> | |||
<figure anchor="vpls-ex"> | ||||
<t><figure align="center" anchor="vpls-ex" title="An Example of VPLS"> | <name>An Example of VPLS</name> | |||
<artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
+-----+ +--------------+ +-----+ | +-----+ +--------------+ +-----+ | |||
+----+ | PE1 |===| |===| PE3 | +----+ | +----+ | PE1 |===| |===| PE3 | +----+ | |||
| CE1+-------+ | | | | +-------+ CE3| | | CE1+-------+ | | | | +-------+ CE3| | |||
+----+ +-----+ | | +-----+ +----+ | +----+ +-----+ | | +-----+ +----+ | |||
| Core | | | Core | | |||
+----+ +-----+ | | +-----+ +----+ | +----+ +-----+ | | +-----+ +----+ | |||
|CE2 +-------+ | | | | +-------+ CE4| | |CE2 +-------+ | | | | +-------+ CE4| | |||
+----+ | PE2 |===| |===| PE4 | +----+ | +----+ | PE2 |===| |===| PE4 | +----+ | |||
+-----+ +--------------+ +-----+ | +-----+ +--------------+ +-----+ | |||
]]></artwork> | ]]></artwork> | |||
</figure><xref target="l2nm-vpls"></xref> show an example of a | </figure> | |||
<t><xref target="l2nm-vpls" format="default"/> shows an example of a | ||||
message body used to configure a VPLS instance using the L2NM. In this | message body used to configure a VPLS instance using the L2NM. In this | |||
example, BGP is used for both auto-discovery and signaling. The | example, BGP is used for both auto-discovery and signaling. The | |||
'signaling-type' data node is set to 'vpn-common:bgp-signaling'.</t> | 'signaling-type' data node is set to 'vpn-common:bgp-signaling'.</t> | |||
<t><figure align="center" anchor="l2nm-vpls" | <figure anchor="l2nm-vpls"> | |||
title="Example of L2NM Message Body to Configure a BGP-based VPLS"> | <name>An Example of an L2NM Message Body to Configure a BGP-Based V | |||
<artwork><![CDATA[=============== NOTE: '\' line wrapping per RFC 87 | PLS</name> | |||
92 ================ | ||||
<sourcecode type="json"><![CDATA[=============== NOTE: '\' line wra | ||||
pping per RFC 8792 ================ | ||||
{ | { | |||
"ietf-l2vpn-ntw:l2vpn-ntw": { | "ietf-l2vpn-ntw:l2vpn-ntw": { | |||
"vpn-services": { | "vpn-services": { | |||
"vpn-service": [ | "vpn-service": [ | |||
{ | { | |||
"vpn-id": "vpls7714825356", | "vpn-id": "vpls7714825356", | |||
"vpn-description": "Sample BGP-based VPLS", | "vpn-description": "Sample BGP-based VPLS", | |||
"customer-name": "customer-7714825356", | "customer-name": "customer-7714825356", | |||
"vpn-type": "ietf-vpn-common:vpls", | "vpn-type": "ietf-vpn-common:vpls", | |||
skipping to change at line 6508 ¶ | skipping to change at line 6435 ¶ | |||
"global-parameters-profile": [ | "global-parameters-profile": [ | |||
{ | { | |||
"profile-id": "simple-profile" | "profile-id": "simple-profile" | |||
} | } | |||
] | ] | |||
}, | }, | |||
"bgp-auto-discovery": { | "bgp-auto-discovery": { | |||
"vpn-id": "1" | "vpn-id": "1" | |||
}, | }, | |||
"signaling-option": { | "signaling-option": { | |||
"pw-encapsulation-type": "iana-bgp-l2-encaps:ethernet\ | "pw-encapsulation-type": "iana-bgp-l2-encaps:\ | |||
-tagged-mode", | ethernet-tagged-mode", | |||
"vpls-instance": { | "vpls-instance": { | |||
"vpls-edge-id": 1, | "vpls-edge-id": 1, | |||
"vpls-edge-id-range": 100 | "vpls-edge-id-range": 100 | |||
} | } | |||
}, | }, | |||
"vpn-network-accesses": { | "vpn-network-accesses": { | |||
"vpn-network-access": [ | "vpn-network-access": [ | |||
{ | { | |||
"id": "1/1/1.1", | "id": "1/1/1.1", | |||
"interface-id": "1/1/1", | "interface-id": "1/1/1", | |||
skipping to change at line 6553 ¶ | skipping to change at line 6480 ¶ | |||
"global-parameters-profile": [ | "global-parameters-profile": [ | |||
{ | { | |||
"profile-id": "simple-profile" | "profile-id": "simple-profile" | |||
} | } | |||
] | ] | |||
}, | }, | |||
"bgp-auto-discovery": { | "bgp-auto-discovery": { | |||
"vpn-id": "1" | "vpn-id": "1" | |||
}, | }, | |||
"signaling-option": { | "signaling-option": { | |||
"pw-encapsulation-type": "iana-bgp-l2-encaps:ethernet\ | "pw-encapsulation-type": "iana-bgp-l2-encaps:\ | |||
-tagged-mode", | ethernet-tagged-mode", | |||
"vpls-instance": { | "vpls-instance": { | |||
"vpls-edge-id": 2, | "vpls-edge-id": 2, | |||
"vpls-edge-id-range": 100 | "vpls-edge-id-range": 100 | |||
} | } | |||
}, | }, | |||
"vpn-network-accesses": { | "vpn-network-accesses": { | |||
"vpn-network-access": [ | "vpn-network-access": [ | |||
{ | { | |||
"id": "1/1/1.1", | "id": "1/1/1.1", | |||
"interface-id": "1/1/1", | "interface-id": "1/1/1", | |||
skipping to change at line 6598 ¶ | skipping to change at line 6525 ¶ | |||
"global-parameters-profile": [ | "global-parameters-profile": [ | |||
{ | { | |||
"profile-id": "simple-profile" | "profile-id": "simple-profile" | |||
} | } | |||
] | ] | |||
}, | }, | |||
"bgp-auto-discovery": { | "bgp-auto-discovery": { | |||
"vpn-id": "1" | "vpn-id": "1" | |||
}, | }, | |||
"signaling-option": { | "signaling-option": { | |||
"pw-encapsulation-type": "iana-bgp-l2-encaps:ethernet\ | "pw-encapsulation-type": "iana-bgp-l2-encaps:\ | |||
-tagged-mode", | ethernet-tagged-mode", | |||
"vpls-instance": { | "vpls-instance": { | |||
"vpls-edge-id": 3, | "vpls-edge-id": 3, | |||
"vpls-edge-id-range": 100 | "vpls-edge-id-range": 100 | |||
} | } | |||
}, | }, | |||
"vpn-network-accesses": { | "vpn-network-accesses": { | |||
"vpn-network-access": [ | "vpn-network-access": [ | |||
{ | { | |||
"id": "1/1/1.1", | "id": "1/1/1.1", | |||
"interface-id": "1/1/1", | "interface-id": "1/1/1", | |||
skipping to change at line 6643 ¶ | skipping to change at line 6570 ¶ | |||
"global-parameters-profile": [ | "global-parameters-profile": [ | |||
{ | { | |||
"profile-id": "simple-profile" | "profile-id": "simple-profile" | |||
} | } | |||
] | ] | |||
}, | }, | |||
"bgp-auto-discovery": { | "bgp-auto-discovery": { | |||
"vpn-id": "1" | "vpn-id": "1" | |||
}, | }, | |||
"signaling-option": { | "signaling-option": { | |||
"pw-encapsulation-type": "iana-bgp-l2-encaps:ethernet\ | "pw-encapsulation-type": "iana-bgp-l2-encaps:\ | |||
-tagged-mode", | ethernet-tagged-mode", | |||
"vpls-instance": { | "vpls-instance": { | |||
"vpls-edge-id": 4, | "vpls-edge-id": 4, | |||
"vpls-edge-id-range": 100 | "vpls-edge-id-range": 100 | |||
} | } | |||
}, | }, | |||
"vpn-network-accesses": { | "vpn-network-accesses": { | |||
"vpn-network-access": [ | "vpn-network-access": [ | |||
{ | { | |||
"id": "1/1/1.1", | "id": "1/1/1.1", | |||
"interface-id": "1/1/1", | "interface-id": "1/1/1", | |||
skipping to change at line 6681 ¶ | skipping to change at line 6608 ¶ | |||
] | ] | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure></t> | </figure> | |||
<t/> | ||||
<t></t> | ||||
</section> | </section> | |||
<section anchor="ex2" numbered="true" toc="default"> | ||||
<section anchor="ex2" title="BGP-based VPWS with LDP Signaling"> | <name>BGP-Based VPWS with LDP Signaling</name> | |||
<t>Let's consider the simple architecture depicted in <xref | <t>Let's consider the simple architecture depicted in <xref target="vpws | |||
target="vpws-ex"></xref> to offer a VPWS between CE1 and CE2. The | -ex" format="default"/> to offer a VPWS between CE1 and CE2. The | |||
service uses BGP for auto-discovery and LDP for signaling.</t> | service uses BGP for auto-discovery and LDP for signaling.</t> | |||
<figure anchor="vpws-ex"> | ||||
<t><figure align="center" anchor="vpws-ex" title="An Example of VPLS"> | <name>An Example of VPLS</name> | |||
<artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
+-----+ +--------------+ +-----+ | +-----+ +--------------+ +-----+ | |||
+----+ | PE1 |===| |===| PE2 | +----+ | +----+ | PE1 |===| |===| PE2 | +----+ | |||
| CE1+-------+ | | Core | | +-------+ CE2| | | CE1+-------+ | | Core | | +-------+ CE2| | |||
+----+ +-----+ +--------------+ +-----+ +----+ | +----+ +-----+ +--------------+ +-----+ +----+ | |||
site1 site2 ]]></artwork> | site1 site2 ]]></artwork> | |||
</figure></t> | </figure> | |||
<figure anchor="l2nm-vpws-ex"> | ||||
<t><figure align="center" anchor="l2nm-vpws-ex" | <name>An Example of an L2NM Message Body to Configure a BGP-Based VPWS | |||
title="Example of L2NM Message Body to Configure a BGP-based VPWS wi | with LDP Signaling</name> | |||
th LDP Signaling"> | <sourcecode type="json"><![CDATA[{ | |||
<artwork><![CDATA[{ | ||||
"ietf-l2vpn-ntw:l2vpn-ntw": { | "ietf-l2vpn-ntw:l2vpn-ntw": { | |||
"vpn-services": { | "vpn-services": { | |||
"vpn-service": [ | "vpn-service": [ | |||
{ | { | |||
"vpn-id": "vpws12345", | "vpn-id": "vpws12345", | |||
"vpn-description": "Sample VPWS", | "vpn-description": "Sample VPWS", | |||
"customer-name": "customer-12345", | "customer-name": "customer-12345", | |||
"vpn-type": "ietf-vpn-common:vpws", | "vpn-type": "ietf-vpn-common:vpws", | |||
"bgp-ad-enabled": true, | "bgp-ad-enabled": true, | |||
"signaling-type": "ietf-vpn-common:ldp-signaling", | "signaling-type": "ietf-vpn-common:ldp-signaling", | |||
skipping to change at line 6829 ¶ | skipping to change at line 6753 ¶ | |||
] | ] | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure></t> | </figure> | |||
<t/> | ||||
<t></t> | ||||
</section> | </section> | |||
<section anchor="ex3" numbered="true" toc="default"> | ||||
<section anchor="ex3" title="LDP-based VPLS"> | <name>LDP-Based VPLS</name> | |||
<t>This section provides an example to illustrate how the L2NM can be | <t>This section provides an example that illustrates how the L2NM can be | |||
used to manage a VPLS with LDP signaling. The connectivity between the | used to manage a VPLS with LDP signaling. The connectivity between the | |||
CE and the PE is direct using Dot1q encapsulation <xref | CE and the PE is direct using Dot1q encapsulation <xref target="IEEE802. | |||
target="IEEE802.1Q"></xref>. We consider the sample service delivered | 1Q" format="default"/>. We consider the sample service delivered | |||
using the architecture depicted in <xref | using the architecture depicted in <xref target="vpls-ldp-ex" format="de | |||
target="vpls-ldp-ex"></xref>.</t> | fault"/>.</t> | |||
<figure anchor="vpls-ldp-ex"> | ||||
<t><figure align="center" anchor="vpls-ldp-ex" | <name>An Example of VPLS Topology</name> | |||
title="An Example of VPLS topology "> | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
<artwork><![CDATA[ | ||||
+---------- VPLS "1543" ----------+ | +---------- VPLS "1543" ----------+ | |||
+-----+ +--------------+ +-----+ | +-----+ +--------------+ +-----+ | |||
+----+ | PE1 |===| |===| PE2 | +----+ | +----+ | PE1 |===| |===| PE2 | +----+ | |||
| CE1 +-----+"450"| | MPLS | |"451"+-------+ CE2| | | CE1 +-----+"450"| | MPLS | |"451"+-------+ CE2| | |||
+----+ +-----+ | | +-----+ +----+ | +----+ +-----+ | | +-----+ +----+ | |||
| Core | | | Core | | |||
+--------------+ | +--------------+ | |||
]]></artwork> | ]]></artwork> | |||
</figure></t> | </figure> | |||
<t><xref target="vpls-ldp-call" format="default"/> shows how the L2NM is | ||||
<t><xref target="vpls-ldp-call"></xref> shows how the L2NM is used to | used to | |||
instruct both PE1 and PE2 to use the targeted LDP session between them | instruct both PE1 and PE2 to use the targeted LDP session between them | |||
to establish the VPLS "1543" between the ends. A single VPN service is | to establish the VPLS "1543" between the ends. A single VPN service is | |||
created for this purpose. Additionally, two VPN Nodes and each with a | created for this purpose. Additionally, two VPN Nodes that each have | |||
corresponding VPN network access is also created.</t> | corresponding VPN network access are also created.</t> | |||
<t><figure align="center" anchor="vpls-ldp-call" | <figure anchor="vpls-ldp-call"> | |||
title="Example of L2NM Message Body for LDP-based VPLS"> | <name>An Example of an L2NM Message Body for LDP-Based VPLS</name> | |||
<artwork align="center"><![CDATA[=============== NOTE: '\' line wrap | <sourcecode type="json"><![CDATA[=============== NOTE: '\' line wrappi | |||
ping per RFC 8792 ================ | ng per RFC 8792 ================ | |||
{ | { | |||
"ietf-l2vpn-ntw:l2vpn-ntw": { | "ietf-l2vpn-ntw:l2vpn-ntw": { | |||
"vpn-services": { | "vpn-services": { | |||
"vpn-service": [ | "vpn-service": [ | |||
{ | { | |||
"vpn-id": "450", | "vpn-id": "450", | |||
"vpn-name": "CORPO-EXAMPLE", | "vpn-name": "CORPO-EXAMPLE", | |||
"vpn-description": "SEDE_CENTRO_450", | "vpn-description": "SEDE_CENTRO_450", | |||
"customer-name": "EXAMPLE", | "customer-name": "EXAMPLE", | |||
skipping to change at line 6945 ¶ | skipping to change at line 6864 ¶ | |||
"tag-type": "ietf-vpn-common:c-vlan", | "tag-type": "ietf-vpn-common:c-vlan", | |||
"cvlan-id": 550 | "cvlan-id": 550 | |||
} | } | |||
} | } | |||
}, | }, | |||
"service": { | "service": { | |||
"mtu": 1550, | "mtu": 1550, | |||
"svc-pe-to-ce-bandwidth": { | "svc-pe-to-ce-bandwidth": { | |||
"pe-to-ce-bandwidth": [ | "pe-to-ce-bandwidth": [ | |||
{ | { | |||
"bw-type": "ietf-vpn-common:bw-per-port", | "bw-type": "ietf-vpn-common:\ | |||
bw-per-port", | ||||
"cir": "20480000" | "cir": "20480000" | |||
} | } | |||
] | ] | |||
}, | }, | |||
"svc-ce-to-pe-bandwidth": { | "svc-ce-to-pe-bandwidth": { | |||
"ce-to-pe-bandwidth": [ | "ce-to-pe-bandwidth": [ | |||
{ | { | |||
"bw-type": "ietf-vpn-common:bw-per-port", | "bw-type": "ietf-vpn-common:\ | |||
bw-per-port", | ||||
"cir": "20480000" | "cir": "20480000" | |||
} | } | |||
] | ] | |||
}, | }, | |||
"qos": { | "qos": { | |||
"qos-profile": { | "qos-profile": { | |||
"qos-profile": [ | "qos-profile": [ | |||
{ | { | |||
"profile": "QoS_Profile_A", | "profile": "QoS_Profile_A", | |||
"direction": "ietf-vpn-common:both" | "direction": "ietf-vpn-common:both" | |||
skipping to change at line 7027 ¶ | skipping to change at line 6948 ¶ | |||
"tag-type": "ietf-vpn-common:c-vlan", | "tag-type": "ietf-vpn-common:c-vlan", | |||
"cvlan-id": 550 | "cvlan-id": 550 | |||
} | } | |||
} | } | |||
}, | }, | |||
"service": { | "service": { | |||
"mtu": 1550, | "mtu": 1550, | |||
"svc-pe-to-ce-bandwidth": { | "svc-pe-to-ce-bandwidth": { | |||
"pe-to-ce-bandwidth": [ | "pe-to-ce-bandwidth": [ | |||
{ | { | |||
"bw-type": "ietf-vpn-common:bw-per-port", | "bw-type": "ietf-vpn-common:\ | |||
bw-per-port", | ||||
"cir": "20480000" | "cir": "20480000" | |||
} | } | |||
] | ] | |||
}, | }, | |||
"svc-ce-to-pe-bandwidth": { | "svc-ce-to-pe-bandwidth": { | |||
"ce-to-pe-bandwidth": [ | "ce-to-pe-bandwidth": [ | |||
{ | { | |||
"bw-type": "ietf-vpn-common:bw-per-port", | "bw-type": "ietf-vpn-common:\ | |||
bw-per-port", | ||||
"cir": "20480000" | "cir": "20480000" | |||
} | } | |||
] | ] | |||
}, | }, | |||
"qos": { | "qos": { | |||
"qos-profile": { | "qos-profile": { | |||
"qos-profile": [ | "qos-profile": [ | |||
{ | { | |||
"profile": "QoS_Profile_A", | "profile": "QoS_Profile_A", | |||
"direction": "ietf-vpn-common:both" | "direction": "ietf-vpn-common:both" | |||
skipping to change at line 7062 ¶ | skipping to change at line 6985 ¶ | |||
] | ] | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure></t> | </figure> | |||
</section> | </section> | |||
<section anchor="evpn-vpws-app" numbered="true" toc="default"> | ||||
<section anchor="evpn-vpws-app" title="VPWS-EVPN Service Instance"> | <name>VPWS-EVPN Service Instance</name> | |||
<t><xref target="vpws-evpn-ex"></xref> depicts a sample architecture | <t><xref target="vpws-evpn-ex" format="default"/> depicts a sample archi | |||
tecture | ||||
to offer VPWS-EVPN service between CE1 and CE2. Both CEs are | to offer VPWS-EVPN service between CE1 and CE2. Both CEs are | |||
multi-homed. BGP sessions are maintained between these PEs as per | multihomed. BGP sessions are maintained between these PEs as per | |||
<xref target="RFC8214"></xref>. In this EVPN instance, an All-Active | <xref target="RFC8214" format="default"/>. In this EVPN instance, an All | |||
-Active | ||||
redundancy mode is used.</t> | redundancy mode is used.</t> | |||
<figure anchor="vpws-evpn-ex"> | ||||
<t><figure align="center" anchor="vpws-evpn-ex" | <name>An Example of VPWS-EVPN</name> | |||
title="An Example of VPWS-EVPN"> | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
<artwork><![CDATA[ |<-------- EVPN Instance ------ | |<-------- EVPN Instance --------->| | |||
--->| | ||||
| | | | | | |||
ESI1 V V ESI2 | ESI1 V V ESI2 | |||
| +-----+ +--------------+ +-----+ | | | +-----+ +--------------+ +-----+ | | |||
+----+ | | PE1 |===| |===| PE3 | | +----+ | +----+ | | PE1 |===| |===| PE3 | | +----+ | |||
| +-------+ | | | | +-------+ | | | +-------+ | | | | +-------+ | | |||
| | | +-----+ | | +-----+ | | | | | | | +-----+ | | +-----+ | | | | |||
| CE1| | | Core | | |CE2 | | | CE1| | | Core | | |CE2 | | |||
| | | +-----+ | | +-----+ | | | | | | | +-----+ | | +-----+ | | | | |||
| +-------+ | | | | +-------+ | | | +-------+ | | | | +-------+ | | |||
+----+ | | PE2 |===| |===| PE4 | | +----+ | +----+ | | PE2 |===| |===| PE4 | | +----+ | |||
^ | +-----+ +--------------+ +-----+ | ^ | ^ | +-----+ +--------------+ +-----+ | ^ | |||
| ESI1 ESI2 | | | ESI1 ESI2 | | |||
|<-------------- Emulated Service ---------------->|]]></artwork> | |<-------------- Emulated Service ---------------->|]]></artwork> | |||
</figure></t> | </figure> | |||
<t>Let's first suppose that the following ES was created (<xref target=" | ||||
<t>Let's first suppose that the following ES was created (<xref | es1" format="default"/>).</t> | |||
target="es1"></xref>).</t> | ||||
<t><figure align="center" anchor="es1" | <figure anchor="es1"> | |||
title="Example of L2NM Message Body to Configure an Ethernet Segment | <name>An Example of an L2NM Message Body to Configure an Ethernet Segm | |||
"> | ent</name> | |||
<artwork><![CDATA[=============== NOTE: '\' line wrapping per RFC 87 | <sourcecode type="json"><![CDATA[=============== NOTE: '\' line wrappi | |||
92 ================ | ng per RFC 8792 ================ | |||
{ | { | |||
"ietf-ethernet-segment:ethernet-segments": { | "ietf-ethernet-segment:ethernet-segments": { | |||
"ethernet-segment": [ | "ethernet-segment": [ | |||
{ | { | |||
"name": "esi1", | "name": "esi1", | |||
"ethernet-segment-identifier": "00:11:11:11:11:11:11:\ | "ethernet-segment-identifier": "00:11:11:11:11:11:11:\ | |||
11:11:11", | 11:11:11", | |||
"esi-redundancy-mode": "all-active" | "esi-redundancy-mode": "all-active" | |||
}, | }, | |||
{ | { | |||
"name": "esi2", | "name": "esi2", | |||
"ethernet-segment-identifier": "00:22:22:22:22:22:22:\ | "ethernet-segment-identifier": "00:22:22:22:22:22:22:\ | |||
22:22:22", | 22:22:22", | |||
"esi-redundancy-mode": "all-active" | "esi-redundancy-mode": "all-active" | |||
} | } | |||
] | ] | |||
} | } | |||
}]]></artwork> | }]]></sourcecode> | |||
</figure><xref target="vpws-evpn-ex"></xref> shows a simplified | </figure> | |||
configuration to illustrate the use of the L2NM to configured | ||||
VPWS-EVPN instance.</t> | ||||
<t><figure align="center" anchor="l2nm-vpws-evpn" | <t><xref target="l2nm-vpws-evpn" format="default"/> shows a simplified | |||
title="Example of L2NM Message Body to Configure a VPWS-EVPN Instanc | configuration to illustrate the use of the L2NM to configure a | |||
e"> | VPWS-EVPN instance.</t> | |||
<artwork><![CDATA[{ | <figure anchor="l2nm-vpws-evpn"> | |||
<name>An Example of an L2NM Message Body to Configure a VPWS-EVPN Inst | ||||
ance</name> | ||||
<sourcecode type="json"><![CDATA[{ | ||||
"ietf-l2vpn-ntw:l2vpn-ntw": { | "ietf-l2vpn-ntw:l2vpn-ntw": { | |||
"vpn-services": { | "vpn-services": { | |||
"vpn-service": [ | "vpn-service": [ | |||
{ | { | |||
"vpn-id": "vpws15432855", | "vpn-id": "vpws15432855", | |||
"vpn-description": "Sample VPWS-EVPN", | "vpn-description": "Sample VPWS-EVPN", | |||
"customer-name": "customer_15432855", | "customer-name": "customer_15432855", | |||
"vpn-type": "ietf-vpn-common:vpws-evpn", | "vpn-type": "ietf-vpn-common:vpws-evpn", | |||
"bgp-ad-enabled": true, | "bgp-ad-enabled": true, | |||
"signaling-type": "ietf-vpn-common:bgp-signaling", | "signaling-type": "ietf-vpn-common:bgp-signaling", | |||
skipping to change at line 7338 ¶ | skipping to change at line 7259 ¶ | |||
] | ] | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure></t> | </figure> | |||
<t/> | ||||
<t></t> | ||||
</section> | </section> | |||
<section anchor="auto-ex" numbered="true" toc="default"> | ||||
<section anchor="auto-ex" title="Automatic ESI Assignment"> | <name>Automatic ESI Assignment</name> | |||
<t>This section provides an example to illustrate how the L2NM can be | <t>This section provides an example to illustrate how the L2NM can be | |||
used to manage ESI auto-assignment. We consider the sample EVPN | used to manage ESI auto-assignment. We consider the sample EVPN | |||
service delivered using the architecture depicted in <xref | service delivered using the architecture depicted in <xref target="auto- | |||
target="auto-esi-ex"></xref>.</t> | esi-ex" format="default"/>.</t> | |||
<figure anchor="auto-esi-ex"> | ||||
<t><figure align="center" anchor="auto-esi-ex" | <name>An Example of Automatic ESI Assignment</name> | |||
title="An Example of Automatic ESI Assignment "> | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
<artwork><![CDATA[ | ES | |||
ES | | +-----+ +--------------+ +-----+ | |||
| +-----+ +--------------+ +-----+ | +----+ | | PE1 |======| |===| PE3 | +----+ | |||
+----+ | | PE1 |======| |===| PE3 | +----+ | | +-------+ | | | | +-------+ CE3| | |||
| +-------+ | | | | +-------+ CE3| | | | | +-----+ | | +-----+ +----+ | |||
| | | +-----+ | | +-----+ +----+ | | CE1| | | Core | | |||
| CE1| | | Core | | | | | +-----+ | | +-----+ +----+ | |||
| | | +-----+ | | +-----+ +----+ | | +-------+ | | | | +-------+ CE2| | |||
| +-------+ | | | | +-------+ CE2| | +----+ | | PE2 |======| |===| PE4 | +----+ | |||
+----+ | | PE2 |======| |===| PE4 | +----+ | | +-----+ +--------------+ +-----+ | |||
| +-----+ +--------------+ +-----+ | LACP ]]></artwork> | |||
LACP ]]></artwork> | </figure> | |||
</figure></t> | <t>Figures <xref target="es2" format="counter"/> and <xref target="auto- | |||
lacp" format="counter"/> | ||||
<t><xref target="es2"></xref> and <xref target="auto-lacp"></xref> | ||||
show how the L2NM is used to instruct both PE1 and PE2 to auto-assign | show how the L2NM is used to instruct both PE1 and PE2 to auto-assign | |||
the ESI to identify the ES used with CE1. In this example, we suppose | the ESI to identify the ES used with CE1. In this example, we suppose | |||
that LACP is enabled and that a Type 1 (T=0x01) is used as per Section | that LACP is enabled and that a Type 1 (T=0x01) is used as per <xref tar | |||
5 of <xref target="RFC7432"></xref>. Note that this example does not | get="RFC7432" sectionFormat="of" section="5" format="default"/>. Note that this | |||
include all the details to configure the EVPN service, but focuses | example does not | |||
include all the details to configure the EVPN service but focuses | ||||
only on the ESI management part.</t> | only on the ESI management part.</t> | |||
<figure anchor="es2"> | ||||
<t><figure align="center" anchor="es2" | <name>An Example of an L2NM Message Body to Auto-Assign Ethernet Segme | |||
title="Example of L2NM Message Body to Auto-Assign Ethernet Segment | nt Identifiers</name> | |||
Identifiers"> | <sourcecode type="json"><![CDATA[{ | |||
<artwork><![CDATA[{ | ||||
"ietf-ethernet-segment:ethernet-segments": { | "ietf-ethernet-segment:ethernet-segments": { | |||
"ethernet-segment": [ | "ethernet-segment": [ | |||
{ | { | |||
"name": "esi1", | "name": "esi1", | |||
"esi-type": "esi-type-1-lacp", | "esi-type": "esi-type-1-lacp", | |||
"esi-redundancy-mode": "all-active" | "esi-redundancy-mode": "all-active" | |||
} | } | |||
] | ] | |||
} | } | |||
}]]></artwork> | }]]></sourcecode> | |||
</figure></t> | </figure> | |||
<figure anchor="auto-lacp"> | ||||
<t><figure align="center" anchor="auto-lacp" | <name>An Example of an L2NM Message Body for ESI Auto-Assignment</name | |||
title="An Example of L2NM Message Body for ESI Auto-Assignment"> | > | |||
<artwork><![CDATA[{ | <sourcecode type="json"><![CDATA[{ | |||
"ietf-l2vpn-ntw:l2vpn-ntw": { | "ietf-l2vpn-ntw:l2vpn-ntw": { | |||
"ietf-l2vpn-ntw:vpn-services": { | "ietf-l2vpn-ntw:vpn-services": { | |||
"vpn-service": [ | "vpn-service": [ | |||
{ | { | |||
"vpn-id": "auto-esi-lacp", | "vpn-id": "auto-esi-lacp", | |||
"vpn-description": "Sample to illustrate auto-ESI", | "vpn-description": "Sample to illustrate auto-ESI", | |||
"vpn-type": "ietf-vpn-common:vpws-evpn", | "vpn-type": "ietf-vpn-common:vpws-evpn", | |||
"vpn-nodes": { | "vpn-nodes": { | |||
"vpn-node": [ | "vpn-node": [ | |||
{ | { | |||
skipping to change at line 7476 ¶ | skipping to change at line 7390 ¶ | |||
] | ] | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure></t> | </figure> | |||
<t>The auto-assigned ESI can be retrieved using, e.g., a GET RESTCONF | <t>The auto-assigned ESI can be retrieved using, e.g., a GET RESTCONF | |||
method. The assigned value will be then returned as shown in the | method. The assigned value will then be returned as shown in the | |||
'esi-auto' data node in <xref target="auto-lacp-response"></xref>.</t> | 'esi-auto' data node in <xref target="auto-lacp-response" format="defaul | |||
t"/>.</t> | ||||
<t><figure align="center" anchor="auto-lacp-response" | <figure anchor="auto-lacp-response"> | |||
title="An Example of L2NM Message Body to Retrieve the Assigned ESI" | <name>An Example of an L2NM Message Body to Retrieve the Assigned ESI< | |||
> | /name> | |||
<artwork><![CDATA[=============== NOTE: '\' line wrapping per RFC 87 | <sourcecode type="json"><![CDATA[=============== NOTE: '\' line wrappi | |||
92 ================ | ng per RFC 8792 ================ | |||
{ | { | |||
"ietf-ethernet-segment:ethernet-segments": { | "ietf-ethernet-segment:ethernet-segments": { | |||
"ethernet-segment": [ | "ethernet-segment": [ | |||
{ | { | |||
"name": "esi1", | "name": "esi1", | |||
"ethernet-segment-identifier": "esi-type-1-lacp", | "ethernet-segment-identifier": "esi-type-1-lacp", | |||
"esi-auto": { | "esi-auto": { | |||
"auto-ethernet-segment-identifier": "01:11:00:11:00:11:\ | "auto-ethernet-segment-identifier": "01:11:00:11:00:11:\ | |||
11:9a:00:00" | 11:9a:00:00" | |||
}, | }, | |||
"esi-redundancy-mode": "all-active" | "esi-redundancy-mode": "all-active" | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure></t> | </figure> | |||
</section> | </section> | |||
<section anchor="prec-example" numbered="true" toc="default"> | ||||
<section anchor="prec-example" title="VPN Network Access Precedence"> | <name>VPN Network Access Precedence</name> | |||
<t>In reference to the example depicted in <xref target="p1"></xref>, | <t>In reference to the example depicted in <xref target="p1" format="def | |||
ault"/>, | ||||
an L2VPN service involves two VPN network accesses to sites that | an L2VPN service involves two VPN network accesses to sites that | |||
belong to the same customer.</t> | belong to the same customer.</t> | |||
<figure anchor="p1"> | ||||
<t><figure align="center" anchor="p1" | <name>An Example of Multiple VPN Network Accesses</name> | |||
title="Example of Multiple VPN Network Accesses"> | <artwork align="center" name="" type="" alt=""><![CDATA[+------------- | |||
<artwork align="center"><![CDATA[+--------------+ | -+ | |||
|VPN-NODE | | |VPN-NODE | | |||
| +--+-------+ | | +--+-------+ | |||
| | NET-ACC-1| Primary | | | NET-ACC-1| Primary | |||
| | +------------------ | | | +------------------ | |||
| +--+-------+ | | +--+-------+ | |||
| | | | | | |||
| +--+-------+ | | +--+-------+ | |||
| | NET-ACC-2| Secondary | | | NET-ACC-2| Secondary | |||
| | +------------------ | | | +------------------ | |||
| +--+-------+ | | +--+-------+ | |||
| | | | | | |||
+--------------+ | +--------------+ | |||
]]></artwork> | ]]></artwork> | |||
</figure>In order to tag one of these VPN network accesses as | </figure> | |||
"primary" and the other one as "secondary", <xref target="p2"></xref> | <t>In order to tag one of these VPN network accesses as | |||
"primary" and the other one as "secondary", <xref target="p2" format="de | ||||
fault"/> | ||||
shows an excerpt of the corresponding L2NM configuration. In such a | shows an excerpt of the corresponding L2NM configuration. In such a | |||
configuration, both accesses are bound to the same "group-id" and the | configuration, both accesses are bound to the same "group-id", and the | |||
"precedence" data node set as function of the intended role of each | "precedence" data node is set as a function of the intended role of each | |||
access (primary or secondary).</t> | access (primary or secondary).</t> | |||
<figure anchor="p2"> | ||||
<t><figure align="center" anchor="p2" | <name>An Example of a Message Body to Associate Priority Levels with V | |||
title="Example of Message Body to Associate Priority Levels with VPN | PN Network Accesses</name> | |||
Network Accesses"> | <sourcecode type="json"><![CDATA[{ | |||
<artwork><![CDATA[{ | ||||
"ietf-l2vpn-ntw:l2vpn-ntw": { | "ietf-l2vpn-ntw:l2vpn-ntw": { | |||
"vpn-services": { | "vpn-services": { | |||
"vpn-service": [ | "vpn-service": [ | |||
{ | { | |||
"vpn-id": "Sample-Service", | "vpn-id": "Sample-Service", | |||
"vpn-nodes": { | "vpn-nodes": { | |||
"vpn-node": [ | "vpn-node": [ | |||
{ | { | |||
"vpn-node-id": "VPN-NODE", | "vpn-node-id": "VPN-NODE", | |||
"vpn-network-accesses": { | "vpn-network-accesses": { | |||
skipping to change at line 7581 ¶ | skipping to change at line 7493 ¶ | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
}]]></artwork> | }]]></sourcecode> | |||
</figure></t> | </figure> | |||
<t/> | ||||
<t></t> | ||||
</section> | </section> | |||
</section> | </section> | |||
<section numbered="false" toc="default"> | ||||
<section numbered="false" title="Acknowledgements" toc="default"> | <name>Acknowledgements</name> | |||
<t>During the discussions of this work, helpful comments, suggestions, | <t>During the discussions of this work, helpful comments, suggestions, | |||
and reviews were received from: Sergio Belotti, Italo Busi, Miguel Cros | and reviews were received from: <contact fullname="Sergio Belotti"/>, | |||
Cecilia, Joe Clarke, Dhruv Dhody, Adrian Farrel, Roque Gagliano, | <contact fullname="Italo Busi"/>, <contact fullname="Miguel Cros | |||
Christian Jacquenet, Kireeti Kompella, Julian Lucek, Moti Morgenstern, | Cecilia"/>, <contact fullname="Joe Clarke"/>, <contact fullname="Dhruv Dho | |||
Erez Segev, and Tom Petch. Many thanks to them.</t> | dy"/>, <contact fullname="Adrian Farrel"/>, <contact fullname="Roque Gagliano"/> | |||
, | ||||
<t>Luay Jalil, Jichun Ma, Daniel King, and Zhang Guiyu contributed to an | <contact fullname="Christian Jacquenet"/>, <contact fullname="Kireeti Komp | |||
early version of this document.</t> | ella"/>, <contact fullname="Julian Lucek"/>, <contact fullname="Moti Morgenstern | |||
"/>, | ||||
<t>Thanks to Yingzhen Qu and Himanshu Shah for the rtgdir reviews, | <contact fullname="Tom Petch"/>, and <contact fullname="Erez Segev"/>. Man | |||
Ladislav Lhotka for the yangdoctors review, Chris Lonvick for the secdir | y thanks to them.</t> | |||
review, and Dale Worley for the gen-art review. Special thanks to Adrian | ||||
Farrel for the careful Shepherd review.</t> | ||||
<t>Thanks to Robert Wilton for the careful AD review and various | <t><contact fullname="Zhang Guiyu"/>, <contact fullname="Luay Jalil"/>, | |||
<contact fullname="Daniel King"/>, and <contact fullname="Jichun Ma"/> | ||||
contributed to an early draft version of this document.</t> | ||||
<t>Thanks to <contact fullname="Yingzhen Qu"/> and <contact fullname="Hima | ||||
nshu Shah"/> for the rtgdir reviews, | ||||
<contact fullname="Ladislav Lhotka"/> for the yangdoctors review, <contact | ||||
fullname="Chris Lonvick"/> for the secdir | ||||
review, and <contact fullname="Dale Worley"/> for the gen-art review. Spec | ||||
ial thanks to <contact fullname="Adrian | ||||
Farrel"/> for the careful Shepherd review.</t> | ||||
<t>Thanks to <contact fullname="Robert Wilton"/> for the careful AD review | ||||
and various | ||||
suggestions to enhance the model.</t> | suggestions to enhance the model.</t> | |||
<t>Thanks to <contact fullname="Roman Danyliw"/>, <contact fullname="Lars | ||||
<t>Thanks to Lars Eggert, Erik Kline, Roman Danyliw, Francesca | Eggert"/>, <contact fullname="Erik Kline"/>, <contact fullname="Francesca | |||
Palombini, Zaheduzzaman Sarker, and Eric Vyncke for the IESG review.</t> | Palombini"/>, <contact fullname="Zaheduzzaman Sarker"/>, and <contact full | |||
name="Éric Vyncke"/> for the IESG review.</t> | ||||
<t>A YANG module for Ethernet segments was first defined in the context | <t>A YANG module for Ethernet segments was first defined in the context | |||
of the EVPN device module <xref target="I-D.ietf-bess-evpn-yang" />.</t> | of the EVPN device module <xref target="I-D.ietf-bess-evpn-yang" format="d | |||
efault"/>.</t> | ||||
<t>This work is partially supported by the European Commission under | <t>This work is partially supported by the European Commission under | |||
Horizon 2020 grant agreement number 101015857 Secured autonomic traffic | Horizon 2020 Secured autonomic traffic management for a Tera of SDN flows | |||
management for a Tera of SDN flows (Teraflow).</t> | (Teraflow) project (grant agreement number 101015857).</t> | |||
</section> | </section> | |||
<section numbered="false" title="Contributors" toc="default"> | <section numbered="false" toc="default"> | |||
<figure> | <name>Contributors</name> | |||
<artwork><![CDATA[Victor Lopez | ||||
Nokia | ||||
Email: victor.lopez@nokia.com | ||||
Qin Wu | <author fullname="Victor Lopez" initials="V" surname="Lopez"> | |||
Huawei | <organization>Nokia</organization> | |||
Email: bill.wu@huawei.com | <address> | |||
<email>victor.lopez@nokia.com</email> | ||||
</address> | ||||
</author> | ||||
Raul Arco | <author fullname="Qin Wu" initials="Q" surname="Wu"> | |||
Nokia | <organization>Huawei</organization> | |||
Email: raul.arco@nokia.com]]></artwork> | <address> | |||
</figure> | <email>bill.wu@huawei.com</email> | |||
</address> | ||||
</author> | ||||
<t /> | <author fullname="Raul Arco" initials="R" surname="Arco"> | |||
<organization>Nokia</organization> | ||||
<address> | ||||
<email>raul.arco@nokia.com</email> | ||||
</address> | ||||
</author> | ||||
<t /> | ||||
</section> | </section> | |||
</back> | </back> | |||
</rfc> | </rfc> | |||
End of changes. 522 change blocks. | ||||
2027 lines changed or deleted | 2191 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |