<?xml version='1.0' encoding='utf-8'?>

<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-opsawg-ac-lxsm-lxnm-glue-14" number="9836" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3" xml:lang="en" updates="" obsoletes="">

  <front>
    <title abbrev="AC Glue for VPN Models">A YANG Data Model for Augmenting VPN Service and Network Models with Attachment Circuits</title>
    <seriesInfo name="RFC" value="9836"/>
    <author fullname="Mohamed Boucadair" initials="M." surname="Boucadair" role="editor">
      <organization>Orange</organization>
      <address>
        <email>mohamed.boucadair@orange.com</email>
      </address>
    </author>
    <author fullname="Richard Roberts" initials="R." surname="Roberts">
      <organization>Juniper</organization>
      <address>
        <email>rroberts@juniper.net</email>
      </address>
    </author>
    <author fullname="Samier Barguil" initials="S." surname="Barguil">
      <organization>Nokia</organization>
      <address>
        <email>samier.barguil_giraldo@nokia.com</email>
      </address>
    </author>
    <author fullname="Oscar Gonzalez de Dios" initials="O." surname="Gonzalez de Dios">
      <organization>Telefonica</organization>
      <address>
        <email>oscar.gonzalezdedios@telefonica.com</email>
      </address>
    </author>
    <date year="2025" month="September"/>
    <area>OPS</area>
    <workgroup>opsawg</workgroup>

    <keyword>Slice Service</keyword>
    <keyword>L3VPN</keyword>
    <keyword>L2VPN</keyword>
    <keyword>Automation</keyword>
    <keyword>Network Automation</keyword>
    <keyword>Orchestration</keyword>
    <keyword>service delivery</keyword>
    <keyword>Service provisioning</keyword>
    <keyword>service segmentation</keyword>
    <keyword>service flexibility</keyword>
    <keyword>service simplification</keyword>
    <keyword>Network Service</keyword>
    <keyword>3GPP</keyword>
    <keyword>Network Slicing</keyword>

    <abstract>
<t>This document defines a YANG data model, referred to as the "AC Glue" model, to
augment the LxVPN Service Model (LxSM) and LxVPN Network Model (LxNM) with references to attachment circuits (ACs). The
AC Glue model enables a provider to associate Layer 2/3
VPN (LxVPN) services with the underlying AC infrastructure, thereby
facilitating consistent provisioning and management of new or existing ACs in
conjunction with LxVPN services. Specifically, by introducing an integrated approach to AC
and LxVPN management, this model supports Attachment Circuit as a Service
(ACaaS) and provides a standardized mechanism for aligning AC/VPN requests
with the network configurations required to deliver them.</t>
    </abstract>
  </front>
  <middle>
    <?line 72?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>To facilitate data transfer within the provider network, it is assumed that the appropriate setup
   is provisioned over the links that connect customer termination
   points and a provider network (usually via a Provider Edge (PE)),
   allowing data to be successfully exchanged over these links.  The required
   setup is referred to in this document as an attachment circuit (AC),
   while the underlying link is referred to as "bearer".</t>
      <t>The document specifies a YANG module ("ietf-ac-glue", <xref target="sec-glue"/>) that updates existing service and
network Virtual Private Network (VPN) modules with the required information to bind specific
services to ACs that are created using the AC service model <xref target="RFC9834"/>. Specifically, the following modules are augmented:</t>
      <ul spacing="normal">
        <li>
          <t>The L2VPN Service Model (L2SM) <xref target="RFC8466"/></t>
        </li>
        <li>
          <t>The L3VPN Service Model (L3SM) <xref target="RFC8299"/></t>
        </li>
        <li>
          <t>The L2VPN Network Model (L2NM) <xref target="RFC9291"/></t>
        </li>
        <li>
          <t>The L3VPN Network Model (L3NM) <xref target="RFC9182"/></t>
        </li>
      </ul>
      <t>Likewise, the document augments the L2NM and L3NM with references to the ACs that are managed using the AC network model <xref target="RFC9835"/>.</t>
      <t>This approach allows operators to separate AC provisioning from actual VPN service provisioning. Refer to <xref target="sep"/> for more discussion.</t>
      <t>The YANG data model in this document conforms to the Network
Management Datastore Architecture (NMDA) defined in <xref target="RFC8342"/>.</t>
      <t>Examples to illustrate the use of the "ietf-ac-glue" module are provided in <xref target="sec-example"/>.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The meanings of the symbols in the YANG tree diagrams are defined in <xref target="RFC8340"/>.</t>
      <t>This document uses terms defined in <xref target="RFC9834"/>.</t>
      <t>LxSM refers to both the L2SM and the L3SM.</t>
      <t>LxNM refers to both the L2NM and the L3NM.</t>
      <t>The following terms are used in the module's prefixes:</t>
      <dl>
        <dt>ac:</dt>
        <dd>
          <t>Attachment circuit</t>
        </dd>
        <dt>ntw:</dt>
        <dd>
          <t>Network</t>
        </dd>
        <dt>ref:</dt>
        <dd>
          <t>Reference</t>
        </dd>
        <dt>svc:</dt>
        <dd>
          <t>Service</t>
        </dd>
      </dl>
      <t>The names of data nodes are prefixed using the prefix associated with the corresponding imported YANG module as shown in <xref target="pref"/>:</t>
      
      <table anchor="pref">
        <name>Modules and Their Associated Prefixes</name>
        <thead>
          <tr>
            <th align="left">Prefix</th>
            <th align="left">Module</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">ac-svc</td>
            <td align="left">ietf-ac-svc</td>
            <td align="left"><xref target="RFC9834" sectionFormat="of" section="6.2"/></td>
          </tr>
          <tr>
            <td align="left">ac-ntw</td>
            <td align="left">ietf-ac-ntw</td>
            <td align="left"><xref target="RFC9835"/></td>
          </tr>
          <tr>
            <td align="left">l2nm</td>
            <td align="left">ietf-l2vpn-ntw</td>
            <td align="left"> <xref target="RFC9291"/></td>
          </tr>
          <tr>
            <td align="left">l2vpn-svc</td>
            <td align="left">ietf-l2vpn-svc</td>
            <td align="left"><xref target="RFC8466"/></td>
          </tr>
          <tr>
            <td align="left">l3nm</td>
            <td align="left">ietf-l3vpn-ntw</td>
            <td align="left"> <xref target="RFC9182"/></td>
          </tr>
          <tr>
            <td align="left">l3vpn-svc</td>
            <td align="left">ietf-l3vpn-svc</td>
            <td align="left">
              <xref target="RFC8299"/></td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="relationship-to-other-ac-data-models">
      <name>Relationship to Other AC Data Models</name>
      <t><xref target="ac-overview"/> depicts the relationship between the various AC data models:</t>
      <ul spacing="normal">
        <li>
          <t>"ietf-ac-common" <xref target="RFC9833"/></t>
        </li>
        <li>
          <t>"ietf-bearer-svc" (<xref section="6.1" sectionFormat="of" target="RFC9834"/>)</t>
        </li>
        <li>
          <t>"ietf-ac-svc" (<xref section="6.2" sectionFormat="of" target="RFC9834"/>)</t>
        </li>
        <li>
          <t>"ietf-ac-ntw" <xref target="RFC9835"/></t>
        </li>
        <li>
          <t>"ietf-ac-glue" (<xref target="sec-glue"/>)</t>
        </li>
      </ul>
      <figure anchor="ac-overview">
        <name>AC Data Models</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="288" width="368" viewBox="0 0 368 288" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 32,144 L 32,240" fill="none" stroke="black"/>
              <path d="M 56,80 L 56,112" fill="none" stroke="black"/>
              <path d="M 72,144 L 72,176" fill="none" stroke="black"/>
              <path d="M 144,48 L 144,80" fill="none" stroke="black"/>
              <path d="M 192,40 L 192,112" fill="none" stroke="black"/>
              <path d="M 240,48 L 240,80" fill="none" stroke="black"/>
              <path d="M 328,80 L 328,160" fill="none" stroke="black"/>
              <path d="M 328,192 L 328,240" fill="none" stroke="black"/>
              <path d="M 56,80 L 144,80" fill="none" stroke="black"/>
              <path d="M 240,80 L 328,80" fill="none" stroke="black"/>
              <path d="M 104,128 L 128,128" fill="none" stroke="black"/>
              <path d="M 72,176 L 264,176" fill="none" stroke="black"/>
              <path d="M 32,240 L 128,240" fill="none" stroke="black"/>
              <path d="M 248,240 L 328,240" fill="none" stroke="black"/>
              <path d="M 24,272 L 40,272" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="336,192 324,186.4 324,197.6" fill="black" transform="rotate(270,328,192)"/>
              <polygon class="arrowhead" points="248,48 236,42.4 236,53.6" fill="black" transform="rotate(270,240,48)"/>
              <polygon class="arrowhead" points="200,40 188,34.4 188,45.6" fill="black" transform="rotate(270,192,40)"/>
              <polygon class="arrowhead" points="152,48 140,42.4 140,53.6" fill="black" transform="rotate(270,144,48)"/>
              <polygon class="arrowhead" points="112,128 100,122.4 100,133.6" fill="black" transform="rotate(180,104,128)"/>
              <polygon class="arrowhead" points="80,144 68,138.4 68,149.6" fill="black" transform="rotate(270,72,144)"/>
              <polygon class="arrowhead" points="48,272 36,266.4 36,277.6" fill="black" transform="rotate(0,40,272)"/>
              <polygon class="arrowhead" points="40,144 28,138.4 28,149.6" fill="black" transform="rotate(270,32,144)"/>
              <g class="text">
                <text x="188" y="36">ietf-ac-common</text>
                <text x="48" y="132">ietf-ac-svc</text>
                <text x="200" y="132">ietf-bearer-svc</text>
                <text x="320" y="180">ietf-ac-ntw</text>
                <text x="188" y="244">ietf-ac-glue</text>
                <text x="8" y="276">X</text>
                <text x="60" y="276">Y:</text>
                <text x="80" y="276">X</text>
                <text x="120" y="276">imports</text>
                <text x="160" y="276">Y</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
                ietf-ac-common
                 ^     ^     ^
                 |     |     |
      .----------'     |     '----------.
      |                |                |
      |                |                |
ietf-ac-svc <--- ietf-bearer-svc        |
   ^    ^                               |
   |    |                               |
   |    '------------------------ ietf-ac-ntw
   |                                    ^
   |                                    |
   |                                    |
   '------------ ietf-ac-glue ----------'

