<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.21 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-opsawg-teas-common-ac-14" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.25.0 -->
  <front>
    <title abbrev="Common Attachment Circuit YANG">A Common YANG Data Model for Attachment Circuits</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-opsawg-teas-common-ac-14"/>
    <author fullname="Mohamed Boucadair" role="editor">
      <organization>Orange</organization>
      <address>
        <email>mohamed.boucadair@orange.com</email>
      </address>
    </author>
    <author fullname="Richard Roberts" role="editor">
      <organization>Juniper</organization>
      <address>
        <email>rroberts@juniper.net</email>
      </address>
    </author>
    <author fullname="Oscar Gonzalez de Dios">
      <organization>Telefonica</organization>
      <address>
        <email>oscar.gonzalezdedios@telefonica.com</email>
      </address>
    </author>
    <author fullname="Samier Barguil Giraldo">
      <organization>Nokia</organization>
      <address>
        <email>samier.barguil_giraldo@nokia.com</email>
      </address>
    </author>
    <author fullname="Bo Wu">
      <organization>Huawei Technologies</organization>
      <address>
        <email>lana.wubo@huawei.com</email>
      </address>
    </author>
    <date year="2025" month="January" day="09"/>
    <area>Operations and Management</area>
    <workgroup>Operations and Management Area Working Group</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>
      <?line 92?>

