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 "&#160;">
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ <!ENTITY zwsp "&#8203;">
<!-- One method to get references from the online citation libraries. <!ENTITY nbhy "&#8209;">
There has to be one entity for each item to be referenced. <!ENTITY wj "&#8288;">
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="&quot;base&quot;:">Contains 'bgp-l2-encaps-type'.</t> <dd>Contains 'bgp-l2-encaps-type'.</dd>
<dt>"description":</dt>
<t hangText="&quot;description&quot;:">Replicates the description <dd>Replicates the description
from the registry.</t> from the registry.</dd>
<dt>"reference":</dt>
<t hangText="&quot;reference&quot;:">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="&quot;base&quot;:">Contains 'iana-pw-types'.</t> <dd>Contains 'iana-pw-types'.</dd>
<dt>"description":</dt>
<t hangText="&quot;description&quot;:">Replicates the description <dd>Replicates the description
from the registry.</t> from the registry.</dd>
<dt>"reference":</dt>
<t hangText="&quot;reference&quot;:">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.