X --> Y: X imports Y
]]></artwork>
        </artset>
      </figure>
      <t>The "ietf-ac-common" module is imported by the "ietf-bearer-svc", "ietf-ac-svc", and "ietf-ac-ntw" modules. Bearers managed using the "ietf-bearer-svc" module may be referenced by service ACs managed using the "ietf-ac-svc" module. Similarly, a bearer managed using the "ietf-bearer-svc" module may list the set of ACs that use that bearer. To facilitate correlation between an AC service request and the actual AC provisioned in the network, "ietf-ac-ntw" leverages the AC references exposed by the "ietf-ac-svc" module. Furthermore, to bind Layer 2 VPN (L2VPN) or Layer 3 VPN (L3VPN) services with ACs, the "ietf-ac-glue" module augments the LxSM and LxNM with AC service references exposed by the "ietf-ac-svc" module and AC network references exposed by the "ietf-ac-ntw" module.</t>
    </section>
    <section anchor="sample-uses-of-the-data-models">
      <name>Sample Uses of the Data Models</name>
      <section anchor="acs-terminated-by-one-or-multiple-customer-edges-ces">
        <name>ACs Terminated by One or Multiple Customer Edges (CEs)</name>
        <t><xref target="uc"/> depicts two target topology flavors that involve ACs. These topologies have the following characteristics:</t>
        <ul spacing="normal">
          <li>
            <t>A Customer Edge (CE) can be either a physical device or a logical entity. Such logical entity is typically a software component (e.g., a virtual service function that is hosted within the provider's network or a third-party infrastructure). A CE is seen by the network as a peer Service Attachment Point (SAP) <xref target="RFC9408"/>.</t>
          </li>
          <li>
            <t>CEs may be either dedicated to one single connectivity service or host multiple connectivity services (e.g., CEs with roles of service functions <xref target="RFC7665"/>).</t>
          </li>
          <li>
            <t>A network provider may bind a single AC to one or multiple peer SAPs (e.g., CE1 and CE2 are tagged as peer SAPs for the same AC). For example, and as discussed in <xref target="RFC4364"/>, multiple CEs can be attached to a PE over the same AC. This scenario is typically implemented when the Layer 2 infrastructure between the CE and the network is a multipoint service.</t>
          </li>
          <li>
            <t>A single CE may terminate multiple ACs, which can be associated with the same bearer or distinct bearers (e.g., CE4).</t>
          </li>
          <li>
            <t>Customers may request protection schemes in which the ACs associated with their endpoints are terminated by the same PE (e.g., CE3), distinct PEs (e.g., CE4), etc. The network provider uses this request to decide where to terminate the AC in the service provider network and also whether to enable specific capabilities (e.g., Virtual Router Redundancy Protocol (VRRP)).</t>
          </li>
        </ul>
        <figure anchor="uc">
          <name>Examples of ACs</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="304" width="512" viewBox="0 0 512 304" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,80 L 8,112" fill="none" stroke="black"/>
                <path d="M 8,160 L 8,192" fill="none" stroke="black"/>
                <path d="M 72,64 L 72,96" fill="none" stroke="black"/>
                <path d="M 72,144 L 72,176" fill="none" stroke="black"/>
                <path d="M 112,80 L 112,176" fill="none" stroke="black"/>
                <path d="M 176,112 L 176,144" fill="none" stroke="black"/>
                <path d="M 192,32 L 192,104" fill="none" stroke="black"/>
                <path d="M 192,152 L 192,224" fill="none" stroke="black"/>
                <path d="M 200,112 L 200,144" fill="none" stroke="black"/>
                <path d="M 280,208 L 280,240" fill="none" stroke="black"/>
                <path d="M 288,248 L 288,272" fill="none" stroke="black"/>
                <path d="M 304,208 L 304,240" fill="none" stroke="black"/>
                <path d="M 352,64 L 352,112" fill="none" stroke="black"/>
                <path d="M 352,144 L 352,192" fill="none" stroke="black"/>
                <path d="M 360,32 L 360,56" fill="none" stroke="black"/>
                <path d="M 360,200 L 360,224" fill="none" stroke="black"/>
                <path d="M 376,64 L 376,112" fill="none" stroke="black"/>
                <path d="M 376,144 L 376,192" fill="none" stroke="black"/>
                <path d="M 448,80 L 448,112" fill="none" stroke="black"/>
                <path d="M 448,160 L 448,192" fill="none" stroke="black"/>
                <path d="M 480,192 L 480,272" fill="none" stroke="black"/>
                <path d="M 504,64 L 504,96" fill="none" stroke="black"/>
                <path d="M 504,144 L 504,176" fill="none" stroke="black"/>
                <path d="M 192,32 L 360,32" fill="none" stroke="black"/>
                <path d="M 24,64 L 72,64" fill="none" stroke="black"/>
                <path d="M 352,64 L 376,64" fill="none" stroke="black"/>
                <path d="M 464,64 L 504,64" fill="none" stroke="black"/>
                <path d="M 72,80 L 112,80" fill="none" stroke="black"/>
                <path d="M 376,80 L 400,80" fill="none" stroke="black"/>
                <path d="M 424,80 L 448,80" fill="none" stroke="black"/>
                <path d="M 376,96 L 400,96" fill="none" stroke="black"/>
                <path d="M 424,96 L 448,96" fill="none" stroke="black"/>
                <path d="M 8,112 L 56,112" fill="none" stroke="black"/>
                <path d="M 176,112 L 200,112" fill="none" stroke="black"/>
                <path d="M 352,112 L 376,112" fill="none" stroke="black"/>
                <path d="M 448,112 L 488,112" fill="none" stroke="black"/>
                <path d="M 112,128 L 136,128" fill="none" stroke="black"/>
                <path d="M 160,128 L 176,128" fill="none" stroke="black"/>
                <path d="M 24,144 L 72,144" fill="none" stroke="black"/>
                <path d="M 176,144 L 200,144" fill="none" stroke="black"/>
                <path d="M 352,144 L 376,144" fill="none" stroke="black"/>
                <path d="M 464,144 L 504,144" fill="none" stroke="black"/>
                <path d="M 376,160 L 400,160" fill="none" stroke="black"/>
                <path d="M 424,160 L 448,160" fill="none" stroke="black"/>
                <path d="M 72,176 L 112,176" fill="none" stroke="black"/>
                <path d="M 376,176 L 400,176" fill="none" stroke="black"/>
                <path d="M 424,176 L 448,176" fill="none" stroke="black"/>
                <path d="M 8,192 L 56,192" fill="none" stroke="black"/>
                <path d="M 352,192 L 376,192" fill="none" stroke="black"/>
                <path d="M 448,192 L 488,192" fill="none" stroke="black"/>
                <path d="M 280,208 L 304,208" fill="none" stroke="black"/>
                <path d="M 192,224 L 280,224" fill="none" stroke="black"/>
                <path d="M 304,224 L 360,224" fill="none" stroke="black"/>
                <path d="M 280,240 L 304,240" fill="none" stroke="black"/>
                <path d="M 288,272 L 376,272" fill="none" stroke="black"/>
                <path d="M 400,272 L 480,272" fill="none" stroke="black"/>
                <path d="M 24,64 C 15.16936,64 8,71.16936 8,80" fill="none" stroke="black"/>
                <path d="M 464,64 C 455.16936,64 448,71.16936 448,80" fill="none" stroke="black"/>
                <path d="M 56,112 C 64.83064,112 72,104.83064 72,96" fill="none" stroke="black"/>
                <path d="M 488,112 C 496.83064,112 504,104.83064 504,96" fill="none" stroke="black"/>
                <path d="M 24,144 C 15.16936,144 8,151.16936 8,160" fill="none" stroke="black"/>
                <path d="M 464,144 C 455.16936,144 448,151.16936 448,160" fill="none" stroke="black"/>
                <path d="M 56,192 C 64.83064,192 72,184.83064 72,176" fill="none" stroke="black"/>
                <path d="M 488,192 C 496.83064,192 504,184.83064 504,176" fill="none" stroke="black"/>
                <g class="text">
                  <text x="412" y="68">(b1)</text>
                  <text x="412" y="84">AC</text>
                  <text x="40" y="100">CE1</text>
                  <text x="364" y="100">PE</text>
                  <text x="412" y="100">AC</text>
                  <text x="480" y="100">CE3</text>
                  <text x="412" y="116">(b2)</text>
                  <text x="148" y="132">AC</text>
                  <text x="188" y="132">PE</text>
                  <text x="272" y="132">Network</text>
                  <text x="360" y="132">|</text>
                  <text x="412" y="148">(b3)</text>
                  <text x="412" y="164">AC</text>
                  <text x="40" y="180">CE2</text>
                  <text x="364" y="180">PE</text>
                  <text x="412" y="180">AC</text>
                  <text x="480" y="180">CE4</text>
                  <text x="412" y="196">(b3)</text>
                  <text x="292" y="228">PE</text>
                  <text x="388" y="276">AC</text>
                  <text x="20" y="292">(bx)</text>
                  <text x="48" y="292">=</text>
                  <text x="84" y="292">bearer</text>
                  <text x="124" y="292">Id</text>
                  <text x="144" y="292">x</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
                       .--------------------.
                       |                    |
 .------.              |                   .--.  (b1)   .-----.
|       +----.         |                   |  +---AC---+      |
|  CE1  |    |         |                   |PE+---AC---+  CE3 |
'------'     |       .--.                  '--'  (b2)  '-----'
             +---AC--+PE|     Network       |
 .------.    |       '--'                  .--.  (b3)   .-----.
|       |    |         |                   |  +---AC---+      |
|  CE2  +----'         |                   |PE+---AC---+  CE4 |
'------'               |                   '--'  (b3)  '---+-'
                       |          .--.      |              |
                       '----------+PE+------'              |
                                  '--'                     |
                                   |                       |
                                   '-----------AC----------'
(bx) = bearer Id x
]]></artwork>
          </artset>
        </figure>
        <t>These ACs can be referenced when creating VPN services. Refer to the examples provided in <xref target="sec-example"/> to illustrate how VPN services can be bound to ACs.</t>
      </section>
      <section anchor="sep">
        <name>Separate AC Provisioning from Actual VPN Service Provisioning</name>
        <t>The procedure to provision a service in a service provider network may depend on the practices adopted by a service provider. This includes the flow put in place for the provisioning of advanced network services and how they are bound to an AC. For example, a single AC may be used to host multiple connectivity services (e.g., L2VPN ("ietf-l2vpn-svc"), L3VPN ("ietf-l3vpn-svc"), Network Slice Service ("ietf-network-slice-service")). In order to avoid service interference and redundant information in various locations, a service provider may expose an interface to manage ACs network-wide using the modules in <xref target="RFC9834"/>. Customers can request for an AC ("ietf-ac-svc") to be put in place and then refer to that AC when requesting VPN services that are bound to the AC ("ietf-ac-glue").</t>
        <t>Also, internal references ("ietf-ac-ntw") used within a service provider network to implement ACs can be used by network controllers to glue the L2NM ("ietf-l2vpn-ntw") or the L3NM ("ietf-l3vpn-ntw") services with relevant ACs.</t>
        <t><xref target="_u-ex"/> shows the positioning of the AC models in the overall service delivery process.</t>
        <figure anchor="_u-ex">
          <name>An Example of AC Models Usage</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="688" width="512" viewBox="0 0 512 688" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,608 L 8,624" fill="none" stroke="black"/>
                <path d="M 48,592 L 48,608" fill="none" stroke="black"/>
                <path d="M 96,480 L 96,496" fill="none" stroke="black"/>
                <path d="M 104,368 L 104,384" fill="none" stroke="black"/>
                <path d="M 120,576 L 120,640" fill="none" stroke="black"/>
                <path d="M 136,400 L 136,464" fill="none" stroke="black"/>
                <path d="M 136,512 L 136,528" fill="none" stroke="black"/>
                <path d="M 176,320 L 176,352" fill="none" stroke="black"/>
                <path d="M 176,480 L 176,496" fill="none" stroke="black"/>
                <path d="M 208,144 L 208,160" fill="none" stroke="black"/>
                <path d="M 208,256 L 208,272" fill="none" stroke="black"/>
                <path d="M 208,400 L 208,568" fill="none" stroke="black"/>
                <path d="M 232,368 L 232,384" fill="none" stroke="black"/>
                <path d="M 272,64 L 272,128" fill="none" stroke="black"/>
                <path d="M 272,176 L 272,240" fill="none" stroke="black"/>
                <path d="M 272,288 L 272,320" fill="none" stroke="black"/>
                <path d="M 296,368 L 296,384" fill="none" stroke="black"/>
                <path d="M 336,144 L 336,160" fill="none" stroke="black"/>
                <path d="M 336,256 L 336,272" fill="none" stroke="black"/>
                <path d="M 368,320 L 368,352" fill="none" stroke="black"/>
                <path d="M 368,400 L 368,568" fill="none" stroke="black"/>
                <path d="M 384,576 L 384,640" fill="none" stroke="black"/>
                <path d="M 424,368 L 424,384" fill="none" stroke="black"/>
                <path d="M 456,608 L 456,624" fill="none" stroke="black"/>
                <path d="M 496,592 L 496,608" fill="none" stroke="black"/>
                <path d="M 224,32 L 320,32" fill="none" stroke="black"/>
                <path d="M 224,64 L 320,64" fill="none" stroke="black"/>
                <path d="M 224,128 L 320,128" fill="none" stroke="black"/>
                <path d="M 224,176 L 320,176" fill="none" stroke="black"/>
                <path d="M 224,240 L 320,240" fill="none" stroke="black"/>
                <path d="M 224,288 L 320,288" fill="none" stroke="black"/>
                <path d="M 176,320 L 368,320" fill="none" stroke="black"/>
                <path d="M 120,352 L 216,352" fill="none" stroke="black"/>
                <path d="M 312,352 L 408,352" fill="none" stroke="black"/>
                <path d="M 120,400 L 216,400" fill="none" stroke="black"/>
                <path d="M 312,400 L 408,400" fill="none" stroke="black"/>
                <path d="M 112,464 L 160,464" fill="none" stroke="black"/>
                <path d="M 112,512 L 160,512" fill="none" stroke="black"/>
                <path d="M 120,576 L 384,576" fill="none" stroke="black"/>
                <path d="M 24,592 L 48,592" fill="none" stroke="black"/>
                <path d="M 472,592 L 496,592" fill="none" stroke="black"/>
                <path d="M 48,608 L 120,608" fill="none" stroke="black"/>
                <path d="M 384,608 L 456,608" fill="none" stroke="black"/>
                <path d="M 8,624 L 32,624" fill="none" stroke="black"/>
                <path d="M 456,624 L 480,624" fill="none" stroke="black"/>
                <path d="M 120,640 L 384,640" fill="none" stroke="black"/>
                <path d="M 224,32 C 215.16936,32 208,39.16936 208,48" fill="none" stroke="black"/>
                <path d="M 320,32 C 328.83064,32 336,39.16936 336,48" fill="none" stroke="black"/>
                <path d="M 224,64 C 215.16936,64 208,56.83064 208,48" fill="none" stroke="black"/>
                <path d="M 320,64 C 328.83064,64 336,56.83064 336,48" fill="none" stroke="black"/>
                <path d="M 224,128 C 215.16936,128 208,135.16936 208,144" fill="none" stroke="black"/>
                <path d="M 320,128 C 328.83064,128 336,135.16936 336,144" fill="none" stroke="black"/>
                <path d="M 224,176 C 215.16936,176 208,168.83064 208,160" fill="none" stroke="black"/>
                <path d="M 320,176 C 328.83064,176 336,168.83064 336,160" fill="none" stroke="black"/>
                <path d="M 224,240 C 215.16936,240 208,247.16936 208,256" fill="none" stroke="black"/>
                <path d="M 320,240 C 328.83064,240 336,247.16936 336,256" fill="none" stroke="black"/>
                <path d="M 224,288 C 215.16936,288 208,280.83064 208,272" fill="none" stroke="black"/>
                <path d="M 320,288 C 328.83064,288 336,280.83064 336,272" fill="none" stroke="black"/>
                <path d="M 120,352 C 111.16936,352 104,359.16936 104,368" fill="none" stroke="black"/>
                <path d="M 216,352 C 224.83064,352 232,359.16936 232,368" fill="none" stroke="black"/>
                <path d="M 312,352 C 303.16936,352 296,359.16936 296,368" fill="none" stroke="black"/>
                <path d="M 408,352 C 416.83064,352 424,359.16936 424,368" fill="none" stroke="black"/>
                <path d="M 120,400 C 111.16936,400 104,392.83064 104,384" fill="none" stroke="black"/>
                <path d="M 216,400 C 224.83064,400 232,392.83064 232,384" fill="none" stroke="black"/>
                <path d="M 312,400 C 303.16936,400 296,392.83064 296,384" fill="none" stroke="black"/>
                <path d="M 408,400 C 416.83064,400 424,392.83064 424,384" fill="none" stroke="black"/>
                <path d="M 112,464 C 103.16936,464 96,471.16936 96,480" fill="none" stroke="black"/>
                <path d="M 160,464 C 168.83064,464 176,471.16936 176,480" fill="none" stroke="black"/>
                <path d="M 112,512 C 103.16936,512 96,504.83064 96,496" fill="none" stroke="black"/>
                <path d="M 160,512 C 168.83064,512 176,504.83064 176,496" fill="none" stroke="black"/>
                <path d="M 24,592 C 15.16936,592 8,599.16936 8,608" fill="none" stroke="black"/>
                <path d="M 472,592 C 463.16936,592 456,599.16936 456,608" fill="none" stroke="black"/>
                <path d="M 32,624 C 40.83064,624 48,616.83064 48,608" fill="none" stroke="black"/>
                <path d="M 480,624 C 488.83064,624 496,616.83064 496,608" fill="none" stroke="black"/>
                <g class="text">
                  <text x="268" y="52">Customer</text>
                  <text x="108" y="84">Customer</text>
                  <text x="176" y="84">Service</text>
                  <text x="236" y="84">Models</text>
                  <text x="72" y="100">ietf-l2vpn-svc,</text>
                  <text x="200" y="100">ietf-l3vpn-svc,</text>
                  <text x="392" y="100">ietf-network-slice-service,</text>
                  <text x="100" y="116">ietf-ac-svc,</text>
                  <text x="208" y="116">ietf-ac-glue,</text>
                  <text x="296" y="116">and</text>
                  <text x="376" y="116">ietf-bearer-svc</text>
                  <text x="272" y="148">Service</text>
                  <text x="272" y="164">Orchestration</text>
                  <text x="112" y="196">Network</text>
                  <text x="172" y="196">Models</text>
                  <text x="72" y="212">ietf-l2vpn-ntw,</text>
                  <text x="200" y="212">ietf-l3vpn-ntw,</text>
                  <text x="336" y="212">ietf-sap-ntw,</text>
                  <text x="448" y="212">ietf-ac-glue,</text>
                  <text x="96" y="228">and</text>
                  <text x="160" y="228">ietf-ac-ntw</text>
                  <text x="264" y="260">Network</text>
                  <text x="272" y="276">Orchestration</text>
                  <text x="56" y="308">Network</text>
                  <text x="144" y="308">Configuration</text>
                  <text x="224" y="308">Model</text>
                  <text x="164" y="372">Domain</text>
                  <text x="364" y="372">Domain</text>
                  <text x="168" y="388">Orchestration</text>
                  <text x="360" y="388">Orchestration</text>
                  <text x="36" y="420">Device</text>
                  <text x="64" y="436">Configuration</text>
                  <text x="36" y="452">Models</text>
                  <text x="132" y="484">Config</text>
                  <text x="136" y="500">Manager</text>
                  <text x="156" y="548">NETCONF/CLI.</text>
                  <text x="288" y="548">...................</text>
                  <text x="376" y="548">.</text>
                  <text x="136" y="564">|</text>
                  <text x="84" y="596">Bearer</text>
                  <text x="420" y="596">Bearer</text>
                  <text x="28" y="612">CE1</text>
                  <text x="248" y="612">Network</text>
                  <text x="476" y="612">CE2</text>
                  <text x="28" y="660">Site</text>
                  <text x="56" y="660">A</text>
                  <text x="476" y="660">Site</text>
                  <text x="504" y="660">B</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
                           .-------------.
                          |   Customer    |
                           '------+------'
          Customer Service Models |
  ietf-l2vpn-svc, ietf-l3vpn-svc, | ietf-network-slice-service,
       ietf-ac-svc, ietf-ac-glue, | and ietf-bearer-svc
                           .------+------.
                          |    Service    |
                          | Orchestration |
                           '------+------'
           Network Models         |
  ietf-l2vpn-ntw, ietf-l3vpn-ntw, | ietf-sap-ntw, ietf-ac-glue,
           and ietf-ac-ntw        |
                           .------+------.
                          |   Network     |
                          | Orchestration |
                           '------+------'
    Network Configuration Model   |
                      .-----------+-----------.
                      |                       |
              .-------+-----.         .-------+-----.
             |    Domain     |       |     Domain    |
             | Orchestration |       | Orchestration |
              '--+--------+-'         '-------+-----'
  Device         |        |                   |
  Configuration  |        |                   |
  Models         |        |                   |
             .---+---.    |                   |
            | Config  |   |                   |
            | Manager |   |                   |
             '---+---'    |                   |
                 |        |                   |
              NETCONF/CLI.......................
                 |        |                   |
               .--------------------------------.
  .---. Bearer |                                | Bearer  .---.
 |CE1 +--------+            Network             +--------+ CE2|
 '---'         |                                |        '---'
               '--------------------------------'
  Site A                                                  Site B
]]></artwork>
          </artset>
        </figure>
      </section>
    </section>
    <section anchor="module-tree-structure">
      <name>Module Tree Structure</name>
      <t><xref target="RFC8299"/> specifies that a 'site-network-access' attachment is achieved through a