<t>The document specifies a common attachment circuits (ACs) YANG module, which is designed with the intent to be reusable by other models. For example, this common model can be reused by service models to expose ACs as a service, service models that require binding a service to a set of ACs, network and device models to provision ACs, etc.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Operations and Management Area Working Group Working Group mailing list (opsawg@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/opsawg/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/boucadair/attachment-circuit-model"/>.</t>
    </note>
  </front>
  <middle>
    <?line 96?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Connectivity services are provided by networks to customers via dedicated terminating points (e.g., Service Functions (SFs), Customer Premises Equipment (CPEs), Autonomous System Border Routers (ASBRs), data centers gateways, or Internet Exchange Points). A connectivity service is basically about ensuring data transfer received from (or destined to) a given terminating point to (or from) other terminating points that belong to the same customer/service, an interconnection node, or an ancillary node. A set of objectives for the connectivity service may eventually be negotiated and agreed upon between a customer and a network provider. For that data transfer to take place within the provider network, it is assumed that adequate setup is provisioned over the links that connect customer terminating points and a provider network (a Provider Edge (PE), typically) so that data can be successfully exchanged over these links. The required setup is referred to in this document as an attachment circuits (ACs), while the underlying link is referred to as "bearer".</t>
      <t>When a customer requests a new service, the service can be bound to existing attachment circuits or trigger the instantiation of new attachment circuits. Whether these attachment circuits are specific for a given service or are shared to deliver a variety of services is deployment-specific.</t>
      <t>An example of attachment circuits is depicted in <xref target="uc"/>. A Customer Edge (CE) may be a physical node or a logical entity. A CE is seen by the network as a peer Service Attachment Point (SAP) <xref target="RFC9408"/>. CEs may be dedicated to one single service (e.g., Layer 3 Virtual Private Network (VPN) or Layer 2 VPN) or host multiple services (e.g., Service Functions <xref target="RFC7665"/>). A single AC (as seen by a network provider) may be bound to one or multiple peer SAPs (e.g., "CE1" and "CE2"). For example, and as discussed in <xref target="RFC4364"/>, multiple CEs can be attached to a PE over the same attachment circuit. This is typically implemented if the Layer 2 infrastructure between the CE and the network provides a multipoint service. The same CE may terminate multiple ACs. These ACs may be over the same or distinct bearers.</t>
      <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,64 L 8,112" fill="none" stroke="black"/>
              <path d="M 8,144 L 8,192" fill="none" stroke="black"/>
              <path d="M 72,64 L 72,112" fill="none" stroke="black"/>
              <path d="M 72,144 L 72,192" 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,64 L 448,112" fill="none" stroke="black"/>
              <path d="M 448,144 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,112" fill="none" stroke="black"/>
              <path d="M 504,144 L 504,192" fill="none" stroke="black"/>
              <path d="M 192,32 L 360,32" fill="none" stroke="black"/>
              <path d="M 8,64 L 72,64" fill="none" stroke="black"/>
              <path d="M 352,64 L 376,64" fill="none" stroke="black"/>
              <path d="M 448,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 72,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 504,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 8,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 448,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 72,192" fill="none" stroke="black"/>
              <path d="M 352,192 L 376,192" fill="none" stroke="black"/>
              <path d="M 448,192 L 504,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"/>
              <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>This document specifies a common module ("ietf-ac-common") for attachment circuits (<xref target="sec-module"/>). The model is designed with the intent to be reusable by other models and, therefore, ensure consistent AC structures among modules that manipulate ACs. For example, the common model can be reused by service models to expose AC-as-a-Service (ACaaS) (e.g., <xref target="I-D.ietf-opsawg-teas-attachment-circuit"/>), service models that require binding a service to a set of ACs (e.g., Network Slice Service <xref target="I-D.ietf-teas-ietf-network-slice-nbi-yang"/>)), network models to provision ACs (e.g., <xref target="I-D.ietf-opsawg-ntw-attachment-circuit"/>), device models, etc.</t>
      <t>The common AC module eases data inheritance between modules (e.g., from service to network models as per <xref target="RFC8969"/>).</t>
      <t>The YANG data model in this document conforms to the Network Management Datastore Architecture (NMDA) defined in <xref target="RFC8342"/>.</t>
      <section anchor="editorial-note-to-be-removed-by-rfc-editor">
        <name>Editorial Note (To be removed by RFC Editor)</name>
        <t>Note to the RFC Editor: This section is to be removed prior to publication.</t>
        <t>This document contains placeholder values that need to be replaced with finalized values at the time of publication. This note summarizes all of the substitutions that are needed.</t>
        <t>Please apply the following replacements:</t>
        <ul spacing="normal">
          <li>
            <t>XXXX --&gt; the assigned RFC number for this I-D</t>
          </li>
          <li>
            <t>2025-01-07 --&gt; the actual date of the publication of this document</t>
          </li>
        </ul>
      </section>
    </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>LxSM refers to both the Layer 2 Service Model (L2SM) <xref target="RFC8466"/> and the Layer 3 Service Model (L3SM) <xref target="RFC8299"/>.</t>
      <t>LxNM refers to both the Layer 2 Network Model (L2NM) <xref target="RFC9291"/> and the Layer 3 Network Model (L3NM) <xref target="RFC9182"/>.</t>
      <t>This document uses the following term:</t>
      <dl>
        <dt>Bearer:</dt>
        <dd>
          <t>A physical or logical link that connects a customer node (or site) to a provider network.</t>
        </dd>
        <dt/>
        <dd>
          <t>A bearer can be a wireless or wired link. One or multiple technologies can be used to build a bearer. The bearer type can be specified by a customer.</t>
        </dd>
        <dt/>
        <dd>
          <t>The operator allocates a unique bearer reference to identify a bearer within its network (e.g., customer line identifier). Such a reference can be retrieved by a customer and then used in subsequent service placement requests to unambiguously identify where a service is to be bound.</t>
        </dd>
        <dt/>
        <dd>
          <t>The concept of bearer can be generalized to refer to the required underlying connection for the provisioning of an attachment circuit.</t>
        </dd>
        <dt/>
        <dd>
          <t>One or multiple attachment circuits may be hosted over the same bearer (e.g., multiple Virtual Local Area Networks (VLANs) on the same bearer that is provided by a physical link).</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">inet</td>
            <td align="left">ietf-inet-types</td>
            <td align="left">
              <xref section="4" sectionFormat="of" target="RFC6991"/></td>
          </tr>
          <tr>
            <td align="left">key-chain</td>
            <td align="left">ietf-key-chain</td>
            <td align="left">
              <xref target="RFC8177"/></td>
          </tr>
          <tr>
            <td align="left">nacm</td>
            <td align="left">ietf-netconf-acm</td>
            <td align="left">
              <xref target="RFC8341"/></td>
          </tr>
          <tr>
            <td align="left">vpn-common</td>
            <td align="left">ietf-vpn-common</td>
            <td align="left">
              <xref target="RFC9181"/></td>
          </tr>
          <tr>
            <td align="left">yang</td>
            <td align="left">ietf-yang-types</td>
            <td align="left">
              <xref section="3" sectionFormat="of" target="RFC6991"/></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="sec-module"/>)</t>
        </li>
        <li>
          <t>"ietf-bearer-svc" (<xref section="5.1" sectionFormat="of" target="I-D.ietf-opsawg-teas-attachment-circuit"/>)</t>
        </li>
        <li>
          <t>"ietf-ac-svc" (<xref section="5.2" sectionFormat="of" target="I-D.ietf-opsawg-teas-attachment-circuit"/>)</t>
        </li>
        <li>
          <t>"ietf-ac-ntw" (<xref target="I-D.ietf-opsawg-ntw-attachment-circuit"/>)</t>
        </li>
        <li>
          <t>"ietf-ac-glue" (<xref target="I-D.ietf-opsawg-ac-lxsm-lxnm-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 120,240" fill="none" stroke="black"/>
              <path d="M 240,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="180" 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>"ietf-ac-common" is imported  by "ietf-bearer-svc", "ietf-ac-svc", and "ietf-ac-ntw".
Bearers managed using "ietf-bearer-svc" may be referenced in the service ACs managed using "ietf-ac-svc".
Similarly, a bearer managed using "ietf-bearer-svc" may list the set of ACs that use that bearer.
In order to ease correlation between an AC service requests and the actual AC provisioned in the network, "ietf-ac-ntw" uses the AC references exposed by "ietf-ac-svc".
To bind Layer 2 VPN or Layer 3 VPN services with ACs, "ietf-ac-glue" augments the LxSM and LxNM with AC service references exposed by "ietf-ac-svc" and AC network references exposed by "ietf-ac-ntw".</t>
    </section>
    <section anchor="description-of-the-ac-common-yang-module">
      <name>Description of the AC Common YANG Module</name>
      <t>The full tree diagram of the module is provided in <xref target="AC-Common-Tree"/>.  Subtrees are provided in the following subsections
for the reader's convenience.</t>
      <section anchor="features">
        <name>Features</name>
        <t>The module defines the following features:</t>
        <dl>
          <dt>'layer2-ac':</dt>
          <dd>
            <t>Used to indicate support of ACs with Layer 2 properties.</t>
          </dd>
          <dt>'layer3-ac':</dt>
          <dd>
            <t>Used to indicate support of ACs with Layer 3 properties.</t>
          </dd>
          <dt>'server-assigned-reference':</dt>
          <dd>
            <t>Used to indicate support of server-generated references to access relevant resources.</t>
          </dd>
          <dt/>
          <dd>
            <t>For example, a bearer request is first created using a name which is assigned by the client, but if this feature is supported, the request will also include a server-generated reference. That reference can be used when requesting the creating of an AC over the existing bearer.</t>
          </dd>
        </dl>
      </section>
      <section anchor="identities">
        <name>Identities</name>
        <t>The module defines a set of identities, including the following:</t>
        <dl>
          <dt>'address-allocation-type':</dt>
          <dd>
            <t>Used to specify the IP address allocation type in an AC. For example, this identity can used to indicate whether the provider network provides DHCP service, DHCP relay, or static addressing. Note that for the IPv6 case, Stateless Address Autoconfiguration (SLAAC) <xref target="RFC4862"/> can be used.</t>
          </dd>
          <dt>'local-defined-next-hop':</dt>
          <dd>
            <t>Used to specify next hop actions. For example, this identity can be used to indicate an action to discard traffic for a given destination or treat traffic towards addresses within the specified next-hop prefix as though they are connected to a local link.</t>
          </dd>
          <dt>'l2-tunnel-type':</dt>
          <dd>
            <t>Uses to control the Layer 2 tunnel selection for an AC. The current version supports indicating pseudowire, Virtual Private LAN Service (VPLS), and Virtual eXtensible Local Area Network (VXLAN).</t>
          </dd>
          <dt>'precedence-type':</dt>
          <dd>
            <t>Used to indicate the redundancy type when requesting ACs. For example, this identity can be used to tag primary and secondary ACs.</t>
          </dd>
          <dt>'role':</dt>
          <dd>
            <t>Used to indicate the type of an AC: User-to-Network Interface (UNI), Network-to-Network Interface (NNI), or public NNI.</t>
          </dd>
          <dt>New administrative status types:</dt>
          <dd>
            <t>In addition to the status types already defined in <xref target="RFC9181"/>, this document defines:
</t>
            <ul spacing="normal">
              <li>
                <t>'awaiting-validation' to report that a request is pending an adiministrator approval.</t>
              </li>
              <li>
                <t>'awaiting-processing' to report that a request was approved and validated, but is awaiting more processing before activation.</t>
              </li>
              <li>
                <t>'admin-prohibited' to report that a request cannot be handled because of administrative policies.</t>
              </li>
              <li>
                <t>'rejected' to report that a request was rejected reasons not covered by the other status types.</t>
              </li>
            </ul>
          </dd>
        </dl>
      </section>
      <section anchor="reusable-groupings">
        <name>Reusable Groupings</name>
        <t>The module also defines a set of reusable groupings, including the following:</t>
        <dl>
          <dt>'op-instructions' (<xref target="op-full-tree"/>):</dt>
          <dd>
            <t>Defines a set of parameters to specify scheduling instructions and report related events for a service request (e.g., AC or bearer).</t>
          </dd>
        </dl>
        <figure anchor="op-full-tree">
          <name>Operational Instructions Grouping</name>
          <artwork><![CDATA[
  grouping service-status:
    +-- status
       +-- admin-status
       |  +-- status?        identityref
       |  +--ro last-change?   yang:date-and-time
       +--ro oper-status
          +--ro status?        identityref
          +--ro last-change?   yang:date-and-time
  grouping op-instructions:
    +-- requested-start?   yang:date-and-time
    +-- requested-stop?    yang:date-and-time
    +--ro actual-start?      yang:date-and-time
    +--ro actual-stop?       yang:date-and-time

]]></artwork>
        </figure>
        <dl>
          <dt>Layer 2 encapsulations (<xref target="l2-full-tree"/>):</dt>
          <dd>
            <t>Groupings for the following encapsulation schemes are supported: dot1Q, QinQ, and priority-tagged.</t>
          </dd>
          <dt>Layer 2 tunnel services  (<xref target="l2-full-tree"/>):</dt>
          <dd>
            <t>These groupings are used to define Layer 2 tunnel services that may be needed for the activation of an AC. Examples of supported Layer 2 services are the pseudowire
(<xref section="6.1" sectionFormat="of" target="RFC8077"/>), VPLS, or VXLAN <xref target="RFC7348"/>.</t>
          </dd>
        </dl>
        <figure anchor="l2-full-tree">
          <name>Layer 2 Connection Groupings</name>
          <artwork><![CDATA[
  grouping dot1q:
    +-- tag-type?   identityref
    +-- cvlan-id?   uint16
  grouping priority-tagged:
    +-- tag-type?   identityref
  grouping qinq:
    +-- tag-type?   identityref
    +-- svlan-id?   uint16
    +-- cvlan-id?   uint16
  grouping pseudowire:
    +-- vcid?      uint32
    +-- far-end?   union
  grouping vpls:
    +-- vcid?      uint32
    +-- far-end*   union
  grouping vxlan:
    +-- vni-id?            uint32
    +-- peer-mode?         identityref
    +-- peer-ip-address*   inet:ip-address
  grouping l2-tunnel-service:
    +-- type?         identityref
    +-- pseudowire
    |  +-- vcid?      uint32
    |  +-- far-end?   union
    +-- vpls
    |  +-- vcid?      uint32
    |  +-- far-end*   union
    +-- vxlan
       +-- vni-id?            uint32
       +-- peer-mode?         identityref
       +-- peer-ip-address*   inet:ip-address
]]></artwork>
        </figure>
        <dl>
          <dt>Layer 3 address allocation (<xref target="l3-full-tree"/>):</dt>
          <dd>
            <t>Defines both IPv4 and IPv6 groupings to specify IP address allocation over an AC. Both dynamic and static address schemes are supported.</t>
          </dd>
          <dt/>
          <dd>
            <t>For both IPv4 and IPv6, 'address-allocation-type' is used to indicate the IP address allocation mode to activate. When 'address-allocation-type' is set to 'provider-dhcp', DHCP assignments can be made locally or by an external DHCP server. Such behavior is controlled by setting 'dhcp-service-type'.</t>
          </dd>
          <dt/>
          <dd>
            <t>Note that if 'address-allocation-type' is set to 'slaac', the Prefix Information option of Router Advertisements that will be issued for SLAAC purposes will carry the IPv6 prefix that is determined by 'local-address' and 'prefix-length'.</t>
          </dd>
          <dt>IP connections (<xref target="l3-full-tree"/>)::</dt>
          <dd>
            <t>Defines IPv4 and IPv6 groupings for managing Layer 3 connectivity over an AC. Both basic and more elaborated IP connection groupings are supported.</t>
          </dd>
        </dl>
        <figure anchor="l3-full-tree">
          <name>Layer 3 Connection Groupings</name>
          <artwork><![CDATA[
  grouping ipv4-allocation-type:
    +-- prefix-length?             uint8
    +-- address-allocation-type?   identityref
  grouping ipv6-allocation-type:
    +-- prefix-length?             uint8
    +-- address-allocation-type?   identityref
  grouping ipv4-connection-basic:
    +-- prefix-length?                       uint8
    +-- address-allocation-type?             identityref
    +-- (allocation-type)?
       +--:(dynamic)
          +-- (provider-dhcp)?
          |  +--:(dhcp-service-type)
          |     +-- dhcp-service-type?       enumeration
          +-- (dhcp-relay)?
             +--:(customer-dhcp-servers)
                +-- customer-dhcp-servers
                   +-- server-ip-address*   inet:ipv4-address
  grouping ipv6-connection-basic:
    +-- prefix-length?                       uint8
    +-- address-allocation-type?             identityref
    +-- (allocation-type)?
       +--:(dynamic)
          +-- (provider-dhcp)?
          |  +--:(dhcp-service-type)
          |     +-- dhcp-service-type?       enumeration
          +-- (dhcp-relay)?
             +--:(customer-dhcp-servers)
                +-- customer-dhcp-servers
                   +-- server-ip-address*   inet:ipv6-address
  grouping ipv4-connection:
    +-- local-address?                           inet:ipv4-address
    +-- virtual-address?                         inet:ipv4-address
    +-- prefix-length?                           uint8
    +-- address-allocation-type?                 identityref
    +-- (allocation-type)?
       +--:(dynamic)
       |  +-- (address-assign)?
       |  |  +--:(number)
       |  |  |  +-- number-of-dynamic-address?   uint16
       |  |  +--:(explicit)
       |  |     +-- customer-addresses
       |  |        +-- address-pool* [pool-id]
       |  |           +-- pool-id          string
       |  |           +-- start-address    inet:ipv4-address
       |  |           +-- end-address?     inet:ipv4-address
       |  +-- (provider-dhcp)?
       |  |  +--:(dhcp-service-type)
       |  |     +-- dhcp-service-type?           enumeration
       |  +-- (dhcp-relay)?
       |     +--:(customer-dhcp-servers)
       |        +-- customer-dhcp-servers
       |           +-- server-ip-address*   inet:ipv4-address
       +--:(static-addresses)
          +-- address* [address-id]
             +-- address-id          string
             +-- customer-address?   inet:ipv4-address
  grouping ipv6-connection:
    +-- local-address?                           inet:ipv6-address
    +-- virtual-address?                         inet:ipv6-address
    +-- prefix-length?                           uint8
    +-- address-allocation-type?                 identityref
    +-- (allocation-type)?
       +--:(dynamic)
       |  +-- (address-assign)?
       |  |  +--:(number)
       |  |  |  +-- number-of-dynamic-address?   uint16
       |  |  +--:(explicit)
       |  |     +-- customer-addresses
       |  |        +-- address-pool* [pool-id]
       |  |           +-- pool-id          string
       |  |           +-- start-address    inet:ipv6-address
       |  |           +-- end-address?     inet:ipv6-address
       |  +-- (provider-dhcp)?
       |  |  +--:(dhcp-service-type)
       |  |     +-- dhcp-service-type?           enumeration
       |  +-- (dhcp-relay)?
       |     +--:(customer-dhcp-servers)
       |        +-- customer-dhcp-servers
       |           +-- server-ip-address*   inet:ipv6-address
       +--:(static-addresses)
          +-- address* [address-id]
             +-- address-id          string
             +-- customer-address?   inet:ipv6-address
]]></artwork>
        </figure>
        <dl>
          <dt>Routing parameters &amp; OAM (<xref target="rtg-full-tree"/>):</dt>
          <dd>
            <t>In addition to static routing, the module supports the following routing protocols: BGP <xref target="RFC4271"/>, OSPF <xref target="RFC4577"/> or <xref target="RFC6565"/>, IS-IS <xref target="ISO10589"/><xref target="RFC1195"/><xref target="RFC5308"/>, and RIP <xref target="RFC2453"/>. For all supported routing protocols, 'address-family' indicates whether IPv4, IPv6, or both address families are to be activated. For example, this parameter is used to determine whether RIPv2 <xref target="RFC2453"/>, RIP Next Generation (RIPng), or both are to be enabled <xref target="RFC2080"/>. More details about supported routing groupings are provided hereafter:
</t>
            <ul spacing="normal">
              <li>
                <t>Authentication: These groupings include the required information to manage the authentication of OSPF, IS-IS, BGP, and RIP. The groupings support local specification of authentication keys and the associated authentication algorithm to accomodate legacy implementations that do not support key chains <xref target="RFC8177"/>. Similar to <xref target="RFC9182"/>, this version of the common AC model assumes that parameters specific to the TCP-AO are preconfigured as part of the key chain that is referenced in the model. No assumption is made about how such a key chain is preconfigured. However, the structure of the key chain should cover data nodes beyond those in <xref target="RFC8177"/>, mainly SendID and RecvID (Section 3.1 of <xref target="RFC5925"/>).</t>
              </li>
              <li>
                <t>BGP peer groups: Includes a set of parameters to identify a BGP peer group. Such a group can be defined by providing a local AS Number (ASN), a customer's ASN, and the address families to be activated for this group. BGP peer groups can be identified by a name.</t>
              </li>
              <li>
                <t>Basic parameters: These groupings include the minimal set of routing configuration that is required for the activation of OSPF, IS-IS, BGP, and RIP.</t>
              </li>
              <li>
                <t>Static routing: Parameters to configure an entry of a list of IP static routing entries.</t>
              </li>
            </ul>
          </dd>
          <dt/>
          <dd>
            <t>The 'redundancy-group' grouping lists the groups to which an AC belongs <xref target="RFC9181"/>. For example, the 'group-id' is used to associate redundancy or protection constraints of ACs.</t>
          </dd>
        </dl>
        <figure anchor="rtg-full-tree">
          <name>Layer 3 Connection Groupings</name>
          <artwork><![CDATA[
 grouping bgp-authentication:
    +-- authentication
       +-- enabled?           boolean
       +-- keying-material
          +-- (option)?
             +--:(ao)
             |  +-- enable-ao?          boolean
             |  +-- ao-keychain?        key-chain:key-chain-ref
             +--:(md5)
             |  +-- md5-keychain?       key-chain:key-chain-ref
             +--:(explicit)
                +-- key-id?             uint32
                +-- key?                string
                +-- crypto-algorithm?   identityref
  grouping ospf-authentication:
    +-- authentication
       +-- enabled?           boolean
       +-- keying-material
          +-- (option)?
             +--:(auth-key-chain)
             |  +-- key-chain?          key-chain:key-chain-ref
             +--:(auth-key-explicit)
                +-- key-id?             uint32
                +-- key?                string
                +-- crypto-algorithm?   identityref
  grouping isis-authentication:
    +-- authentication
       +-- enabled?           boolean
       +-- keying-material
          +-- (option)?
             +--:(auth-key-chain)
             |  +-- key-chain?          key-chain:key-chain-ref
             +--:(auth-key-explicit)
                +-- key-id?             uint32
                +-- key?                string
                +-- crypto-algorithm?   identityref
  grouping rip-authentication:
    +-- authentication
       +-- enabled?           boolean
       +-- keying-material
          +-- (option)?
             +--:(auth-key-chain)
             |  +-- key-chain?          key-chain:key-chain-ref
             +--:(auth-key-explicit)
                +-- key?                string
                +-- crypto-algorithm?   identityref
  grouping bgp-peer-group-without-name:
    +-- local-as?         inet:as-number
    +-- peer-as?          inet:as-number
    +-- address-family?   identityref
    +-- role?             identityref
  grouping bgp-peer-group-with-name:
    +-- name?             string
    +-- local-as?         inet:as-number
    +-- peer-as?          inet:as-number
    +-- address-family?   identityref
    +-- role?             identityref
  grouping ospf-basic:
    +-- address-family?   identityref
    +-- area-id           yang:dotted-quad
    +-- metric?           uint16
  grouping isis-basic:
    +-- address-family?   identityref
    +-- area-address      area-address
  grouping ipv4-static-rtg-entry:
    +-- lan?        inet:ipv4-prefix
    +-- lan-tag?    string
    +-- next-hop?   union
    +-- metric?     uint32
  grouping ipv4-static-rtg:
    +-- ipv4-lan-prefixes* [lan next-hop] {vpn-common:ipv4}?
       +-- lan         inet:ipv4-prefix
       +-- lan-tag?    string
       +-- next-hop    union
       +-- metric?     uint32
       +-- status
          +-- admin-status
          |  +-- status?        identityref
          |  +--ro last-change?   yang:date-and-time
          +--ro oper-status
             +--ro status?        identityref
             +--ro last-change?   yang:date-and-time
  grouping ipv6-static-rtg-entry:
    +-- lan?        inet:ipv6-prefix
    +-- lan-tag?    string
    +-- next-hop?   union
    +-- metric?     uint32
  grouping ipv6-static-rtg:
    +-- ipv6-lan-prefixes* [lan next-hop] {vpn-common:ipv6}?
       +-- lan         inet:ipv6-prefix
       +-- lan-tag?    string
       +-- next-hop    union
       +-- metric?     uint32
       +-- status
          +-- admin-status
          |  +-- status?        identityref
          |  +--ro last-change?   yang:date-and-time
          +--ro oper-status
             +--ro status?        identityref
             +--ro last-change?   yang:date-and-time
  grouping bfd:
    +-- holdtime?   uint32
  grouping redundancy-group:
    +-- group* [group-id]
       +-- group-id?     string
       +-- precedence?   identityref
]]></artwork>
        </figure>
        <dl>
          <dt>Bandwidth parameters (<xref target="bw-full-tree"/>):</dt>
          <dd>
            <t>Bandwidth parameters can be represented using the Committed
Information Rate (CIR), the Excess Information Rate (EIR), or the Peak
Information Rate (PIR).</t>
          </dd>
          <dt/>
          <dd>
            <t>These parameters can be provided per bandwidth type. Type values are
taken from <xref target="RFC9181"/>, e.g.,:</t>
            <ul spacing="normal">
              <li>
                <dl>
                  <dt>'bw-per-cos':</dt>
                  <dd>
                    <t>The bandwidth is per Class of Service (CoS).</t>
                  </dd>
                </dl>
              </li>
              <li>
                <dl>
                  <dt>'bw-per-site':</dt>
                  <dd>
                    <t>The bandwidth is to all ACs that belong to the same site.</t>
                  </dd>
                </dl>
              </li>
            </ul>
          </dd>
        </dl>
        <figure anchor="bw-full-tree">
          <name>Bandwidth Groupings</name>
          <artwork><![CDATA[
  grouping bandwidth-parameters:
    +-- cir?   uint64
    +-- cbs?   uint64
    +-- eir?   uint64
    +-- ebs?   uint64
    +-- pir?   uint64
    +-- pbs?   uint64
  grouping bandwidth-per-type:
    +-- bandwidth* [bw-type]
       +-- bw-type      identityref
       +-- (type)?
          +--:(per-cos)
          |  +-- cos* [cos-id]
          |     +-- cos-id    uint8
          |     +-- cir?      uint64
          |     +-- cbs?      uint64
          |     +-- eir?      uint64
          |     +-- ebs?      uint64
          |     +-- pir?      uint64
          |     +-- pbs?      uint64
          +--:(other)
             +-- cir?   uint64
             +-- cbs?   uint64
             +-- eir?   uint64
             +-- ebs?   uint64
             +-- pir?   uint64
             +-- pbs?   uint64
]]></artwork>
        </figure>
      </section>
    </section>
    <section anchor="sec-module">
      <name>Common Attachment Circuit YANG Module</name>
      <t>This module uses types defined in <xref target="RFC6991"/>, <xref target="RFC8177"/>, and  <xref target="RFC9181"/>.</t>
      <sourcecode markers="true" name="ietf-ac-common@2025-01-07.yang"><![CDATA[
module ietf-ac-common {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-ac-common";
  prefix ac-common;

  import ietf-vpn-common {
    prefix vpn-common;
    reference
      "RFC 9181: A Common YANG Data Model for Layer 2 and Layer 3
                 VPNs";
  }
  import ietf-netconf-acm {
    prefix nacm;
    reference
      "RFC 8341: Network Configuration Access Control Model";
  }
  import ietf-inet-types {
    prefix inet;
    reference
      "RFC 6991: Common YANG Data Types, Section 4";
  }
  import ietf-yang-types {
    prefix yang;
    reference
      "RFC 6991: Common YANG Data Types, Section 3";
  }
  import ietf-key-chain {
    prefix key-chain;
    reference
      "RFC 8177: YANG Data Model for Key Chains";
  }

  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:   Oscar Gonzalez de Dios
               <mailto:oscar.gonzalezdedios@telefonica.com>
     Author:   Samier Barguil
               <mailto:ssamier.barguil_giraldo@nokia.com>
     Author:   Bo Wu
               <mailto:lana.wubo@huawei.com>";
  description
    "This YANG module defines a common attachment circuit (AC)
     YANG model with a set of reusable features, types,
     identities, and groupings.

     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 XXXX; see the
     RFC itself for full legal notices.";

  revision 2025-01-07 {
    description
      "Initial revision.";
    reference
      "RFC XXXX: A Common YANG Data Model for Attachment Circuits";
  }

  /****************************Features************************/
  
  feature layer2-ac {
    description
      "Indicates support of Layer 2 ACs.";
  }

  feature layer3-ac {
    description
      "Indicates support of Layer 3 ACs.";
  }

  feature server-assigned-reference {
    description
      "Indicates support for server-generated references and use
       of such references to access related resources.";
  }

  /****************************Identities************************/
  // IP address allocation types

  identity address-allocation-type {
    description
      "Base identity for address allocation type on the AC.";
  }

  identity provider-dhcp {
    base address-allocation-type;
    description
      "The provider's network provides a DHCP service to the
       customer.";
  }

  identity provider-dhcp-relay {
    base address-allocation-type;
    description
      "The provider's network provides a DHCP relay service to the
       customer.";
  }

  identity provider-dhcp-slaac {
    if-feature "vpn-common:ipv6";
    base address-allocation-type;
    description
      "The provider's network provides a DHCP service to the customer
       as well as IPv6 Stateless Address Autoconfiguration (SLAAC).";
    reference
      "RFC 4862: IPv6 Stateless Address Autoconfiguration";
  }

  identity static-address {
    base address-allocation-type;
    description
      "The provider's network provides static IP addressing to the
       customer.";
  }

  identity slaac {
    if-feature "vpn-common:ipv6";
    base address-allocation-type;
    description
      "The provider's network uses IPv6 SLAAC to provide addressing
       to the customer.";
    reference
      "RFC 4862: IPv6 Stateless Address Autoconfiguration";
  }

  identity dynamic-infra {
    base address-allocation-type;
    description
      "The IP address is dynamically allocated by the hosting
       infrastructure.";
  }

  // next-hop actions 

  identity local-defined-next-hop {
    description
      "Base identity of local defined next hops.";
  }

  identity discard {
    base local-defined-next-hop;
    description
      "Indicates an action to discard traffic for the corresponding
       destination. For example, this can be used to black-hole
       traffic.";
  }

  identity local-link {
    base local-defined-next-hop;
    description
      "Treat traffic towards addresses within the specified next-hop
       prefix as though they are connected to a local link.";
  }

  // Layer 2 tunnel types

  identity l2-tunnel-type {
    description
      "Base identity for Layer 2 tunnel selection for an AC.";
  }

  identity pseudowire {
    base l2-tunnel-type;
    description
      "Pseudowire tunnel termination for the AC.";
  }

  identity vpls {
    base l2-tunnel-type;
    description
      "Virtual Private LAN Service (VPLS) tunnel termination for
       the AC.";
  }

  identity vxlan {
    base l2-tunnel-type;
    description
      "Virtual eXtensible Local Area Network (VXLAN) tunnel
       termination for the AC.";
  }

  // Layer 3 tunnel types

  identity l3-tunnel-type {
    description
      "Base identity for Layer 3 tunnel selection for an AC.";
  }

  identity ip-in-ip {
    base l3-tunnel-type;
    description
      "IP in IP Tunneling.";
  }

  identity ipsec {
    base l3-tunnel-type;
    description
      "IP Security (IPsec).";
  }

  identity gre {
    base l3-tunnel-type;
    description
      "Generic Routing Encapsulation (GRE).";
  }

  // Tagging precedence

  identity precedence-type {
    description
      "Redundancy type. Attachment to a network can be created
       with primary and secondary tagging.";
  }

  identity primary {
    base precedence-type;
    description
      "Identifies the main attachment circuit.";
  }

  identity secondary {
    base precedence-type;
    description
      "Identifies a secondary attachment circuit.";
  }

  // AC Type

  identity role {
    description
      "Base identity for the network role of an AC.";
  }

  identity uni {
    base role;
      description
        "User-to-Network Interface (UNI).";
  }

  identity nni {
    base role;
    description
      "Network-to-Network Interface (NNI).";
  }

  identity public-nni {
    base role;
    description
      "Public peering.";
  }

  // More Admin status types

  identity awaiting-validation {
    base vpn-common:administrative-status;
    description
      "This administrative status reflects that a request is
       pending an administrator approval.";
  }

  identity awaiting-processing {
    base vpn-common:administrative-status;
    description
      "This administrative status reflects that a request was
       approved and validated, but is awaiting more processing
       before activation.";
  }

  identity admin-prohibited {
    base vpn-common:administrative-status;
    description
      "This administrative status reflects that a request cannot
       be handled because of administrative policies.";
  }

  identity rejected {
    base vpn-common:administrative-status;
    description
      "This administrative status reflects that a request was
       rejected because, e.g., there are no sufficient resources
       or other reasons not covered by the other status types.";
  }

  identity bgp-role {
    description
      "Used to indicate BGP role when establishing a BGP session.";
    reference
      "RFC 9234: Route Leak Prevention and Detection Using 
                 Roles in UPDATE and OPEN Messages, Section 4";
  }

  identity provider {
    base bgp-role;
    description
      "The local AS is a transit provider of the remote AS.";
  }

  identity client {
    base bgp-role;
    description
      "The local AS is a transit customer of the remote AS.";
  }

  identity rs {
    base bgp-role;
    description
      "The local AS is a Route Server (RS).";
  }

  identity rs-client {
    base bgp-role;
    description
      "The local AS is a client of an RS and the RS is the
       remote AS.";
  }

  identity peer {
    base bgp-role;
    description
      "The local and remote ASes have a peering relationship.";
  }

  /****************************Typedefs************************/

  typedef predefined-next-hop {
    type identityref {
      base local-defined-next-hop;
    }
    description
      "Predefined next-hop designation for locally generated
       routes.";
  }

  typedef area-address {
    type string {
      pattern '[0-9A-Fa-f]{2}(\.[0-9A-Fa-f]{4}){0,6}';
    }
    description
      "This type defines the area address format.";
  }

  /************************Reusable groupings********************/
  /**** Service Status ****/

  grouping service-status {
    description
      "Service status grouping.";
    container status {
      description
        "Service status.";
      container admin-status {
        description
          "Administrative service status.";
        leaf status {
          type identityref {
            base vpn-common:administrative-status;
          }
          description
            "Administrative service status.";
        }
        leaf last-change {
          type yang:date-and-time;
          config false;
          description
            "Indicates the actual date and time of the service status
             change.";
        }
      }
      container oper-status {
        config false;
        description
          "Operational service status.";
        uses vpn-common:oper-status-timestamp;
      }
    }
  }

  /**** A set of profiles ****/

  grouping ac-profile-cfg {
    description
      "Grouping for AC profile configuration.";
    container valid-provider-identifiers {
      description
        "Container for valid provider profile identifiers.
         The profiles only have significance within the service
         provider's administrative domain.";
      list encryption-profile-identifier {
        key "id";
        description
          "List of encryption profile identifiers.";
        leaf id {
          type string;
          description
            "Identification of the encryption profile to be used.";
        }
      }
      list qos-profile-identifier {
        key "id";
        description
          "List of QoS profile identifiers.";
        leaf id {
          type string;
          description
            "Identification of the QoS profile to be used.";
        }
      }
      list failure-detection-profile-identifier {
        key "id";
        description
          "List of BFD profile identifiers.";
        leaf id {
          type string;
          description
            "Identification of the failure detection (e.g., BFD)
             profile to be used.";
        }
      }
      list forwarding-profile-identifier {
        key "id";
        description
          "List of forwarding profile identifiers.";
        leaf id {
          type string;
          description
            "Identification of the forwarding profile to be used.";
        }
      }
      list routing-profile-identifier {
        key "id";
        description
          "List of routing profile identifiers.";
        leaf id {
          type string;
          description
            "Identification of the routing profile to be used by
             the routing protocols over an AC.";
        }
      }
      nacm:default-deny-write;
    }
  }

  /**** Operational instructions ****/

  grouping op-instructions {
    description
      "Scheduling instructions.";
    leaf requested-start {
      type yang:date-and-time;
      description
        "Indicates the requested date and time when the service is
         expected to be active.";
    }
    leaf requested-stop {
      type yang:date-and-time;
      description
        "Indicates the requested date and time when the service is
         expected to be disabled.";
    }
    leaf actual-start {
      type yang:date-and-time;
      config false;
      description
        "Indicates the actual date and time when the service
         actually was enabled.";
    }
    leaf actual-stop {
      type yang:date-and-time;
      config false;
      description
        "Indicates the actual date and time when the service
         actually was disabled.";
    }
  }

  /**** Layer 2 encapsulations ****/
  // Dot1q

  grouping dot1q {
    description
      "Defines a grouping for tagged interfaces.";
    leaf tag-type {
      type identityref {
        base vpn-common:tag-type;
      }
      description
        "Tag type.";
    }
    leaf cvlan-id {
      type uint16 {
        range "1..4094";
      }
      description
        "VLAN identifier.";
    }
  }

  // priority-tagged

  grouping priority-tagged {
    description
      "Priority tagged.";
    leaf tag-type {
      type identityref {
        base vpn-common:tag-type;
      }
      description
        "Tag type.";
    }
  }

  // QinQ

  grouping qinq {
    description
      "Includes QinQ parameters.";
    leaf tag-type {
      type identityref {
        base vpn-common:tag-type;
      }
      description
        "Tag type.";
    }
    leaf svlan-id {
      type uint16 {
        range "1..4094";
      }
      description
        "Service VLAN (S-VLAN) identifier.";
    }
    leaf cvlan-id {
      type uint16 {
        range "1..4094";
      }
      description
        "Customer VLAN (C-VLAN) identifier.";
    }
  }

  /**** Layer 2 tunnel services ****/
  // pseudowire (PW)

  grouping pseudowire {
    description
      "Includes pseudowire termination parameters.";
    leaf vcid {
      type uint32;
      description
        "Indicates a PW or virtual circuit (VC) identifier.";
    }
    leaf far-end {
      type union {
        type uint32;
        type inet:ip-address;
      }
      description
        "Neighbor reference.";
      reference
        "RFC 8077: Pseudowire Setup and Maintenance Using the Label
                   Distribution Protocol (LDP), Section 6.1";
    }
  }

  // VPLS

  grouping vpls {
    description
      "VPLS termination parameters.";
    leaf vcid {
      type uint32;
      description
        "VC identifier.";
    }
    leaf-list far-end {
      type union {
        type uint32;
        type inet:ip-address;
      }
      description
        "Neighbor reference.";
    }
  }

  // VXLAN

  grouping vxlan {
    description
      "VXLAN termination parameters.";
    leaf vni-id {
      type uint32;
      description
        "VXLAN Network Identifier (VNI).";
    }
    leaf peer-mode {
      type identityref {
        base vpn-common:vxlan-peer-mode;
      }
      description
        "Specifies the VXLAN access mode. By default, the peer mode
         is set to 'static-mode'.";
    }
    leaf-list peer-ip-address {
      type inet:ip-address;
      description
        "List of a peer's IP addresses.";
    }
  }

  // Layer 2 Tunnel service

  grouping l2-tunnel-service {
    description
      "Defines a Layer 2 tunnel termination.";
    leaf type {
      type identityref {
        base l2-tunnel-type;
      }
      description
        "Selects the tunnel termination type for an AC.";
    }
    container pseudowire {
      when "derived-from-or-self(../type, 'ac-common:pseudowire')" {
        description
          "Only applies when the Layer 2 service type is
           'pseudowire'.";
      }
      description
        "Includes pseudowire termination parameters.";
      uses pseudowire;
    }
    container vpls {
      when "derived-from-or-self(../type, 'ac-common:vpls')" {
        description
          "Only applies when the Layer 2 service type is 'vpls'.";
      }
      description
        "VPLS termination parameters.";
      uses vpls;
    }
    container vxlan {
      when "derived-from-or-self(../type, 'ac-common:vxlan')" {
        description
          "Only applies when the Layer 2 service type is 'vxlan'.";
      }
      description
        "VXLAN termination parameters.";
      uses vxlan;
    }
  }

  /**** Layer 3 connection *****/
  // IPv4 allocation type

  grouping ipv4-allocation-type {
    description
      "IPv4-specific parameters.";
    leaf prefix-length {
      type uint8 {
        range "0..32";
      }
      description
        "Subnet prefix length expressed in bits. It is applied to
         both local and customer addresses.";
    }
    leaf address-allocation-type {
      type identityref {
        base address-allocation-type;
      }
      must "not(derived-from-or-self(current(), 'ac-common:slaac') "
         + "or derived-from-or-self(current(), "
         + "'ac-common:provider-dhcp-slaac'))" {
        error-message "SLAAC is only applicable to IPv6.";
      }
      description
        "Defines how IPv4 addresses are allocated to the peer
         termination points.";
    }
  }

  // IPv6 allocation type

  grouping ipv6-allocation-type {
    description
      "IPv6-specific parameters.";
    leaf prefix-length {
      type uint8 {
        range "0..128";
      }
      description
        "Subnet prefix length expressed in bits. It is applied to
         both local and customer addresses.";
    }
    leaf address-allocation-type {
      type identityref {
        base address-allocation-type;
      }
      description
        "Defines how IPv6 addresses are allocated to the peer
         termination points.";
    }
  }

  // Basic parameters for IPv4 connection 

  grouping ipv4-connection-basic {
    description
      "Basic set for IPv4-specific parameters for the connection.";
    uses ipv4-allocation-type;
    choice allocation-type {
      description
        "Choice of the IPv4 address allocation.";
      case dynamic {
        description
          "When the addresses are allocated by DHCP or other dynamic
           means local to the infrastructure.";
        choice provider-dhcp {
          description
            "Parameters related to DHCP-allocated addresses. IP
             addresses are allocated by DHCP, that is provided by
             the operator.";
          leaf dhcp-service-type {
            type enumeration {
              enum server {
                description
                  "Local DHCP server.";
              }
              enum relay {
                description
                  "Local DHCP relay. DHCP requests are relayed to
                   a provider's server.";
              }
            }
            description
              "Indicates the type of DHCP service to be enabled on
               an AC.";
          }
        }
        choice dhcp-relay {
          description
            "The DHCP relay is provided by the operator.";
          container customer-dhcp-servers {
            description
              "Container for a list of the customer's DHCP servers.";
            leaf-list server-ip-address {
              type inet:ipv4-address;
              description
                "IPv4 addresses of the customer's DHCP server.";
            }
          }
        }
      }
    }
  }

  // Basic parameters for IPv6 connection

  grouping ipv6-connection-basic {
    description
      "Basic set for IPv6-specific parameters for the connection.";
    uses ipv6-allocation-type;
    choice allocation-type {
      description
        "Choice of the IPv6 address allocation.";
      case dynamic {
        description
          "When the addresses are allocated by DHCP or other dynamic
           means local to the infrastructure.";
        choice provider-dhcp {
          description
            "Parameters related to DHCP-allocated addresses.
             IP addresses are allocated by DHCP, that is provided
             by the operator.";
          leaf dhcp-service-type {
            type enumeration {
              enum server {
                description
                  "Local DHCP server.";
              }
              enum relay {
                description
                  "Local DHCP relay. DHCP requests are relayed to a
                   provider's server.";
              }
            }
            description
              "Indicates the type of DHCP service to be enabled on
               the AC.";
          }
        }
        choice dhcp-relay {
          description
            "The DHCP relay is provided by the operator.";
          container customer-dhcp-servers {
            description
              "Container for a list of the customer's DHCP servers.";
            leaf-list server-ip-address {
              type inet:ipv6-address;
              description
                "IPv6 addresses of the customer's DHCP server.";
            }
          }
        }
      }
    }
  }

  // Full parameters for the IPv4 connection

  grouping ipv4-connection {
    description
      "IPv4-specific connection parameters.";
    leaf local-address {
      type inet:ipv4-address;
      description
        "The IP address used at the provider's interface.";
    }
    leaf virtual-address {
      type inet:ipv4-address;
      description
        "This address may be used for redundancy purposes.";
    }
    uses ipv4-allocation-type;
    choice allocation-type {
      description
        "Choice of the IPv4 address allocation.";
      case dynamic {
        description
          "When the addresses are allocated by DHCP or other
           dynamic means local to the infrastructure.";
        choice address-assign {
          description
            "A choice for how IPv4 addresses are assigned.";
          case number {
            leaf number-of-dynamic-address {
              type uint16;
              description
                "Specifies the number of IP addresses to be assigned
                 to the customer on the AC.";
            }
          }
          case explicit {
            container customer-addresses {
              description
                "Container for customer addresses to be allocated
                 using DHCP.";
              list address-pool {
                key "pool-id";
                description
                  "Describes IP addresses to be dynamically
                   allocated.

                   When only 'start-address' is present, it
                   represents a single address.

                   When both 'start-address' and 'end-address' are
                   specified, it implies a range inclusive of both
                   addresses.";
                leaf pool-id {
                  type string;
                  description
                    "A pool identifier for the address range from
                     'start-address' to 'end-address'.";
                }
                leaf start-address {
                  type inet:ipv4-address;
                  mandatory true;
                  description
                    "Indicates the first address in the pool.";
                }
                leaf end-address {
                  type inet:ipv4-address;
                  description
                    "Indicates the last address in the pool.";
                }
              }
            }
          }
        }
        choice provider-dhcp {
          description
            "Parameters related to DHCP-allocated addresses. IP
             addresses are allocated by DHCP, which is provided by
             the operator.";
          leaf dhcp-service-type {
            type enumeration {
              enum server {
                description
                  "Local DHCP server.";
              }
              enum relay {
                description
                  "Local DHCP relay. DHCP requests are relayed to
                   a provider's server.";
              }
            }
            description
              "Indicates the type of DHCP service to be enabled on
               this AC.";
          }
        }
        choice dhcp-relay {
          description
            "The DHCP relay is provided by the operator.";
          container customer-dhcp-servers {
            description
              "Container for a list of the customer's DHCP servers.";
            leaf-list server-ip-address {
              type inet:ipv4-address;
              description
                "IPv4 addresses of the customer's DHCP server.";
            }
          }
        }
      }
      case static-addresses {
        description
          "Lists the IPv4 addresses that are used.";
        list address {
          key "address-id";
          ordered-by user;
          description
            "Lists the IPv4 addresses that are used. The first
             address of the list is the primary address of the
             connection.";
          leaf address-id {
            type string;
            description
              "An identifier of the static IPv4 address.";
          }
          leaf customer-address {
            type inet:ipv4-address;
            description
              "An IPv4 address of the customer side.";
          }
        }
      }
    }
  }

  // Full parameters for the IPv6 connection

  grouping ipv6-connection {
    description
      "IPv6-specific connection parameters.";
    leaf local-address {
      type inet:ipv6-address;
      description
        "IPv6 address of the provider side.";
    }
    leaf virtual-address {
      type inet:ipv6-address;
      description
        "This address may be used for redundancy purposes.";
    }
    uses ipv6-allocation-type;
    choice allocation-type {
      description
        "Choice of the IPv6 address allocation.";
      case dynamic {
        description
          "When the addresses are allocated by DHCP or other
           dynamic means local to the infrastructure.";
        choice address-assign {
          description
            "A choice for how IPv6 addresses are assigned.";
          case number {
            leaf number-of-dynamic-address {
              type uint16;
              description
                "Specifies the number of IP addresses to be
                 assigned to the customer on this access.";
            }
          }
          case explicit {
            container customer-addresses {
              description
                "Container for customer addresses to be allocated
                 using DHCP.";
              list address-pool {
                key "pool-id";
                description
                  "Describes IP addresses to be dynamically
                   allocated.

                   When only 'start-address' is present, it
                   represents a single address.

                   When both 'start-address' and 'end-address' are
                   specified, it implies a range inclusive of both
                   addresses.";
                leaf pool-id {
                  type string;
                  description
                    "A pool identifier for the address range from
                     'start-address' to 'end-address'.";
                }
                leaf start-address {
                  type inet:ipv6-address;
                  mandatory true;
                  description
                    "Indicates the first address in the pool.";
                }
                leaf end-address {
                  type inet:ipv6-address;
                  description
                    "Indicates the last address in the pool.";
                }
              }
            }
          }
        }
        choice provider-dhcp {
          description
            "Parameters related to DHCP-allocated addresses.
             IP addresses are allocated by DHCP, which is provided
             by the operator.";
          leaf dhcp-service-type {
            type enumeration {
              enum server {
                description
                  "Local DHCP server.";
              }
              enum relay {
                description
                  "Local DHCP relay. DHCP requests are relayed
                   to a provider's server.";
              }
            }
            description
              "Indicates the type of DHCP service to be enabled
               on this access.";
          }
        }
        choice dhcp-relay {
          description
            "The DHCP relay is provided by the operator.";
          container customer-dhcp-servers {
            description
              "Container for a list of the customer's DHCP servers.";
            leaf-list server-ip-address {
              type inet:ipv6-address;
              description
                "IPv6 addresses of the customer's DHCP server.";
            }
          }
        }
      }
      case static-addresses {
        description
          "Lists the IPv6 addresses that are used by the customer.";
        list address {
          key "address-id";
          ordered-by user;
          description
            "Lists the IPv6 addresses that are used. The first
             address of the list is the primary IP address of
             the connection.";
          leaf address-id {
            type string;
            description
              "An identifier of the static IPv6 address.";
          }
          leaf customer-address {
            type inet:ipv6-address;
            description
              "An IPv6 address of the customer side.";
          }
        }
      }
    }
  }

  /**** Routing ****/
  // Routing authentication

  grouping bgp-authentication {
    description
      "Grouping for BGP authentication parameters.";
    container authentication {
      description
        "Container for BGP authentication parameters.";
      leaf enabled {
        type boolean;
        description
          "Enables or disables authentication.";
      }
      container keying-material {
        when "../enabled = 'true'";
        description
          "Container for describing how a BGP routing session is to
           be secured on an AC.";
        choice option {
          description
            "Choice of authentication options.";
          case ao {
            description
              "Uses the TCP Authentication Option (TCP-AO).";
            reference
              "RFC 5925: The TCP Authentication Option";
            leaf enable-ao {
              type boolean;
              description
                "Enables the TCP-AO.";
            }
            leaf ao-keychain {
              type key-chain:key-chain-ref;
              description
                "Reference to the TCP-AO key chain.";
              reference
                "RFC 8177: YANG Data Model for Key Chains";
            }
          }
          case md5 {
            description
              "Uses MD5 to secure the session.";
            reference
              "RFC 4364: BGP/MPLS IP Virtual Private Networks
                         (VPNs), Section 13.2";
            leaf md5-keychain {
              type key-chain:key-chain-ref;
              description
                "Specifies a reference to the MD5 key chain.";
              reference
                "RFC 8177: YANG Data Model for Key Chains";
            }
          }
          case explicit {
            leaf key-id {
              type uint32;
              description
                "Key identifier.";
            }
            leaf key {
              type string;
              description
                "BGP authentication key.

                 This model only supports the subset of keys that
                 are representable as ASCII strings.";
            }
            leaf crypto-algorithm {
              type identityref {
                base key-chain:crypto-algorithm;
              }
              description
                "Indicates the cryptographic algorithm associated
                 with the key.";
            }
          }
        }
      }
    }
  }

  grouping ospf-authentication {
    description
      "Authentication configuration.";
    container authentication {
      description
        "Container for OSPF authentication parameters.";
      leaf enabled {
        type boolean;
        description
          "Enables or disables authentication.";
      }
      container keying-material {
        when "../enabled = 'true'";
        description
          "Container for describing how an OSPF session is to be
           secured for this AC.";
        choice option {
          description
            "Options for OSPF authentication.";
          case auth-key-chain {
            leaf key-chain {
              type key-chain:key-chain-ref;
              description
                "Name of the key chain.";
            }
          }
          case auth-key-explicit {
            leaf key-id {
              type uint32;
              description
                "Key identifier.";
            }
            leaf key {
              type string;
              description
                "OSPF authentication key.

                 This model only supports the subset of keys that
                 are representable as ASCII strings.";
            }
            leaf crypto-algorithm {
              type identityref {
                base key-chain:crypto-algorithm;
              }
              description
                "Indicates the cryptographic algorithm associated
                 with the key.";
            }
          }
        }
      }
    }
  }

  grouping isis-authentication {
    description
      "IS-IS authentication configuration.";
    container authentication {
      description
        "Container for IS-IS authentication parameters.";
      leaf enabled {
        type boolean;
        description
          "Enables or disables authentication.";
      }
      container keying-material {
        when "../enabled = 'true'";
        description
          "Container for describing how an IS-IS session is secured
           over an AC.";
        choice option {
          description
            "Options for IS-IS authentication.";
          case auth-key-chain {
            leaf key-chain {
              type key-chain:key-chain-ref;
              description
                "Name of the key chain.";
            }
          }
          case auth-key-explicit {
            leaf key-id {
              type uint32;
              description
                "Key identifier.";
            }
            leaf key {
              type string;
              description
                "IS-IS authentication key.

                 This model only supports the subset of keys that
                 are representable as ASCII strings.";
            }
            leaf crypto-algorithm {
              type identityref {
                base key-chain:crypto-algorithm;
              }
              description
                "Indicates the cryptographic algorithm associated
                 with the key.";
            }
          }
        }
      }
    }
  }

  grouping rip-authentication {
    description
      "RIP authentication configuration.";
    container authentication {
      description
        "Container for RIP authentication parameters.";
      leaf enabled {
        type boolean;
        description
          "Enables or disables authentication.";
      }
      container keying-material {
        when "../enabled = 'true'";
        description
          "Container for describing how a RIP session is to be
           secured on this AC.";
        choice option {
          description
            "Specifies the authentication scheme.";
          case auth-key-chain {
            leaf key-chain {
              type key-chain:key-chain-ref;
              description
                "Name of the key chain.";
            }
          }
          case auth-key-explicit {
            leaf key {
              type string;
              description
                "RIP authentication key.

                 This model only supports the subset of keys that
                 are representable as ASCII strings.";
            }
            leaf crypto-algorithm {
              type identityref {
                base key-chain:crypto-algorithm;
              }
              description
                "Indicates the cryptographic algorithm associated
                 with the key.";
            }
          }
        }
      }
    }
  }

  // Basic routing parameters

  grouping bgp-peer-group-without-name {
    description
      "Identifies a BGP peer-group configured on the local system.";
    leaf local-as {
      type inet:as-number;
      description
        "Indicates a local AS Number (ASN). This ASN is exposed to
         a customer so that it knows which ASN to use to set up
         a BGP session.";
    }
    leaf peer-as {
      type inet:as-number;
      description
        "Indicates the customer's ASN when the customer requests
         BGP routing.";
    }
    leaf address-family {
      type identityref {
        base vpn-common:address-family;
      }
      description
        "This node contains the address families to be activated.
         'dual-stack' means that both IPv4 and IPv6 will be 
         activated.";
    }
    leaf role {
      type identityref {
        base ac-common:bgp-role;
      }
      description
        "Specifies the BGP role (provider, customer, peer, etc.).";
      reference
        "RFC 9234: Route Leak Prevention and Detection Using 
                   Roles in UPDATE and OPEN Messages, Section 4";
    }
  }

  grouping bgp-peer-group-with-name {
    description
      "Identifies a BGP peer-group configured on the local system -
       identified by a peer-group name.";
    leaf name {
      type string;
      description
        "Name of the BGP peer-group.";
    }
    uses bgp-peer-group-without-name;
  }

  grouping ospf-basic {
    description
      "Configuration specific to OSPF.";
    leaf address-family {
      type identityref {
        base vpn-common:address-family;
      }
      description
        "Indicates whether IPv4, IPv6, or both are to be activated.";
    }
    leaf area-id {
      type yang:dotted-quad;
      mandatory true;
      description
        "Area ID.";
      reference
        "RFC 4577: OSPF as the Provider/Customer Edge Protocol
                   for BGP/MPLS IP Virtual Private Networks
                   (VPNs), Section 4.2.3
         RFC 6565: OSPFv3 as a Provider Edge to Customer Edge
                   (PE-CE) Routing Protocol, Section 4.2";
    }
    leaf metric {
      type uint16;
      description
        "Metric of the AC.  It is used in the routing state
         calculation and path selection.";
    }
  }

  grouping isis-basic {
    description
      "Basic configuration specific to IS-IS.";
    leaf address-family {
      type identityref {
        base vpn-common:address-family;
      }
      description
        "Indicates whether IPv4, IPv6, or both are to be activated.";
    }
    leaf area-address {
      type area-address;
      mandatory true;
      description
        "Area address.";
    }
  }

  // Static routing 

  grouping ipv4-static-rtg-entry {
    description
      "Parameters to configure a specific IPv4 static routing
       entry.";
    leaf lan {
      type inet:ipv4-prefix;
      description
        "LAN prefix.";
    }
    leaf lan-tag {
      type string;
      description
        "Internal tag to be used in service policies.";
    }
    leaf next-hop {
      type union {
        type inet:ip-address;
        type predefined-next-hop;
      }
      description
        "The next hop that is to be used for the static route.
         This may be specified as an IP address or a predefined
         next-hop type (e.g., 'discard' or 'local-link').";
    }
    leaf metric {
      type uint32;
      description
        "Indicates the metric associated with the static route.";
    }
  }

  grouping ipv4-static-rtg {
    description
      "A set of parameters specific to IPv4 static routing.";
    list ipv4-lan-prefixes {
      if-feature "vpn-common:ipv4";
      key "lan next-hop";
      description
        "List of LAN prefixes for the site.";
      uses ipv4-static-rtg-entry;
      uses ac-common:service-status;
    }
  }

  grouping ipv6-static-rtg-entry {
    description
      "Parameters to configure a specific IPv6 static routing
       entry.";
    leaf lan {
      type inet:ipv6-prefix;
      description
        "LAN prefixes.";
    }
    leaf lan-tag {
      type string;
      description
        "Internal tag to be used in service (e.g., VPN) policies.";
    }
    leaf next-hop {
      type union {
        type inet:ip-address;
        type predefined-next-hop;
      }
      description
        "The next hop that is to be used for the static route.
         This may be specified as an IP address or a predefined
         next-hop type (e.g., 'discard' or 'local-link').";
    }
    leaf metric {
      type uint32;
      description
        "Indicates the metric associated with the static route.";
    }
  }

  grouping ipv6-static-rtg {
    description
      "A set of parameters specific to IPv6 static routing.";
    list ipv6-lan-prefixes {
      if-feature "vpn-common:ipv6";
      key "lan next-hop";
      description
        "List of LAN prefixes for the customer terminating points.";
      uses ipv6-static-rtg-entry;
      uses ac-common:service-status;
    }
  }

  // OAM

  grouping bfd {
    description
      "A grouping for basic BFD.";
    leaf holdtime {
      type uint32;
      units "milliseconds";
      description
        "Expected BFD holdtime.
         The customer may impose some fixed values for the
         holdtime period if the provider allows the customer
         to use this function.
         If the provider doesn't allow the customer to use
         this function, fixed values will not be set.";
      reference
        "RFC 5880: Bidirectional Forwarding Detection (BFD),
                   Section 6.8.18";
    }
  }

  // redundancy

  grouping redundancy-group {
    description
      "A grouping for redundancy group.";
    list group {
       key "group-id";
       description
         "List of group-ids.";
       leaf group-id {
         type string;
         description
           "Indicates the group-id to which an AC belongs.";
       }
       leaf precedence {
         type identityref {
           base ac-common:precedence-type;
         }
         description
           "Defines redundancy of an AC.";
       }
     }
   }

  // QoS

  grouping bandwidth-parameters {
    description
      "A grouping for bandwidth parameters.";
    leaf cir {
      type uint64;
      units "bps";
      description
        "Committed Information Rate (CIR). The maximum number of bits
         that a port can receive or send during one second over
         an interface.";
    }
    leaf cbs {
      type uint64;
      units "bytes";
      description
        "Committed Burst Size (CBS). CBS controls the bursty nature
         of the traffic.  Traffic that does not use the configured
         CIR accumulates credits until the credits reach the
         configured CBS.";
    }
    leaf eir {
      type uint64;
      units "bps";
      description
        "Excess Information Rate (EIR), i.e., excess frame delivery
         allowed not subject to a Service Level Agreement (SLA).
         The traffic rate can be limited by EIR.";
    }
    leaf ebs {
      type uint64;
      units "bytes";
      description
        "Excess Burst Size (EBS). The bandwidth available for burst
         traffic from the EBS is subject to the amount of bandwidth
         that is accumulated during periods when traffic allocated
         by the EIR policy is not used.";
    }
    leaf pir {
      type uint64;
      units "bps";
      description
        "Peak Information Rate (PIR), i.e., maximum frame delivery
         allowed. It is equal to or less than sum of CIR and EIR.";
    }
    leaf pbs {
      type uint64;
      units "bytes";
      description
        "Peak Burst Size (PBS).";
    }
  }

  grouping bandwidth-per-type {
    description
      "Grouping for bandwidth per type.";
    list bandwidth {
      key "bw-type";
      description
        "List for bandwidth per type data nodes.";
      leaf bw-type {
        type identityref {
          base vpn-common:bw-type;
        }
        description
          "Indicates the bandwidth type.";
      }
      choice type {
        description
          "Choice based upon bandwidth type.";
        case per-cos {
          description
            "Bandwidth per Class of Service (CoS).";
          list cos {
            key "cos-id";
            description
              "List of CoSes.";
            leaf cos-id {
              type uint8;
              description
                "Identifier of the CoS, indicated by a Differentiated
                 Services Code Point (DSCP) or a CE-CLAN CoS (802.1p)
                 value in the service frame.";
              reference
                "IEEE Std 802.1Q: Bridges and Bridged Networks";
            }
            uses bandwidth-parameters;
          }
        }
        case other {
          description
            "Other bandwidth types.";
          uses bandwidth-parameters;
        }
      }
    }
  }
}
]]></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>The YANG module defines a set of identities, types, and
groupings. These nodes are intended to be reused by other YANG
modules. The module by itself does not expose any data nodes that
are writable, data nodes that contain read-only state, or RPCs.
As such, there are no additional security issues related to
the YANG module that need to be considered.</t>
      <t>Modules that use the groupings that are defined in this document
should identify the corresponding security considerations. For
   example, reusing some of these groupings will expose privacy-related
   information (e.g., 'ipv6-lan-prefixes' or 'ipv4-lan-prefixes').  Disclosing such information may
   be considered a violation of the customer-provider trust
   relationship.</t>
      <t>Several groupings ('bgp-authentication', 'ospf-authentication', 'isis-authentication', and 'rip-authentication') rely
   upon <xref target="RFC8177"/> for authentication purposes.  As such, modules that will reuse these groupings
   will inherit the security considerations discussed in
   <xref section="5" sectionFormat="of" target="RFC8177"/>.  Also, these groupings support supplying explicit keys as
   strings in ASCII format.  The use of keys in hexadecimal string
   format would afford greater key entropy with the same number of key-
   string octets.  However, such a format is not included in this
   version of the common AC model, because it is not supported by the underlying
   device modules (e.g., <xref target="RFC8695"/>).</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA is requested to register the following URI in the "ns" subregistry within
   the "IETF XML Registry" <xref target="RFC3688"/>:</t>
      <artwork><![CDATA[
   URI:  urn:ietf:params:xml:ns:yang:ietf-ac-common
   Registrant Contact:  The IESG.
   XML:  N/A; the requested URI is an XML namespace.
]]></artwork>
      <t>IANA is requested to register the following YANG module in the "YANG Module
   Names" subregistry <xref target="RFC6020"/> within the "YANG Parameters" registry:</t>
      <artwork><![CDATA[
   Name:  ietf-ac-common
   Namespace:  urn:ietf:params:xml:ns:yang:ietf-ac-common
   Prefix:  ac-common
   Maintained by IANA?  N
   Reference:  RFC XXXX
]]></artwork>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="ISO10589" target="https://www.iso.org/standard/30932.html">
          <front>
            <title>Information technology - Telecommunications and information exchange between systems - Intermediate System to Intermediate System intra-domain routeing information exchange protocol for use in conjunction with the protocol for providing the connectionless-mode network service (ISO8473)</title>
            <author>
              <organization>ISO</organization>
            </author>
            <date year="2002"/>
          </front>
        </reference>
        <reference anchor="RFC8342">
          <front>
            <title>Network Management Datastore Architecture (NMDA)</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="J. Schoenwaelder" initials="J." surname="Schoenwaelder"/>
            <author fullname="P. Shafer" initials="P." surname="Shafer"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <author fullname="R. Wilton" initials="R." surname="Wilton"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>Datastores are a fundamental concept binding the data models written in the YANG data modeling language to network management protocols such as the Network Configuration Protocol (NETCONF) and RESTCONF. This document defines an architectural framework for datastores based on the experience gained with the initial simpler model, addressing requirements that were not well supported in the initial model. This document updates RFC 7950.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8342"/>
          <seriesInfo name="DOI" value="10.17487/RFC8342"/>
        </reference>
        <reference anchor="RFC6991">
          <front>
            <title>Common YANG Data Types</title>
            <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder"/>
            <date month="July" year="2013"/>
            <abstract>
              <t>This document introduces a collection of common data types to be used with the YANG data modeling language. This document obsoletes RFC 6021.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6991"/>
          <seriesInfo name="DOI" value="10.17487/RFC6991"/>
        </reference>
        <reference anchor="RFC8177">
          <front>
            <title>YANG Data Model for Key Chains</title>
            <author fullname="A. Lindem" initials="A." role="editor" surname="Lindem"/>
            <author fullname="Y. Qu" initials="Y." surname="Qu"/>
            <author fullname="D. Yeung" initials="D." surname="Yeung"/>
            <author fullname="I. Chen" initials="I." surname="Chen"/>
            <author fullname="J. Zhang" initials="J." surname="Zhang"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>This document describes the key chain YANG data model. Key chains are commonly used for routing protocol authentication and other applications requiring symmetric keys. A key chain is a list containing one or more elements containing a Key ID, key string, send/accept lifetimes, and the associated authentication or encryption algorithm. By properly overlapping the send and accept lifetimes of multiple key chain elements, key strings and algorithms may be gracefully updated. By representing them in a YANG data model, key distribution can be automated.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8177"/>
          <seriesInfo name="DOI" value="10.17487/RFC8177"/>
        </reference>
        <reference anchor="RFC8341">
          <front>
            <title>Network Configuration Access Control Model</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>The standardization of network configuration interfaces for use with the Network Configuration Protocol (NETCONF) or the RESTCONF protocol requires a structured and secure operating environment that promotes human usability and multi-vendor interoperability. There is a need for standard mechanisms to restrict NETCONF or RESTCONF protocol access for particular users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content. This document defines such an access control model.</t>
              <t>This document obsoletes RFC 6536.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="91"/>
          <seriesInfo name="RFC" value="8341"/>
          <seriesInfo name="DOI" value="10.17487/RFC8341"/>
        </reference>
        <reference anchor="RFC9181">
          <front>
            <title>A Common YANG Data Model for Layer 2 and Layer 3 VPNs</title>
            <author fullname="S. Barguil" initials="S." surname="Barguil"/>
            <author fullname="O. Gonzalez de Dios" initials="O." role="editor" surname="Gonzalez de Dios"/>
            <author fullname="M. Boucadair" initials="M." role="editor" surname="Boucadair"/>
            <author fullname="Q. Wu" initials="Q." surname="Wu"/>
            <date month="February" year="2022"/>
            <abstract>
              <t>This document defines a common YANG module that is meant to be reused by various VPN-related modules such as Layer 3 VPN and Layer 2 VPN network models.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9181"/>
          <seriesInfo name="DOI" value="10.17487/RFC9181"/>
        </reference>
        <reference anchor="RFC8077">
          <front>
            <title>Pseudowire Setup and Maintenance Using the Label Distribution Protocol (LDP)</title>
            <author fullname="L. Martini" initials="L." role="editor" surname="Martini"/>
            <author fullname="G. Heron" initials="G." role="editor" surname="Heron"/>
            <date month="February" year="2017"/>
            <abstract>
              <t>Layer 2 services (such as Frame Relay, Asynchronous Transfer Mode, and Ethernet) can be emulated over an MPLS backbone by encapsulating the Layer 2 Protocol Data Units (PDUs) and then transmitting them over pseudowires (PWs). It is also possible to use pseudowires to provide low-rate Time-Division Multiplexed and Synchronous Optical NETworking circuit emulation over an MPLS-enabled network. This document specifies a protocol for establishing and maintaining the pseudowires, using extensions to the Label Distribution Protocol (LDP). Procedures for encapsulating Layer 2 PDUs are specified in other documents.</t>
              <t>This document is a rewrite of RFC 4447 for publication as an Internet Standard.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="84"/>
          <seriesInfo name="RFC" value="8077"/>
          <seriesInfo name="DOI" value="10.17487/RFC8077"/>
        </reference>
        <reference anchor="RFC7348">
          <front>
            <title>Virtual eXtensible Local Area Network (VXLAN): A Framework for Overlaying Virtualized Layer 2 Networks over Layer 3 Networks</title>
            <author fullname="M. Mahalingam" initials="M." surname="Mahalingam"/>
            <author fullname="D. Dutt" initials="D." surname="Dutt"/>
            <author fullname="K. Duda" initials="K." surname="Duda"/>
            <author fullname="P. Agarwal" initials="P." surname="Agarwal"/>
            <author fullname="L. Kreeger" initials="L." surname="Kreeger"/>
            <author fullname="T. Sridhar" initials="T." surname="Sridhar"/>
            <author fullname="M. Bursell" initials="M." surname="Bursell"/>
            <author fullname="C. Wright" initials="C." surname="Wright"/>
            <date month="August" year="2014"/>
            <abstract>
              <t>This document describes Virtual eXtensible Local Area Network (VXLAN), which is used to address the need for overlay networks within virtualized data centers accommodating multiple tenants. The scheme and the related protocols can be used in networks for cloud service providers and enterprise data centers. This memo documents the deployed VXLAN protocol for the benefit of the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7348"/>
          <seriesInfo name="DOI" value="10.17487/RFC7348"/>
        </reference>
        <reference anchor="RFC4271">
          <front>
            <title>A Border Gateway Protocol 4 (BGP-4)</title>
            <author fullname="Y. Rekhter" initials="Y." role="editor" surname="Rekhter"/>
            <author fullname="T. Li" initials="T." role="editor" surname="Li"/>
            <author fullname="S. Hares" initials="S." role="editor" surname="Hares"/>
            <date month="January" year="2006"/>
            <abstract>
              <t>This document discusses the Border Gateway Protocol (BGP), which is an inter-Autonomous System routing protocol.</t>
              <t>The primary function of a BGP speaking system is to exchange network reachability information with other BGP systems. This network reachability information includes information on the list of Autonomous Systems (ASes) that reachability information traverses. This information is sufficient for constructing a graph of AS connectivity for this reachability from which routing loops may be pruned, and, at the AS level, some policy decisions may be enforced.</t>
              <t>BGP-4 provides a set of mechanisms for supporting Classless Inter-Domain Routing (CIDR). These mechanisms include support for advertising a set of destinations as an IP prefix, and eliminating the concept of network "class" within BGP. BGP-4 also introduces mechanisms that allow aggregation of routes, including aggregation of AS paths.</t>
              <t>This document obsoletes RFC 1771. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4271"/>
          <seriesInfo name="DOI" value="10.17487/RFC4271"/>
        </reference>
        <reference anchor="RFC4577">
          <front>
            <title>OSPF as the Provider/Customer Edge Protocol for BGP/MPLS IP Virtual Private Networks (VPNs)</title>
            <author fullname="E. Rosen" initials="E." surname="Rosen"/>
            <author fullname="P. Psenak" initials="P." surname="Psenak"/>
            <author fullname="P. Pillay-Esnault" initials="P." surname="Pillay-Esnault"/>
            <date month="June" year="2006"/>
            <abstract>
              <t>Many Service Providers offer Virtual Private Network (VPN) services to their customers, using a technique in which customer edge routers (CE routers) are routing peers of provider edge routers (PE routers). The Border Gateway Protocol (BGP) is used to distribute the customer's routes across the provider's IP backbone network, and Multiprotocol Label Switching (MPLS) is used to tunnel customer packets across the provider's backbone. This is known as a "BGP/MPLS IP VPN". The base specification for BGP/MPLS IP VPNs presumes that the routing protocol on the interface between a PE router and a CE router is BGP. This document extends that specification by allowing the routing protocol on the PE/CE interface to be the Open Shortest Path First (OSPF) protocol.</t>
              <t>This document updates RFC 4364. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4577"/>
          <seriesInfo name="DOI" value="10.17487/RFC4577"/>
        </reference>
        <reference anchor="RFC6565">
          <front>
            <title>OSPFv3 as a Provider Edge to Customer Edge (PE-CE) Routing Protocol</title>
            <author fullname="P. Pillay-Esnault" initials="P." surname="Pillay-Esnault"/>
            <author fullname="P. Moyer" initials="P." surname="Moyer"/>
            <author fullname="J. Doyle" initials="J." surname="Doyle"/>
            <author fullname="E. Ertekin" initials="E." surname="Ertekin"/>
            <author fullname="M. Lundberg" initials="M." surname="Lundberg"/>
            <date month="June" year="2012"/>
            <abstract>
              <t>Many Service Providers (SPs) offer Virtual Private Network (VPN) services to their customers using a technique in which Customer Edge (CE) routers are routing peers of Provider Edge (PE) routers. The Border Gateway Protocol (BGP) is used to distribute the customer's routes across the provider's IP backbone network, and Multiprotocol Label Switching (MPLS) is used to tunnel customer packets across the provider's backbone. Support currently exists for both IPv4 and IPv6 VPNs; however, only Open Shortest Path First version 2 (OSPFv2) as PE-CE protocol is specified. This document extends those specifications to support OSPF version 3 (OSPFv3) as a PE-CE routing protocol. The OSPFv3 PE-CE functionality is identical to that of OSPFv2 except for the differences described in this document. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6565"/>
          <seriesInfo name="DOI" value="10.17487/RFC6565"/>
        </reference>
        <reference anchor="RFC1195">
          <front>
            <title>Use of OSI IS-IS for routing in TCP/IP and dual environments</title>
            <author fullname="R. Callon" initials="R." surname="Callon"/>
            <date month="December" year="1990"/>
            <abstract>
              <t>This memo specifies an integrated routing protocol, based on the OSI Intra-Domain IS-IS Routing Protocol, which may be used as an interior gateway protocol (IGP) to support TCP/IP as well as OSI. This allows a single routing protocol to be used to support pure IP environments, pure OSI environments, and dual environments. This specification was developed by the IS-IS working group of the Internet Engineering Task Force. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1195"/>
          <seriesInfo name="DOI" value="10.17487/RFC1195"/>
        </reference>
        <reference anchor="RFC5308">
          <front>
            <title>Routing IPv6 with IS-IS</title>
            <author fullname="C. Hopps" initials="C." surname="Hopps"/>
            <date month="October" year="2008"/>
            <abstract>
              <t>This document specifies a method for exchanging IPv6 routing information using the IS-IS routing protocol. The described method utilizes two new TLVs: a reachability TLV and an interface address TLV to distribute the necessary IPv6 information throughout a routing domain. Using this method, one can route IPv6 along with IPv4 and OSI using a single intra-domain routing protocol. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5308"/>
          <seriesInfo name="DOI" value="10.17487/RFC5308"/>
        </reference>
        <reference anchor="RFC2453">
          <front>
            <title>RIP Version 2</title>
            <author fullname="G. Malkin" initials="G." surname="Malkin"/>
            <date month="November" year="1998"/>
            <abstract>
              <t>This document specifies an extension of the Routing Information Protocol (RIP) to expand the amount of useful information carried in RIP messages and to add a measure of security. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="56"/>
          <seriesInfo name="RFC" value="2453"/>
          <seriesInfo name="DOI" value="10.17487/RFC2453"/>
        </reference>
        <reference anchor="RFC2080">
          <front>
            <title>RIPng for IPv6</title>
            <author fullname="G. Malkin" initials="G." surname="Malkin"/>
            <author fullname="R. Minnear" initials="R." surname="Minnear"/>
            <date month="January" year="1997"/>
            <abstract>
              <t>This document specifies a routing protocol for an IPv6 internet. It is based on protocols and algorithms currently in wide use in the IPv4 Internet [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2080"/>
          <seriesInfo name="DOI" value="10.17487/RFC2080"/>
        </reference>
        <reference anchor="RFC5925">
          <front>
            <title>The TCP Authentication Option</title>
            <author fullname="J. Touch" initials="J." surname="Touch"/>
            <author fullname="A. Mankin" initials="A." surname="Mankin"/>
            <author fullname="R. Bonica" initials="R." surname="Bonica"/>
            <date month="June" year="2010"/>
            <abstract>
              <t>This document specifies the TCP Authentication Option (TCP-AO), which obsoletes the TCP MD5 Signature option of RFC 2385 (TCP MD5). TCP-AO specifies the use of stronger Message Authentication Codes (MACs), protects against replays even for long-lived TCP connections, and provides more details on the association of security with TCP connections than TCP MD5. TCP-AO is compatible with either a static Master Key Tuple (MKT) configuration or an external, out-of-band MKT management mechanism; in either case, TCP-AO also protects connections when using the same MKT across repeated instances of a connection, using traffic keys derived from the MKT, and coordinates MKT changes between endpoints. The result is intended to support current infrastructure uses of TCP MD5, such as to protect long-lived connections (as used, e.g., in BGP and LDP), and to support a larger set of MACs with minimal other system and operational changes. TCP-AO uses a different option identifier than TCP MD5, even though TCP-AO and TCP MD5 are never permitted to be used simultaneously. TCP-AO supports IPv6, and is fully compatible with the proposed requirements for the replacement of TCP MD5. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5925"/>
          <seriesInfo name="DOI" value="10.17487/RFC5925"/>
        </reference>
        <reference anchor="RFC3688">
          <front>
            <title>The IETF XML Registry</title>
            <author fullname="M. Mealling" initials="M." surname="Mealling"/>
            <date month="January" year="2004"/>
            <abstract>
              <t>This document describes an IANA maintained registry for IETF standards which use Extensible Markup Language (XML) related items such as Namespaces, Document Type Declarations (DTDs), Schemas, and Resource Description Framework (RDF) Schemas.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="81"/>
          <seriesInfo name="RFC" value="3688"/>
          <seriesInfo name="DOI" value="10.17487/RFC3688"/>
        </reference>
        <reference anchor="RFC6020">
          <front>
            <title>YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="October" year="2010"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration and state data manipulated by the Network Configuration Protocol (NETCONF), NETCONF remote procedure calls, and NETCONF notifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6020"/>
          <seriesInfo name="DOI" value="10.17487/RFC6020"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC9408">
          <front>
            <title>A YANG Network Data Model for Service Attachment Points (SAPs)</title>
            <author fullname="M. Boucadair" initials="M." role="editor" surname="Boucadair"/>
            <author fullname="O. Gonzalez de Dios" initials="O." surname="Gonzalez de Dios"/>
            <author fullname="S. Barguil" initials="S." surname="Barguil"/>
            <author fullname="Q. Wu" initials="Q." surname="Wu"/>
            <author fullname="V. Lopez" initials="V." surname="Lopez"/>
            <date month="June" year="2023"/>
            <abstract>
              <t>This document defines a YANG data model for representing an abstract view of the provider network topology that contains the points from which its services can be attached (e.g., basic connectivity, VPN, network slices). Also, the model can be used to retrieve the points where the services are actually being delivered to customers (including peer networks).</t>
              <t>This document augments the 'ietf-network' data model defined in RFC 8345 by adding the concept of Service Attachment Points (SAPs). The SAPs are the network reference points to which network services, such as Layer 3 Virtual Private Network (L3VPN) or Layer 2 Virtual Private Network (L2VPN), can be attached. One or multiple services can be bound to the same SAP. Both User-to-Network Interface (UNI) and Network-to-Network Interface (NNI) are supported in the SAP data model.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9408"/>
          <seriesInfo name="DOI" value="10.17487/RFC9408"/>
        </reference>
        <reference anchor="RFC7665">
          <front>
            <title>Service Function Chaining (SFC) Architecture</title>
            <author fullname="J. Halpern" initials="J." role="editor" surname="Halpern"/>
            <author fullname="C. Pignataro" initials="C." role="editor" surname="Pignataro"/>
            <date month="October" year="2015"/>
            <abstract>
              <t>This document describes an architecture for the specification, creation, and ongoing maintenance of Service Function Chains (SFCs) in a network. It includes architectural concepts, principles, and components used in the construction of composite services through deployment of SFCs, with a focus on those to be standardized in the IETF. This document does not propose solutions, protocols, or extensions to existing protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7665"/>
          <seriesInfo name="DOI" value="10.17487/RFC7665"/>
        </reference>
        <reference anchor="RFC4364">
          <front>
            <title>BGP/MPLS IP Virtual Private Networks (VPNs)</title>
            <author fullname="E. Rosen" initials="E." surname="Rosen"/>
            <author fullname="Y. Rekhter" initials="Y." surname="Rekhter"/>
            <date month="February" year="2006"/>
            <abstract>
              <t>This document describes a method by which a Service Provider may use an IP backbone to provide IP Virtual Private Networks (VPNs) for its customers. This method uses a "peer model", in which the customers' edge routers (CE routers) send their routes to the Service Provider's edge routers (PE routers); there is no "overlay" visible to the customer's routing algorithm, and CE routers at different sites do not peer with each other. Data packets are tunneled through the backbone, so that the core routers do not need to know the VPN routes. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4364"/>
          <seriesInfo name="DOI" value="10.17487/RFC4364"/>
        </reference>
        <reference anchor="I-D.ietf-opsawg-teas-attachment-circuit">
          <front>
            <title>YANG Data Models for Bearers and 'Attachment Circuits'-as-a-Service (ACaaS)</title>
            <author fullname="Mohamed Boucadair" initials="M." surname="Boucadair">
              <organization>Orange</organization>
            </author>
            <author fullname="Richard Roberts" initials="R." surname="Roberts">
              <organization>Juniper</organization>
            </author>
            <author fullname="Oscar Gonzalez de Dios" initials="O. G." surname="de Dios">
              <organization>Telefonica</organization>
            </author>
            <author fullname="Samier Barguil" initials="S." surname="Barguil">
              <organization>Nokia</organization>
            </author>
            <author fullname="Bo Wu" initials="B." surname="Wu">
              <organization>Huawei Technologies</organization>
            </author>
            <date day="7" month="November" year="2024"/>
            <abstract>
              <t>   This document specifies a YANG service data model for Attachment
   Circuits (ACs).  This model can be used for the provisioning of ACs
   before or during service provisioning (e.g., Network Slice Service).
   The document also specifies a service model for managing bearers over
   which ACs are established.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-opsawg-teas-attachment-circuit-18"/>
        </reference>
        <reference anchor="I-D.ietf-teas-ietf-network-slice-nbi-yang">
          <front>
            <title>A YANG Data Model for the RFC 9543 Network Slice Service</title>
            <author fullname="Bo Wu" initials="B." surname="Wu">
              <organization>Huawei Technologies</organization>
            </author>
            <author fullname="Dhruv Dhody" initials="D." surname="Dhody">
              <organization>Huawei Technologies</organization>
            </author>
            <author fullname="Reza Rokui" initials="R." surname="Rokui">
              <organization>Ciena</organization>
            </author>
            <author fullname="Tarek Saad" initials="T." surname="Saad">
              <organization>Cisco Systems, Inc</organization>
            </author>
            <author fullname="John Mullooly" initials="J." surname="Mullooly">
              <organization>Cisco Systems, Inc</organization>
            </author>
            <date day="20" month="December" year="2024"/>
            <abstract>
              <t>   This document defines a YANG data model for RFC 9543 Network Slice
   Service.  The model can be used in the Network Slice Service
   interface between a customer and a provider that offers RFC 9543
   Network Slice Services.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-teas-ietf-network-slice-nbi-yang-17"/>
        </reference>
        <reference anchor="I-D.ietf-opsawg-ntw-attachment-circuit">
          <front>
            <title>A Network YANG Data Model for Attachment Circuits</title>
            <author fullname="Mohamed Boucadair" initials="M." surname="Boucadair">
              <organization>Orange</organization>
            </author>
            <author fullname="Richard Roberts" initials="R." surname="Roberts">
              <organization>Juniper</organization>
            </author>
            <author fullname="Oscar Gonzalez de Dios" initials="O. G." surname="de Dios">
              <organization>Telefonica</organization>
            </author>
            <author fullname="Samier Barguil" initials="S." surname="Barguil">
              <organization>Nokia</organization>
            </author>
            <author fullname="Bo Wu" initials="B." surname="Wu">
              <organization>Huawei Technologies</organization>
            </author>
            <date day="7" month="November" year="2024"/>
            <abstract>
              <t>   This document specifies a network model for attachment circuits.  The
   model can be used for the provisioning of attachment circuits prior
   or during service provisioning (e.g., VPN, Network Slice Service).  A
   companion service model is specified in the YANG Data Models for
   Bearers and 'Attachment Circuits'-as-a-Service (ACaaS) (I-D.ietf-
   opsawg-teas-attachment-circuit).

   The module augments the base network ('ietf-network') and the Service
   Attachment Point (SAP) models with the detailed information for the
   provisioning of attachment circuits in Provider Edges (PEs).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-opsawg-ntw-attachment-circuit-14"/>
        </reference>
        <reference anchor="RFC8969">
          <front>
            <title>A Framework for Automating Service and Network Management with YANG</title>
            <author fullname="Q. Wu" initials="Q." role="editor" surname="Wu"/>
            <author fullname="M. Boucadair" initials="M." role="editor" surname="Boucadair"/>
            <author fullname="D. Lopez" initials="D." surname="Lopez"/>
            <author fullname="C. Xie" initials="C." surname="Xie"/>
            <author fullname="L. Geng" initials="L." surname="Geng"/>
            <date month="January" year="2021"/>
            <abstract>
              <t>Data models provide a programmatic approach to represent services and networks. Concretely, they can be used to derive configuration information for network and service components, and state information that will be monitored and tracked. Data models can be used during the service and network management life cycle (e.g., service instantiation, service provisioning, service optimization, service monitoring, service diagnosing, and service assurance). Data models are also instrumental in the automation of network management, and they can provide closed-loop control for adaptive and deterministic service creation, delivery, and maintenance.</t>
              <t>This document describes a framework for service and network management automation that takes advantage of YANG modeling technologies. This framework is drawn from a network operator perspective irrespective of the origin of a data model; thus, it can accommodate YANG modules that are developed outside the IETF.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8969"/>
          <seriesInfo name="DOI" value="10.17487/RFC8969"/>
        </reference>
        <reference anchor="RFC8340">
          <front>
            <title>YANG Tree Diagrams</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="L. Berger" initials="L." role="editor" surname="Berger"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>This document captures the current syntax used in YANG module tree diagrams. The purpose of this document is to provide a single location for this definition. This syntax may be updated from time to time based on the evolution of the YANG language.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="215"/>
          <seriesInfo name="RFC" value="8340"/>
          <seriesInfo name="DOI" value="10.17487/RFC8340"/>
        </reference>
        <reference anchor="RFC8466">
          <front>
            <title>A YANG Data Model for Layer 2 Virtual Private Network (L2VPN) Service Delivery</title>
            <author fullname="B. Wen" initials="B." surname="Wen"/>
            <author fullname="G. Fioccola" initials="G." role="editor" surname="Fioccola"/>
            <author fullname="C. Xie" initials="C." surname="Xie"/>
            <author fullname="L. Jalil" initials="L." surname="Jalil"/>
            <date month="October" year="2018"/>
            <abstract>
              <t>This document defines a YANG data model that can be used to configure a Layer 2 provider-provisioned VPN service. It is up to a management system to take this as an input and generate specific configuration models to configure the different network elements to deliver the service. How this configuration of network elements is done is out of scope for this document.</t>
              <t>The YANG data model defined in this document includes support for point-to-point Virtual Private Wire Services (VPWSs) and multipoint Virtual Private LAN Services (VPLSs) that use Pseudowires signaled using the Label Distribution Protocol (LDP) and the Border Gateway Protocol (BGP) as described in RFCs 4761 and 6624.</t>
              <t>The YANG data model defined in this document conforms to the Network Management Datastore Architecture defined in RFC 8342.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8466"/>
          <seriesInfo name="DOI" value="10.17487/RFC8466"/>
        </reference>
        <reference anchor="RFC8299">
          <front>
            <title>YANG Data Model for L3VPN Service Delivery</title>
            <author fullname="Q. Wu" initials="Q." role="editor" surname="Wu"/>
            <author fullname="S. Litkowski" initials="S." surname="Litkowski"/>
            <author fullname="L. Tomotaki" initials="L." surname="Tomotaki"/>
            <author fullname="K. Ogaki" initials="K." surname="Ogaki"/>
            <date month="January" year="2018"/>
            <abstract>
              <t>This document defines a YANG data model that can be used for communication between customers and network operators and to deliver a Layer 3 provider-provisioned VPN service. This document is limited to BGP PE-based VPNs as described in RFCs 4026, 4110, and 4364. This model is intended to be instantiated at the management system to deliver the overall service. It is not a configuration model to be used directly on network elements. This model provides an abstracted view of the Layer 3 IP VPN service configuration components. It will be up to the management system to take this model as input and use specific configuration models to configure the different network elements to deliver the service. How the configuration of network elements is done is out of scope for this document.</t>
              <t>This document obsoletes RFC 8049; it replaces the unimplementable module in that RFC with a new module with the same name that is not backward compatible. The changes are a series of small fixes to the YANG module and some clarifications to the text.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8299"/>
          <seriesInfo name="DOI" value="10.17487/RFC8299"/>
        </reference>
        <reference anchor="RFC9291">
          <front>
            <title>A YANG Network Data Model for Layer 2 VPNs</title>
            <author fullname="M. Boucadair" initials="M." role="editor" surname="Boucadair"/>
            <author fullname="O. Gonzalez de Dios" initials="O." role="editor" surname="Gonzalez de Dios"/>
            <author fullname="S. Barguil" initials="S." surname="Barguil"/>
            <author fullname="L. Munoz" initials="L." surname="Munoz"/>
            <date month="September" year="2022"/>
            <abstract>
              <t>This document defines an L2VPN Network Model (L2NM) that can be used to manage the provisioning of Layer 2 Virtual Private Network (L2VPN) services within a network (e.g., a service provider network). The L2NM complements the L2VPN Service Model (L2SM) by providing a network-centric view of the service that is internal to a service provider. The L2NM is particularly meant to be used by a network controller to derive the configuration information that will be sent to relevant network devices.</t>
              <t>Also, this document defines a YANG module to manage Ethernet segments and the initial versions of two IANA-maintained modules that include a set of identities of BGP Layer 2 encapsulation types and pseudowire types.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9291"/>
          <seriesInfo name="DOI" value="10.17487/RFC9291"/>
        </reference>
        <reference anchor="RFC9182">
          <front>
            <title>A YANG Network Data Model for Layer 3 VPNs</title>
            <author fullname="S. Barguil" initials="S." surname="Barguil"/>
            <author fullname="O. Gonzalez de Dios" initials="O." role="editor" surname="Gonzalez de Dios"/>
            <author fullname="M. Boucadair" initials="M." role="editor" surname="Boucadair"/>
            <author fullname="L. Munoz" initials="L." surname="Munoz"/>
            <author fullname="A. Aguado" initials="A." surname="Aguado"/>
            <date month="February" year="2022"/>
            <abstract>
              <t>As a complement to the Layer 3 Virtual Private Network Service Model (L3SM), which is used for communication between customers and service providers, this document defines an L3VPN Network Model (L3NM) that can be used for the provisioning of Layer 3 Virtual Private Network (L3VPN) services within a service provider network. The model provides a network-centric view of L3VPN services.</t>
              <t>The L3NM is meant to be used by a network controller to derive the configuration information that will be sent to relevant network devices. The model can also facilitate communication between a service orchestrator and a network controller/orchestrator.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9182"/>
          <seriesInfo name="DOI" value="10.17487/RFC9182"/>
        </reference>
        <reference anchor="I-D.ietf-opsawg-ac-lxsm-lxnm-glue">
          <front>
            <title>A YANG Data Model for Augmenting VPN Service and Network Models with Attachment Circuits</title>
            <author fullname="Mohamed Boucadair" initials="M." surname="Boucadair">
              <organization>Orange</organization>
            </author>
            <author fullname="Richard Roberts" initials="R." surname="Roberts">
              <organization>Juniper</organization>
            </author>
            <author fullname="Samier Barguil" initials="S." surname="Barguil">
              <organization>Nokia</organization>
            </author>
            <author fullname="Oscar Gonzalez de Dios" initials="O. G." surname="de Dios">
              <organization>Telefonica</organization>
            </author>
            <date day="9" month="December" year="2024"/>
            <abstract>
              <t>   The document specifies a module that updates existing service (i.e.,
   the Layer 2 Service Model (L2SM) and the Layer 3 Service Model
   (L3SM)) and network (i.e., the Layer 2 Network Model (L2NM) and the
   Layer 3 Network Model (L3NM)) Virtual Private Network (VPN) modules
   with the required information to bind specific VPN services to
   Attachment Circuits (ACs) that are created using the AC service
   ("ietf-ac-svc") and network ("ietf-ac-ntw") models.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-opsawg-ac-lxsm-lxnm-glue-12"/>
        </reference>
        <reference anchor="RFC4862">
          <front>
            <title>IPv6 Stateless Address Autoconfiguration</title>
            <author fullname="S. Thomson" initials="S." surname="Thomson"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <author fullname="T. Jinmei" initials="T." surname="Jinmei"/>
            <date month="September" year="2007"/>
            <abstract>
              <t>This document specifies the steps a host takes in deciding how to autoconfigure its interfaces in IP version 6. The autoconfiguration process includes generating a link-local address, generating global addresses via stateless address autoconfiguration, and the Duplicate Address Detection procedure to verify the uniqueness of the addresses on a link. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4862"/>
          <seriesInfo name="DOI" value="10.17487/RFC4862"/>
        </reference>
        <reference anchor="I-D.ietf-netmod-rfc8407bis">
          <front>
            <title>Guidelines for Authors and Reviewers of Documents Containing YANG Data Models</title>
            <author fullname="Andy Bierman" initials="A." surname="Bierman">
              <organization>YumaWorks</organization>
            </author>
            <author fullname="Mohamed Boucadair" initials="M." surname="Boucadair">
              <organization>Orange</organization>
            </author>
            <author fullname="Qin Wu" initials="Q." surname="Wu">
              <organization>Huawei</organization>
            </author>
            <date day="13" month="November" year="2024"/>
            <abstract>
              <t>   This memo provides guidelines for authors and reviewers of
   specifications containing YANG modules, including IANA-maintained
   modules.  Recommendations and procedures are defined, which are
   intended to increase interoperability and usability of Network
   Configuration Protocol (NETCONF) and RESTCONF protocol
   implementations that utilize YANG modules.  This document obsoletes
   RFC 8407.

   Also, this document updates RFC 8126 by providing additional
   guidelines for writing the IANA considerations for RFCs that specify
   IANA-maintained modules.  The document also updates RFC 6020 by
   clarifying how modules and their revisions are handled by IANA.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-netmod-rfc8407bis-21"/>
        </reference>
        <reference anchor="RFC6241">
          <front>
            <title>Network Configuration Protocol (NETCONF)</title>
            <author fullname="R. Enns" initials="R." role="editor" surname="Enns"/>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder"/>
            <author fullname="A. Bierman" initials="A." role="editor" surname="Bierman"/>
            <date month="June" year="2011"/>
            <abstract>
              <t>The Network Configuration Protocol (NETCONF) defined in this document provides mechanisms to install, manipulate, and delete the configuration of network devices. It uses an Extensible Markup Language (XML)-based data encoding for the configuration data as well as the protocol messages. The NETCONF protocol operations are realized as remote procedure calls (RPCs). This document obsoletes RFC 4741. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6241"/>
          <seriesInfo name="DOI" value="10.17487/RFC6241"/>
        </reference>
        <reference anchor="RFC8040">
          <front>
            <title>RESTCONF Protocol</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document describes an HTTP-based protocol that provides a programmatic interface for accessing data defined in YANG, using the datastore concepts defined in the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8040"/>
          <seriesInfo name="DOI" value="10.17487/RFC8040"/>
        </reference>
        <reference anchor="RFC4252">
          <front>
            <title>The Secure Shell (SSH) Authentication Protocol</title>
            <author fullname="T. Ylonen" initials="T." surname="Ylonen"/>
            <author fullname="C. Lonvick" initials="C." role="editor" surname="Lonvick"/>
            <date month="January" year="2006"/>
            <abstract>
              <t>The Secure Shell Protocol (SSH) is a protocol for secure remote login and other secure network services over an insecure network. This document describes the SSH authentication protocol framework and public key, password, and host-based client authentication methods. Additional authentication methods are described in separate documents. The SSH authentication protocol runs on top of the SSH transport layer protocol and provides a single authenticated tunnel for the SSH connection protocol. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4252"/>
          <seriesInfo name="DOI" value="10.17487/RFC4252"/>
        </reference>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC9000">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="RFC8695">
          <front>
            <title>A YANG Data Model for the Routing Information Protocol (RIP)</title>
            <author fullname="X. Liu" initials="X." surname="Liu"/>
            <author fullname="P. Sarda" initials="P." surname="Sarda"/>
            <author fullname="V. Choudhary" initials="V." surname="Choudhary"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>This document describes a data model for the management of the Routing Information Protocol (RIP). Both RIP version 2 and RIPng are covered. The data model includes definitions for configuration, operational state, and Remote Procedure Calls (RPCs).</t>
              <t>The YANG data model in this document conforms to the Network Management Datastore Architecture (NMDA).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8695"/>
          <seriesInfo name="DOI" value="10.17487/RFC8695"/>
        </reference>
      </references>
    </references>
    <?line 2312?>

<section anchor="AC-Common-Tree">
      <name>Full Tree</name>
      <artwork><![CDATA[
module: ietf-ac-common

  grouping service-status:
    +-- status
       +-- admin-status
       |  +-- status?        identityref
       |  +--ro last-change?   yang:date-and-time
       +--ro oper-status
          +--ro status?        identityref
          +--ro last-change?   yang:date-and-time
  grouping ac-profile-cfg:
    +-- valid-provider-identifiers
       +-- encryption-profile-identifier* [id]
       |  +-- id   string
       +-- qos-profile-identifier* [id]
       |  +-- id   string
       +-- failure-detection-profile-identifier* [id]
       |  +-- id   string
       +-- forwarding-profile-identifier* [id]
       |  +-- id   string
       +-- routing-profile-identifier* [id]
          +-- id   string
  grouping op-instructions:
    +-- requested-start?   yang:date-and-time
    +-- requested-stop?    yang:date-and-time
    +--ro actual-start?      yang:date-and-time
    +--ro actual-stop?       yang:date-and-time
  grouping dot1q:
    +-- tag-type?   identityref
    +-- cvlan-id?   uint16
  grouping priority-tagged:
    +-- tag-type?   identityref
  grouping qinq:
    +-- tag-type?   identityref
    +-- svlan-id    uint16
    +-- cvlan-id    uint16
  grouping pseudowire:
    +-- vcid?      uint32
    +-- far-end?   union
  grouping vpls:
    +-- vcid?      uint32
    +-- far-end*   union
  grouping vxlan:
    +-- vni-id             uint32
    +-- peer-mode?         identityref
    +-- peer-ip-address*   inet:ip-address
  grouping l2-tunnel-service:
    +-- type?         identityref
    +-- pseudowire
    |  +-- vcid?      uint32
    |  +-- far-end?   union
    +-- vpls
    |  +-- vcid?      uint32
    |  +-- far-end*   union
    +-- vxlan
       +-- vni-id             uint32
       +-- peer-mode?         identityref
       +-- peer-ip-address*   inet:ip-address
  grouping ipv4-allocation-type:
    +-- prefix-length?             uint8
    +-- address-allocation-type?   identityref
  grouping ipv6-allocation-type:
    +-- prefix-length?             uint8
    +-- address-allocation-type?   identityref
  grouping ipv4-connection-basic:
    +-- prefix-length?                       uint8
    +-- address-allocation-type?             identityref
    +-- (allocation-type)?
       +--:(dynamic)
          +-- (provider-dhcp)?
          |  +--:(dhcp-service-type)
          |     +-- dhcp-service-type?       enumeration
          +-- (dhcp-relay)?
             +--:(customer-dhcp-servers)
                +-- customer-dhcp-servers
                   +-- server-ip-address*   inet:ipv4-address
  grouping ipv6-connection-basic:
    +-- prefix-length?                       uint8
    +-- address-allocation-type?             identityref
    +-- (allocation-type)?
       +--:(dynamic)
          +-- (provider-dhcp)?
          |  +--:(dhcp-service-type)
          |     +-- dhcp-service-type?       enumeration
          +-- (dhcp-relay)?
             +--:(customer-dhcp-servers)
                +-- customer-dhcp-servers
                   +-- server-ip-address*   inet:ipv6-address
  grouping ipv4-connection:
    +-- local-address?                           inet:ipv4-address
    +-- virtual-address?                         inet:ipv4-address
    +-- prefix-length?                           uint8
    +-- address-allocation-type?                 identityref
    +-- (allocation-type)?
       +--:(dynamic)
       |  +-- (address-assign)?
       |  |  +--:(number)
       |  |  |  +-- number-of-dynamic-address?   uint16
       |  |  +--:(explicit)
       |  |     +-- customer-addresses
       |  |        +-- address-pool* [pool-id]
       |  |           +-- pool-id          string
       |  |           +-- start-address    inet:ipv4-address
       |  |           +-- end-address?     inet:ipv4-address
       |  +-- (provider-dhcp)?
       |  |  +--:(dhcp-service-type)
       |  |     +-- dhcp-service-type?           enumeration
       |  +-- (dhcp-relay)?
       |     +--:(customer-dhcp-servers)
       |        +-- customer-dhcp-servers
       |           +-- server-ip-address*   inet:ipv4-address
       +--:(static-addresses)
          +-- address* [address-id]
             +-- address-id          string
             +-- customer-address?   inet:ipv4-address
  grouping ipv6-connection:
    +-- local-address?                           inet:ipv6-address
    +-- virtual-address?                         inet:ipv6-address
    +-- prefix-length?                           uint8
    +-- address-allocation-type?                 identityref
    +-- (allocation-type)?
       +--:(dynamic)
       |  +-- (address-assign)?
       |  |  +--:(number)
       |  |  |  +-- number-of-dynamic-address?   uint16
       |  |  +--:(explicit)
       |  |     +-- customer-addresses
       |  |        +-- address-pool* [pool-id]
       |  |           +-- pool-id          string
       |  |           +-- start-address    inet:ipv6-address
       |  |           +-- end-address?     inet:ipv6-address
       |  +-- (provider-dhcp)?
       |  |  +--:(dhcp-service-type)
       |  |     +-- dhcp-service-type?           enumeration
       |  +-- (dhcp-relay)?
       |     +--:(customer-dhcp-servers)
       |        +-- customer-dhcp-servers
       |           +-- server-ip-address*   inet:ipv6-address
       +--:(static-addresses)
          +-- address* [address-id]
             +-- address-id          string
             +-- customer-address?   inet:ipv6-address
  grouping bgp-authentication:
    +-- authentication
       +-- enabled?           boolean
       +-- keying-material
          +-- (option)?
             +--:(ao)
             |  +-- enable-ao?          boolean
             |  +-- ao-keychain?        key-chain:key-chain-ref
             +--:(md5)
             |  +-- md5-keychain?       key-chain:key-chain-ref
             +--:(explicit)
                +-- key-id?             uint32
                +-- key?                string
                +-- crypto-algorithm?   identityref
  grouping ospf-authentication:
    +-- authentication
       +-- enabled?           boolean
       +-- keying-material
          +-- (option)?
             +--:(auth-key-chain)
             |  +-- key-chain?          key-chain:key-chain-ref
             +--:(auth-key-explicit)
                +-- key-id?             uint32
                +-- key?                string
                +-- crypto-algorithm?   identityref
  grouping isis-authentication:
    +-- authentication
       +-- enabled?           boolean
       +-- keying-material
          +-- (option)?
             +--:(auth-key-chain)
             |  +-- key-chain?          key-chain:key-chain-ref
             +--:(auth-key-explicit)
                +-- key-id?             uint32
                +-- key?                string
                +-- crypto-algorithm?   identityref
  grouping rip-authentication:
    +-- authentication
       +-- enabled?           boolean
       +-- keying-material
          +-- (option)?
             +--:(auth-key-chain)
             |  +-- key-chain?          key-chain:key-chain-ref
             +--:(auth-key-explicit)
                +-- key?                string
                +-- crypto-algorithm?   identityref
  grouping bgp-peer-group-without-name:
    +-- local-as?         inet:as-number
    +-- peer-as?          inet:as-number
    +-- address-family?   identityref
    +-- role?             identityref
  grouping bgp-peer-group-with-name:
    +-- name?             string
    +-- local-as?         inet:as-number
    +-- peer-as?          inet:as-number
    +-- address-family?   identityref
    +-- role?             identityref
  grouping ospf-basic:
    +-- address-family?   identityref
    +-- area-id           yang:dotted-quad
    +-- metric?           uint16
  grouping isis-basic:
    +-- address-family?   identityref
    +-- area-address      area-address
  grouping ipv4-static-rtg-entry:
    +-- lan?        inet:ipv4-prefix
    +-- lan-tag?    string
    +-- next-hop?   union
    +-- metric?     uint32
  grouping ipv4-static-rtg:
    +-- ipv4-lan-prefixes* [lan next-hop] {vpn-common:ipv4}?
       +-- lan         inet:ipv4-prefix
       +-- lan-tag?    string
       +-- next-hop    union
       +-- metric?     uint32
       +-- status
          +-- admin-status
          |  +-- status?        identityref
          |  +--ro last-change?   yang:date-and-time
          +--ro oper-status
             +--ro status?        identityref
             +--ro last-change?   yang:date-and-time
  grouping ipv6-static-rtg-entry:
    +-- lan?        inet:ipv6-prefix
    +-- lan-tag?    string
    +-- next-hop?   union
    +-- metric?     uint32
  grouping ipv6-static-rtg:
    +-- ipv6-lan-prefixes* [lan next-hop] {vpn-common:ipv6}?
       +-- lan         inet:ipv6-prefix
       +-- lan-tag?    string
       +-- next-hop    union
       +-- metric?     uint32
       +-- status
          +-- admin-status
          |  +-- status?        identityref
          |  +--ro last-change?   yang:date-and-time
          +--ro oper-status
             +--ro status?        identityref
             +--ro last-change?   yang:date-and-time
  grouping bfd:
    +-- holdtime?   uint32
  grouping redundancy-group:
    +-- group* [group-id]
       +-- group-id      string
       +-- precedence?   identityref
  grouping bandwidth-parameters:
    +-- cir?   uint64
    +-- cbs?   uint64
    +-- eir?   uint64
    +-- ebs?   uint64
    +-- pir?   uint64
    +-- pbs?   uint64
  grouping bandwidth-per-type:
    +-- bandwidth* [bw-type]
       +-- bw-type      identityref
       +-- (type)?
          +--:(per-cos)
          |  +-- cos* [cos-id]
          |     +-- cos-id    uint8
          |     +-- cir?      uint64
          |     +-- cbs?      uint64
          |     +-- eir?      uint64
          |     +-- ebs?      uint64
          |     +-- pir?      uint64
          |     +-- pbs?      uint64
          +--:(other)
             +-- cir?   uint64
             +-- cbs?   uint64
             +-- eir?   uint64
             +-- ebs?   uint64
             +-- pir?   uint64
             +-- pbs?   uint64
]]></artwork>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The document reuses many of the structures that were defined
in <xref target="RFC9181"/> and <xref target="RFC9182"/>.</t>
      <t>Thanks to Ebben Aries for the YANG Doctors review, Andy Smith and Gyanh Mishra for the
rtg-dir reviews, Watson Ladd for the sec-dir review, and Behcet Sarikaya for the genart review.</t>
      <t>Thanks to Reza Rokui for the Shepherd review.</t>
      <t>Thanks to Mahesh Jethanandani for the AD review.</t>
    </section>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>
      <contact initials="V." surname="Lopez" fullname="Victor Lopez">
        <organization>Nokia</organization>
        <address>
          <email>victor.lopez@nokia.com</email>
        </address>
      </contact>
      <contact initials="I." surname="Bykov" fullname="Ivan Bykov">
        <organization>Ribbon Communications</organization>
        <address>
          <email>Ivan.Bykov@rbbn.com</email>
        </address>
      </contact>
      <contact initials="Q." surname="Wu" fullname="Qin Wu">
        <organization>Huawei</organization>
        <address>
          <email>bill.wu@huawei.com</email>
        </address>
      </contact>
      <contact initials="K." surname="Ogaki" fullname="Kenichi Ogaki">
        <organization>KDDI</organization>
        <address>
          <email>ke-oogaki@kddi.com</email>
        </address>
      </contact>
      <contact initials="L. A." surname="Munoz" fullname="Luis Angel Munoz">
        <organization>Vodafone</organization>
        <address>
          <email>luis-angel.munoz@vodafone.com</email>
        </address>
      </contact>
    </section>
  </back>
  <!-- ##markdown-source:
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
g8/7yKv5bRPYnOqfAX/fClibreH1FCuN7Ahf6nB2Hb3d0bzXzEtCM9uGFW9z
wPaTRwPu5lMPb7iU9HtgVe9L9XVt8wbKvgln4hCsvqDqBQ8XB3Fv3BqeksHZ
1qNe7+Dh04OtjUbFJ8st4V5fjAfVR0wcild+a6b9mWwoqf3lkFjNEh/OcaaG
7680z0cX28J+1h3FL2diKobw6XhHBUeIh3ZGwU+UBeBnpk/PyYcqoivQOWxF
xyNoqk8YWZLGyiTZOfu56+6AapZJG7NYje30iAb2wdde6oTa39tQQIfs7Gc8
85A1fc21hJ8O16ySfEmmMnZqjiUbEFIM7j7+stHqnfJ4Nh9nufVYq1726lGI
ui/0EO8LWYk6I16ulvK6D0rzlDz8H/X95ZfhmNfuluDnyL7RcCYtSLbz8uis
a45D+r1HHrGBeTkOP1jJP76EGmj+yZb+p8PWZQ2kE/oFra1DSUwicklpZS35
aEnPeW1CTHru6ObkJPg6c8C4VTs/6dQBZ9voF5NuI+9psoEGsZkAltl8whgT
+Mos/gVd5HlOD3Wib7MrLwLhM+zwk9kF9ls6Iq8Yf99uYp/KW0+VmfqZw4u7
cjTFudB2YeWyGgvM5g8lp984ctphmNq7XZvYgtW8RcNPri6/iR73pdetVabq
/NubcUgjVlLXFEQTZK0pIyas8a2I5+CkRQFWQQiyPMCbQju93gMEi2WF1YXe
gYGw3d1af57xGqOq4XJJhT214V95t0+Sywm1b1sDGUnfSqGba1EZOjft/VSz
RPaN6YV9Pz6l2DbB3ZAwGygVfYiQFA00sGTtzYmAnT8JFQjwpmTYQB8oOiDc
Fmtw334Ey726hG9wuZeJHBHkewerxTA8w2pXqhJyg/pyHlSoa7Endbv5Ya+3
v7ehDb8ag9BW2d9yDP5uSXKYShmM47LosRORKUUrhzEUs6hUydsc/OvECq8w
VxGK1ptd6+Vr610JM+MFXoLdSrNyx8vK8snyna7DzOJFuS7bMlP8hm2B5F0H
w+1gy9T6/aftrrNbeJ4DwIVIwYFFoTsrsTy0IqJP6Cwd75ueXfQ33BBKx2Gt
a8G4+koAZkuZKyLyAgwqYjMHZyNlWMfXp5XpJsyaDVF7n611Q/Q/zYZ4tPfk
fkdsxCf9T8En1RrdZMsQU1qSti5Jq++uNXOOGEBe7mZNgtW66KMAK2xJMfjE
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
q3DOizn7D463K7EsWWr6DY90j/8PDCMp43hPAQA=

-->

</rfc>
