| rfc9291xml2.original.xml | rfc9291.xml | |||
|---|---|---|---|---|
| <?xml version="1.0" encoding="US-ASCII"?> | <?xml version='1.0' encoding='UTF-8'?> | |||
| <!-- This template is for creating an Internet Draft using xml2rfc, | <!DOCTYPE rfc [ | |||
| which is available here: http://xml.resource.org. --> | <!ENTITY nbsp " "> | |||
| <!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | <!ENTITY zwsp "​"> | |||
| <!-- One method to get references from the online citation libraries. | <!ENTITY nbhy "‑"> | |||
| There has to be one entity for each item to be referenced. | <!ENTITY wj "⁠"> | |||
| An alternate method (rfc include) is described in the references. --> | ||||
| <!ENTITY RFC2119 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.2119.xml"> | ||||
| <!ENTITY RFC3688 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.3688.xml"> | ||||
| <!ENTITY RFC6020 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.6020.xml"> | ||||
| <!ENTITY RFC6241 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.6241.xml"> | ||||
| <!ENTITY RFC6242 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.6242.xml"> | ||||
| <!ENTITY RFC7950 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.7950.xml"> | ||||
| <!ENTITY RFC7432 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.7432.xml"> | ||||
| <!ENTITY RFC8040 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.8040.xml"> | ||||
| <!ENTITY RFC8174 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.8174.xml"> | ||||
| <!ENTITY RFC8214 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.8214.xml"> | ||||
| <!ENTITY RFC8309 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.8309.xml"> | ||||
| <!ENTITY RFC8340 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.8340.xml"> | ||||
| <!ENTITY RFC8341 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.8341.xml"> | ||||
| <!ENTITY RFC8453 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.8453.xml"> | ||||
| <!ENTITY RFC8466 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
| ce.RFC.8466.xml"> | ||||
| ]> | ]> | |||
| <?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?> | ||||
| <!-- used by XSLT processors --> | ||||
| <!-- For a complete list and description of processing instructions (PIs), | ||||
| please see http://xml.resource.org/authoring/README.html. --> | ||||
| <!-- Below are generally applicable Processing Instructions (PIs) that most I-Ds | ||||
| might want to use. | ||||
| (Here they are set differently than their defaults in xml2rfc v1.32) --> | ||||
| <?rfc strict="yes" ?> | ||||
| <!-- give errors regarding ID-nits and DTD validation --> | ||||
| <!-- control the table of contents (ToC) --> | ||||
| <?rfc toc="yes"?> | ||||
| <!-- generate a ToC --> | ||||
| <?rfc tocdepth="5"?> | ||||
| <!-- the number of levels of subsections in ToC. default: 3 --> | ||||
| <!-- control references --> | ||||
| <?rfc symrefs="yes"?> | ||||
| <!-- use symbolic references tags, i.e, [RFC2119] instead of [1] --> | ||||
| <?rfc sortrefs="yes" ?> | ||||
| <!-- sort the reference entries alphabetically --> | ||||
| <!-- control vertical white space | ||||
| (using these PIs as follows is recommended by the RFC Editor) --> | ||||
| <?rfc compact="yes" ?> | ||||
| <!-- do not start each main section on a new page --> | ||||
| <?rfc subcompact="no" ?> | ||||
| <!-- keep one blank line between list items --> | ||||
| <!-- end of list of popular I-D processing instructions --> | ||||
| <rfc category="std" docName="draft-ietf-opsawg-l2nm-19" ipr="trust200902"> | ||||
| <!-- category values: std, bcp, info, exp, and historic | ||||
| ipr values: full3667, noModification3667, noDerivatives3667 | ||||
| you can add the attributes updates="NNNN" and obsoletes="NNNN" | ||||
| they will automatically be output with "(if approved)" --> | ||||
| <!-- ***** FRONT MATTER ***** --> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" number="9291" doc Name="draft-ietf-opsawg-l2nm-19" ipr="trust200902" obsoletes="" updates="" conse nsus="true" submissionType="IETF" xml:lang="en" tocInclude="true" tocDepth="5" s ymRefs="true" sortRefs="true" version="3"> | |||
| <front> | <front> | |||
| <!-- The abbreviated title is used in the page header - it is only necessary | <title abbrev="A Network YANG Data Model for L2VPNs">A YANG Network Data Mod | |||
| if the | el for Layer 2 VPNs</title> | |||
| full title is longer than 39 characters --> | <seriesInfo name="RFC" value="9291"/> | |||
| <title abbrev="L2NM">A YANG Network Data Model for Layer 2 VPNs</title> | ||||
| <!-- add 'role="editor"' below for the editors if appropriate --> | ||||
| <!-- Another author who claims to be an editor --> | ||||
| <author fullname="Mohamed Boucadair" initials="M." role="editor" | <author fullname="Mohamed Boucadair" initials="M." role="editor" surname="Bo | |||
| surname="Boucadair "> | ucadair "> | |||
| <organization>Orange</organization> | <organization>Orange</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street></street> | <street/> | |||
| <!-- Reorder these if your country does things differently --> | ||||
| <city>Rennes</city> | <city>Rennes</city> | |||
| <region/> | ||||
| <region></region> | <code/> | |||
| <code></code> | ||||
| <country>France</country> | <country>France</country> | |||
| </postal> | </postal> | |||
| <phone/> | ||||
| <phone></phone> | ||||
| <email>mohamed.boucadair@orange.com</email> | <email>mohamed.boucadair@orange.com</email> | |||
| <!-- uri and facsimile elements may also be added --> | ||||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Oscar Gonzalez de Dios" initials="O." role="editor" surnam | ||||
| <author fullname="Oscar Gonzalez de Dios" initials="O." role="editor" | e="Gonzalez de Dios"> | |||
| surname="Gonzalez de Dios"> | ||||
| <organization>Telefonica</organization> | <organization>Telefonica</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street></street> | <street/> | |||
| <!-- Reorder these if your country does things differently --> | ||||
| <city>Madrid</city> | <city>Madrid</city> | |||
| <region/> | ||||
| <region></region> | <code/> | |||
| <code></code> | ||||
| <country>Spain</country> | <country>Spain</country> | |||
| </postal> | </postal> | |||
| <email>oscar.gonzalezdedios@telefonica.com</email> | <email>oscar.gonzalezdedios@telefonica.com</email> | |||
| <!-- uri and facsimile elements may also be added --> | ||||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Samier Barguil" initials="S." surname="Barguil"> | <author fullname="Samier Barguil" initials="S." surname="Barguil"> | |||
| <organization>Telefonica</organization> | <organization>Telefonica</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street></street> | <street/> | |||
| <!-- Reorder these if your country does things differently --> | ||||
| <city>Madrid</city> | <city>Madrid</city> | |||
| <region/> | ||||
| <region></region> | <code/> | |||
| <code></code> | ||||
| <country>Spain</country> | <country>Spain</country> | |||
| </postal> | </postal> | |||
| <phone/> | ||||
| <phone></phone> | ||||
| <email>samier.barguilgiraldo.ext@telefonica.com</email> | <email>samier.barguilgiraldo.ext@telefonica.com</email> | |||
| <!-- uri and facsimile elements may also be added --> | ||||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Luis Angel Munoz" initials="L." surname="Munoz"> | <author fullname="Luis Angel Munoz" initials="L." surname="Munoz"> | |||
| <organization>Vodafone</organization> | <organization>Vodafone</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street></street> | <street/> | |||
| <city/> | ||||
| <!-- Reorder these if your country does things differently --> | <region/> | |||
| <code/> | ||||
| <city></city> | ||||
| <region></region> | ||||
| <code></code> | ||||
| <country>Spain</country> | <country>Spain</country> | |||
| </postal> | </postal> | |||
| <phone/> | ||||
| <phone></phone> | ||||
| <email>luis-angel.munoz@vodafone.com</email> | <email>luis-angel.munoz@vodafone.com</email> | |||
| <!-- uri and facsimile elements may also be added --> | ||||
| </address> | </address> | |||
| </author> | </author> | |||
| <date month="September" year="2022"/> | ||||
| <date day="02" month="June" year="2022" /> | ||||
| <!-- Meta-data Declarations --> | ||||
| <area>ops</area> | <area>ops</area> | |||
| <workgroup>OPSAWG</workgroup> | <workgroup>OPSAWG</workgroup> | |||
| <keyword>automation</keyword> | <keyword>automation</keyword> | |||
| <keyword>network model</keyword> | <keyword>network model</keyword> | |||
| <keyword>service provider</keyword> | <keyword>service provider</keyword> | |||
| <keyword>service provisionning</keyword> | <keyword>service provisionning</keyword> | |||
| <keyword>network automation</keyword> | <keyword>network automation</keyword> | |||
| <keyword>service delivery</keyword> | <keyword>service delivery</keyword> | |||
| <abstract> | <abstract> | |||
| <t>This document defines an L2VPN Network YANG Model (L2NM) which can be | ||||
| used to manage the provisioning of Layer 2 Virtual Private Network | <t>This document defines an L2VPN Network Model (L2NM) that can be | |||
| services within a network (e.g., service provider network). The L2NM | used to manage the provisioning of Layer 2 Virtual Private Network (L2VPN) | |||
| complements the Layer 2 Service Model (L2SM) by providing a | services within a network (e.g., a service provider network). The L2NM | |||
| complements the L2VPN Service Model (L2SM) by providing a | ||||
| network-centric view of the service that is internal to a service | network-centric view of the service that is internal to a service | |||
| provider. The L2NM is particularly meant to be used by a network | provider. The L2NM is particularly meant to be used by a network | |||
| controller to derive the configuration information that will be sent to | controller to derive the configuration information that will be sent to | |||
| relevant network devices.</t> | relevant network devices.</t> | |||
| <t>Also, this document defines a YANG module to manage Ethernet segments | <t>Also, this document defines a YANG module to manage Ethernet segments | |||
| and the initial versions of two IANA-maintained modules that include a | and the initial versions of two IANA-maintained modules that include a | |||
| set of identities of BGP Layer 2 encapsulation types and pseudowire | set of identities of BGP Layer 2 encapsulation types and pseudowire | |||
| types.</t> | types.</t> | |||
| </abstract> | </abstract> | |||
| <note title="Editorial Note (To be removed by RFC Editor)"> | ||||
| <t>Please update these statements within the document with the RFC | ||||
| number to be assigned to this document:<list style="symbols"> | ||||
| <t>"This version of this YANG module is part of RFC XXXX;"</t> | ||||
| <t>"RFC XXXX: A YANG Network Data Model for Layer 2 VPNs";</t> | ||||
| <t>reference: RFC XXXX</t> | ||||
| </list></t> | ||||
| <t>Also, please update the "revision" date of the YANG modules.</t> | ||||
| </note> | ||||
| </front> | </front> | |||
| <middle> | <middle> | |||
| <section title="Introduction"> | <section numbered="true" toc="default"> | |||
| <t><xref target="RFC8466"></xref> defines an L2VPN Service Model (L2SM) | <name>Introduction</name> | |||
| <t><xref target="RFC8466" format="default"/> defines an L2VPN Service Mode | ||||
| l (L2SM) | ||||
| YANG data model that can be used between customers and service providers | YANG data model that can be used between customers and service providers | |||
| for ordering Layer 2 Virtual Private Network (L2VPN) services. This | for ordering Layer 2 Virtual Private Network (L2VPN) services. This | |||
| document complements the L2SM by creating a network-centric view of the | document complements the L2SM by creating a network-centric view of the | |||
| service: the L2VPN Network Model (L2NM).</t> | service: the L2VPN Network Model (L2NM).</t> | |||
| <t>Also, this document defines the initial versions of two | <t>Also, this document defines the initial versions of two | |||
| IANA-maintained modules that define a set of identities of BGP Layer 2 | IANA-maintained modules that define a set of identities of BGP Layer 2 | |||
| encapsulation types (<xref target="iana-bgp"></xref>) and pseudowire | encapsulation types (<xref target="iana-bgp" format="default"/>) and pseud | |||
| types (<xref target="iana-pw"></xref>). These types are used in the L2NM | owire | |||
| to identify a Layer 2 encapsulation type as a function of the signalling | types (<xref target="iana-pw" format="default"/>). These types are used in | |||
| the L2NM | ||||
| to identify a Layer 2 encapsulation type as a function of the signaling | ||||
| option used to deliver an L2VPN service. Relying upon these | option used to deliver an L2VPN service. Relying upon these | |||
| IANA-maintained modules is meant to provide more flexibility in handling | IANA-maintained modules is meant to provide more flexibility in handling | |||
| new types rather than being limited by a set of identities defined in | new types rather than being limited by a set of identities defined in | |||
| the L2NM itself. <xref target="es-yang"></xref> defines another YANG | the L2NM itself. <xref target="es-yang" format="default"/> defines another YANG | |||
| module to manage Ethernet Segments (ESes) that are required for | module to manage Ethernet Segments (ESes) that are required for | |||
| instantiating Ethernet VPNs (EVPNs). References to Ethernet segments | instantiating Ethernet VPNs (EVPNs). References to Ethernet segments | |||
| that are created using the module in <xref target="es-yang"></xref> can | that are created using the module in <xref target="es-yang" format="defaul t"/> can | |||
| be included in the L2NM for EVPNs.</t> | be included in the L2NM for EVPNs.</t> | |||
| <t>The L2NM (<xref target="YANG_module" format="default"/>) can be exposed | ||||
| <t>The L2NM (<xref target="YANG_module"></xref>) can be exposed, for | , for | |||
| example, by a network controller to a service controller within the | example, by a network controller to a service controller within the | |||
| service provider's network. In particular, the model can be used in the | service provider's network. In particular, the model can be used in the | |||
| communication interface between the entity that interacts directly with | communication interface between the entity that interacts directly with | |||
| the customer (i.e., the service orchestrator) and the entity in charge | the customer (i.e., the service orchestrator) and the entity in charge | |||
| of network orchestration and control (a.k.a., network | of network orchestration and control (a.k.a., network | |||
| controller/orchestrator) by allowing for more network-centric | controller/orchestrator) by allowing for more network-centric | |||
| information to be included.</t> | information to be included.</t> | |||
| <t>The L2NM supports capabilities such as exposing operational | ||||
| <t>The L2NM supports capabilities, such as exposing operational | ||||
| parameters, transport protocols selection, and precedence. It can also | parameters, transport protocols selection, and precedence. It can also | |||
| serve as a multi-domain orchestration interface.</t> | serve as a multi-domain orchestration interface.</t> | |||
| <t>The L2NM is scoped for a variety of Layer 2 Virtual Private Networks | ||||
| <t>The L2NM is scoped for a variety of Layer 2 Virtual Private Networks, | such as: </t> | |||
| such as: <?rfc subcompact="yes" ?><list style="symbols"> | <ul spacing="compact"> | |||
| <t>Virtual Private LAN Service (VPLS) <xref | <li>Virtual Private LAN Service (VPLS) <xref target="RFC4761" format="de | |||
| target="RFC4761"></xref><xref target="RFC4762"></xref></t> | fault"/> <xref target="RFC4762" format="default"/></li> | |||
| <li>Virtual Private Wire Service (VPWS) (<xref target="RFC4664" sectionF | ||||
| <t>Virtual Private Wire Service (VPWS) (Section 3.1.1 of <xref | ormat="of" section="3.1.1" format="default"/>)</li> | |||
| target="RFC4664"></xref>)</t> | <li> | |||
| <t>Various flavors of EVPNs: </t> | ||||
| <t>Various flavors of EVPNs: <list style="symbols"> | <ul spacing="compact"> | |||
| <t>VPWS EVPN <xref target="RFC8214"></xref>,</t> | <li>VPWS EVPN <xref target="RFC8214" format="default"/>,</li> | |||
| <li>Provider Backbone Bridging Combined with Ethernet VPNs (PBB-EVPN | ||||
| <t>Provider Backbone Bridging Ethernet VPNs (PBB EVPNs) <xref | s) <xref target="RFC7623" format="default"/>,</li> | |||
| target="RFC7623"></xref>,</t> | <li>EVPN over MPLS <xref target="RFC7432" format="default"/>, and</l | |||
| i> | ||||
| <t>EVPN over MPLS <xref target="RFC7432"></xref>, and</t> | <li>EVPN over Virtual Extensible LAN (VXLAN) <xref target="RFC8365" | |||
| format="default"/>.</li> | ||||
| <t>EVPN over Virtual eXtensible Local Area Network (VXLAN) <xref | </ul> | |||
| target="RFC8365"></xref>.</t> | </li> | |||
| </list></t> | </ul> | |||
| </list></t> | <t>The L2NM is designed to easily support future | |||
| <t><?rfc subcompact="no" ?>The L2NM is designed to easily support future | ||||
| Layer 2 VPN flavors and procedures (e.g., advanced configuration such as | Layer 2 VPN flavors and procedures (e.g., advanced configuration such as | |||
| pseudowires resilience or Multi-Segment pseudowires <xref | pseudowires resilience or multi-segment pseudowires <xref target="RFC7267" | |||
| target="RFC7267"></xref>). A set of examples to illustrate the use of | format="default"/>). A set of examples to illustrate the use of | |||
| the L2NM are provided in <xref target="examples"></xref>.</t> | the L2NM are provided in <xref target="examples" format="default"/>.</t> | |||
| <t>This document uses the common Virtual Private Network (VPN) YANG | <t>This document uses the common Virtual Private Network (VPN) YANG | |||
| module defined in <xref target="RFC9181"></xref>.</t> | module defined in <xref target="RFC9181" format="default"/>.</t> | |||
| <t>The YANG data models in this document conform to the Network | ||||
| <t>The YANG data models in this document conforms to the Network | Management Datastore Architecture (NMDA) defined in <xref target="RFC8342" | |||
| Management Datastore Architecture (NMDA) defined in <xref | format="default"/>.</t> | |||
| target="RFC8342"></xref>.</t> | ||||
| </section> | </section> | |||
| <section anchor="terminology" numbered="true" toc="default"> | ||||
| <section anchor="terminology" title="Terminology"> | <name>Terminology</name> | |||
| <t>This document assumes that the reader is familiar with <xref | <t>This document assumes that the reader is familiar with <xref target="RF | |||
| target="RFC6241"></xref>, <xref target="RFC7950"></xref>, <xref | C6241" format="default"/>, <xref target="RFC7950" format="default"/>, <xref targ | |||
| target="RFC8466"></xref>, <xref target="RFC4026"></xref>, and <xref | et="RFC8466" format="default"/>, <xref target="RFC4026" format="default"/>, and | |||
| target="RFC8309"></xref>. This document uses terminology from those | <xref target="RFC8309" format="default"/>. This document uses terminology from t | |||
| hose | ||||
| documents.</t> | documents.</t> | |||
| <t>This document uses the term "network model" as defined in <xref | ||||
| <t>This document uses the term "network model" as defined in Section 2.1 | target="RFC8969" sectionFormat="of" section="2.1" | |||
| of <xref target="RFC8969"></xref>.</t> | format="default"/>.</t> | |||
| <t>The meanings of the symbols in the YANG tree diagrams are defined in <x | ||||
| <t>The meanings of the symbols in YANG tree diagrams is defined in <xref | ref target="RFC8340" format="default"/>.</t> | |||
| target="RFC8340"></xref>.</t> | ||||
| <t>This document makes use of the following terms:</t> | <t>This document makes use of the following terms:</t> | |||
| <dl newline="false" spacing="normal"> | ||||
| <t><list style="hanging"> | <dt>Ethernet Segment (ES):</dt> | |||
| <t hangText="Ethernet segment (ES):">Refers to the set of the | <dd>Refers to the set of | |||
| Ethernet links that are used by a customer site (device or network) | Ethernet links that are used by a customer site (device or network) | |||
| to connect to one or more Provider Edges (PEs).</t> | to connect to one or more Provider Edges (PEs).</dd> | |||
| <dt>L2VPN Service Model (L2SM):</dt> | ||||
| <t hangText="Layer 2 VPN Service Model (L2SM):">Describes the | <dd>Describes the | |||
| service characterization of an L2VPN that interconnects a set of | service characterization of an L2VPN that interconnects a set of | |||
| sites from the customer's perspective. The customer service model | sites from the customer's perspective. The customer service model | |||
| does not provide details on the service provider network. An L2VPN | does not provide details on the service provider network. An L2VPN | |||
| customer service model is defined in <xref | customer service model is defined in <xref target="RFC8466" format="de | |||
| target="RFC8466"></xref>.</t> | fault"/>.</dd> | |||
| <dt>L2VPN Network Model (L2NM):</dt> | ||||
| <t hangText="Layer 2 VPN Network Model (L2NM):">Refers to the YANG | <dd>Refers to the YANG | |||
| data model that describes an L2VPN service with a network-centric | data model that describes an L2VPN service with a network-centric | |||
| view. It contains information on the service provider network and | view. It contains information on the service provider network and | |||
| might include allocated resources. Network controllers can use it to | might include allocated resources. Network controllers can use it to | |||
| manage the Layer 2 VPN service configuration in the service | manage the Layer 2 VPN service configuration in the service | |||
| provider's network. The corresponding YANG module can be used by a | provider's network. The corresponding YANG module can be used by a | |||
| service orchestrator to request a VPN service to a network | service orchestrator to request a VPN service to a network | |||
| controller or to expose the list of active L2VPN services. The L2NM | controller or to expose the list of active L2VPN services. The L2NM | |||
| can also be used to retrieve a set of L2VPN-related state | can also be used to retrieve a set of L2VPN-related state | |||
| information (including OAM).</t> | information (including Operations, Administration, and Maintenance (OA | |||
| M)).</dd> | ||||
| <t hangText="MAC-VRF:">Refers to a Virtual Routing and Forwarding | <dt>MAC-VRF:</dt> | |||
| (VRF) table for Media Access Control (MAC) addresses on a PE.</t> | <dd>Refers to a Virtual Routing and Forwarding | |||
| (VRF) table for Media Access Control (MAC) addresses on a PE.</dd> | ||||
| <t hangText="Network controller:">Denotes a functional entity | <dt>Network controller:</dt> | |||
| responsible for the management of the service provider network.</t> | <dd>Denotes a functional entity | |||
| responsible for the management of the service provider network.</dd> | ||||
| <t hangText="Service orchestrator:">Refers to a functional entity | <dt>Service orchestrator:</dt> | |||
| that interacts with the customer of an L2VPN relying upon, e.g., the | <dd>Refers to a functional entity that interacts with the customer of | |||
| L2SM. The service orchestrator is responsible for the Customer Edge | an L2VPN relying upon, e.g., the L2SM. The service orchestrator is | |||
| - to Provider Edge (CE-PE) attachment circuits, the PE selection, | responsible for the Customer Edge to Provider Edge (CE-PE) attachment | |||
| and requesting the activation of the L2VPN service to a network | circuits, the PE selection, and requesting the activation of the L2VPN | |||
| controller.</t> | service to a network controller.</dd> | |||
| <dt>Service provider network:</dt> | ||||
| <t hangText="Service provider network:">Is a network able to provide | <dd>A network that is able to provide | |||
| L2VPN-related services.</t> | L2VPN-related services.</dd> | |||
| <dt>VPN node:</dt> | ||||
| <t hangText="VPN node:">Is an abstraction that represents a set of | <dd>An abstraction that represents a set of | |||
| policies applied on a PE and belonging to a single VPN service. A | policies applied on a PE and belongs to a single VPN service. A | |||
| VPN service involves one or more VPN nodes. The VPN node will | VPN service involves one or more VPN nodes. The VPN node will | |||
| identify the service providers' node on which the VPN is | identify the service providers' node on which the VPN is | |||
| deployed.</t> | deployed.</dd> | |||
| <dt>VPN network access:</dt> | ||||
| <t hangText="VPN network access:">Is an abstraction that represents | <dd>An abstraction that represents | |||
| the network interfaces that are associated with a given VPN node. | the network interfaces that are associated with a given VPN node. | |||
| Traffic coming from the VPN network access belongs to the VPN. The | Traffic coming from the VPN network access belongs to the VPN. The | |||
| attachment circuits (bearers) between Customer Edges (CEs) and | attachment circuits (bearers) between CEs and | |||
| Provider Edges (PEs) are terminated in the VPN network access.</t> | PEs are terminated in the VPN network access.</dd> | |||
| <dt>VPN service provider:</dt> | ||||
| <t hangText="VPN service provider:">Is a service provider that | <dd>A service provider that | |||
| offers L2VPN-related services.</t> | offers L2VPN-related services.</dd> | |||
| </list></t> | </dl> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Acronyms and Abbreviations "> | <name>Acronyms and Abbreviations</name> | |||
| <t>The following acronyms and abbreviations are used in this | <t>The following acronyms and abbreviations are used in this | |||
| document:<?rfc subcompact="yes" ?></t> | document:</t> | |||
| <dl newline="false" spacing="compact" indent="8"> | ||||
| <t><list hangIndent="8" style="hanging"> | <dt>ACL</dt> | |||
| <t hangText="ACL">Access Control List</t> | <dd>Access Control List</dd> | |||
| <dt>BGP</dt> | ||||
| <t hangText="BGP">Border Gateway Protocol</t> | <dd>Border Gateway Protocol</dd> | |||
| <dt>BUM</dt> | ||||
| <t hangText="BUM">Broadcast, unknown unicast, or multicast</t> | <dd>Broadcast, Unknown Unicast, or Multicast</dd> | |||
| <dt>CE</dt> | ||||
| <t hangText="CE">Customer Edge</t> | <dd>Customer Edge</dd> | |||
| <dt>ES</dt> | ||||
| <t hangText="ES">Ethernet Segment</t> | <dd>Ethernet Segment</dd> | |||
| <dt>ESI</dt> | ||||
| <t hangText="ESI">Ethernet Segment Identifier</t> | <dd>Ethernet Segment Identifier</dd> | |||
| <dt>EVPN</dt> | ||||
| <t hangText="EVPN">Ethernet VPN</t> | <dd>Ethernet VPN</dd> | |||
| <dt>L2VPN</dt> | ||||
| <t hangText="L2VPN">Layer 2 Virtual Private Network</t> | <dd>Layer 2 Virtual Private Network</dd> | |||
| <dt>L2SM</dt> | ||||
| <t hangText="L2SM">L2VPN Service Model</t> | <dd>L2VPN Service Model</dd> | |||
| <dt>L2NM</dt> | ||||
| <t hangText="L2NM">L2VPN Network Model</t> | <dd>L2VPN Network Model</dd> | |||
| <dt>MAC</dt> | ||||
| <t hangText="MAC">Media Access Control</t> | <dd>Media Access Control</dd> | |||
| <dt>PBB</dt> | ||||
| <t hangText="PBB">Provider Backbone Bridging</t> | <dd>Provider Backbone Bridging</dd> | |||
| <dt>PCP</dt> | ||||
| <t hangText="PCP">Priority Code Point</t> | <dd>Priority Code Point</dd> | |||
| <dt>PE</dt> | ||||
| <t hangText="PE">Provider Edge</t> | <dd>Provider Edge</dd> | |||
| <dt>QoS</dt> | ||||
| <t hangText="QoS">Quality of Service</t> | <dd>Quality of Service</dd> | |||
| <dt>RD</dt> | ||||
| <t hangText="RD">Route Distinguisher</t> | <dd>Route Distinguisher</dd> | |||
| <dt>RT</dt> | ||||
| <t hangText="RT">Route Target</t> | <dd>Route Target</dd> | |||
| <dt>VPLS</dt> | ||||
| <t hangText="VPLS">Virtual Private LAN Service</t> | <dd>Virtual Private LAN Service</dd> | |||
| <dt>VPN</dt> | ||||
| <t hangText="VPN">Virtual Private Network</t> | <dd>Virtual Private Network</dd> | |||
| <dt>VPWS</dt> | ||||
| <t hangText="VPWS">Virtual Private Wire Service</t> | <dd>Virtual Private Wire Service</dd> | |||
| <dt>VRF</dt> | ||||
| <t hangText="VRF">Virtual Routing and Forwarding</t> | <dd>Virtual Routing and Forwarding</dd> | |||
| </list></t> | </dl> | |||
| <t/> | ||||
| <t><?rfc subcompact="no" ?></t> | ||||
| </section> | </section> | |||
| <section anchor="ref" title="Reference Architecture"> | <section anchor="ref" numbered="true" toc="default"> | |||
| <t><xref target="L2SM_and_L2NM"></xref> illustrates how the L2NM is | <name>Reference Architecture</name> | |||
| <t><xref target="L2SM_and_L2NM" format="default"/> illustrates how the L2N | ||||
| M is | ||||
| used. As a reminder, this figure is an expansion of the architecture | used. As a reminder, this figure is an expansion of the architecture | |||
| presented in Section 3 of <xref target="RFC8466"></xref> and decomposes | presented in <xref target="RFC8466" sectionFormat="of" section="3" format= "default"/> and decomposes | |||
| the box marked "orchestration" in that figure into three separate | the box marked "orchestration" in that figure into three separate | |||
| functional components called "Service Orchestration", "Network | functional components called "Service Orchestration", "Network | |||
| Orchestration", and "Domain Orchestration".</t> | Orchestration", and "Domain Orchestration".</t> | |||
| <t>Similar to <xref target="RFC8466" sectionFormat="of" section="3" format | ||||
| <t>Similar to Section 3 of <xref target="RFC8466"></xref>, CE to PE | ="default"/>, CE to PE | |||
| attachment is achieved through a bearer with a Layer 2 connection on | attachment is achieved through a bearer with a Layer 2 connection on | |||
| top. The bearer refers to properties of the attachment that are below | top. The bearer refers to properties of the attachment that are below | |||
| Layer 2, while the connection refers to Layer 2 protocol-oriented | Layer 2, while the connection refers to Layer 2 protocol-oriented | |||
| properties.</t> | properties.</t> | |||
| <t>The reader may refer to <xref target="RFC8309" format="default"/> for t | ||||
| <t>The reader may refer to <xref target="RFC8309"></xref> for the | he | |||
| distinction between the "Customer Service Model", the "Service Delivery | distinction between the "Customer Service Model", "Service Delivery | |||
| Model", the "Network Configuration Model", and the "Device Configuration | Model", "Network Configuration Model", and "Device Configuration | |||
| Model". The "Domain Orchestration" and "Config Manager" roles may be | Model". The "Domain Orchestration" and "Config Manager" roles may be | |||
| performed by "SDN Controllers".</t> | performed by "SDN Controllers".</t> | |||
| <figure anchor="L2SM_and_L2NM"> | ||||
| <figure align="center" anchor="L2SM_and_L2NM" | <name>L2SM and L2NM Interaction</name> | |||
| title="L2SM and L2NM Interaction"> | <artwork align="left" name="" type="" alt=""><![CDATA[ | |||
| <artwork align="left"><![CDATA[ | ||||
| +---------------+ | +---------------+ | |||
| | Customer | | | Customer | | |||
| +-------+-------+ | +-------+-------+ | |||
| Customer Service Model | | Customer Service Model | | |||
| e.g., l2vpn-svc | | e.g., l2vpn-svc | | |||
| +-------+-------+ | +-------+-------+ | |||
| | Service | | | Service | | |||
| | Orchestration | | | Orchestration | | |||
| +-------+-------+ | +-------+-------+ | |||
| Network Model | | Network Model | | |||
| skipping to change at line 480 ¶ | skipping to change at line 336 ¶ | |||
| \ / | \ / | |||
| +----+ Bearer +----+ +----+ +----+ | +----+ Bearer +----+ +----+ +----+ | |||
| |CE A+ ---------- +PE A+ +PE B+ ------- +CE B| | |CE A+ ---------- +PE A+ +PE B+ ------- +CE B| | |||
| +----+ Connection +----+ +----+ +----+ | +----+ Connection +----+ +----+ +----+ | |||
| Site A Site B | Site A Site B | |||
| NETCONF: Network Configuration Protocol | NETCONF: Network Configuration Protocol | |||
| CLI: Command-Line Interface ]]></artwork> | CLI: Command-Line Interface ]]></artwork> | |||
| </figure> | </figure> | |||
| <t/> | ||||
| <t></t> | ||||
| <t>The customer may use various means to request a service that may | <t>The customer may use various means to request a service that may | |||
| trigger the instantiation of an L2NM. The customer may use the L2SM or | trigger the instantiation of an L2NM. The customer may use the L2SM or | |||
| may rely upon more abstract models to request a service that relies upon | may rely upon more abstract models to request a service that relies upon | |||
| an L2VPN service. For example, the customer may supply an IP | an L2VPN service. For example, the customer may supply an IP | |||
| Connectivity Provisioning Profile (CPP) that characterizes the requested | Connectivity Provisioning Profile (CPP) that characterizes the requested | |||
| service <xref target="RFC7297"></xref>, an enhanced VPN (VPN+) service | service <xref target="RFC7297" format="default"/>, an enhanced VPN (VPN+) | |||
| <xref target="I-D.ietf-teas-enhanced-vpn"></xref>, or an IETF network | service | |||
| slice service <xref | <xref target="I-D.ietf-teas-enhanced-vpn" format="default"/>, or an IETF n | |||
| target="I-D.ietf-teas-ietf-network-slices"></xref>.</t> | etwork | |||
| slice service <xref target="I-D.ietf-teas-ietf-network-slices" format="def | ||||
| <t>Note also that both the L2SM and the L2NM may be used in the context | ault"/>.</t> | |||
| of the Abstraction and Control of TE Networks (ACTN) framework <xref | <t>Note also that both the L2SM and L2NM may be used in the context | |||
| target="RFC8453"></xref>. <xref target="l2sm_actn"></xref> shows the | of the Abstraction and Control of TE Networks (ACTN) framework <xref targe | |||
| t="RFC8453" format="default"/>. <xref target="l2sm_actn" format="default"/> show | ||||
| s the | ||||
| Customer Network Controller (CNC), the Multi-Domain Service Coordinator | Customer Network Controller (CNC), the Multi-Domain Service Coordinator | |||
| (MDSC), and the Provisioning Network Controller (PNC).</t> | (MDSC), and the Provisioning Network Controller (PNC).</t> | |||
| <figure anchor="l2sm_actn"> | ||||
| <figure align="center" anchor="l2sm_actn" | <name>L2SM and L2NM in the Context of ACTN</name> | |||
| title="L2SM and L2NM in the Context of ACTN"> | <artwork align="left" name="" type="" alt=""><![CDATA[ | |||
| <artwork align="left"><![CDATA[ | ||||
| +----------------------------------+ | +----------------------------------+ | |||
| | Customer | | | Customer | | |||
| | +-----------------------------+ | | | +-----------------------------+ | | |||
| | | CNC | | | | | CNC | | | |||
| | +-----------------------------+ | | | +-----------------------------+ | | |||
| +----+-----------------------+-----+ | +----+-----------------------+-----+ | |||
| | | | | | | |||
| | L2SM | L2SM | | L2SM | L2SM | |||
| | | | | | | |||
| +---------+---------+ +---------+---------+ | +---------+---------+ +---------+---------+ | |||
| skipping to change at line 543 ¶ | skipping to change at line 393 ¶ | |||
| | +---------+ | | +---------+ | | | +---------+ | | +---------+ | | |||
| +------------+-------+ +---------+------------+ | +------------+-------+ +---------+------------+ | |||
| | | | | | | |||
| | Device Configuration | | | Device Configuration | | |||
| | | | | | | |||
| +----+---+ +----+---+ | +----+---+ +----+---+ | |||
| | Device | | Device | | | Device | | Device | | |||
| +--------+ +--------+ ]]></artwork> | +--------+ +--------+ ]]></artwork> | |||
| </figure> | </figure> | |||
| </section> | </section> | |||
| <section anchor="relation" numbered="true" toc="default"> | ||||
| <section anchor="relation" title="Relationship to Other YANG Data Models"> | <name>Relationship to Other YANG Data Models</name> | |||
| <t>The "ietf-vpn-common" module <xref target="RFC9181"></xref> includes | <t>The "ietf-vpn-common" module <xref target="RFC9181" format="default"/> | |||
| includes | ||||
| a set of identities, types, and groupings that are meant to be reused by | a set of identities, types, and groupings that are meant to be reused by | |||
| VPN-related YANG modules independently of the layer (e.g., Layer 2, | VPN-related YANG modules independently of the layer (e.g., Layer 2 or | |||
| Layer 3) and the type of the module (e.g., network model, service model) | Layer 3) and the type of the module (e.g., network model or service model) | |||
| including future revisions of existing models (e.g., <xref | including future revisions of existing models (e.g., <xref target="RFC8466 | |||
| target="RFC8466"></xref>). The L2NM reuses these common types and | " format="default"/>). The L2NM reuses these common types and | |||
| groupings.</t> | groupings.</t> | |||
| <t>Also, the L2NM uses the IANA-maintained modules "iana-bgp-l2-encaps" | <t>Also, the L2NM uses the IANA-maintained modules "iana-bgp-l2-encaps" | |||
| (<xref target="iana-bgp"></xref>) and "iana-pseudowire-types" (<xref | (<xref target="iana-bgp" format="default"/>) and "iana-pseudowire-types" ( | |||
| target="iana-pw"></xref>) to identify Layer 2 encapsulation and | <xref target="iana-pw" format="default"/>) to identify Layer 2 encapsulation and | |||
| pseudowire types. More details are provided in Sections <xref | pseudowire types. More details are provided in Sections <xref format="coun | |||
| format="counter" target="bgp"></xref> and <xref format="counter" | ter" target="bgp"/> and <xref format="counter" target="l2tp"/>.</t> | |||
| target="l2tp"></xref>.</t> | ||||
| <t>For the particular case of EVPN, the L2NM includes a name that refers | <t>For the particular case of EVPN, the L2NM includes a name that refers | |||
| to an Ethernet segment that is created using the "ietf-ethernet-segment" | to an Ethernet segment that is created using the "ietf-ethernet-segment" | |||
| module (<xref target="es-yang"></xref>). Some ES-related examples are | module (<xref target="es-yang" format="default"/>). Some ES-related exampl | |||
| provided in Appendices <xref format="counter" | es are | |||
| target="evpn-vpws-app"></xref> and <xref format="counter" | provided in Appendices <xref format="counter" target="evpn-vpws-app"/> and | |||
| target="auto-ex"></xref>.</t> | <xref format="counter" target="auto-ex"/>.</t> | |||
| <t>As discussed in <xref target="ref" format="default"/>, the L2NM is used | ||||
| <t>As discussed in <xref target="ref"></xref>, the L2NM is used to | to | |||
| manage L2VPN services within a service provider network. The module | manage L2VPN services within a service provider network. The module | |||
| provides a network view of the L2VPN service. Such a view is only | provides a network view of the L2VPN service. Such a view is only | |||
| visible to the service provider and is not exposed outside (to | visible to the service provider and is not exposed outside (to | |||
| customers, for example). The following discusses how the L2NM interfaces | customers, for example). The following discusses how the L2NM interfaces | |||
| with other YANG modules:</t> | with other YANG modules:</t> | |||
| <dl newline="false" spacing="normal"> | ||||
| <dt>L2SM:</dt> | ||||
| <dd> | ||||
| <t>The L2NM is not a customer service model.</t> | ||||
| <t>The internal view of the service (i.e., the L2NM) | ||||
| may be mapped to an external view that is visible to customers: | ||||
| L2VPN Service Model (L2SM) <xref target="RFC8466" format="default"/>. | ||||
| </t> | ||||
| <t><list style="hanging"> | <t>The L2NM can be fed with inputs that are requested by customers and | |||
| <t hangText="L2SM:">The L2NM is not a customer service model.<vspace | that typically rely on an L2SM template. Concretely, | |||
| blankLines="1" />The internal view of the service (i.e., the L2NM) | ||||
| may be mapped to an external view which is visible to customers: | ||||
| L2VPN Service Model (L2SM) <xref target="RFC8466"></xref>. <vspace | ||||
| blankLines="1" />The L2NM can be fed with inputs that are requested | ||||
| by customers, typically, relying upon an L2SM template. Concretely, | ||||
| some parts of the L2SM module can be directly mapped into the L2NM | some parts of the L2SM module can be directly mapped into the L2NM | |||
| while other parts are generated as a function of the requested | while other parts are generated as a function of the requested | |||
| service and local guidelines. Finally, there are parts local to the | service and local guidelines. Finally, there are parts local to the | |||
| service provider and do not map directly to the L2SM.<vspace | service provider, and they do not map directly to the L2SM.</t> | |||
| blankLines="1" />Note that using the L2NM within a service provider | <t>Note that using the L2NM within a service provider | |||
| does not assume, nor does it preclude, exposing the VPN service via | does not assume, nor does it preclude, exposing the VPN service via | |||
| the L2SM. This is deployment specific. Nevertheless, the design of | the L2SM. This is deployment specific. Nevertheless, the design of | |||
| L2NM tries to align as much as possible with the features supported | L2NM tries to align as much as possible with the features supported | |||
| by the L2SM to ease the grafting of both the L2NM and the L2SM for | by the L2SM to ease the grafting of both the L2NM and the L2SM for | |||
| the sake of highly automated VPN service provisioning and | the sake of highly automated VPN service provisioning and | |||
| delivery.</t> | delivery.</t> | |||
| </dd> | ||||
| <t hangText="Network Topology Modules:">An L2VPN involves nodes that | <dt>Network Topology Modules:</dt> | |||
| <dd>An L2VPN involves nodes that | ||||
| are part of a topology managed by the service provider network. Such | are part of a topology managed by the service provider network. Such | |||
| a topology can be represented using the network topology module in | a topology can be represented using the network topology module in | |||
| <xref target="RFC8345"></xref> or its extension, such as a network | <xref target="RFC8345" format="default"/> or its extension, such as a | |||
| YANG module for Service Attachment Points (SAPs) <xref | network | |||
| target="I-D.ietf-opsawg-sap"></xref>.</t> | YANG module for Service Attachment Points (SAPs) <xref target="I-D.iet | |||
| f-opsawg-sap" format="default"/>.</dd> | ||||
| <t hangText="Device Modules:">The L2NM is not a device model. | <dt>Device Modules:</dt> | |||
| <vspace blankLines="1" />Once a global VPN service is captured by | <dd> | |||
| <t>The L2NM is not a device model. | ||||
| </t> | ||||
| <t>Once a global VPN service is captured by | ||||
| means of the L2NM, the actual activation and provisioning of the VPN | means of the L2NM, the actual activation and provisioning of the VPN | |||
| service will involve a variety of device modules to tweak the | service will involve a variety of device modules to tweak the | |||
| required functions for the delivery of the service. These functions | required functions for the delivery of the service. These functions | |||
| are supported by the VPN nodes and can be managed using device YANG | are supported by the VPN nodes and can be managed using device YANG | |||
| modules. A non-comprehensive list of such device YANG modules is | modules. A non-comprehensive list of such device YANG modules is | |||
| provided below:<list style="symbols"> | provided below:</t> | |||
| <t>Interfaces <xref target="RFC8343"></xref>.</t> | <ul spacing="normal"> | |||
| <li>Interfaces <xref target="RFC8343" format="default"/></li> | ||||
| <t>BGP <xref target="I-D.ietf-idr-bgp-model"></xref>.</t> | <li>BGP <xref target="I-D.ietf-idr-bgp-model" format="default"/></li | |||
| > | ||||
| <t>MPLS <xref target="RFC8960"></xref>.</t> | <li>MPLS <xref target="RFC8960" format="default"/></li> | |||
| <li>Access Control Lists (ACLs) <xref target="RFC8519" format="defau | ||||
| <t>Access Control Lists (ACLs) <xref | lt"/></li> | |||
| target="RFC8519"></xref>.</t> | </ul> | |||
| </list><vspace blankLines="1" />How the L2NM is used to derive | <t>How the L2NM is used to derive | |||
| device-specific actions is implementation specific.</t> | device-specific actions is implementation specific.</t> | |||
| </list></t> | </dd> | |||
| </dl> | ||||
| </section> | </section> | |||
| <section anchor="es" numbered="true" toc="default"> | ||||
| <section anchor="es" | <name>Description of the Ethernet Segment YANG Module</name> | |||
| title="Description of the Ethernet Segment YANG Module"> | <t>The 'ietf-ethernet-segment' module (<xref target="es-tree" format="defa | |||
| <t>The 'ietf-ethernet-segment' module (<xref target="es-tree"></xref>) | ult"/>) | |||
| is used to manage a set of Ethernet segments in the context of an EVPN | is used to manage a set of Ethernet segments in the context of an EVPN | |||
| service.</t> | service.</t> | |||
| <figure anchor="es-tree"> | ||||
| <t><figure align="center" anchor="es-tree" | <name>Ethernet Segments Tree Structure</name> | |||
| title="Ethernet Segments Tree Structure"> | <sourcecode type="yangtree"><![CDATA[module: ietf-ethernet-segment | |||
| <artwork align="center"><![CDATA[module: ietf-ethernet-segment | ||||
| +--rw ethernet-segments | +--rw ethernet-segments | |||
| +--rw ethernet-segment* [name] | +--rw ethernet-segment* [name] | |||
| +--rw name string | +--rw name string | |||
| +--rw esi-type? identityref | +--rw esi-type? identityref | |||
| +--rw (esi-choice)? | +--rw (esi-choice)? | |||
| | +--:(directly-assigned) | | +--:(directly-assigned) | |||
| | | +--rw ethernet-segment-identifier? yang:hex-string | | | +--rw ethernet-segment-identifier? yang:hex-string | |||
| | +--:(auto-assigned) | | +--:(auto-assigned) | |||
| | +--rw esi-auto | | +--rw esi-auto | |||
| | +--rw (auto-mode)? | | +--rw (auto-mode)? | |||
| skipping to change at line 656 ¶ | skipping to change at line 497 ¶ | |||
| +--rw esi-redundancy-mode? identityref | +--rw esi-redundancy-mode? identityref | |||
| +--rw df-election | +--rw df-election | |||
| | +--rw df-election-method? identityref | | +--rw df-election-method? identityref | |||
| | +--rw revertive? boolean | | +--rw revertive? boolean | |||
| | +--rw election-wait-time? uint32 | | +--rw election-wait-time? uint32 | |||
| +--rw split-horizon-filtering? boolean | +--rw split-horizon-filtering? boolean | |||
| +--rw pbb | +--rw pbb | |||
| | +--rw backbone-src-mac? yang:mac-address | | +--rw backbone-src-mac? yang:mac-address | |||
| +--rw member* [ne-id interface-id] | +--rw member* [ne-id interface-id] | |||
| +--rw ne-id string | +--rw ne-id string | |||
| +--rw interface-id string ]]></artwork> | +--rw interface-id string ]]></sourcecode> | |||
| </figure></t> | </figure> | |||
| <t>The descriptions of the data nodes depicted in <xref target="es-tree" f | ||||
| <t>The descriptions of the data nodes depicted in <xref | ormat="default"/> are as follows:</t> | |||
| target="es-tree"></xref> are as follows:<list style="hanging"> | <dl newline="false" spacing="normal"> | |||
| <t hangText="'name':">Sets a name to uniquely identify an ES within | <dt>'name':</dt> | |||
| <dd> | ||||
| <t>Sets a name to uniquely identify an ES within | ||||
| a service provider network. In order to ease referencing ESes by | a service provider network. In order to ease referencing ESes by | |||
| their name in other modules, "es-ref" typedef is defined.<vspace | their name in other modules, "es-ref" typedef is defined.</t> | |||
| blankLines="1" />This typedef is used in the VPN network access | <t>This typedef is used in the VPN network access | |||
| level of the L2NM to reference an ES (<xref target="sna"></xref>). | level of the L2NM to reference an ES (<xref target="sna" format="defau | |||
| An example to illustrate such a use in the L2NM is provided in <xref | lt"/>). | |||
| target="evpn-vpws-app"></xref>.</t> | An example to illustrate such a use in the L2NM is provided in <xref t | |||
| arget="evpn-vpws-app" format="default"/>.</t> | ||||
| <t hangText="'esi-type':">Indicates the Ethernet Segment Identifier | </dd> | |||
| (ESI) type as discussed in Section 5 of <xref | <dt>'esi-type':</dt> | |||
| target="RFC7432"></xref>. ESIs can be automatically assigned either | <dd> | |||
| <t>Indicates the Ethernet Segment Identifier | ||||
| (ESI) type as discussed in <xref target="RFC7432" sectionFormat="of" s | ||||
| ection="5" format="default"/>. ESIs can be automatically assigned either | ||||
| with or without indicating a pool from which an ESI should be taken | with or without indicating a pool from which an ESI should be taken | |||
| ('esi-pool-name'). The following types are supported: <list | ('esi-pool-name'). The following types are supported: </t> | |||
| style="hanging"> | <dl newline="false" spacing="normal"> | |||
| <t hangText="'esi-type-0-operator':">The ESI is directly | <dt>'esi-type-0-operator':</dt> | |||
| <dd>The ESI is directly | ||||
| configured by the VPN service provider. The configured value is | configured by the VPN service provider. The configured value is | |||
| provided in 'ethernet-segment-identifier'.</t> | provided in 'ethernet-segment-identifier'.</dd> | |||
| <dt>'esi-type-1-lacp':</dt> | ||||
| <t hangText="'esi-type-1-lacp':">The ESI is auto-generated from | <dd>The ESI is auto-generated from | |||
| the IEEE 802.1AX Link Aggregation Control Protocol (LACP) <xref | the IEEE 802.1AX Link Aggregation Control Protocol (LACP) <xref ta | |||
| target="IEEE802.1AX"></xref>.</t> | rget="IEEE802.1AX" format="default"/>.</dd> | |||
| <dt>'esi-type-2-bridge':</dt> | ||||
| <t hangText="'esi-type-2-bridge':">The ESI is auto-generated and | <dd>The ESI is auto-generated and | |||
| determined based on the Layer 2 bridge protocol.</t> | determined based on the Layer 2 bridge protocol.</dd> | |||
| <dt>'esi-type-3-mac':</dt> | ||||
| <t hangText="'esi-type-3-mac':">The ESI is a MAC-based ESI value | <dd>The ESI is a MAC-based ESI value | |||
| that can be auto-generated or configured by the VPN service | that can be auto-generated or configured by the VPN service | |||
| provider.</t> | provider.</dd> | |||
| <dt>'esi-type-4-router-id':</dt> | ||||
| <t hangText="'esi-type-4-router-id':">The ESI is auto-generated | <dd>The ESI is auto-generated | |||
| or configured by the VPN service provider based on the Router | or configured by the VPN service provider based on the Router | |||
| ID. The 'router-id' supplied in <xref target="vpn_node"></xref> | ID. The 'router-id' supplied in <xref target="vpn_node" format="de | |||
| can be used to auto-derive an ESI when this type is used.</t> | fault"/> | |||
| can be used to auto-derive an ESI when this type is used.</dd> | ||||
| <t hangText="'esi-type-5-asn':">The ESI is auto-generated or | <dt>'esi-type-5-asn':</dt> | |||
| <dd>The ESI is auto-generated or | ||||
| configured by the VPN service provider based on the Autonomous | configured by the VPN service provider based on the Autonomous | |||
| System (AS) number. The 'local-autonomous-system' supplied in | System (AS) number. The 'local-autonomous-system' supplied in | |||
| <xref target="profile"></xref> can be used to auto-derive an ESI | <xref target="profile" format="default"/> can be used to auto-deri | |||
| when this type is used.</t> | ve an ESI | |||
| </list><vspace blankLines="1" />Auto-generated values can be | when this type is used.</dd> | |||
| </dl> | ||||
| <t>Auto-generated values can be | ||||
| retrieved using 'auto-ethernet-segment-identifier'.</t> | retrieved using 'auto-ethernet-segment-identifier'.</t> | |||
| </dd> | ||||
| <t hangText="'esi-redundancy-mode':">Specifies the EVPN redundancy | <dt>'esi-redundancy-mode':</dt> | |||
| <dd>Specifies the EVPN redundancy | ||||
| mode for a given ES. The following modes are supported: | mode for a given ES. The following modes are supported: | |||
| Single-Active (Section 14.1.1 of <xref target="RFC7432"></xref>) or | Single-Active (<xref target="RFC7432" sectionFormat="of" section="14.1 | |||
| All-Active (Section 14.1.2 of <xref target="RFC7432"></xref>).</t> | .1" format="default"/>) or | |||
| All-Active (<xref target="RFC7432" sectionFormat="of" section="14.1.2" | ||||
| <t hangText="'df-election':">Specifies a set of parameters related | format="default"/>).</dd> | |||
| to the Designated Forwarder (DF) election (Section 8.5 of <xref | <dt>'df-election':</dt> | |||
| target="RFC7432"></xref>). For example, this data node can be used | <dd> | |||
| to indicate an election method (e.g., <xref target="RFC8584"></xref> | <t>Specifies a set of parameters related | |||
| or <xref target="I-D.ietf-bess-evpn-pref-df"></xref>). If no | to the Designated Forwarder (DF) election (<xref target="RFC7432" sect | |||
| election method is indicated, the default method defined in Section | ionFormat="of" section="8.5" format="default"/>). For example, this data node ca | |||
| 8.5 of <xref target="RFC7432"></xref> is used. <vspace | n be used | |||
| blankLines="1" />As discussed in Section 1.3.2 of <xref | to indicate an election method (e.g., <xref target="RFC8584" format="d | |||
| target="RFC8584"></xref>, the default behavior is to trigger the DF | efault"/> | |||
| or <xref target="I-D.ietf-bess-evpn-pref-df" format="default"/>). If n | ||||
| o | ||||
| election method is indicated, the default method defined in <xref targ | ||||
| et="RFC7432" sectionFormat="of" section="8.5" format="default"/> is used. </t> | ||||
| <t>As discussed in <xref target="RFC8584" sectionFormat="of" section=" | ||||
| 1.3.2" format="default"/>, the default behavior is to trigger the DF | ||||
| election procedure when a DF fails (e.g., link failure). The former | election procedure when a DF fails (e.g., link failure). The former | |||
| DF will take over when it is available again. Such a mode is called | DF will take over when it is available again. Such a mode is called | |||
| revertive. The behavior can be overridden by setting the 'revertive' | 'revertive'. The behavior can be overridden by setting the 'revertive' | |||
| leaf to 'false'. <vspace blankLines="1" />Also, this data node can | leaf to 'false'. </t> | |||
| be used to configure a DF Wait timer ('election-wait-time') (Section | <t>Also, this data node can | |||
| 2.1 of <xref target="RFC8584"></xref>).</t> | be used to configure a DF Wait timer ('election-wait-time') (<xref tar | |||
| get="RFC8584" sectionFormat="of" section="2.1" format="default"/>).</t> | ||||
| <t hangText="'split-horizon-filtering':">Controls the activation of | </dd> | |||
| the split-horizon filtering for an ES (Section 8.3 of <xref | <dt>'split-horizon-filtering':</dt> | |||
| target="RFC7432"></xref>).</t> | <dd>Controls the activation of | |||
| the split-horizon filtering for an ES (<xref target="RFC7432" sectionF | ||||
| <t hangText="'pbb':">Indicates data nodes that are specific to PBB | ormat="of" section="8.3" format="default"/>).</dd> | |||
| <xref target="IEEE-802-1ah"></xref>: <list style="hanging"> | <dt>'pbb':</dt> | |||
| <t hangText="'backbone-src-mac':">Associates a Provider Backbone | <dd> | |||
| <t>Indicates data nodes that are specific to PBB | ||||
| <xref target="IEEE-802-1ah" format="default"/>: </t> | ||||
| <dl newline="false" spacing="normal"> | ||||
| <dt>'backbone-src-mac':</dt> | ||||
| <dd>Associates a Provider Backbone | ||||
| MAC (B-MAC) address with an ES. This is particularly useful for | MAC (B-MAC) address with an ES. This is particularly useful for | |||
| All-Active multihomed ESes (Section 9.1 of <xref | All-Active multihomed ESes (<xref target="RFC7623" sectionFormat=" | |||
| target="RFC7623"></xref>).</t> | of" section="9.1" format="default"/>).</dd> | |||
| </list></t> | </dl> | |||
| </dd> | ||||
| <t hangText="'member':">Lists the members of an ES in a service | <dt>'member':</dt> | |||
| provider network.</t> | <dd>Lists the members of an ES in a service | |||
| </list></t> | provider network.</dd> | |||
| </dl> | ||||
| </section> | </section> | |||
| <section anchor="design_data_model" numbered="true" toc="default"> | ||||
| <section anchor="design_data_model" | <name>Description of the L2NM YANG Module</name> | |||
| title="Description of the L2NM YANG Module"> | <t>The L2NM ('ietf-l2vpn-ntw'; see <xref target="YANG_module" format="defa | |||
| <t>The L2NM ('ietf-l2vpn-ntw', <xref target="YANG_module"></xref>) is | ult"/>) is | |||
| used to manage L2VPNs within a service provider network. In particular, | used to manage L2VPNs within a service provider network. In particular, | |||
| the 'ietf-l2vpn-ntw' module can be used to create, modify, delete and | the 'ietf-l2vpn-ntw' module can be used to create, modify, delete, and | |||
| retrieve L2VPN services in a network controller. The module is designed | retrieve L2VPN services in a network controller. The module is designed | |||
| to minimize the amount of customer-related information.</t> | to minimize the amount of customer-related information.</t> | |||
| <t>The full tree diagram of the module can be generated using the | <t>The full tree diagram of the module can be generated using the | |||
| "pyang" tool <xref target="PYANG"></xref>. That tree is not included | "pyang" tool <xref target="PYANG" format="default"/>. That tree is not inc | |||
| here because it is too long (Section 3.3 of <xref | luded | |||
| target="RFC8340"></xref>). Instead, subtrees are provided for the | here because it is too long (<xref target="RFC8340" sectionFormat="of" sec | |||
| tion="3.3" format="default"/>). Instead, subtrees are provided for the | ||||
| reader's convenience.</t> | reader's convenience.</t> | |||
| <t>Note that the following subsections introduce some data nodes that | <t>Note that the following subsections introduce some data nodes that | |||
| enclose textual descriptions (e.g., VPN service (<xref | enclose textual descriptions (e.g., VPN service (<xref target="l2_vpn_serv | |||
| target="l2_vpn_service"></xref>), VPN node (<xref | ice" format="default"/>), VPN node (<xref target="vpn_node" format="default"/>), | |||
| target="vpn_node"></xref>), or VPN network access (<xref | or VPN network access (<xref target="sna" format="default"/>)). Such descriptio | |||
| target="sna"></xref>)). Such descriptions are not intended for random | ns are not intended for random | |||
| end users but for network/system/software engineers that use their local | end users but for network/system/software engineers that use their local | |||
| context to provide and interpret such information. Therefore, no | context to provide and interpret such information. Therefore, no | |||
| mechanism for language tagging is needed.</t> | mechanism for language tagging is needed.</t> | |||
| <section anchor="structure_model" numbered="true" toc="default"> | ||||
| <name>Overall Structure of the Module</name> | ||||
| <section anchor="structure_model" | ||||
| title="Overall Structure of the Module"> | ||||
| <t>The 'ietf-l2vpn-ntw' module uses two main containers: | <t>The 'ietf-l2vpn-ntw' module uses two main containers: | |||
| 'vpn-profiles' and 'vpn-services' (see <xref | 'vpn-profiles' and 'vpn-services' (see <xref target="ietf-l2vpn-ntw_tree | |||
| target="ietf-l2vpn-ntw_tree"></xref>).</t> | " format="default"/>).</t> | |||
| <t>The 'vpn-profiles' container is used by the provider to define and | <t>The 'vpn-profiles' container is used by the provider to define and | |||
| maintain a set of common VPN profiles that apply to VPN services | maintain a set of common VPN profiles that apply to VPN services | |||
| (<xref target="vpn_profiles"></xref>).</t> | (<xref target="vpn_profiles" format="default"/>).</t> | |||
| <t>The 'vpn-services' container | ||||
| <t hangText="'ethernet-segments':">The 'vpn-services' container | ||||
| maintains the set of L2VPN services managed in the service provider | maintains the set of L2VPN services managed in the service provider | |||
| network. The module allows creating a new L2VPN service by adding a | network. The module allows creating a new L2VPN service by adding a | |||
| new instance of 'vpn-service'. The 'vpn-service' is the data structure | new instance of 'vpn-service'. The 'vpn-service' is the data structure | |||
| that abstracts the VPN service (<xref | that abstracts the VPN service (<xref target="l2_vpn_service" format="de | |||
| target="l2_vpn_service"></xref>).</t> | fault"/>).</t> | |||
| <figure anchor="ietf-l2vpn-ntw_tree"> | ||||
| <figure align="center" anchor="ietf-l2vpn-ntw_tree" | <name>Overall L2NM Tree Structure</name> | |||
| title="Overall L2NM Tree Structure"> | <sourcecode type="yangtree"><![CDATA[module: ietf-l2vpn-ntw | |||
| <artwork align="center"><![CDATA[module: ietf-l2vpn-ntw | ||||
| +--rw l2vpn-ntw | +--rw l2vpn-ntw | |||
| +--rw vpn-profiles | +--rw vpn-profiles | |||
| | ... | | ... | |||
| +--rw vpn-services | +--rw vpn-services | |||
| +--rw vpn-service* [vpn-id] | +--rw vpn-service* [vpn-id] | |||
| ... | ... | |||
| +--rw vpn-nodes | +--rw vpn-nodes | |||
| +--rw vpn-node* [vpn-node-id] | +--rw vpn-node* [vpn-node-id] | |||
| ... | ... | |||
| +--rw vpn-network-accesses | +--rw vpn-network-accesses | |||
| +--rw vpn-network-access* [id] | +--rw vpn-network-access* [id] | |||
| ... ]]></artwork> | ... ]]></sourcecode> | |||
| </figure> | </figure> | |||
| <t/> | ||||
| <t></t> | ||||
| </section> | </section> | |||
| <section anchor="vpn_profiles" numbered="true" toc="default"> | ||||
| <section anchor="vpn_profiles" title="VPN Profiles"> | <name>VPN Profiles</name> | |||
| <t>The 'vpn-profiles' container (<xref | <t>The 'vpn-profiles' container (<xref target="vpn_profiles_tree" format | |||
| target="vpn_profiles_tree"></xref>) is used by a VPN service provider | ="default"/>) is used by a VPN service provider | |||
| to define and maintain a set of VPN profiles <xref | to define and maintain a set of VPN profiles <xref target="RFC9181" form | |||
| target="RFC9181"></xref> that apply to one or several VPN | at="default"/> that apply to one or several VPN | |||
| services.</t> | services.</t> | |||
| <figure anchor="vpn_profiles_tree"> | ||||
| <t><figure align="center" anchor="vpn_profiles_tree" | <name>VPN Profiles Subtree Structure</name> | |||
| title="VPN Profiles Subtree Structure"> | <sourcecode type="yangtree"><![CDATA[ +--rw l2vpn-ntw | |||
| <artwork align="center"><![CDATA[ +--rw l2vpn-ntw | ||||
| +--rw vpn-profiles | +--rw vpn-profiles | |||
| | +--rw valid-provider-identifiers | | +--rw valid-provider-identifiers | |||
| | +--rw external-connectivity-identifier* [id] | | +--rw external-connectivity-identifier* [id] | |||
| | | {external-connectivity}? | | | {external-connectivity}? | |||
| | | +--rw id string | | | +--rw id string | |||
| | +--rw encryption-profile-identifier* [id] | | +--rw encryption-profile-identifier* [id] | |||
| | | +--rw id string | | | +--rw id string | |||
| | +--rw qos-profile-identifier* [id] | | +--rw qos-profile-identifier* [id] | |||
| | | +--rw id string | | | +--rw id string | |||
| | +--rw bfd-profile-identifier* [id] | | +--rw bfd-profile-identifier* [id] | |||
| | | +--rw id string | | | +--rw id string | |||
| | +--rw forwarding-profile-identifier* [id] | | +--rw forwarding-profile-identifier* [id] | |||
| | | +--rw id string | | | +--rw id string | |||
| | +--rw routing-profile-identifier* [id] | | +--rw routing-profile-identifier* [id] | |||
| | +--rw id string | | +--rw id string | |||
| +--rw vpn-services | +--rw vpn-services | |||
| ... ]]></artwork> | ... ]]></sourcecode> | |||
| </figure></t> | </figure> | |||
| <t>The exact definition of these profiles is local to each VPN service | <t>The exact definition of these profiles is local to each VPN service | |||
| provider. The model only includes an identifier for these profiles in | provider. The model only includes an identifier for these profiles in | |||
| order to ease identifying and binding local policies when building a | order to ease identifying and binding local policies when building a | |||
| VPN service. As shown in <xref target="vpn_profiles_tree"></xref>, the | VPN service. As shown in <xref target="vpn_profiles_tree" format="defaul | |||
| following identifiers can be included:<list style="hanging"> | t"/>, the | |||
| <t hangText="'external-connectivity-identifier':">This identifier | following identifiers can be included:</t> | |||
| <dl newline="false" spacing="normal"> | ||||
| <dt>'external-connectivity-identifier':</dt> | ||||
| <dd>This identifier | ||||
| refers to a profile that defines the external connectivity | refers to a profile that defines the external connectivity | |||
| provided to a VPN service (or a subset of VPN sites). External | provided to a VPN service (or a subset of VPN sites). External | |||
| connectivity may be access to the Internet or restricted | connectivity may be access to the Internet or restricted | |||
| connectivity, such as access to a public/private cloud.</t> | connectivity such as access to a public/private cloud.</dd> | |||
| <dt>'encryption-profile-identifier':</dt> | ||||
| <t hangText="'encryption-profile-identifier':">An encryption | <dd>An encryption | |||
| profile refers to a set of policies related to the encryption | profile refers to a set of policies related to the encryption | |||
| schemes and setup that can be applied when building and offering a | schemes and setup that can be applied when building and offering a | |||
| VPN service.</t> | VPN service.</dd> | |||
| <dt>'qos-profile-identifier':</dt> | ||||
| <t hangText="'qos-profile-identifier':">A Quality of Service (QoS) | <dd>A Quality of Service (QoS) | |||
| profile refers to as set of policies, such as classification, | profile refers to a set of policies such as classification, | |||
| marking, and actions (e.g., <xref target="RFC3644"></xref>).</t> | marking, and actions (e.g., <xref target="RFC3644" format="default"/ | |||
| >).</dd> | ||||
| <t hangText="'bfd-profile-identifier':">A Bidirectional Forwarding | <dt>'bfd-profile-identifier':</dt> | |||
| Detection (BFD) profile refers to a set of BFD policies <xref | <dd>A Bidirectional Forwarding | |||
| target="RFC5880"></xref> that can be invoked when building a VPN | Detection (BFD) profile refers to a set of BFD policies <xref target | |||
| service.</t> | ="RFC5880" format="default"/> that can be invoked when building a VPN | |||
| service.</dd> | ||||
| <t hangText="'forwarding-profile-identifier':">A forwarding | <dt>'forwarding-profile-identifier':</dt> | |||
| <dd>A forwarding | ||||
| profile refers to the policies that apply to the forwarding of | profile refers to the policies that apply to the forwarding of | |||
| packets conveyed within a VPN. Such policies may consist, for | packets conveyed within a VPN. Such policies may consist of, for | |||
| example, of applying ACLs.</t> | example, applying ACLs.</dd> | |||
| <dt>'routing-profile-identifier':</dt> | ||||
| <t hangText="'routing-profile-identifier':">A routing profile | <dd>A routing profile | |||
| refers to a set of routing policies that will be invoked (e.g., | refers to a set of routing policies that will be invoked (e.g., | |||
| BGP policies) when delivering the VPN service.</t> | BGP policies) when delivering the VPN service.</dd> | |||
| </list></t> | </dl> | |||
| <t/> | ||||
| <t></t> | ||||
| </section> | </section> | |||
| <section anchor="l2_vpn_service" numbered="true" toc="default"> | ||||
| <section anchor="l2_vpn_service" title="VPN Services"> | <name>VPN Services</name> | |||
| <t>The 'vpn-service' is the data structure that abstracts an L2VPN | <t>The 'vpn-service' is the data structure that abstracts an L2VPN | |||
| service in the service provider network. Each 'vpn-service' is | service in the service provider network. Each 'vpn-service' is | |||
| uniquely identified by an identifier: 'vpn-id'. Such a 'vpn-id' is | uniquely identified by an identifier: 'vpn-id'. Such a 'vpn-id' is | |||
| only meaningful locally within the network controller. The subtree of | only meaningful locally within the network controller. The subtree of | |||
| the 'vpn-services' is shown in <xref | the 'vpn-services' is shown in <xref target="vpn-service_tree" format="d | |||
| target="vpn-service_tree"></xref>.</t> | efault"/>.</t> | |||
| <figure anchor="vpn-service_tree"> | ||||
| <figure align="center" anchor="vpn-service_tree" | <name>VPN Services Subtree</name> | |||
| title="VPN Services Subtree"> | <sourcecode type="yangtree"><![CDATA[ +--rw vpn-services | |||
| <artwork align="center"><![CDATA[ +--rw vpn-services | ||||
| +--rw vpn-service* [vpn-id] | +--rw vpn-service* [vpn-id] | |||
| +--rw vpn-id vpn-common:vpn-id | +--rw vpn-id vpn-common:vpn-id | |||
| +--rw vpn-name? string | +--rw vpn-name? string | |||
| +--rw vpn-description? string | +--rw vpn-description? string | |||
| +--rw customer-name? string | +--rw customer-name? string | |||
| +--rw parent-service-id? vpn-common:vpn-id | +--rw parent-service-id? vpn-common:vpn-id | |||
| +--rw vpn-type? identityref | +--rw vpn-type? identityref | |||
| +--rw vpn-service-topology? identityref | +--rw vpn-service-topology? identityref | |||
| +--rw bgp-ad-enabled? boolean | +--rw bgp-ad-enabled? boolean | |||
| +--rw signaling-type? identityref | +--rw signaling-type? identityref | |||
| skipping to change at line 906 ¶ | skipping to change at line 732 ¶ | |||
| | +--:(protocol) | | +--:(protocol) | |||
| | +--rw protocol* identityref | | +--rw protocol* identityref | |||
| +--rw status | +--rw status | |||
| | +--rw admin-status | | +--rw admin-status | |||
| | | +--rw status? identityref | | | +--rw status? identityref | |||
| | | +--rw last-change? yang:date-and-time | | | +--rw last-change? yang:date-and-time | |||
| | +--ro oper-status | | +--ro oper-status | |||
| | +--ro status? identityref | | +--ro status? identityref | |||
| | +--ro last-change? yang:date-and-time | | +--ro last-change? yang:date-and-time | |||
| +--rw vpn-nodes | +--rw vpn-nodes | |||
| ... ]]></artwork> | ... ]]></sourcecode> | |||
| </figure> | </figure> | |||
| <t>The descriptions of the VPN service data nodes that are depicted in | <t>The descriptions of the VPN service data nodes that are depicted in | |||
| <xref target="vpn-service_tree"></xref> are as follows: <list | <xref target="vpn-service_tree" format="default"/> are as follows: </t> | |||
| style="hanging"> | <dl newline="false" spacing="normal"> | |||
| <t hangText="'vpn-id':">An identifier that is used to uniquely | <dt>'vpn-id':</dt> | |||
| identify the L2VPN service within the L2NM scope.</t> | <dd>An identifier that is used to uniquely | |||
| identify the L2VPN service within the L2NM scope.</dd> | ||||
| <t hangText="'vpn-name':">Associates a name with the service in | <dt>'vpn-name':</dt> | |||
| order to facilitate the identification of the service.</t> | <dd>Associates a name with the service in | |||
| order to facilitate the identification of the service.</dd> | ||||
| <t hangText="'vpn-description':">Includes a textual description of | <dt>'vpn-description':</dt> | |||
| the service. <vspace blankLines="1" />The internal structure of a | <dd> | |||
| <t>Includes a textual description of | ||||
| the service. </t> | ||||
| <t>The internal structure of a | ||||
| VPN description is local to each VPN service provider.</t> | VPN description is local to each VPN service provider.</t> | |||
| </dd> | ||||
| <t hangText="'customer-name':">Indicates the name of the customer | <dt>'customer-name':</dt> | |||
| who ordered the service.</t> | <dd>Indicates the name of the customer | |||
| who ordered the service.</dd> | ||||
| <t hangText="'parent-service-id':">Refers to an identifier of the | <dt>'parent-service-id':</dt> | |||
| parent service (e.g., the L2SM, IETF network slice, VPN+) that | <dd>Refers to an identifier of the | |||
| parent service (e.g., the L2SM, IETF network slice, and VPN+) that | ||||
| triggered the creation of the L2VPN service. This identifier is | triggered the creation of the L2VPN service. This identifier is | |||
| used to easily correlate the (network) service as built in the | used to easily correlate the (network) service as built in the | |||
| network with a service order. A controller can use that | network with a service order. A controller can use that | |||
| correlation to enrich or populate some fields (e.g., description | correlation to enrich or populate some fields (e.g., description | |||
| fields) as a function of local deployments.</t> | fields) as a function of local deployments.</dd> | |||
| <dt>'vpn-type':</dt> | ||||
| <t hangText="'vpn-type':">Indicates the L2VPN type. The following | <dd> | |||
| types, defined in <xref target="RFC9181"></xref>, can be used for | <t>Indicates the L2VPN type. The following | |||
| the L2NM:<list style="hanging"> | types, defined in <xref target="RFC9181" format="default"/>, can be | |||
| <t hangText="'vpls':">Virtual Private LAN Service (VPLS) as | used for | |||
| defined in <xref target="RFC4761"></xref> or <xref | the L2NM:</t> | |||
| target="RFC4762"></xref>. This type is also used for | <dl newline="false" spacing="normal"> | |||
| hierarchical VPLS (H-VPLS) (Section 10 of <xref | <dt>'vpls':</dt> | |||
| target="RFC4762"></xref>).</t> | <dd>Virtual Private LAN Service (VPLS) as | |||
| defined in <xref target="RFC4761" format="default"/> or <xref ta | ||||
| <t hangText="'vpws':">Virtual Private Wire Service (VPWS) as | rget="RFC4762" format="default"/>. This type is also used for | |||
| defined in Section 3.1.1 of <xref | hierarchical VPLS (H-VPLS) (<xref target="RFC4762" sectionFormat | |||
| target="RFC4664"></xref>.</t> | ="of" section="10" format="default"/>).</dd> | |||
| <dt>'vpws':</dt> | ||||
| <t hangText="'vpws-evpn':">VPWS as defined in <xref | <dd>Virtual Private Wire Service (VPWS) as | |||
| target="RFC8214"></xref>.</t> | defined in <xref target="RFC4664" sectionFormat="of" section="3. | |||
| 1.1" format="default"/>.</dd> | ||||
| <t hangText="'pbb-evpn':">Provider Backbone Bridging (PBB) | ||||
| EVPNs as defined in <xref target="RFC7623"></xref>.</t> | ||||
| <t hangText="'mpls-evpn':">MPLS-based EVPNs <xref | <dt>'vpws-evpn':</dt> | |||
| target="RFC7432"></xref>.</t> | <dd>VPWS EVPNs as defined in <xref target="RFC8214" format="defaul | |||
| t"/>.</dd> | ||||
| <t hangText="'vxlan-evpn':">VXLAN based EVPNs <xref | <dt>'pbb-evpn':</dt> | |||
| target="RFC8365"></xref>.</t> | <dd>Provider Backbone Bridging (PBB) | |||
| </list>The type is used as a condition for the presence of some | EVPNs as defined in <xref target="RFC7623" format="default"/>.</ | |||
| dd> | ||||
| <dt>'mpls-evpn':</dt> | ||||
| <dd>MPLS-based EVPNs <xref target="RFC7432" format="default"/>.</d | ||||
| d> | ||||
| <dt>'vxlan-evpn':</dt> | ||||
| <dd>VXLAN-based EVPNs <xref target="RFC8365" format="default"/>.</ | ||||
| dd> | ||||
| </dl> | ||||
| <t>The type is used as a condition for the presence of some | ||||
| data nodes in the L2NM.</t> | data nodes in the L2NM.</t> | |||
| </dd> | ||||
| <t hangText="'vpn-service-topology':">Indicates the network | <dt>'vpn-service-topology':</dt> | |||
| <dd>Indicates the network | ||||
| topology for the service: hub-spoke, any-to-any, or custom. These | topology for the service: hub-spoke, any-to-any, or custom. These | |||
| types are defined in <xref target="RFC9181"></xref>.</t> | types are defined in <xref target="RFC9181" format="default"/>.</dd> | |||
| <dt>'bgp-ad-enabled':</dt> | ||||
| <t hangText="'bgp-ad-enabled':">Controls whether BGP | <dd>Controls whether BGP | |||
| auto-discovery is enabled. If so, additional data nodes are | auto-discovery is enabled. If so, additional data nodes are | |||
| included (<xref target="bgpad"></xref>).</t> | included (<xref target="bgpad" format="default"/>).</dd> | |||
| <dt>'signaling-type':</dt> | ||||
| <t hangText="'signaling-type':">Indicates the signaling that is | <dd> | |||
| <t>Indicates the signaling that is | ||||
| used for setting up pseudowires. Signaling type values are taken | used for setting up pseudowires. Signaling type values are taken | |||
| from <xref target="RFC9181"></xref>. The following signaling | from <xref target="RFC9181" format="default"/>. The following signal | |||
| options are supported:<list style="hanging"> | ing | |||
| <t hangText="'bgp-signaling':">The L2NM supports two flavors | options are supported:</t> | |||
| of BGP-signaled L2VPNs: <list style="hanging"> | <dl newline="false" spacing="normal"> | |||
| <t hangText="'l2vpn-bgp':">The service is a Multipoint | <dt>'bgp-signaling':</dt> | |||
| VPLS that uses a BGP control plane as described in <xref | <dd> | |||
| target="RFC4761"></xref> and <xref | <t>The L2NM supports two flavors | |||
| target="RFC6624"></xref>.</t> | of BGP-signaled L2VPNs: </t> | |||
| <dl newline="false" spacing="normal"> | ||||
| <t hangText="'evpn-bgp':">The service is a Multipoint VPLS | <dt>'l2vpn-bgp':</dt> | |||
| that uses also a BGP control plane, but also includes the | <dd>The service is a Multipoint | |||
| additional EVPN features and related parameters <xref | VPLS that uses a BGP control plane as described in <xref tar | |||
| target="RFC7432"></xref> and <xref | get="RFC4761" format="default"/> and <xref target="RFC6624" format="default"/>.< | |||
| target="RFC7209"></xref>.</t> | /dd> | |||
| </list></t> | <dt>'evpn-bgp':</dt> | |||
| <dd>The service is a Multipoint VPLS | ||||
| <t hangText="'ldp-signaling':">A Multipoint VPLS that uses a | that uses a BGP control plane but also includes the | |||
| mesh of LDP-signaled Pseudowires <xref | additional EVPN features and related parameters as described | |||
| target="RFC6074"></xref>.</t> | in <xref target="RFC7432" format="default"/> and <xref target="RFC7209" format= | |||
| "default"/>.</dd> | ||||
| <t hangText="'l2tp-signaling':">The L2NM uses L2TP-signaled | </dl> | |||
| Pseudowires as described in <xref | </dd> | |||
| target="RFC6074"></xref>.</t> | <dt>'ldp-signaling':</dt> | |||
| </list>Table 1 summarizes the allowed signaling types for each | <dd>A Multipoint VPLS that uses a | |||
| VPN service type ('vpn-type'). See <xref | mesh of LDP-signaled pseudowires <xref target="RFC6074" format=" | |||
| target="signaling_options"></xref> for more details.<figure | default"/>.</dd> | |||
| align="center"> | <dt>'l2tp-signaling':</dt> | |||
| <artwork align="center"><![CDATA[+============+================= | <dd>The L2NM uses L2TP-signaled | |||
| ===============+ | pseudowires as described in <xref target="RFC6074" format="defau | |||
| | VPN Type | Signaling Options | | lt"/>.</dd> | |||
| +============+================================+ | </dl> | |||
| | vpls | l2tp-signaling, ldp-signaling, | | <t><xref target="options-vpn"/> summarizes the allowed signaling typ | |||
| | | bgp-signaling (l2vpn-bgp) | | es for each | |||
| +------------+--------------------------------+ | VPN service type ('vpn-type'). See <xref target="signaling_options" | |||
| | vpws | l2tp-signaling, ldp-signaling, | | format="default"/> for more details.</t> | |||
| | | bgp-signaling (l2vpn-bgp) | | ||||
| +------------+--------------------------------+ | ||||
| | vpws-evpn | bgp-signaling (evpn-bgp) | | ||||
| +------------+--------------------------------+ | ||||
| | pbb-evpn | bgp-signaling (evpn-bgp) | | ||||
| +------------+--------------------------------+ | ||||
| | mpls-evpn | bgp-signaling (evpn-bgp) | | ||||
| +------------+--------------------------------+ | ||||
| | vxlan-evpn | bgp-signaling (evpn-bgp) | | ||||
| +------------+--------------------------------+ | ||||
| Table 1: Signaling Options per VPN | ||||
| Service Type]]></artwork> | ||||
| </figure></t> | ||||
| <t hangText="'global-parameters-profiles':">Defines reusable | <table anchor="options-vpn"> | |||
| parameters for the same L2VPN service. <vspace | <name>Signaling Options per VPN Service Type</name> | |||
| blankLines="1" />More details are provided in <xref | <thead> | |||
| target="profile"></xref>.</t> | <tr> | |||
| <th>VPN Type</th> | ||||
| <th>Signaling Options</th> | ||||
| </tr> | ||||
| </thead> | ||||
| <tbody> | ||||
| <tr> | ||||
| <td>vpls</td> | ||||
| <td>l2tp-signaling, ldp-signaling, bgp-signaling (l2vpn-bgp)</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>vpws</td> | ||||
| <td>l2tp-signaling, ldp-signaling, bgp-signaling (l2vpn-bgp) </td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>vpws-evpn</td> | ||||
| <td>bgp-signaling (evpn-bgp)</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>pbb-evpn</td> | ||||
| <td>bgp-signaling (evpn-bgp)</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>mpls-evpn</td> | ||||
| <td>bgp-signaling (evpn-bgp)</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>vxlan-evpn</td> | ||||
| <td>bgp-signaling (evpn-bgp)</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| <t hangText="'underlay-transport':">Describes the preference for | </dd> | |||
| <dt>'global-parameters-profiles':</dt> | ||||
| <dd> | ||||
| <t>Defines reusable | ||||
| parameters for the same L2VPN service. </t> | ||||
| <t>More details are provided in <xref target="profile" format="defau | ||||
| lt"/>.</t> | ||||
| </dd> | ||||
| <dt>'underlay-transport':</dt> | ||||
| <dd> | ||||
| <t>Describes the preference for | ||||
| the transport technology to carry the traffic of the VPN service. | the transport technology to carry the traffic of the VPN service. | |||
| This preference is especially useful in networks with multiple | This preference is especially useful in networks with multiple | |||
| domains and Network-to-Network Interface (NNI) types. The underlay | domains and Network-to-Network Interface (NNI) types. The underlay | |||
| transport can be expressed as an abstract transport instance | transport can be expressed as an abstract transport instance | |||
| (e.g., an identifier of a VPN+ instance, a virtual network | (e.g., an identifier of a VPN+ instance, a virtual network | |||
| identifier, or a network slice name) or as an ordered list of the | identifier, or a network slice name) or as an ordered list of the | |||
| actual protocols to be enabled in the network. <vspace | actual protocols to be enabled in the network. </t> | |||
| blankLines="1" />A rich set of protocol identifiers that can be | <t>A rich set of protocol identifiers that can be | |||
| used to refer to an underlay transport (or how such an underlay is | used to refer to an underlay transport (or how such an underlay is | |||
| set up) are defined in <xref target="RFC9181"></xref>. <vspace | set up) are defined in <xref target="RFC9181" format="default"/>. </ | |||
| blankLines="1" />The model defined in Section 6.3.2 of <xref | t> | |||
| target="I-D.ietf-teas-te-service-mapping-yang"></xref> may be used | <t>The model defined in <xref target="I-D.ietf-teas-te-service-mappi | |||
| ng-yang" format="default" sectionFormat="of" section="6.3.2"/> may be used | ||||
| if specific protection and availability requirements are needed | if specific protection and availability requirements are needed | |||
| between PEs.</t> | between PEs.</t> | |||
| </dd> | ||||
| <t hangText="'status':">Used to track the overall status of a | <dt>'status':</dt> | |||
| <dd> | ||||
| <t>Used to track the overall status of a | ||||
| given VPN service. Both operational and administrative status are | given VPN service. Both operational and administrative status are | |||
| maintained together with a timestamp. For example, a service can | maintained together with a timestamp. For example, a service can | |||
| be created, but not put into effect.<vspace | be created but not put into effect.</t> | |||
| blankLines="1" />Administrative and operational status can be used | <t>Administrative and operational status can be used | |||
| as a trigger to detect service anomalies. For example, a service | as a trigger to detect service anomalies. For example, a service | |||
| that is declared at the service layer as being created but still | that is declared at the service layer as being created but still | |||
| inactive at the network layer is an indication that network | inactive at the network layer is an indication that network | |||
| provisioning actions are needed to align the observed service | provisioning actions are needed to align the observed service | |||
| status with the expected service status.</t> | status with the expected service status.</t> | |||
| </dd> | ||||
| <t hangText="'vpn-node':">An abstraction that represents a set of | <dt>'vpn-node':</dt> | |||
| <dd> | ||||
| <t>An abstraction that represents a set of | ||||
| policies applied to a network node and belonging to a single | policies applied to a network node and belonging to a single | |||
| 'vpn-service'. An L2VPN service is typically built by adding | 'vpn-service'. An L2VPN service is typically built by adding | |||
| instances of 'vpn-node' to the 'vpn-nodes' container. <vspace | instances of 'vpn-node' to the 'vpn-nodes' container. </t> | |||
| blankLines="1" />A 'vpn-node' contains 'vpn-network-accesses', | <t>A 'vpn-node' contains 'vpn-network-accesses', | |||
| which are the interfaces attached to the VPN by which the customer | which are the interfaces attached to the VPN by which the customer | |||
| traffic is received. Therefore, the customer sites are connected | traffic is received. Therefore, the customer sites are connected | |||
| to the 'vpn-network-accesses'.<vspace blankLines="1" />Note that, | to the 'vpn-network-accesses'.</t> | |||
| <t>Note that, | ||||
| as this is a network data model, the information about customers | as this is a network data model, the information about customers | |||
| sites is not required in the model. Such information is rather | sites is not required in the model. Such information is rather | |||
| relevant in the L2SM. Whether that information is included in the | relevant in the L2SM. Whether that information is included in the | |||
| L2NM, e.g., to populate the various 'description' data nodes is | L2NM, e.g., to populate the various 'description' data nodes, is | |||
| implementation specific. <vspace blankLines="1" />More details are | implementation specific. </t> | |||
| provided in <xref target="vpn_node"></xref>.</t> | <t>More details are | |||
| </list></t> | provided in <xref target="vpn_node" format="default"/>.</t> | |||
| </dd> | ||||
| <t></t> | </dl> | |||
| <t/> | ||||
| </section> | </section> | |||
| <section anchor="profile" numbered="true" toc="default"> | ||||
| <section anchor="profile" title="Global Parameters Profiles"> | <name>Global Parameters Profiles</name> | |||
| <t>The 'global-parameters-profile' defines reusable parameters for the | <t>The 'global-parameters-profile' defines reusable parameters for the | |||
| same L2VPN service instance ('vpn-service'). Global parameters | same L2VPN service instance ('vpn-service'). Global parameters | |||
| profiles are defined at the VPN service level, activated at the VPN | profiles are defined at the VPN service level, activated at the VPN | |||
| node level, and then an activated VPN profile may be used at the VPN | node level, and then an activated VPN profile may be used at the VPN | |||
| network access level. Each VPN instance profile is identified by | network access level. Each VPN instance profile is identified by | |||
| 'profile-id'. Some of the data nodes can be adjusted at the VPN node | 'profile-id'. Some of the data nodes can be adjusted at the VPN node | |||
| or VPN network access levels. These adjusted values take precedence | or VPN network access levels. These adjusted values take precedence | |||
| over the global values. The subtree of 'global-parameters-profile' is | over the global values. The subtree of 'global-parameters-profile' is | |||
| depicted in <xref target="global_param_prof_tree"></xref>.</t> | depicted in <xref target="global_param_prof_tree" format="default"/>.</t | |||
| > | ||||
| <figure align="center" anchor="global_param_prof_tree" | <figure anchor="global_param_prof_tree"> | |||
| title="Global Parameters Profiles Subtree"> | <name>Global Parameters Profiles Subtree</name> | |||
| <artwork align="center"><![CDATA[ ... | <sourcecode type="yangtree"><![CDATA[ ... | |||
| +--rw vpn-services | +--rw vpn-services | |||
| +--rw vpn-service* [vpn-id] | +--rw vpn-service* [vpn-id] | |||
| ... | ... | |||
| +--rw global-parameters-profiles | +--rw global-parameters-profiles | |||
| | +--rw global-parameters-profile* [profile-id] | | +--rw global-parameters-profile* [profile-id] | |||
| | +--rw profile-id string | | +--rw profile-id string | |||
| | +--rw (rd-choice)? | | +--rw (rd-choice)? | |||
| | | +--:(directly-assigned) | | | +--:(directly-assigned) | |||
| | | | +--rw rd? | | | | +--rw rd? | |||
| | | | rt-types:route-distinguisher | | | | rt-types:route-distinguisher | |||
| skipping to change at line 1143 ¶ | skipping to change at line 996 ¶ | |||
| | | | +--rw action? identityref | | | | +--rw action? identityref | |||
| | | +--rw mac-loop-prevention | | | +--rw mac-loop-prevention | |||
| | | +--rw window? uint32 | | | +--rw window? uint32 | |||
| | | +--rw frequency? uint32 | | | +--rw frequency? uint32 | |||
| | | +--rw retry-timer? uint32 | | | +--rw retry-timer? uint32 | |||
| | | +--rw protection-type? identityref | | | +--rw protection-type? identityref | |||
| | +--rw multicast {vpn-common:multicast}? | | +--rw multicast {vpn-common:multicast}? | |||
| | +--rw enabled? boolean | | +--rw enabled? boolean | |||
| | +--rw customer-tree-flavors | | +--rw customer-tree-flavors | |||
| | +--rw tree-flavor* identityref | | +--rw tree-flavor* identityref | |||
| ... ]]></artwork> | ... ]]></sourcecode> | |||
| </figure> | </figure> | |||
| <t>The description of the global parameters profile is as follows:</t> | <t>The description of the global parameters profile is as follows:</t> | |||
| <dl newline="false" spacing="normal"> | ||||
| <t><list style="hanging"> | <dt>'profile-id':</dt> | |||
| <t hangText="'profile-id':">Uniquely identifies a global parameter | <dd>Uniquely identifies a global parameter | |||
| profile in the context of an L2VPN service.</t> | profile in the context of an L2VPN service.</dd> | |||
| <dt>'rd':</dt> | ||||
| <t hangText="'rd':">As defined in <xref target="RFC9181"></xref>, | <dd> | |||
| <t>As defined in <xref target="RFC9181" format="default"/>, | ||||
| these RD assignment modes are supported: direct assignment, | these RD assignment modes are supported: direct assignment, | |||
| automatic assignment from a given pool, full automatic assignment, | automatic assignment from a given pool, full automatic assignment, | |||
| and no assignment. <vspace blankLines="1" />Also, the module | and no assignment. </t> | |||
| <t>Also, the module | ||||
| accommodates deployments where only the Assigned Number subfield | accommodates deployments where only the Assigned Number subfield | |||
| of RDs is assigned from a pool while the Administrator subfield is | of RDs is assigned from a pool while the Administrator subfield is | |||
| set to, e.g., the Router ID that is assigned to a VPN node. The | set to, e.g., the Router ID that is assigned to a VPN node. The | |||
| module supports these modes for managing the Assigned Number | module supports these modes to manage the Assigned Number | |||
| subfield: explicit assignment, auto-assignment from a pool, and | subfield: explicit assignment, auto-assignment from a pool, and | |||
| full auto-assignment.</t> | full auto-assignment.</t> | |||
| </dd> | ||||
| <t hangText="'vpn-targets':">Specifies RT import/export rules for | <dt>'vpn-targets':</dt> | |||
| the VPN service.</t> | <dd>Specifies RT import/export rules for | |||
| the VPN service.</dd> | ||||
| <t hangText="'local-autonomous-system':">Indicates the Autonomous | <dt>'local-autonomous-system':</dt> | |||
| <dd>Indicates the Autonomous | ||||
| System Number (ASN) that is configured for the VPN node. The ASN | System Number (ASN) that is configured for the VPN node. The ASN | |||
| can be used to auto-derive some other attributes such as RDs or | can be used to auto-derive some other attributes such as RDs or | |||
| Ethernet Segment Identifiers (ESIs).</t> | Ethernet Segment Identifiers (ESIs).</dd> | |||
| <dt>'svc-mtu':</dt> | ||||
| <t hangText="'svc-mtu':">Is the service MTU for an L2VPN service | <dd>Is the service MTU for an L2VPN service | |||
| (i.e., Layer 2 MTU including L2 frame header/trailer). It is also | (i.e., a Layer 2 MTU including an L2 frame header/trailer). It is al | |||
| so | ||||
| known as the maximum transmission unit or maximum frame size. It | known as the maximum transmission unit or maximum frame size. It | |||
| is expressed in bytes.</t> | is expressed in bytes.</dd> | |||
| <dt>'ce-vlan-preservation':</dt> | ||||
| <t hangText="'ce-vlan-preservation':">Is set to preserve the | <dd>Is set to preserve the | |||
| Customer Edge VLAN IDs (CE-VLAN IDs) from ingress to egress, i.e., | Customer Edge VLAN (CE VLAN) IDs from ingress to egress, i.e., | |||
| CE-VLAN tag of the egress frame are identical to those of the | CE VLAN tags of the egress frame are identical to those of the | |||
| ingress frame that yielded this egress service frame. If | ingress frame that yielded this egress service frame. If | |||
| all-to-one bundling within a site is enabled, then preservation | all-to-one bundling within a site is enabled, then preservation | |||
| applies to all ingress service frames. If all-to-one bundling is | applies to all ingress service frames. If all-to-one bundling is | |||
| disabled, then preservation applies to tagged Ingress service | disabled, then preservation applies to tagged Ingress service | |||
| frames having CE-VLAN ID 1 through 4094.</t> | frames having CE VLAN ID 1 through 4094.</dd> | |||
| <dt>'ce-vlan-cos-preservation':</dt> | ||||
| <t hangText="'ce-vlan-cos-preservation':">Controls the CE VLAN CoS | <dd>Controls the CE VLAN Class of Service (CoS) | |||
| preservation. When set, Priority Code Point (PCP) bits in the | preservation. When set, Priority Code Point (PCP) bits in the | |||
| CE-VLAN tag of the egress frame are identical to those of the | CE VLAN tag of the egress frame are identical to those of the | |||
| ingress frame that yielded this egress service frame.</t> | ingress frame that yielded this egress service frame.</dd> | |||
| <dt>'control-word-negotiation':</dt> | ||||
| <t hangText="'control-word-negotiation':">Controls whether | <dd>Controls whether | |||
| control-word negotiation is enabled (if set to true) or not (if | control-word negotiation is enabled (if set to true) or not (if | |||
| set to false). Refer to Section 7 of <xref | set to false). Refer to <xref target="RFC8077" sectionFormat="of" se | |||
| target="RFC8077"></xref> for more details.</t> | ction="7" format="default"/> for more details.</dd> | |||
| <dt>'mac-policies':</dt> | ||||
| <t hangText="'mac-policies':">Includes a set of MAC policies that | <dd> | |||
| apply to the service:<list style="hanging"> | <t>Includes a set of MAC policies that | |||
| <t hangText="'mac-addr-limit':">Is a container of MAC address | apply to the service:</t> | |||
| <dl newline="false" spacing="normal"> | ||||
| <dt>'mac-addr-limit':</dt> | ||||
| <dd> | ||||
| <t>Is a container of MAC address | ||||
| limit configuration. It includes the following data nodes: | limit configuration. It includes the following data nodes: | |||
| <list style="hanging"> | </t> | |||
| <t hangText="'limit-number':">Maximum number of MAC | <dl newline="false" spacing="normal"> | |||
| <dt>'limit-number':</dt> | ||||
| <dd>Maximum number of MAC | ||||
| addresses learned from the customer for a single service | addresses learned from the customer for a single service | |||
| instance.</t> | instance.</dd> | |||
| <dt>'time-interval':</dt> | ||||
| <t hangText="'time-interval':">The aging time of the MAC | <dd>The aging time of the MAC | |||
| address.</t> | address.</dd> | |||
| <dt>'action':</dt> | ||||
| <t hangText="'action':">Specifies the action when the | <dd>Specifies the action when the | |||
| upper limit is exceeded: drop the packet, flood the | upper limit is exceeded: drop the packet, flood the | |||
| packet, or simply send a warning message.</t> | packet, or simply send a warning message.</dd> | |||
| </list></t> | </dl> | |||
| </dd> | ||||
| <t hangText="'mac-loop-prevention':">Container for MAC loop | <dt>'mac-loop-prevention':</dt> | |||
| prevention.<list style="hanging"> | <dd> | |||
| <t hangText="'window':">The time interval over which a MAC | <t>Container for MAC loop | |||
| mobility event is detected and checked.</t> | prevention.</t> | |||
| <dl newline="false" spacing="normal"> | ||||
| <t hangText="'frequency':">The number of times to detect | <dt>'window':</dt> | |||
| <dd>The time interval over which a MAC | ||||
| mobility event is detected and checked.</dd> | ||||
| <dt>'frequency':</dt> | ||||
| <dd>The number of times to detect | ||||
| MAC duplication, where a 'duplicate MAC address' situation | MAC duplication, where a 'duplicate MAC address' situation | |||
| has occurred within the 'window' time interval, and the | has occurred within the 'window' time interval, and the | |||
| duplicate MAC address has been added to a list of | duplicate MAC address has been added to a list of | |||
| duplicate MAC addresses.</t> | duplicate MAC addresses.</dd> | |||
| <dt>'retry-timer':</dt> | ||||
| <t hangText="'retry-timer':">The retry timer. When the | <dd>The retry timer. When the | |||
| retry timer expires, the duplicate MAC address will be | retry timer expires, the duplicate MAC address will be | |||
| flushed from the MAC-VRF.</t> | flushed from the MAC-VRF.</dd> | |||
| <dt>'protection-type':</dt> | ||||
| <t hangText="'protection-type':">It defines the loop | <dd>It defines the loop | |||
| prevention type (e.g., shut).</t> | prevention type (e.g., shut).</dd> | |||
| </list></t> | </dl> | |||
| </list></t> | </dd> | |||
| </dl> | ||||
| <t hangText="'multicast':">Controls whether multicast is allowed | </dd> | |||
| in the service.</t> | <dt>'multicast':</dt> | |||
| </list></t> | <dd>Controls whether multicast is allowed | |||
| in the service.</dd> | ||||
| </dl> | ||||
| </section> | </section> | |||
| <section anchor="vpn_node" numbered="true" toc="default"> | ||||
| <name>VPN Nodes</name> | ||||
| <section anchor="vpn_node" title="VPN Nodes"> | <t>The 'vpn-node' (<xref target="vpn-node_tree" format="default"/>) is a | |||
| <t>The 'vpn-node' (<xref target="vpn-node_tree"></xref>) is an | n | |||
| abstraction that represents a set of policies/configurations applied | abstraction that represents a set of policies applied | |||
| to a network node and that belong to a single 'vpn-service'. A | to a network node that belongs to a single 'vpn-service'. A | |||
| 'vpn-node' contains 'vpn-network-accesses', which are the interfaces | 'vpn-node' contains 'vpn-network-accesses', which are the interfaces | |||
| involved in the creation of the VPN. The customer sites are connected | involved in the creation of the VPN. The customer sites are connected | |||
| to the 'vpn-network-accesses'.</t> | to the 'vpn-network-accesses'.</t> | |||
| <figure anchor="vpn-node_tree"> | ||||
| <figure align="right" anchor="vpn-node_tree" title="VPN Nodes Subtree"> | <name>VPN Nodes Subtree</name> | |||
| <artwork align="center"><![CDATA[ +--rw l2vpn-ntw | <sourcecode type="yangtree"><![CDATA[ +--rw l2vpn-ntw | |||
| +--rw vpn-profiles | +--rw vpn-profiles | |||
| | ... | | ... | |||
| +--rw vpn-services | +--rw vpn-services | |||
| +--rw vpn-service* [vpn-id] | +--rw vpn-service* [vpn-id] | |||
| ... | ... | |||
| +--rw vpn-nodes | +--rw vpn-nodes | |||
| +--rw vpn-node* [vpn-node-id] | +--rw vpn-node* [vpn-node-id] | |||
| +--rw vpn-node-id vpn-common:vpn-id | +--rw vpn-node-id vpn-common:vpn-id | |||
| +--rw description? string | +--rw description? string | |||
| +--rw ne-id? string | +--rw ne-id? string | |||
| skipping to change at line 1289 ¶ | skipping to change at line 1156 ¶ | |||
| | +--rw enabled? boolean | | +--rw enabled? boolean | |||
| | +--rw customer-tree-flavors | | +--rw customer-tree-flavors | |||
| | +--rw tree-flavor* identityref | | +--rw tree-flavor* identityref | |||
| +--rw status | +--rw status | |||
| | ... | | ... | |||
| +--rw bgp-auto-discovery | +--rw bgp-auto-discovery | |||
| | ... | | ... | |||
| +--rw signaling-option | +--rw signaling-option | |||
| | ... | | ... | |||
| +--rw vpn-network-accesses | +--rw vpn-network-accesses | |||
| ... ]]></artwork> | ... ]]></sourcecode> | |||
| </figure> | </figure> | |||
| <t>The descriptions of VPN node data nodes are as follows:<list | <t>The descriptions of VPN node data nodes are as follows:</t> | |||
| style="hanging"> | <dl newline="false" spacing="normal"> | |||
| <t hangText="'vpn-node-id':">Used to uniquely identify a node that | <dt>'vpn-node-id':</dt> | |||
| enables a VPN network access.</t> | <dd>Used to uniquely identify a node that | |||
| enables a VPN network access.</dd> | ||||
| <t hangText="'description':">Provides a textual description of the | <dt>'description':</dt> | |||
| VPN node.</t> | <dd>Provides a textual description of the | |||
| VPN node.</dd> | ||||
| <t hangText="'ne-id':">Includes an identifier of the network | <dt>'ne-id':</dt> | |||
| element where the VPN node is deployed.</t> | <dd>Includes an identifier of the network | |||
| element where the VPN node is deployed.</dd> | ||||
| <t hangText="'role':">Indicates the role of the VPN instance | <dt>'role':</dt> | |||
| profile in the VPN. Role values are defined in <xref | <dd>Indicates the role of the VPN instance | |||
| target="RFC9181"></xref> (e.g., 'any-to-any-role', 'spoke-role', | profile in the VPN. Role values are defined in <xref target="RFC9181 | |||
| 'hub-role').</t> | " format="default"/> (e.g., 'any-to-any-role', 'spoke-role', and | |||
| 'hub-role').</dd> | ||||
| <t hangText="'router-id':">Indicates a 32-bit number that is used | <dt>'router-id':</dt> | |||
| to uniquely identify a router within an Autonomous System | <dd>Indicates a 32-bit number that is used | |||
| (AS).</t> | to uniquely identify a router within an AS.</dd> | |||
| <dt>'active-global-parameters-profiles':</dt> | ||||
| <t hangText="'active-global-parameters-profiles':">Lists the set | <dd> | |||
| of active global VPN parameters profiles for this VPN node. | <t>Lists the set | |||
| of active global VPN parameter profiles for this VPN node. | ||||
| Concretely, one or more global profiles that are defined at the | Concretely, one or more global profiles that are defined at the | |||
| VPN service level (i.e., under | VPN service level (i.e., under | |||
| 'l2vpn-ntw/vpn-services/vpn-service' level) can be activated at | 'l2vpn-ntw/vpn-services/vpn-service' level) can be activated at | |||
| the VPN node level; each of these profiles is uniquely identified | the VPN node level; each of these profiles is uniquely identified | |||
| by means of 'profile-id'. The structure of | by means of 'profile-id'. The structure of | |||
| 'active-global-parameters-profiles' uses the same data nodes as | 'active-global-parameters-profiles' uses the same data nodes as | |||
| <xref target="profile"></xref> except RD and RT related data | <xref target="profile" format="default"/> with the exception of the | |||
| nodes.<vspace blankLines="1" />Values defined in | data nodes related to RD and RT.</t> | |||
| 'active-global-parameters-profiles' overrides the values defined | <t>Values defined in | |||
| 'active-global-parameters-profiles' override the values defined | ||||
| in the VPN service level.</t> | in the VPN service level.</t> | |||
| </dd> | ||||
| <t hangText="'status':">Tracks the status of a node involved in a | <dt>'status':</dt> | |||
| <dd>Tracks the status of a node involved in a | ||||
| VPN service. Both operational and administrative status are | VPN service. Both operational and administrative status are | |||
| maintained. A mismatch between the administrative status vs. the | maintained. A mismatch between the administrative status vs. the | |||
| operational status can be used as a trigger to detect | operational status can be used as a trigger to detect | |||
| anomalies.</t> | anomalies.</dd> | |||
| <dt>'bgp-auto-discovery':</dt> | ||||
| <t hangText="'bgp-auto-discovery':">See <xref | <dd>See <xref target="bgpad" format="default"/>.</dd> | |||
| target="bgpad"></xref>.</t> | <dt>'signaling-option':</dt> | |||
| <dd>See <xref target="signaling_options" format="default"/>.</dd> | ||||
| <t hangText="'signaling-option':">See <xref | <dt>'vpn-network-accesses':</dt> | |||
| target="signaling_options"></xref>.</t> | <dd> | |||
| <t>Represents the point to | ||||
| <t hangText="'vpn-network-accesses':">Represents the point to | which sites are connected. </t> | |||
| which sites are connected. <vspace blankLines="1" />Note that, | <t>Note that, | |||
| unlike the L2SM, the L2NM does not need to model the customer site | unlike the L2SM, the L2NM does not need to model the customer site; | |||
| -- only the points that receive traffic from the site are covered | only the points that receive traffic from the site are covered | |||
| (i.e., the PE side of Provider Edge to Customer Edge (PE-CE) | (i.e., the PE side of Provider Edge to Customer Edge (PE-CE) | |||
| connections). Hence, the VPN network access contains the | connections). Hence, the VPN network access contains the | |||
| connectivity information between the provider's network and the | connectivity information between the provider's network and the | |||
| customer premises. The VPN profiles ('vpn-profiles') have a set of | customer premises. The VPN profiles ('vpn-profiles') have a set of | |||
| routing policies that can be applied during the service creation. | routing policies that can be applied during the service creation. | |||
| <vspace blankLines="1" />See <xref target="sna"></xref> for more | </t> | |||
| <t>See <xref target="sna" format="default"/> for more | ||||
| details.</t> | details.</t> | |||
| </list></t> | </dd> | |||
| </dl> | ||||
| <section anchor="bgpad" title="BGP Auto-Discovery"> | <section anchor="bgpad" numbered="true" toc="default"> | |||
| <t>The 'bgp-auto-discovery' container (<xref | <name>BGP Auto-Discovery</name> | |||
| target="bgpad-tree"></xref>) includes the required information for | <t>The 'bgp-auto-discovery' container (<xref target="bgpad-tree" forma | |||
| the activation of BGP auto-discovery <xref | t="default"/>) includes the required information for | |||
| target="RFC4761"></xref><xref target="RFC6624"></xref>.</t> | the activation of BGP auto-discovery <xref target="RFC4761" format="de | |||
| fault"/><xref target="RFC6624" format="default"/>.</t> | ||||
| <t><figure align="right" anchor="bgpad-tree" | <figure anchor="bgpad-tree"> | |||
| title="BGP Auto-Discovery Subtree"> | <name>BGP Auto-Discovery Subtree</name> | |||
| <artwork align="center"><![CDATA[ +--rw l2vpn-ntw | <sourcecode type="yangtree"><![CDATA[ +--rw l2vpn-ntw | |||
| +--rw vpn-profiles | +--rw vpn-profiles | |||
| | ... | | ... | |||
| +--rw vpn-services | +--rw vpn-services | |||
| +--rw vpn-service* [vpn-id] | +--rw vpn-service* [vpn-id] | |||
| ... | ... | |||
| +--rw vpn-nodes | +--rw vpn-nodes | |||
| +--rw vpn-node* [vpn-node-id] | +--rw vpn-node* [vpn-node-id] | |||
| ... | ... | |||
| +--rw bgp-auto-discovery | +--rw bgp-auto-discovery | |||
| | +--rw (bgp-type)? | | +--rw (bgp-type)? | |||
| skipping to change at line 1414 ¶ | skipping to change at line 1280 ¶ | |||
| | | +--rw route-targets* [route-target] | | | +--rw route-targets* [route-target] | |||
| | | | +--rw route-target rt-types:route-target | | | | +--rw route-target rt-types:route-target | |||
| | | +--rw route-target-type | | | +--rw route-target-type | |||
| | | rt-types:route-target-type | | | rt-types:route-target-type | |||
| | +--rw vpn-policies | | +--rw vpn-policies | |||
| | +--rw import-policy? string | | +--rw import-policy? string | |||
| | +--rw export-policy? string | | +--rw export-policy? string | |||
| +--rw signaling-option | +--rw signaling-option | |||
| | ... | | ... | |||
| +--rw vpn-network-accesses | +--rw vpn-network-accesses | |||
| ... ]]></artwork> | ... ]]></sourcecode> | |||
| </figure></t> | </figure> | |||
| <t>As discussed in <xref target="RFC6624" sectionFormat="of" | ||||
| <t>As discussed in Section 1 of <xref target="RFC6624"></xref>, all | section="1" format="default"/>, all BGP-based methods include the | |||
| of BGP-based methods include the notion of a VPN identifier that | notion of a VPN identifier that serves to unify components of a | |||
| serves to unify components of a given VPN and the concept of | given VPN and the concept of auto-discovery, hence the support of | |||
| auto-discovery; hence the support of the data node 'vpn-id'.</t> | the data node 'vpn-id'.</t> | |||
| <t>For the particular case of EVPN, the L2NM supports RT | <t>For the particular case of EVPN, the L2NM supports RT | |||
| auto-derivation based on the Ethernet Tag ID specified in Section | auto-derivation based on the Ethernet Tag ID specified in <xref target | |||
| 7.10.1 of <xref target="RFC7432"></xref>. A VPN service provider can | ="RFC7432" sectionFormat="of" section="7.10.1" format="default"/>. A VPN service | |||
| provider can | ||||
| enable/disable this functionality by means of 'auto-rt-enable'. The | enable/disable this functionality by means of 'auto-rt-enable'. The | |||
| assigned RT can be retrieved using 'auto-route-target'.</t> | assigned RT can be retrieved using 'auto-route-target'.</t> | |||
| <t>For all BGP-based L2VPN flavors, other data nodes such as RD and | <t>For all BGP-based L2VPN flavors, other data nodes such as RD and | |||
| RT are used. These data nodes have the same structure as the one | RT are used. These data nodes have the same structure as the one | |||
| discussed in <xref target="profile"></xref>.</t> | discussed in <xref target="profile" format="default"/>.</t> | |||
| </section> | </section> | |||
| <section anchor="signaling_options" numbered="true" toc="default"> | ||||
| <section anchor="signaling_options" title="Signaling Options"> | <name>Signaling Options</name> | |||
| <t>The 'signaling-option' container (<xref target="so"></xref>) | <t>The 'signaling-option' container (<xref target="so" format="default | |||
| "/>) | ||||
| defines a set of data nodes for a given signaling protocol that is | defines a set of data nodes for a given signaling protocol that is | |||
| used for an L2VPN service. As discussed in <xref | used for an L2VPN service. As discussed in <xref target="l2_vpn_servic | |||
| target="l2_vpn_service"></xref>, several signaling options to | e" format="default"/>, several signaling options to | |||
| exchange membership information between PEs of an L2VPN are | exchange membership information between PEs of an L2VPN are | |||
| supported. The signaling type to be used for an L2VPN service is | supported. The signaling type to be used for an L2VPN service is | |||
| controlled at the VPN service level by means of | controlled at the VPN service level by means of | |||
| 'signaling-type'.</t> | 'signaling-type'.</t> | |||
| <figure anchor="so"> | ||||
| <t><figure align="center" anchor="so" | <name>Signaling Option Overall Subtree</name> | |||
| title="Signaling Option Overall Subtree"> | <sourcecode type="yangtree"><![CDATA[... | |||
| <artwork align="center"><![CDATA[... | ||||
| +--rw vpn-nodes | +--rw vpn-nodes | |||
| +--rw vpn-node* [vpn-node-id] | +--rw vpn-node* [vpn-node-id] | |||
| ... | ... | |||
| +--rw signaling-option | +--rw signaling-option | |||
| | +--rw advertise-mtu? boolean | | +--rw advertise-mtu? boolean | |||
| | +--rw mtu-allow-mismatch? boolean | | +--rw mtu-allow-mismatch? boolean | |||
| | +--rw signaling-type? leafref | | +--rw signaling-type? leafref | |||
| | +--rw (signaling-option)? | | +--rw (signaling-option)? | |||
| | +--:(bgp) | | +--:(bgp) | |||
| | | ... | | | ... | |||
| | +--:(ldp-or-l2tp) | | +--:(ldp-or-l2tp) | |||
| | +--rw ldp-or-l2tp | | +--rw ldp-or-l2tp | |||
| | ... | | ... | |||
| | +--rw (ldp-or-l2tp)? | | +--rw (ldp-or-l2tp)? | |||
| | +--:(ldp) | | +--:(ldp) | |||
| | | ... | | | ... | |||
| | +--:(l2tp) | | +--:(l2tp) | |||
| | ... | | ... | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure></t> | </figure> | |||
| <t>The following signaling data nodes are supported:</t> | ||||
| <t>The following signaling data nodes are supported:<list | <dl newline="false" spacing="normal"> | |||
| style="hanging"> | <dt>'advertise-mtu':</dt> | |||
| <t hangText="'advertise-mtu':">Controls whether MTU is | <dd>Controls whether MTU is | |||
| advertised when setting a pseudowire (e.g., Section 4.3 of <xref | advertised when setting a pseudowire (e.g., <xref target="RFC4667" | |||
| target="RFC4667"></xref>, Section 5.1 of <xref | sectionFormat="of" section="4.3" format="default"/>, <xref target="RFC6624" se | |||
| target="RFC6624"></xref>, or Section 6.1 of <xref | ctionFormat="of" section="5.1" format="default"/>, or <xref target="RFC4762" sec | |||
| target="RFC4762"></xref>).</t> | tionFormat="of" section="6.1" format="default"/>).</dd> | |||
| <dt>'mtu-allow-mismatch':</dt> | ||||
| <t hangText="'mtu-allow-mismatch':">When set to true, it allows | <dd>When set to true, it allows | |||
| MTU mismatch for a pseudowire (see, e.g., Section 4.3 of <xref | an MTU mismatch for a pseudowire (see, e.g., <xref target="RFC4667 | |||
| target="RFC4667"></xref>).</t> | " sectionFormat="of" section="4.3" format="default"/>).</dd> | |||
| <dt>'signaling-type':</dt> | ||||
| <t hangText="'signaling-type':">Indicates the signaling type. | <dd>Indicates the signaling type. | |||
| This type inherits the value of 'signaling-type' defined at the | This type inherits the value of 'signaling-type' defined at the | |||
| service level (<xref target="l2_vpn_service"></xref>).</t> | service level (<xref target="l2_vpn_service" format="default"/>).< | |||
| /dd> | ||||
| <t hangText="'bgp':">Is provided when BGP is used for L2VPN | <dt>'bgp':</dt> | |||
| signaling. Refer to <xref target="bgp"></xref> for more | <dd>Is provided when BGP is used for L2VPN | |||
| details.</t> | signaling. Refer to <xref target="bgp" format="default"/> for more | |||
| details.</dd> | ||||
| <t hangText="'ldp':">The model supports the configuration of the | <dt>'ldp':</dt> | |||
| parameters that are discussed in Section 6 of <xref | <dd>The model supports the configuration of the | |||
| target="RFC4762"></xref>. Refer to <xref target="ldp"></xref> | parameters that are discussed in <xref target="RFC4762" sectionFor | |||
| for more details.</t> | mat="of" section="6" format="default"/>. Refer to <xref target="ldp" format="def | |||
| ault"/> | ||||
| <t hangText="'l2tp':">The model supports the configuration of | for more details.</dd> | |||
| the parameters that are discussed in Section 4 of <xref | <dt>'l2tp':</dt> | |||
| target="RFC4667"></xref>. Refer to <xref target="l2tp"></xref> | <dd>The model supports the configuration of | |||
| for more details.</t> | the parameters that are discussed in <xref target="RFC4667" sectio | |||
| </list></t> | n="4" sectionFormat="of" format="default"/>. Refer to <xref target="l2tp" format | |||
| ="default"/> | ||||
| for more details.</dd> | ||||
| </dl> | ||||
| <t>Note that LDP and L2TP choices are bundled ("ldp-or-l2tp") | <t>Note that LDP and L2TP choices are bundled ("ldp-or-l2tp") | |||
| because they share a set of common parameters that are further | because they share a set of common parameters that are further | |||
| detailed in Sections <xref format="counter" target="ldp"></xref> and | detailed in Sections <xref format="counter" target="ldp"/> and | |||
| <xref format="counter" target="l2tp"></xref>.</t> | <xref format="counter" target="l2tp"/>.</t> | |||
| <section anchor="bgp" numbered="true" toc="default"> | ||||
| <section anchor="bgp" title="BGP"> | <name>BGP</name> | |||
| <t>The structure of the BGP-related data nodes is provided in | <t>The structure of the BGP-related data nodes is provided in | |||
| <xref target="so-bgp"></xref>.</t> | <xref target="so-bgp" format="default"/>.</t> | |||
| <figure anchor="so-bgp"> | ||||
| <t><figure align="center" anchor="so-bgp" | <name>Signaling Option Subtree (BGP)</name> | |||
| title="Signaling Option Subtree (BGP)"> | <sourcecode type="yangtree"><![CDATA[ ... | |||
| <artwork align="center"><![CDATA[ ... | ||||
| | +--rw (signaling-option)? | | +--rw (signaling-option)? | |||
| | ... | | ... | |||
| | +--:(bgp) | | +--:(bgp) | |||
| | | +--rw (bgp-type)? | | | +--rw (bgp-type)? | |||
| | | +--:(l2vpn-bgp) | | | +--:(l2vpn-bgp) | |||
| | | | +--rw ce-range? uint16 | | | | +--rw ce-range? uint16 | |||
| | | | +--rw pw-encapsulation-type? | | | | +--rw pw-encapsulation-type? | |||
| | | | | identityref | | | | | identityref | |||
| | | | +--rw vpls-instance | | | | +--rw vpls-instance | |||
| | | | +--rw vpls-edge-id? uint16 | | | | +--rw vpls-edge-id? uint16 | |||
| skipping to change at line 1551 ¶ | skipping to change at line 1404 ¶ | |||
| | | +--rw nd-proxy {vpn-common:ipv6}? | | | +--rw nd-proxy {vpn-common:ipv6}? | |||
| | | | +--rw enable? boolean | | | | +--rw enable? boolean | |||
| | | | +--rw nd-suppression? | | | | +--rw nd-suppression? | |||
| | | | | boolean | | | | | boolean | |||
| | | | +--rw ip-mobility-threshold? | | | | +--rw ip-mobility-threshold? | |||
| | | | | uint16 | | | | | uint16 | |||
| | | | +--rw duplicate-ip-detection-interval? | | | | +--rw duplicate-ip-detection-interval? | |||
| | | | uint16 | | | | uint16 | |||
| | | +--rw underlay-multicast? | | | +--rw underlay-multicast? | |||
| | | | boolean | | | | boolean | |||
| | | +--rw flood-unknown-unicast-supression? | | | +--rw flood-unknown-unicast-suppression? | |||
| | | | boolean | | | | boolean | |||
| | | +--rw vpws-vlan-aware? boolean | | | +--rw vpws-vlan-aware? boolean | |||
| | | +--rw bum-management | | | +--rw bum-management | |||
| | | | +--rw discard-broadcast? | | | | +--rw discard-broadcast? | |||
| | | | | boolean | | | | | boolean | |||
| | | | +--rw discard-unknown-multicast? | | | | +--rw discard-unknown-multicast? | |||
| | | | | boolean | | | | | boolean | |||
| | | | +--rw discard-unknown-unicast? | | | | +--rw discard-unknown-unicast? | |||
| | | | boolean | | | | boolean | |||
| | | +--rw pbb | | | +--rw pbb | |||
| | | +--rw backbone-src-mac? | | | +--rw backbone-src-mac? | |||
| | | yang:mac-address | | | yang:mac-address | |||
| | +--:(ldp-or-l2tp) | | +--:(ldp-or-l2tp) | |||
| | ...]]></artwork> | | ...]]></sourcecode> | |||
| </figure></t> | </figure> | |||
| <t>Remote CEs that are entitled to connect to the same VPN should | <t>Remote CEs that are entitled to connect to the same VPN should | |||
| fit with the CE range ('ce-range') as discussed in Section 2.2.3 | fit with the CE range ('ce-range') as discussed in <xref target="RFC | |||
| of <xref target="RFC6624"></xref>. 'pw-encapsulation-type' is used | 6624" sectionFormat="of" section="2.2.3" format="default"/>. 'pw-encapsulation-t | |||
| to control the pseudowire encapsulation type (Section 3 of <xref | ype' is used | |||
| target="RFC6624"></xref>). The value of the | to control the pseudowire encapsulation type (<xref target="RFC6624" | |||
| 'pw-encapsulation-type' are taken from the IANA-maintained | sectionFormat="of" section="3" format="default"/>). The value of the | |||
| "iana-bgp-l2-encaps" module (<xref target="iana-bgp"></xref>).</t> | 'pw-encapsulation-type' is taken from the IANA-maintained | |||
| "iana-bgp-l2-encaps" module (<xref target="iana-bgp" format="default | ||||
| <t>For the specific case of VPLS, the VPLS Edge ID (VE ID, | "/>).</t> | |||
| 'vpls-edge-id') and a VE ID range ('vpls-edge-id-range') are | <t>For the specific case of VPLS, the VPLS Edge Identifier (VE ID) | |||
| provided as per Section 3.2 of <xref target="RFC4761"></xref>. If | ('vpls-edge-id') and a VE ID range ('vpls-edge-id-range') are | |||
| different VE IDs are required (e.g., multihoming as per Section | provided as per <xref target="RFC4761" sectionFormat="of" section="3 | |||
| 3.5 of <xref target="RFC4761"></xref>), these IDs are configured | .2" format="default"/>. If | |||
| at the VPN network access level (under 'signaling-option' in <xref | different VE IDs are required (e.g., multihoming as per <xref target | |||
| target="sna"></xref>).</t> | ="RFC4761" sectionFormat="of" section="3.5" format="default"/>), these IDs are c | |||
| onfigured | ||||
| at the VPN network access level (under 'signaling-option' in <xref t | ||||
| arget="sna" format="default"/>).</t> | ||||
| <t>For EVPN-related L2VPNs, 'service-interface-type' indicates | <t>For EVPN-related L2VPNs, 'service-interface-type' indicates | |||
| whether this is a VLAN-based, VLAN bundle, or VLAN-aware bundle | whether this is a VLAN-based, VLAN-aware, or VLAN bundle service | |||
| service interface (Section 6 of <xref target="RFC7432"></xref>). | interface (<xref target="RFC7432" sectionFormat="of" section="6" | |||
| Moreover, a set of policies can be provided such as MAC address | format="default"/>). Moreover, a set of policies can be provided | |||
| learning mode (Section 9 of <xref target="RFC7432"></xref>), | such as the MAC address learning mode (<xref target="RFC7432" | |||
| ingress replication (Section 12.1 of <xref | sectionFormat="of" section="9" format="default"/>), ingress | |||
| target="RFC7432"></xref>), Address Resolution Protocol (ARP) and | replication (<xref target="RFC7432" sectionFormat="of" | |||
| Nighbor Discovery (ND) proxy (Section 10 of <xref | section="12.1" format="default"/>), the Address Resolution | |||
| target="RFC7432"></xref>), processing of Broadcast, unknown | Protocol (ARP) and Neighbor Discovery (ND) proxy (<xref | |||
| unicast, or multicast (BUM) (Section 12 of <xref | target="RFC7432" sectionFormat="of" section="10" | |||
| target="RFC7432"></xref>), etc.</t> | format="default"/>), the processing of Broadcast, Unknown Unicast, | |||
| or Multicast (BUM) (<xref target="RFC7432" sectionFormat="of" | ||||
| section="12" format="default"/>), etc.</t> | ||||
| </section> | </section> | |||
| <section anchor="ldp" numbered="true" toc="default"> | ||||
| <section anchor="ldp" title="LDP"> | <name>LDP</name> | |||
| <t>The model supports the configuration of the parameters that are | <t>The L2NM supports the configuration of the parameters that are | |||
| discussed in Section 6 of <xref target="RFC4762"></xref>. Such | discussed in <xref target="RFC4762" sectionFormat="of" section="6" f | |||
| ormat="default"/>. Such | ||||
| parameters include an Attachment Group Identifier (AGI) (a.k.a., | parameters include an Attachment Group Identifier (AGI) (a.k.a., | |||
| VPLS-id), a Source Attachment Individual Identifier (SAII), a list | VPLS-id), a Source Attachment Individual Identifier (SAII), a list | |||
| of peers that are associated with a Target Attachment Individual | of peers that are associated with a Target Attachment Individual | |||
| Identifier (TAII), a pseudowire type, and a pseudowire description | Identifier (TAII), a pseudowire type, and a pseudowire description | |||
| (<xref target="so-ldp"></xref>). Unlike BGP, only Ethernet and | (<xref target="so-ldp" format="default"/>). Unlike BGP, only Etherne t and | |||
| Ethernet tagged mode are supported. The AGI, SAII, and TAII are | Ethernet tagged mode are supported. The AGI, SAII, and TAII are | |||
| encoded following the types defined in Section 3.4 of <xref | encoded following the types defined in <xref target="RFC4446" sectio | |||
| target="RFC4446"></xref>.</t> | nFormat="of" section="3.4" format="default"/>.</t> | |||
| <figure anchor="so-ldp"> | ||||
| <t><figure align="right" anchor="so-ldp" | <name>Signaling Option Subtree (LDP)</name> | |||
| title="Signaling Option Subtree (LDP)"> | <sourcecode type="yangtree"><![CDATA[ ... | |||
| <artwork align="center"><![CDATA[ ... | ||||
| | +--rw (signaling-option)? | | +--rw (signaling-option)? | |||
| | ... | | ... | |||
| | +--:(bgp) | | +--:(bgp) | |||
| | | ... | | | ... | |||
| | +--:(ldp-or-l2tp) | | +--:(ldp-or-l2tp) | |||
| | +--rw ldp-or-l2tp | | +--rw ldp-or-l2tp | |||
| | +--rw agi? | | +--rw agi? | |||
| | | rt-types:route-distinguisher | | | rt-types:route-distinguisher | |||
| | +--rw saii? uint32 | | +--rw saii? uint32 | |||
| | +--rw remote-targets* [taii] | | +--rw remote-targets* [taii] | |||
| skipping to change at line 1643 ¶ | skipping to change at line 1490 ¶ | |||
| | | | +--rw peer-addr | | | | +--rw peer-addr | |||
| | | | | inet:ip-address | | | | | inet:ip-address | |||
| | | | +--rw vc-id string | | | | +--rw vc-id string | |||
| | | | +--rw pw-priority? uint32 | | | | +--rw pw-priority? uint32 | |||
| | | +--rw qinq | | | +--rw qinq | |||
| | | +--rw s-tag dot1q-types:vlanid | | | +--rw s-tag dot1q-types:vlanid | |||
| | | +--rw c-tag dot1q-types:vlanid | | | +--rw c-tag dot1q-types:vlanid | |||
| | +--:(l2tp) | | +--:(l2tp) | |||
| | ... | | ... | |||
| ... | ... | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure></t> | </figure> | |||
| </section> | </section> | |||
| <section anchor="l2tp" numbered="true" toc="default"> | ||||
| <section anchor="l2tp" title="L2TP"> | <name>L2TP</name> | |||
| <t>The model supports the configuration of the parameters that are | <t>The L2NM supports the configuration of the parameters that are | |||
| discussed in Section 4 of <xref target="RFC4667"></xref>. Such | discussed in <xref target="RFC4667" sectionFormat="of" section="4" f | |||
| ormat="default"/>. Such | ||||
| parameters include a Router ID that is used to uniquely identify a | parameters include a Router ID that is used to uniquely identify a | |||
| PE, a pseudowire type, an AGI, an SAII, and a list of peers that | PE, a pseudowire type, an AGI, an SAII, and a list of peers that | |||
| are associated with a TAII (<xref target="so-l2tp"></xref>). The | are associated with a TAII (<xref target="so-l2tp" format="default"/ >). The | |||
| pseudowire type ('pseudowire-type') value is taken from the | pseudowire type ('pseudowire-type') value is taken from the | |||
| IANA-maintained "iana-pseudowire-types" module (<xref | IANA-maintained "iana-pseudowire-types" module (<xref target="iana-p | |||
| target="iana-pw"></xref>).</t> | w" format="default"/>).</t> | |||
| <figure anchor="so-l2tp"> | ||||
| <t><figure align="center" anchor="so-l2tp" | <name>Signaling Option Subtree (L2TP)</name> | |||
| title="Signaling Option Subtree (L2TP)"> | <sourcecode type="yangtree"><![CDATA[ ... | |||
| <artwork align="center"><![CDATA[ ... | ||||
| | +--rw (signaling-option)? | | +--rw (signaling-option)? | |||
| | ... | | ... | |||
| | +--:(bgp) | | +--:(bgp) | |||
| | | ... | | | ... | |||
| | +--:(ldp-or-l2tp) | | +--:(ldp-or-l2tp) | |||
| | +--rw ldp-or-l2tp | | +--rw ldp-or-l2tp | |||
| | +--rw agi? | | +--rw agi? | |||
| | | rt-types:route-distinguisher | | | rt-types:route-distinguisher | |||
| | +--rw saii? uint32 | | +--rw saii? uint32 | |||
| | +--rw remote-targets* [taii] | | +--rw remote-targets* [taii] | |||
| | | +--rw taii uint32 | | | +--rw taii uint32 | |||
| | | +--rw peer-addr inet:ip-address | | | +--rw peer-addr inet:ip-address | |||
| | +--rw (ldp-or-l2tp)? | | +--rw (ldp-or-l2tp)? | |||
| | +--:(ldp) | | +--:(ldp) | |||
| | | ... | | | ... | |||
| | +--:(l2tp) | | +--:(l2tp) | |||
| | +--rw router-id? | | +--rw router-id? | |||
| | | rt-types:router-id | | | rt-types:router-id | |||
| | +--rw pseudowire-type? | | +--rw pseudowire-type? | |||
| | identityref | | identityref | |||
| ...]]></artwork> | ...]]></sourcecode> | |||
| </figure></t> | </figure> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="sna" numbered="true" toc="default"> | ||||
| <section anchor="sna" title="VPN Network Accesses"> | <name>VPN Network Accesses</name> | |||
| <t>A 'vpn-network-access' (<xref | <t>A 'vpn-network-access' (<xref target="vpn_network_access_tree" format | |||
| target="vpn_network_access_tree"></xref>) represents an entry point to | ="default"/>) represents an entry point to | |||
| a VPN service. In other words, this container encloses the parameters | a VPN service. In other words, this container encloses the parameters | |||
| that describe the access information for the traffic that belongs to a | that describe the access information for the traffic that belongs to a | |||
| particular L2VPN.</t> | particular L2VPN.</t> | |||
| <t>A 'vpn-network-access' includes information such as the connection | <t>A 'vpn-network-access' includes information such as the connection | |||
| on which the access is defined, the specific Layer 2 service | on which the access is defined, the specific Layer 2 service | |||
| requirements, etc.</t> | requirements, etc.</t> | |||
| <figure anchor="vpn_network_access_tree"> | ||||
| <t><figure align="right" anchor="vpn_network_access_tree" | <name>VPN Network Access Subtree</name> | |||
| title="VPN Network Access Subtree"> | <sourcecode type="yangtree"><![CDATA[ ... | |||
| <artwork align="center"><![CDATA[ ... | ||||
| +--rw vpn-nodes | +--rw vpn-nodes | |||
| +--rw vpn-node* [vpn-node-id] | +--rw vpn-node* [vpn-node-id] | |||
| ... | ... | |||
| +--rw vpn-network-accesses | +--rw vpn-network-accesses | |||
| +--rw vpn-network-access* [id] | +--rw vpn-network-access* [id] | |||
| +--rw id vpn-common:vpn-id | +--rw id vpn-common:vpn-id | |||
| +--rw description? string | +--rw description? string | |||
| +--rw interface-id? string | +--rw interface-id? string | |||
| +--rw active-vpn-node-profile? leafref | +--rw active-vpn-node-profile? leafref | |||
| +--rw status | +--rw status | |||
| | ... | | ... | |||
| +--rw connection | +--rw connection | |||
| | ... | | ... | |||
| +--rw (signaling-option)? | +--rw (signaling-option)? | |||
| | +--:(bgp) | | +--:(bgp) | |||
| | +--rw (bgp-type)? | | +--rw (bgp-type)? | |||
| skipping to change at line 1733 ¶ | skipping to change at line 1576 ¶ | |||
| | +--rw vpws-service-instance | | +--rw vpws-service-instance | |||
| | ... | | ... | |||
| +--rw group* [group-id] | +--rw group* [group-id] | |||
| | +--rw group-id string | | +--rw group-id string | |||
| | +--rw precedence? identityref | | +--rw precedence? identityref | |||
| | +--rw ethernet-segment-identifier? | | +--rw ethernet-segment-identifier? | |||
| | l2vpn-es:es-ref | | l2vpn-es:es-ref | |||
| +--rw ethernet-service-oam | +--rw ethernet-service-oam | |||
| | ... | | ... | |||
| +--rw service | +--rw service | |||
| ...]]></artwork> | ...]]></sourcecode> | |||
| </figure></t> | </figure> | |||
| <t>The VPN network access is comprised of the following:</t> | ||||
| <t>The VPN network access comprises:</t> | <dl newline="false" spacing="normal"> | |||
| <dt>'id':</dt> | ||||
| <t><list style="hanging"> | <dd>Includes an identifier of the VPN network | |||
| <t hangText="'id':">Includes an identifier of the VPN network | access.</dd> | |||
| access.</t> | <dt>'description':</dt> | |||
| <dd>Includes a textual description of the | ||||
| <t hangText="'description':">Includes a textual description of the | VPN network access.</dd> | |||
| VPN network access.</t> | <dt>'interface-id':</dt> | |||
| <dd>Indicates the interface on which the | ||||
| <t hangText="'interface-id':">Indicates the interface on which the | VPN network access is bound.</dd> | |||
| VPN network access is bound.</t> | <dt>'active-vpn-node-profile':</dt> | |||
| <dd>Provides a pointer to an | ||||
| <t hangText="'active-vpn-node-profile':">Provides a pointer to an | ||||
| active 'global-parameters-profile' at the VPN node level. | active 'global-parameters-profile' at the VPN node level. | |||
| Referencing an active 'global-parameters-profile' implies that all | Referencing an active 'global-parameters-profile' implies that all | |||
| associated data nodes will be inherited by the VPN network access. | associated data nodes will be inherited by the VPN network access. | |||
| However, some of the inherited data nodes (e.g., ACL policies) can | However, some of the inherited data nodes (e.g., ACL policies) can | |||
| be overridden at the VPN network access level. In such case, | be overridden at the VPN network access level. In such case, | |||
| adjusted values take precedence over inherited values.</t> | adjusted values take precedence over inherited values.</dd> | |||
| <dt>'status':</dt> | ||||
| <t hangText="'status':">Indicates the administrative and | <dd>Indicates the administrative and | |||
| operational status of the VPN network access.</t> | operational status of the VPN network access.</dd> | |||
| <dt>'connection':</dt> | ||||
| <t hangText="'connection':">Represents and groups the set of Layer | <dd>Represents and groups the set of Layer | |||
| 2 connectivity from where the traffic of the L2VPN in a particular | 2 connectivity from where the traffic of the L2VPN in a particular | |||
| VPN Network access is coming. See <xref | VPN network access is coming. See <xref target="connection" format=" | |||
| target="connection"></xref>.</t> | default"/>.</dd> | |||
| <dt>'signaling-option':</dt> | ||||
| <t hangText="'signaling-option':">Indicates a set of signaling | <dd> | |||
| <t>Indicates a set of signaling | ||||
| options that are specific to a given VPN network access, e.g., a | options that are specific to a given VPN network access, e.g., a | |||
| CE ID ('ce-id' identifying the CE within the VPN) and a remote CE | CE ID ('ce-id' identifying the CE within the VPN) and a remote CE | |||
| ID as discussed in Section 2.2.2 of <xref | ID as discussed in <xref target="RFC6624" sectionFormat="of" section | |||
| target="RFC6624"></xref>. <vspace blankLines="1" />It can also | ="2.2.2" format="default"/>. </t> | |||
| <t>It can also | ||||
| include a set of data nodes that are required for the | include a set of data nodes that are required for the | |||
| configuration of a VPWS-EVPN <xref target="RFC8214"></xref>. See | configuration of a VPWS-EVPN <xref target="RFC8214" format="default" | |||
| <xref target="vsi"></xref>.</t> | />. See | |||
| <xref target="vsi" format="default"/>.</t> | ||||
| <t hangText="'group':">Is used for grouping VPN network accesses | </dd> | |||
| <dt>'group':</dt> | ||||
| <dd>Is used for grouping VPN network accesses | ||||
| by assigning the same identifier to these accesses. The precedence | by assigning the same identifier to these accesses. The precedence | |||
| attribute is used to differentiate the primary and secondary | attribute is used to differentiate the primary and secondary | |||
| accesses for a service with multiple accesses. An example to | accesses for a service with multiple accesses. An example to | |||
| illustrate the use of this container for redundancy purposes is | illustrate the use of this container for redundancy purposes is | |||
| provided in <xref target="prec-example"></xref>. This container is | provided in <xref target="prec-example" format="default"/>. This con tainer is | |||
| also used to identify the link of an ES by allocating the same | also used to identify the link of an ES by allocating the same | |||
| ESI. An example to illustrate this functionality is provided in | ESI. An example to illustrate this functionality is provided in | |||
| Appendices <xref format="counter" target="evpn-vpws-app"></xref> | Appendices <xref format="counter" target="evpn-vpws-app"/> | |||
| and <xref format="counter" target="auto-ex"></xref>.</t> | and <xref format="counter" target="auto-ex"/>.</dd> | |||
| <dt>'ethernet-service-oam':</dt> | ||||
| <t hangText="'ethernet-service-oam':">Carries information about | <dd>Carries information about | |||
| the service OAM. See <xref target="oam"></xref>.</t> | the service OAM. See <xref target="oam" format="default"/>.</dd> | |||
| <dt>'service':</dt> | ||||
| <t hangText="'service':">Specifies the service parameters (e.g., | <dd>Specifies the service parameters (e.g., | |||
| QoS, multicast) to apply for a given VPN network access. See <xref | QoS and multicast) to apply for a given VPN network access. See <xre | |||
| target="service"></xref>.</t> | f target="service" format="default"/>.</dd> | |||
| </list></t> | </dl> | |||
| <section anchor="connection" numbered="true" toc="default"> | ||||
| <name>Connection</name> | ||||
| <section anchor="connection" title="Connection"> | <t>The 'connection' container (<xref target="connection_tree" format=" | |||
| <t>The 'connection' container (<xref | default"/>) is used to configure the relevant | |||
| target="connection_tree"></xref>) is used to configure the relevant | ||||
| properties of the interface to which the L2VPN instance is attached | properties of the interface to which the L2VPN instance is attached | |||
| to (e.g., encapsulation type, Link Aggregation Group (LAG) | to (e.g., encapsulation type, Link Aggregation Group (LAG) | |||
| interfaces, split-horizon). The L2NM supports tag manipulation | interfaces, and split-horizon). The L2NM supports tag manipulation | |||
| operations (e.g., tag rewrite).</t> | operations (e.g., tag rewrite).</t> | |||
| <t>Note that the 'connection' container does not include the | <t>Note that the 'connection' container does not include the | |||
| physical-specific configuration as this is assumed to be directly | physical-specific configuration as this is assumed to be directly | |||
| handled using device modules (e.g., interfaces module). Moreover, | handled using device modules (e.g., an interfaces module). Moreover, | |||
| this design is also meant to avoid manipulated global parameters at | this design is also meant to avoid manipulated global parameters at | |||
| the service level and lower the risk of impacting other services | the service level and lower the risk of impacting other services | |||
| sharing the same physical interface.</t> | sharing the same physical interface.</t> | |||
| <t>A reference to the bearer is maintained to allow keeping the link | <t>A reference to the bearer is maintained to allow keeping the link | |||
| between the L2SM and the L2NM when both data models are used in a | between the L2SM and the L2NM when both data models are used in a | |||
| given deployment.</t> | given deployment.</t> | |||
| <t>Some consistency checks should be ensured by implementations | <t>Some consistency checks should be ensured by implementations | |||
| (typically, network controllers) for LAG interface as the same | (typically, network controllers) for LAG interfaces, as the same | |||
| information (e.g., LACP system-id) should be provided to the | information (e.g., LACP system-id) should be provided to the | |||
| involved nodes.</t> | involved nodes.</t> | |||
| <t>The L2NM inherits the 'member-link-list' structure from the L2SM | <t>The L2NM inherits the 'member-link-list' structure from the L2SM | |||
| (including indication of OAM 802.3ah support <xref | (including indication of OAM 802.3ah support <xref target="IEEE-802-3a | |||
| target="IEEE-802-3ah"></xref>).</t> | h" format="default"/>).</t> | |||
| <figure align="right" anchor="connection_tree" | <figure anchor="connection_tree"> | |||
| title="Connection Subtree"> | <name>Connection Subtree</name> | |||
| <artwork align="center"><![CDATA[ ... | <sourcecode type="yangtree"><![CDATA[ ... | |||
| +--rw vpn-nodes | +--rw vpn-nodes | |||
| +--rw vpn-node* [vpn-node-id] | +--rw vpn-node* [vpn-node-id] | |||
| ... | ... | |||
| +--rw vpn-network-accesses | +--rw vpn-network-accesses | |||
| +--rw vpn-network-access* [id] | +--rw vpn-network-access* [id] | |||
| ... | ... | |||
| +--rw connection | +--rw connection | |||
| | +--rw l2-termination-point? | | +--rw l2-termination-point? | |||
| | | string | | | string | |||
| | +--rw local-bridge-reference? | | +--rw local-bridge-reference? | |||
| skipping to change at line 1907 ¶ | skipping to change at line 1744 ¶ | |||
| | | | +--rw speed? uint32 | | | | +--rw speed? uint32 | |||
| | | | +--rw mode? identityref | | | | +--rw mode? identityref | |||
| | | | +--rw link-mtu? uint32 | | | | +--rw link-mtu? uint32 | |||
| | | | +--rw oam-802.3ah-link | | | | +--rw oam-802.3ah-link | |||
| | | | | {oam-3ah}? | | | | | {oam-3ah}? | |||
| | | | +--rw enable? boolean | | | | +--rw enable? boolean | |||
| | | +--rw flow-control? boolean | | | +--rw flow-control? boolean | |||
| | | +--rw lldp? boolean | | | +--rw lldp? boolean | |||
| | +--rw split-horizon | | +--rw split-horizon | |||
| | +--rw group-name? string | | +--rw group-name? string | |||
| ... ]]></artwork> | ... ]]></sourcecode> | |||
| </figure> | </figure> | |||
| </section> | </section> | |||
| <section anchor="vsi" numbered="true" toc="default"> | ||||
| <section anchor="vsi" title="EVPN-VPWS Service Instance"> | <name>EVPN-VPWS Service Instance</name> | |||
| <t>The 'vpws-service-instance' provides the local and remote VPWS | <t>The 'vpws-service-instance' provides the local and remote VPWS | |||
| Service Instance (VSI) <xref target="RFC8214"></xref>. This | Service Instance (VSI) <xref target="RFC8214" format="default"/>. This | |||
| container is only present when the 'vpn-type' is VPWS-EVPN. As shown | container is only present when the 'vpn-type' is VPWS-EVPN. As shown | |||
| in <xref target="vsi-tree"></xref>, the VSIs can be configured by a | in <xref target="vsi-tree" format="default"/>, the VSIs can be configu red by a | |||
| VPN service provider or auto-generated.</t> | VPN service provider or auto-generated.</t> | |||
| <t>An example to illustrate the use of the L2NM to configure | <t>An example to illustrate the use of the L2NM to configure | |||
| VPWS-EVPN instances is provided in <xref | VPWS-EVPN instances is provided in <xref target="evpn-vpws-app" format | |||
| target="evpn-vpws-app"></xref>.</t> | ="default"/>.</t> | |||
| <figure anchor="vsi-tree"> | ||||
| <t><figure align="left" anchor="vsi-tree" | <name>EVPN-VPWS Service Instance Subtree</name> | |||
| title="EVPN-VPWS Service Instance Subtree"> | <sourcecode type="yangtree"><![CDATA[... | |||
| <artwork><![CDATA[... | ||||
| +--rw vpn-nodes | +--rw vpn-nodes | |||
| +--rw vpn-node* [vpn-node-id] | +--rw vpn-node* [vpn-node-id] | |||
| ... | ... | |||
| +--rw vpn-network-accesses | +--rw vpn-network-accesses | |||
| +--rw vpn-network-access* [id] | +--rw vpn-network-access* [id] | |||
| ... | ... | |||
| +--rw (signaling-option)? | +--rw (signaling-option)? | |||
| | +--:(bgp) | | +--:(bgp) | |||
| | +--rw (bgp-type)? | | +--rw (bgp-type)? | |||
| | +--:(l2vpn-bgp) | | +--:(l2vpn-bgp) | |||
| skipping to change at line 1966 ¶ | skipping to change at line 1800 ¶ | |||
| | +--:(auto-assigned) | | +--:(auto-assigned) | |||
| | +--rw remote-vsi-auto | | +--rw remote-vsi-auto | |||
| | +--rw (auto-mode)? | | +--rw (auto-mode)? | |||
| | | +--:(from-pool) | | | +--:(from-pool) | |||
| | | | +--rw vsi-pool-name? | | | | +--rw vsi-pool-name? | |||
| | | | string | | | | string | |||
| | | +--:(full-auto) | | | +--:(full-auto) | |||
| | | +--rw auto? empty | | | +--rw auto? empty | |||
| | +--ro auto-remote-vsi? uint32 | | +--ro auto-remote-vsi? uint32 | |||
| ... | ... | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure></t> | </figure> | |||
| </section> | </section> | |||
| <section anchor="oam" numbered="true" toc="default"> | ||||
| <section anchor="oam" title="Ethernet OAM"> | <name>Ethernet OAM</name> | |||
| <t>Ethernet OAM refers to both <xref target="IEEE-802-1ag"></xref> | <t>Ethernet OAM refers to both <xref target="IEEE-802-1ag" format="def | |||
| and <xref target="ITU-T-Y-1731"></xref>.</t> | ault"/> | |||
| and <xref target="ITU-T-Y-1731" format="default"/>.</t> | ||||
| <t>As shown in <xref target="oamt"></xref>, the L2NM inherits the | <t>As shown in <xref target="oamt" format="default"/>, the L2NM inheri | |||
| same structure as in Section 5.3.2.2.6 of <xref | ts the | |||
| target="RFC8466"></xref> for OAM matters.</t> | same structure as in <xref target="RFC8466" sectionFormat="of" section | |||
| ="5.3.2.2.6" format="default"/> for OAM matters.</t> | ||||
| <t><figure align="center" anchor="oamt" title="OAM Subtree"> | <figure anchor="oamt"> | |||
| <artwork align="center"><![CDATA[ +--rw l2vpn-ntw | <name>OAM Subtree</name> | |||
| <sourcecode type="yangtree"><![CDATA[ +--rw l2vpn-ntw | ||||
| +--rw vpn-profiles | +--rw vpn-profiles | |||
| | ... | | ... | |||
| +--rw vpn-services | +--rw vpn-services | |||
| +--rw vpn-service* [vpn-id] | +--rw vpn-service* [vpn-id] | |||
| ... | ... | |||
| +--rw vpn-nodes | +--rw vpn-nodes | |||
| +--rw vpn-node* [vpn-node-id] | +--rw vpn-node* [vpn-node-id] | |||
| ... | ... | |||
| +--rw vpn-network-accesses | +--rw vpn-network-accesses | |||
| +--rw vpn-network-access* [id] | +--rw vpn-network-access* [id] | |||
| skipping to change at line 2028 ¶ | skipping to change at line 1860 ¶ | |||
| | | ccm-priority-type | | | ccm-priority-type | |||
| | +--rw y-1731* [maid] | | +--rw y-1731* [maid] | |||
| | +--rw maid string | | +--rw maid string | |||
| | +--rw mep-id? uint32 | | +--rw mep-id? uint32 | |||
| | +--rw pm-type? identityref | | +--rw pm-type? identityref | |||
| | +--rw remote-mep-id? uint32 | | +--rw remote-mep-id? uint32 | |||
| | +--rw message-period? uint32 | | +--rw message-period? uint32 | |||
| | +--rw measurement-interval? uint32 | | +--rw measurement-interval? uint32 | |||
| | +--rw cos? uint32 | | +--rw cos? uint32 | |||
| | +--rw loss-measurement? boolean | | +--rw loss-measurement? boolean | |||
| | +--rw synthethic-loss-measurement? | | +--rw synthetic-loss-measurement? | |||
| | | boolean | | | boolean | |||
| | +--rw delay-measurement | | +--rw delay-measurement | |||
| | | +--rw enable-dm? boolean | | | +--rw enable-dm? boolean | |||
| | | +--rw two-way? boolean | | | +--rw two-way? boolean | |||
| | +--rw frame-size? uint32 | | +--rw frame-size? uint32 | |||
| | +--rw session-type? enumeration | | +--rw session-type? enumeration | |||
| ...]]></artwork> | ...]]></sourcecode> | |||
| </figure></t> | </figure> | |||
| </section> | </section> | |||
| <section anchor="service" numbered="true" toc="default"> | ||||
| <section anchor="service" title="Services"> | <name>Services</name> | |||
| <t>The 'service' container (<xref target="service_tree"></xref>) | <t>The 'service' container (<xref target="service_tree" format="defaul | |||
| provides a set of service-specific configuration such as Quality of | t"/>) | |||
| Service (QoS).</t> | provides a set of service-specific configurations such as QoS.</t> | |||
| <figure anchor="service_tree"> | ||||
| <t><figure align="center" anchor="service_tree" | <name>Service Overall Subtree</name> | |||
| title="Service Overall Subtree"> | <sourcecode type="yangtree"><![CDATA[ +--rw l2vpn-ntw | |||
| <artwork align="center"><![CDATA[ +--rw l2vpn-ntw | ||||
| +--rw vpn-profiles | +--rw vpn-profiles | |||
| | ... | | ... | |||
| +--rw vpn-services | +--rw vpn-services | |||
| +--rw vpn-service* [vpn-id] | +--rw vpn-service* [vpn-id] | |||
| ... | ... | |||
| +--rw vpn-nodes | +--rw vpn-nodes | |||
| +--rw vpn-node* [vpn-node-id] | +--rw vpn-node* [vpn-node-id] | |||
| ... | ... | |||
| +--rw vpn-network-accesses | +--rw vpn-network-accesses | |||
| +--rw vpn-network-access* [id] | +--rw vpn-network-access* [id] | |||
| skipping to change at line 2071 ¶ | skipping to change at line 1901 ¶ | |||
| | {vpn-common:inbound-bw}? | | {vpn-common:inbound-bw}? | |||
| | ... | | ... | |||
| +--rw svc-ce-to-pe-bandwidth | +--rw svc-ce-to-pe-bandwidth | |||
| | {vpn-common:outbound-bw}? | | {vpn-common:outbound-bw}? | |||
| | ... | | ... | |||
| +--rw qos {vpn-common:qos}? | +--rw qos {vpn-common:qos}? | |||
| | ... | | ... | |||
| +--rw mac-policies | +--rw mac-policies | |||
| | ... | | ... | |||
| +--rw broadcast-unknown-unicast-multicast | +--rw broadcast-unknown-unicast-multicast | |||
| ... ]]></artwork> | ... ]]></sourcecode> | |||
| </figure>The description of the service data nodes is as | </figure> | |||
| <t>The description of the service data nodes is as | ||||
| follows:</t> | follows:</t> | |||
| <dl newline="false" spacing="normal"> | ||||
| <dt>'mtu':</dt> | ||||
| <dd>Specifies the Layer 2 MTU, in bytes, for | ||||
| the VPN network access.</dd> | ||||
| <dt>'svc-pe-to-ce-bandwidth' and 'svc-ce-to-pe-bandwidth':</dt> | ||||
| <dd> | ||||
| <t><list style="hanging"> | <t>Specify | |||
| <t hangText="'mtu':">Specifies the Layer 2 MTU, in bytes, for | the service bandwidth for the L2VPN service. </t> | |||
| the VPN network access.</t> | <t>'svc-pe-to-ce-bandwidth' indicates the inbound | |||
| <t | ||||
| hangText="'svc-pe-to-ce-bandwidth' and 'svc-ce-to-pe-bandwidth':"> | ||||
| Specify | ||||
| the service bandwidth for the L2VPN service. <vspace | ||||
| blankLines="1" />'svc-pe-to-ce-bandwidth' indicates the inbound | ||||
| bandwidth of the connection (i.e., download bandwidth from the | bandwidth of the connection (i.e., download bandwidth from the | |||
| service provider to the site). <vspace | service provider to the site). </t> | |||
| blankLines="1" />'svc-ce-to-pe-bandwidth' indicates the outbound | <t>'svc-ce-to-pe-bandwidth' indicates the outbound | |||
| bandwidth of the connection (i.e., upload bandwidth from the | bandwidth of the connection (i.e., upload bandwidth from the | |||
| site to the service provider). <vspace | site to the service provider). </t> | |||
| blankLines="1" />'svc-pe-to-ce-bandwidth' and | <t>'svc-pe-to-ce-bandwidth' and | |||
| 'svc-ce-to-pe-bandwidth' can be represented using the Committed | 'svc-ce-to-pe-bandwidth' can be represented using the Committed | |||
| Information Rate (CIR), the Excess Information Rate (EIR), or | Information Rate (CIR), the Excess Information Rate (EIR), or | |||
| the Peak Information Rate (PIR). <vspace blankLines="1" />As | the Peak Information Rate (PIR). </t> | |||
| shown in <xref target="bwtree"></xref>, the structure of service | <t>As | |||
| bandwidth data nodes is inherited from the L2SM <xref | shown in <xref target="bwtree" format="default"/>, the structure o | |||
| target="RFC8466"></xref>. The following types, defined in <xref | f service | |||
| target="RFC9181"></xref>, can be used to indicate the bandwidth | bandwidth data nodes is inherited from the L2SM <xref target="RFC8 | |||
| type: <list style="hanging"> | 466" format="default"/>. The following types, defined in <xref target="RFC9181" | |||
| <t hangText="'bw-per-cos':">The bandwidth is per Class of | format="default"/>, can be used to indicate the bandwidth | |||
| Service (CoS).</t> | type: </t> | |||
| <dl newline="false" spacing="normal"> | ||||
| <t hangText="'bw-per-port':">The bandwidth is per VPN | <dt>'bw-per-cos':</dt> | |||
| network access.</t> | <dd>The bandwidth is per CoS.</dd> | |||
| <dt>'bw-per-port':</dt> | ||||
| <t hangText="'bw-per-site':">The bandwidth is to all VPN | <dd>The bandwidth is per VPN | |||
| network accesses that belong to the same site.</t> | network access.</dd> | |||
| <dt>'bw-per-site':</dt> | ||||
| <t hangText="'bw-per-service':">The bandwidth is per L2VPN | <dd>The bandwidth is to all VPN | |||
| service.</t> | network accesses that belong to the same site.</dd> | |||
| </list><vspace blankLines="1" /><figure align="center" | <dt>'bw-per-service':</dt> | |||
| anchor="bwtree" title="Service Bandwidth Subtree"> | <dd>The bandwidth is per L2VPN | |||
| <artwork align="center"><![CDATA[ +--rw | service.</dd> | |||
| service | </dl> | |||
| <figure anchor="bwtree"> | ||||
| <name>Service Bandwidth Subtree</name> | ||||
| <sourcecode type="yangtree"><![CDATA[ +--r | ||||
| w service | ||||
| ... | ... | |||
| +--rw svc-pe-to-ce-bandwidth | +--rw svc-pe-to-ce-bandwidth | |||
| | {vpn-common:inbound-bw}? | | {vpn-common:inbound-bw}? | |||
| | +--rw pe-to-ce-bandwidth* [bw-type] | | +--rw pe-to-ce-bandwidth* [bw-type] | |||
| | +--rw bw-type identityref | | +--rw bw-type identityref | |||
| | +--rw (type)? | | +--rw (type)? | |||
| | +--:(per-cos) | | +--:(per-cos) | |||
| | | +--rw cos* [cos-id] | | | +--rw cos* [cos-id] | |||
| | | +--rw cos-id uint8 | | | +--rw cos-id uint8 | |||
| | | +--rw cir? uint64 | | | +--rw cir? uint64 | |||
| skipping to change at line 2155 ¶ | skipping to change at line 1988 ¶ | |||
| | | +--rw pir? uint64 | | | +--rw pir? uint64 | |||
| | | +--rw pbs? uint64 | | | +--rw pbs? uint64 | |||
| | +--:(other) | | +--:(other) | |||
| | +--rw cir? uint64 | | +--rw cir? uint64 | |||
| | +--rw cbs? uint64 | | +--rw cbs? uint64 | |||
| | +--rw eir? uint64 | | +--rw eir? uint64 | |||
| | +--rw ebs? uint64 | | +--rw ebs? uint64 | |||
| | +--rw pir? uint64 | | +--rw pir? uint64 | |||
| | +--rw pbs? uint64 | | +--rw pbs? uint64 | |||
| ... | ... | |||
| ]]></sourcecode> | ||||
| ]]></artwork> | </figure> | |||
| </figure></t> | </dd> | |||
| <dt>'qos':</dt> | ||||
| <t hangText="'qos':">Is used to define a set of QoS policies to | <dd> | |||
| apply on a given VPN network access (<xref | <t>Is used to define a set of QoS policies to | |||
| target="qos-tree"></xref>). The QoS classification can be based | apply on a given VPN network access (<xref target="qos-tree" forma | |||
| t="default"/>). The QoS classification can be based | ||||
| on many criteria such as source MAC address, destination MAC | on many criteria such as source MAC address, destination MAC | |||
| address, etc. See also Section 5.10.2.1 of <xref | address, etc. See also <xref target="RFC8466" sectionFormat="of" se | |||
| target="RFC8466"></xref> for more discussion of QoS | ction="5.10.2.1" format="default"/> for more discussion of QoS | |||
| classification including the use of color types.<figure | classification including the use of color types.</t> | |||
| align="center" anchor="qos-tree" title="QoS Subtree"> | <figure anchor="qos-tree"> | |||
| <artwork align="center"><![CDATA[ +--rw | <name>QoS Subtree</name> | |||
| service | <sourcecode type="yangtree"><![CDATA[ | |||
| ... | +--rw service | |||
| +--rw qos {vpn-common:qos}? | ... | |||
| | +--rw qos-classification-policy | +--rw qos {vpn-common:qos}? | |||
| | | +--rw rule* [id] | | +--rw qos-classification-policy | |||
| | | +--rw id string | | | +--rw rule* [id] | |||
| | | +--rw (match-type)? | | | +--rw id string | |||
| | | | +--:(match-flow) | | | +--rw (match-type)? | |||
| | | | | +--rw match-flow | | | | +--:(match-flow) | |||
| | | | | +--rw dscp? inet:dscp | | | | | +--rw match-flow | |||
| | | | | +--rw dot1q? uint16 | | | | | +--rw dscp? inet:dscp | |||
| | | | | +--rw pcp? uint8 | | | | | +--rw dot1q? uint16 | |||
| | | | | +--rw src-mac-address? | | | | | +--rw pcp? uint8 | |||
| | | | | | yang:mac-address | | | | | +--rw src-mac-address? | |||
| | | | | +--rw dst-mac-address? | | | | | | yang:mac-address | |||
| | | | | | yang:mac-address | | | | | +--rw dst-mac-address? | |||
| | | | | +--rw color-type? | | | | | | yang:mac-address | |||
| | | | | | identityref | | | | | +--rw color-type? | |||
| | | | | +--rw any? empty | | | | | | identityref | |||
| | | | +--:(match-application) | | | | | +--rw any? empty | |||
| | | | +--rw match-application? | | | | +--:(match-application) | |||
| | | | identityref | | | | +--rw match-application? | |||
| | | +--rw target-class-id? string | | | | identityref | |||
| | +--rw qos-profile | | | +--rw target-class-id? string | |||
| | +--rw qos-profile* [profile] | | +--rw qos-profile | |||
| | +--rw profile leafref | | +--rw qos-profile* [profile] | |||
| | +--rw direction? identityref | | +--rw profile leafref | |||
| ... ]]></artwork> | | +--rw direction? identityref | |||
| </figure></t> | ... | |||
| ]]></sourcecode> | ||||
| <t hangText="'mac-policies':">Lists a set of MAC-related | </figure> | |||
| policies such as MAC ACLs. Similar to <xref | </dd> | |||
| target="RFC8519"></xref>, an ACL match can be based upon source | <dt>'mac-policies':</dt> | |||
| <dd> | ||||
| <t>Lists a set of MAC-related | ||||
| policies such as MAC ACLs. Similar to <xref target="RFC8519" forma | ||||
| t="default"/>, an ACL match can be based upon source | ||||
| MAC address, source MAC address mask, destination MAC address, | MAC address, source MAC address mask, destination MAC address, | |||
| destination MAC address mask, or a combination thereof.<vspace | destination MAC address mask, or a combination thereof.</t> | |||
| blankLines="1" />A data frame that matches an ACL can be | <t>A data frame that matches an ACL can be | |||
| dropped, flooded, or trigger an alarm. A rate-limit policy can | dropped, be flooded, or trigger an alarm. A rate-limit policy can | |||
| be defined for handling frames that match an ACL entry with | be defined for handling frames that match an ACL entry with | |||
| 'flood' action. <vspace blankLines="1" />When | 'flood' action. </t> | |||
| <t>When | ||||
| 'mac-loop-prevention' or 'mac-addr-limit' data nodes are | 'mac-loop-prevention' or 'mac-addr-limit' data nodes are | |||
| provided, they take precedence over the ones inlcuded in the | provided, they take precedence over the ones included in the | |||
| 'global-parameters-profile' at the VPN service or VPN node | 'global-parameters-profile' at the VPN service or VPN node | |||
| levels.<figure align="center" anchor="mac-policies-tree" | levels.</t> | |||
| title="MAC Policies Subtree"> | <figure anchor="mac-policies-tree"> | |||
| <artwork align="center"><![CDATA[ +--rw | <name>MAC Policies Subtree</name> | |||
| service | <sourcecode type="yangtree"><![CDATA[ +--rw | |||
| ... | service | |||
| +--rw mac-policies | ... | |||
| | +--rw access-control-list* [name] | +--rw mac-policies | |||
| | | +--rw name string | | +--rw access-control-list* [name] | |||
| | | +--rw src-mac-address* | | | +--rw name string | |||
| | | | yang:mac-address | | | +--rw src-mac-address* | |||
| | | +--rw src-mac-address-mask* | | | | yang:mac-address | |||
| | | | yang:mac-address | | | +--rw src-mac-address-mask* | |||
| | | +--rw dst-mac-address* | | | | yang:mac-address | |||
| | | | yang:mac-address | | | +--rw dst-mac-address* | |||
| | | +--rw dst-mac-address-mask* | | | | yang:mac-address | |||
| | | | yang:mac-address | | | +--rw dst-mac-address-mask* | |||
| | | +--rw action? identityref | | | | yang:mac-address | |||
| | | +--rw rate-limit? decimal64 | | | +--rw action? identityref | |||
| | +--rw mac-loop-prevention | | | +--rw rate-limit? decimal64 | |||
| | | +--rw window? uint32 | | +--rw mac-loop-prevention | |||
| | | +--rw frequency? uint32 | | | +--rw window? uint32 | |||
| | | +--rw retry-timer? uint32 | | | +--rw frequency? uint32 | |||
| | | +--rw protection-type? identityref | | | +--rw retry-timer? uint32 | |||
| | +--rw mac-addr-limit | | | +--rw protection-type? identityref | |||
| | +--rw limit-number? uint16 | | +--rw mac-addr-limit | |||
| | +--rw time-interval? uint32 | | +--rw limit-number? uint16 | |||
| | +--rw action? identityref | | +--rw time-interval? uint32 | |||
| ... ]]></artwork> | | +--rw action? identityref | |||
| </figure></t> | ... ]]></sourcecode> | |||
| </figure> | ||||
| <t hangText="'broadcast-unknown-unicast-multicast':">Defines the | </dd> | |||
| <dt>'broadcast-unknown-unicast-multicast':</dt> | ||||
| <dd> | ||||
| <t>Defines the | ||||
| type of site in the customer multicast service topology: source, | type of site in the customer multicast service topology: source, | |||
| receiver, or both. It is also used to define multicast | receiver, or both. It is also used to define multicast | |||
| group-to-port mappings. <figure align="center" anchor="bum_tree" | group-to-port mappings. </t> | |||
| title="BUM Subtree"> | <figure anchor="bum_tree"> | |||
| <artwork align="center"><![CDATA[ +--rw | <name>BUM Subtree</name> | |||
| service | <sourcecode type="yangtree"><![CDATA[ | |||
| ... | +--rw service | |||
| +--rw broadcast-unknown-unicast-multicast | ... | |||
| +--rw multicast-site-type? | +--rw broadcast-unknown-unicast-multicast | |||
| | enumeration | +--rw multicast-site-type? | |||
| +--rw multicast-gp-address-mapping* [id] | | enumeration | |||
| | +--rw id uint16 | +--rw multicast-gp-address-mapping* [id] | |||
| | +--rw vlan-id uint32 | | +--rw id uint16 | |||
| | +--rw mac-gp-address | | +--rw vlan-id uint32 | |||
| | | yang:mac-address | | +--rw mac-gp-address | |||
| | +--rw port-lag-number? uint32 | | | yang:mac-address | |||
| +--rw bum-overall-rate? uint64 ]]></art | | +--rw port-lag-number? uint32 | |||
| work> | +--rw bum-overall-rate? uint64 | |||
| </figure></t> | ]]></sourcecode> | |||
| </list></t> | </figure> | |||
| </dd> | ||||
| </dl> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <name>YANG Modules</name> | ||||
| <t/> | ||||
| <section anchor="iana-bgp" numbered="true" toc="default"> | ||||
| <name>IANA-Maintained Module for BGP Layer 2 Encapsulation Types</name> | ||||
| <section title="YANG Modules"> | <t>The "iana-bgp-l2-encaps" YANG module matches the "BGP Layer 2 Encapsu | |||
| <t></t> | lation Types" registry <xref target="IANA-BGP-L2" format="default"/>.</t> | |||
| <t>This module references <xref target="RFC3032" format="default"/>, <xr | ||||
| <section anchor="iana-bgp" | ef target="RFC4446" format="default"/>, <xref target="RFC4448" format="default"/ | |||
| title="IANA-Maintained Module for BGP Layer 2 Encapsulation Types | >, <xref target="RFC4553" format="default"/>, <xref target="RFC4618" format="def | |||
| "> | ault"/>, <xref target="RFC4619" format="default"/>, <xref target="RFC4717" forma | |||
| <t>The "iana-bgp-l2-encaps" YANG module echoes the registry available | t="default"/>, <xref target="RFC4761" format="default"/>, <xref target="RFC4816" | |||
| at <xref target="IANA-BGP-L2"></xref>.</t> | format="default"/>, <xref target="RFC4842" format="default"/>, and <xref target | |||
| ="RFC5086" format="default"/>.</t> | ||||
| <t>This module references <xref target="RFC3032"></xref>, <xref | ||||
| target="RFC4446"></xref>, <xref target="RFC4448"></xref>, <xref | ||||
| target="RFC4553"></xref>, <xref target="RFC4618"></xref>, <xref | ||||
| target="RFC4619"></xref>, <xref target="RFC4717"></xref>, <xref | ||||
| target="RFC4761"></xref>, <xref target="RFC4816"></xref>, <xref | ||||
| target="RFC4842"></xref>, and <xref target="RFC5086"></xref>.</t> | ||||
| <t><figure align="center"> | <sourcecode name="iana-bgp-l2-encaps@2022-09-20.yang" type="yang" markers | |||
| <artwork><![CDATA[<CODE BEGINS>file "iana-bgp-l2-encaps@2021-07-05.y | ="true"><![CDATA[ | |||
| ang" | ||||
| module iana-bgp-l2-encaps { | module iana-bgp-l2-encaps { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:iana-bgp-l2-encaps"; | namespace "urn:ietf:params:xml:ns:yang:iana-bgp-l2-encaps"; | |||
| prefix iana-bgp-l2-encaps; | prefix iana-bgp-l2-encaps; | |||
| organization | organization | |||
| "IANA"; | "IANA"; | |||
| contact | contact | |||
| "Internet Assigned Numbers Authority | "Internet Assigned Numbers Authority | |||
| Postal: ICANN | Postal: ICANN | |||
| 12025 Waterfront Drive, Suite 300 | 12025 Waterfront Drive, Suite 300 | |||
| Los Angeles, CA 90094-2536 | Los Angeles, CA 90094-2536 | |||
| United States of America | United States of America | |||
| Tel: +1 310 301 5800 | Tel: +1 310 301 5800 | |||
| <mailto:iana@iana.org>"; | <mailto:iana@iana.org>"; | |||
| description | description | |||
| "This module contains a collection of IANA-maintained YANG | "This YANG module contains a collection of IANA-maintained YANG | |||
| data types that are used for referring to BGP Layer 2 | data types that are used for referring to BGP Layer 2 | |||
| encapsulation types. | encapsulation types. | |||
| Copyright (c) 2022 IETF Trust and the persons identified as | Copyright (c) 2022 IETF Trust and the persons identified as | |||
| authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
| Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
| without modification, is permitted pursuant to, and subject | without modification, is permitted pursuant to, and subject | |||
| to the license terms contained in, the Revised BSD License | to the license terms contained in, the Revised BSD License | |||
| set forth in Section 4.c of the IETF Trust's Legal Provisions | set forth in Section 4.c of the IETF Trust's Legal Provisions | |||
| Relating to IETF Documents | Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
| This version of this YANG module is part of RFC XXXX; see | This version of this YANG module is part of RFC 9291; see | |||
| the RFC itself for full legal notices."; | the RFC itself for full legal notices."; | |||
| revision 2021-07-05 { | revision 2022-09-20 { | |||
| description | description | |||
| "First revision."; | "First revision."; | |||
| reference | reference | |||
| "RFC XXXX: A YANG Network Data Model for Layer 2 VPNs."; | "RFC 9291: A YANG Network Data Model for Layer 2 VPNs."; | |||
| } | } | |||
| identity bgp-l2-encaps-type { | identity bgp-l2-encaps-type { | |||
| description | description | |||
| "Base BGP Layer 2 encapsulation type."; | "Base BGP Layer 2 encapsulation type."; | |||
| reference | reference | |||
| "RFC 6624: Layer 2 Virtual Private Networks Using BGP for | "RFC 6624: Layer 2 Virtual Private Networks Using BGP for | |||
| Auto-Discovery and Signaling"; | Auto-Discovery and Signaling"; | |||
| } | } | |||
| skipping to change at line 2545 ¶ | skipping to change at line 2381 ¶ | |||
| identity sf { | identity sf { | |||
| base bgp-l2-encaps-type; | base bgp-l2-encaps-type; | |||
| description | description | |||
| "DS1 (SF) Nx64kbit/s with CAS using Structure-aware."; | "DS1 (SF) Nx64kbit/s with CAS using Structure-aware."; | |||
| reference | reference | |||
| "RFC 5086: Structure-Aware Time Division Multiplexed (TDM) | "RFC 5086: Structure-Aware Time Division Multiplexed (TDM) | |||
| Circuit Emulation Service over Packet Switched | Circuit Emulation Service over Packet Switched | |||
| Network (CESoPSN)"; | Network (CESoPSN)"; | |||
| } | } | |||
| } | } | |||
| <CODE ENDS>]]></artwork> | ]]></sourcecode> | |||
| </figure></t> | ||||
| </section> | </section> | |||
| <section anchor="iana-pw" | <section anchor="iana-pw" numbered="true" toc="default"> | |||
| title="IANA-Maintained Module for Pseudowire Types"> | <name>IANA-Maintained Module for Pseudowire Types</name> | |||
| <t>The initial version of the "iana-pseudowire-types" YANG module | <t>The initial version of the "iana-pseudowire-types" YANG module | |||
| echoes the registry available at <xref | matches the "MPLS Pseudowire Types Registry" <xref target="IANA-PW-TYPES | |||
| target="IANA-PW-Types"></xref>.</t> | " format="default"/>.</t> | |||
| <t>This module references <xref target="MFA" format="default"/>, <xref t | ||||
| arget="RFC2507" format="default"/>, <xref target="RFC2508" format="default"/>, < | ||||
| xref target="RFC3032" format="default"/>, <xref target="RFC3545" format="default | ||||
| "/>, <xref target="RFC4448" format="default"/>, <xref target="RFC4553" format="d | ||||
| efault"/>, <xref target="RFC4618" format="default"/>, <xref target="RFC4619" | ||||
| <t>This module references <xref target="MFA"></xref>, <xref | format="default"/>, <xref target="RFC4717" format="default"/>, <xref targ | |||
| target="RFC2507"></xref>, <xref target="RFC2508"></xref>, <xref | et="RFC4842" format="default"/>, <xref target="RFC4863" format="default"/>, <xre | |||
| target="RFC3032"></xref>, <xref target="RFC3545"></xref>, <xref | f target="RFC4901" format="default"/>, <xref target="RFC5086" format="default"/> | |||
| target="RFC4448"></xref>, <xref target="RFC4618"></xref>, <xref | , <xref target="RFC5087" format="default"/>, <xref target="RFC5143" format="defa | |||
| target="RFC4619"></xref>, <xref target="RFC4717"></xref>, <xref | ult"/>, <xref target="RFC5795" format="default"/>, and <xref target="RFC6307" fo | |||
| target="RFC4842"></xref>, <xref target="RFC4863"></xref>, <xref | rmat="default"/>.</t> | |||
| target="RFC4901"></xref>, <xref target="RFC5086"></xref>, <xref | ||||
| target="RFC5087"></xref>, <xref target="RFC5143"></xref>, <xref | ||||
| target="RFC5795"></xref>, and <xref target="RFC6307"></xref>.</t> | ||||
| <t><figure align="center"> | <sourcecode name="iana-pseudowire-types@2022-09-20.yang" type="yang" mar | |||
| <artwork><![CDATA[<CODE BEGINS>file "iana-pseudowire-types@2021-07-0 | kers="true"><![CDATA[ | |||
| 5.yang" | ||||
| module iana-pseudowire-types { | module iana-pseudowire-types { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:iana-pseudowire-types"; | namespace "urn:ietf:params:xml:ns:yang:iana-pseudowire-types"; | |||
| prefix iana-pw-types; | prefix iana-pw-types; | |||
| organization | organization | |||
| "IANA"; | "IANA"; | |||
| contact | contact | |||
| "Internet Assigned Numbers Authority | "Internet Assigned Numbers Authority | |||
| skipping to change at line 2597 ¶ | skipping to change at line 2423 ¶ | |||
| Copyright (c) 2022 IETF Trust and the persons identified as | Copyright (c) 2022 IETF Trust and the persons identified as | |||
| authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
| Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
| without modification, is permitted pursuant to, and subject | without modification, is permitted pursuant to, and subject | |||
| to the license terms contained in, the Revised BSD License | to the license terms contained in, the Revised BSD License | |||
| set forth in Section 4.c of the IETF Trust's Legal Provisions | set forth in Section 4.c of the IETF Trust's Legal Provisions | |||
| Relating to IETF Documents | Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
| This version of this YANG module is part of RFC XXXX; see | This version of this YANG module is part of RFC 9291; see | |||
| the RFC itself for full legal notices."; | the RFC itself for full legal notices."; | |||
| revision 2021-07-05 { | revision 2022-09-20 { | |||
| description | description | |||
| "First revision."; | "First revision."; | |||
| reference | reference | |||
| "RFC XXXX: A YANG Network Data Model for Layer 2 VPNs."; | "RFC RFC 9291: A YANG Network Data Model for Layer 2 VPNs."; | |||
| } | } | |||
| identity iana-pw-types { | identity iana-pw-types { | |||
| description | description | |||
| "Base Pseudowire Layer 2 encapsulation type."; | "Base Pseudowire Layer 2 encapsulation type."; | |||
| } | } | |||
| identity frame-relay { | identity frame-relay { | |||
| base iana-pw-types; | base iana-pw-types; | |||
| description | description | |||
| skipping to change at line 2918 ¶ | skipping to change at line 2744 ¶ | |||
| } | } | |||
| identity wildcard { | identity wildcard { | |||
| base iana-pw-types; | base iana-pw-types; | |||
| description | description | |||
| "Wildcard."; | "Wildcard."; | |||
| reference | reference | |||
| "RFC 4863: Wildcard Pseudowire Type"; | "RFC 4863: Wildcard Pseudowire Type"; | |||
| } | } | |||
| } | } | |||
| <CODE ENDS>]]></artwork> | ]]></sourcecode> | |||
| </figure></t> | ||||
| </section> | </section> | |||
| <section anchor="es-yang" title="Ethernet Segments"> | <section anchor="es-yang" numbered="true" toc="default"> | |||
| <t>The "ietf-ethernet-segment" YANG module uses types defined in <xref | <name>Ethernet Segments</name> | |||
| target="RFC6991"></xref>.</t> | <t>The "ietf-ethernet-segment" YANG module uses types defined in <xref t | |||
| arget="RFC6991" format="default"/>.</t> | ||||
| <t><figure> | <sourcecode name="ietf-ethernet-segment@2022-09-20.yang" type="yang" mar | |||
| <artwork><![CDATA[<CODE BEGINS>file "ietf-ethernet-segment@2022-05-2 | kers="true"><![CDATA[ | |||
| 5.yang" | ||||
| module ietf-ethernet-segment { | module ietf-ethernet-segment { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-ethernet-segment"; | namespace "urn:ietf:params:xml:ns:yang:ietf-ethernet-segment"; | |||
| prefix l2vpn-es; | prefix l2vpn-es; | |||
| import ietf-yang-types { | import ietf-yang-types { | |||
| prefix yang; | prefix yang; | |||
| reference | reference | |||
| "RFC 6991: Common YANG Data Types, Section 3"; | "RFC 6991: Common YANG Data Types (see Section 3)"; | |||
| } | } | |||
| organization | organization | |||
| "IETF OPSA (Operations and Management Area) Working Group"; | "IETF OPSA (Operations and Management Area) Working Group"; | |||
| contact | contact | |||
| "WG Web: <https://datatracker.ietf.org/wg/opsawg/> | "WG Web: <https://datatracker.ietf.org/wg/opsawg/> | |||
| WG List: <mailto:opsawg@ietf.org> | WG List: <mailto:opsawg@ietf.org> | |||
| Editor: Mohamed Boucadair | Editor: Mohamed Boucadair | |||
| <mailto:mohamed.boucadair@orange.com> | <mailto:mohamed.boucadair@orange.com> | |||
| skipping to change at line 2947 ¶ | skipping to change at line 2770 ¶ | |||
| } | } | |||
| organization | organization | |||
| "IETF OPSA (Operations and Management Area) Working Group"; | "IETF OPSA (Operations and Management Area) Working Group"; | |||
| contact | contact | |||
| "WG Web: <https://datatracker.ietf.org/wg/opsawg/> | "WG Web: <https://datatracker.ietf.org/wg/opsawg/> | |||
| WG List: <mailto:opsawg@ietf.org> | WG List: <mailto:opsawg@ietf.org> | |||
| Editor: Mohamed Boucadair | Editor: Mohamed Boucadair | |||
| <mailto:mohamed.boucadair@orange.com> | <mailto:mohamed.boucadair@orange.com> | |||
| Editor: Samier Barguil | Editor: Samier Barguil | |||
| <mailto:samier.barguilgiraldo.ext@telefonica.com> | <mailto:samier.barguilgiraldo.ext@telefonica.com> | |||
| Author: Oscar Gonzalez de Dios | Author: Oscar Gonzalez de Dios | |||
| <mailto:oscar.gonzalezdedios@telefonica.com>"; | <mailto:oscar.gonzalezdedios@telefonica.com>"; | |||
| description | description | |||
| "This YANG module defines a model for Ethernet Segments. | "This YANG module defines a model for Ethernet Segments. | |||
| Copyright (c) 2021 IETF Trust and the persons identified as | Copyright (c) 2022 IETF Trust and the persons identified as | |||
| authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
| Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
| without modification, is permitted pursuant to, and subject | without modification, is permitted pursuant to, and subject | |||
| to the license terms contained in, the Revised BSD License | to the license terms contained in, the Revised BSD License | |||
| set forth in Section 4.c of the IETF Trust's Legal Provisions | set forth in Section 4.c of the IETF Trust's Legal Provisions | |||
| Relating to IETF Documents | Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
| This version of this YANG module is part of RFC XXXX; see | This version of this YANG module is part of RFC 9291; see | |||
| the RFC itself for full legal notices."; | the RFC itself for full legal notices."; | |||
| revision 2022-05-25 { | revision 2022-09-20 { | |||
| description | description | |||
| "Initial version."; | "Initial version."; | |||
| reference | reference | |||
| "RFC XXXX: A YANG Network Data Model for Layer 2 VPNs."; | "RFC 9291: A YANG Network Data Model for Layer 2 VPNs."; | |||
| } | } | |||
| /* Typedefs */ | /* Typedefs */ | |||
| typedef es-ref { | typedef es-ref { | |||
| type leafref { | type leafref { | |||
| path "/l2vpn-es:ethernet-segments/l2vpn-es:ethernet-segment" | path "/l2vpn-es:ethernet-segments/l2vpn-es:ethernet-segment" | |||
| + "/l2vpn-es:name"; | + "/l2vpn-es:name"; | |||
| } | } | |||
| description | description | |||
| "Defines a type for referencing an Ethernet segment in | "Defines a type for referencing an Ethernet segment in | |||
| other modules."; | other modules."; | |||
| } | } | |||
| /* Identities */ | /* Identities */ | |||
| identity esi-type { | identity esi-type { | |||
| description | description | |||
| "T-(Ethernet Segment Identifier (ESI) Type) is a 1-octet field | "T (Ethernet Segment Identifier (ESI) Type) is a 1-octet field | |||
| (most significant octet) that specifies the format of the | (most significant octet) that specifies the format of the | |||
| remaining 9 octets (ESI Value)."; | remaining 9 octets (ESI Value)."; | |||
| reference | reference | |||
| "RFC 7432: BGP MPLS-Based Ethernet VPN, Section 5"; | "RFC 7432: BGP MPLS-Based Ethernet VPN, Section 5"; | |||
| } | } | |||
| identity esi-type-0-operator { | identity esi-type-0-operator { | |||
| base esi-type; | base esi-type; | |||
| description | description | |||
| "This type indicates an arbitrary 9-octet ESI value, | "This type indicates an arbitrary 9-octet ESI value, | |||
| which is managed and configured by the operator."; | which is managed and configured by the operator."; | |||
| } | } | |||
| identity esi-type-1-lacp { | identity esi-type-1-lacp { | |||
| base esi-type; | base esi-type; | |||
| description | description | |||
| "When IEEE 802.1AX Link Aggregation Control Protocol (LACP) | "When the IEEE 802.1AX Link Aggregation Control Protocol (LACP) | |||
| is used between the Provider Edge (PE) and Customer Edge (CE) | is used between the Provider Edge (PE) and Customer Edge (CE) | |||
| devices, this ESI type indicates an auto-generated ESI value | devices, this ESI type indicates an auto-generated ESI value | |||
| determined from LACP."; | determined from LACP."; | |||
| reference | reference | |||
| "IEEE Std. 802.1AX: Link Aggregation"; | "IEEE Std 802.1AX: Link Aggregation"; | |||
| } | } | |||
| identity esi-type-2-bridge { | identity esi-type-2-bridge { | |||
| base esi-type; | base esi-type; | |||
| description | description | |||
| "The ESI value is auto-generated and determined based | "The ESI value is auto-generated and determined based | |||
| on the Layer 2 bridge protocol."; | on the Layer 2 bridge protocol."; | |||
| } | } | |||
| identity esi-type-3-mac { | identity esi-type-3-mac { | |||
| skipping to change at line 3073 ¶ | skipping to change at line 2899 ¶ | |||
| description | description | |||
| "The highest random weight (HRW) method."; | "The highest random weight (HRW) method."; | |||
| reference | reference | |||
| "RFC 8584: Framework for Ethernet VPN Designated | "RFC 8584: Framework for Ethernet VPN Designated | |||
| Forwarder Election Extensibility, Section 3"; | Forwarder Election Extensibility, Section 3"; | |||
| } | } | |||
| identity preference { | identity preference { | |||
| base df-election-methods; | base df-election-methods; | |||
| description | description | |||
| "The preference based method. PEs are assigned with | "The preference-based method. PEs are assigned with | |||
| preferences to become the DF in the Ethernet Segment (ES). | preferences to become the DF in the Ethernet Segment (ES). | |||
| The exact preference-based algorithm (e.g., lowest-preference | The exact preference-based algorithm (e.g., lowest-preference | |||
| algorithm, highest-preference algorithm) to use is | algorithm or highest-preference algorithm) to use is | |||
| signaled at the control plane."; | signaled at the control plane."; | |||
| } | } | |||
| identity es-redundancy-mode { | identity es-redundancy-mode { | |||
| description | description | |||
| "Base identity for ES redundancy modes."; | "Base identity for ES redundancy modes."; | |||
| } | } | |||
| identity single-active { | identity single-active { | |||
| base es-redundancy-mode; | base es-redundancy-mode; | |||
| skipping to change at line 3160 ¶ | skipping to change at line 2986 ¶ | |||
| } | } | |||
| } | } | |||
| case auto-assigned { | case auto-assigned { | |||
| description | description | |||
| "The ESI is auto-assigned."; | "The ESI is auto-assigned."; | |||
| container esi-auto { | container esi-auto { | |||
| description | description | |||
| "The ESI is auto-assigned."; | "The ESI is auto-assigned."; | |||
| choice auto-mode { | choice auto-mode { | |||
| description | description | |||
| "Indicates the auto-assignment mode. ESI can be | "Indicates the auto-assignment mode. ESI can be | |||
| automatically assigned either with or without | automatically assigned either with or without | |||
| indicating a pool from which the ESI should be | indicating a pool from which the ESI should be | |||
| taken. | taken. | |||
| For both cases, the server will auto-assign an | For both cases, the server will auto-assign an | |||
| ESI value 'auto-assigned-ESI' and use that value | ESI value 'auto-assigned-ESI' and use that value | |||
| operationally."; | operationally."; | |||
| case from-pool { | case from-pool { | |||
| leaf esi-pool-name { | leaf esi-pool-name { | |||
| type string; | type string; | |||
| skipping to change at line 3230 ¶ | skipping to change at line 3056 ¶ | |||
| + "'preference')" { | + "'preference')" { | |||
| description | description | |||
| "The revertive value is only applicable | "The revertive value is only applicable | |||
| to the preference method."; | to the preference method."; | |||
| } | } | |||
| type boolean; | type boolean; | |||
| default "true"; | default "true"; | |||
| description | description | |||
| "The default behavior is that the DF election | "The default behavior is that the DF election | |||
| procedure is triggered upon PE failures following | procedure is triggered upon PE failures following | |||
| configured preference values. Such a mode is called | configured preference values. Such a mode is called | |||
| the revertive mode. This mode may not be suitable in | the 'revertive' mode. This mode may not be suitable in | |||
| some scenarios where, e.g., an operator may want to | some scenarios where, e.g., an operator may want to | |||
| maintain the new DF even if the former DF recovers. | maintain the new DF even if the former DF recovers. | |||
| Such a mode is called the 'non-revertive' mode. | Such a mode is called the 'non-revertive' mode. | |||
| The non-revertive mode can be configured by | The non-revertive mode can be configured by | |||
| setting 'revertive' leaf to 'false'."; | setting 'revertive' leaf to 'false'."; | |||
| reference | reference | |||
| "RFC 8584: Framework for Ethernet VPN Designated | "RFC 8584: Framework for Ethernet VPN Designated | |||
| Forwarder Election Extensibility, | Forwarder Election Extensibility, | |||
| Section 1.3.2"; | Section 1.3.2"; | |||
| } | } | |||
| leaf election-wait-time { | leaf election-wait-time { | |||
| type uint32; | type uint32; | |||
| units "seconds"; | units "seconds"; | |||
| default "3"; | default "3"; | |||
| description | description | |||
| "Election wait timer."; | "Designated Forwarder Wait timer."; | |||
| reference | reference | |||
| "RFC 8584: Framework for Ethernet VPN Designated | "RFC 8584: Framework for Ethernet VPN Designated | |||
| Forwarder Election Extensibility"; | Forwarder Election Extensibility"; | |||
| } | } | |||
| } | } | |||
| leaf split-horizon-filtering { | leaf split-horizon-filtering { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Controls split-horizon filtering. It is enabled | "Controls split-horizon filtering. It is enabled | |||
| when set to 'true'. | when set to 'true'. | |||
| In order to achieve split-horizon filtering, every | In order to achieve split-horizon filtering, every | |||
| Broadcast, unknown unicast, or multicast (BUM) | Broadcast, Unknown Unicast, or Multicast (BUM) | |||
| packet originating from a non-DF PE is encapsulated | packet originating from a non-DF PE is encapsulated | |||
| with an MPLS label that identifies the origin ES."; | with an MPLS label that identifies the origin ES."; | |||
| reference | reference | |||
| "RFC 7432: BGP MPLS-Based Ethernet VPN, Section 8.3"; | "RFC 7432: BGP MPLS-Based Ethernet VPN, Section 8.3"; | |||
| } | } | |||
| container pbb { | container pbb { | |||
| description | description | |||
| "Provider Backbone Bridging (PBB) parameters ."; | "Provider Backbone Bridging (PBB) parameters ."; | |||
| reference | reference | |||
| "IEEE 802.1ah: Provider Backbone Bridge"; | "IEEE 802.1ah: Provider Backbone Bridges"; | |||
| leaf backbone-src-mac { | leaf backbone-src-mac { | |||
| type yang:mac-address; | type yang:mac-address; | |||
| description | description | |||
| "The PEs connected to the same CE must share the | "The PEs connected to the same CE must share the | |||
| same Provider Backbone (B-MAC) address in | same Provider Backbone (B-MAC) address in | |||
| All-Active mode."; | All-Active mode."; | |||
| reference | reference | |||
| "RFC 7623: Provider Backbone Bridging Combined with | "RFC 7623: Provider Backbone Bridging Combined with | |||
| Ethernet VPN (PBB-EVPN), Section 6.2.1.1"; | Ethernet VPN (PBB-EVPN), Section 6.2.1.1"; | |||
| } | } | |||
| skipping to change at line 3302 ¶ | skipping to change at line 3128 ¶ | |||
| } | } | |||
| leaf interface-id { | leaf interface-id { | |||
| type string; | type string; | |||
| description | description | |||
| "Identifier of a node interface."; | "Identifier of a node interface."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | ]]></sourcecode> | |||
| ]]></artwork> | ||||
| </figure></t> | ||||
| </section> | </section> | |||
| <section anchor="YANG_module" numbered="true" toc="default"> | ||||
| <name>L2NM</name> | ||||
| <t>The "ietf-l2vpn-ntw" YANG module uses types defined in <xref target=" | ||||
| RFC6991" format="default"/>, <xref target="RFC9181" format="default"/>, <xref ta | ||||
| rget="RFC8294" format="default"/>, and <xref target="IEEE802.1Qcp" format="defau | ||||
| lt"/>.</t> | ||||
| <section anchor="YANG_module" title="L2NM"> | <sourcecode name="ietf-l2vpn-ntw@2022-09-20.yang" type="yang" markers="true"><![ | |||
| <t>The "ietf-l2vpn-ntw" YANG module uses types defined in <xref | CDATA[ | |||
| target="RFC6991"></xref>, <xref target="RFC9181"></xref>, <xref | ||||
| target="RFC8294"></xref>, and <xref | ||||
| target="IEEE802.1Qcp-2018"></xref>.</t> | ||||
| <figure align="center"> | ||||
| <artwork align="center"><![CDATA[<CODE BEGINS>file "ietf-l2vpn-ntw@202 | ||||
| 2-05-25.yang" | ||||
| module ietf-l2vpn-ntw { | module ietf-l2vpn-ntw { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-l2vpn-ntw"; | namespace "urn:ietf:params:xml:ns:yang:ietf-l2vpn-ntw"; | |||
| prefix l2vpn-ntw; | prefix l2vpn-ntw; | |||
| import ietf-inet-types { | import ietf-inet-types { | |||
| prefix inet; | prefix inet; | |||
| reference | reference | |||
| "RFC 6991: Common YANG Data Types, Section 4"; | "RFC 6991: Common YANG Data Types, Section 4"; | |||
| } | } | |||
| skipping to change at line 3339 ¶ | skipping to change at line 3159 ¶ | |||
| } | } | |||
| import ietf-vpn-common { | import ietf-vpn-common { | |||
| prefix vpn-common; | prefix vpn-common; | |||
| reference | reference | |||
| "RFC 9181: A Common YANG for Data Model for Layer 2 | "RFC 9181: A Common YANG for Data Model for Layer 2 | |||
| and Layer 3 VPNs"; | and Layer 3 VPNs"; | |||
| } | } | |||
| import iana-bgp-l2-encaps { | import iana-bgp-l2-encaps { | |||
| prefix iana-bgp-l2-encaps; | prefix iana-bgp-l2-encaps; | |||
| reference | reference | |||
| "RFC XXXX: A YANG Network Data Model for Layer 2 VPNs."; | "RFC 9291: A YANG Network Data Model for Layer 2 VPNs."; | |||
| } | } | |||
| import iana-pseudowire-types { | import iana-pseudowire-types { | |||
| prefix iana-pw-types; | prefix iana-pw-types; | |||
| reference | reference | |||
| "RFC XXXX: A YANG Network Data Model for Layer 2 VPNs."; | "RFC 9291: A YANG Network Data Model for Layer 2 VPNs."; | |||
| } | } | |||
| import ietf-ethernet-segment { | import ietf-ethernet-segment { | |||
| prefix l2vpn-es; | prefix l2vpn-es; | |||
| reference | reference | |||
| "RFC XXXX: A YANG Network Data Model for Layer 2 VPNs."; | "RFC 9291: A YANG Network Data Model for Layer 2 VPNs."; | |||
| } | } | |||
| import ietf-routing-types { | import ietf-routing-types { | |||
| prefix rt-types; | prefix rt-types; | |||
| reference | reference | |||
| "RFC 8294: Common YANG Data Types for the Routing Area"; | "RFC 8294: Common YANG Data Types for the Routing Area"; | |||
| } | } | |||
| import ieee802-dot1q-types { | import ieee802-dot1q-types { | |||
| prefix dot1q-types; | prefix dot1q-types; | |||
| reference | reference | |||
| "IEEE Std 802.1Qcp-2018: Bridges and Bridged Networks - | "IEEE Std 802.1Qcp: Bridges and Bridged Networks-- | |||
| Amendment: YANG Data Model"; | Amendment 30: YANG Data Model"; | |||
| } | } | |||
| organization | organization | |||
| "IETF OPSA (Operations and Management Area) Working Group"; | "IETF OPSA (Operations and Management Area) Working Group"; | |||
| contact | contact | |||
| "WG Web: <https://datatracker.ietf.org/wg/opsawg/> | "WG Web: <https://datatracker.ietf.org/wg/opsawg/> | |||
| WG List: <mailto:opsawg@ietf.org> | WG List: <mailto:opsawg@ietf.org> | |||
| Editor: Mohamed Boucadair | Editor: Mohamed Boucadair | |||
| <mailto:mohamed.boucadair@orange.com> | <mailto:mohamed.boucadair@orange.com> | |||
| skipping to change at line 3371 ¶ | skipping to change at line 3191 ¶ | |||
| } | } | |||
| organization | organization | |||
| "IETF OPSA (Operations and Management Area) Working Group"; | "IETF OPSA (Operations and Management Area) Working Group"; | |||
| contact | contact | |||
| "WG Web: <https://datatracker.ietf.org/wg/opsawg/> | "WG Web: <https://datatracker.ietf.org/wg/opsawg/> | |||
| WG List: <mailto:opsawg@ietf.org> | WG List: <mailto:opsawg@ietf.org> | |||
| Editor: Mohamed Boucadair | Editor: Mohamed Boucadair | |||
| <mailto:mohamed.boucadair@orange.com> | <mailto:mohamed.boucadair@orange.com> | |||
| Editor: Samier Barguil | Editor: Samier Barguil | |||
| <mailto:samier.barguilgiraldo.ext@telefonica.com> | <mailto:samier.barguilgiraldo.ext@telefonica.com> | |||
| Author: Oscar Gonzalez de Dios | Author: Oscar Gonzalez de Dios | |||
| <mailto:oscar.gonzalezdedios@telefonica.com>"; | <mailto:oscar.gonzalezdedios@telefonica.com>"; | |||
| description | description | |||
| "This YANG module defines a network model for Layer 2 VPN | "This YANG module defines a network model for Layer 2 VPN | |||
| services. | services. | |||
| Copyright (c) 2022 IETF Trust and the persons identified as | Copyright (c) 2022 IETF Trust and the persons identified as | |||
| authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
| Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
| without modification, is permitted pursuant to, and subject | without modification, is permitted pursuant to, and subject | |||
| to the license terms contained in, the Revised BSD License | to the license terms contained in, the Revised BSD License | |||
| set forth in Section 4.c of the IETF Trust's Legal Provisions | set forth in Section 4.c of the IETF Trust's Legal Provisions | |||
| Relating to IETF Documents | Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
| This version of this YANG module is part of RFC XXXX; see | This version of this YANG module is part of RFC 9291; see | |||
| the RFC itself for full legal notices."; | the RFC itself for full legal notices."; | |||
| revision 2022-05-25 { | revision 2022-09-20 { | |||
| description | description | |||
| "Initial version."; | "Initial version."; | |||
| reference | reference | |||
| "RFC XXXX: A YANG Network Data Model for Layer 2 VPNs."; | "RFC 9291: A YANG Network Data Model for Layer 2 VPNs."; | |||
| } | } | |||
| /* Features */ | /* Features */ | |||
| feature oam-3ah { | feature oam-3ah { | |||
| description | description | |||
| "Indicates the support of OAM 802.3ah."; | "Indicates the support of OAM 802.3ah."; | |||
| reference | reference | |||
| "IEEE Std 802.3ah: Media Access Control Parameters, Physical | "IEEE Std 802.3ah: Media Access Control Parameters, Physical | |||
| Layers, and Management Parameters for | Layers, and Management Parameters for | |||
| skipping to change at line 3420 ¶ | skipping to change at line 3243 ¶ | |||
| /* Identities */ | /* Identities */ | |||
| identity evpn-service-interface-type { | identity evpn-service-interface-type { | |||
| description | description | |||
| "Base identity for EVPN service interface type."; | "Base identity for EVPN service interface type."; | |||
| } | } | |||
| identity vlan-based-service-interface { | identity vlan-based-service-interface { | |||
| base evpn-service-interface-type; | base evpn-service-interface-type; | |||
| description | description | |||
| "VLAN-Based Service Interface."; | "VLAN-based service interface."; | |||
| reference | reference | |||
| "RFC 7432: BGP MPLS-Based Ethernet VPN, Section 6.1"; | "RFC 7432: BGP MPLS-Based Ethernet VPN, Section 6.1"; | |||
| } | } | |||
| identity vlan-bundle-service-interface { | identity vlan-bundle-service-interface { | |||
| base evpn-service-interface-type; | base evpn-service-interface-type; | |||
| description | description | |||
| "VLAN Bundle Service Interface."; | "VLAN bundle service interface."; | |||
| reference | reference | |||
| "RFC 7432: BGP MPLS-Based Ethernet VPN, Section 6.2"; | "RFC 7432: BGP MPLS-Based Ethernet VPN, Section 6.2"; | |||
| } | } | |||
| identity vlan-aware-bundle-service-interface { | identity vlan-aware-bundle-service-interface { | |||
| base evpn-service-interface-type; | base evpn-service-interface-type; | |||
| description | description | |||
| "VLAN-Aware Bundle Service Interface."; | "VLAN-aware bundle service interface."; | |||
| reference | reference | |||
| "RFC 7432: BGP MPLS-Based Ethernet VPN, Section 6.3"; | "RFC 7432: BGP MPLS-Based Ethernet VPN, Section 6.3"; | |||
| } | } | |||
| identity mapping-type { | identity mapping-type { | |||
| base vpn-common:multicast-gp-address-mapping; | base vpn-common:multicast-gp-address-mapping; | |||
| description | description | |||
| "Identity for multicast group mapping type."; | "Identity for multicast group mapping type."; | |||
| } | } | |||
| skipping to change at line 3466 ¶ | skipping to change at line 3289 ¶ | |||
| } | } | |||
| identity trap { | identity trap { | |||
| base loop-prevention-type; | base loop-prevention-type; | |||
| description | description | |||
| "Trap protection type."; | "Trap protection type."; | |||
| } | } | |||
| identity color-type { | identity color-type { | |||
| description | description | |||
| "Identity of color types. A type is assigned to a service frame | "Identity of color types. A type is assigned to a service | |||
| to identify its QoS profile conformance."; | frame to identify its QoS profile conformance."; | |||
| } | } | |||
| identity green { | identity green { | |||
| base color-type; | base color-type; | |||
| description | description | |||
| "'green' color type. A service frame is 'green' if it is | "'green' color type. A service frame is 'green' if it is | |||
| conformant with the committed rate of the bandwidth profile."; | conformant with the committed rate of the bandwidth profile."; | |||
| } | } | |||
| identity yellow { | identity yellow { | |||
| base color-type; | base color-type; | |||
| description | description | |||
| "'yellow' color type. A service frame is 'yellow' if it exceeds | "'yellow' color type. A service frame is 'yellow' if it | |||
| the committed rate but is conformant with the excess rate | exceeds the committed rate but is conformant with the excess | |||
| of the bandwidth profile."; | rate of the bandwidth profile."; | |||
| } | } | |||
| identity red { | identity red { | |||
| base color-type; | base color-type; | |||
| description | description | |||
| "'red' color type. A service famre is 'red' if it is not | "'red' color type. A service frame is 'red' if it is not | |||
| conformant with both the committed and excess rates of the | conformant with both the committed and excess rates of the | |||
| bandwidth profile."; | bandwidth profile."; | |||
| } | } | |||
| identity t-ldp-pw-type { | identity t-ldp-pw-type { | |||
| description | description | |||
| "Identity for t-ldp-pw-type."; | "Identity for T-LDP pseudowire (PW) type."; | |||
| } | } | |||
| identity vpws-type { | identity vpws-type { | |||
| base t-ldp-pw-type; | base t-ldp-pw-type; | |||
| description | description | |||
| "Virtual Private Wire Service (VPWS) t-ldp-pw-type."; | "Virtual Private Wire Service (VPWS) t-ldp-pw-type."; | |||
| reference | reference | |||
| "RFC 4664: Framework for Layer 2 Virtual Private Networks | "RFC 4664: Framework for Layer 2 Virtual Private Networks | |||
| (L2VPNs), Section 3.3"; | (L2VPNs), Section 3.3"; | |||
| } | } | |||
| skipping to change at line 3549 ¶ | skipping to change at line 3372 ¶ | |||
| is initiated followed by an establishment of an | is initiated followed by an establishment of an | |||
| Ethernet channel with the other end."; | Ethernet channel with the other end."; | |||
| } | } | |||
| identity lacp-passive { | identity lacp-passive { | |||
| base lacp-mode; | base lacp-mode; | |||
| description | description | |||
| "LACP passive mode. | "LACP passive mode. | |||
| This mode refers to the LACP mode where an endpoint does | This mode refers to the LACP mode where an endpoint does | |||
| not initiate the negotiation, but only responds to LACP | not initiate the negotiation but only responds to LACP | |||
| packets initiated by the other end (e.g., full duplex | packets initiated by the other end (e.g., full duplex | |||
| or half duplex)"; | or half duplex)"; | |||
| } | } | |||
| identity pm-type { | identity pm-type { | |||
| description | description | |||
| "Identity for performance monitoring type."; | "Identity for performance monitoring type."; | |||
| } | } | |||
| identity loss { | identity loss { | |||
| skipping to change at line 3613 ¶ | skipping to change at line 3436 ¶ | |||
| } | } | |||
| identity warning { | identity warning { | |||
| base mac-action; | base mac-action; | |||
| description | description | |||
| "Log a warning message as the MAC action."; | "Log a warning message as the MAC action."; | |||
| } | } | |||
| identity precedence-type { | identity precedence-type { | |||
| description | description | |||
| "Redundancy type. The service can be created | "Redundancy type. The service can be created | |||
| with primary and secondary signalization."; | with primary and secondary signalization."; | |||
| } | } | |||
| identity primary { | identity primary { | |||
| base precedence-type; | base precedence-type; | |||
| description | description | |||
| "Identifies the main VPN network access."; | "Identifies the main VPN network access."; | |||
| } | } | |||
| identity secondary { | identity secondary { | |||
| skipping to change at line 3657 ¶ | skipping to change at line 3480 ¶ | |||
| "PW Ethernet tagged mode type."; | "PW Ethernet tagged mode type."; | |||
| } | } | |||
| /* Typedefs */ | /* Typedefs */ | |||
| typedef ccm-priority-type { | typedef ccm-priority-type { | |||
| type uint8 { | type uint8 { | |||
| range "0..7"; | range "0..7"; | |||
| } | } | |||
| description | description | |||
| "A 3-bit priority value to be used in the VLAN tag, | "A 3-bit priority value to be used in the VLAN tag | |||
| if present in the transmitted frame. A larger value | if present in the transmitted frame. A larger value | |||
| indicates a higher priority."; | indicates a higher priority."; | |||
| } | } | |||
| /* Groupings */ | /* Groupings */ | |||
| grouping cfm-802 { | grouping cfm-802 { | |||
| description | description | |||
| "Grouping for 802.1ag Connectivity Fault Management (CFM) | "Grouping for 802.1ag Connectivity Fault Management (CFM) | |||
| attributes."; | attributes."; | |||
| reference | reference | |||
| "IEEE Std 802-1ag: Virtual Bridged Local Area Networks | "IEEE Std 802.1ag: Virtual Bridged Local Area Networks | |||
| Amendment 5: Connectivity Fault Management"; | Amendment 5: Connectivity Fault Management"; | |||
| leaf maid { | leaf maid { | |||
| type string; | type string; | |||
| description | description | |||
| "Maintenance Association Identifier (MAID)."; | "Maintenance Association Identifier (MAID)."; | |||
| } | } | |||
| leaf mep-id { | leaf mep-id { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Local Maintenance Entity Group End Point (MEP) ID."; | "Local Maintenance Entity Group End Point (MEP) ID."; | |||
| skipping to change at line 3709 ¶ | skipping to change at line 3532 ¶ | |||
| "MEP up/down."; | "MEP up/down."; | |||
| } | } | |||
| leaf remote-mep-id { | leaf remote-mep-id { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Remote MEP ID."; | "Remote MEP ID."; | |||
| } | } | |||
| leaf cos-for-cfm-pdus { | leaf cos-for-cfm-pdus { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Class of service for CFM PDUs."; | "Class of Service for CFM PDUs."; | |||
| } | } | |||
| leaf ccm-interval { | leaf ccm-interval { | |||
| type uint32; | type uint32; | |||
| units "milliseconds"; | units "milliseconds"; | |||
| default "10000"; | default "10000"; | |||
| description | description | |||
| "Continuity Check Message (CCM) interval."; | "Continuity Check Message (CCM) interval."; | |||
| } | } | |||
| leaf ccm-holdtime { | leaf ccm-holdtime { | |||
| type uint32; | type uint32; | |||
| units "milliseconds"; | units "milliseconds"; | |||
| default "35000"; | default "35000"; | |||
| description | description | |||
| "CCM hold time."; | "CCM hold time."; | |||
| } | } | |||
| leaf ccm-p-bits-pri { | leaf ccm-p-bits-pri { | |||
| type ccm-priority-type; | type ccm-priority-type; | |||
| description | description | |||
| "The priority parameter for Continuity Check Messages (CCMs) | "The priority parameter for CCMs | |||
| transmitted by the MEP."; | transmitted by the MEP."; | |||
| } | } | |||
| } | } | |||
| grouping y-1731 { | grouping y-1731 { | |||
| description | description | |||
| "Grouping for Y-1731"; | "Grouping for Y-1731"; | |||
| reference | reference | |||
| "ITU-T Y-1731: Operations, administration and maintenance | "ITU-T G.8013/Y.1731: Operations, administration and | |||
| (OAM) functions and mechanisms for | maintenance (OAM) functions and | |||
| Ethernet-based networks"; | mechanisms for Ethernet-based | |||
| networks"; | ||||
| list y-1731 { | list y-1731 { | |||
| key "maid"; | key "maid"; | |||
| description | description | |||
| "List of configured Y-1731 instances."; | "List of configured Y-1731 instances."; | |||
| leaf maid { | leaf maid { | |||
| type string; | type string; | |||
| description | description | |||
| "MAID."; | "MAID."; | |||
| } | } | |||
| leaf mep-id { | leaf mep-id { | |||
| skipping to change at line 3792 ¶ | skipping to change at line 3616 ¶ | |||
| description | description | |||
| "Identifies the Class of Service."; | "Identifies the Class of Service."; | |||
| } | } | |||
| leaf loss-measurement { | leaf loss-measurement { | |||
| type boolean; | type boolean; | |||
| default "false"; | default "false"; | |||
| description | description | |||
| "Controls whether loss measurement is ('true') or | "Controls whether loss measurement is ('true') or | |||
| disabled ('false')."; | disabled ('false')."; | |||
| } | } | |||
| leaf synthethic-loss-measurement { | leaf synthetic-loss-measurement { | |||
| type boolean; | type boolean; | |||
| default "false"; | default "false"; | |||
| description | description | |||
| "Indicates whether synthetic loss measurement is enabled | "Indicates whether synthetic loss measurement is | |||
| ('true') or disabled ('false')."; | enabled ('true') or disabled ('false')."; | |||
| } | } | |||
| container delay-measurement { | container delay-measurement { | |||
| description | description | |||
| "Container for delay measurement"; | "Container for delay measurement."; | |||
| leaf enable-dm { | leaf enable-dm { | |||
| type boolean; | type boolean; | |||
| default "false"; | default "false"; | |||
| description | description | |||
| "Controls whether delay measurement is enabled ('true') | "Controls whether delay measurement is enabled | |||
| or disabled ('false')."; | ('true') or disabled ('false')."; | |||
| } | } | |||
| leaf two-way { | leaf two-way { | |||
| type boolean; | type boolean; | |||
| default "false"; | default "false"; | |||
| description | description | |||
| "Whether delay measurement is two-way ('true') of one- | "Whether delay measurement is two-way ('true') of one- | |||
| way ('false')."; | way ('false')."; | |||
| } | } | |||
| } | } | |||
| leaf frame-size { | leaf frame-size { | |||
| skipping to change at line 3853 ¶ | skipping to change at line 3677 ¶ | |||
| "Container for per-service parameters."; | "Container for per-service parameters."; | |||
| leaf local-autonomous-system { | leaf local-autonomous-system { | |||
| type inet:as-number; | type inet:as-number; | |||
| description | description | |||
| "Indicates a local AS Number (ASN)."; | "Indicates a local AS Number (ASN)."; | |||
| } | } | |||
| leaf svc-mtu { | leaf svc-mtu { | |||
| type uint32; | type uint32; | |||
| units "bytes"; | units "bytes"; | |||
| description | description | |||
| "Layer 2 service MTU. | "Layer 2 service MTU. It is also known | |||
| It is also known as the maximum transmission | as the maximum transmission unit or | |||
| unit or maximum frame size."; | maximum frame size."; | |||
| } | } | |||
| leaf ce-vlan-preservation { | leaf ce-vlan-preservation { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Preserve the CE-VLAN ID from ingress to egress, i.e., | "Preserves the CE VLAN ID from ingress to egress, i.e., | |||
| CE-VLAN tag of the egress frame is identical to | the CE VLAN tag of the egress frame is identical to | |||
| that of the ingress frame that yielded this egress | that of the ingress frame that yielded this egress | |||
| service frame. If all-to-one bundling within a site | service frame. If all-to-one bundling within a site | |||
| is enabled, then preservation applies to all ingress | is enabled, then preservation applies to all ingress | |||
| service frames. If all-to-one bundling is disabled, | service frames. If all-to-one bundling is disabled, | |||
| then preservation applies to tagged ingress service | then preservation applies to tagged ingress service | |||
| frames having CE-VLAN ID 1 through 4094."; | frames having CE VLAN ID 1 through 4094."; | |||
| } | } | |||
| leaf ce-vlan-cos-preservation { | leaf ce-vlan-cos-preservation { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "CE VLAN CoS preservation. Priority Code Point (PCP) bits | "CE VLAN CoS preservation. Priority Code Point (PCP) bits | |||
| in the CE-VLAN tag of the egress frame are identical to | in the CE VLAN tag of the egress frame are identical to | |||
| those of the ingress frame that yielded this egress | those of the ingress frame that yielded this egress | |||
| service frame."; | service frame."; | |||
| } | } | |||
| leaf control-word-negotiation { | leaf control-word-negotiation { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Controls whether Control-word negotiation is enabled | "Controls whether control-word negotiation is enabled | |||
| (if set to true) or not (if set to false)."; | (if set to true) or not (if set to false)."; | |||
| reference | reference | |||
| "RFC 8077: Pseudowire Setup and Maintenance | "RFC 8077: Pseudowire Setup and Maintenance | |||
| Using the Label Distribution Protocol (LDP), | Using the Label Distribution Protocol (LDP), | |||
| Section 7"; | Section 7"; | |||
| } | } | |||
| container mac-policies { | container mac-policies { | |||
| description | description | |||
| "Container of MAC policies."; | "Container of MAC policies."; | |||
| container mac-addr-limit { | container mac-addr-limit { | |||
| skipping to change at line 3905 ¶ | skipping to change at line 3729 ¶ | |||
| description | description | |||
| "Maximum number of MAC addresses learned from | "Maximum number of MAC addresses learned from | |||
| the customer for a single service instance. | the customer for a single service instance. | |||
| The default value is '2' when this grouping | The default value is '2' when this grouping | |||
| is used at the service level."; | is used at the service level."; | |||
| } | } | |||
| leaf time-interval { | leaf time-interval { | |||
| type uint32; | type uint32; | |||
| units "milliseconds"; | units "milliseconds"; | |||
| description | description | |||
| "The aging time of the mac address. | "The aging time of the MAC address. | |||
| The default value is '300' when this grouping | The default value is '300' when this grouping | |||
| is used at the service level."; | is used at the service level."; | |||
| } | } | |||
| leaf action { | leaf action { | |||
| type identityref { | type identityref { | |||
| base mac-action; | base mac-action; | |||
| } | } | |||
| description | description | |||
| "Specifies the action when the upper limit is | "Specifies the action when the upper limit is | |||
| exceeded: drop the packet, flood the packet, | exceeded: drop the packet, flood the packet, | |||
| skipping to change at line 3949 ¶ | skipping to change at line 3773 ¶ | |||
| within the 'window' time interval and the duplicate | within the 'window' time interval and the duplicate | |||
| MAC address has been added to a list of duplicate | MAC address has been added to a list of duplicate | |||
| MAC addresses. | MAC addresses. | |||
| The default value is '5' when this grouping is | The default value is '5' when this grouping is | |||
| called at the service level."; | called at the service level."; | |||
| } | } | |||
| leaf retry-timer { | leaf retry-timer { | |||
| type uint32; | type uint32; | |||
| units "seconds"; | units "seconds"; | |||
| description | description | |||
| "The retry timer. When the retry timer expires, | "The retry timer. When the retry timer expires, | |||
| the duplicate MAC address will be flushed from | the duplicate MAC address will be flushed from | |||
| the MAC-VRF."; | the MAC-VRF."; | |||
| } | } | |||
| leaf protection-type { | leaf protection-type { | |||
| type identityref { | type identityref { | |||
| base loop-prevention-type; | base loop-prevention-type; | |||
| } | } | |||
| description | description | |||
| "Protection type. | "Protection type. | |||
| The default value is 'trap' when this grouping | The default value is 'trap' when this grouping | |||
| skipping to change at line 3995 ¶ | skipping to change at line 3819 ¶ | |||
| } | } | |||
| } | } | |||
| grouping bandwidth-parameters { | grouping bandwidth-parameters { | |||
| description | description | |||
| "A grouping for bandwidth parameters."; | "A grouping for bandwidth parameters."; | |||
| leaf cir { | leaf cir { | |||
| type uint64; | type uint64; | |||
| units "bps"; | units "bps"; | |||
| description | description | |||
| "Committed Information Rate. The maximum | "Committed Information Rate (CIR). The maximum | |||
| number of bits that a port can receive or | number of bits that a port can receive or | |||
| send during one-second over an | send during one second over an | |||
| interface."; | interface."; | |||
| } | } | |||
| leaf cbs { | leaf cbs { | |||
| type uint64; | type uint64; | |||
| units "bytes"; | units "bytes"; | |||
| description | description | |||
| "Committed Burst Size. CBS controls the | "Committed Burst Size (CBS). CBS controls the | |||
| bursty nature of the traffic. Traffic | bursty nature of the traffic. Traffic | |||
| that does not use the configured CIR | that does not use the configured CIR | |||
| accumulates credits until the credits | accumulates credits until the credits | |||
| reach the configured CBS."; | reach the configured CBS."; | |||
| } | } | |||
| leaf eir { | leaf eir { | |||
| type uint64; | type uint64; | |||
| units "bps"; | units "bps"; | |||
| description | description | |||
| "Excess Information Rate, i.e., excess | "Excess Information Rate (EIR), i.e., excess | |||
| frame delivery allowed not subject to | frame delivery allowed not subject to | |||
| SLA. The traffic rate can be limited | a Service Level Agreement (SLA). The | |||
| by EIR."; | traffic rate can be limited by EIR."; | |||
| } | } | |||
| leaf ebs { | leaf ebs { | |||
| type uint64; | type uint64; | |||
| units "bytes"; | units "bytes"; | |||
| description | description | |||
| "Excess Burst Size. The bandwidth | "Excess Burst Size (EBS). The bandwidth | |||
| available for burst traffic from the | available for burst traffic from the | |||
| EBS is subject to the amount of | EBS is subject to the amount of | |||
| bandwidth that is accumulated during | bandwidth that is accumulated during | |||
| periods when traffic allocated by the | periods when traffic allocated by the | |||
| EIR policy is not used."; | EIR policy is not used."; | |||
| } | } | |||
| leaf pir { | leaf pir { | |||
| type uint64; | type uint64; | |||
| units "bps"; | units "bps"; | |||
| description | description | |||
| "Peak Information Rate, i.e., maximum | "Peak Information Rate (PIR), i.e., maximum | |||
| frame delivery allowed. It is equal | frame delivery allowed. It is equal | |||
| to or less than sum of CIR and EIR."; | to or less than sum of CIR and EIR."; | |||
| } | } | |||
| leaf pbs { | leaf pbs { | |||
| type uint64; | type uint64; | |||
| units "bytes"; | units "bytes"; | |||
| description | description | |||
| "Peak Burst Size."; | "Peak Burst Size (PBS)."; | |||
| } | } | |||
| } | } | |||
| /* Main L2NM Container */ | /* Main L2NM Container */ | |||
| container l2vpn-ntw { | container l2vpn-ntw { | |||
| description | description | |||
| "Container for the L2NM."; | "Container for the L2NM."; | |||
| container vpn-profiles { | container vpn-profiles { | |||
| description | description | |||
| skipping to change at line 4086 ¶ | skipping to change at line 3910 ¶ | |||
| error-message "L3VPN is only applicable in L3NM."; | error-message "L3VPN is only applicable in L3NM."; | |||
| } | } | |||
| description | description | |||
| "Service type."; | "Service type."; | |||
| } | } | |||
| leaf vpn-service-topology { | leaf vpn-service-topology { | |||
| type identityref { | type identityref { | |||
| base vpn-common:vpn-topology; | base vpn-common:vpn-topology; | |||
| } | } | |||
| description | description | |||
| "Defining service topology, such as | "Defines service topology such as | |||
| any-to-any, hub-spoke, etc."; | any-to-any, hub-spoke, etc."; | |||
| } | } | |||
| leaf bgp-ad-enabled { | leaf bgp-ad-enabled { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Indicates whether BGP auto-discovery is enabled | "Indicates whether BGP auto-discovery is enabled | |||
| or disabled."; | or disabled."; | |||
| } | } | |||
| leaf signaling-type { | leaf signaling-type { | |||
| type identityref { | type identityref { | |||
| skipping to change at line 4147 ¶ | skipping to change at line 3971 ¶ | |||
| } | } | |||
| leaf description { | leaf description { | |||
| type string; | type string; | |||
| description | description | |||
| "Textual description of a VPN node."; | "Textual description of a VPN node."; | |||
| } | } | |||
| leaf ne-id { | leaf ne-id { | |||
| type string; | type string; | |||
| description | description | |||
| "An identifier of the network element where | "An identifier of the network element where | |||
| the VPN node is deployed. This identifier | the VPN node is deployed. This identifier | |||
| uniquely identifies the network element within | uniquely identifies the network element within | |||
| an administrative domain."; | an administrative domain."; | |||
| } | } | |||
| leaf role { | leaf role { | |||
| type identityref { | type identityref { | |||
| base vpn-common:role; | base vpn-common:role; | |||
| } | } | |||
| default "vpn-common:any-to-any-role"; | default "vpn-common:any-to-any-role"; | |||
| description | description | |||
| "Role of the VPN node in the VPN."; | "Role of the VPN node in the VPN."; | |||
| } | } | |||
| leaf router-id { | leaf router-id { | |||
| type rt-types:router-id; | type rt-types:router-id; | |||
| description | description | |||
| "A 32-bit number in the dotted-quad format that is | "A 32-bit number in the dotted-quad format that is | |||
| used to uniquely identify a node within an | used to uniquely identify a node within an | |||
| autonomous system (AS)."; | Autonomous System (AS)."; | |||
| } | } | |||
| container active-global-parameters-profiles { | container active-global-parameters-profiles { | |||
| description | description | |||
| "Container for a list of global parameters | "Container for a list of global parameters | |||
| profiles."; | profiles."; | |||
| list global-parameters-profile { | list global-parameters-profile { | |||
| key "profile-id"; | key "profile-id"; | |||
| description | description | |||
| "List of active global parameters profiles."; | "List of active global parameters profiles."; | |||
| leaf profile-id { | leaf profile-id { | |||
| skipping to change at line 4188 ¶ | skipping to change at line 4012 ¶ | |||
| } | } | |||
| description | description | |||
| "Points to a global profile defined at the | "Points to a global profile defined at the | |||
| service level."; | service level."; | |||
| } | } | |||
| uses parameters-profile; | uses parameters-profile; | |||
| } | } | |||
| } | } | |||
| uses vpn-common:service-status; | uses vpn-common:service-status; | |||
| container bgp-auto-discovery { | container bgp-auto-discovery { | |||
| when "../../../bgp-ad-enabled = 'true'" { | when "../../../bgp-ad-enabled = 'true'" { | |||
| description | description | |||
| "Only applies when BGP auto-discovery is enabled."; | "Only applies when BGP auto-discovery is enabled."; | |||
| } | } | |||
| description | description | |||
| "BGP is used for auto-discovery."; | "BGP is used for auto-discovery."; | |||
| choice bgp-type { | choice bgp-type { | |||
| description | description | |||
| "Choice for the BGP type."; | "Choice for the BGP type."; | |||
| case l2vpn-bgp { | case l2vpn-bgp { | |||
| description | description | |||
| "Container for BGP L2VPN."; | "Container for BGP L2VPN."; | |||
| leaf vpn-id { | leaf vpn-id { | |||
| type vpn-common:vpn-id; | type vpn-common:vpn-id; | |||
| description | description | |||
| "VPN Identifier. This identifier serves to | "VPN Identifier. This identifier serves to | |||
| unify components of a given VPN for the | unify components of a given VPN for the | |||
| sake of auto-discovery."; | sake of auto-discovery."; | |||
| reference | reference | |||
| "RFC 6624: Layer 2 Virtual Private Networks | "RFC 6624: Layer 2 Virtual Private Networks | |||
| Using BGP for Auto-Discovery and | Using BGP for Auto-Discovery and | |||
| Signaling"; | Signaling"; | |||
| } | } | |||
| } | } | |||
| case evpn-bgp { | case evpn-bgp { | |||
| description | description | |||
| skipping to change at line 4316 ¶ | skipping to change at line 4140 ¶ | |||
| when "derived-from-or-self(../../../../" | when "derived-from-or-self(../../../../" | |||
| + "vpn-type, 'vpn-common:vpls')" { | + "vpn-type, 'vpn-common:vpls')" { | |||
| description | description | |||
| "Only applies for VPLS."; | "Only applies for VPLS."; | |||
| } | } | |||
| description | description | |||
| "VPLS instance."; | "VPLS instance."; | |||
| leaf vpls-edge-id { | leaf vpls-edge-id { | |||
| type uint16; | type uint16; | |||
| description | description | |||
| "VPLS Edge Identifier (VE ID). This is | "VPLS Edge Identifier (VE ID). This is | |||
| used when the same VE ID is configured | used when the same VE ID is configured | |||
| for the PE."; | for the PE."; | |||
| reference | reference | |||
| "RFC 4761: Virtual Private LAN Service | "RFC 4761: Virtual Private LAN Service | |||
| (VPLS) Using BGP for Auto- | (VPLS) Using BGP for Auto- | |||
| Discovery and Signaling, | Discovery and Signaling, | |||
| Section 3.5"; | Section 3.5"; | |||
| } | } | |||
| leaf vpls-edge-id-range { | leaf vpls-edge-id-range { | |||
| type uint16; | type uint16; | |||
| skipping to change at line 4374 ¶ | skipping to change at line 4198 ¶ | |||
| base mac-learning-mode; | base mac-learning-mode; | |||
| } | } | |||
| description | description | |||
| "Indicates through which plane MAC | "Indicates through which plane MAC | |||
| addresses are advertised."; | addresses are advertised."; | |||
| } | } | |||
| leaf ingress-replication { | leaf ingress-replication { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Controls whether ingress replication is | "Controls whether ingress replication is | |||
| enabled ('true') or disabled ('false')."; | enabled ('true') or disabled | |||
| ('false')."; | ||||
| reference | reference | |||
| "RFC 7432: BGP MPLS-Based Ethernet VPN, | "RFC 7432: BGP MPLS-Based Ethernet VPN, | |||
| Section 8.3.1.1"; | Section 8.3.1.1"; | |||
| } | } | |||
| leaf p2mp-replication { | leaf p2mp-replication { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Controles whether P2MP replication is | "Controls whether Point-to-Multipoint | |||
| enabled ('true') or disabled ('false')"; | (P2MP) replication is enabled ('true') | |||
| or disabled ('false')"; | ||||
| reference | reference | |||
| "RFC 7432: BGP MPLS-Based Ethernet VPN, | "RFC 7432: BGP MPLS-Based Ethernet VPN, | |||
| Section 8.3.1.2"; | Section 8.3.1.2"; | |||
| } | } | |||
| container arp-proxy { | container arp-proxy { | |||
| if-feature "vpn-common:ipv4"; | if-feature "vpn-common:ipv4"; | |||
| description | description | |||
| "Top container for the ARP proxy."; | "Top container for the ARP proxy."; | |||
| leaf enable { | leaf enable { | |||
| type boolean; | type boolean; | |||
| default "false"; | default "false"; | |||
| description | description | |||
| "Enables (when set to 'true') or | "Enables (when set to 'true') or | |||
| disables (when set to 'false') | disables (when set to 'false') | |||
| ARP proxy."; | the ARP proxy."; | |||
| reference | reference | |||
| "RFC 7432: BGP MPLS-Based Ethernet VPN, | "RFC 7432: BGP MPLS-Based Ethernet VPN, | |||
| Section 10"; | Section 10"; | |||
| } | } | |||
| leaf arp-suppression { | leaf arp-suppression { | |||
| type boolean; | type boolean; | |||
| default "false"; | default "false"; | |||
| description | description | |||
| "Enables (when set to 'true') or | "Enables (when set to 'true') or | |||
| disables (when set to 'false') ARP | disables (when set to 'false') ARP | |||
| suppression."; | suppression."; | |||
| reference | reference | |||
| "RFC 7432: BGP MPLS-Based Ethernet | "RFC 7432: BGP MPLS-Based Ethernet | |||
| VPN"; | VPN"; | |||
| } | } | |||
| leaf ip-mobility-threshold { | leaf ip-mobility-threshold { | |||
| type uint16; | type uint16; | |||
| description | description | |||
| "It is possible for a given host (as | "It is possible for a given host (as | |||
| defined by its IP address) to move | defined by its IP address) to move | |||
| from one ES to another. | from one ES to another. The | |||
| IP mobility threshold specifies the | IP mobility threshold specifies the | |||
| number of IP mobility events | number of IP mobility events | |||
| that are detected for a given IP | that are detected for a given IP | |||
| address within the | address within the | |||
| detection-threshold before it | detection-threshold before it | |||
| is identified as a duplicate IP | is identified as a duplicate IP | |||
| address. | address. Once the detection threshold | |||
| Once the detection threshold is | is reached, updates for the IP address | |||
| reached, updates for the IP address | ||||
| are suppressed."; | are suppressed."; | |||
| } | } | |||
| leaf duplicate-ip-detection-interval { | leaf duplicate-ip-detection-interval { | |||
| type uint16; | type uint16; | |||
| units "seconds"; | units "seconds"; | |||
| description | description | |||
| "The time interval used in detecting a | "The time interval used in detecting a | |||
| duplicate IP address. Duplicate IP | duplicate IP address. Duplicate IP | |||
| address detection number of host moves | address detection number of host moves | |||
| are allowed within this interval | are allowed within this interval | |||
| period."; | period."; | |||
| } | } | |||
| } | } | |||
| container nd-proxy { | container nd-proxy { | |||
| if-feature "vpn-common:ipv6"; | if-feature "vpn-common:ipv6"; | |||
| description | description | |||
| "Top container for the ND proxy."; | "Top container for the ND proxy."; | |||
| leaf enable { | leaf enable { | |||
| type boolean; | type boolean; | |||
| default "false"; | default "false"; | |||
| description | description | |||
| "Enables (when set to 'true') or | "Enables (when set to 'true') or | |||
| disables (when set to 'false') ND | disables (when set to 'false') the | |||
| proxy."; | ND proxy."; | |||
| reference | reference | |||
| "RFC 7432: BGP MPLS-Based Ethernet VPN, | "RFC 7432: BGP MPLS-Based Ethernet VPN, | |||
| Section 10"; | Section 10"; | |||
| } | } | |||
| leaf nd-suppression { | leaf nd-suppression { | |||
| type boolean; | type boolean; | |||
| default "false"; | default "false"; | |||
| description | description | |||
| "Enables (when set to 'true') or | "Enables (when set to 'true') or | |||
| disables (when set to 'false') | disables (when set to 'false') | |||
| Neighbor Discovery (ND) message | Neighbor Discovery (ND) message | |||
| suppression. | suppression. | |||
| ND suppression is a technique that | ND suppression is a technique that | |||
| is used to reduce the amount of ND | is used to reduce the amount of ND | |||
| packets flooding within individual | packets flooding within individual | |||
| segments, that is between hosts | segments between hosts | |||
| connected to the same logical | connected to the same logical | |||
| switch."; | switch."; | |||
| } | } | |||
| leaf ip-mobility-threshold { | leaf ip-mobility-threshold { | |||
| type uint16; | type uint16; | |||
| description | description | |||
| "It is possible for a given host (as | "It is possible for a given host (as | |||
| defined by its IP address) to move | defined by its IP address) to move | |||
| from one ES to another. | from one ES to another. The | |||
| IP mobility threshold specifies the | IP mobility threshold specifies the | |||
| number of IP mobility events | number of IP mobility events | |||
| that are detected for a given IP | that are detected for a given IP | |||
| address within the | address within the | |||
| detection-threshold before it | detection-threshold before it | |||
| is identified as a duplicate IP | is identified as a duplicate IP | |||
| address. | address. | |||
| Once the detection threshold is | Once the detection threshold is | |||
| reached, updates for the IP address | reached, updates for the IP address | |||
| are suppressed."; | are suppressed."; | |||
| } | } | |||
| leaf duplicate-ip-detection-interval { | leaf duplicate-ip-detection-interval { | |||
| type uint16; | type uint16; | |||
| units "seconds"; | units "seconds"; | |||
| description | description | |||
| "The time interval used in detecting a | "The time interval used in detecting a | |||
| duplicate IP address. Duplicate IP | duplicate IP address. Duplicate IP | |||
| address detection number of host moves | address detection number of host moves | |||
| are allowed within this interval | are allowed within this interval | |||
| period."; | period."; | |||
| } | } | |||
| } | } | |||
| leaf underlay-multicast { | leaf underlay-multicast { | |||
| type boolean; | type boolean; | |||
| default "false"; | default "false"; | |||
| description | description | |||
| "Enables (when set to 'true') or disables | "Enables (when set to 'true') or disables | |||
| (when set to 'false') underlay | (when set to 'false') underlay | |||
| multicast."; | multicast."; | |||
| } | } | |||
| leaf flood-unknown-unicast-supression { | leaf flood-unknown-unicast-suppression { | |||
| type boolean; | type boolean; | |||
| default "false"; | default "false"; | |||
| description | description | |||
| "Enables (when set to 'true') or disables | "Enables (when set to 'true') or disables | |||
| (when set to 'false') unknown flood | (when set to 'false') unknown flood | |||
| unicast suppression."; | unicast suppression."; | |||
| } | } | |||
| leaf vpws-vlan-aware { | leaf vpws-vlan-aware { | |||
| type boolean; | type boolean; | |||
| default "false"; | default "false"; | |||
| description | description | |||
| "Enables (when set to 'true') or disables | "Enables (when set to 'true') or disables | |||
| (when set to 'false') VPWS VLAN-aware."; | (when set to 'false') VPWS VLAN-aware | |||
| service for the EVPN instance."; | ||||
| } | } | |||
| container bum-management { | container bum-management { | |||
| description | description | |||
| "Broadcast-unknown-unicast-multicast | "Broadcast-unknown-unicast-multicast | |||
| management."; | management."; | |||
| leaf discard-broadcast { | leaf discard-broadcast { | |||
| type boolean; | type boolean; | |||
| default "false"; | default "false"; | |||
| description | description | |||
| "Discards broadcast, when enabled."; | "Discards broadcast, when enabled."; | |||
| skipping to change at line 4557 ¶ | skipping to change at line 4383 ¶ | |||
| } | } | |||
| container pbb { | container pbb { | |||
| when "derived-from-or-self(" | when "derived-from-or-self(" | |||
| + "../../evpn-type, 'pbb-evpn')" { | + "../../evpn-type, 'pbb-evpn')" { | |||
| description | description | |||
| "Only applies for PBB EVPN."; | "Only applies for PBB EVPN."; | |||
| } | } | |||
| description | description | |||
| "PBB parameters container."; | "PBB parameters container."; | |||
| reference | reference | |||
| "IEEE 802.1ah: Provider Backbone Bridge"; | "IEEE 802.1ah: Provider Backbone | |||
| Bridges"; | ||||
| leaf backbone-src-mac { | leaf backbone-src-mac { | |||
| type yang:mac-address; | type yang:mac-address; | |||
| description | description | |||
| "Includes provider backbone MAC (B-MAC) | "Includes Provider Backbone MAC (B-MAC) | |||
| address."; | address."; | |||
| reference | reference | |||
| "RFC 7623: Provider Backbone Bridging | "RFC 7623: Provider Backbone Bridging | |||
| Combined with Ethernet VPN | Combined with Ethernet VPN | |||
| (PBB-EVPN), Section 8.1"; | (PBB-EVPN), Section 8.1"; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| container ldp-or-l2tp { | container ldp-or-l2tp { | |||
| description | description | |||
| "Container for LDP or L2TP-signaled PWs | "Container for LDP or L2TP-signaled PWs | |||
| choice."; | choice."; | |||
| leaf agi { | leaf agi { | |||
| type rt-types:route-distinguisher; | type rt-types:route-distinguisher; | |||
| description | description | |||
| "Attachment Group Identifier. Also, called | "Attachment Group Identifier. Also, called | |||
| VPLS-Id."; | VPLS-Id."; | |||
| reference | reference | |||
| "RFC 4667: Layer 2 Virtual Private Network | "RFC 4667: Layer 2 Virtual Private Network | |||
| (L2VPN) Extensions for Layer 2 | (L2VPN) Extensions for Layer 2 | |||
| Tunneling Protocol (L2TP), | Tunneling Protocol (L2TP), | |||
| Section 4.3 | Section 4.3 | |||
| RFC 4762: Virtual Private LAN Service (VPLS) | RFC 4762: Virtual Private LAN Service (VPLS) | |||
| Using Label Distribution Protocol | Using Label Distribution Protocol | |||
| (LDP) Signaling, Section 6.1.1"; | (LDP) Signaling, Section 6.1.1"; | |||
| } | } | |||
| skipping to change at line 4606 ¶ | skipping to change at line 4433 ¶ | |||
| reference | reference | |||
| "RFC 4667: Layer 2 Virtual Private Network | "RFC 4667: Layer 2 Virtual Private Network | |||
| (L2VPN) Extensions for Layer 2 | (L2VPN) Extensions for Layer 2 | |||
| Tunneling Protocol (L2TP), | Tunneling Protocol (L2TP), | |||
| Section 3"; | Section 3"; | |||
| } | } | |||
| list remote-targets { | list remote-targets { | |||
| key "taii"; | key "taii"; | |||
| description | description | |||
| "List of allowed target Attachment Individual | "List of allowed target Attachment Individual | |||
| Identifier (AII) and peers."; | Identifiers (AIIs) and peers."; | |||
| reference | reference | |||
| "RFC 4667: Layer 2 Virtual Private Network | "RFC 4667: Layer 2 Virtual Private Network | |||
| (L2VPN) Extensions for Layer 2 | (L2VPN) Extensions for Layer 2 | |||
| Tunneling Protocol (L2TP), | Tunneling Protocol (L2TP), | |||
| Section 5"; | Section 5"; | |||
| leaf taii { | leaf taii { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Target Attachment Individual Identifier."; | "Target Attachment Individual Identifier."; | |||
| reference | reference | |||
| skipping to change at line 4657 ¶ | skipping to change at line 4484 ¶ | |||
| reference | reference | |||
| "RFC 4762: Virtual Private LAN Service | "RFC 4762: Virtual Private LAN Service | |||
| (VPLS) Using Label Distribution | (VPLS) Using Label Distribution | |||
| Protocol (LDP) Signaling, | Protocol (LDP) Signaling, | |||
| Section 6.1.1"; | Section 6.1.1"; | |||
| } | } | |||
| leaf pw-description { | leaf pw-description { | |||
| type string; | type string; | |||
| description | description | |||
| "Includes a human-readable description | "Includes a human-readable description | |||
| of the interface. This may be used when | of the interface. This may be used when | |||
| communicating with a remote peer."; | communicating with a remote peer."; | |||
| reference | reference | |||
| "RFC 4762: Virtual Private LAN Service | "RFC 4762: Virtual Private LAN Service | |||
| (VPLS) Using Label Distribution | (VPLS) Using Label Distribution | |||
| Protocol (LDP) Signaling, | Protocol (LDP) Signaling, | |||
| Section 6.1.1"; | Section 6.1.1"; | |||
| } | } | |||
| leaf mac-addr-withdraw { | leaf mac-addr-withdraw { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| skipping to change at line 4681 ¶ | skipping to change at line 4508 ¶ | |||
| disabled."; | disabled."; | |||
| reference | reference | |||
| "RFC 4762: Virtual Private LAN Service | "RFC 4762: Virtual Private LAN Service | |||
| (VPLS) Using Label Distribution | (VPLS) Using Label Distribution | |||
| Protocol (LDP) Signaling, | Protocol (LDP) Signaling, | |||
| Section 6.2"; | Section 6.2"; | |||
| } | } | |||
| list pw-peer-list { | list pw-peer-list { | |||
| key "peer-addr vc-id"; | key "peer-addr vc-id"; | |||
| description | description | |||
| "List of AC and PW bindings."; | "List of attachment circuit (AC) and PW | |||
| bindings."; | ||||
| leaf peer-addr { | leaf peer-addr { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description | description | |||
| "Indicates the peer's IP address."; | "Indicates the peer's IP address."; | |||
| } | } | |||
| leaf vc-id { | leaf vc-id { | |||
| type string; | type string; | |||
| description | description | |||
| "VC label used to identify a PW."; | "VC label used to identify a PW."; | |||
| } | } | |||
| skipping to change at line 4705 ¶ | skipping to change at line 4533 ¶ | |||
| "Defines the priority for the PW. | "Defines the priority for the PW. | |||
| The higher the pw-priority value, the | The higher the pw-priority value, the | |||
| higher the preference of the PW will | higher the preference of the PW will | |||
| be."; | be."; | |||
| } | } | |||
| } | } | |||
| container qinq { | container qinq { | |||
| when "derived-from-or-self(" | when "derived-from-or-self(" | |||
| + "../t-ldp-pw-type, 'hvpls')" { | + "../t-ldp-pw-type, 'hvpls')" { | |||
| description | description | |||
| "Only applies when t-ldp pw type | "Only applies when T-LDP PW type | |||
| is h-vpls."; | is H-VPLS."; | |||
| } | } | |||
| description | description | |||
| "Container for QinQ."; | "Container for QinQ."; | |||
| leaf s-tag { | leaf s-tag { | |||
| type dot1q-types:vlanid; | type dot1q-types:vlanid; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "S-TAG."; | "S-TAG."; | |||
| } | } | |||
| leaf c-tag { | leaf c-tag { | |||
| skipping to change at line 4766 ¶ | skipping to change at line 4594 ¶ | |||
| container vpn-network-accesses { | container vpn-network-accesses { | |||
| description | description | |||
| "Main container for VPN network accesses."; | "Main container for VPN network accesses."; | |||
| list vpn-network-access { | list vpn-network-access { | |||
| key "id"; | key "id"; | |||
| description | description | |||
| "List of VPN network accesses."; | "List of VPN network accesses."; | |||
| leaf id { | leaf id { | |||
| type vpn-common:vpn-id; | type vpn-common:vpn-id; | |||
| description | description | |||
| "Identifier of the network access"; | "Identifier of the network access."; | |||
| } | } | |||
| leaf description { | leaf description { | |||
| type string; | type string; | |||
| description | description | |||
| "A textual description of the VPN network | "A textual description of the VPN network | |||
| access."; | access."; | |||
| } | } | |||
| leaf interface-id { | leaf interface-id { | |||
| type string; | type string; | |||
| description | description | |||
| "Refers to a physical or logical interface."; | "Refers to a physical or logical interface."; | |||
| } | } | |||
| leaf active-vpn-node-profile { | leaf active-vpn-node-profile { | |||
| type leafref { | type leafref { | |||
| path "../../.." | path "../../.." | |||
| + "/active-global-parameters-profiles" | + "/active-global-parameters-profiles" | |||
| + "/global-parameters-profile/profile-id"; | + "/global-parameters-profile/profile-id"; | |||
| } | } | |||
| description | description | |||
| "An identifier of an active VPN instance | "An identifier of an active VPN instance | |||
| profile."; | profile."; | |||
| } | } | |||
| uses vpn-common:service-status; | uses vpn-common:service-status; | |||
| container connection { | container connection { | |||
| description | description | |||
| skipping to change at line 4825 ¶ | skipping to change at line 4653 ¶ | |||
| } | } | |||
| container encapsulation { | container encapsulation { | |||
| description | description | |||
| "Container for Layer 2 encapsulation."; | "Container for Layer 2 encapsulation."; | |||
| leaf encap-type { | leaf encap-type { | |||
| type identityref { | type identityref { | |||
| base vpn-common:encapsulation-type; | base vpn-common:encapsulation-type; | |||
| } | } | |||
| default "vpn-common:priority-tagged"; | default "vpn-common:priority-tagged"; | |||
| description | description | |||
| "Tagged interface type. By default, the | "Tagged interface type. By default, the | |||
| type of the tagged interface is | type of the tagged interface is | |||
| 'priority-tagged'."; | 'priority-tagged'."; | |||
| } | } | |||
| container dot1q { | container dot1q { | |||
| when "derived-from-or-self(../encap-type, " | when "derived-from-or-self(../encap-type, " | |||
| + "'vpn-common:dot1q')" { | + "'vpn-common:dot1q')" { | |||
| description | description | |||
| "Only applies when the type of the | "Only applies when the type of the | |||
| tagged interface is 'dot1q'."; | tagged interface is 'dot1q'."; | |||
| } | } | |||
| description | description | |||
| "Tagged interface."; | "Tagged interface."; | |||
| leaf tag-type { | leaf tag-type { | |||
| type identityref { | type identityref { | |||
| base vpn-common:tag-type; | base vpn-common:tag-type; | |||
| } | } | |||
| default "vpn-common:c-vlan"; | default "vpn-common:c-vlan"; | |||
| description | description | |||
| "Tag type. By default, the tag type is | "Tag type. By default, the tag type is | |||
| 'c-vlan'."; | 'c-vlan'."; | |||
| } | } | |||
| leaf cvlan-id { | leaf cvlan-id { | |||
| type dot1q-types:vlanid; | type dot1q-types:vlanid; | |||
| description | description | |||
| "VLAN identifier."; | "VLAN identifier."; | |||
| } | } | |||
| container tag-operations { | container tag-operations { | |||
| description | description | |||
| "Sets the tag manipulation policy for this | "Sets the tag manipulation policy for this | |||
| VPN network access. It defines a set of | VPN network access. It defines a set of | |||
| tag manipulations that allow for the | tag manipulations that allow for the | |||
| insertion, removal, or rewriting | insertion, removal, or rewriting | |||
| of 802.1Q VLAN tags. These operations are | of 802.1Q VLAN tags. These operations are | |||
| indicated for the CE-PE direction. | indicated for the CE-PE direction. | |||
| By default, tag operations are symmetric. | By default, tag operations are symmetric. | |||
| As such, the reverse tag operation is | As such, the reverse tag operation is | |||
| assumed on the PE-CE direction."; | assumed on the PE-CE direction."; | |||
| choice op-choice { | choice op-choice { | |||
| description | description | |||
| "Selects the tag rewriting policy for a | "Selects the tag rewriting policy for a | |||
| VPN network access."; | VPN network access."; | |||
| leaf pop { | leaf pop { | |||
| type empty; | type empty; | |||
| description | description | |||
| "Pop the outer tag."; | "Pop the outer tag."; | |||
| } | } | |||
| leaf push { | leaf push { | |||
| type empty; | type empty; | |||
| description | description | |||
| "Push one or two tags defined by the | "Pushes one or two tags defined by the | |||
| tag-1 and tag-2 leaves. It is | tag-1 and tag-2 leaves. It is | |||
| assumed that, absent any policy, the | assumed that, absent any policy, the | |||
| default value of 0 will be used for | default value of 0 will be used for | |||
| PCP setting."; | the PCP setting."; | |||
| } | } | |||
| leaf translate { | leaf translate { | |||
| type empty; | type empty; | |||
| description | description | |||
| "Translate the outer tag to one or two | "Translates the outer tag to one or two | |||
| tags. PCP bits are preserved."; | tags. PCP bits are preserved."; | |||
| } | } | |||
| } | } | |||
| leaf tag-1 { | leaf tag-1 { | |||
| when 'not(../pop)'; | when 'not(../pop)'; | |||
| type dot1q-types:vlanid; | type dot1q-types:vlanid; | |||
| description | description | |||
| "A first tag to be used for push or | "A first tag to be used for push or | |||
| translate operations. This tag will be | translate operations. This tag will be | |||
| used as the outermost tag as a result | used as the outermost tag as a result | |||
| of the tag operation."; | of the tag operation."; | |||
| } | } | |||
| leaf tag-1-type { | leaf tag-1-type { | |||
| type dot1q-types:dot1q-tag-type; | type dot1q-types:dot1q-tag-type; | |||
| default "dot1q-types:s-vlan"; | default "dot1q-types:s-vlan"; | |||
| description | description | |||
| "Specifies a specific 802.1Q tag type | "Specifies a specific 802.1Q tag type | |||
| of tag-1."; | of tag-1."; | |||
| } | } | |||
| skipping to change at line 4935 ¶ | skipping to change at line 4763 ¶ | |||
| tagged interface is 'priority-tagged'."; | tagged interface is 'priority-tagged'."; | |||
| } | } | |||
| description | description | |||
| "Priority tagged container."; | "Priority tagged container."; | |||
| leaf tag-type { | leaf tag-type { | |||
| type identityref { | type identityref { | |||
| base vpn-common:tag-type; | base vpn-common:tag-type; | |||
| } | } | |||
| default "vpn-common:c-vlan"; | default "vpn-common:c-vlan"; | |||
| description | description | |||
| "Tag type. By default, the tag type is | "Tag type. By default, the tag type is | |||
| 'c-vlan'."; | 'c-vlan'."; | |||
| } | } | |||
| } | } | |||
| container qinq { | container qinq { | |||
| when "derived-from-or-self(../encap-type, " | when "derived-from-or-self(../encap-type, " | |||
| + "'vpn-common:qinq')" { | + "'vpn-common:qinq')" { | |||
| description | description | |||
| "Only applies when the type of the tagged | "Only applies when the type of the tagged | |||
| interface is QinQ."; | interface is 'QinQ'."; | |||
| } | } | |||
| description | description | |||
| "Includes QinQ parameters."; | "Includes QinQ parameters."; | |||
| leaf tag-type { | leaf tag-type { | |||
| type identityref { | type identityref { | |||
| base vpn-common:tag-type; | base vpn-common:tag-type; | |||
| } | } | |||
| default "vpn-common:s-c-vlan"; | default "vpn-common:s-c-vlan"; | |||
| description | description | |||
| "Tag type. By default, the tag type is | "Tag type. By default, the tag type is | |||
| 's-c-vlan'."; | 's-c-vlan'."; | |||
| } | } | |||
| leaf svlan-id { | leaf svlan-id { | |||
| type dot1q-types:vlanid; | type dot1q-types:vlanid; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "S-VLAN identifier."; | "S-VLAN identifier."; | |||
| } | } | |||
| leaf cvlan-id { | leaf cvlan-id { | |||
| type dot1q-types:vlanid; | type dot1q-types:vlanid; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "C-VLAN identifier."; | "C-VLAN identifier."; | |||
| } | } | |||
| container tag-operations { | container tag-operations { | |||
| description | description | |||
| "Sets the tag manipulation policy for this | "Sets the tag manipulation policy for this | |||
| VPN network access. It defines a set of | VPN network access. It defines a set of | |||
| tag manipulations that allow for the | tag manipulations that allow for the | |||
| insertion, removal, or rewriting | insertion, removal, or rewriting | |||
| of 802.1Q VLAN tags. These operations are | of 802.1Q VLAN tags. These operations are | |||
| indicated for the CE-PE direction. | indicated for the CE-PE direction. | |||
| By default, tag operations are symmetric. | By default, tag operations are symmetric. | |||
| As such, the reverse tag operation is | As such, the reverse tag operation is | |||
| assumed on the PE-CE direction."; | assumed on the PE-CE direction."; | |||
| choice op-choice { | choice op-choice { | |||
| description | description | |||
| "Selects the tag rewriting policy for a | "Selects the tag rewriting policy for a | |||
| VPN network access."; | VPN network access."; | |||
| leaf pop { | leaf pop { | |||
| type uint8 { | type uint8 { | |||
| range "1|2"; | range "1|2"; | |||
| } | } | |||
| description | description | |||
| "Pop one or two tags as a function | "Pops one or two tags as a function | |||
| of the indicated pop value."; | of the indicated pop value."; | |||
| } | } | |||
| leaf push { | leaf push { | |||
| type empty; | type empty; | |||
| description | description | |||
| "Push one or two tags defined by the | "Pushes one or two tags defined by the | |||
| tag-1 and tag-2 leaves. It is | tag-1 and tag-2 leaves. It is | |||
| assumed that, absent any policy, the | assumed that, absent any policy, the | |||
| default value of 0 will be used for | default value of 0 will be used for | |||
| PCP setting."; | PCP setting."; | |||
| } | } | |||
| leaf translate { | leaf translate { | |||
| type uint8 { | type uint8 { | |||
| range "1|2"; | range "1|2"; | |||
| } | } | |||
| description | description | |||
| "Translate one or two outer tags. PCP | "Translates one or two outer tags. PCP | |||
| bits are preserved. | bits are preserved. | |||
| The following operations are | The following operations are | |||
| supported: | supported: | |||
| - translate 1 with tag-1 leaf is | - translate 1 with tag-1 leaf is | |||
| provided: only the outermost tag is | provided: only the outermost tag is | |||
| translated to the value in tag-1. | translated to the value in tag-1. | |||
| - translate 2 with both tag-1 and | - translate 2 with both tag-1 and | |||
| skipping to change at line 5033 ¶ | skipping to change at line 4861 ¶ | |||
| provided: the outer tag is popped | provided: the outer tag is popped | |||
| while the inner tag is translated | while the inner tag is translated | |||
| to the value in tag-1."; | to the value in tag-1."; | |||
| } | } | |||
| } | } | |||
| leaf tag-1 { | leaf tag-1 { | |||
| when 'not(../pop)'; | when 'not(../pop)'; | |||
| type dot1q-types:vlanid; | type dot1q-types:vlanid; | |||
| description | description | |||
| "A first tag to be used for push or | "A first tag to be used for push or | |||
| translate operations. This tag will be | translate operations. This tag will be | |||
| used as the outermost tag as a result | used as the outermost tag as a result | |||
| of the tag operation."; | of the tag operation."; | |||
| } | } | |||
| leaf tag-1-type { | leaf tag-1-type { | |||
| type dot1q-types:dot1q-tag-type; | type dot1q-types:dot1q-tag-type; | |||
| default "dot1q-types:s-vlan"; | default "dot1q-types:s-vlan"; | |||
| description | description | |||
| "Specifies a specific 802.1Q tag type | "Specifies a specific 802.1Q tag type | |||
| of tag-1."; | of tag-1."; | |||
| } | } | |||
| skipping to change at line 5092 ¶ | skipping to change at line 4920 ¶ | |||
| base lacp-mode; | base lacp-mode; | |||
| } | } | |||
| description | description | |||
| "Indicates the LACP mode."; | "Indicates the LACP mode."; | |||
| } | } | |||
| leaf speed { | leaf speed { | |||
| type uint32; | type uint32; | |||
| units "mbps"; | units "mbps"; | |||
| default "10"; | default "10"; | |||
| description | description | |||
| "LACP speed. This low default value | "LACP speed. This low default value | |||
| is inherited from the L2SM."; | is inherited from the L2SM."; | |||
| } | } | |||
| leaf mini-link-num { | leaf mini-link-num { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Defines the minimum number of links that | "Defines the minimum number of links that | |||
| must be active before the aggregating | must be active before the aggregating | |||
| link is put into service."; | link is put into service."; | |||
| } | } | |||
| leaf system-id { | leaf system-id { | |||
| skipping to change at line 5157 ¶ | skipping to change at line 4985 ¶ | |||
| } | } | |||
| leaf link-mtu { | leaf link-mtu { | |||
| type uint32; | type uint32; | |||
| units "bytes"; | units "bytes"; | |||
| description | description | |||
| "Link MTU size."; | "Link MTU size."; | |||
| } | } | |||
| container oam-802.3ah-link { | container oam-802.3ah-link { | |||
| if-feature "oam-3ah"; | if-feature "oam-3ah"; | |||
| description | description | |||
| "Container for oam 802.3ah link."; | "Container for the OAM 802.3ah | |||
| link."; | ||||
| leaf enable { | leaf enable { | |||
| type boolean; | type boolean; | |||
| default "false"; | default "false"; | |||
| description | description | |||
| "Indicates support of OAM 802.3ah | "Indicates support of the OAM | |||
| link."; | 802.3ah link."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| leaf flow-control { | leaf flow-control { | |||
| type boolean; | type boolean; | |||
| default "false"; | default "false"; | |||
| description | description | |||
| "Indicates whether flow control is | "Indicates whether flow control is | |||
| supported."; | supported."; | |||
| } | } | |||
| leaf lldp { | leaf lldp { | |||
| type boolean; | type boolean; | |||
| default "false"; | default "false"; | |||
| description | description | |||
| "Indicates whether Link Layer Discovery | "Indicates whether the Link Layer | |||
| Protocol (LLDP) is supported."; | Discovery Protocol (LLDP) is | |||
| supported."; | ||||
| } | } | |||
| } | } | |||
| container split-horizon { | container split-horizon { | |||
| description | description | |||
| "Configuration with split horizon enabled."; | "Configuration with Split Horizon enabled."; | |||
| leaf group-name { | leaf group-name { | |||
| type string; | type string; | |||
| description | description | |||
| "Group name of the Split Horizon."; | "Group name of the Split Horizon."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| choice signaling-option { | choice signaling-option { | |||
| description | description | |||
| skipping to change at line 5254 ¶ | skipping to change at line 5084 ¶ | |||
| "Used for EVPN."; | "Used for EVPN."; | |||
| leaf df-preference { | leaf df-preference { | |||
| type uint16; | type uint16; | |||
| default "32767"; | default "32767"; | |||
| description | description | |||
| "Defines a 2-octet value that indicates | "Defines a 2-octet value that indicates | |||
| the PE preference to become the DF in | the PE preference to become the DF in | |||
| the ES. | the ES. | |||
| The preference value is only applicable | The preference value is only applicable | |||
| to the preference based method."; | to the preference-based method."; | |||
| reference | reference | |||
| "RFC 8584: Framework for Ethernet VPN | "RFC 8584: Framework for Ethernet VPN | |||
| Designated Forwarder Election | Designated Forwarder Election | |||
| Extensibility"; | Extensibility"; | |||
| } | } | |||
| container vpws-service-instance { | container vpws-service-instance { | |||
| when "derived-from-or-self(../../../../../" | when "derived-from-or-self(../../../../../" | |||
| + "vpn-type, 'vpn-common:vpws-evpn')" { | + "vpn-type, 'vpn-common:vpws-evpn')" { | |||
| description | description | |||
| "Only applies for EVPN-VPWS."; | "Only applies for EVPN-VPWS."; | |||
| skipping to change at line 5296 ¶ | skipping to change at line 5126 ¶ | |||
| } | } | |||
| case auto-assigned { | case auto-assigned { | |||
| description | description | |||
| "The local VSI is auto-assigned."; | "The local VSI is auto-assigned."; | |||
| container local-vsi-auto { | container local-vsi-auto { | |||
| description | description | |||
| "The local VSI is auto-assigned."; | "The local VSI is auto-assigned."; | |||
| choice auto-mode { | choice auto-mode { | |||
| description | description | |||
| "Indicates the auto-assignment | "Indicates the auto-assignment | |||
| mode of local VSI. VSI can be | mode of local VSI. VSI can be | |||
| automatically assigned either | automatically assigned either | |||
| with or without indicating a | with or without indicating a | |||
| pool from which the VSI | pool from which the VSI | |||
| should be taken. | should be taken. | |||
| For both cases, the server | For both cases, the server | |||
| will auto-assign a local VSI | will auto-assign a local VSI | |||
| value and use that value."; | value and use that value."; | |||
| case from-pool { | case from-pool { | |||
| leaf vsi-pool-name { | leaf vsi-pool-name { | |||
| skipping to change at line 5358 ¶ | skipping to change at line 5188 ¶ | |||
| } | } | |||
| case auto-assigned { | case auto-assigned { | |||
| description | description | |||
| "The remote VSI is auto-assigned."; | "The remote VSI is auto-assigned."; | |||
| container remote-vsi-auto { | container remote-vsi-auto { | |||
| description | description | |||
| "The remote VSI is auto-assigned."; | "The remote VSI is auto-assigned."; | |||
| choice auto-mode { | choice auto-mode { | |||
| description | description | |||
| "Indicates the auto-assignment | "Indicates the auto-assignment | |||
| mode of remote VSI. VSI can be | mode of remote VSI. VSI can be | |||
| automatically assigned either | automatically assigned either | |||
| with or without indicating a | with or without indicating a | |||
| pool from which the VSI | pool from which the VSI | |||
| should be taken. | should be taken. | |||
| For both cases, the server | For both cases, the server | |||
| will auto-assign a remote VSI | will auto-assign a remote VSI | |||
| value and use that value."; | value and use that value."; | |||
| case from-pool { | case from-pool { | |||
| leaf vsi-pool-name { | leaf vsi-pool-name { | |||
| skipping to change at line 5416 ¶ | skipping to change at line 5246 ¶ | |||
| type string; | type string; | |||
| description | description | |||
| "Indicates the group-id to which the network | "Indicates the group-id to which the network | |||
| access belongs to."; | access belongs to."; | |||
| } | } | |||
| leaf precedence { | leaf precedence { | |||
| type identityref { | type identityref { | |||
| base precedence-type; | base precedence-type; | |||
| } | } | |||
| description | description | |||
| "Defining service redundancy in transport | "Defines service redundancy in transport | |||
| network."; | network."; | |||
| } | } | |||
| leaf ethernet-segment-identifier { | leaf ethernet-segment-identifier { | |||
| type l2vpn-es:es-ref; | type l2vpn-es:es-ref; | |||
| description | description | |||
| "Reference to the ESI associated with the VPN | "Reference to the ESI associated with the VPN | |||
| network access."; | network access."; | |||
| } | } | |||
| } | } | |||
| container ethernet-service-oam { | container ethernet-service-oam { | |||
| skipping to change at line 5464 ¶ | skipping to change at line 5294 ¶ | |||
| } | } | |||
| uses y-1731; | uses y-1731; | |||
| } | } | |||
| container service { | container service { | |||
| description | description | |||
| "Container for service"; | "Container for service"; | |||
| leaf mtu { | leaf mtu { | |||
| type uint32; | type uint32; | |||
| units "bytes"; | units "bytes"; | |||
| description | description | |||
| "Layer 2 MTU, it is also known as the maximum | "Layer 2 MTU; it is also known as the maximum | |||
| transmission unit or maximum frame size."; | transmission unit or maximum frame size."; | |||
| } | } | |||
| container svc-pe-to-ce-bandwidth { | container svc-pe-to-ce-bandwidth { | |||
| if-feature "vpn-common:inbound-bw"; | if-feature "vpn-common:inbound-bw"; | |||
| description | description | |||
| "From the customer site's perspective, the | "From the customer site's perspective, the | |||
| service inbound bandwidth of the connection | service inbound bandwidth of the connection | |||
| or download bandwidth from the service | or download bandwidth from the service | |||
| provider the site. Note that the L2SM uses | provider to the site. Note that the L2SM uses | |||
| 'input-bandwidth' to refer to the same | 'input-bandwidth' to refer to the same | |||
| concept."; | concept."; | |||
| list pe-to-ce-bandwidth { | list pe-to-ce-bandwidth { | |||
| key "bw-type"; | key "bw-type"; | |||
| description | description | |||
| "List for PE-to-CE bandwidth data nodes."; | "List for PE-to-CE bandwidth data nodes."; | |||
| leaf bw-type { | leaf bw-type { | |||
| type identityref { | type identityref { | |||
| base vpn-common:bw-type; | base vpn-common:bw-type; | |||
| } | } | |||
| skipping to change at line 5496 ¶ | skipping to change at line 5326 ¶ | |||
| } | } | |||
| choice type { | choice type { | |||
| description | description | |||
| "Choice based upon bandwidth type."; | "Choice based upon bandwidth type."; | |||
| case per-cos { | case per-cos { | |||
| description | description | |||
| "Bandwidth per CoS."; | "Bandwidth per CoS."; | |||
| list cos { | list cos { | |||
| key "cos-id"; | key "cos-id"; | |||
| description | description | |||
| "List of class of services."; | "List of Class of Services."; | |||
| leaf cos-id { | leaf cos-id { | |||
| type uint8; | type uint8; | |||
| description | description | |||
| "Identifier of the CoS, indicated by | "Identifier of the CoS, indicated by | |||
| DSCP or a CE-CLAN CoS (802.1p) value | a Differentiated Services Code Point | |||
| in the service frame."; | (DSCP) or a CE-CLAN CoS (802.1p) | |||
| value in the service frame."; | ||||
| reference | reference | |||
| "IEEE Std 802.1Q: Bridges and Bridged | "IEEE Std 802.1Q: Bridges and Bridged | |||
| Networks"; | Networks"; | |||
| } | } | |||
| uses bandwidth-parameters; | uses bandwidth-parameters; | |||
| } | } | |||
| } | } | |||
| case other { | case other { | |||
| description | description | |||
| "Other bandwidth types."; | "Other bandwidth types."; | |||
| skipping to change at line 5524 ¶ | skipping to change at line 5355 ¶ | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| container svc-ce-to-pe-bandwidth { | container svc-ce-to-pe-bandwidth { | |||
| if-feature "vpn-common:outbound-bw"; | if-feature "vpn-common:outbound-bw"; | |||
| description | description | |||
| "From the customer site's perspective, | "From the customer site's perspective, | |||
| the service outbound bandwidth of the | the service outbound bandwidth of the | |||
| connection or upload bandwidth from | connection or upload bandwidth from | |||
| the CE to the PE. Note that the L2SM uses | the CE to the PE. Note that the L2SM uses | |||
| 'output-bandwidth' to refer to the same | 'output-bandwidth' to refer to the same | |||
| concept."; | concept."; | |||
| list ce-to-pe-bandwidth { | list ce-to-pe-bandwidth { | |||
| key "bw-type"; | key "bw-type"; | |||
| description | description | |||
| "List for CE-to-PE bandwidth."; | "List for CE-to-PE bandwidth."; | |||
| leaf bw-type { | leaf bw-type { | |||
| type identityref { | type identityref { | |||
| base vpn-common:bw-type; | base vpn-common:bw-type; | |||
| } | } | |||
| skipping to change at line 5547 ¶ | skipping to change at line 5378 ¶ | |||
| } | } | |||
| choice type { | choice type { | |||
| description | description | |||
| "Choice based upon bandwidth type."; | "Choice based upon bandwidth type."; | |||
| case per-cos { | case per-cos { | |||
| description | description | |||
| "Bandwidth per CoS."; | "Bandwidth per CoS."; | |||
| list cos { | list cos { | |||
| key "cos-id"; | key "cos-id"; | |||
| description | description | |||
| "List of class of services."; | "List of Class of Services."; | |||
| leaf cos-id { | leaf cos-id { | |||
| type uint8; | type uint8; | |||
| description | description | |||
| "Identifier of the CoS, indicated by | "Identifier of the CoS, indicated by | |||
| DSCP or a CE-CLAN CoS (802.1p) value | DSCP or a CE-CLAN CoS (802.1p) value | |||
| in the service frame."; | in the service frame."; | |||
| reference | reference | |||
| "IEEE Std 802.1Q: Bridges and Bridged | "IEEE Std 802.1Q: Bridges and Bridged | |||
| Networks"; | Networks"; | |||
| } | } | |||
| skipping to change at line 5668 ¶ | skipping to change at line 5499 ¶ | |||
| } | } | |||
| } | } | |||
| } | } | |||
| container qos-profile { | container qos-profile { | |||
| description | description | |||
| "QoS profile configuration."; | "QoS profile configuration."; | |||
| list qos-profile { | list qos-profile { | |||
| key "profile"; | key "profile"; | |||
| description | description | |||
| "QoS profile. | "QoS profile. | |||
| Can be standard profile or customized | Can be a standard or customized | |||
| profile."; | profile."; | |||
| leaf profile { | leaf profile { | |||
| type leafref { | type leafref { | |||
| path "/l2vpn-ntw/vpn-profiles" | path "/l2vpn-ntw/vpn-profiles" | |||
| + "/valid-provider-identifiers" | + "/valid-provider-identifiers" | |||
| + "/qos-profile-identifier/id"; | + "/qos-profile-identifier/id"; | |||
| } | } | |||
| description | description | |||
| "QoS profile to be used."; | "QoS profile to be used."; | |||
| } | } | |||
| skipping to change at line 5697 ¶ | skipping to change at line 5528 ¶ | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| container mac-policies { | container mac-policies { | |||
| description | description | |||
| "Container for MAC-related policies."; | "Container for MAC-related policies."; | |||
| list access-control-list { | list access-control-list { | |||
| key "name"; | key "name"; | |||
| description | description | |||
| "Container for access control List."; | "Container for the Access Control List | |||
| (ACL)."; | ||||
| leaf name { | leaf name { | |||
| type string; | type string; | |||
| description | description | |||
| "Specifies the name of the ACL."; | "Specifies the name of the ACL."; | |||
| } | } | |||
| leaf-list src-mac-address { | leaf-list src-mac-address { | |||
| type yang:mac-address; | type yang:mac-address; | |||
| description | description | |||
| "Specifies the source MAC address."; | "Specifies the source MAC address."; | |||
| } | } | |||
| skipping to change at line 5773 ¶ | skipping to change at line 5605 ¶ | |||
| duplication, where a 'duplicate MAC | duplication, where a 'duplicate MAC | |||
| address' situation has occurred and | address' situation has occurred and | |||
| the duplicate MAC address has been | the duplicate MAC address has been | |||
| added to a list of duplicate MAC | added to a list of duplicate MAC | |||
| addresses."; | addresses."; | |||
| } | } | |||
| leaf retry-timer { | leaf retry-timer { | |||
| type uint32; | type uint32; | |||
| units "seconds"; | units "seconds"; | |||
| description | description | |||
| "The retry timer. When the retry timer | "The retry timer. When the retry timer | |||
| expires, the duplicate MAC address will | expires, the duplicate MAC address will | |||
| be flushed from the MAC-VRF."; | be flushed from the MAC-VRF."; | |||
| } | } | |||
| leaf protection-type { | leaf protection-type { | |||
| type identityref { | type identityref { | |||
| base loop-prevention-type; | base loop-prevention-type; | |||
| } | } | |||
| default "trap"; | default "trap"; | |||
| description | description | |||
| "Protection type"; | "Protection type"; | |||
| } | } | |||
| } | } | |||
| container mac-addr-limit { | container mac-addr-limit { | |||
| description | description | |||
| "Container of MAC-Addr limit configurations"; | "Container of MAC-Addr limit | |||
| configurations."; | ||||
| leaf limit-number { | leaf limit-number { | |||
| type uint16; | type uint16; | |||
| default "2"; | default "2"; | |||
| description | description | |||
| "Maximum number of MAC addresses learned | "Maximum number of MAC addresses learned | |||
| from the subscriber for a single service | from the subscriber for a single service | |||
| instance."; | instance."; | |||
| } | } | |||
| leaf time-interval { | leaf time-interval { | |||
| type uint32; | type uint32; | |||
| units "milliseconds"; | units "milliseconds"; | |||
| default "300"; | default "300"; | |||
| description | description | |||
| "The aging time of the mac address."; | "The aging time of the MAC address."; | |||
| } | } | |||
| leaf action { | leaf action { | |||
| type identityref { | type identityref { | |||
| base mac-action; | base mac-action; | |||
| } | } | |||
| default "warning"; | default "warning"; | |||
| description | description | |||
| "Specifies the action when the upper limit | "Specifies the action when the upper limit | |||
| is exceeded: drop the packet, flood the | is exceeded: drop the packet, flood the | |||
| packet, or log a warning message (without | packet, or log a warning message (without | |||
| dropping the packet)."; | dropping the packet)."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| container broadcast-unknown-unicast-multicast { | container broadcast-unknown-unicast-multicast { | |||
| description | description | |||
| "Container of broadcast, unknown unicast, and | "Container of broadcast, unknown unicast, or | |||
| multicast configurations"; | multicast configurations."; | |||
| leaf multicast-site-type { | leaf multicast-site-type { | |||
| type enumeration { | type enumeration { | |||
| enum receiver-only { | enum receiver-only { | |||
| description | description | |||
| "The site only has receivers."; | "The site only has receivers."; | |||
| } | } | |||
| enum source-only { | enum source-only { | |||
| description | description | |||
| "The site only has sources."; | "The site only has sources."; | |||
| } | } | |||
| skipping to change at line 5844 ¶ | skipping to change at line 5677 ¶ | |||
| receivers."; | receivers."; | |||
| } | } | |||
| } | } | |||
| default "source-receiver"; | default "source-receiver"; | |||
| description | description | |||
| "Type of the multicast site."; | "Type of the multicast site."; | |||
| } | } | |||
| list multicast-gp-address-mapping { | list multicast-gp-address-mapping { | |||
| key "id"; | key "id"; | |||
| description | description | |||
| "List of Port to group mappings."; | "List of port-to-group mappings."; | |||
| leaf id { | leaf id { | |||
| type uint16; | type uint16; | |||
| description | description | |||
| "Unique identifier for the mapping."; | "Unique identifier for the mapping."; | |||
| } | } | |||
| leaf vlan-id { | leaf vlan-id { | |||
| type uint32; | type uint32; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "The VLAN ID of the multicast group."; | "The VLAN ID of the multicast group."; | |||
| skipping to change at line 5885 ¶ | skipping to change at line 5718 ¶ | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> ]]></artwork> | ]]></sourcecode> | |||
| </figure> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="Security" title="Security Considerations"> | <section anchor="Security" numbered="true" toc="default"> | |||
| <t>The YANG modules specified in this document defines schemas for data | <name>Security Considerations</name> | |||
| <t>The YANG modules specified in this document define schemas for data | ||||
| that are designed to be accessed via network management protocols such | that are designed to be accessed via network management protocols such | |||
| as NETCONF <xref target="RFC6241"></xref> or RESTCONF <xref | as NETCONF <xref target="RFC6241" format="default"/> or RESTCONF <xref tar | |||
| target="RFC8040"></xref>. The lowest NETCONF layer is the secure | get="RFC8040" format="default"/>. The lowest NETCONF layer is the secure | |||
| transport layer, and the mandatory-to-implement secure transport is | transport layer, and the mandatory-to-implement secure transport is | |||
| Secure Shell (SSH) <xref target="RFC6242"></xref>. The lowest RESTCONF | Secure Shell (SSH) <xref target="RFC6242" format="default"/>. The lowest R ESTCONF | |||
| layer is HTTPS, and the mandatory-to-implement secure transport is TLS | layer is HTTPS, and the mandatory-to-implement secure transport is TLS | |||
| <xref target="RFC8446"></xref>.</t> | <xref target="RFC8446" format="default"/>.</t> | |||
| <t>The Network Configuration Access Control Model (NACM) <xref target="RFC8 | ||||
| <t>The Network Configuration Access Control Model (NACM) <xref | 341" format="default"/> provides the means to restrict access for | |||
| target="RFC8341"></xref> provides the means to restrict access for | ||||
| particular NETCONF or RESTCONF users to a preconfigured subset of all | particular NETCONF or RESTCONF users to a preconfigured subset of all | |||
| available NETCONF or RESTCONF protocol operations and content.</t> | available NETCONF or RESTCONF protocol operations and content.</t> | |||
| <t>There are a number of data nodes defined in "ietf-l2vpn-ntw" and | <t>There are a number of data nodes defined in the "ietf-l2vpn-ntw" and | |||
| "ietf-ethernet-segment" YANG modules that are | "ietf-ethernet-segment" YANG modules that are | |||
| writable/creatable/deletable (i.e., config true, which is the default). | writable/creatable/deletable (i.e., config true, which is the default). | |||
| These data nodes may be considered sensitive or vulnerable in some | These data nodes may be considered sensitive or vulnerable in some | |||
| network environments. Write operations (e.g., edit-config) and delete | network environments. Write operations (e.g., edit-config) and delete | |||
| operations to these data nodes without proper protection or | operations to these data nodes without proper protection or | |||
| authentication can have a negative effect on network operations. These | authentication can have a negative effect on network operations. These | |||
| are the subtrees and data nodes and their sensitivity/vulnerability in | are the subtrees and data nodes and their sensitivity/vulnerability in | |||
| the "ietf-l2vpn-ntw" and "ietf-ethernet-segment" modules: <list | the "ietf-l2vpn-ntw" and "ietf-ethernet-segment" modules: </t> | |||
| style="symbols"> | ||||
| <t>'vpn-profiles': This container includes a set of sensitive data | ||||
| that influence how the L3VPN service is delivered. For example, an | ||||
| attacker who has access to these data nodes may be able to | ||||
| manipulate routing policies, QoS policies, or encryption properties. | ||||
| These data nodes are defined with "nacm:default-deny-write" tagging | ||||
| <xref target="RFC9181"></xref>.</t> | ||||
| <t>'ethernet-segments' and 'vpn-services': An attacker who is able | <dl> | |||
| to access network nodes can undertake various attacks, such as | <dt>'vpn-profiles': | |||
| deleting a running L2VPN service, interrupting all the traffic of a | </dt> | |||
| client. In addition, an attacker may modify the attributes of a | <dd> This container includes a set of sensitive data that influences | |||
| running service (e.g., QoS, bandwidth) or an ES, leading to | how the L3VPN service is delivered. For example, an attacker who has | |||
| malfunctioning of the service and therefore to SLA violations. In | access to these data nodes may be able to manipulate routing policies, | |||
| addition, an attacker could attempt to create an L2VPN service, add | QoS policies, or encryption properties. These data nodes are defined | |||
| a new network access, or intercept/redirect the traffic to a | with "nacm:default-deny-write" tagging <xref target="RFC9181" | |||
| non-authorized node. In addition to using NACM to prevent authorized | format="default"/>. | |||
| access, such activity can be detected by adequately monitoring and | </dd> | |||
| tracking network configuration changes.</t> | ||||
| </list></t> | ||||
| <t>Some of the readable data nodes in the "ietf-l2vpn-ntw" YANG module | <dt>'ethernet-segments' and 'vpn-services': | |||
| </dt> | ||||
| <dd>An attacker who is able to access network nodes can undertake | ||||
| various attacks, such as deleting a running L2VPN service, | ||||
| interrupting all the traffic of a client. In addition, an attacker may | ||||
| modify the attributes of a running service (e.g., QoS, bandwidth) or | ||||
| an ES, leading to malfunctioning of the service and therefore to SLA | ||||
| violations. In addition, an attacker could attempt to create an L2VPN | ||||
| service, add a new network access, or intercept/redirect the traffic | ||||
| to a non-authorized node. In addition to using NACM to prevent | ||||
| authorized access, such activity can be detected by adequately | ||||
| monitoring and tracking network configuration changes. | ||||
| </dd> | ||||
| </dl> | ||||
| <t>Some of the readable data nodes in the "ietf-l2vpn-ntw" YANG module | ||||
| may be considered sensitive or vulnerable in some network environments. | may be considered sensitive or vulnerable in some network environments. | |||
| It is thus important to control read access (e.g., via get, get-config, | It is thus important to control read access (e.g., via get, get-config, | |||
| or notification) to these data nodes. These are the subtrees and data | or notification) to these data nodes. | |||
| These are the subtrees and data | ||||
| nodes and their sensitivity/vulnerability:</t> | nodes and their sensitivity/vulnerability:</t> | |||
| <t><list style="symbols"> | <dl> | |||
| <t>'customer-name' and 'ip-connection': An attacker can retrieve | <dt>'customer-name' and 'ip-connection': | |||
| privacy-related information which can be used to track a customer. | </dt> | |||
| Disclosing such information may be considered as a violation of the | <dd>An attacker can retrieve privacy-related information that can be used to | |||
| customer-provider trust relationship.</t> | track a customer. Disclosing such information may be considered a | |||
| </list></t> | violation of the customer-provider trust relationship. | |||
| </dd> | ||||
| </dl> | ||||
| <t>Both "iana-bgp-l2-encaps" and "iana-pseudowire-types" modules define | <t>Both "iana-bgp-l2-encaps" and "iana-pseudowire-types" modules define | |||
| YANG identities for encapsulation/pseudowires types. These identities | YANG identities for encapsulation/pseudowires types. These identities | |||
| are intended to be referenced by other YANG modules, and by themselves | are intended to be referenced by other YANG modules and by themselves | |||
| do not expose any nodes which are writable, contain read-only state, or | do not expose any nodes that are writable or contain read-only state or | |||
| RPCs.</t> | RPCs.</t> | |||
| </section> | </section> | |||
| <section anchor="IANA" numbered="true" toc="default"> | ||||
| <name>IANA Considerations</name> | ||||
| <section numbered="true" toc="default"> | ||||
| <name>Registering YANG Modules</name> | ||||
| <t>IANA has registered the following URIs in the | ||||
| "ns" subregistry within the "IETF XML Registry" <xref target="RFC3688" f | ||||
| ormat="default"/>:</t> | ||||
| <section anchor="IANA" title="IANA Considerations"> | <dl spacing="compact"> | |||
| <section title="Registering YANG Modules"> | <dt>URI: | |||
| <t>This document requests IANA to register the following URIs in the | </dt> | |||
| "ns" subregistry within the "IETF XML Registry" <xref | <dd>urn:ietf:params:xml:ns:yang:iana-bgp-l2-encaps | |||
| target="RFC3688"></xref>:</t> | </dd> | |||
| <figure> | <dt>Registrant Contact: | |||
| <artwork><![CDATA[ URI: urn:ietf:params:xml:ns:yang:iana-bgp-l2-e | </dt> | |||
| ncaps | <dd>The IESG. | |||
| Registrant Contact: The IESG. | </dd> | |||
| XML: N/A; the requested URI is an XML namespace. | ||||
| URI: urn:ietf:params:xml:ns:yang:iana-pseudowire-types | <dt>XML: | |||
| Registrant Contact: The IESG. | </dt> | |||
| XML: N/A; the requested URI is an XML namespace. | <dd>N/A; the requested URI is an XML namespace. | |||
| </dd> | ||||
| </dl> | ||||
| URI: urn:ietf:params:xml:ns:yang:ietf-ethernet-segment | <dl spacing="compact"> | |||
| Registrant Contact: The IESG. | <dt>URI: | |||
| XML: N/A; the requested URI is an XML namespace. | </dt> | |||
| <dd>urn:ietf:params:xml:ns:yang:iana-pseudowire-types | ||||
| </dd> | ||||
| URI: urn:ietf:params:xml:ns:yang:ietf-l2vpn-ntw | <dt>Registrant Contact: | |||
| Registrant Contact: The IESG. | </dt> | |||
| XML: N/A; the requested URI is an XML namespace.]]></artwork> | <dd>The IESG. | |||
| </figure> | </dd> | |||
| <t>This document requests IANA to register the following YANG modules | <dt>XML: | |||
| in the "YANG Module Names" subregistry <xref target="RFC6020"></xref> | </dt> | |||
| <dd>N/A; the requested URI is an XML namespace. | ||||
| </dd> | ||||
| </dl> | ||||
| <dl spacing="compact"> | ||||
| <dt>URI: | ||||
| </dt> | ||||
| <dd>urn:ietf:params:xml:ns:yang:ietf-ethernet-segment | ||||
| </dd> | ||||
| <dt>Registrant Contact: | ||||
| </dt> | ||||
| <dd>The IESG. | ||||
| </dd> | ||||
| <dt>XML: | ||||
| </dt> | ||||
| <dd>N/A; the requested URI is an XML namespace. | ||||
| </dd> | ||||
| </dl> | ||||
| <dl spacing="compact"> | ||||
| <dt>URI: | ||||
| </dt> | ||||
| <dd>urn:ietf:params:xml:ns:yang:ietf-l2vpn-ntw | ||||
| </dd> | ||||
| <dt>Registrant Contact: | ||||
| </dt> | ||||
| <dd>The IESG. | ||||
| </dd> | ||||
| <dt>XML: | ||||
| </dt> | ||||
| <dd>N/A; the requested URI is an XML namespace. | ||||
| </dd> | ||||
| </dl> | ||||
| <t>IANA has registered the following YANG modules | ||||
| in the "YANG Module Names" subregistry <xref target="RFC6020" format="de | ||||
| fault"/> | ||||
| within the "YANG Parameters" registry:</t> | within the "YANG Parameters" registry:</t> | |||
| <figure> | <dl spacing="compact"> | |||
| <artwork><![CDATA[ name: iana-bgp-l2-encaps | <dt>name:</dt> | |||
| namespace: urn:ietf:params:xml:ns:yang:iana-bgp-l2-encaps | <dd>iana-bgp-l2-encaps | |||
| maintained by IANA: Y | </dd> | |||
| prefix: iana-bgp-l2-encaps | ||||
| reference: RFC XXXX | ||||
| name: iana-pseudowire-types | <dt>namespace:</dt> | |||
| namespace: urn:ietf:params:xml:ns:yang:iana-pseudowire-types | <dd>urn:ietf:params:xml:ns:yang:iana-bgp-l2-encaps | |||
| maintained by IANA: Y | </dd> | |||
| prefix: iana-pw-types | ||||
| reference: RFC XXXX | ||||
| name: ietf-ethernet-segment | <dt>maintained by IANA:</dt> | |||
| namespace: urn:ietf:params:xml:ns:yang:ietf-ethernet-segment | <dd>Y | |||
| maintained by IANA: N | </dd> | |||
| prefix: l2vpn-es | ||||
| reference: RFC XXXX | ||||
| name: ietf-l2vpn-ntw | <dt>prefix:</dt> | |||
| namespace: urn:ietf:params:xml:ns:yang:ietf-l2vpn-ntw | <dd>iana-bgp-l2-encaps | |||
| maintained by IANA: N | </dd> | |||
| prefix: l2vpn-ntw | ||||
| reference: RFC XXXX]]></artwork> | ||||
| </figure> | ||||
| <t></t> | <dt>reference:</dt> | |||
| </section> | <dd>RFC 9291 | |||
| </dd> | ||||
| <section title="BGP Layer 2 Encapsulation Types"> | </dl> | |||
| <dl spacing="compact"> | ||||
| <dt>name:</dt> | ||||
| <dd>iana-pseudowire-types | ||||
| </dd> | ||||
| <dt>namespace:</dt> | ||||
| <dd>urn:ietf:params:xml:ns:yang:iana-pseudowire-types | ||||
| </dd> | ||||
| <dt>maintained by IANA:</dt> | ||||
| <dd>Y | ||||
| </dd> | ||||
| <dt>prefix:</dt> | ||||
| <dd>iana-pw-types | ||||
| </dd> | ||||
| <dt>reference:</dt> | ||||
| <dd>RFC 9291 | ||||
| </dd> | ||||
| </dl> | ||||
| <dl spacing="compact"> | ||||
| <dt>name:</dt> | ||||
| <dd>ietf-ethernet-segment | ||||
| </dd> | ||||
| <dt>namespace:</dt> | ||||
| <dd>urn:ietf:params:xml:ns:yang:ietf-ethernet-segment | ||||
| </dd> | ||||
| <dt>maintained by IANA:</dt> | ||||
| <dd>N | ||||
| </dd> | ||||
| <dt>prefix:</dt> | ||||
| <dd>l2vpn-es | ||||
| </dd> | ||||
| <dt>reference:</dt> | ||||
| <dd>RFC 9291 | ||||
| </dd> | ||||
| </dl> | ||||
| <dl spacing="compact"> | ||||
| <dt>name:</dt> | ||||
| <dd>ietf-l2vpn-ntw | ||||
| </dd> | ||||
| <dt>namespace:</dt> | ||||
| <dd>urn:ietf:params:xml:ns:yang:ietf-l2vpn-ntw | ||||
| </dd> | ||||
| <dt>maintained by IANA:</dt> | ||||
| <dd>N | ||||
| </dd> | ||||
| <dt>prefix:</dt> | ||||
| <dd>l2vpn-ntw | ||||
| </dd> | ||||
| <dt>reference:</dt> | ||||
| <dd>RFC 9291 | ||||
| </dd> | ||||
| </dl> | ||||
| <t/> | ||||
| </section> | ||||
| <section numbered="true" toc="default"> | ||||
| <name>BGP Layer 2 Encapsulation Types</name> | ||||
| <t>This document defines the initial version of the IANA-maintained | <t>This document defines the initial version of the IANA-maintained | |||
| "iana-bgp-l2-encaps" YANG module (<xref target="iana-bgp"></xref>). | "iana-bgp-l2-encaps" YANG module (<xref target="iana-bgp" format="defaul | |||
| IANA is requested to add this note to the registry:<list style="empty"> | t"/>). | |||
| <t>BGP Layer 2 encapsulation types must not be directly added to | IANA has added this note to the "YANG Module Names" registry:</t> | |||
| <ul empty="true" spacing="normal"> | ||||
| <li>BGP Layer 2 encapsulation types must not be directly added to | ||||
| the "iana-bgp-l2-encaps" YANG module. They must instead be added | the "iana-bgp-l2-encaps" YANG module. They must instead be added | |||
| to the "BGP Layer 2 Encapsulation Types" registry <xref | to the "BGP Layer 2 Encapsulation Types" registry at <xref target="I | |||
| target="IANA-BGP-L2"></xref>.</t> | ANA-BGP-L2" format="default"/>.</li> | |||
| </list></t> | </ul> | |||
| <t>When a Layer 2 encapsulation type is added to the "BGP Layer 2 | <t>When a Layer 2 encapsulation type is added to the "BGP Layer 2 | |||
| Encapsulation Types" registry, a new "identity" statement must be | Encapsulation Types" registry, a new "identity" statement must be | |||
| added to the "iana-bgp-l2-encaps" YANG module. The name of the | added to the "iana-bgp-l2-encaps" YANG module. The name of the | |||
| "identity" is a lower-case version of the encapsulation name provided | "identity" is a lower-case version of the encapsulation name provided | |||
| in the description. The "identity" statement should have the following | in the description. The "identity" statement should have the following | |||
| sub-statements defined:</t> | sub-statements defined:</t> | |||
| <dl newline="false" spacing="normal" indent="15"> | ||||
| <t><list hangIndent="15" style="hanging"> | <dt>"base":</dt> | |||
| <t hangText=""base":">Contains 'bgp-l2-encaps-type'.</t> | <dd>Contains 'bgp-l2-encaps-type'.</dd> | |||
| <dt>"description":</dt> | ||||
| <t hangText=""description":">Replicates the description | <dd>Replicates the description | |||
| from the registry.</t> | from the registry.</dd> | |||
| <dt>"reference":</dt> | ||||
| <t hangText=""reference":">Replicates the reference from | <dd>Replicates the reference from | |||
| the registry with the title of the document added.</t> | the registry with the title of the document added.</dd> | |||
| </list></t> | </dl> | |||
| <t>Unassigned or reserved values are not present in the module.</t> | <t>Unassigned or reserved values are not present in the module.</t> | |||
| <t>When the "iana-bgp-l2-encaps" YANG module is updated, a new | <t>When the "iana-bgp-l2-encaps" YANG module is updated, a new | |||
| "revision" statement with a unique revision date must be added in | "revision" statement with a unique revision date must be added in | |||
| front of the existing revision statements.</t> | front of the existing revision statements.</t> | |||
| <t>IANA has added this note to <xref target="IANA-BGP-L2" format="defaul | ||||
| <t>IANA is requested to add this note to <xref | t"/>:</t> | |||
| target="IANA-BGP-L2"></xref>:</t> | <ul empty="true" spacing="normal"> | |||
| <li>When this registry is modified, the YANG module | ||||
| <t><list style="empty"> | "iana-bgp-l2-encaps" must be updated as defined in RFC 9291.</li> | |||
| <t>When this registry is modified, the YANG module | </ul> | |||
| "iana-bgp-l2-encaps" must be updated as defined in RFCXXXX.</t> | ||||
| </list></t> | ||||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Pseudowire Types"> | <name>Pseudowire Types</name> | |||
| <t>This document defines the initial version of the IANA-maintained | <t>This document defines the initial version of the IANA-maintained | |||
| "iana-pseudowire-types" YANG module (<xref target="iana-pw"></xref>). | "iana-pseudowire-types" YANG module (<xref target="iana-pw" format="defa | |||
| IANA is requested to add this note to the registry:<list style="empty"> | ult"/>). | |||
| <t>MPLS pseudowire types must not be directly added to the | IANA has added this note to the "YANG Module Names" registry:</t> | |||
| "iana-bgp-l2-encaps" YANG module. They must instead be added to | <ul empty="true" spacing="normal"> | |||
| the "MPLS Pseudowire Types" registry <xref | <li>MPLS pseudowire types must not be directly added to the | |||
| target="IANA-PW-Types"></xref>.</t> | "iana-pseudowire-types" YANG module. They must instead be added to | |||
| </list></t> | the "MPLS Pseudowire Types" registry at <xref target="IANA-PW-TYPES" | |||
| format="default"/>.</li> | ||||
| </ul> | ||||
| <t>When a pseudowire type is added to the "iana-pseudowire-types" | <t>When a pseudowire type is added to the "iana-pseudowire-types" | |||
| registry, a new "identity" statement must be added to the | registry, a new "identity" statement must be added to the | |||
| "iana-pseudowire-types" YANG module. The name of the "identity" is a | "iana-pseudowire-types" YANG module. The name of the "identity" is a | |||
| lower-case version of the encapsulation name provided in the | lower-case version of the encapsulation name provided in the | |||
| description. The "identity" statement should have the following | description. The "identity" statement should have the following | |||
| sub-statements defined:</t> | sub-statements defined:</t> | |||
| <dl newline="false" spacing="normal" indent="15"> | ||||
| <t><list hangIndent="15" style="hanging"> | <dt>"base":</dt> | |||
| <t hangText=""base":">Contains 'iana-pw-types'.</t> | <dd>Contains 'iana-pw-types'.</dd> | |||
| <dt>"description":</dt> | ||||
| <t hangText=""description":">Replicates the description | <dd>Replicates the description | |||
| from the registry.</t> | from the registry.</dd> | |||
| <dt>"reference":</dt> | ||||
| <t hangText=""reference":">Replicates the reference from | <dd>Replicates the reference from | |||
| the registry with the title of the document added</t> | the registry with the title of the document added.</dd> | |||
| </list></t> | </dl> | |||
| <t>Unassigned or reserved values are not present in the module.</t> | <t>Unassigned or reserved values are not present in the module.</t> | |||
| <t>When the "iana-pseudowire-types" YANG module is updated, a new | <t>When the "iana-pseudowire-types" YANG module is updated, a new | |||
| "revision" statement with a unique revision date must be added in | "revision" statement with a unique revision date must be added in | |||
| front of the existing revision statements.</t> | front of the existing revision statements.</t> | |||
| <t>IANA has added this note to <xref target="IANA-PW-TYPES" format="defa | ||||
| <t>IANA is requested to add this note to <xref | ult"/>:</t> | |||
| target="IANA-PW-Types"></xref>:</t> | <ul empty="true" spacing="normal"> | |||
| <li>When this registry is modified, the YANG module | ||||
| <t><list style="empty"> | "iana-pseudowire-types" must be updated as defined in RFC 9291.</li> | |||
| <t>When this registry is modified, the YANG module | </ul> | |||
| "iana-pseudowire-types" must be updated as defined in RFCXXXX.</t> | ||||
| </list></t> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| </middle> | </middle> | |||
| <!-- *****BACK MATTER ***** --> | ||||
| <back> | <back> | |||
| <!-- References split into informative and normative --> | ||||
| <!-- There are 2 ways to insert reference entries from the citation librarie | ||||
| s: | ||||
| 1. define an ENTITY at the top, and use "ampersand character"RFC2629; here | ||||
| (as shown) | ||||
| 2. simply use a PI "less than character"?rfc include="reference.RFC.2119.xm | ||||
| l"?> here | ||||
| (for I-Ds: include="reference.I-D.narten-iana-considerations-rfc2434bis. | ||||
| xml") | ||||
| Both are cited textually in the same manner: by using xref elements. | ||||
| If you use the PI option, xml2rfc will, by default, try to find included fi | ||||
| les in the same | ||||
| directory as the including file. You can also define the XML_LIBRARY enviro | ||||
| nment variable | ||||
| with a value containing a set of directories to search. These can be eithe | ||||
| r in the local | ||||
| filing system or remote ones accessed by http (http://domain/dir/... ).--> | ||||
| <references title="Normative References"> | <displayreference target="I-D.ietf-bess-evpn-pref-df" to="EVPN-PERF-DF"/> | |||
| <!--?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC. | ||||
| 2119.xml"?--> | ||||
| &RFC3688; | ||||
| &RFC6242; | ||||
| &RFC8341; | ||||
| &RFC6020; | ||||
| &RFC6241; | ||||
| &RFC7950; | ||||
| &RFC8040; | ||||
| &RFC8466; | ||||
| &RFC8214; | ||||
| &RFC7432; | ||||
| <?rfc include='reference.RFC.9181'?> | ||||
| <?rfc include='reference.RFC.8342'?> | ||||
| <?rfc include='reference.RFC.6074'?> | ||||
| <?rfc include='reference.RFC.4761'?> | ||||
| <?rfc include='reference.RFC.4762'?> | ||||
| <?rfc include='reference.RFC.7623'?> | ||||
| <?rfc include='reference.RFC.8365'?> | ||||
| <?rfc include='reference.RFC.8077'?> | ||||
| <?rfc include='reference.RFC.6991'?> | ||||
| <?rfc include='reference.RFC.8294'?> | ||||
| <?rfc include='reference.RFC.4667'?> | ||||
| <?rfc include='reference.RFC.6624'?> | ||||
| <?rfc include='reference.RFC.4026'?> | <displayreference target="I-D.ietf-bess-evpn-yang" to="EVPN-YANG"/> | |||
| <?rfc include='reference.RFC.4446'?> | <displayreference target="I-D.ietf-idr-bgp-model" to="BGP-YANG-MODEL"/> | |||
| <?rfc include='reference.RFC.8446'?> | <displayreference target="I-D.ietf-opsawg-sap" to="YANG-SAPS"/> | |||
| <?rfc include='reference.RFC.8584'?> | <displayreference target="I-D.ietf-teas-enhanced-vpn" to="VPN+-FRAMEWORK"/> | |||
| <reference anchor="IANA-BGP-L2" | <displayreference target="I-D.ietf-teas-ietf-network-slices" to="IETF-NET-SL | |||
| target="https://www.iana.org/assignments/bgp-parameters/bgp-par | ICES"/> | |||
| ameters.xhtml#bgp-l2-encapsulation-types-registry"> | ||||
| <front> | ||||
| <title>BGP Layer 2 Encapsulation Types</title> | ||||
| <author> | <displayreference target="I-D.ietf-teas-te-service-mapping-yang" to="TE-SERV | |||
| <organization abbrev="IANA">Internet Assigned Numbers | ICE-MAPPING"/> | |||
| Authority</organization> | ||||
| </author> | ||||
| <date /> | <references> | |||
| </front> | <name>References</name> | |||
| </reference> | ||||
| <reference anchor="IANA-PW-Types" | <references> | |||
| target="http://www.iana.org/assignments/pwe3-parameters/pwe3-pa | <name>Normative References</name> | |||
| rameters.xhtml#pwe3-parameters-2"> | ||||
| <front> | ||||
| <title>MPLS Pseudowire Types Registry</title> | ||||
| <author fullname="IANA"> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | |||
| <organization abbrev="IANA">Internet Assigned Numbers | .3688.xml"/> | |||
| Authority</organization> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| </author> | FC.6242.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8341.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.6020.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.6241.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.7950.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8040.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8466.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8214.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.7432.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.9181.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8342.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.6074.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.4761.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.4762.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.7623.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8365.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8077.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.6991.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8294.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.4667.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.6624.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.4026.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.4446.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8446.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8584.xml"/> | ||||
| <date /> | <reference anchor="IANA-BGP-L2" target="https://www.iana.org/assignments | |||
| </front> | /bgp-parameters"> | |||
| </reference> | <front> | |||
| <title>BGP Layer 2 Encapsulation Types</title> | ||||
| <author> | ||||
| <organization>IANA</organization> | ||||
| </author> | ||||
| <date/> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="IANA-PW-TYPES" target="http://www.iana.org/assignment | ||||
| s/pwe3-parameters/"> | ||||
| <front> | ||||
| <title>MPLS Pseudowire Types Registry</title> | ||||
| <author> | ||||
| <organization>IANA</organization> | ||||
| </author> | ||||
| <date/> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="IEEE-802-1ag" | <reference anchor="IEEE-802-1ag"> | |||
| target="DOI 10.1109/IEEESTD.2007.4431836"> | <front> | |||
| <front> | <title>IEEE Standard for Local and Metropolitan | |||
| <title>802.1ag - 2007 - IEEE Standard for Local and Metropolitan | ||||
| Area Networks - Virtual Bridged Local Area Networks Amendment 5: | Area Networks - Virtual Bridged Local Area Networks Amendment 5: | |||
| Connectivity Fault Management</title> | Connectivity Fault Management</title> | |||
| <author> | ||||
| <organization>IEEE</organization> | ||||
| </author> | ||||
| <date month="December" year="2007"/> | ||||
| </front> | ||||
| <seriesInfo name="DOI" value="10.1109/IEEESTD.2007.4431836"/> | ||||
| <seriesInfo name="IEEE Std" value="802.1ag-2007"/> | ||||
| </reference> | ||||
| <author fullname="IEEE"> | <reference anchor="ITU-T-Y-1731" target="https://www.itu.int/rec/T-REC-Y.17 | |||
| <organization></organization> | 31/en"> | |||
| </author> | ||||
| <date year="2007" /> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="ITU-T-Y-1731" | ||||
| target="https://www.itu.int/rec/T-REC-Y.1731/en"> | ||||
| <front> | <front> | |||
| <title>Operations, administration and maintenance (OAM) functions | <title>Operation, administration and maintenance (OAM) functions and m | |||
| and mechanisms for Ethernet-based networks</title> | echanisms for Ethernet-based networks</title> | |||
| <author> | ||||
| <author fullname="International Telecommunication Union"> | <organization>ITU-T</organization> | |||
| <organization></organization> | ||||
| </author> | </author> | |||
| <date month="August" year="2015"/> | ||||
| <date month="August" year="2015" /> | ||||
| </front> | </front> | |||
| <seriesInfo name="ITU-T Recommendation" value="G.8013/Y.1731"/> | ||||
| </reference> | </reference> | |||
| <reference anchor="IEEE802.1Qcp-2018" | <reference anchor="IEEE802.1Qcp"> | |||
| target="https://ieeexplore.ieee.org/document/8467507"> | <front> | |||
| <front> | <title>IEEE Standard for Local and metropolitan area | |||
| <title>IEEE Standard for Local and metropolitan area | ||||
| networks--Bridges and Bridged Networks--Amendment 30: YANG Data | networks--Bridges and Bridged Networks--Amendment 30: YANG Data | |||
| Model</title> | Model</title> | |||
| <author> | ||||
| <organization>IEEE</organization> | ||||
| </author> | ||||
| <date month="September" year="2018"/> | ||||
| </front> | ||||
| <seriesInfo name="DOI" value="10.1109/IEEESTD.2018.8467507"/> | ||||
| <seriesInfo name="IEEE Std" value="802.1Qcp-2018"/> | ||||
| </reference> | ||||
| <author fullname="IEEE"> | </references> | |||
| <organization></organization> | <references> | |||
| </author> | <name>Informative References</name> | |||
| <date month="September" year="2018" /> | ||||
| </front> | ||||
| </reference> | ||||
| </references> | ||||
| <references title="Informative References"> | ||||
| <!-- Here we use entities that we defined at the beginning. --> | ||||
| &RFC8309; | ||||
| &RFC8340; | ||||
| &RFC8453; | ||||
| <?rfc include='reference.RFC.3644'?> | ||||
| <?rfc include='reference.RFC.7209'?> | ||||
| <?rfc include='reference.RFC.5880'?> | ||||
| <?rfc include='reference.RFC.8969'?> | ||||
| <?rfc include='reference.RFC.7297'?> | ||||
| <?rfc include='reference.I-D.ietf-teas-enhanced-vpn'?> | ||||
| <?rfc include='reference.I-D.ietf-teas-ietf-network-slices'?> | ||||
| <?rfc include='reference.I-D.ietf-idr-bgp-model'?> | ||||
| <?rfc include='reference.I-D.ietf-bess-evpn-pref-df'?> | ||||
| <?rfc include='reference.RFC.8345'?> | ||||
| <?rfc include='reference.RFC.4664'?> | ||||
| <?rfc include='reference.RFC.2507'?> | ||||
| <?rfc include='reference.RFC.2508'?> | ||||
| <?rfc include='reference.RFC.3032'?> | ||||
| <?rfc include='reference.RFC.3545'?> | ||||
| <?rfc include='reference.RFC.4553'?> | ||||
| <?rfc include='reference.RFC.4448'?> | ||||
| <?rfc include='reference.RFC.4618'?> | ||||
| <?rfc include='reference.RFC.4619'?> | ||||
| <?rfc include='reference.RFC.4717'?> | ||||
| <?rfc include='reference.RFC.4816'?> | ||||
| <?rfc include='reference.RFC.4842'?> | ||||
| <?rfc include='reference.RFC.4863'?> | ||||
| <?rfc include='reference.RFC.4901'?> | ||||
| <?rfc include='reference.RFC.5086'?> | ||||
| <?rfc include='reference.RFC.5087'?> | ||||
| <?rfc include='reference.RFC.5143'?> | ||||
| <?rfc include='reference.RFC.5795'?> | ||||
| <?rfc include='reference.RFC.6307'?> | ||||
| <?rfc include='reference.RFC.8343'?> | ||||
| <?rfc include='reference.RFC.8519'?> | ||||
| <?rfc include='reference.RFC.7951'?> | ||||
| <?rfc include='reference.RFC.8792'?> | ||||
| <?rfc include='reference.RFC.8960'?> | ||||
| <?rfc include='reference.RFC.7267'?> | ||||
| <?rfc include='reference.I-D.ietf-bess-evpn-yang'?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | |||
| .8309.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8340.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8453.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.3644.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.7209.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.5880.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8969.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.7297.xml"/> | ||||
| <xi:include href="https://datatracker.ietf.org/doc/bibxml3/draft-ietf-te | ||||
| as-enhanced-vpn.xml"/> | ||||
| <?rfc include='reference.I-D.ietf-teas-te-service-mapping-yang'?> | <reference anchor="I-D.ietf-teas-ietf-network-slices"> | |||
| <front> | ||||
| <title>Framework for IETF Network Slices</title> | ||||
| <author initials="A" surname="Farrel" fullname="A. Farrel" role="editor"/> | ||||
| <author initials="J" surname="Drake" fullname="J. Drake" role="editor"/> | ||||
| <author initials="R" surname="Rokui" fullname="R. Rokui"/> | ||||
| <author initials="S" surname="Homma" fullname="S. Homma"/> | ||||
| <author initials="K" surname="Makhijani" fullname="K. Makhijani"/> | ||||
| <author initials="L. M." surname="Contreras" fullname="L.M. Contreras"/> | ||||
| <author initials="J" surname="Tantsura" fullname="J. Tantsura"/> | ||||
| <date month="August" day="3" year="2022"/> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-ietf-teas-ietf-network-slices-14" | ||||
| /> | ||||
| </reference> | ||||
| <?rfc include='reference.I-D.ietf-opsawg-sap'?> | <xi:include href="https://datatracker.ietf.org/doc/bibxml3/draft-ietf-idr-bgp-mo del.xml"/> | |||
| <reference anchor="PYANG" target="https://github.com/mbj4668/pyang"> | <reference anchor="I-D.ietf-bess-evpn-pref-df"> | |||
| <front> | <front> | |||
| <title>pyang</title> | <title> | |||
| Preference-based EVPN DF Election | ||||
| </title> | ||||
| <author initials="J" surname="Rabadan" fullname="J. Rabadan" role="editor"/> | ||||
| <author initials="S" surname="Sathappan" fullname="S. Sathappan"/> | ||||
| <author initials="W" surname="Lin" fullname="W. Lin"/> | ||||
| <author initials="J" surname="Drake" fullname="J. Drake"/> | ||||
| <author initials="A" surname="Sajassi" fullname="A. Sajassi"/> | ||||
| <date month="September" day="2" year="2022"/> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-ietf-bess-evpn-pref-df-10"/> | ||||
| </reference> | ||||
| <author> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | |||
| <organization></organization> | C.8345.xml"/> | |||
| </author> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| FC.4664.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.2507.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.2508.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.3032.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.3545.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.4553.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.4448.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.4618.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.4619.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.4717.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.4816.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.4842.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.4863.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.4901.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.5086.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.5087.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.5143.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.5795.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.6307.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8343.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8519.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.7951.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8792.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8960.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.7267.xml"/> | ||||
| <date month="November" year="2020" /> | <reference anchor="I-D.ietf-bess-evpn-yang"> | |||
| </front> | <front> | |||
| </reference> | <title> | |||
| Yang Data Model for EVPN | ||||
| </title> | ||||
| <author initials="P" surname="Brissette" fullname="P. Brissette" role="editor"/> | ||||
| <author initials="H" surname="Shah" fullname="H. Shah" role="editor"/> | ||||
| <author initials="I" surname="Chen" fullname="I. Chen" role="editor"/> | ||||
| <author initials="I" surname="Hussain " fullname="I. Hussain " role="editor"/> | ||||
| <author initials="K" surname="Tiruveedhula" fullname="K. Tiruveedhula" role="edi | ||||
| tor"/> | ||||
| <author initials="J" surname="Rabadan" fullname="J. Rabadan" role="editor"/> | ||||
| <date month="March" day="11" year="2019"/> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-ietf-bess-evpn-yang-07"/> | ||||
| </reference> | ||||
| <reference anchor="IEEE802.1AX"> | <reference anchor="I-D.ietf-teas-te-service-mapping-yang"> | |||
| <front> | <front> <title> | |||
| <title>Link Aggregation</title> | Traffic Engineering (TE) and Service Mapping YANG Data Model | |||
| </title> | ||||
| <author initials="Y" surname="Lee" fullname="Y. Lee" role="editor"/> | ||||
| <author initials="D" surname="Dhody" fullname="D. Dhody" role="editor"/> | ||||
| <author initials="G" surname="Fioccola" fullname="G. Fioccola"/> | ||||
| <author initials="Q" surname="Wu" fullname="Q. Wu" role="editor"/> | ||||
| <author initials="D" surname="Ceccarelli" fullname="D. Ceccarelli" /> | ||||
| <author initials="J" surname="Tantsura" fullname="J. Tantsura"/> | ||||
| <date month="July" day="11" year="2022"/> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-ietf-teas-te-service-mapping-yang | ||||
| -11"/> | ||||
| </reference> | ||||
| <author> | <reference anchor="I-D.ietf-opsawg-sap"> | |||
| <organization></organization> | <front> <title> | |||
| </author> | A YANG Network Model for Service Attachment Points (SAPs) | |||
| </title> | ||||
| <author initials="M" surname="Boucadair" fullname="M. Boucadair" role="editor"/> | ||||
| <author initials="O" surname="Gonzalez de Dios" fullname="O. Gonzalez de Dios"/> | ||||
| <author initials="S" surname="Barguil" fullname="S. Barguil"/> | ||||
| <author initials="Q" surname="Wu" fullname="Q. Wu"/> | ||||
| <author initials="V" surname="Lopez" fullname="V. Lopez" /> | ||||
| <date month="July" day="28" year="2022"/> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-ietf-opsawg-sap-09"/> | ||||
| </reference> | ||||
| <date month="" year="2020" /> | <reference anchor="PYANG" target="https://github.com/mbj4668/pyang"> | |||
| </front> | <front> | |||
| <title>pyang</title> | ||||
| <author> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="November" year="2020"/> | ||||
| </front> | ||||
| </reference> | ||||
| <seriesInfo name="IEEE" value="Std 802.1AX-2020" /> | <reference anchor="IEEE802.1AX"> | |||
| </reference> | <front> | |||
| <title>IEEE Standard for Local and Metropolitan Area Networks--Link | ||||
| Aggregation</title> | ||||
| <author> | ||||
| <organization>IEEE | ||||
| </organization> | ||||
| </author> | ||||
| <date month="May" year="2020"/> | ||||
| </front> | ||||
| <seriesInfo name="DOI" value="10.1109/IEEESTD.2020.9105034" /> | ||||
| <seriesInfo name="IEEE" value="Std 802.1AX-2020"/> | ||||
| </reference> | ||||
| <reference anchor="IEEE-802-3ah" target="DOI 10.1109/IEEESTD.2004.94617"> | <reference anchor="IEEE-802-3ah"> | |||
| <front> | <front> | |||
| <title>802.3ah - 2004 - IEEE Standard for Information technology-- | <title>IEEE Standard for Information technology-- | |||
| Local and metropolitan area networks-- Part 3: CSMA/CD Access Method | Local and metropolitan area networks-- Part 3: CSMA/CD Access Method | |||
| and Physical Layer Specifications Amendment: Media Access Control | and Physical Layer Specifications Amendment: Media Access Control | |||
| Parameters, Physical Layers, and Management Parameters for | Parameters, Physical Layers, and Management Parameters for | |||
| Subscriber Access Networks</title> | Subscriber Access Networks</title> | |||
| <author fullname="IEEE"> | ||||
| <organization></organization> | ||||
| </author> | ||||
| <date month="" year="2004" /> | ||||
| </front> | ||||
| <seriesInfo name="IEEE" value="Std 802.3AH-2004" /> | ||||
| </reference> | ||||
| <reference anchor="IEEE-802-1ah" | ||||
| target="https://standards.ieee.org/standard/802_1ah-2008.html"> | ||||
| <front> | ||||
| <title>IEEE Standard for Local and metropolitan area networks -- | ||||
| Virtual Bridged Local Area Networks Amendment 7: Provider Backbone | ||||
| Bridges</title> | ||||
| <author fullname="IEEE"> | ||||
| <organization></organization> | ||||
| </author> | ||||
| <date month="" year="2008" /> | ||||
| </front> | ||||
| <seriesInfo name="IEEE" value="Std 801.3AH-2008" /> | ||||
| </reference> | ||||
| <reference anchor="IEEE802.1Q" | ||||
| target="https://ieeexplore.ieee.org/document/8403927"> | ||||
| <front> | ||||
| <title>Bridges and Bridged Networks</title> | ||||
| <author> | <author> | |||
| <organization></organization> | <organization>IEEE</organization> | |||
| </author> | </author> | |||
| <date month="September" year="2004"/> | ||||
| </front> | ||||
| <seriesInfo name="DOI" value="10.1109/IEEESTD.2004.94617"/> | ||||
| <seriesInfo name="IEEE Std" value="802.3AH-2004"/> | ||||
| </reference> | ||||
| <date day="06" month="July" year="2018" /> | <reference anchor="IEEE-802-1ah" target="https://standards.ieee.org/stan | |||
| </front> | dard/802_1ah-2008.html"> | |||
| <front> | ||||
| <title>IEEE Standard for Local and metropolitan area networks -- | ||||
| Virtual Bridged Local Area Networks Amendment 7: Provider Backbone | ||||
| Bridges</title> | ||||
| <author> | ||||
| <organization>IEEE</organization> | ||||
| </author> | ||||
| <date month="August" year="2008"/> | ||||
| </front> | ||||
| <seriesInfo name="IEEE" value="Std 801.3AH-2008"/> | ||||
| </reference> | ||||
| <seriesInfo name="IEEE" value="Std 802.1Q-2018" /> | <reference anchor="IEEE802.1Q"> | |||
| </reference> | <front> | |||
| <title>IEEE Standard for Local and Metropolitan Area Network--Bridge | ||||
| s and Bridged Networks</title> | ||||
| <author> | ||||
| <organization>IEEE</organization> | ||||
| </author> | ||||
| <date month="July" year="2018"/> | ||||
| </front> | ||||
| <seriesInfo name="DOI" value="10.1109/IEEESTD.2018.8403927"/> | ||||
| <seriesInfo name="IEEE" value="Std 802.1Q-2018"/> | ||||
| </reference> | ||||
| <reference anchor="MFA"> | <reference anchor="MFA"> | |||
| <front> | <front> | |||
| <title>The Use of Virtual Trunks for ATM/MPLS Control Plane | <title>The Use of Virtual Trunks for ATM/MPLS Control Plane | |||
| Interworking Specification</title> | Interworking Specification</title> | |||
| <author> | ||||
| <organization>MFA Forum Technical Committee</organization> | ||||
| </author> | ||||
| <date month="February" year="2006"/> | ||||
| </front> | ||||
| <refcontent>MFA Forum 9.0.0</refcontent> | ||||
| </reference> | ||||
| <author fullname=""> | </references> | |||
| <organization></organization> | ||||
| </author> | ||||
| <date day="" month="February" year="2006" /> | ||||
| </front> | ||||
| <seriesInfo name="MFA Forum 9.0.0" value="" /> | ||||
| </reference> | ||||
| </references> | </references> | |||
| <section anchor="examples" numbered="true" toc="default"> | ||||
| <section anchor="examples" title="Examples"> | <name>Examples</name> | |||
| <t>This section includes a non-exhaustive list of examples to illustrate | <t>This section includes a non-exhaustive list of examples to illustrate | |||
| the use of the L2NM.</t> | the use of the L2NM.</t> | |||
| <t>In the following subsections, only the content of the message bodies | <t>In the following subsections, only the content of the message bodies | |||
| is shown using JSON notations <xref target="RFC7951"></xref>.</t> | is shown using JSON notations <xref target="RFC7951" format="default"/>.</ | |||
| t> | ||||
| <t>The examples use the folding defined in <xref | ||||
| target="RFC8792"></xref> for long lines.</t> | ||||
| <section anchor="ex1" title="BGP-based VPLS"> | <t>The examples use folding as defined in <xref target="RFC8792" format="d | |||
| efault"/> for long lines.</t> | ||||
| <section anchor="ex1" numbered="true" toc="default"> | ||||
| <name>BGP-Based VPLS</name> | ||||
| <t>This section provides an example to illustrate how the L2NM can be | <t>This section provides an example to illustrate how the L2NM can be | |||
| used to manage BGP-based VPLS. We consider the sample VPLS service | used to manage BGP-based VPLS. We consider the sample VPLS service | |||
| delivered using the architecture depicted in <xref | delivered using the architecture depicted in <xref target="vpls-ex" form | |||
| target="vpls-ex"></xref>. In accordance with <xref | at="default"/>. In accordance with <xref target="RFC4761" format="default"/>, we | |||
| target="RFC4761"></xref>, we assume that a full mesh is established | assume that a full mesh is established | |||
| between all PEs. The details about such full mesh are not detailed | between all PEs. The details about such full mesh are not detailed | |||
| here.</t> | here.</t> | |||
| <figure anchor="vpls-ex"> | ||||
| <t><figure align="center" anchor="vpls-ex" title="An Example of VPLS"> | <name>An Example of VPLS</name> | |||
| <artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| +-----+ +--------------+ +-----+ | +-----+ +--------------+ +-----+ | |||
| +----+ | PE1 |===| |===| PE3 | +----+ | +----+ | PE1 |===| |===| PE3 | +----+ | |||
| | CE1+-------+ | | | | +-------+ CE3| | | CE1+-------+ | | | | +-------+ CE3| | |||
| +----+ +-----+ | | +-----+ +----+ | +----+ +-----+ | | +-----+ +----+ | |||
| | Core | | | Core | | |||
| +----+ +-----+ | | +-----+ +----+ | +----+ +-----+ | | +-----+ +----+ | |||
| |CE2 +-------+ | | | | +-------+ CE4| | |CE2 +-------+ | | | | +-------+ CE4| | |||
| +----+ | PE2 |===| |===| PE4 | +----+ | +----+ | PE2 |===| |===| PE4 | +----+ | |||
| +-----+ +--------------+ +-----+ | +-----+ +--------------+ +-----+ | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure><xref target="l2nm-vpls"></xref> show an example of a | </figure> | |||
| <t><xref target="l2nm-vpls" format="default"/> shows an example of a | ||||
| message body used to configure a VPLS instance using the L2NM. In this | message body used to configure a VPLS instance using the L2NM. In this | |||
| example, BGP is used for both auto-discovery and signaling. The | example, BGP is used for both auto-discovery and signaling. The | |||
| 'signaling-type' data node is set to 'vpn-common:bgp-signaling'.</t> | 'signaling-type' data node is set to 'vpn-common:bgp-signaling'.</t> | |||
| <t><figure align="center" anchor="l2nm-vpls" | <figure anchor="l2nm-vpls"> | |||
| title="Example of L2NM Message Body to Configure a BGP-based VPLS"> | <name>An Example of an L2NM Message Body to Configure a BGP-Based V | |||
| <artwork><![CDATA[=============== NOTE: '\' line wrapping per RFC 87 | PLS</name> | |||
| 92 ================ | ||||
| <sourcecode type="json"><![CDATA[=============== NOTE: '\' line wra | ||||
| pping per RFC 8792 ================ | ||||
| { | { | |||
| "ietf-l2vpn-ntw:l2vpn-ntw": { | "ietf-l2vpn-ntw:l2vpn-ntw": { | |||
| "vpn-services": { | "vpn-services": { | |||
| "vpn-service": [ | "vpn-service": [ | |||
| { | { | |||
| "vpn-id": "vpls7714825356", | "vpn-id": "vpls7714825356", | |||
| "vpn-description": "Sample BGP-based VPLS", | "vpn-description": "Sample BGP-based VPLS", | |||
| "customer-name": "customer-7714825356", | "customer-name": "customer-7714825356", | |||
| "vpn-type": "ietf-vpn-common:vpls", | "vpn-type": "ietf-vpn-common:vpls", | |||
| skipping to change at line 6508 ¶ | skipping to change at line 6435 ¶ | |||
| "global-parameters-profile": [ | "global-parameters-profile": [ | |||
| { | { | |||
| "profile-id": "simple-profile" | "profile-id": "simple-profile" | |||
| } | } | |||
| ] | ] | |||
| }, | }, | |||
| "bgp-auto-discovery": { | "bgp-auto-discovery": { | |||
| "vpn-id": "1" | "vpn-id": "1" | |||
| }, | }, | |||
| "signaling-option": { | "signaling-option": { | |||
| "pw-encapsulation-type": "iana-bgp-l2-encaps:ethernet\ | "pw-encapsulation-type": "iana-bgp-l2-encaps:\ | |||
| -tagged-mode", | ethernet-tagged-mode", | |||
| "vpls-instance": { | "vpls-instance": { | |||
| "vpls-edge-id": 1, | "vpls-edge-id": 1, | |||
| "vpls-edge-id-range": 100 | "vpls-edge-id-range": 100 | |||
| } | } | |||
| }, | }, | |||
| "vpn-network-accesses": { | "vpn-network-accesses": { | |||
| "vpn-network-access": [ | "vpn-network-access": [ | |||
| { | { | |||
| "id": "1/1/1.1", | "id": "1/1/1.1", | |||
| "interface-id": "1/1/1", | "interface-id": "1/1/1", | |||
| skipping to change at line 6553 ¶ | skipping to change at line 6480 ¶ | |||
| "global-parameters-profile": [ | "global-parameters-profile": [ | |||
| { | { | |||
| "profile-id": "simple-profile" | "profile-id": "simple-profile" | |||
| } | } | |||
| ] | ] | |||
| }, | }, | |||
| "bgp-auto-discovery": { | "bgp-auto-discovery": { | |||
| "vpn-id": "1" | "vpn-id": "1" | |||
| }, | }, | |||
| "signaling-option": { | "signaling-option": { | |||
| "pw-encapsulation-type": "iana-bgp-l2-encaps:ethernet\ | "pw-encapsulation-type": "iana-bgp-l2-encaps:\ | |||
| -tagged-mode", | ethernet-tagged-mode", | |||
| "vpls-instance": { | "vpls-instance": { | |||
| "vpls-edge-id": 2, | "vpls-edge-id": 2, | |||
| "vpls-edge-id-range": 100 | "vpls-edge-id-range": 100 | |||
| } | } | |||
| }, | }, | |||
| "vpn-network-accesses": { | "vpn-network-accesses": { | |||
| "vpn-network-access": [ | "vpn-network-access": [ | |||
| { | { | |||
| "id": "1/1/1.1", | "id": "1/1/1.1", | |||
| "interface-id": "1/1/1", | "interface-id": "1/1/1", | |||
| skipping to change at line 6598 ¶ | skipping to change at line 6525 ¶ | |||
| "global-parameters-profile": [ | "global-parameters-profile": [ | |||
| { | { | |||
| "profile-id": "simple-profile" | "profile-id": "simple-profile" | |||
| } | } | |||
| ] | ] | |||
| }, | }, | |||
| "bgp-auto-discovery": { | "bgp-auto-discovery": { | |||
| "vpn-id": "1" | "vpn-id": "1" | |||
| }, | }, | |||
| "signaling-option": { | "signaling-option": { | |||
| "pw-encapsulation-type": "iana-bgp-l2-encaps:ethernet\ | "pw-encapsulation-type": "iana-bgp-l2-encaps:\ | |||
| -tagged-mode", | ethernet-tagged-mode", | |||
| "vpls-instance": { | "vpls-instance": { | |||
| "vpls-edge-id": 3, | "vpls-edge-id": 3, | |||
| "vpls-edge-id-range": 100 | "vpls-edge-id-range": 100 | |||
| } | } | |||
| }, | }, | |||
| "vpn-network-accesses": { | "vpn-network-accesses": { | |||
| "vpn-network-access": [ | "vpn-network-access": [ | |||
| { | { | |||
| "id": "1/1/1.1", | "id": "1/1/1.1", | |||
| "interface-id": "1/1/1", | "interface-id": "1/1/1", | |||
| skipping to change at line 6643 ¶ | skipping to change at line 6570 ¶ | |||
| "global-parameters-profile": [ | "global-parameters-profile": [ | |||
| { | { | |||
| "profile-id": "simple-profile" | "profile-id": "simple-profile" | |||
| } | } | |||
| ] | ] | |||
| }, | }, | |||
| "bgp-auto-discovery": { | "bgp-auto-discovery": { | |||
| "vpn-id": "1" | "vpn-id": "1" | |||
| }, | }, | |||
| "signaling-option": { | "signaling-option": { | |||
| "pw-encapsulation-type": "iana-bgp-l2-encaps:ethernet\ | "pw-encapsulation-type": "iana-bgp-l2-encaps:\ | |||
| -tagged-mode", | ethernet-tagged-mode", | |||
| "vpls-instance": { | "vpls-instance": { | |||
| "vpls-edge-id": 4, | "vpls-edge-id": 4, | |||
| "vpls-edge-id-range": 100 | "vpls-edge-id-range": 100 | |||
| } | } | |||
| }, | }, | |||
| "vpn-network-accesses": { | "vpn-network-accesses": { | |||
| "vpn-network-access": [ | "vpn-network-access": [ | |||
| { | { | |||
| "id": "1/1/1.1", | "id": "1/1/1.1", | |||
| "interface-id": "1/1/1", | "interface-id": "1/1/1", | |||
| skipping to change at line 6681 ¶ | skipping to change at line 6608 ¶ | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure></t> | </figure> | |||
| <t/> | ||||
| <t></t> | ||||
| </section> | </section> | |||
| <section anchor="ex2" numbered="true" toc="default"> | ||||
| <section anchor="ex2" title="BGP-based VPWS with LDP Signaling"> | <name>BGP-Based VPWS with LDP Signaling</name> | |||
| <t>Let's consider the simple architecture depicted in <xref | <t>Let's consider the simple architecture depicted in <xref target="vpws | |||
| target="vpws-ex"></xref> to offer a VPWS between CE1 and CE2. The | -ex" format="default"/> to offer a VPWS between CE1 and CE2. The | |||
| service uses BGP for auto-discovery and LDP for signaling.</t> | service uses BGP for auto-discovery and LDP for signaling.</t> | |||
| <figure anchor="vpws-ex"> | ||||
| <t><figure align="center" anchor="vpws-ex" title="An Example of VPLS"> | <name>An Example of VPLS</name> | |||
| <artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| +-----+ +--------------+ +-----+ | +-----+ +--------------+ +-----+ | |||
| +----+ | PE1 |===| |===| PE2 | +----+ | +----+ | PE1 |===| |===| PE2 | +----+ | |||
| | CE1+-------+ | | Core | | +-------+ CE2| | | CE1+-------+ | | Core | | +-------+ CE2| | |||
| +----+ +-----+ +--------------+ +-----+ +----+ | +----+ +-----+ +--------------+ +-----+ +----+ | |||
| site1 site2 ]]></artwork> | site1 site2 ]]></artwork> | |||
| </figure></t> | </figure> | |||
| <figure anchor="l2nm-vpws-ex"> | ||||
| <t><figure align="center" anchor="l2nm-vpws-ex" | <name>An Example of an L2NM Message Body to Configure a BGP-Based VPWS | |||
| title="Example of L2NM Message Body to Configure a BGP-based VPWS wi | with LDP Signaling</name> | |||
| th LDP Signaling"> | <sourcecode type="json"><![CDATA[{ | |||
| <artwork><![CDATA[{ | ||||
| "ietf-l2vpn-ntw:l2vpn-ntw": { | "ietf-l2vpn-ntw:l2vpn-ntw": { | |||
| "vpn-services": { | "vpn-services": { | |||
| "vpn-service": [ | "vpn-service": [ | |||
| { | { | |||
| "vpn-id": "vpws12345", | "vpn-id": "vpws12345", | |||
| "vpn-description": "Sample VPWS", | "vpn-description": "Sample VPWS", | |||
| "customer-name": "customer-12345", | "customer-name": "customer-12345", | |||
| "vpn-type": "ietf-vpn-common:vpws", | "vpn-type": "ietf-vpn-common:vpws", | |||
| "bgp-ad-enabled": true, | "bgp-ad-enabled": true, | |||
| "signaling-type": "ietf-vpn-common:ldp-signaling", | "signaling-type": "ietf-vpn-common:ldp-signaling", | |||
| skipping to change at line 6829 ¶ | skipping to change at line 6753 ¶ | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure></t> | </figure> | |||
| <t/> | ||||
| <t></t> | ||||
| </section> | </section> | |||
| <section anchor="ex3" numbered="true" toc="default"> | ||||
| <section anchor="ex3" title="LDP-based VPLS"> | <name>LDP-Based VPLS</name> | |||
| <t>This section provides an example to illustrate how the L2NM can be | <t>This section provides an example that illustrates how the L2NM can be | |||
| used to manage a VPLS with LDP signaling. The connectivity between the | used to manage a VPLS with LDP signaling. The connectivity between the | |||
| CE and the PE is direct using Dot1q encapsulation <xref | CE and the PE is direct using Dot1q encapsulation <xref target="IEEE802. | |||
| target="IEEE802.1Q"></xref>. We consider the sample service delivered | 1Q" format="default"/>. We consider the sample service delivered | |||
| using the architecture depicted in <xref | using the architecture depicted in <xref target="vpls-ldp-ex" format="de | |||
| target="vpls-ldp-ex"></xref>.</t> | fault"/>.</t> | |||
| <figure anchor="vpls-ldp-ex"> | ||||
| <t><figure align="center" anchor="vpls-ldp-ex" | <name>An Example of VPLS Topology</name> | |||
| title="An Example of VPLS topology "> | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| <artwork><![CDATA[ | ||||
| +---------- VPLS "1543" ----------+ | +---------- VPLS "1543" ----------+ | |||
| +-----+ +--------------+ +-----+ | +-----+ +--------------+ +-----+ | |||
| +----+ | PE1 |===| |===| PE2 | +----+ | +----+ | PE1 |===| |===| PE2 | +----+ | |||
| | CE1 +-----+"450"| | MPLS | |"451"+-------+ CE2| | | CE1 +-----+"450"| | MPLS | |"451"+-------+ CE2| | |||
| +----+ +-----+ | | +-----+ +----+ | +----+ +-----+ | | +-----+ +----+ | |||
| | Core | | | Core | | |||
| +--------------+ | +--------------+ | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure></t> | </figure> | |||
| <t><xref target="vpls-ldp-call" format="default"/> shows how the L2NM is | ||||
| <t><xref target="vpls-ldp-call"></xref> shows how the L2NM is used to | used to | |||
| instruct both PE1 and PE2 to use the targeted LDP session between them | instruct both PE1 and PE2 to use the targeted LDP session between them | |||
| to establish the VPLS "1543" between the ends. A single VPN service is | to establish the VPLS "1543" between the ends. A single VPN service is | |||
| created for this purpose. Additionally, two VPN Nodes and each with a | created for this purpose. Additionally, two VPN Nodes that each have | |||
| corresponding VPN network access is also created.</t> | corresponding VPN network access are also created.</t> | |||
| <t><figure align="center" anchor="vpls-ldp-call" | <figure anchor="vpls-ldp-call"> | |||
| title="Example of L2NM Message Body for LDP-based VPLS"> | <name>An Example of an L2NM Message Body for LDP-Based VPLS</name> | |||
| <artwork align="center"><![CDATA[=============== NOTE: '\' line wrap | <sourcecode type="json"><![CDATA[=============== NOTE: '\' line wrappi | |||
| ping per RFC 8792 ================ | ng per RFC 8792 ================ | |||
| { | { | |||
| "ietf-l2vpn-ntw:l2vpn-ntw": { | "ietf-l2vpn-ntw:l2vpn-ntw": { | |||
| "vpn-services": { | "vpn-services": { | |||
| "vpn-service": [ | "vpn-service": [ | |||
| { | { | |||
| "vpn-id": "450", | "vpn-id": "450", | |||
| "vpn-name": "CORPO-EXAMPLE", | "vpn-name": "CORPO-EXAMPLE", | |||
| "vpn-description": "SEDE_CENTRO_450", | "vpn-description": "SEDE_CENTRO_450", | |||
| "customer-name": "EXAMPLE", | "customer-name": "EXAMPLE", | |||
| skipping to change at line 6945 ¶ | skipping to change at line 6864 ¶ | |||
| "tag-type": "ietf-vpn-common:c-vlan", | "tag-type": "ietf-vpn-common:c-vlan", | |||
| "cvlan-id": 550 | "cvlan-id": 550 | |||
| } | } | |||
| } | } | |||
| }, | }, | |||
| "service": { | "service": { | |||
| "mtu": 1550, | "mtu": 1550, | |||
| "svc-pe-to-ce-bandwidth": { | "svc-pe-to-ce-bandwidth": { | |||
| "pe-to-ce-bandwidth": [ | "pe-to-ce-bandwidth": [ | |||
| { | { | |||
| "bw-type": "ietf-vpn-common:bw-per-port", | "bw-type": "ietf-vpn-common:\ | |||
| bw-per-port", | ||||
| "cir": "20480000" | "cir": "20480000" | |||
| } | } | |||
| ] | ] | |||
| }, | }, | |||
| "svc-ce-to-pe-bandwidth": { | "svc-ce-to-pe-bandwidth": { | |||
| "ce-to-pe-bandwidth": [ | "ce-to-pe-bandwidth": [ | |||
| { | { | |||
| "bw-type": "ietf-vpn-common:bw-per-port", | "bw-type": "ietf-vpn-common:\ | |||
| bw-per-port", | ||||
| "cir": "20480000" | "cir": "20480000" | |||
| } | } | |||
| ] | ] | |||
| }, | }, | |||
| "qos": { | "qos": { | |||
| "qos-profile": { | "qos-profile": { | |||
| "qos-profile": [ | "qos-profile": [ | |||
| { | { | |||
| "profile": "QoS_Profile_A", | "profile": "QoS_Profile_A", | |||
| "direction": "ietf-vpn-common:both" | "direction": "ietf-vpn-common:both" | |||
| skipping to change at line 7027 ¶ | skipping to change at line 6948 ¶ | |||
| "tag-type": "ietf-vpn-common:c-vlan", | "tag-type": "ietf-vpn-common:c-vlan", | |||
| "cvlan-id": 550 | "cvlan-id": 550 | |||
| } | } | |||
| } | } | |||
| }, | }, | |||
| "service": { | "service": { | |||
| "mtu": 1550, | "mtu": 1550, | |||
| "svc-pe-to-ce-bandwidth": { | "svc-pe-to-ce-bandwidth": { | |||
| "pe-to-ce-bandwidth": [ | "pe-to-ce-bandwidth": [ | |||
| { | { | |||
| "bw-type": "ietf-vpn-common:bw-per-port", | "bw-type": "ietf-vpn-common:\ | |||
| bw-per-port", | ||||
| "cir": "20480000" | "cir": "20480000" | |||
| } | } | |||
| ] | ] | |||
| }, | }, | |||
| "svc-ce-to-pe-bandwidth": { | "svc-ce-to-pe-bandwidth": { | |||
| "ce-to-pe-bandwidth": [ | "ce-to-pe-bandwidth": [ | |||
| { | { | |||
| "bw-type": "ietf-vpn-common:bw-per-port", | "bw-type": "ietf-vpn-common:\ | |||
| bw-per-port", | ||||
| "cir": "20480000" | "cir": "20480000" | |||
| } | } | |||
| ] | ] | |||
| }, | }, | |||
| "qos": { | "qos": { | |||
| "qos-profile": { | "qos-profile": { | |||
| "qos-profile": [ | "qos-profile": [ | |||
| { | { | |||
| "profile": "QoS_Profile_A", | "profile": "QoS_Profile_A", | |||
| "direction": "ietf-vpn-common:both" | "direction": "ietf-vpn-common:both" | |||
| skipping to change at line 7062 ¶ | skipping to change at line 6985 ¶ | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure></t> | </figure> | |||
| </section> | </section> | |||
| <section anchor="evpn-vpws-app" numbered="true" toc="default"> | ||||
| <section anchor="evpn-vpws-app" title="VPWS-EVPN Service Instance"> | <name>VPWS-EVPN Service Instance</name> | |||
| <t><xref target="vpws-evpn-ex"></xref> depicts a sample architecture | <t><xref target="vpws-evpn-ex" format="default"/> depicts a sample archi | |||
| tecture | ||||
| to offer VPWS-EVPN service between CE1 and CE2. Both CEs are | to offer VPWS-EVPN service between CE1 and CE2. Both CEs are | |||
| multi-homed. BGP sessions are maintained between these PEs as per | multihomed. BGP sessions are maintained between these PEs as per | |||
| <xref target="RFC8214"></xref>. In this EVPN instance, an All-Active | <xref target="RFC8214" format="default"/>. In this EVPN instance, an All | |||
| -Active | ||||
| redundancy mode is used.</t> | redundancy mode is used.</t> | |||
| <figure anchor="vpws-evpn-ex"> | ||||
| <t><figure align="center" anchor="vpws-evpn-ex" | <name>An Example of VPWS-EVPN</name> | |||
| title="An Example of VPWS-EVPN"> | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| <artwork><![CDATA[ |<-------- EVPN Instance ------ | |<-------- EVPN Instance --------->| | |||
| --->| | ||||
| | | | | | | |||
| ESI1 V V ESI2 | ESI1 V V ESI2 | |||
| | +-----+ +--------------+ +-----+ | | | +-----+ +--------------+ +-----+ | | |||
| +----+ | | PE1 |===| |===| PE3 | | +----+ | +----+ | | PE1 |===| |===| PE3 | | +----+ | |||
| | +-------+ | | | | +-------+ | | | +-------+ | | | | +-------+ | | |||
| | | | +-----+ | | +-----+ | | | | | | | +-----+ | | +-----+ | | | | |||
| | CE1| | | Core | | |CE2 | | | CE1| | | Core | | |CE2 | | |||
| | | | +-----+ | | +-----+ | | | | | | | +-----+ | | +-----+ | | | | |||
| | +-------+ | | | | +-------+ | | | +-------+ | | | | +-------+ | | |||
| +----+ | | PE2 |===| |===| PE4 | | +----+ | +----+ | | PE2 |===| |===| PE4 | | +----+ | |||
| ^ | +-----+ +--------------+ +-----+ | ^ | ^ | +-----+ +--------------+ +-----+ | ^ | |||
| | ESI1 ESI2 | | | ESI1 ESI2 | | |||
| |<-------------- Emulated Service ---------------->|]]></artwork> | |<-------------- Emulated Service ---------------->|]]></artwork> | |||
| </figure></t> | </figure> | |||
| <t>Let's first suppose that the following ES was created (<xref target=" | ||||
| <t>Let's first suppose that the following ES was created (<xref | es1" format="default"/>).</t> | |||
| target="es1"></xref>).</t> | ||||
| <t><figure align="center" anchor="es1" | <figure anchor="es1"> | |||
| title="Example of L2NM Message Body to Configure an Ethernet Segment | <name>An Example of an L2NM Message Body to Configure an Ethernet Segm | |||
| "> | ent</name> | |||
| <artwork><![CDATA[=============== NOTE: '\' line wrapping per RFC 87 | <sourcecode type="json"><![CDATA[=============== NOTE: '\' line wrappi | |||
| 92 ================ | ng per RFC 8792 ================ | |||
| { | { | |||
| "ietf-ethernet-segment:ethernet-segments": { | "ietf-ethernet-segment:ethernet-segments": { | |||
| "ethernet-segment": [ | "ethernet-segment": [ | |||
| { | { | |||
| "name": "esi1", | "name": "esi1", | |||
| "ethernet-segment-identifier": "00:11:11:11:11:11:11:\ | "ethernet-segment-identifier": "00:11:11:11:11:11:11:\ | |||
| 11:11:11", | 11:11:11", | |||
| "esi-redundancy-mode": "all-active" | "esi-redundancy-mode": "all-active" | |||
| }, | }, | |||
| { | { | |||
| "name": "esi2", | "name": "esi2", | |||
| "ethernet-segment-identifier": "00:22:22:22:22:22:22:\ | "ethernet-segment-identifier": "00:22:22:22:22:22:22:\ | |||
| 22:22:22", | 22:22:22", | |||
| "esi-redundancy-mode": "all-active" | "esi-redundancy-mode": "all-active" | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| }]]></artwork> | }]]></sourcecode> | |||
| </figure><xref target="vpws-evpn-ex"></xref> shows a simplified | </figure> | |||
| configuration to illustrate the use of the L2NM to configured | ||||
| VPWS-EVPN instance.</t> | ||||
| <t><figure align="center" anchor="l2nm-vpws-evpn" | <t><xref target="l2nm-vpws-evpn" format="default"/> shows a simplified | |||
| title="Example of L2NM Message Body to Configure a VPWS-EVPN Instanc | configuration to illustrate the use of the L2NM to configure a | |||
| e"> | VPWS-EVPN instance.</t> | |||
| <artwork><![CDATA[{ | <figure anchor="l2nm-vpws-evpn"> | |||
| <name>An Example of an L2NM Message Body to Configure a VPWS-EVPN Inst | ||||
| ance</name> | ||||
| <sourcecode type="json"><![CDATA[{ | ||||
| "ietf-l2vpn-ntw:l2vpn-ntw": { | "ietf-l2vpn-ntw:l2vpn-ntw": { | |||
| "vpn-services": { | "vpn-services": { | |||
| "vpn-service": [ | "vpn-service": [ | |||
| { | { | |||
| "vpn-id": "vpws15432855", | "vpn-id": "vpws15432855", | |||
| "vpn-description": "Sample VPWS-EVPN", | "vpn-description": "Sample VPWS-EVPN", | |||
| "customer-name": "customer_15432855", | "customer-name": "customer_15432855", | |||
| "vpn-type": "ietf-vpn-common:vpws-evpn", | "vpn-type": "ietf-vpn-common:vpws-evpn", | |||
| "bgp-ad-enabled": true, | "bgp-ad-enabled": true, | |||
| "signaling-type": "ietf-vpn-common:bgp-signaling", | "signaling-type": "ietf-vpn-common:bgp-signaling", | |||
| skipping to change at line 7338 ¶ | skipping to change at line 7259 ¶ | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure></t> | </figure> | |||
| <t/> | ||||
| <t></t> | ||||
| </section> | </section> | |||
| <section anchor="auto-ex" numbered="true" toc="default"> | ||||
| <section anchor="auto-ex" title="Automatic ESI Assignment"> | <name>Automatic ESI Assignment</name> | |||
| <t>This section provides an example to illustrate how the L2NM can be | <t>This section provides an example to illustrate how the L2NM can be | |||
| used to manage ESI auto-assignment. We consider the sample EVPN | used to manage ESI auto-assignment. We consider the sample EVPN | |||
| service delivered using the architecture depicted in <xref | service delivered using the architecture depicted in <xref target="auto- | |||
| target="auto-esi-ex"></xref>.</t> | esi-ex" format="default"/>.</t> | |||
| <figure anchor="auto-esi-ex"> | ||||
| <t><figure align="center" anchor="auto-esi-ex" | <name>An Example of Automatic ESI Assignment</name> | |||
| title="An Example of Automatic ESI Assignment "> | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| <artwork><![CDATA[ | ES | |||
| ES | | +-----+ +--------------+ +-----+ | |||
| | +-----+ +--------------+ +-----+ | +----+ | | PE1 |======| |===| PE3 | +----+ | |||
| +----+ | | PE1 |======| |===| PE3 | +----+ | | +-------+ | | | | +-------+ CE3| | |||
| | +-------+ | | | | +-------+ CE3| | | | | +-----+ | | +-----+ +----+ | |||
| | | | +-----+ | | +-----+ +----+ | | CE1| | | Core | | |||
| | CE1| | | Core | | | | | +-----+ | | +-----+ +----+ | |||
| | | | +-----+ | | +-----+ +----+ | | +-------+ | | | | +-------+ CE2| | |||
| | +-------+ | | | | +-------+ CE2| | +----+ | | PE2 |======| |===| PE4 | +----+ | |||
| +----+ | | PE2 |======| |===| PE4 | +----+ | | +-----+ +--------------+ +-----+ | |||
| | +-----+ +--------------+ +-----+ | LACP ]]></artwork> | |||
| LACP ]]></artwork> | </figure> | |||
| </figure></t> | <t>Figures <xref target="es2" format="counter"/> and <xref target="auto- | |||
| lacp" format="counter"/> | ||||
| <t><xref target="es2"></xref> and <xref target="auto-lacp"></xref> | ||||
| show how the L2NM is used to instruct both PE1 and PE2 to auto-assign | show how the L2NM is used to instruct both PE1 and PE2 to auto-assign | |||
| the ESI to identify the ES used with CE1. In this example, we suppose | the ESI to identify the ES used with CE1. In this example, we suppose | |||
| that LACP is enabled and that a Type 1 (T=0x01) is used as per Section | that LACP is enabled and that a Type 1 (T=0x01) is used as per <xref tar | |||
| 5 of <xref target="RFC7432"></xref>. Note that this example does not | get="RFC7432" sectionFormat="of" section="5" format="default"/>. Note that this | |||
| include all the details to configure the EVPN service, but focuses | example does not | |||
| include all the details to configure the EVPN service but focuses | ||||
| only on the ESI management part.</t> | only on the ESI management part.</t> | |||
| <figure anchor="es2"> | ||||
| <t><figure align="center" anchor="es2" | <name>An Example of an L2NM Message Body to Auto-Assign Ethernet Segme | |||
| title="Example of L2NM Message Body to Auto-Assign Ethernet Segment | nt Identifiers</name> | |||
| Identifiers"> | <sourcecode type="json"><![CDATA[{ | |||
| <artwork><![CDATA[{ | ||||
| "ietf-ethernet-segment:ethernet-segments": { | "ietf-ethernet-segment:ethernet-segments": { | |||
| "ethernet-segment": [ | "ethernet-segment": [ | |||
| { | { | |||
| "name": "esi1", | "name": "esi1", | |||
| "esi-type": "esi-type-1-lacp", | "esi-type": "esi-type-1-lacp", | |||
| "esi-redundancy-mode": "all-active" | "esi-redundancy-mode": "all-active" | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| }]]></artwork> | }]]></sourcecode> | |||
| </figure></t> | </figure> | |||
| <figure anchor="auto-lacp"> | ||||
| <t><figure align="center" anchor="auto-lacp" | <name>An Example of an L2NM Message Body for ESI Auto-Assignment</name | |||
| title="An Example of L2NM Message Body for ESI Auto-Assignment"> | > | |||
| <artwork><![CDATA[{ | <sourcecode type="json"><![CDATA[{ | |||
| "ietf-l2vpn-ntw:l2vpn-ntw": { | "ietf-l2vpn-ntw:l2vpn-ntw": { | |||
| "ietf-l2vpn-ntw:vpn-services": { | "ietf-l2vpn-ntw:vpn-services": { | |||
| "vpn-service": [ | "vpn-service": [ | |||
| { | { | |||
| "vpn-id": "auto-esi-lacp", | "vpn-id": "auto-esi-lacp", | |||
| "vpn-description": "Sample to illustrate auto-ESI", | "vpn-description": "Sample to illustrate auto-ESI", | |||
| "vpn-type": "ietf-vpn-common:vpws-evpn", | "vpn-type": "ietf-vpn-common:vpws-evpn", | |||
| "vpn-nodes": { | "vpn-nodes": { | |||
| "vpn-node": [ | "vpn-node": [ | |||
| { | { | |||
| skipping to change at line 7476 ¶ | skipping to change at line 7390 ¶ | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure></t> | </figure> | |||
| <t>The auto-assigned ESI can be retrieved using, e.g., a GET RESTCONF | <t>The auto-assigned ESI can be retrieved using, e.g., a GET RESTCONF | |||
| method. The assigned value will be then returned as shown in the | method. The assigned value will then be returned as shown in the | |||
| 'esi-auto' data node in <xref target="auto-lacp-response"></xref>.</t> | 'esi-auto' data node in <xref target="auto-lacp-response" format="defaul | |||
| t"/>.</t> | ||||
| <t><figure align="center" anchor="auto-lacp-response" | <figure anchor="auto-lacp-response"> | |||
| title="An Example of L2NM Message Body to Retrieve the Assigned ESI" | <name>An Example of an L2NM Message Body to Retrieve the Assigned ESI< | |||
| > | /name> | |||
| <artwork><![CDATA[=============== NOTE: '\' line wrapping per RFC 87 | <sourcecode type="json"><![CDATA[=============== NOTE: '\' line wrappi | |||
| 92 ================ | ng per RFC 8792 ================ | |||
| { | { | |||
| "ietf-ethernet-segment:ethernet-segments": { | "ietf-ethernet-segment:ethernet-segments": { | |||
| "ethernet-segment": [ | "ethernet-segment": [ | |||
| { | { | |||
| "name": "esi1", | "name": "esi1", | |||
| "ethernet-segment-identifier": "esi-type-1-lacp", | "ethernet-segment-identifier": "esi-type-1-lacp", | |||
| "esi-auto": { | "esi-auto": { | |||
| "auto-ethernet-segment-identifier": "01:11:00:11:00:11:\ | "auto-ethernet-segment-identifier": "01:11:00:11:00:11:\ | |||
| 11:9a:00:00" | 11:9a:00:00" | |||
| }, | }, | |||
| "esi-redundancy-mode": "all-active" | "esi-redundancy-mode": "all-active" | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure></t> | </figure> | |||
| </section> | </section> | |||
| <section anchor="prec-example" numbered="true" toc="default"> | ||||
| <section anchor="prec-example" title="VPN Network Access Precedence"> | <name>VPN Network Access Precedence</name> | |||
| <t>In reference to the example depicted in <xref target="p1"></xref>, | <t>In reference to the example depicted in <xref target="p1" format="def | |||
| ault"/>, | ||||
| an L2VPN service involves two VPN network accesses to sites that | an L2VPN service involves two VPN network accesses to sites that | |||
| belong to the same customer.</t> | belong to the same customer.</t> | |||
| <figure anchor="p1"> | ||||
| <t><figure align="center" anchor="p1" | <name>An Example of Multiple VPN Network Accesses</name> | |||
| title="Example of Multiple VPN Network Accesses"> | <artwork align="center" name="" type="" alt=""><![CDATA[+------------- | |||
| <artwork align="center"><![CDATA[+--------------+ | -+ | |||
| |VPN-NODE | | |VPN-NODE | | |||
| | +--+-------+ | | +--+-------+ | |||
| | | NET-ACC-1| Primary | | | NET-ACC-1| Primary | |||
| | | +------------------ | | | +------------------ | |||
| | +--+-------+ | | +--+-------+ | |||
| | | | | | | |||
| | +--+-------+ | | +--+-------+ | |||
| | | NET-ACC-2| Secondary | | | NET-ACC-2| Secondary | |||
| | | +------------------ | | | +------------------ | |||
| | +--+-------+ | | +--+-------+ | |||
| | | | | | | |||
| +--------------+ | +--------------+ | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure>In order to tag one of these VPN network accesses as | </figure> | |||
| "primary" and the other one as "secondary", <xref target="p2"></xref> | <t>In order to tag one of these VPN network accesses as | |||
| "primary" and the other one as "secondary", <xref target="p2" format="de | ||||
| fault"/> | ||||
| shows an excerpt of the corresponding L2NM configuration. In such a | shows an excerpt of the corresponding L2NM configuration. In such a | |||
| configuration, both accesses are bound to the same "group-id" and the | configuration, both accesses are bound to the same "group-id", and the | |||
| "precedence" data node set as function of the intended role of each | "precedence" data node is set as a function of the intended role of each | |||
| access (primary or secondary).</t> | access (primary or secondary).</t> | |||
| <figure anchor="p2"> | ||||
| <t><figure align="center" anchor="p2" | <name>An Example of a Message Body to Associate Priority Levels with V | |||
| title="Example of Message Body to Associate Priority Levels with VPN | PN Network Accesses</name> | |||
| Network Accesses"> | <sourcecode type="json"><![CDATA[{ | |||
| <artwork><![CDATA[{ | ||||
| "ietf-l2vpn-ntw:l2vpn-ntw": { | "ietf-l2vpn-ntw:l2vpn-ntw": { | |||
| "vpn-services": { | "vpn-services": { | |||
| "vpn-service": [ | "vpn-service": [ | |||
| { | { | |||
| "vpn-id": "Sample-Service", | "vpn-id": "Sample-Service", | |||
| "vpn-nodes": { | "vpn-nodes": { | |||
| "vpn-node": [ | "vpn-node": [ | |||
| { | { | |||
| "vpn-node-id": "VPN-NODE", | "vpn-node-id": "VPN-NODE", | |||
| "vpn-network-accesses": { | "vpn-network-accesses": { | |||
| skipping to change at line 7581 ¶ | skipping to change at line 7493 ¶ | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| }]]></artwork> | }]]></sourcecode> | |||
| </figure></t> | </figure> | |||
| <t/> | ||||
| <t></t> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| <section numbered="false" toc="default"> | ||||
| <section numbered="false" title="Acknowledgements" toc="default"> | <name>Acknowledgements</name> | |||
| <t>During the discussions of this work, helpful comments, suggestions, | <t>During the discussions of this work, helpful comments, suggestions, | |||
| and reviews were received from: Sergio Belotti, Italo Busi, Miguel Cros | and reviews were received from: <contact fullname="Sergio Belotti"/>, | |||
| Cecilia, Joe Clarke, Dhruv Dhody, Adrian Farrel, Roque Gagliano, | <contact fullname="Italo Busi"/>, <contact fullname="Miguel Cros | |||
| Christian Jacquenet, Kireeti Kompella, Julian Lucek, Moti Morgenstern, | Cecilia"/>, <contact fullname="Joe Clarke"/>, <contact fullname="Dhruv Dho | |||
| Erez Segev, and Tom Petch. Many thanks to them.</t> | dy"/>, <contact fullname="Adrian Farrel"/>, <contact fullname="Roque Gagliano"/> | |||
| , | ||||
| <t>Luay Jalil, Jichun Ma, Daniel King, and Zhang Guiyu contributed to an | <contact fullname="Christian Jacquenet"/>, <contact fullname="Kireeti Komp | |||
| early version of this document.</t> | ella"/>, <contact fullname="Julian Lucek"/>, <contact fullname="Moti Morgenstern | |||
| "/>, | ||||
| <t>Thanks to Yingzhen Qu and Himanshu Shah for the rtgdir reviews, | <contact fullname="Tom Petch"/>, and <contact fullname="Erez Segev"/>. Man | |||
| Ladislav Lhotka for the yangdoctors review, Chris Lonvick for the secdir | y thanks to them.</t> | |||
| review, and Dale Worley for the gen-art review. Special thanks to Adrian | ||||
| Farrel for the careful Shepherd review.</t> | ||||
| <t>Thanks to Robert Wilton for the careful AD review and various | <t><contact fullname="Zhang Guiyu"/>, <contact fullname="Luay Jalil"/>, | |||
| <contact fullname="Daniel King"/>, and <contact fullname="Jichun Ma"/> | ||||
| contributed to an early draft version of this document.</t> | ||||
| <t>Thanks to <contact fullname="Yingzhen Qu"/> and <contact fullname="Hima | ||||
| nshu Shah"/> for the rtgdir reviews, | ||||
| <contact fullname="Ladislav Lhotka"/> for the yangdoctors review, <contact | ||||
| fullname="Chris Lonvick"/> for the secdir | ||||
| review, and <contact fullname="Dale Worley"/> for the gen-art review. Spec | ||||
| ial thanks to <contact fullname="Adrian | ||||
| Farrel"/> for the careful Shepherd review.</t> | ||||
| <t>Thanks to <contact fullname="Robert Wilton"/> for the careful AD review | ||||
| and various | ||||
| suggestions to enhance the model.</t> | suggestions to enhance the model.</t> | |||
| <t>Thanks to <contact fullname="Roman Danyliw"/>, <contact fullname="Lars | ||||
| <t>Thanks to Lars Eggert, Erik Kline, Roman Danyliw, Francesca | Eggert"/>, <contact fullname="Erik Kline"/>, <contact fullname="Francesca | |||
| Palombini, Zaheduzzaman Sarker, and Eric Vyncke for the IESG review.</t> | Palombini"/>, <contact fullname="Zaheduzzaman Sarker"/>, and <contact full | |||
| name="Éric Vyncke"/> for the IESG review.</t> | ||||
| <t>A YANG module for Ethernet segments was first defined in the context | <t>A YANG module for Ethernet segments was first defined in the context | |||
| of the EVPN device module <xref target="I-D.ietf-bess-evpn-yang" />.</t> | of the EVPN device module <xref target="I-D.ietf-bess-evpn-yang" format="d | |||
| efault"/>.</t> | ||||
| <t>This work is partially supported by the European Commission under | <t>This work is partially supported by the European Commission under | |||
| Horizon 2020 grant agreement number 101015857 Secured autonomic traffic | Horizon 2020 Secured autonomic traffic management for a Tera of SDN flows | |||
| management for a Tera of SDN flows (Teraflow).</t> | (Teraflow) project (grant agreement number 101015857).</t> | |||
| </section> | </section> | |||
| <section numbered="false" title="Contributors" toc="default"> | <section numbered="false" toc="default"> | |||
| <figure> | <name>Contributors</name> | |||
| <artwork><![CDATA[Victor Lopez | ||||
| Nokia | ||||
| Email: victor.lopez@nokia.com | ||||
| Qin Wu | <author fullname="Victor Lopez" initials="V" surname="Lopez"> | |||
| Huawei | <organization>Nokia</organization> | |||
| Email: bill.wu@huawei.com | <address> | |||
| <email>victor.lopez@nokia.com</email> | ||||
| </address> | ||||
| </author> | ||||
| Raul Arco | <author fullname="Qin Wu" initials="Q" surname="Wu"> | |||
| Nokia | <organization>Huawei</organization> | |||
| Email: raul.arco@nokia.com]]></artwork> | <address> | |||
| </figure> | <email>bill.wu@huawei.com</email> | |||
| </address> | ||||
| </author> | ||||
| <t /> | <author fullname="Raul Arco" initials="R" surname="Arco"> | |||
| <organization>Nokia</organization> | ||||
| <address> | ||||
| <email>raul.arco@nokia.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <t /> | ||||
| </section> | </section> | |||
| </back> | </back> | |||
| </rfc> | </rfc> | |||
| End of changes. 522 change blocks. | ||||
| 2027 lines changed or deleted | 2191 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||