'bearer' with an 'ip-connection' on top. From that standpoint, a 'site-network-access' is mapped to an AC with both Layer 2 and Layer 3 properties per <xref target="RFC9834"/>. <xref target="RFC8466"/> specifies that a 'site-network-access' represents a logical Layer 2 connection to a site. A 'site-network-access' can thus be mapped to an AC with  Layer 2 properties <xref target="RFC9834"/>. Similarly, 'vpn-network-access' defined in both <xref target="RFC9182"/> and <xref target="RFC9291"/> is mapped to an AC per <xref target="RFC9834"/> or <xref target="RFC9835"/>.</t>
      <t>As such, ACs created using the "ietf-ac-svc" module <xref target="RFC9834"/> can be referenced in other
VPN-related modules (e.g., LxSM and LxNM). Also, ACs managed using the "ietf-ac-ntw" module <xref target="RFC9835"/> can be referenced in VPN-related network modules (mainly, the LxNM). The required augmentations to that aim are shown in <xref target="tree"/>.</t>
      <figure anchor="tree">
        <name>AC Glue Tree Structure</name>
        <sourcecode type="yangtree"><![CDATA[
module: ietf-ac-glue

  augment /l2vpn-svc:l2vpn-svc/l2vpn-svc:sites/l2vpn-svc:site
            /l2vpn-svc:site-network-accesses:
    +--rw ac-svc-ref*   ac-svc:attachment-circuit-reference
  augment /l2vpn-svc:l2vpn-svc/l2vpn-svc:sites/l2vpn-svc:site
            /l2vpn-svc:site-network-accesses
            /l2vpn-svc:site-network-access:
    +--rw ac-svc-ref?  ac-svc:attachment-circuit-reference {ac-glue}?
  augment /l3vpn-svc:l3vpn-svc/l3vpn-svc:sites/l3vpn-svc:site
            /l3vpn-svc:site-network-accesses:
    +--rw ac-svc-ref*   ac-svc:attachment-circuit-reference
  augment /l3vpn-svc:l3vpn-svc/l3vpn-svc:sites/l3vpn-svc:site
            /l3vpn-svc:site-network-accesses
            /l3vpn-svc:site-network-access:
    +--rw ac-svc-ref?  ac-svc:attachment-circuit-reference {ac-glue}?
  augment /l2nm:l2vpn-ntw/l2nm:vpn-services/l2nm:vpn-service
            /l2nm:vpn-nodes/l2nm:vpn-node/l2nm:vpn-network-accesses:
    +--rw ac-svc-ref*   ac-svc:attachment-circuit-reference
    +--rw ac-ntw-ref* [ac-ref]
       +--rw ac-ref         leafref
       +--rw node-ref?      leafref
       +--rw network-ref?   -> /nw:networks/network/network-id
  augment /l2nm:l2vpn-ntw/l2nm:vpn-services/l2nm:vpn-service
            /l2nm:vpn-nodes/l2nm:vpn-node/l2nm:vpn-network-accesses
            /l2nm:vpn-network-access:
    +--rw ac-svc-ref?  ac-svc:attachment-circuit-reference {ac-glue}?
    +--rw ac-ntw-ref {ac-glue}?
       +--rw ac-ref?        leafref
       +--rw node-ref?      leafref
       +--rw network-ref?   -> /nw:networks/network/network-id
  augment /l3nm:l3vpn-ntw/l3nm:vpn-services/l3nm:vpn-service
            /l3nm:vpn-nodes/l3nm:vpn-node/l3nm:vpn-network-accesses:
    +--rw ac-svc-ref*   ac-svc:attachment-circuit-reference
    +--rw ac-ntw-ref* [ac-ref]
       +--rw ac-ref         leafref
       +--rw node-ref?      leafref
       +--rw network-ref?   -> /nw:networks/network/network-id
  augment /l3nm:l3vpn-ntw/l3nm:vpn-services/l3nm:vpn-service
            /l3nm:vpn-nodes/l3nm:vpn-node/l3nm:vpn-network-accesses
            /l3nm:vpn-network-access:
    +--rw ac-svc-ref?  ac-svc:attachment-circuit-reference {ac-glue}?
    +--rw ac-ntw-ref {ac-glue}?
       +--rw ac-ref?        leafref
       +--rw node-ref?      leafref
       +--rw network-ref?   -> /nw:networks/network/network-id
]]></sourcecode>
      </figure>
      <t>When an AC is referenced within a specific network access, that AC information takes precedence over any overlapping information that is also enclosed for this network access.</t>
      <aside><t>This approach is consistent with the design in <xref target="I-D.ietf-teas-ietf-network-slice-nbi-yang"/> where an AC service reference, called 'ac-svc-ref', is used to indicate the names of AC services. As per <xref target="I-D.ietf-teas-ietf-network-slice-nbi-yang"/>, when both 'ac-svc-ref' and the attributes of 'attachment-circuits' are defined, the 'ac-svc-ref' takes precedence.</t></aside>
      <t>The "ietf-ac-glue" module includes provisions to reference ACs within or outside a VPN network access to accommodate deployment contexts where an AC reference may be created before or after a VPN instance is created. <xref target="ref-within-access"/> illustrates how an AC reference can be included as part of a specific VPN network access, while <xref target="ref-outside-access"/> shows how AC references can be indicated outside individual VPN network access entries.</t>
    </section>
    <section anchor="sec-glue">
      <name>The AC Glue ("ietf-ac-glue") YANG Module</name>
      <t>This modules augments the L2SM <xref target="RFC8466"/>, the L3SM <xref target="RFC8299"/>, the L2NM <xref target="RFC9291"/>, and the L3NM <xref target="RFC9182"/>.</t>
      <t>This module uses references defined in <xref target="RFC9834"/> and <xref target="RFC9835"/>.</t>
      <sourcecode type="yang" name="ietf-ac-glue@2025-09-29.yang" markers="true"><![CDATA[
module ietf-ac-glue {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-ac-glue";
  prefix ac-glue;

  import ietf-l3vpn-svc {
    prefix l3vpn-svc;
    reference
      "RFC 8299: YANG Data Model for L3VPN Service Delivery";
  }
  import ietf-l2vpn-svc {
    prefix l2vpn-svc;
    reference
      "RFC 8466: A YANG Data Model for Layer 2 Virtual Private
                 Network (L2VPN) Service Delivery";
  }
  import ietf-l3vpn-ntw {
    prefix l3nm;
    reference
      "RFC 9182: A YANG Network Data Model for Layer 3 VPNs";
  }
  import ietf-l2vpn-ntw {
    prefix l2nm;
    reference
      "RFC 9291: A YANG Network Data Model for Layer 2 VPNs";
  }
  import ietf-ac-svc {
    prefix ac-svc;
    reference
      "RFC 9834: YANG Data Models for Bearers and Attachment
                 Circuits as a Service (ACaaS)";
  }
  import ietf-ac-ntw {
    prefix ac-ntw;
    reference
      "RFC 9835: A Network YANG Data Model for Attachment Circuits";
  }

  organization
    "IETF OPSAWG (Operations and Management Area Working Group)";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/opsawg/>
     WG List:  <mailto:opsawg@ietf.org>

     Editor:   Mohamed Boucadair
               <mailto:mohamed.boucadair@orange.com>
     Author:   Richard Roberts
               <mailto:rroberts@juniper.net>
     Author:   Samier Barguil
               <mailto:ssamier.barguil_giraldo@nokia.com>
     Author:   Oscar Gonzalez de Dios
               <mailto:oscar.gonzalezdedios@telefonica.com>";
  description
    "This YANG module defines a YANG data model for augmenting the
     LxSM and the LxNM with AC references.

     Copyright (c) 2025 IETF Trust and the persons identified as
     authors of the code.  All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject
     to the license terms contained in, the Revised BSD License
     set forth in Section 4.c of the IETF Trust's Legal Provisions
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC 9836; see the
     RFC itself for full legal notices.";

  revision 2025-09-29 {
    description
      "Initial revision.";
    reference
      "RFC 9836: A YANG Data Model for Augmenting VPN Service
                 and Network Models with Attachment Circuits";
  }

  feature ac-glue {
    description
      "The VPN implementation supports binding a specific VPN
       network access or site access to an AC.";
  }

  grouping single-ac-svc-ref {
    description
      "A grouping with a single reference to a service AC.";
    leaf ac-svc-ref {
      type ac-svc:attachment-circuit-reference;
      description
        "A reference to the AC as exposed at the service that was
         provisioned using the ACaaS module.";
    }
  }

  grouping single-ac-svc-ntw-ref {
    description
      "A grouping with single AC references.";
    leaf ac-svc-ref {
      type ac-svc:attachment-circuit-reference;
      description
        "A reference to the AC as exposed at the service that was
         provisioned using the ACaaS module.";
    }
    container ac-ntw-ref {
      description
        "A reference to the AC that was provisioned using the AC
         network module.";
      uses ac-ntw:attachment-circuit-reference;
    }
  }

  grouping ac-svc-ref {
    description
      "A set of service-specific AC-related data.";
    leaf-list ac-svc-ref {
      type ac-svc:attachment-circuit-reference;
      description
        "A reference to the AC as exposed at the service that was
         provisioned using the ACaaS module.";
    }
  }

  grouping ac-svc-ntw-ref {
    description
      "A set of AC-related data.";
    leaf-list ac-svc-ref {
      type ac-svc:attachment-circuit-reference;
      description
        "A reference to the AC as exposed at the service that was
         provisioned using the ACaaS module.";
    }
    list ac-ntw-ref {
      key "ac-ref";
      description
        "A reference to the AC that was provisioned using the AC
         network module.";
      uses ac-ntw:attachment-circuit-reference;
    }
  }

  augment "/l2vpn-svc:l2vpn-svc"
        + "/l2vpn-svc:sites/l2vpn-svc:site"
        + "/l2vpn-svc:site-network-accesses" {
    description
      "Augments VPN site network accesses with AC provisioning
       details.  Concretely, it binds a site to a set of ACs with
       Layer 2 properties that were created using the ACaaS module.";
    uses ac-svc-ref;
  }

  augment "/l2vpn-svc:l2vpn-svc"
        + "/l2vpn-svc:sites/l2vpn-svc:site"
        + "/l2vpn-svc:site-network-accesses"
        + "/l2vpn-svc:site-network-access" {
    if-feature "ac-glue";
    description
      "Augments VPN site network access with AC provisioning
       details.  Concretely, it glues a 'site-network-access'
       to an AC with Layer 2 properties that was created using the
       ACaaS module.

       The ACaaS information takes precedence over any overlapping
       information that is also provided for a site network access.";
    uses single-ac-svc-ref;
  }

  augment "/l3vpn-svc:l3vpn-svc"
        + "/l3vpn-svc:sites/l3vpn-svc:site"
        + "/l3vpn-svc:site-network-accesses" {
    description
      "Augments VPN site network accesses with AC provisioning
       details.  Concretely, it binds a site to a set of ACs with
       both Layer 2 and Layer 3 properties that were created using
       the ACaaS module.";
    uses ac-svc-ref;
  }

  augment "/l3vpn-svc:l3vpn-svc"
        + "/l3vpn-svc:sites/l3vpn-svc:site"
        + "/l3vpn-svc:site-network-accesses"
        + "/l3vpn-svc:site-network-access" {
    if-feature "ac-glue";
    description
      "Augments VPN site network access with AC provisioning
       details.  Concretely, it glues a 'site-network-access' to an
       AC with both Layer 2 and Layer 3 properties that was created
       using the ACaaS module.

       The ACaaS information takes precedence over any overlapping
       information that is also provided for a site network access.";
    uses single-ac-svc-ref;
  }

  augment "/l2nm:l2vpn-ntw/l2nm:vpn-services/l2nm:vpn-service"
        + "/l2nm:vpn-nodes/l2nm:vpn-node"
        + "/l2nm:vpn-network-accesses" {
    description
      "Augments VPN network accesses with both service and network
       AC provisioning details.  Concretely, it binds a site to (1)
       a set of ACs with Layer 2 properties that were created using
       the ACaaS module and (2) a set of ACs with Layer 2 properties
       that were provisioned using the AC network model.";
    uses ac-svc-ntw-ref;
  }

  augment "/l2nm:l2vpn-ntw/l2nm:vpn-services/l2nm:vpn-service"
        + "/l2nm:vpn-nodes/l2nm:vpn-node"
        + "/l2nm:vpn-network-accesses"
        + "/l2nm:vpn-network-access" {
    if-feature "ac-glue";
    description
      "Augments VPN network access with service and network
       references to an AC.  Concretely, it glues a VPN network
       access to (1) an AC with Layer 2 properties
       that was created using the ACaaS module and (2) an AC with
       Layer 2 properties that was created using the AC network
       module.

       The AC service and network information takes precedence over
       any overlapping information that is also provided for a VPN
       network access.";
    uses single-ac-svc-ntw-ref;
  }

  augment "/l3nm:l3vpn-ntw/l3nm:vpn-services/l3nm:vpn-service"
        + "/l3nm:vpn-nodes/l3nm:vpn-node"
        + "/l3nm:vpn-network-accesses" {
    description
      "Augments VPN network accesses with both service and network
       AC provisioning details.  Concretely, it binds a site to (1)
       a set of ACs with both Layer 2 and Layer 3  properties that
       were created using the ACaaS module and (2) a set of ACs with
       both Layer 2 and Layer 3 properties that were provisioned
       using the AC network model.";
    uses ac-svc-ntw-ref;
  }

  augment "/l3nm:l3vpn-ntw/l3nm:vpn-services/l3nm:vpn-service"
        + "/l3nm:vpn-nodes/l3nm:vpn-node"
        + "/l3nm:vpn-network-accesses"
        + "/l3nm:vpn-network-access" {
    if-feature "ac-glue";
    description
      "Augments VPN network access with service and network
       references to an AC.  Concretely, it glues a VPN network
       access to (1) an AC with both Layer 2 and Layer 3 properties
       that was created using the ACaaS module and (2) an AC with
       both Layer 2 and Layer 3 properties that was created using the
       AC network module.

       The AC service and network information takes precedence over
       any overlapping information that is also provided for a VPN
       network access.";
    uses single-ac-svc-ntw-ref;
  }
}
]]></sourcecode>
    </section>
    <section anchor="security-considerations">
<name>Security Considerations</name>      
      <t>This section is modeled after the template described in <xref section="3.7" sectionFormat="of" target="I-D.ietf-netmod-rfc8407bis"/>.</t>
      <t>The "ietf-ac-common" YANG module defines a data model that is
designed to be accessed via YANG-based management protocols, such as
NETCONF <xref target="RFC6241"/> and RESTCONF <xref target="RFC8040"/>. These protocols have to
use a secure transport layer (e.g., SSH <xref target="RFC4252"/>, TLS <xref target="RFC8446"/>, and
QUIC <xref target="RFC9000"/>) and have to use mutual authentication.</t>
      <t>The Network Configuration Access Control Model (NACM) <xref target="RFC8341"/>
   provides the means to restrict access for particular NETCONF or
   RESTCONF users to a preconfigured subset of all available NETCONF or
   RESTCONF protocol operations and content.</t>
      <t>There are a number of data nodes defined in this YANG module that are
   writable/creatable/deletable (i.e., "config true", which is the
   default).  All writable data nodes are likely to be reasonably sensitive or vulnerable
   in some network environments.  Write operations (e.g., edit-config)
   and delete operations to these data nodes without proper protection
   or authentication can have a negative effect on network operations.
   The following subtrees and data nodes have particular
   sensitivities/vulnerabilities:</t>
      <dl spacing="normal" newline="false">
        <dt>'ac-svc-ref' and 'ac-ntw-ref':</dt>
        <dd>An attacker who is able to access network nodes can undertake
        various attacks, such as deleting a running VPN service, interrupting
        all the traffic of a client. Specifically, an attacker may modify
        (including delete) the ACs that are bound to a running service,
        leading to malfunctioning of the service and therefore to Service
        Level Agreement (SLA) violations.  Such activity can be detected by
        adequately monitoring and tracking network configuration changes.
        </dd>
      </dl>
      <t>Some of the readable data nodes in this YANG module may be considered
      sensitive or vulnerable in some network environments.  It is thus
      important to control read access (e.g., via get, get-config, or
      notification) to these data nodes.  Specifically, the following subtrees
      and data nodes have particular sensitivities/vulnerabilities:</t>
      <dl spacing="normal" newline="false">
        <dt>'ac-svc-ref' and 'ac-ntw-ref':</dt>
        <dd><t>These references do not expose privacy-related
        information per se; however, 'ac-svc-ref' may be used to track the set of VPN
        instances in which a given customer is involved.</t>
        <t>Note that, unlike 'ac-svc-ref', 'ac-ntw-ref' is unique within the
        scope of a node and may multiplex many peer CEs.</t>
        </dd>
      </dl>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA has registered the following URI in the "ns" subregistry within
   the "IETF XML Registry" <xref target="RFC3688"/>:</t>
   <dl spacing="compact" newline="false">
     <dt>URI:</dt><dd>urn:ietf:params:xml:ns:yang:ietf-ac-glue</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 module in the "YANG Module
   Names" registry <xref target="RFC6020"/> within the "YANG Parameters" registry group:</t>
   <dl spacing="compact" newline="false">
     <dt>Name:</dt><dd>ietf-ac-glue</dd>
     <dt>Maintained by IANA?</dt><dd>N</dd>     
     <dt>Namespace:</dt><dd>urn:ietf:params:xml:ns:yang:ietf-ac-glue</dd>
     <dt>Prefix:</dt><dd>ac-glue</dd>
     <dt>Reference:</dt><dd>RFC 9836</dd>
   </dl>

    </section>
  </middle>
  <back>

    <displayreference target="I-D.ietf-netmod-rfc8407bis" to="YANG-GUIDELINES"/>
    <displayreference target="I-D.ietf-teas-ietf-network-slice-nbi-yang" to="YANG-NSS"/>
    
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>

<reference anchor="RFC9834" target="https://www.rfc-editor.org/info/rfc9834">
  <front>
      <title>YANG Data Models for Bearers and Attachment Circuits as a Service (ACaaS)</title>
      <author initials="M." surname="Boucadair" fullname="Mohamed Boucadair" role="editor">
         <organization>Orange</organization>
      </author>
      <author initials="R." surname="Roberts" fullname="Richard Roberts" role="editor">
         <organization>Juniper</organization>
      </author>
      <author initials="O." surname="Gonzalez de Dios" fullname="Oscar Gonzalez de Dios">
         <organization>Telefonica</organization>
      </author>
      <author initials="S." surname="Barguil" fullname="Samier Barguil">
         <organization>Nokia</organization>
      </author>
      <author initials="B." surname="Wu" fullname="Bo Wu">
         <organization>Huawei Technologies</organization>
      </author>
    <date month='September' year='2025'/>
  </front>
  <seriesInfo name="RFC" value="9834"/>
  <seriesInfo name="DOI" value="10.17487/RFC9834"/>
</reference>

        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8466.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8299.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9291.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9182.xml"/>

<reference anchor="RFC9835" target="https://www.rfc-editor.org/info/rfc9835">
  <front>
      <title>A Network YANG Data Model for Attachment Circuits</title>
      <author initials="M." surname="Boucadair" fullname="Mohamed Boucadair" role="editor">
         <organization>Orange</organization>
      </author>
      <author initials="R." surname="Roberts" fullname="Richard Roberts">
         <organization>Juniper</organization>
      </author>
      <author initials="O." surname="Gonzalez de Dios" fullname="Oscar Gonzalez de Dios">
         <organization>Telefonica</organization>
      </author>
      <author initials="S." surname="Barguil" fullname="Samier Barguil">
         <organization>Nokia</organization>
      </author>
      <author initials="B." surname="Wu" fullname="Bo Wu">
         <organization>Huawei Technologies</organization>
      </author>
    <date month='September' year='2025'/>
  </front>
  <seriesInfo name="RFC" value="9835"/>
  <seriesInfo name="DOI" value="10.17487/RFC9835"/>
</reference>

        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8342.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8341.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3688.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6020.xml"/>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8340.xml"/>

<reference anchor="RFC9833" target="https://www.rfc-editor.org/info/rfc9833">
   <front>
      <title>A Common YANG Data Model for Attachment Circuits</title>
      <author initials="M." surname="Boucadair" fullname="Mohamed Boucadair" role="editor">
         <organization>Orange</organization>
      </author>
      <author initials="R." surname="Roberts" fullname="Richard Roberts" role="editor">
         <organization>Juniper</organization>
      </author>
      <author initials="O." surname="Gonzalez de Dios" fullname="Oscar Gonzalez de Dios">
         <organization>Telefonica</organization>
      </author>
      <author initials="S." surname="Barguil" fullname="Samier Barguil">
         <organization>Nokia</organization>
      </author>
      <author initials="B." surname="Wu" fullname="Bo Wu">
         <organization>Huawei Technologies</organization>
      </author>
      <date month="September" year="2025" />
   </front>
  <seriesInfo name="RFC" value="9833"/>
  <seriesInfo name="DOI" value="10.17487/RFC9833"/>
</reference>

        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9408.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7665.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4364.xml"/>

        <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-teas-ietf-network-slice-nbi-yang.xml"/>

<reference anchor="I-D.ietf-netmod-rfc8407bis" target="https://datatracker.ietf.org/doc/html/draft-ietf-netmod-rfc8407bis-22">
   <front>
      <title>Guidelines for Authors and Reviewers of Documents Containing YANG Data Models</title>
      <author initials="A." surname="Bierman" fullname="Andy Bierman">
         <organization>YumaWorks</organization>
      </author>
      <author initials="M." surname="Boucadair" fullname="Mohamed Boucadair" role="editor">
         <organization>Orange</organization>
      </author>
      <author initials="Q." surname="Wu" fullname="Qin Wu">
         <organization>Huawei</organization>
      </author>
      <date month="January" day="14" year="2025" />
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-netmod-rfc8407bis-22" />
</reference>

<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4664.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6241.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8040.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4252.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9000.xml"/>
      </references>
    </references>

<section anchor="sec-example">
      <name>Examples</name>
      <section anchor="ref-within-access">
        <name>A Service AC Reference Within the VPN Network Access</name>
        <t>Let us consider the example depicted in <xref target="ex-vpws"/>, which is inspired from <xref section="2.1" sectionFormat="of" target="RFC4664"/>. Each PE is servicing two CEs. Let us also assume that the service references to identify ACs with these CEs are shown in <xref target="ex-vpws"/>.</t>
        <figure anchor="ex-vpws">
          <name>VPWS Topology Example</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="240" width="464" viewBox="0 0 464 240" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,48 L 8,96" fill="none" stroke="black"/>
                <path d="M 8,176 L 8,224" fill="none" stroke="black"/>
                <path d="M 56,32 L 56,80" fill="none" stroke="black"/>
                <path d="M 56,160 L 56,208" fill="none" stroke="black"/>
                <path d="M 80,64 L 80,96" fill="none" stroke="black"/>
                <path d="M 80,160 L 80,192" fill="none" stroke="black"/>
                <path d="M 120,80 L 120,176" fill="none" stroke="black"/>
                <path d="M 168,80 L 168,104" fill="none" stroke="black"/>
                <path d="M 168,120 L 168,176" fill="none" stroke="black"/>
                <path d="M 200,80 L 200,176" fill="none" stroke="black"/>
                <path d="M 248,80 L 248,176" fill="none" stroke="black"/>
                <path d="M 296,80 L 296,176" fill="none" stroke="black"/>
                <path d="M 344,80 L 344,176" fill="none" stroke="black"/>
                <path d="M 384,64 L 384,96" fill="none" stroke="black"/>
                <path d="M 384,160 L 384,192" fill="none" stroke="black"/>
                <path d="M 408,48 L 408,96" fill="none" stroke="black"/>
                <path d="M 408,176 L 408,224" fill="none" stroke="black"/>
                <path d="M 456,32 L 456,80" fill="none" stroke="black"/>
                <path d="M 456,160 L 456,208" fill="none" stroke="black"/>
                <path d="M 24,32 L 56,32" fill="none" stroke="black"/>
                <path d="M 424,32 L 456,32" fill="none" stroke="black"/>
                <path d="M 64,64 L 80,64" fill="none" stroke="black"/>
                <path d="M 384,64 L 400,64" fill="none" stroke="black"/>
                <path d="M 120,80 L 168,80" fill="none" stroke="black"/>
                <path d="M 200,80 L 248,80" fill="none" stroke="black"/>
                <path d="M 296,80 L 344,80" fill="none" stroke="black"/>
                <path d="M 8,96 L 40,96" fill="none" stroke="black"/>
                <path d="M 80,96 L 112,96" fill="none" stroke="black"/>
                <path d="M 128,96 L 152,96" fill="none" stroke="black"/>
                <path d="M 312,96 L 384,96" fill="none" stroke="black"/>
                <path d="M 408,96 L 440,96" fill="none" stroke="black"/>
                <path d="M 168,112 L 192,112" fill="none" stroke="black"/>
                <path d="M 208,112 L 240,112" fill="none" stroke="black"/>
                <path d="M 256,112 L 288,112" fill="none" stroke="black"/>
                <path d="M 176,126 L 192,126" fill="none" stroke="black"/>
                <path d="M 176,130 L 192,130" fill="none" stroke="black"/>
                <path d="M 208,126 L 240,126" fill="none" stroke="black"/>
                <path d="M 208,130 L 240,130" fill="none" stroke="black"/>
                <path d="M 256,126 L 288,126" fill="none" stroke="black"/>
                <path d="M 256,130 L 288,130" fill="none" stroke="black"/>
                <path d="M 176,144 L 192,144" fill="none" stroke="black"/>
                <path d="M 208,144 L 240,144" fill="none" stroke="black"/>
                <path d="M 256,144 L 288,144" fill="none" stroke="black"/>
                <path d="M 24,160 L 56,160" fill="none" stroke="black"/>
                <path d="M 80,160 L 112,160" fill="none" stroke="black"/>
                <path d="M 128,160 L 152,160" fill="none" stroke="black"/>
                <path d="M 312,160 L 336,160" fill="none" stroke="black"/>
                <path d="M 352,160 L 384,160" fill="none" stroke="black"/>
                <path d="M 424,160 L 456,160" fill="none" stroke="black"/>
                <path d="M 120,176 L 168,176" fill="none" stroke="black"/>
                <path d="M 200,176 L 248,176" fill="none" stroke="black"/>
                <path d="M 296,176 L 344,176" fill="none" stroke="black"/>
                <path d="M 64,192 L 80,192" fill="none" stroke="black"/>
                <path d="M 384,192 L 400,192" fill="none" stroke="black"/>
                <path d="M 8,224 L 40,224" fill="none" stroke="black"/>
                <path d="M 408,224 L 440,224" fill="none" stroke="black"/>
                <path d="M 24,32 C 15.16936,32 8,39.16936 8,48" fill="none" stroke="black"/>
                <path d="M 424,32 C 415.16936,32 408,39.16936 408,48" fill="none" stroke="black"/>
                <path d="M 40,96 C 48.83064,96 56,88.83064 56,80" fill="none" stroke="black"/>
                <path d="M 440,96 C 448.83064,96 456,88.83064 456,80" fill="none" stroke="black"/>
                <path d="M 24,160 C 15.16936,160 8,167.16936 8,176" fill="none" stroke="black"/>
                <path d="M 424,160 C 415.16936,160 408,167.16936 408,176" fill="none" stroke="black"/>
                <path d="M 40,224 C 48.83064,224 56,216.83064 56,208" fill="none" stroke="black"/>
                <path d="M 440,224 C 448.83064,224 456,216.83064 456,208" fill="none" stroke="black"/>
                <g class="text">
                  <text x="88" y="52">AC1</text>
                  <text x="368" y="52">AC2</text>
                  <text x="32" y="68">CE1</text>
                  <text x="152" y="68">2001:db8:100::1</text>
                  <text x="312" y="68">2001:db8:200::1</text>
                  <text x="432" y="68">CE2</text>
                  <text x="224" y="100">P</text>
                  <text x="144" y="116">VPWS\</text>
                  <text x="320" y="116">/VPWS</text>
                  <text x="144" y="132">PE1</text>
                  <text x="320" y="132">PE2</text>
                  <text x="160" y="148">/</text>
                  <text x="308" y="148">\\</text>
                  <text x="32" y="196">CE3</text>
                  <text x="432" y="196">CE4</text>
                  <text x="88" y="212">AC3</text>
                  <text x="376" y="212">AC4</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
 .----.                                            .----.
|     |  AC1                                AC2   |     |
| CE1 |--+ 2001:db8:100::1     2001:db8:200::1 +--| CE2 |
|     |  |    .-----.   .-----.     .-----.    |  |     |
'----'   +----|---- |   |  P  |     | ----+----+  '----'
              |VPWS\----|-----|-----|/VPWS|
              | PE1 |===|=====|=====| PE2 |
              |    /|---|-----|-----|\\   |
 .----.  +----|---- |   |     |     | ----|----+   .----.
|     |  |    '-----'   '-----'     '-----'    |  |     |
| CE3 |--+                                     +--| CE4 |
|     |  AC3                                 AC4  |     |
'----'                                            '----'
]]></artwork>
          </artset>
        </figure>
        <t>As shown in <xref target="ex-vpws-query"/>, the service AC references can be explicitly indicated in the L2NM query for the realization of the Virtual Private Wire Service (VPWS) (<xref section="3.1.1" sectionFormat="of" target="RFC4664"/>).</t>
        <figure anchor="ex-vpws-query">
          <name>Example of VPWS Creation with AC Service References</name>
          <sourcecode type="json"><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

{
   "ietf-l2vpn-ntw:l2vpn-ntw":{
      "vpn-services":{
         "vpn-service":[
            {
               "vpn-id":"vpws12345",
               "vpn-description":"Sample VPWS with AC service \
                                                         references",
               "customer-name":"customer-12345",
               "vpn-type":"ietf-vpn-common:vpws",
               "bgp-ad-enabled":true,
               "signaling-type":"ietf-vpn-common:ldp-signaling",
               "global-parameters-profiles":{
                  "global-parameters-profile":[
                     {
                        "profile-id":"simple-profile",
                        "local-autonomous-system":65550,
                        "rd-auto":{
                           "auto":[
                              null
                           ]
                        },
                        "vpn-target":[
                           {
                              "id":1,
                              "route-targets":[
                                 {
                                    "route-target":"0:65535:1"
                                 }
                              ],
                              "route-target-type":"both"
                           }
                        ]
                     }
                  ]
               },
               "vpn-nodes":{
                  "vpn-node":[
                     {
                        "vpn-node-id":"pe1",
                        "ne-id":"2001:db8:100::1",
                        "active-global-parameters-profiles":{
                           "global-parameters-profile":[
                              {
                                 "profile-id":"simple-profile"
                              }
                           ]
                        },
                        "bgp-auto-discovery":{
                           "vpn-id":"587"
                        },
                        "signaling-option":{
                           "advertise-mtu":true,
                           "ldp-or-l2tp":{
                              "saii":1,
                              "remote-targets":[
                                 {
                                    "taii":2
                                 }
                              ],
                              "t-ldp-pw-type":"ethernet"
                           }
                        },
                        "vpn-network-accesses":{
                           "vpn-network-access":[
                              {
                                 "id":"1/1/1.1",
                                 "interface-id":"1/1/1",
                                 "description":"Interface to CE1",
                                 "active-vpn-node-profile":"simple-\
                                                            profile",
                                 "status":{
                                    "admin-status":{
                                       "status":"ietf-vpn-common:\
                                                            admin-up"
                                    },
                                    "ietf-ac-glue:ac-svc-ref":"AC1"
                                 }
                              },
                              {
                                 "id":"1/1/3.1",
                                 "interface-id":"1/1/3",
                                 "description":"Interface to CE3",
                                 "active-vpn-node-profile":"simple-\
                                                            profile",
                                 "status":{
                                    "admin-status":{
                                       "status":"ietf-vpn-common:\
                                                            admin-up"
                                    },
                                    "ietf-ac-glue:ac-svc-ref":"AC3"
                                 }
                              }
                           ]
                        }
                     },
                     {
                        "vpn-node-id":"pe2",
                        "ne-id":"2001:db8:200::1",
                        "active-global-parameters-profiles":{
                           "global-parameters-profile":[
                              {
                                 "profile-id":"simple-profile"
                              }
                           ]
                        },
                        "bgp-auto-discovery":{
                           "vpn-id":"587"
                        },
                        "signaling-option":{
                           "advertise-mtu":true,
                           "ldp-or-l2tp":{
                              "saii":2,
                              "remote-targets":[
                                 {
                                    "taii":1
                                 }
                              ],
                              "t-ldp-pw-type":"ethernet"
                           }
                        },
                        "vpn-network-accesses":{
                           "vpn-network-access":[
                              {
                                 "id":"2/1/2.1",
                                 "interface-id":"2/1/2",
                                 "description":"Interface to CE2",
                                 "active-vpn-node-profile":"simple-\
                                                            profile",
                                 "status":{
                                    "admin-status":{
                                       "status":"ietf-vpn-common:\
                                                            admin-up"
                                    },
                                    "ietf-ac-glue:ac-svc-ref":"AC2"
                                 }
                              },
                              {
                                 "id":"2/1/4.1",
                                 "interface-id":"2/1/4",
                                 "description":"Interface to CE4",
                                 "active-vpn-node-profile":"simple-\
                                                            profile",
                                 "status":{
                                    "admin-status":{
                                       "status":"ietf-vpn-common:\
                                                            admin-up"
                                    },
                                    "ietf-ac-glue:ac-svc-ref":"AC4"
                                 }
                              }
                           ]
                        }
                     }
                  ]
               }
            }
         ]
      }
   }
}
]]></sourcecode>
        </figure>
      </section>
      <section anchor="ref-outside-access">
        <name>Network and Service AC References</name>
        <t>Let us consider the example depicted in <xref target="ex-topo"/> with two customer termination points (CE1 and CE2). Let us also assume that the bearers to attach these CEs to the service provider network are already in place. References to identify these bearers are shown in <xref target="ex-topo"/>.</t>
        <figure anchor="ex-topo">
          <name>Topology Example</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="128" width="488" viewBox="0 0 488 128" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,64 L 8,80" fill="none" stroke="black"/>
                <path d="M 48,48 L 48,64" fill="none" stroke="black"/>
                <path d="M 80,72 L 80,96" fill="none" stroke="black"/>
                <path d="M 104,32 L 104,80" fill="none" stroke="black"/>
                <path d="M 152,32 L 152,80" fill="none" stroke="black"/>
                <path d="M 184,32 L 184,112" fill="none" stroke="black"/>
                <path d="M 304,32 L 304,112" fill="none" stroke="black"/>
                <path d="M 336,32 L 336,80" fill="none" stroke="black"/>
                <path d="M 384,32 L 384,80" fill="none" stroke="black"/>
                <path d="M 416,72 L 416,96" fill="none" stroke="black"/>
                <path d="M 440,64 L 440,80" fill="none" stroke="black"/>
                <path d="M 480,48 L 480,64" fill="none" stroke="black"/>
                <path d="M 104,32 L 152,32" fill="none" stroke="black"/>
                <path d="M 184,32 L 304,32" fill="none" stroke="black"/>
                <path d="M 336,32 L 384,32" fill="none" stroke="black"/>
                <path d="M 24,48 L 48,48" fill="none" stroke="black"/>
                <path d="M 152,46 L 184,46" fill="none" stroke="black"/>
                <path d="M 152,50 L 184,50" fill="none" stroke="black"/>
                <path d="M 304,46 L 336,46" fill="none" stroke="black"/>
                <path d="M 304,50 L 336,50" fill="none" stroke="black"/>
                <path d="M 456,48 L 480,48" fill="none" stroke="black"/>
                <path d="M 48,64 L 104,64" fill="none" stroke="black"/>
                <path d="M 384,64 L 440,64" fill="none" stroke="black"/>
                <path d="M 8,80 L 32,80" fill="none" stroke="black"/>
                <path d="M 104,80 L 152,80" fill="none" stroke="black"/>
                <path d="M 336,80 L 384,80" fill="none" stroke="black"/>
                <path d="M 440,80 L 464,80" fill="none" stroke="black"/>
                <path d="M 184,112 L 304,112" fill="none" stroke="black"/>
                <path d="M 24,48 C 15.16936,48 8,55.16936 8,64" fill="none" stroke="black"/>
                <path d="M 456,48 C 447.16936,48 440,55.16936 440,64" fill="none" stroke="black"/>
                <path d="M 32,80 C 40.83064,80 48,72.83064 48,64" fill="none" stroke="black"/>
                <path d="M 464,80 C 472.83064,80 480,72.83064 480,64" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="424,72 412,66.4 412,77.6" fill="black" transform="rotate(270,416,72)"/>
                <polygon class="arrowhead" points="88,72 76,66.4 76,77.6" fill="black" transform="rotate(270,80,72)"/>
                <g class="text">
                  <text x="128" y="52">PE1</text>
                  <text x="360" y="52">PE2</text>
                  <text x="32" y="68">CE1</text>
                  <text x="128" y="68">"450"</text>
                  <text x="244" y="68">MPLS</text>
                  <text x="360" y="68">"451"</text>
                  <text x="464" y="68">CE2</text>
                  <text x="244" y="100">Core</text>
                  <text x="80" y="116">Bearer:1234</text>
                  <text x="424" y="116">Bearer:5678</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
            .-----.   .--------------.   .-----.
 .---.      | PE1 +===+              +===+ PE2 |       .---.
| CE1+------+"450"|   |     MPLS     |   |"451"+------+ CE2|
'---'    ^  '-----'   |              |   '-----'   ^  '---'
         |            |     Core     |             |
    Bearer:1234       '--------------'         Bearer:5678
]]></artwork>
          </artset>
        </figure>
        <t>The AC service model <xref target="RFC9834"/> can be used by the provider to manage and expose the ACs over existing bearers as shown in <xref target="ex-ac"/>.</t>
        <figure anchor="ex-ac">
          <name>ACs Created Using ACaaS</name>
          <sourcecode type="json"><![CDATA[
{
  "ietf-ac-svc:attachment-circuits": {
    "ac-group-profile": [
      {
        "name": "an-ac-profile",
        "l2-connection": {
          "encapsulation": {
            "type": "ietf-vpn-common:dot1q",
            "dot1q": {
              "tag-type": "ietf-vpn-common:c-vlan",
              "cvlan-id": 550
            }
          }
        },
        "service": {
          "mtu": 1550,
          "svc-pe-to-ce-bandwidth": {
            "bandwidth": [
              {
                "bw-type": "ietf-vpn-common:bw-per-port",
                "cir": "20480000"
              }
            ]
          },
          "svc-ce-to-pe-bandwidth": {
            "bandwidth": [
              {
                "bw-type": "ietf-vpn-common:bw-per-port",
                "cir": "20480000"
              }
            ]
          },
          "qos": {
            "qos-profiles": {
              "qos-profile": [
                {
                  "profile": "QoS_Profile_A",
                  "direction": "ietf-vpn-common:both"
                }
              ]
            }
          }
        }
      }
    ],
    "ac": [
      {
        "name": "ac-1",
        "description": "First attachment",
        "ac-group-profile": [
          "an-ac-profile"
        ],
        "l2-connection": {
          "bearer-reference": "1234"
        }
      },
      {
        "name": "ac-2",
        "description": "Second attachment",
        "ac-group-profile": [
          "an-ac-profile"
        ],
        "l2-connection": {
          "bearer-reference": "5678"
        }
      }
    ]
  }
}
]]></sourcecode>
        </figure>
        <t>Let us now consider that the customer wants to request a Virtual Private LAN Service (VPLS) instance between the sites as shown in <xref target="ex-vpls"/>.</t>
        <figure anchor="ex-vpls">
          <name>Example of VPLS</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="160" width="488" viewBox="0 0 488 160" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,96 L 8,112" fill="none" stroke="black"/>
                <path d="M 48,80 L 48,96" fill="none" stroke="black"/>
                <path d="M 80,104 L 80,128" fill="none" stroke="black"/>
                <path d="M 104,64 L 104,112" fill="none" stroke="black"/>
                <path d="M 152,64 L 152,112" fill="none" stroke="black"/>
                <path d="M 184,64 L 184,144" fill="none" stroke="black"/>
                <path d="M 304,64 L 304,144" fill="none" stroke="black"/>
                <path d="M 336,64 L 336,112" fill="none" stroke="black"/>
                <path d="M 384,64 L 384,112" fill="none" stroke="black"/>
                <path d="M 416,104 L 416,128" fill="none" stroke="black"/>
                <path d="M 440,96 L 440,112" fill="none" stroke="black"/>
                <path d="M 480,80 L 480,96" fill="none" stroke="black"/>
                <path d="M 112,32 L 184,32" fill="none" stroke="black"/>
                <path d="M 304,32 L 376,32" fill="none" stroke="black"/>
                <path d="M 104,64 L 152,64" fill="none" stroke="black"/>
                <path d="M 184,64 L 304,64" fill="none" stroke="black"/>
                <path d="M 336,64 L 384,64" fill="none" stroke="black"/>
                <path d="M 24,80 L 48,80" fill="none" stroke="black"/>
                <path d="M 152,78 L 184,78" fill="none" stroke="black"/>
                <path d="M 152,82 L 184,82" fill="none" stroke="black"/>
                <path d="M 304,78 L 336,78" fill="none" stroke="black"/>
                <path d="M 304,82 L 336,82" fill="none" stroke="black"/>
                <path d="M 456,80 L 480,80" fill="none" stroke="black"/>
                <path d="M 48,96 L 104,96" fill="none" stroke="black"/>
                <path d="M 384,96 L 440,96" fill="none" stroke="black"/>
                <path d="M 8,112 L 32,112" fill="none" stroke="black"/>
                <path d="M 104,112 L 152,112" fill="none" stroke="black"/>
                <path d="M 336,112 L 384,112" fill="none" stroke="black"/>
                <path d="M 440,112 L 464,112" fill="none" stroke="black"/>
                <path d="M 184,144 L 304,144" fill="none" stroke="black"/>
                <path d="M 24,80 C 15.16936,80 8,87.16936 8,96" fill="none" stroke="black"/>
                <path d="M 456,80 C 447.16936,80 440,87.16936 440,96" fill="none" stroke="black"/>
                <path d="M 32,112 C 40.83064,112 48,104.83064 48,96" fill="none" stroke="black"/>
                <path d="M 464,112 C 472.83064,112 480,104.83064 480,96" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="424,104 412,98.4 412,109.6" fill="black" transform="rotate(270,416,104)"/>
                <polygon class="arrowhead" points="88,104 76,98.4 76,109.6" fill="black" transform="rotate(270,80,104)"/>
                <g class="text">
                  <text x="104" y="36">|</text>
                  <text x="220" y="36">VPLS</text>
                  <text x="268" y="36">"1543"</text>
                  <text x="384" y="36">|</text>
                  <text x="80" y="84">AC1</text>
                  <text x="128" y="84">PE1</text>
                  <text x="360" y="84">PE2</text>
                  <text x="416" y="84">AC2</text>
                  <text x="32" y="100">CE1</text>
                  <text x="128" y="100">"450"</text>
                  <text x="244" y="100">MPLS</text>
                  <text x="360" y="100">"451"</text>
                  <text x="464" y="100">CE2</text>
                  <text x="244" y="132">Core</text>
                  <text x="80" y="148">Bearer:1234</text>
                  <text x="424" y="148">Bearer:5678</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
            |----------  VPLS "1543" ----------|
            
            .-----.   .--------------.   .-----.
 .---.  AC1 | PE1 +===+              +===+ PE2 |  AC2  .---.
| CE1+------+"450"|   |     MPLS     |   |"451"+------+ CE2|
'---'    ^  '-----'   |              |   '-----'   ^  '---'
         |            |     Core     |             |  
    Bearer:1234       '--------------'         Bearer:5678
]]></artwork>
          </artset>
        </figure>
        <t>To that aim, existing ACs are referenced during the creation of the VPLS instance using the L2NM <xref target="RFC9291"/> and the "ietf-ac-glue" module as shown in <xref target="ex-vpls-req"/>.</t>
        <figure anchor="ex-vpls-req">
          <name>Example of a VPLS Request Using L2NM and AC Glue (Message Body)</name>
          <sourcecode type="json"><![CDATA[
{
  "ietf-l2vpn-ntw:l2vpn-ntw": {
    "vpn-services": {
      "vpn-service": [
        {
          "vpn-id": "1543",
          "vpn-name": "CORPO-EXAMPLE",
          "customer-name": "EXAMPLE",
          "vpn-type": "ietf-vpn-common:vpls",
          "vpn-service-topology": "ietf-vpn-common:hub-spoke",
          "bgp-ad-enabled": false,
          "signaling-type": "ietf-vpn-common:ldp-signaling",
          "global-parameters-profiles": {
            "global-parameters-profile": [
              {
                "profile-id": "simple-profile",
                "ce-vlan-preservation": true,
                "ce-vlan-cos-preservation": true
              }
            ]
          },
          "vpn-nodes": {
            "vpn-node": [
              {
                "vpn-node-id": "450",
                "ne-id": "2001:db8:5::1",
                "role": "ietf-vpn-common:hub-role",
                "status": {
                  "admin-status": {
                    "status": "ietf-vpn-common:admin-up"
                  }
                },
                "active-global-parameters-profiles": {
                  "global-parameters-profile": [
                    {
                      "profile-id": "simple-profile"
                    }
                  ]
                },
                "signaling-option": {
                  "ldp-or-l2tp": {
                    "t-ldp-pw-type": "vpls-type",
                    "pw-peer-list": [
                      {
                        "peer-addr": "2001:db8:50::1",
                        "vc-id": "1543"
                      }
                    ]
                  }
                },
                "vpn-network-accesses": {
                  "ietf-ac-glue:ac-svc-ref": ["ac-1"]
                }
              },
              {
                "vpn-node-id": "451",
                "ne-id": "2001:db8:50::1",
                "role": "ietf-vpn-common:spoke-role",
                "status": {
                  "admin-status": {
                    "status": "ietf-vpn-common:admin-up"
                  }
                },
                "active-global-parameters-profiles": {
                  "global-parameters-profile": [
                    {
                      "profile-id": "simple-profile"
                    }
                  ]
                },
                "signaling-option": {
                  "ldp-or-l2tp": {
                    "t-ldp-pw-type": "vpls-type",
                    "pw-peer-list": [
                      {
                        "peer-addr": "2001:db8:5::1",
                        "vc-id": "1543"
                      }
                    ]
                  }
                },
                "vpn-network-accesses": {
                  "ietf-ac-glue:ac-svc-ref": ["ac-2"]
                }
              }
            ]
          }
        }
      ]
    }
  }
}
]]></sourcecode>
        </figure>
        <t>Note that before implementing the VPLS instance creation request, the provider service orchestrator may first check if the VPLS service can be provided to the customer using the target delivery locations. The orchestrator uses the SAP model <xref target="RFC9408"/> as exemplified in <xref target="ex-sap-query"/>. This example assumes that the query concerns only PE1. A similar query can be issued for PE2.</t>
        <figure anchor="ex-sap-query">
          <name>Example of SAP Response (Message Body)</name>
          <sourcecode type="json"><![CDATA[
{
   "ietf-sap-ntw:service":[
      {
         "service-type":"ietf-vpn-common:vpls",
         "sap":[
            {
               "sap-id":"sap#1",
               "peer-sap-id":[
                  "ce-1"
               ],
               "description":"A parent SAP",
               "attachment-interface":"GE0/6/1",
               "interface-type":"ietf-sap-ntw:phy",
               "role":"ietf-sap-ntw:uni",
               "allows-child-saps":true,
               "sap-status":{
                  "status":"ietf-vpn-common:op-up"
               }
            }
         ]
      }
   ]
}
]]></sourcecode>
        </figure>
        <t>The response in <xref target="ex-sap-query"/> indicates that the VPLS service can be delivered to CE1. The "ietf-ac-ntw" module  <xref target="RFC9835"/> can be also used to access AC-related details that are bound to the target SAP (<xref target="ex-acntw-query-2"/>).</t>
        <figure anchor="ex-acntw-query-2">
          <name>Example of AC Network Response with SAP (Message Body)</name>
          <sourcecode type="json"><![CDATA[
{
   "ietf-sap-ntw:service":[
      {
         "service-type":"ietf-vpn-common:vpls",
         "sap":[
            {
               "sap-id":"sap#1",
               "peer-sap-id":[
                  "ce-1"
               ],
               "description":"A parent SAP",
               "attachment-interface":"GE0/6/1",
               "interface-type":"ietf-sap-ntw:phy",
               "role":"ietf-sap-ntw:uni",
               "allows-child-saps":true,
               "sap-status":{
                  "status":"ietf-vpn-common:op-up"
               }
            },
            {
               "sap-id":"sap#11",
               "description":"A child SAP",
               "parent-termination-point":"GE0/6/4",
               "attachment-interface":"GE0/6/4.2",
               "interface-type":"ietf-sap-ntw:logical",
               "encapsulation-type":"ietf-vpn-common:vlan-type",
               "sap-status":{
                  "status":"ietf-vpn-common:op-up"
               },
               "ietf-ac-ntw:ac":[
                  {
                     "ac-ref":"ac-1",
                     "node-ref":"example:pe2",
                     "network-ref":"example:an-id"
                  }
               ]
            }
         ]
      }
   ]
}
]]></sourcecode>
        </figure>
        <t>The provisioned AC at PE1 can be retrieved using the AC network model <xref target="RFC9835"/> as depicted in <xref target="ex-acntw-query"/>.</t>
        <figure anchor="ex-acntw-query">
          <name>Example of AC Network Response (Message Body)</name>
          <sourcecode type="json"><![CDATA[
{
   "ietf-ac-ntw:ac":[
      {
         "name":"ac-11",
         "svc-ref":"ac-1",
         "peer-sap-id":[
            "ce-1"
         ],
         "status":{
            "admin-status":{
               "status":"ietf-vpn-common:admin-up"
            },
            "oper-status":{
               "status":"ietf-vpn-common:op-up"
            }
         },
         "l2-connection":{
            "encapsulation":{
               "encap-type":"ietf-vpn-common:dot1q",
               "dot1q":{
                  "tag-type":"ietf-vpn-common:c-vlan",
                  "cvlan-id":550
               }
            },
            "bearer-reference":"1234"
         },
         "service":{
            "mtu":1550,
            "svc-pe-to-ce-bandwidth":{
               "bandwidth":[
                  {
                     "bw-type": "ietf-vpn-common:bw-per-port",
                     "cir":"20480000"
                  }
               ]
            },
            "svc-ce-to-pe-bandwidth":{
               "bandwidth":[
                  {
                     "bw-type": "ietf-vpn-common:bw-per-port",
                     "cir":"20480000"
                  }
               ]
            },
            "qos":{
               "qos-profiles":{
                  "qos-profile":[
                     {
                        "qos-profile-ref":"QoS_Profile_A",
                        "network-ref":"example:an-id",
                        "direction":"ietf-vpn-common:both"
                     }
                  ]
               }
            }
         }
      }
   ]
}
]]></sourcecode>
        </figure>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks to <contact fullname="Bo Wu"/> and <contact fullname="Qin Wu"/> for the review and comments.</t>
      <t>Thanks to <contact fullname="Martin Björklund"/> for the YANG Doctors
      review, <contact fullname="Gyan Mishra"/> for the RTGDIR review,
      <contact fullname="Ron Bonica"/> for the OPSDIR review, <contact fullname="Reese Enghardt"/>
      for the GENART review, and <contact fullname="Prachi Jain"/> for the SECDIR review.</t>
      <t>Thanks to <contact fullname="Mahesh Jethanandani"/> for the AD review.</t>
      <t>Thanks to <contact fullname="Gunter Van de Velde"/> for the IESG review.</t>
    </section>
  </back>
</rfc>
