<?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.4 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-opsawg-ntw-attachment-circuit-04" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.2 -->
  <front>
    <title abbrev="A YANG Network Model for ACs">A Network YANG Data Model for Attachment Circuits</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-opsawg-ntw-attachment-circuit-04"/>
    <author fullname="Mohamed Boucadair" role="editor">
      <organization>Orange</organization>
      <address>
        <email>mohamed.boucadair@orange.com</email>
      </address>
    </author>
    <author fullname="Richard Roberts">
      <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="2023" month="December" day="14"/>
    <area>Operations and Management</area>
    <workgroup>Operations and Management Area Working Group</workgroup>
    <keyword>Slice Service</keyword>
    <keyword>L3VPN</keyword>
    <keyword>L2VPN</keyword>
    <abstract>
      <?line 93?>

<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., Network Slice Service). A companion service model is specified in I-D.ietf-opsawg-teas-attachment-circuit.</t>
      <t>The module augments the Service Attachment Point (SAP) model with the detailed information for the provisioning of attachment circuits in Provider Edges (PEs).</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 99?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Connectivity services are provided by networks to customers via
   dedicated terminating points, such as Service Functions <xref target="RFC7665"/>,
   customer edges (CEs), peer Autonomous System Border Routers (ASBRs),
   data centers gateways, or Internet Exchange Points.</t>
      <t>The procedure to provision a service in a service provider network may depend on the practices adopted by a service provider, including the flow put in place for the provisioning of advanced network services and how they are bound to an Attachment Circuit (AC). For example, the same attachment circuit may host multiple services (e.g., Layer 2 Virtual Private Network (VPN), Slice Service, or Layer 3 VPN). In order to avoid service interference and redundant information in various locations, a service provider may expose an interface to manage ACs network-wide. Customers can then request a standalone attachment circuit to be put in place, and then refer to that attachment circuit when requesting services to be bound to that AC. <xref target="I-D.ietf-opsawg-teas-attachment-circuit"/> specifies a data model for managing attachment circuits as a service.</t>
      <t><xref target="sec-module"/> specifies a network model for attachment circuits ("ietf-ac-ntw"). The model can be used for the provisioning of ACs prior or during service provisioning.</t>
      <t>The document leverages <xref target="RFC9182"/> and <xref target="RFC9291"/> by adopting an AC provisioning structure that uses data nodes that are defined in these RFCs. Some refinements were introduced to cover, not only conventional service provider networks, but also specifics of other target deployments (cloud, for example).</t>
      <t>The AC network model is designed as an augmnetation to the Service Attachment Point (SAP) model <xref target="RFC9408"/>. An attachment circuit can be bound to a single or multiple SAPs. Likewise, the model is designed to accomdate deployments where a SAP can be bound to one or multiple ACs (e.g., a parent AC and its child ACs).</t>
      <figure anchor="sap-ac-ntw">
        <name>Attachment Circuits Examples</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="464" width="536" viewBox="0 0 536 464" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,208 L 8,240" fill="none" stroke="black"/>
              <path d="M 40,208 L 40,240" fill="none" stroke="black"/>
              <path d="M 64,208 L 64,240" fill="none" stroke="black"/>
              <path d="M 80,176 L 80,208" fill="none" stroke="black"/>
              <path d="M 80,240 L 80,256" fill="none" stroke="black"/>
              <path d="M 80,288 L 80,368" fill="none" stroke="black"/>
              <path d="M 96,160 L 96,240" fill="none" stroke="black"/>
              <path d="M 112,112 L 112,160" fill="none" stroke="black"/>
              <path d="M 128,160 L 128,192" fill="none" stroke="black"/>
              <path d="M 152,32 L 152,64" fill="none" stroke="black"/>
              <path d="M 168,64 L 168,112" fill="none" stroke="black"/>
              <path d="M 184,32 L 184,64" fill="none" stroke="black"/>
              <path d="M 192,160 L 192,192" fill="none" stroke="black"/>
              <path d="M 192,352 L 192,384" fill="none" stroke="black"/>
              <path d="M 192,416 L 192,448" fill="none" stroke="black"/>
              <path d="M 208,384 L 208,416" fill="none" stroke="black"/>
              <path d="M 216,112 L 216,152" fill="none" stroke="black"/>
              <path d="M 224,160 L 224,192" fill="none" stroke="black"/>
              <path d="M 224,352 L 224,384" fill="none" stroke="black"/>
              <path d="M 224,416 L 224,448" fill="none" stroke="black"/>
              <path d="M 240,80 L 240,112" fill="none" stroke="black"/>
              <path d="M 240,176 L 240,256" fill="none" stroke="black"/>
              <path d="M 240,288 L 240,368" fill="none" stroke="black"/>
              <path d="M 272,80 L 272,112" fill="none" stroke="black"/>
              <path d="M 296,176 L 296,256" fill="none" stroke="black"/>
              <path d="M 296,288 L 296,368" fill="none" stroke="black"/>
              <path d="M 312,160 L 312,192" fill="none" stroke="black"/>
              <path d="M 312,352 L 312,384" fill="none" stroke="black"/>
              <path d="M 328,96 L 328,160" fill="none" stroke="black"/>
              <path d="M 328,384 L 328,432" fill="none" stroke="black"/>
              <path d="M 344,160 L 344,192" fill="none" stroke="black"/>
              <path d="M 344,352 L 344,384" fill="none" stroke="black"/>
              <path d="M 360,352 L 360,384" fill="none" stroke="black"/>
              <path d="M 360,416 L 360,448" fill="none" stroke="black"/>
              <path d="M 376,384 L 376,416" fill="none" stroke="black"/>
              <path d="M 384,80 L 384,112" fill="none" stroke="black"/>
              <path d="M 392,352 L 392,384" fill="none" stroke="black"/>
              <path d="M 392,416 L 392,448" fill="none" stroke="black"/>
              <path d="M 408,352 L 408,384" fill="none" stroke="black"/>
              <path d="M 416,80 L 416,112" fill="none" stroke="black"/>
              <path d="M 424,384 L 424,432" fill="none" stroke="black"/>
              <path d="M 440,304 L 440,384" fill="none" stroke="black"/>
              <path d="M 456,176 L 456,256" fill="none" stroke="black"/>
              <path d="M 456,288 L 456,304" fill="none" stroke="black"/>
              <path d="M 456,344 L 456,368" fill="none" stroke="black"/>
              <path d="M 472,304 L 472,336" fill="none" stroke="black"/>
              <path d="M 496,304 L 496,336" fill="none" stroke="black"/>
              <path d="M 528,304 L 528,336" fill="none" stroke="black"/>
              <path d="M 152,32 L 184,32" fill="none" stroke="black"/>
              <path d="M 152,64 L 184,64" fill="none" stroke="black"/>
              <path d="M 240,80 L 272,80" fill="none" stroke="black"/>
              <path d="M 384,80 L 416,80" fill="none" stroke="black"/>
              <path d="M 272,96 L 384,96" fill="none" stroke="black"/>
              <path d="M 112,112 L 216,112" fill="none" stroke="black"/>
              <path d="M 240,112 L 272,112" fill="none" stroke="black"/>
              <path d="M 384,112 L 416,112" fill="none" stroke="black"/>
              <path d="M 96,160 L 128,160" fill="none" stroke="black"/>
              <path d="M 192,160 L 224,160" fill="none" stroke="black"/>
              <path d="M 312,160 L 344,160" fill="none" stroke="black"/>
              <path d="M 80,176 L 96,176" fill="none" stroke="black"/>
              <path d="M 128,176 L 192,176" fill="none" stroke="black"/>
              <path d="M 224,176 L 240,176" fill="none" stroke="black"/>
              <path d="M 296,176 L 312,176" fill="none" stroke="black"/>
              <path d="M 344,176 L 456,176" fill="none" stroke="black"/>
              <path d="M 96,192 L 128,192" fill="none" stroke="black"/>
              <path d="M 192,192 L 224,192" fill="none" stroke="black"/>
              <path d="M 312,192 L 344,192" fill="none" stroke="black"/>
              <path d="M 8,208 L 40,208" fill="none" stroke="black"/>
              <path d="M 64,208 L 96,208" fill="none" stroke="black"/>
              <path d="M 40,224 L 64,224" fill="none" stroke="black"/>
              <path d="M 8,240 L 40,240" fill="none" stroke="black"/>
              <path d="M 64,240 L 96,240" fill="none" stroke="black"/>
              <path d="M 80,256 L 240,256" fill="none" stroke="black"/>
              <path d="M 296,256 L 456,256" fill="none" stroke="black"/>
              <path d="M 80,288 L 240,288" fill="none" stroke="black"/>
              <path d="M 296,288 L 456,288" fill="none" stroke="black"/>
              <path d="M 440,304 L 472,304" fill="none" stroke="black"/>
              <path d="M 496,304 L 528,304" fill="none" stroke="black"/>
              <path d="M 472,320 L 496,320" fill="none" stroke="black"/>
              <path d="M 440,336 L 472,336" fill="none" stroke="black"/>
              <path d="M 496,336 L 528,336" fill="none" stroke="black"/>
              <path d="M 192,352 L 224,352" fill="none" stroke="black"/>
              <path d="M 312,352 L 344,352" fill="none" stroke="black"/>
              <path d="M 360,352 L 392,352" fill="none" stroke="black"/>
              <path d="M 408,352 L 440,352" fill="none" stroke="black"/>
              <path d="M 80,368 L 192,368" fill="none" stroke="black"/>
              <path d="M 224,368 L 240,368" fill="none" stroke="black"/>
              <path d="M 296,368 L 312,368" fill="none" stroke="black"/>
              <path d="M 344,368 L 360,368" fill="none" stroke="black"/>
              <path d="M 392,368 L 408,368" fill="none" stroke="black"/>
              <path d="M 440,368 L 456,368" fill="none" stroke="black"/>
              <path d="M 192,384 L 224,384" fill="none" stroke="black"/>
              <path d="M 312,384 L 344,384" fill="none" stroke="black"/>
              <path d="M 360,384 L 392,384" fill="none" stroke="black"/>
              <path d="M 408,384 L 440,384" fill="none" stroke="black"/>
              <path d="M 192,416 L 224,416" fill="none" stroke="black"/>
              <path d="M 360,416 L 392,416" fill="none" stroke="black"/>
              <path d="M 224,432 L 264,432" fill="none" stroke="black"/>
              <path d="M 288,432 L 328,432" fill="none" stroke="black"/>
              <path d="M 392,432 L 424,432" fill="none" stroke="black"/>
              <path d="M 192,448 L 224,448" fill="none" stroke="black"/>
              <path d="M 360,448 L 392,448" fill="none" stroke="black"/>
              <path d="M 200,160 C 208.83064,160 216,152.83064 216,144" fill="none" stroke="black"/>
              <g class="text">
                <text x="168" y="52">CE6</text>
                <text x="148" y="84">ac</text>
                <text x="256" y="100">CE5</text>
                <text x="400" y="100">CE2</text>
                <text x="340" y="132">ac</text>
                <text x="112" y="180">sap</text>
                <text x="208" y="180">sap</text>
                <text x="328" y="180">sap</text>
                <text x="24" y="228">CE1</text>
                <text x="80" y="228">sap</text>
                <text x="160" y="228">PE1</text>
                <text x="384" y="228">PE2</text>
                <text x="52" y="244">ac</text>
                <text x="484" y="308">ac</text>
                <text x="168" y="324">PE3</text>
                <text x="376" y="324">PE4</text>
                <text x="456" y="324">sap</text>
                <text x="512" y="324">CE5</text>
                <text x="208" y="372">sap</text>
                <text x="328" y="372">sap</text>
                <text x="376" y="372">sap</text>
                <text x="424" y="372">sap</text>
                <text x="220" y="404">ac</text>
                <text x="388" y="404">ac</text>
                <text x="436" y="404">ac</text>
                <text x="208" y="436">CE3</text>
                <text x="276" y="436">ac</text>
                <text x="376" y="436">CE4</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
                  .---.
                  |CE6|
                  '-+-'
                 ac |        .---.             .---.
                    |        |CE5+------+------+CE2|
             .------+-----.  '---'      |      '---'
             |            |             |ac
             |            |             |
           .-+-.       .-+-.          .-+-.
         .-+sap+-------+sap+-.      .-+sap+-------------.
         | '---'       '---' |      | '---'             |
.---.  .-+-.                 |      |                   |
|CE1+--+sap|      PE1        |      |         PE2       |
'---'ac'-+-'                 |      |                   |
         '-------------------'      '-------------------'

         .-------------------.      .-------------------.
         |                   |      |                 .-+-.ac.---.
         |         PE3       |      |        PE4      |sap+--+CE5|
         |                   |      |                 '---'  '---'
         |             .---. |      | .---. .---. .---. |
         '-------------+sap+-'      '-+sap+-+sap+-+sap+-'
                       '-+-'          '-+-' '-+-' '-+-'
                         |ac            |     |ac   |ac
                       .-+-.            |   .-+-.   |
                       |CE3+-----ac-----'   |CE4+---'
                       '---'                '---'
]]></artwork>
        </artset>
      </figure>
      <t>The AC network model uses the AC common model defined in <xref target="I-D.ietf-opsawg-teas-common-ac"/>.</t>
      <t>The YANG data model in this document conforms to the Network Management Datastore Architecture (NMDA) defined in <xref target="RFC8342"/>.</t>
      <t>Sample examples are provided in <xref target="sec-examples"/>.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>The reader should be familiar with the terms defined in <xref section="2" sectionFormat="of" target="RFC9408"/>.</t>
      <t>This document uses the term "network model" as defined in <xref section="2.1" sectionFormat="of" target="RFC8969"/>.</t>
      <t>The meanings of the symbols in the YANG tree diagrams are defined in <xref target="RFC8340"/>.</t>
      <t>In addition, this document uses the following terms:</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>
        <dt>Network controller:</dt>
        <dd>
          <t>Denotes a functional entity responsible for the management of the service provider network. One or multiple network controllers can be deployed in a service provider network.</t>
        </dd>
        <dt>Service orchestrator:</dt>
        <dd>
          <t>Refers to a functional entity that interacts with the customer of a network service.</t>
        </dd>
        <dt/>
        <dd>
          <t>A service orchestrator is typically responsible for the attachment circuits, the Provider Edge (PE) selection, and requesting the activation of the requested services to a network controller.</t>
        </dd>
        <dt/>
        <dd>
          <t>A service orchestrator may interact with one or more network controllers.</t>
        </dd>
        <dt>Service provider network:</dt>
        <dd>
          <t>A network that is able to provide network services (e.g., L2VPN, L3VPN, or Network Slice Services).</t>
        </dd>
        <dt>Service provider:</dt>
        <dd>
          <t>A service provider that offers network services (e.g., L2VPN, L3VPN, or Network Slice Services).</t>
        </dd>
      </dl>
    </section>
    <section anchor="sample-uses-of-the-attachment-circuit-data-models">
      <name>Sample Uses of the Attachment Circuit Data Models</name>
      <t><xref target="_u-ex"/> shows the positioning of the AC network model in the overall service delivery process. The "ietf-ac-ntw" module is a network model which augments the SAP with a comprehensive set of parameters to reflect the attachment circuits that are in place in a network. The model also maintains the mapping with the service references that are used to expose these ACs to customers. Whether the same naming conventions to reference an AC are used in the service and network layers is deployment-specific.</t>
      <figure anchor="_u-ex">
        <name>An Example of the Network AC Model Usage</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="656" width="512" viewBox="0 0 512 656" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,560 L 8,592" fill="none" stroke="black"/>
              <path d="M 48,560 L 48,592" fill="none" stroke="black"/>
              <path d="M 96,432 L 96,480" fill="none" stroke="black"/>
              <path d="M 104,320 L 104,368" fill="none" stroke="black"/>
              <path d="M 120,544 L 120,608" fill="none" stroke="black"/>
              <path d="M 136,368 L 136,432" fill="none" stroke="black"/>
              <path d="M 136,480 L 136,536" fill="none" stroke="black"/>
              <path d="M 176,288 L 176,320" fill="none" stroke="black"/>
              <path d="M 176,432 L 176,480" fill="none" stroke="black"/>
              <path d="M 208,32 L 208,64" fill="none" stroke="black"/>
              <path d="M 208,112 L 208,160" fill="none" stroke="black"/>
              <path d="M 208,208 L 208,256" fill="none" stroke="black"/>
              <path d="M 208,376 L 208,496" fill="none" stroke="black"/>
              <path d="M 232,320 L 232,368" fill="none" stroke="black"/>
              <path d="M 272,64 L 272,112" fill="none" stroke="black"/>
              <path d="M 272,160 L 272,208" fill="none" stroke="black"/>
              <path d="M 272,256 L 272,288" fill="none" stroke="black"/>
              <path d="M 296,320 L 296,368" fill="none" stroke="black"/>
              <path d="M 336,32 L 336,64" fill="none" stroke="black"/>
              <path d="M 336,112 L 336,160" fill="none" stroke="black"/>
              <path d="M 336,208 L 336,256" fill="none" stroke="black"/>
              <path d="M 368,288 L 368,320" fill="none" stroke="black"/>
              <path d="M 368,368 L 368,536" fill="none" stroke="black"/>
              <path d="M 384,544 L 384,608" fill="none" stroke="black"/>
              <path d="M 424,320 L 424,368" fill="none" stroke="black"/>
              <path d="M 456,560 L 456,592" fill="none" stroke="black"/>
              <path d="M 496,560 L 496,592" fill="none" stroke="black"/>
              <path d="M 208,32 L 336,32" fill="none" stroke="black"/>
              <path d="M 208,64 L 336,64" fill="none" stroke="black"/>
              <path d="M 208,112 L 336,112" fill="none" stroke="black"/>
              <path d="M 208,160 L 336,160" fill="none" stroke="black"/>
              <path d="M 208,208 L 336,208" fill="none" stroke="black"/>
              <path d="M 208,256 L 336,256" fill="none" stroke="black"/>
              <path d="M 176,288 L 368,288" fill="none" stroke="black"/>
              <path d="M 104,320 L 232,320" fill="none" stroke="black"/>
              <path d="M 296,320 L 424,320" fill="none" stroke="black"/>
              <path d="M 104,368 L 232,368" fill="none" stroke="black"/>
              <path d="M 296,368 L 424,368" fill="none" stroke="black"/>
              <path d="M 96,432 L 176,432" fill="none" stroke="black"/>
              <path d="M 96,480 L 176,480" fill="none" stroke="black"/>
              <path d="M 120,544 L 384,544" fill="none" stroke="black"/>
              <path d="M 8,560 L 48,560" fill="none" stroke="black"/>
              <path d="M 456,560 L 496,560" fill="none" stroke="black"/>
              <path d="M 48,576 L 120,576" fill="none" stroke="black"/>
              <path d="M 384,576 L 456,576" fill="none" stroke="black"/>
              <path d="M 8,592 L 48,592" fill="none" stroke="black"/>
              <path d="M 456,592 L 496,592" fill="none" stroke="black"/>
              <path d="M 120,608 L 384,608" fill="none" stroke="black"/>
              <g class="text">
                <text x="268" y="52">Customer</text>
                <text x="108" y="84">Customer</text>
                <text x="176" y="84">Service</text>
                <text x="232" y="84">Model</text>
                <text x="96" y="100">e.g.,</text>
                <text x="164" y="100">slice-svc,</text>
                <text x="240" y="100">ac-svc,</text>
                <text x="296" y="100">and</text>
                <text x="356" y="100">bearer-svc</text>
                <text x="272" y="132">Service</text>
                <text x="272" y="148">Orchestration</text>
                <text x="112" y="180">Network</text>
                <text x="168" y="180">Model</text>
                <text x="32" y="196">e.g.,</text>
                <text x="100" y="196">l3vpn-ntw,</text>
                <text x="164" y="196">sap,</text>
                <text x="200" y="196">and</text>
                <text x="244" y="196">ac-ntw</text>
                <text x="264" y="228">Network</text>
                <text x="272" y="244">Orchestration</text>
                <text x="56" y="276">Network</text>
                <text x="144" y="276">Configuration</text>
                <text x="224" y="276">Model</text>
                <text x="164" y="340">Domain</text>
                <text x="364" y="340">Domain</text>
                <text x="168" y="356">Orchestration</text>
                <text x="360" y="356">Orchestration</text>
                <text x="36" y="388">Device</text>
                <text x="64" y="404">Configuration</text>
                <text x="32" y="420">Model</text>
                <text x="132" y="452">Config</text>
                <text x="136" y="468">Manager</text>
                <text x="256" y="516">NETCONF/CLI................</text>
                <text x="376" y="516">.</text>
                <text x="208" y="532">|</text>
                <text x="84" y="564">Bearer</text>
                <text x="420" y="564">Bearer</text>
                <text x="28" y="580">CE#1</text>
                <text x="248" y="580">Network</text>
                <text x="476" y="580">CE#2</text>
                <text x="28" y="628">Site</text>
                <text x="56" y="628">A</text>
                <text x="476" y="628">Site</text>
                <text x="504" y="628">B</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
                          .---------------.
                          |   Customer    |
                          '-------+-------'
          Customer Service Model  |
          e.g., slice-svc, ac-svc,| and bearer-svc
                          .-------+-------.
                          |    Service    |
                          | Orchestration |
                          '-------+-------'
           Network Model          |
  e.g., l3vpn-ntw, sap, and ac-ntw|
                          .-------+-------.
                          |   Network     |
                          | Orchestration |
                          '-------+-------'
    Network Configuration Model   |
                      .-----------+-----------.
                      |                       |
             .--------+------.       .--------+------.
             |    Domain     |       |     Domain    |
             | Orchestration |       | Orchestration |
             '---+-----------'       '--------+------'
  Device         |        |                   |
  Configuration  |        |                   |
  Model          |        |                   |
            .----+----.   |                   |
            | Config  |   |                   |
            | Manager |   |                   |
            '----+----'   |                   |
                 |        |                   |
                 | NETCONF/CLI..................
                 |        |                   |
               .--------------------------------.
 .----. Bearer |                                | Bearer .----.
 |CE#1+--------+            Network             +--------+CE#2|
 '----'        |                                |        '----'
               '--------------------------------'
  Site A                                                  Site B
]]></artwork>
        </artset>
      </figure>
      <t>Similar to <xref target="RFC9408"/>, the "ietf-ac-ntw" module can be used for both User-to-Network Interface (UNI) and
Network-to-Network Interface (NNI). For example, all the ACs shown in <xref target="fig-inter-pn"/> have a 'role' set
to "ietf-sap-ntw:nni". Typically, AS Border Routers (ASBRs) of each network is directly
connected to an ASBR of a neighboring network via one or multiple links (bearers). ASBRs of "Network#1" behaves as a PE and treats the other adjacent ASBRs as if it were a CE.</t>
      <figure anchor="fig-inter-pn">
        <name>An Example of the Network AC Model Usage Between Provider Networks</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="192" width="376" viewBox="0 0 376 192" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,32 L 8,176" fill="none" stroke="black"/>
              <path d="M 176,32 L 176,176" fill="none" stroke="black"/>
              <path d="M 256,32 L 256,176" fill="none" stroke="black"/>
              <path d="M 368,32 L 368,176" fill="none" stroke="black"/>
              <path d="M 8,32 L 176,32" fill="none" stroke="black"/>
              <path d="M 256,32 L 368,32" fill="none" stroke="black"/>
              <path d="M 176,48 L 200,48" fill="none" stroke="black"/>
              <path d="M 224,48 L 256,48" fill="none" stroke="black"/>
              <path d="M 176,64 L 200,64" fill="none" stroke="black"/>
              <path d="M 224,64 L 256,64" fill="none" stroke="black"/>
              <path d="M 256,96 L 368,96" fill="none" stroke="black"/>
              <path d="M 256,112 L 368,112" fill="none" stroke="black"/>
              <path d="M 176,144 L 200,144" fill="none" stroke="black"/>
              <path d="M 224,144 L 256,144" fill="none" stroke="black"/>
              <path d="M 8,176 L 176,176" fill="none" stroke="black"/>
              <path d="M 256,176 L 368,176" fill="none" stroke="black"/>
              <g class="text">
                <text x="212" y="52">AC</text>
                <text x="212" y="68">AC</text>
                <text x="312" y="68">Network#2</text>
                <text x="88" y="100">Network#1</text>
                <text x="212" y="148">AC</text>
                <text x="312" y="148">Network#3</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
.--------------------.         .-------------.
|                    +---AC----+             |
|                    +---AC----+  Network#2  |
|                    |         |             |
|     Network#1      |         '-------------'
|                    |         .-------------.
|                    |         |             |
|                    +---AC----+  Network#3  |
|                    |         |             |
'--------------------'         '-------------'
]]></artwork>
        </artset>
      </figure>
    </section>
    <section anchor="description-of-the-attachment-circuit-yang-module">
      <name>Description of the Attachment Circuit YANG Module</name>
      <t>The full tree diagram of the module can be generated using the
"pyang" tool <xref target="PYANG"/>.  That tree is not included here because it is
too long (<xref section="3.3" sectionFormat="of" target="RFC8340"/>).  Instead, subtrees are provided in the following subsections
for the reader's convenience.</t>
      <section anchor="overall-structure-of-the-module">
        <name>Overall Structure of the Module</name>
        <t>The overall tree structure of the module is shown in <xref target="o-ntw-tree"/>.</t>
        <figure anchor="o-ntw-tree">
          <name>Overall Tree Structure</name>
          <artwork><![CDATA[
augment /nw:networks/nw:network:
  +--rw specific-provisioning-profiles
  |  ...
  +--rw ac-profile* [name]
     ...
augment /nw:networks/nw:network/nw:node:
  +--rw ac* [name]
     +--rw name                 string
     +--rw ac-svc-ref?          ac-svc:attachment-circuit-reference
     +--rw ac-profile* [profile-id]
     |  +--rw profile-id    -> /nw:networks/network/ac-profile/name
     +--rw ac-parent-ref?       ac-ntw:attachment-circuit-reference
     +--rw peer-sap-id*         string
     +--rw group* [group-id]
     |  +--rw group-id      string
     |  +--rw precedence?   identityref
     +--rw status
     |  +--rw admin-status
     |  |  +--rw status?        identityref
     |  |  +--rw last-change?   yang:date-and-time
     |  +--ro oper-status
     |     +--ro status?        identityref
     |     +--ro last-change?   yang:date-and-time
     +--rw description?         string
     +--rw l2-connection
     |  ...
     +--rw ip-connection
     |  ...
     +--rw routing-protocols
     |  ...
     +--rw oam
     |  ...
     +--rw security
     |  ...
     +--rw service
        ...
  augment /nw:networks/nw:network/nw:node/sap:service/sap:sap:
    +--rw ac*   ac-ntw:attachment-circuit-reference
]]></artwork>
        </figure>
        <t>The full tree of the 'ac-ntw' is provided in <xref target="AC-Ntw-Tree"/>.</t>
        <t>A node can host one or more SAPs. As per <xref target="RFC9408"/>, a SAP is an abstraction of the network
reference points (the PE side of an AC, in the context of this document) where network services can be delivered and/or are delivered to customers. Each SAP terminates one or multiple ACs. Each AC in turn may be terminated by one or more peer SAPs ('peer-sap'). In order to expose such AC/SAP binding information, the SAP model <xref target="RFC9408"/> is augmented with required AC-related information.</t>
        <t>Unlike the AC service model <xref target="I-D.ietf-opsawg-teas-attachment-circuit"/>, an AC is uniquely identified by a name within the scope of a node, not a network. A textual description of the AC may be provided ('description').</t>
        <t>Also, in order to ease the correlation between the AC exposed at the service layer and the one that is actually provisioned in the network operation, a reference to the AC exposed to the customer ('ac-svc-ref') is stored in the 'ietf-ac-ntw' module.</t>
        <t>ACs that are terminated by a SAP are listed in 'ac' under '/nw:networks/nw:network/nw:node/sap:service/sap:sap'. A controller may indicate a filter based on the service type (e.g., Network Slice or L3VPN) to retrieve the list of available SAPs, and thus ACs, for that service.</t>
        <t>In order to factorize common data that is provisioned for a group of ACs, a set of profiles (<xref target="sec-profiles"/>) can be defined at the network level, and then called under the node level. The information contained in a profile is thus inherited, unless the corresponding data node is refined at the AC level. In such a case, the value provided at the AC level takes precedence over the global one.</t>
        <t>In contexts where the same AC is terminated by multiple peer SAPs (e.g., an AC with multiple CEs) but a subset of them have specific information, the module allows operators to:</t>
        <ul spacing="normal">
          <li>
            <t>Define a parent AC that may list all these CEs as peer SAPs.</t>
          </li>
          <li>
            <t>Create individual ACs that are bound to the parent AC using 'ac-parent-ref'.</t>
          </li>
          <li>
            <t>Indicate for each individual ACs one or a subset of the CEs as peer SAPs. All these individual ACs will inherit the properties of the parent AC.</t>
          </li>
        </ul>
        <t>Whenever a parent AC is deleted, then all child ACs of that AC <bcp14>MUST</bcp14> be deleted.</t>
        <t>An AC may belong to one or multiple groups <xref target="RFC9181"/>. For example, the 'group-id' is used to associate redundancy or protection constraints with ACs.</t>
        <t>The status of an AC can be tracked using 'status'. Both operational status and administrative status are maintained. A mismatch between the administrative status vs. the operational status can be used as a trigger to detect anomalies.</t>
        <t>An AC can be characterized using Layer 2 connectivity (<xref target="sec-l2"/>), Layer 3 connectivity (<xref target="sec-l3"/>), routing protocols (<xref target="sec-rtg"/>), OAM (<xref target="sec-oam"/>), security (<xref target="sec-sec"/>), and service (<xref target="sec-svc"/>) considerations.</t>
      </section>
      <section anchor="sec-profiles">
        <name>Provisioning Profiles</name>
        <t>The specific provisioning profiles tree structure is shown in <xref target="profiles-tree"/>.</t>
        <figure anchor="profiles-tree">
          <name>Profiles Tree Structure</name>
          <artwork><![CDATA[
  augment /nw:networks/nw:network:
    +--rw specific-provisioning-profiles
    |  +--rw valid-provider-identifiers
    |     +--rw encryption-profile-identifier* [id]
    |     |  +--rw id    string
    |     +--rw qos-profile-identifier* [id]
    |     |  +--rw id    string
    |     +--rw bfd-profile-identifier* [id]
    |     |  +--rw id    string
    |     +--rw forwarding-profile-identifier* [id]
    |     |  +--rw id    string
    |     +--rw routing-profile-identifier* [id]
    |        +--rw id    string
    +--rw ac-profile* [name]
       ...
]]></artwork>
        </figure>
        <t>The exact definition of these profiles is local to each service provider. The model only includes an identifier for these profiles in order to ease identifying and binding local policies when building an AC. As shown in <xref target="profiles-tree"/>, the following identifiers can be included:</t>
        <dl>
          <dt>'encryption-profile-identifier':</dt>
          <dd>
            <t>An encryption profile refers to a set of policies related to the encryption schemes and setup that can be applied on the AC.</t>
          </dd>
          <dt>'qos-profile-identifier':</dt>
          <dd>
            <t>A Quality of Service (QoS) profile refers to a set of policies such as classification, marking, and actions (e.g., <xref target="RFC3644"/>).</t>
          </dd>
          <dt>'bfd-profile-identifier':</dt>
          <dd>
            <t>A Bidirectional Forwarding Detection (BFD) profile refers to a set of BFD policies <xref target="RFC5880"/> that can be invoked when building an AC.</t>
          </dd>
          <dt>'forwarding-profile-identifier':</dt>
          <dd>
            <t>A forwarding profile refers to the policies that apply to the forwarding of packets conveyed over an AC. Such policies may consist of, for example, applying Access Control Lists (ACLs).</t>
          </dd>
          <dt>'routing-profile-identifier':</dt>
          <dd>
            <t>A routing profile refers to a set of routing policies that will be invoked (e.g., BGP policies) for an AC.</t>
          </dd>
        </dl>
      </section>
      <section anchor="sec-l2">
        <name>L2 Connection</name>
        <t>The 'l2-connection' container is used to manage the Layer 2 properties of an AC. The  Layer 2 connection tree structure is shown in <xref target="l2-tree"/>.</t>
        <figure anchor="l2-tree">
          <name>Layer 2 Connection Tree Structure</name>
          <artwork><![CDATA[
  augment /nw:networks/nw:network/nw:node:
    +--rw ac* [name]
       +--rw name                 string
       +--rw ac-svc-ref?          ac-svc:attachment-circuit-reference
       +--rw ac-profile* [profile-id]
       |  +--rw profile-id    ac-profile-reference
       +--rw ac-parent-ref?       ac-ntw:attachment-circuit-reference
       +--rw peer-sap-id*         string
       +--rw group* [group-id]
       |  +--rw group-id      string
       |  +--rw precedence?   identityref
       +--rw status
       |  +--rw admin-status
       |  |  +--rw status?        identityref
       |  |  +--rw last-change?   yang:date-and-time
       |  +--ro oper-status
       |     +--ro status?        identityref
       |     +--ro last-change?   yang:date-and-time
       +--rw description?         string
       +--rw l2-connection
       |  +--rw encapsulation
       |  |  +--rw encap-type?        identityref
       |  |  +--rw dot1q
       |  |  |  +--rw tag-type?         identityref
       |  |  |  +--rw cvlan-id?         uint16
       |  |  |  +--rw tag-operations
       |  |  |     +--rw (op-choice)?
       |  |  |     |  +--:(pop)
       |  |  |     |  |  +--rw pop?         empty
       |  |  |     |  +--:(push)
       |  |  |     |  |  +--rw push?        empty
       |  |  |     |  +--:(translate)
       |  |  |     |     +--rw translate?   empty
       |  |  |     +--rw tag-1?             dot1q-types:vlanid
       |  |  |     +--rw tag-1-type?
       |  |  |     |       dot1q-types:dot1q-tag-type
       |  |  |     +--rw tag-2?             dot1q-types:vlanid
       |  |  |     +--rw tag-2-type?
       |  |  |             dot1q-types:dot1q-tag-type
       |  |  +--rw priority-tagged
       |  |  |  +--rw tag-type?   identityref
       |  |  +--rw qinq
       |  |     +--rw tag-type?         identityref
       |  |     +--rw svlan-id          uint16
       |  |     +--rw cvlan-id          uint16
       |  |     +--rw tag-operations
       |  |        +--rw (op-choice)?
       |  |        |  +--:(pop)
       |  |        |  |  +--rw pop?         uint8
       |  |        |  +--:(push)
       |  |        |  |  +--rw push?        empty
       |  |        |  +--:(translate)
       |  |        |     +--rw translate?   uint8
       |  |        +--rw tag-1?             dot1q-types:vlanid
       |  |        +--rw tag-1-type?
       |  |        |       dot1q-types:dot1q-tag-type
       |  |        +--rw tag-2?             dot1q-types:vlanid
       |  |        +--rw tag-2-type?
       |  |                dot1q-types:dot1q-tag-type
       |  +--rw (l2-service)?
       |  |  +--:(l2-tunnel-service)
       |  |  |  +--rw l2-tunnel-service
       |  |  |     +--rw type?         identityref
       |  |  |     +--rw pseudowire
       |  |  |     |  +--rw vcid?      uint32
       |  |  |     |  +--rw far-end?   union
       |  |  |     +--rw vpls
       |  |  |     |  +--rw vcid?      uint32
       |  |  |     |  +--rw far-end*   union
       |  |  |     +--rw vxlan
       |  |  |        +--rw vni-id             uint32
       |  |  |        +--rw peer-mode?         identityref
       |  |  |        +--rw peer-ip-address*   inet:ip-address
       |  |  +--:(l2vpn)
       |  |     +--rw l2vpn-id?            vpn-common:vpn-id
       |  +--rw l2-termination-point?      string
       |  +--rw local-bridge-reference?    string
       |  +--rw bearer-reference?          string
       |  |       {vpn-common:bearer-reference}?
       |  +--rw lag-interface {vpn-common:lag-interface}?
       |     +--rw lag-interface-id?   string
       |     +--rw member-link-list
       |        +--rw member-link* [name]
       |           +--rw name    string
       +--rw ip-connection
       |  ...
       +--rw routing-protocols
       |  ...
       +--rw oam
       |  ...
       +--rw security
       |  ...
       +--rw service
          ...
]]></artwork>
        </figure>
        <t>The 'encapsulation' container specifies the Layer 2 encapsulation to use (if any) and allows the configuration of the relevant tags. Also, the model supports tag manipulation operations (e.g., tag rewrite).</t>
        <t>The 'l2-tunnel-service' container is used to specify the required parameters to set a Layer tunneling service (e.g., a Virtual Private LAN Service (VPLS), a Virtual eXtensible Local Area Network (VXLAN), or a pseudowire (<xref section="6.1" sectionFormat="of" target="RFC8077"/>)). 'l2vpn-id' is used to identify a L2VPN service that is associated with an Integrated Routing and Bridging (IRB) interface.</t>
        <t>To accommodate implementations that require internal bridging, a local bridge reference can be specified in 'local-bridge-reference'. Such a reference may be a local bridge domain.</t>
        <t>A reference to the bearer is maintained using 'bearer-reference'.</t>
      </section>
      <section anchor="sec-l3">
        <name>IP Connection</name>
        <t>This 'ip-connection' container is used to group Layer 3 connectivity information, particularly the IP addressing information, of an AC.</t>
        <t>The  Layer 3 connection tree structure is shown in <xref target="l3-tree"/>.</t>
        <figure anchor="l3-tree">
          <name>IP Connection Tree Structure</name>
          <artwork><![CDATA[
  augment /nw:networks/nw:network/nw:node:
    +--rw ac* [name]
       +--rw name                 string
       +--rw ac-svc-ref?          ac-svc:attachment-circuit-reference
       +--rw ac-profile* [profile-id]
       |  +--rw profile-id    ac-profile-reference
       +--rw ac-parent-ref?       ac-ntw:attachment-circuit-reference
       +--rw peer-sap-id*         string
       +--rw group* [group-id]
       |  +--rw group-id      string
       |  +--rw precedence?   identityref
       +--rw status
       |  +--rw admin-status
       |  |  +--rw status?        identityref
       |  |  +--rw last-change?   yang:date-and-time
       |  +--ro oper-status
       |     +--ro status?        identityref
       |     +--ro last-change?   yang:date-and-time
       +--rw description?         string
       +--rw l2-connection
       |  ...
       +--rw ip-connection
       |  +--rw l3-termination-point?   string
       |  +--rw ipv4 {vpn-common:ipv4}?
       |  |  +--rw local-address?
       |  |  |       inet:ipv4-address
       |  |  +--rw prefix-length?                           uint8
       |  |  +--rw address-allocation-type?
       |  |  |       identityref
       |  |  +--rw (allocation-type)?
       |  |     +--:(dynamic)
       |  |     |  +--rw (address-assign)?
       |  |     |  |  +--:(number)
       |  |     |  |  |  +--rw number-of-dynamic-address?   uint16
       |  |     |  |  +--:(explicit)
       |  |     |  |     +--rw customer-addresses
       |  |     |  |        +--rw address-pool* [pool-id]
       |  |     |  |           +--rw pool-id          string
       |  |     |  |           +--rw start-address
       |  |     |  |           |       inet:ipv4-address
       |  |     |  |           +--rw end-address?
       |  |     |  |                   inet:ipv4-address
       |  |     |  +--rw (provider-dhcp)?
       |  |     |  |  +--:(dhcp-service-type)
       |  |     |  |  |  +--rw dhcp-service-type?
       |  |     |  |  |          enumeration
       |  |     |  |  +--:(service-type)
       |  |     |  |     +--rw (service-type)?
       |  |     |  |        +--:(relay)
       |  |     |  |           +--rw server-ip-address*
       |  |     |  |                   inet:ipv4-address
       |  |     |  +--rw (dhcp-relay)?
       |  |     |     +--:(customer-dhcp-servers)
       |  |     |        +--rw customer-dhcp-servers
       |  |     |           +--rw server-ip-address*
       |  |     |                   inet:ipv4-address
       |  |     +--:(static-addresses)
       |  |        +--rw address* [address-id]
       |  |           +--rw address-id          string
       |  |           +--rw customer-address?   inet:ipv4-address
       |  +--rw ipv6 {vpn-common:ipv6}?
       |     +--rw local-address?
       |     |       inet:ipv6-address
       |     +--rw prefix-length?                           uint8
       |     +--rw address-allocation-type?
       |     |       identityref
       |     +--rw (allocation-type)?
       |        +--:(dynamic)
       |        |  +--rw (address-assign)?
       |        |  |  +--:(number)
       |        |  |  |  +--rw number-of-dynamic-address?   uint16
       |        |  |  +--:(explicit)
       |        |  |     +--rw customer-addresses
       |        |  |        +--rw address-pool* [pool-id]
       |        |  |           +--rw pool-id          string
       |        |  |           +--rw start-address
       |        |  |           |       inet:ipv6-address
       |        |  |           +--rw end-address?
       |        |  |                   inet:ipv6-address
       |        |  +--rw (provider-dhcp)?
       |        |  |  +--:(dhcp-service-type)
       |        |  |  |  +--rw dhcp-service-type?
       |        |  |  |          enumeration
       |        |  |  +--:(service-type)
       |        |  |     +--rw (service-type)?
       |        |  |        +--:(relay)
       |        |  |           +--rw server-ip-address*
       |        |  |                   inet:ipv6-address
       |        |  +--rw (dhcp-relay)?
       |        |     +--:(customer-dhcp-servers)
       |        |        +--rw customer-dhcp-servers
       |        |           +--rw server-ip-address*
       |        |                   inet:ipv6-address
       |        +--:(static-addresses)
       |           +--rw address* [address-id]
       |              +--rw address-id          string
       |              +--rw customer-address?   inet:ipv6-address
       +--rw routing-protocols
       |  ...
       +--rw oam
       |  ...
       +--rw security
       |  ...
       +--rw service
          ...
]]></artwork>
        </figure>
        <t>A distinct Layer 3 interface other than the interface indicated under the 'l2-connection' container may be needed to terminate the Layer 3 connectivity. The identifier of such an interface is included in 'l3-termination-point'. For example, this data node can be used to carry the identifier of a bridge domain interface.</t>
        <t>This container can include IPv4, IPv6, or both if dual-stack is enabled. For both IPv4 and IPv6, the IP connection supports three IP address assignment modes for customer addresses: provider DHCP, DHCP relay, and static addressing. Note that for the IPv6 case, Stateless Address Autoconfiguration (SLAAC) <xref target="RFC4862"/> can be used.</t>
        <t>For both IPv4 and IPv6, 'address-allocation-type' is used to indicate the IP address allocation mode to activate for an AC. The allocated address represents the PE interface address configuration. 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>
        <t>For IPv6, 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'. For example, if 'local-address' is set to '2001:db8:0:1::1' and 'prefix-length' is set to '64', the IPv6 prefix that will be used is '2001:db8:0:1::/64'.</t>
        <t>In some deployment contexts (e.g., network merging), multiple IP subnets may be used in a transition period. For such deployments, multiple ACs (typically, two) with overlapping information may be maintained during a transition period. The correlation between these ACs may rely upon the same "ac-svc-ref".</t>
      </section>
      <section anchor="sec-rtg">
        <name>Routing</name>
        <t>The overall routing subtree structure is shown in <xref target="rtg-tree"/>.</t>
        <figure anchor="rtg-tree">
          <name>Routing Tree Structure</name>
          <artwork><![CDATA[
module: ietf-ac-ntw
  augment /nw:networks/nw:network:
    +--rw ac-profile* [name]
       +--rw name                 string
       +--rw l2-connection
       +--rw ip-connection
       +--rw routing-protocols
       |  +--rw routing-protocol* [id]
       |     +--rw id      string
       |     +--rw type?   identityref
       |     +--rw bgp
       |     |  ...
       |     +--rw ospf
       |     |  ...
       |     +--rw isis
       |     |  ...
       |     +--rw rip
       |     |  ...
       |     +--rw vrrp
       |        ...
       +--rw oam
          ...
  augment /nw:networks/nw:network/nw:node:
    +--rw ac* [name]
       +--rw name                 string
       ...
       +--rw l2-connection
       |  ...
       +--rw ip-connection
       |  ...
       +--rw routing-protocols
       |  +--rw routing-protocol* [id]
       |     +--rw id                  string
       |     +--rw type?               identityref
       |     +--rw routing-profiles* [id]
       |     |  +--rw id      leafref
       |     |  +--rw type?   identityref
       |     +--rw static
       |     |  ...
       |     +--rw bgp
       |     |  ...
       |     +--rw ospf
       |     |  ...
       |     +--rw isis
       |     |  ...
       |     +--rw rip
       |     |  ...
       |     +--rw vrrp
       |        ...
       +--rw oam
       |  ...
       +--rw security
       |  ...
       +--rw service
          ...
]]></artwork>
        </figure>
        <t>Multiple routing instances ('routing-protocol') can be defined, each uniquely identified
by an 'id'. Specifically, each instance is uniquely identified to accommodate scenarios
where multiple instances of the same routing protocol have to be configured on the same AC.</t>
        <t>The type of a routing instance is indicated in 'type'.
The values of this attribute are those defined in <xref target="RFC9181"/> (the
'routing-protocol-type' identity). Specific data nodes are then provided
as a function of the 'type'. See more details in the following subsections.</t>
        <t>One or multiple routing profiles ('routing-profiles') can be provided for
a given routing instance.</t>
        <section anchor="sec-static-rtg">
          <name>Static Routing</name>
          <t>The static routing subtree structure is shown in <xref target="static-tree"/>.</t>
          <figure anchor="static-tree">
            <name>Static Routing Tree Structure</name>
            <artwork><![CDATA[
module: ietf-ac-ntw
          ...
  augment /nw:networks/nw:network/nw:node:
    +--rw ac* [name]
       +--rw name                 string
       ...
       +--rw l2-connection
       |  ...
       +--rw ip-connection
       |  ...
       +--rw routing-protocols
       |  +--rw routing-protocol* [id]
       |     +--rw id                  string
       |     +--rw type?               identityref
       |     +--rw routing-profiles* [id]
       |     |  +--rw id      leafref
       |     |  +--rw type?   identityref
       |     +--rw static
       |     |  +--rw cascaded-lan-prefixes
       |     |     +--rw ipv4-lan-prefixes* [lan next-hop]
       |     |     |       {vpn-common:ipv4}?
       |     |     |  +--rw lan           inet:ipv4-prefix
       |     |     |  +--rw lan-tag?      string
       |     |     |  +--rw next-hop      union
       |     |     |  +--rw metric?       uint32
       |     |     |  +--rw bfd-enable?   boolean {vpn-common:bfd}?
       |     |     |  +--rw preference?   uint32
       |     |     |  +--rw status
       |     |     |     +--rw admin-status
       |     |     |     |  +--rw status?        identityref
       |     |     |     |  +--rw last-change?   yang:date-and-time
       |     |     |     +--ro oper-status
       |     |     |        +--ro status?        identityref
       |     |     |        +--ro last-change?   yang:date-and-time
       |     |     +--rw ipv6-lan-prefixes* [lan next-hop]
       |     |             {vpn-common:ipv6}?
       |     |        +--rw lan           inet:ipv4-prefix
       |     |        +--rw lan-tag?      string
       |     |        +--rw next-hop      union
       |     |        +--rw metric?       uint32
       |     |        +--rw bfd-enable?   boolean {vpn-common:bfd}?
       |     |        +--rw preference?   uint32
       |     |        +--rw status
       |     |           +--rw admin-status
       |     |           |  +--rw status?        identityref
       |     |           |  +--rw last-change?   yang:date-and-time
       |     |           +--ro oper-status
       |     |              +--ro status?        identityref
       |     |              +--ro last-change?   yang:date-and-time
       |     +--rw bgp
       |     |  ...
       |     +--rw ospf
       |     |  ...
       |     +--rw isis
       |     |  ...
       |     +--rw rip
       |     |  ...
       |     +--rw vrrp
       |        ...
       +--rw oam
       |  ...
       +--rw security
       |  ...
       +--rw service
          ...
]]></artwork>
          </figure>
          <t>The following data nodes can be defined for a given IP prefix:</t>
          <dl>
            <dt>'lan-tag':</dt>
            <dd>
              <t>Indicates a local tag (e.g., "myfavorite-lan") that is used to enforce local policies.</t>
            </dd>
            <dt>'next-hop':</dt>
            <dd>
              <t>Indicates the next hop to be used for the static route.</t>
            </dd>
            <dt/>
            <dd>
              <t>It can be identified by an IP address, a predefined next-hop type (e.g., 'discard' or 'local-link'), etc.</t>
            </dd>
            <dt>'bfd-enable':</dt>
            <dd>
              <t>Indicates whether BFD is enabled or disabled for this static route entry.</t>
            </dd>
            <dt>'metric':</dt>
            <dd>
              <t>Indicates the metric associated with the static route entry. This metric is used when the route is exported into an IGP.</t>
            </dd>
            <dt>'preference':</dt>
            <dd>
              <t>Indicates the preference associated with the static route entry.</t>
            </dd>
            <dt/>
            <dd>
              <t>This preference is used to select a preferred route among routes to the same destination prefix.</t>
            </dd>
            <dt>'status':</dt>
            <dd>
              <t>Used to convey the status of a static route entry. This data node can also be used to control the (de)activation of individual static route entries.</t>
            </dd>
          </dl>
        </section>
        <section anchor="sec-bgp-rtg">
          <name>BGP</name>
          <t>The BGP routing subtree structure is shown in <xref target="bgp-tree"/>.</t>
          <figure anchor="bgp-tree">
            <name>BGP Routing Tree Structure</name>
            <artwork><![CDATA[
module: ietf-ac-ntw
  augment /nw:networks/nw:network:
    +--rw ac-profile* [name]
       +--rw name                 string
       +--rw l2-connection
       +--rw ip-connection
       +--rw routing-protocols
       |  +--rw routing-protocol* [id]
       |     +--rw id      string
       |     +--rw type?   identityref
       |     +--rw bgp
       |     |  +--rw description?              string
       |     |  +--rw apply-policy
       |     |  |  +--rw import-policy*           leafref
       |     |  |  +--rw default-import-policy?   default-policy-type
       |     |  |  +--rw export-policy*           leafref
       |     |  |  +--rw default-export-policy?   default-policy-type
       |     |  +--rw local-as?                 inet:as-number
       |     |  +--rw peer-as                   inet:as-number
       |     |  +--rw address-family?           identityref
       |     |  +--rw multihop?                 uint8
       |     |  +--rw as-override?              boolean
       |     |  +--rw allow-own-as?             uint8
       |     |  +--rw prepend-global-as?        boolean
       |     |  +--rw send-default-route?       boolean
       |     |  +--rw site-of-origin?           rt-types:route-origin
       |     |  +--rw ipv6-site-of-origin?
       |     |  |       rt-types:ipv6-route-origin
       |     |  +--rw redistribute-connected* [address-family]
       |     |  |  +--rw address-family    identityref
       |     |  |  +--rw enable?           boolean
       |     |  +--rw bgp-max-prefix
       |     |  |  +--rw max-prefix?          uint32
       |     |  |  +--rw warning-threshold?   decimal64
       |     |  |  +--rw violate-action?      enumeration
       |     |  |  +--rw restart-timer?       uint32
       |     |  +--rw bgp-timers
       |     |     +--rw keepalive?   uint16
       |     |     +--rw hold-time?   uint16
       |     +--rw ospf
       |     |  ...
       |     +--rw isis
       |     |  ...
       |     +--rw rip
       |     |  ...
       |     +--rw vrrp
       |        ...
       +--rw oam
          ...
  augment /nw:networks/nw:network/nw:node:
    +--rw ac* [name]
       +--rw name                 string
       ...
       +--rw l2-connection
       |  ...
       +--rw ip-connection
       |  ...
       +--rw routing-protocols
       |  +--rw routing-protocol* [id]
       |     +--rw id                  string
       |     +--rw type?               identityref
       |     +--rw routing-profiles* [id]
       |     |  +--rw id      leafref
       |     |  +--rw type?   identityref
       |     +--rw static
       |     |  ...
       |     +--rw bgp
       |     |  +--rw peer-groups
       |     |  |  +--rw peer-group* [name]
       |     |  |     +--rw name                      string
       |     |  |     +--rw local-address?            union
       |     |  |     +--rw description?              string
       |     |  |     +--rw apply-policy
       |     |  |     |  +--rw import-policy*           leafref
       |     |  |     |  +--rw default-import-policy?
       |     |  |     |  |       default-policy-type
       |     |  |     |  +--rw export-policy*           leafref
       |     |  |     |  +--rw default-export-policy?
       |     |  |     |          default-policy-type
       |     |  |     +--rw local-as?                 inet:as-number
       |     |  |     +--rw peer-as                   inet:as-number
       |     |  |     +--rw address-family?           identityref
       |     |  |     +--rw multihop?                 uint8
       |     |  |     +--rw as-override?              boolean
       |     |  |     +--rw allow-own-as?             uint8
       |     |  |     +--rw prepend-global-as?        boolean
       |     |  |     +--rw send-default-route?       boolean
       |     |  |     +--rw site-of-origin?
       |     |  |     |       rt-types:route-origin
       |     |  |     +--rw ipv6-site-of-origin?
       |     |  |     |       rt-types:ipv6-route-origin
       |     |  |     +--rw redistribute-connected* [address-family]
       |     |  |     |  +--rw address-family    identityref
       |     |  |     |  +--rw enable?           boolean
       |     |  |     +--rw bgp-max-prefix
       |     |  |     |  +--rw max-prefix?          uint32
       |     |  |     |  +--rw warning-threshold?   decimal64
       |     |  |     |  +--rw violate-action?      enumeration
       |     |  |     |  +--rw restart-timer?       uint32
       |     |  |     +--rw bgp-timers
       |     |  |     |  +--rw keepalive?   uint16
       |     |  |     |  +--rw hold-time?   uint16
       |     |  |     +--rw authentication
       |     |  |        +--rw enable?            boolean
       |     |  |        +--rw keying-material
       |     |  |           +--rw (option)?
       |     |  |              +--:(ao)
       |     |  |              |  +--rw enable-ao?          boolean
       |     |  |              |  +--rw ao-keychain?
       |     |  |              |          key-chain:key-chain-ref
       |     |  |              +--:(md5)
       |     |  |              |  +--rw md5-keychain?
       |     |  |              |          key-chain:key-chain-ref
       |     |  |              +--:(explicit)
       |     |  |                 +--rw key-id?             uint32
       |     |  |                 +--rw key?                string
       |     |  |                 +--rw crypto-algorithm?
       |     |  |                         identityref
       |     |  +--rw neighbor* [remote-address]
       |     |     +--rw remote-address            inet:ip-address
       |     |     +--rw local-address?            union
       |     |     +--rw peer-group?
       |     |     |       -> ../../peer-groups/peer-group/name
       |     |     +--rw description?              string
       |     |     +--rw apply-policy
       |     |     |  +--rw import-policy*           leafref
       |     |     |  +--rw default-import-policy?
       |     |     |  |       default-policy-type
       |     |     |  +--rw export-policy*           leafref
       |     |     |  +--rw default-export-policy?
       |     |     |          default-policy-type
       |     |     +--rw local-as?                 inet:as-number
       |     |     +--rw peer-as                   inet:as-number
       |     |     +--rw address-family?           identityref
       |     |     +--rw multihop?                 uint8
       |     |     +--rw as-override?              boolean
       |     |     +--rw allow-own-as?             uint8
       |     |     +--rw prepend-global-as?        boolean
       |     |     +--rw send-default-route?       boolean
       |     |     +--rw site-of-origin?
       |     |     |       rt-types:route-origin
       |     |     +--rw ipv6-site-of-origin?
       |     |     |       rt-types:ipv6-route-origin
       |     |     +--rw redistribute-connected* [address-family]
       |     |     |  +--rw address-family    identityref
       |     |     |  +--rw enable?           boolean
       |     |     +--rw bgp-max-prefix
       |     |     |  +--rw max-prefix?          uint32
       |     |     |  +--rw warning-threshold?   decimal64
       |     |     |  +--rw violate-action?      enumeration
       |     |     |  +--rw restart-timer?       uint32
       |     |     +--rw bgp-timers
       |     |     |  +--rw keepalive?   uint16
       |     |     |  +--rw hold-time?   uint16
       |     |     +--rw authentication
       |     |     |  +--rw enable?            boolean
       |     |     |  +--rw keying-material
       |     |     |     +--rw (option)?
       |     |     |        +--:(ao)
       |     |     |        |  +--rw enable-ao?          boolean
       |     |     |        |  +--rw ao-keychain?
       |     |     |        |          key-chain:key-chain-ref
       |     |     |        +--:(md5)
       |     |     |        |  +--rw md5-keychain?
       |     |     |        |          key-chain:key-chain-ref
       |     |     |        +--:(explicit)
       |     |     |           +--rw key-id?             uint32
       |     |     |           +--rw key?                string
       |     |     |           +--rw crypto-algorithm?   identityref
       |     |     +--rw status
       |     |        +--rw admin-status
       |     |        |  +--rw status?        identityref
       |     |        |  +--rw last-change?   yang:date-and-time
       |     |        +--ro oper-status
       |     |           +--ro status?        identityref
       |     |           +--ro last-change?   yang:date-and-time
       |     +--rw ospf
       |     |  ...
       |     +--rw isis
       |     |  ...
       |     +--rw rip
       |     |  ...
       |     +--rw vrrp
       |        ...
       +--rw oam
       |  ...
       +--rw security
       |  ...
       +--rw service
          ...
]]></artwork>
          </figure>
          <t>The following data nodes are supported for each 'peer-group':</t>
          <dl>
            <dt>'name':</dt>
            <dd>
              <t>Defines a name for the peer group.</t>
            </dd>
            <dt>'local-address':</dt>
            <dd>
              <t>Specifies an address or a reference to an interface to use when establishing the BGP transport session.</t>
            </dd>
            <dt>'description':</dt>
            <dd>
              <t>Includes a description of the peer group.</t>
            </dd>
            <dt>'apply-policy':</dt>
            <dd>
              <t>Lists a set of import/export policies <xref target="RFC9067"/> to apply for this group.</t>
            </dd>
            <dt>'local-as':</dt>
            <dd>
              <t>Indicates a local AS Number (ASN).</t>
            </dd>
            <dt>'peer-as':</dt>
            <dd>
              <t>Indicates the peer's ASN.</t>
            </dd>
            <dt>'address-family':</dt>
            <dd>
              <t>Indicates the address family of the peer.  It can
   be set to 'ipv4', 'ipv6', or 'dual-stack'.</t>
            </dd>
            <dt/>
            <dd>
              <t>This address family will be used together with the 'vpn-type' to
    derive the appropriate Address Family Identifiers (AFIs) /
    Subsequent Address Family Identifiers (SAFIs) that will be part of
   the derived device configurations (e.g., unicast IPv4 MPLS L3VPN
    (AFI,SAFI = 1,128) as defined in <xref section="4.3.4" sectionFormat="of" target="RFC4364"/>).</t>
            </dd>
            <dt>'multihop':</dt>
            <dd>
              <t>Indicates the number of allowed IP hops to reach a BGP peer.</t>
            </dd>
            <dt>'as-override':</dt>
            <dd>
              <t>If set, this parameter indicates whether ASN override
   is enabled, i.e., replacing the ASN of the customer specified in
   the AS_PATH BGP attribute with the ASN identified in the 'local-
   as' attribute.</t>
            </dd>
            <dt>'allow-own-as':</dt>
            <dd>
              <t>Used in some topologies (e.g., hub-and-spoke) to
   allow the provider's ASN to be included in the AS_PATH BGP
   attribute received from a peer.  Loops are prevented by setting
   'allow-own-as' to a maximum number of the provider's ASN
   occurrences.  By default, this parameter is set to '0' (that is,
   reject any AS_PATH attribute that includes the provider's ASN).</t>
            </dd>
            <dt>'prepend-global-as':</dt>
            <dd>
              <t>When distinct ASNs are configured at the
   node and AC levels, this parameter controls whether
   the ASN provided at the node level is prepended to the AS_PATH
   attribute.</t>
            </dd>
            <dt>'send-default-route':</dt>
            <dd>
              <t>Controls whether default routes can be advertised to the peer.</t>
            </dd>
            <dt>'site-of-origin':</dt>
            <dd>
              <t>Meant to uniquely identify the set of routes
   learned from a site via a particular AC.  It is used
   to prevent routing loops (<xref section="7" sectionFormat="of" target="RFC4364"/>).  The Site of
   Origin attribute is encoded as a Route Origin Extended Community.</t>
            </dd>
            <dt>'ipv6-site-of-origin':</dt>
            <dd>
              <t>Carries an IPv6 Address Specific BGP Extended
    Community that is used to indicate the Site of Origin <xref target="RFC5701"/>.  It is used to prevent routing loops.</t>
            </dd>
            <dt>'redistribute-connected':</dt>
            <dd>
              <t>Controls whether the AC is advertised to other PEs.</t>
            </dd>
          </dl>
          <t>'bgp-max-prefix':  Controls the behavior when a prefix maximum is
      reached.</t>
          <dl>
            <dt>'max-prefix':</dt>
            <dd>
              <t>Indicates the maximum number of BGP prefixes
    allowed in a session for this group.  If the limit is reached, the
    action indicated in 'violate-action' will be followed.</t>
            </dd>
            <dt>'warning-threshold':</dt>
            <dd>
              <t>A warning notification is triggered when this limit is reached.</t>
            </dd>
            <dt>'violate-action':</dt>
            <dd>
              <t>Indicates which action to execute when the
    maximum number of BGP prefixes is reached.  Examples of such
    actions include sending a warning message, discarding extra
    paths from the peer, or restarting the session.</t>
            </dd>
            <dt>'restart-timer':</dt>
            <dd>
              <t>Indicates, in seconds, the time interval after
 which the BGP session will be reestablished.</t>
            </dd>
            <dt>'bgp-timers':</dt>
            <dd>
              <t>Two timers can be captured in this container: (1)
   'hold-time', which is the time interval that will be used for the
   Hold Timer (<xref section="4.2" sectionFormat="of" target="RFC4271"/>) when establishing a BGP
   session and (2) 'keepalive', which is the time interval for the
   KeepaliveTimer between a PE and a BGP peer (<xref section="4.4" sectionFormat="of" target="RFC4271"/>).</t>
            </dd>
            <dt/>
            <dd>
              <t>Both timers are expressed in seconds.</t>
            </dd>
            <dt>'authentication':</dt>
            <dd>
              <t>The module adheres to the recommendations in
   <xref section="13.2" sectionFormat="of" target="RFC4364"/>, as it allows enabling the TCP
   Authentication Option (TCP-AO) <xref target="RFC5925"/> and accommodates the
   installed base that makes use of MD5.  In addition, the module
   includes a provision for using IPsec.</t>
            </dd>
            <dt/>
            <dd>
              <t>This version of the 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 (<xref section="3.1" sectionFormat="of" target="RFC5925"/>).</t>
            </dd>
          </dl>
          <t>For each neighbor, the following data nodes are supported in addition to similar parameters that are provided for a peer group:</t>
          <dl>
            <dt>'remote-address':</dt>
            <dd>
              <t>Specifies the remote IP address of a BGP neighbor.</t>
            </dd>
            <dt>'peer-group':</dt>
            <dd>
              <t>A name of a peer group.</t>
            </dd>
            <dt/>
            <dd>
              <t>Parameters that are provided at the 'neighbor' level takes precedence over the ones provided in the peer group.</t>
            </dd>
            <dt>'status':</dt>
            <dd>
              <t>Indicates the status of the BGP session.</t>
            </dd>
          </dl>
        </section>
        <section anchor="sec-ospf-rtg">
          <name>OSPF</name>
          <t>The OSPF routing subtree structure is shown in <xref target="ospf-tree"/>.</t>
          <figure anchor="ospf-tree">
            <name>OSPF Routing Tree Structure</name>
            <artwork><![CDATA[
module: ietf-ac-ntw
  augment /nw:networks/nw:network:
    +--rw ac-profile* [name]
       +--rw name                 string
       +--rw l2-connection
       +--rw ip-connection
       +--rw routing-protocols
       |  +--rw routing-protocol* [id]
       |     +--rw id      string
       |     +--rw type?   identityref
       |     +--rw bgp
       |     |  ...
       |     +--rw ospf
       |     |  +--rw address-family?   identityref
       |     |  +--rw area-id           yang:dotted-quad
       |     |  +--rw metric?           uint16
       |     |  +--rw max-lsa?          uint32
       |     +--rw isis
       |     |  ...
       |     +--rw rip
       |     |  ...
       |     +--rw vrrp
       |        ...
       +--rw oam
          ...
  augment /nw:networks/nw:network/nw:node:
    +--rw ac* [name]
       +--rw name                 string
       ...
       +--rw l2-connection
       |  ...
       +--rw ip-connection
       |  ...
       +--rw routing-protocols
       |  +--rw routing-protocol* [id]
       |     +--rw id                  string
       |     +--rw type?               identityref
       |     +--rw routing-profiles* [id]
       |     |  +--rw id      leafref
       |     |  +--rw type?   identityref
       |     +--rw static
       |     |  ...
       |     +--rw bgp
       |     |  ...
       |     +--rw ospf
       |     |  +--rw address-family?   identityref
       |     |  +--rw area-id           yang:dotted-quad
       |     |  +--rw metric?           uint16
       |     |  +--rw sham-links {vpn-common:rtg-ospf-sham-link}?
       |     |  |  +--rw sham-link* [target-site]
       |     |  |     +--rw target-site    string
       |     |  |     +--rw metric?        uint16
       |     |  +--rw max-lsa?          uint32
       |     |  +--rw authentication
       |     |  |  +--rw enable?            boolean
       |     |  |  +--rw keying-material
       |     |  |     +--rw (option)?
       |     |  |        +--:(auth-key-chain)
       |     |  |        |  +--rw key-chain?
       |     |  |        |          key-chain:key-chain-ref
       |     |  |        +--:(auth-key-explicit)
       |     |  |           +--rw key-id?             uint32
       |     |  |           +--rw key?                string
       |     |  |           +--rw crypto-algorithm?   identityref
       |     |  +--rw status
       |     |     +--rw admin-status
       |     |     |  +--rw status?        identityref
       |     |     |  +--rw last-change?   yang:date-and-time
       |     |     +--ro oper-status
       |     |        +--ro status?        identityref
       |     |        +--ro last-change?   yang:date-and-time
       |     +--rw isis
       |     |  ...
       |     +--rw rip
       |     |  ...
       |     +--rw vrrp
       |        ...
       +--rw oam
       |  ...
       +--rw security
       |  ...
       +--rw service
          ...
]]></artwork>
          </figure>
          <t>The following OSPF data nodes are supported:</t>
          <dl>
            <dt>'address-family':</dt>
            <dd>
              <t>Indicates whether IPv4, IPv6, or both address
   families are to be activated.</t>
            </dd>
            <dt/>
            <dd>
              <t>When the IPv4 or dual-stack address family is requested, it is up
    to the implementation (e.g., network orchestrator) to decide
    whether OSPFv2 <xref target="RFC4577"/> or OSPFv3 <xref target="RFC6565"/> is used to announce
    IPv4 routes.</t>
            </dd>
            <dt>'area-id':</dt>
            <dd>
              <t>Indicates the OSPF Area ID.</t>
            </dd>
            <dt>'metric':</dt>
            <dd>
              <t>Associates a metric with OSPF routes.</t>
            </dd>
            <dt>'sham-links':</dt>
            <dd>
              <t>Used to create OSPF sham links between two ACs sharing the same area and having a backdoor link
   (<xref section="4.2.7" sectionFormat="of" target="RFC4577"/> and <xref section="5" sectionFormat="of" target="RFC6565"/>).</t>
            </dd>
            <dt>'max-lsa':</dt>
            <dd>
              <t>Sets the maximum number of Link State Advertisements
   (LSAs) that the OSPF instance will accept.</t>
            </dd>
            <dt>'authentication':</dt>
            <dd>
              <t>Controls the authentication schemes to be enabled
   for the OSPF instance.  The following options are supported: IPsec
   for OSPFv3 authentication <xref target="RFC4552"/>, and the Authentication
   Trailer for OSPFv2 <xref target="RFC5709"/> <xref target="RFC7474"/> and OSPFv3 <xref target="RFC7166"/>.</t>
            </dd>
            <dt>'status':</dt>
            <dd>
              <t>Indicates the status of the OSPF routing instance.</t>
            </dd>
          </dl>
        </section>
        <section anchor="sec-isis-rtg">
          <name>IS-IS</name>
          <t>The IS-IS routing subtree structure is shown in <xref target="isis-tree"/>.</t>
          <figure anchor="isis-tree">
            <name>IS-IS Routing Tree Structure</name>
            <artwork><![CDATA[
module: ietf-ac-ntw
  augment /nw:networks/nw:network:
    +--rw ac-profile* [name]
       +--rw name                 string
       +--rw l2-connection
       +--rw ip-connection
       +--rw routing-protocols
       |  +--rw routing-protocol* [id]
       |     +--rw id      string
       |     +--rw type?   identityref
       |     +--rw bgp
       |     |  ...
       |     +--rw ospf
       |     |  ...
       |     +--rw isis
       |     |  +--rw address-family?   identityref
       |     |  +--rw area-address      area-address
       |     |  +--rw level?            identityref
       |     |  +--rw metric?           uint16
       |     |  +--rw mode?             enumeration
       |     +--rw rip
       |     |  ...
       |     +--rw vrrp
       |        ...
       +--rw oam
          ...
  augment /nw:networks/nw:network/nw:node:
    +--rw ac* [name]
       +--rw name                 string
       ...
       +--rw l2-connection
       |  ...
       +--rw ip-connection
       |  ...
       +--rw routing-protocols
       |  +--rw routing-protocol* [id]
       |     +--rw id                  string
       |     +--rw type?               identityref
       |     +--rw routing-profiles* [id]
       |     |  +--rw id      leafref
       |     |  +--rw type?   identityref
       |     +--rw static
       |     |  ...
       |     +--rw bgp
       |     |  ...
       |     +--rw ospf
       |     |  ...
       |     +--rw isis
       |     |  +--rw address-family?   identityref
       |     |  +--rw area-address      area-address
       |     |  +--rw level?            identityref
       |     |  +--rw metric?           uint16
       |     |  +--rw mode?             enumeration
       |     |  +--rw authentication
       |     |  |  +--rw enable?            boolean
       |     |  |  +--rw keying-material
       |     |  |     +--rw (option)?
       |     |  |        +--:(auth-key-chain)
       |     |  |        |  +--rw key-chain?
       |     |  |        |          key-chain:key-chain-ref
       |     |  |        +--:(auth-key-explicit)
       |     |  |           +--rw key-id?             uint32
       |     |  |           +--rw key?                string
       |     |  |           +--rw crypto-algorithm?   identityref
       |     |  +--rw status
       |     |     +--rw admin-status
       |     |     |  +--rw status?        identityref
       |     |     |  +--rw last-change?   yang:date-and-time
       |     |     +--ro oper-status
       |     |        +--ro status?        identityref
       |     |        +--ro last-change?   yang:date-and-time
       |     +--rw rip
       |     |  ...
       |     +--rw vrrp
       |        ...
       +--rw oam
       |  ...
       +--rw security
       |  ...
       +--rw service
          ...
]]></artwork>
          </figure>
          <t>The following IS-IS data nodes are supported:</t>
          <dl>
            <dt>'address-family':</dt>
            <dd>
              <t>Indicates whether IPv4, IPv6, or both address families are to be activated.</t>
            </dd>
            <dt>'area-address':</dt>
            <dd>
              <t>Indicates the IS-IS area address.</t>
            </dd>
            <dt>'level':</dt>
            <dd>
              <t>Indicates the IS-IS level: Level 1, Level 2, or both.</t>
            </dd>
            <dt>'metric':</dt>
            <dd>
              <t>Associates a metric with IS-IS routes.</t>
            </dd>
            <dt>'mode':</dt>
            <dd>
              <t>Indicates the IS-IS interface mode type.  It can be set to
   'active' (that is, send or receive IS-IS protocol control packets)
   or 'passive' (that is, suppress the sending of IS-IS updates
   through the interface).</t>
            </dd>
            <dt/>
            <dd>
              <t>'authentication':</t>
            </dd>
            <dt/>
            <dd>
              <t>Controls the authentication schemes to be enabled
   for the IS-IS instance.  Both the specification of a key chain
   <xref target="RFC8177"/> and the direct specification of key and authentication
   algorithms are supported.</t>
            </dd>
            <dt>'status':</dt>
            <dd>
              <t>Indicates the status of the IS-IS routing instance.</t>
            </dd>
          </dl>
        </section>
        <section anchor="sec-rip-rtg">
          <name>RIP</name>
          <t>The RIP routing subtree structure is shown in <xref target="rip-tree"/>.</t>
          <figure anchor="rip-tree">
            <name>RIP Routing Tree Structure</name>
            <artwork><![CDATA[
module: ietf-ac-ntw
  augment /nw:networks/nw:network:
    +--rw ac-profile* [name]
       +--rw name                 string
       +--rw l2-connection
       +--rw ip-connection
       +--rw routing-protocols
       |  +--rw routing-protocol* [id]
       |     +--rw id      string
       |     +--rw type?   identityref
       |     +--rw bgp
       |     |  ...
       |     +--rw ospf
       |     |  ...
       |     +--rw isis
       |     |  ...
       |     +--rw rip
       |     |  +--rw address-family?   identityref
       |     |  +--rw timers
       |     |  |  +--rw update-interval?     uint16
       |     |  |  +--rw invalid-interval?    uint16
       |     |  |  +--rw holddown-interval?   uint16
       |     |  |  +--rw flush-interval?      uint16
       |     |  +--rw default-metric?   uint8
       |     +--rw vrrp
       |        ...
       +--rw oam
          ...
  augment /nw:networks/nw:network/nw:node:
    +--rw ac* [name]
       +--rw name                 string
       ...
       +--rw l2-connection
       |  ...
       +--rw ip-connection
       |  ...
       +--rw routing-protocols
       |  +--rw routing-protocol* [id]
       |     +--rw id                  string
       |     +--rw type?               identityref
       |     +--rw routing-profiles* [id]
       |     |  +--rw id      leafref
       |     |  +--rw type?   identityref
       |     +--rw static
       |     |  ...
       |     +--rw bgp
       |     |  ...
       |     +--rw ospf
       |     |  ...
       |     +--rw isis
       |     |  ...
       |     +--rw rip
       |     |  +--rw address-family?   identityref
       |     |  +--rw timers
       |     |  |  +--rw update-interval?     uint16
       |     |  |  +--rw invalid-interval?    uint16
       |     |  |  +--rw holddown-interval?   uint16
       |     |  |  +--rw flush-interval?      uint16
       |     |  +--rw default-metric?   uint8
       |     |  +--rw authentication
       |     |  |  +--rw enable?            boolean
       |     |  |  +--rw keying-material
       |     |  |     +--rw (option)?
       |     |  |        +--:(auth-key-chain)
       |     |  |        |  +--rw key-chain?
       |     |  |        |          key-chain:key-chain-ref
       |     |  |        +--:(auth-key-explicit)
       |     |  |           +--rw key?                string
       |     |  |           +--rw crypto-algorithm?   identityref
       |     |  +--rw status
       |     |     +--rw admin-status
       |     |     |  +--rw status?        identityref
       |     |     |  +--rw last-change?   yang:date-and-time
       |     |     +--ro oper-status
       |     |        +--ro status?        identityref
       |     |        +--ro last-change?   yang:date-and-time
       |     +--rw vrrp
       |        ...
       +--rw oam
       |  ...
       +--rw security
       |  ...
       +--rw service
          ...
]]></artwork>
          </figure>
          <t>The following RIP data nodes are supported:</t>
          <dl>
            <dt>'address-family':</dt>
            <dd>
              <t>Indicates whether IPv4, IPv6, or both address
   families are to be activated.  This parameter is used to determine
   whether RIPv2 <xref target="RFC2453"/>, RIP Next Generation (RIPng), or both are
   to be enabled <xref target="RFC2080"/>.</t>
            </dd>
            <dt>'timers':</dt>
            <dd>
              <t>Indicates the following timers (expressed in seconds):
</t>
              <ul spacing="normal">
                <li>
                  <dl>
                    <dt>'update-interval':</dt>
                    <dd>
                      <t>The interval at which RIP updates are sent.</t>
                    </dd>
                  </dl>
                </li>
                <li>
                  <dl>
                    <dt>'invalid-interval':</dt>
                    <dd>
                      <t>The interval before a RIP route is declared invalid.</t>
                    </dd>
                  </dl>
                </li>
                <li>
                  <dl>
                    <dt>'holddown-interval':</dt>
                    <dd>
                      <t>The interval before better RIP routes are released.</t>
                    </dd>
                  </dl>
                </li>
                <li>
                  <dl>
                    <dt>'flush-interval':</dt>
                    <dd>
                      <t>The interval before a route is removed from the routing table.</t>
                    </dd>
                  </dl>
                </li>
              </ul>
            </dd>
            <dt>'default-metric':</dt>
            <dd>
              <t>Sets the default RIP metric.</t>
            </dd>
            <dt>'authentication':</dt>
            <dd>
              <t>Controls the authentication schemes to be enabled for the RIP instance.</t>
            </dd>
            <dt>'status':</dt>
            <dd>
              <t>Indicates the status of the RIP routing instance.</t>
            </dd>
          </dl>
        </section>
        <section anchor="sec-VRRP-rtg">
          <name>VRRP</name>
          <t>The VRRP subtree structure is shown in <xref target="vrrp-tree"/>.</t>
          <figure anchor="vrrp-tree">
            <name>VRRP Tree Structure</name>
            <artwork><![CDATA[
module: ietf-ac-ntw
  augment /nw:networks/nw:network:
    +--rw ac-profile* [name]
       +--rw name                 string
       +--rw l2-connection
       +--rw ip-connection
       +--rw routing-protocols
       |  +--rw routing-protocol* [id]
       |     +--rw id      string
       |     +--rw type?   identityref
       |     +--rw bgp
       |     |  ...
       |     +--rw ospf
       |     |  ...
       |     +--rw isis
       |     |  ...
       |     +--rw rip
       |     |  ...
       |     +--rw vrrp
       |        +--rw address-family?   identityref
       |        +--rw ping-reply?       boolean
       +--rw oam
          ...
  augment /nw:networks/nw:network/nw:node:
    +--rw ac* [name]
       +--rw name                 string
       ...
       +--rw l2-connection
       |  ...
       +--rw ip-connection
       |  ...
       +--rw routing-protocols
       |  +--rw routing-protocol* [id]
       |     +--rw id                  string
       |     +--rw type?               identityref
       |     +--rw routing-profiles* [id]
       |     |  +--rw id      leafref
       |     |  +--rw type?   identityref
       |     +--rw static
       |     |  ...
       |     +--rw bgp
       |     |  ...
       |     +--rw ospf
       |     |  ...
       |     +--rw isis
       |     |  ...
       |     +--rw rip
       |     |  ...
       |     +--rw vrrp
       |        +--rw address-family?       identityref
       |        +--rw vrrp-group?           uint8
       |        +--rw backup-peer?          inet:ip-address
       |        +--rw virtual-ip-address*   inet:ip-address
       |        +--rw priority?             uint8
       |        +--rw ping-reply?           boolean
       |        +--rw status
       |           +--rw admin-status
       |           |  +--rw status?        identityref
       |           |  +--rw last-change?   yang:date-and-time
       |           +--ro oper-status
       |              +--ro status?        identityref
       |              +--ro last-change?   yang:date-and-time
       +--rw oam
       |  ...
       +--rw security
       |  ...
       +--rw service
          ...
]]></artwork>
          </figure>
          <t>The following VRRP data nodes are supported:</t>
          <dl>
            <dt>'address-family':</dt>
            <dd>
              <t>Indicates whether IPv4, IPv6, or both address
   families are to be activated.  Note that VRRP version 3 <xref target="RFC5798"/>
   supports both IPv4 and IPv6.</t>
            </dd>
            <dt>'vrrp-group':</dt>
            <dd>
              <t>Used to identify the VRRP group.</t>
            </dd>
            <dt>'backup-peer':</dt>
            <dd>
              <t>Carries the IP address of the peer.</t>
            </dd>
            <dt>'virtual-ip-address':</dt>
            <dd>
              <t>Includes virtual IP addresses for a single VRRP group.</t>
            </dd>
            <dt>'priority':</dt>
            <dd>
              <t>Assigns the VRRP election priority for the backup virtual router.</t>
            </dd>
            <dt>'ping-reply':</dt>
            <dd>
              <t>Controls whether the VRRP speaker should reply to ping requests.</t>
            </dd>
            <dt>'status':</dt>
            <dd>
              <t>Indicates the status of the VRRP instance.</t>
            </dd>
          </dl>
          <t>Note that no authentication data node is included for VRRP, as there
isn't any type of VRRP authentication at this time (see <xref section="9" sectionFormat="of" target="RFC5798"/>).</t>
        </section>
      </section>
      <section anchor="sec-oam">
        <name>OAM</name>
        <t>The OAM subtree structure is shown in <xref target="oam-tree"/>.</t>
        <figure anchor="oam-tree">
          <name>OAM Tree Structure</name>
          <artwork><![CDATA[
  augment /nw:networks/nw:network:
    +--rw ac-profile* [name]
       +--rw name                 string
       +--rw l2-connection
       +--rw ip-connection
       +--rw routing-protocols
       |  ...
       +--rw oam
          +--rw bfd {vpn-common:bfd}?
             +--rw session-type?               identityref
             +--rw desired-min-tx-interval?    uint32
             +--rw required-min-rx-interval?   uint32
             +--rw local-multiplier?           uint8
             +--rw holdtime?                   uint32
  augment /nw:networks/nw:network/nw:node:
    +--rw ac* [name]
       +--rw name                 string
       +--rw ac-svc-ref?          ac-svc:attachment-circuit-reference
       +--rw ac-profile* [profile-id]
       |  +--rw profile-id    ac-profile-reference
       +--rw ac-parent-ref?       ac-ntw:attachment-circuit-reference
       +--rw peer-sap-id*         string
       +--rw group* [group-id]
       |  +--rw group-id      string
       |  +--rw precedence?   identityref
       +--rw status
       |  +--rw admin-status
       |  |  +--rw status?        identityref
       |  |  +--rw last-change?   yang:date-and-time
       |  +--ro oper-status
       |     +--ro status?        identityref
       |     +--ro last-change?   yang:date-and-time
       +--rw description?         string
       +--rw l2-connection
       |  ...
       +--rw ip-connection
       |  ...
       +--rw routing-protocols
       |  ...
       +--rw oam
       |  +--rw bfd
       |     +--rw profile?                    ac-svc:bfd-profile-reference
       |     +--rw session-type?               identityref
       |     +--rw desired-min-tx-interval?    uint32
       |     +--rw required-min-rx-interval?   uint32
       |     +--rw local-multiplier?           uint8
       |     +--rw holdtime?                   uint32
       |     +--rw authentication!
       |     |  +--rw key-chain?    key-chain:key-chain-ref
       |     |  +--rw meticulous?   boolean
       |     +--rw status
       |        +--rw admin-status
       |        |  +--rw status?        identityref
       |        |  +--rw last-change?   yang:date-and-time
       |        +--ro oper-status
       |           +--ro status?        identityref
       |           +--ro last-change?   yang:date-and-time
       +--rw security
       |  ...
       +--rw service
          ...
]]></artwork>
        </figure>
        <t>The following OAM data nodes can be specified:</t>
        <dl>
          <dt>'profile':</dt>
          <dd>
            <t>Refers to a BFD profile (<xref target="sec-profiles"/>).</t>
          </dd>
          <dt>'session-type':</dt>
          <dd>
            <t>Indicates which BFD flavor is used to set up the session (e.g., classic BFD <xref target="RFC5880"/>, Seamless BFD <xref target="RFC7880"/>). By default, it is assumed that the BFD session will follow the behavior specified in <xref target="RFC5880"/>.</t>
          </dd>
          <dt>'desired-min-tx-interval':</dt>
          <dd>
            <t>The minimum interval, in microseconds, to use when transmitting BFD Control packets, less any jitter applied.</t>
          </dd>
          <dt>'required-min-rx-interval':</dt>
          <dd>
            <t>The minimum interval, in microseconds, between received BFD Control packets less any jitter applied by the sender.</t>
          </dd>
          <dt>'local-multiplier':</dt>
          <dd>
            <t>The negotiated transmit interval, multiplied by this value, provides the detection time for the peer.</t>
          </dd>
          <dt>'holdtime':</dt>
          <dd>
            <t>Used to indicate the expected BFD holddown time, in milliseconds.</t>
          </dd>
          <dt>'authentication':</dt>
          <dd>
            <t>Includes the required information to enable the BFD authentication modes discussed in <xref section="6.7" sectionFormat="of" target="RFC5880"/>. In particular, 'meticulous' controls the activation of meticulous mode as discussed in Sections 6.7.3 and 6.7.4 of <xref target="RFC5880"/>.</t>
          </dd>
          <dt>'status':</dt>
          <dd>
            <t>Indicates the status of BFD.</t>
          </dd>
        </dl>
      </section>
      <section anchor="sec-sec">
        <name>Security</name>
        <t>The security subtree structure is shown in <xref target="sec-tree"/>. The 'security' container specifies the authentication and the encryption to be applied to traffic for a given AC. Tthe model can be used to directly control the encryption to be applied (e.g., Layer 2 or Layer 3 encryption) or invoke a local encryption profile.</t>
        <figure anchor="sec-tree">
          <name>Security Tree Structure</name>
          <artwork><![CDATA[
  augment /nw:networks/nw:network/nw:node:
    +--rw ac* [name]
       +--rw name                 string
       +--rw ac-svc-ref?          ac-svc:attachment-circuit-reference
       +--rw ac-profile* [profile-id]
       |  +--rw profile-id    ac-profile-reference
       +--rw ac-parent-ref?       ac-ntw:attachment-circuit-reference
       +--rw peer-sap-id*         string
       +--rw group* [group-id]
       |  +--rw group-id      string
       |  +--rw precedence?   identityref
       +--rw status
       |  +--rw admin-status
       |  |  +--rw status?        identityref
       |  |  +--rw last-change?   yang:date-and-time
       |  +--ro oper-status
       |     +--ro status?        identityref
       |     +--ro last-change?   yang:date-and-time
       +--rw description?         string
       +--rw l2-connection
       |  ...
       +--rw ip-connection
       |  ...
       +--rw routing-protocols
       |  ...
       +--rw oam
       |  ...
       +--rw security
       |  +--rw encryption {vpn-common:encryption}?
       |  |  +--rw enabled?   boolean
       |  |  +--rw layer?     enumeration
       |  +--rw encryption-profile
       |     +--rw (profile)?
       |        +--:(provider-profile)
       |        |  +--rw profile-name?
       |        |          encryption-profile-reference
       |        +--:(customer-profile)
       |           +--rw customer-key-chain?   key-chain:key-chain-ref
       +--rw service
          ...
]]></artwork>
        </figure>
      </section>
      <section anchor="sec-svc">
        <name>Service</name>
        <t>The service subtree structure is shown in <xref target="svc-tree"/>.</t>
        <figure anchor="svc-tree">
          <name>Service Tree Structure</name>
          <artwork><![CDATA[
  augment /nw:networks/nw:network/nw:node:
    +--rw ac* [name]
       +--rw name                 string
       +--rw ac-svc-ref?          ac-svc:attachment-circuit-reference
       +--rw ac-profile* [profile-id]
       |  +--rw profile-id    ac-profile-reference
       +--rw ac-parent-ref?       ac-ntw:attachment-circuit-reference
       +--rw peer-sap-id*         string
       +--rw group* [group-id]
       |  +--rw group-id      string
       |  +--rw precedence?   identityref
       +--rw status
       |  +--rw admin-status
       |  |  +--rw status?        identityref
       |  |  +--rw last-change?   yang:date-and-time
       |  +--ro oper-status
       |     +--ro status?        identityref
       |     +--ro last-change?   yang:date-and-time
       +--rw description?         string
       +--rw l2-connection
       |  ...
       +--rw ip-connection
       |  ...
       +--rw routing-protocols
       |  ...
       +--rw oam
       |  ...
       +--rw security
       |  ...
       +--rw service
          +--rw mtu?                      uint32
          +--rw svc-pe-to-ce-bandwidth {vpn-common:inbound-bw}?
          |  +--rw bandwidth* [bw-type]
          |     +--rw bw-type      identityref
          |     +--rw (type)?
          |        +--:(per-cos)
          |        |  +--rw cos* [cos-id]
          |        |     +--rw cos-id    uint8
          |        |     +--rw cir?      uint64
          |        |     +--rw cbs?      uint64
          |        |     +--rw eir?      uint64
          |        |     +--rw ebs?      uint64
          |        |     +--rw pir?      uint64
          |        |     +--rw pbs?      uint64
          |        +--:(other)
          |           +--rw cir?   uint64
          |           +--rw cbs?   uint64
          |           +--rw eir?   uint64
          |           +--rw ebs?   uint64
          |           +--rw pir?   uint64
          |           +--rw pbs?   uint64
          +--rw svc-ce-to-pe-bandwidth {vpn-common:outbound-bw}?
          |  +--rw bandwidth* [bw-type]
          |     +--rw bw-type      identityref
          |     +--rw (type)?
          |        +--:(per-cos)
          |        |  +--rw cos* [cos-id]
          |        |     +--rw cos-id    uint8
          |        |     +--rw cir?      uint64
          |        |     +--rw cbs?      uint64
          |        |     +--rw eir?      uint64
          |        |     +--rw ebs?      uint64
          |        |     +--rw pir?      uint64
          |        |     +--rw pbs?      uint64
          |        +--:(other)
          |           +--rw cir?   uint64
          |           +--rw cbs?   uint64
          |           +--rw eir?   uint64
          |           +--rw ebs?   uint64
          |           +--rw pir?   uint64
          |           +--rw pbs?   uint64
          +--rw qos {vpn-common:qos}?
          |  +--rw qos-profiles
          |     +--rw qos-profile* [profile]
          |        +--rw profile      qos-profile-reference
          |        +--rw direction?   identityref
          +--rw access-control-list
             +--rw acl-profiles
                +--rw acl-profile* [profile]
                   +--rw profile    forwarding-profile-reference
]]></artwork>
        </figure>
        <t>The description of the service data nodes is as follows:</t>
        <dl>
          <dt>'mtu':</dt>
          <dd>
            <t>Specifies the Layer 2 MTU, in bytes, for the VPN network access.</t>
          </dd>
          <dt>'svc-pe-to-ce-bandwidth' and 'svc-ce-to-pe-bandwidth':</dt>
          <dd>
            <t>Specify the service bandwidth for the L2VPN service.</t>
          </dd>
          <dt/>
          <dd>
            <t>'svc-pe-to-ce-bandwidth' indicates the inbound bandwidth of the connection (i.e., download bandwidth from the service provider to the site).</t>
          </dd>
          <dt/>
          <dd>
            <t>'svc-ce-to-pe-bandwidth' indicates the outbound bandwidth of the connection (i.e., upload bandwidth from the site to the service provider).</t>
          </dd>
          <dt/>
          <dd>
            <t>'svc-pe-to-ce-bandwidth' and 'svc-ce-to-pe-bandwidth' 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>The following types, defined in <xref target="RFC9181"/>, can be used to indicate the bandwidth type:</t>
            <dl>
              <dt>'bw-per-cos':</dt>
              <dd>
                <t>The bandwidth is per CoS.</t>
              </dd>
              <dt>'bw-per-port':</dt>
              <dd>
                <t>The bandwidth is per port.</t>
              </dd>
              <dt>'bw-per-site':</dt>
              <dd>
                <t>The bandwidth is to all peer SAPs that belong to the same site.</t>
              </dd>
              <dt>'bw-per-service':</dt>
              <dd>
                <t>The bandwidth is per service instance that is bound to an AC.</t>
              </dd>
            </dl>
          </dd>
          <dt>'qos':</dt>
          <dd>
            <t>Specifies a list of QoS profiles to apply for this AC.</t>
          </dd>
          <dt>'access-control-list':</dt>
          <dd>
            <t>Specifies a list of ACL profiles to apply for this AC.</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="sec-module">
      <name>YANG Module</name>
      <t>This module uses types defined in <xref target="RFC6991"/>, <xref target="RFC8177"/>, <xref target="RFC8294"/>, <xref target="RFC8343"/>, <xref target="RFC9067"/>, <xref target="RFC9181"/>, <xref target="I-D.ietf-opsawg-teas-common-ac"/>, and <xref target="IEEE802.1Qcp"/>.</t>
      <sourcecode type="yang"><![CDATA[
<CODE BEGINS> file ietf-ac-ntw@2022-11-30.yang
module ietf-ac-ntw {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-ac-ntw";
  prefix ac-ntw;

  import ietf-vpn-common {
    prefix vpn-common;
    reference
      "RFC 9181: A Common YANG Data Model for Layer 2 and Layer 3
                 VPNs";
  }
  import ietf-inet-types {
    prefix inet;
    reference
      "RFC 6991: Common YANG Data Types, Section 4";
  }
  import ietf-key-chain {
    prefix key-chain;
    reference
      "RFC 8177: YANG Data Model for Key Chains";
  }
  import ietf-routing-types {
    prefix rt-types;
    reference
      "RFC 8294: Common YANG Data Types for the Routing Area";
  }
  import ietf-routing-policy {
    prefix rt-pol;
    reference
      "RFC 9067: A YANG Data Model for Routing Policy";
  }
  import ietf-interfaces {
    prefix if;
    reference
      "RFC 8343: A YANG Data Model for Interface Management";
  }
  import ieee802-dot1q-types {
    prefix dot1q-types;
    reference
      "IEEE Std 802.1Qcp: Bridges and Bridged Networks--
                          Amendment 30: YANG Data Model";
  }
  import ietf-network {
    prefix nw;
    reference
      "RFC 8345: A YANG Data Model for Network Topologies, 
                 Section 6.1";
  }
  import ietf-sap-ntw {
    prefix sap;
    reference
      "RFC SSSS: A YANG Network Model for Service Attachment
                 Points (SAPs)";
  }
  import ietf-ac-common {
    prefix ac-common;
    reference
      "RFC CCCC: A Common YANG Data Model for Attachment Circuits";
  }
  import ietf-ac-svc {
    prefix ac-svc;
    reference
      "RFC SSSS: YANG Service Data Models for Attachment Circuits";
  }

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

     Editor:   Mohamed Boucadair
               <mailto:mohamed.boucadair@orange.com>
     Author:   Richard Roberts
               <mailto:rroberts@juniper.net>
     Author:   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 YANG network model for the management
     of attachment circuits.

     Copyright (c) 2023 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 2023-11-13 {
    description
      "Initial revision.";
    reference
      "RFC XXXX: A YANG Network Data Model for Attachment Circuits";
  }

  // L2 connection groupings

  /* A set of typedefs to ease referencing cross-modules */

  typedef attachment-circuit-reference {
    type leafref {
      path "/nw:networks/nw:network/nw:node/ac-ntw:ac/ac-ntw:name";
    }
    description
      "Defines a reference to an attachment circuit. The reference 
       be used also by other modules.";
  }

  typedef ac-profile-reference {
    type leafref {
      path "/nw:networks/nw:network/ac-profile/name";
    }
    description
      "Defines a reference to an attachment circuit profile that
       can be used, including, by other modules.";
  }

  typedef encryption-profile-reference {
    type leafref {
      path
          "/nw:networks/nw:network"
        + "/ac-ntw:specific-provisioning-profiles" 
        + "/ac-ntw:valid-provider-identifiers"
        + "/ac-ntw:encryption-profile-identifier/ac-ntw:id";
    }
    description
      "Defines a type to an encryption profile for referencing
       purposes.";
  }

  typedef qos-profile-reference {
    type leafref {
      path
          "/nw:networks/nw:network"
        + "/ac-ntw:specific-provisioning-profiles" 
        + "/ac-ntw:valid-provider-identifiers"
        + "/ac-ntw:qos-profile-identifier/ac-ntw:id";
    }
    description
      "Defines a type to a QoS profile for referencing purposes.";
  }

  typedef bfd-profile-reference {
    type leafref {
      path
          "/nw:networks/nw:network"
        + "/ac-ntw:specific-provisioning-profiles" 
        + "/ac-ntw:valid-provider-identifiers"
        + "/ac-ntw:bfd-profile-identifier/ac-ntw:id";
    }
    description
      "Defines a type to a BFD profile for referencing purposes.";
  }

  typedef forwarding-profile-reference {
    type leafref {
      path
          "/nw:networks/nw:network"
        + "/ac-ntw:specific-provisioning-profiles" 
        + "/ac-ntw:valid-provider-identifiers"
        + "/ac-ntw:forwarding-profile-identifier/ac-ntw:id";
    }
    description
      "Defines a type to a forwarding profile for referencing
       purposes.";
  }

  typedef routing-profile-reference {
    type leafref {
      path
          "/nw:networks/nw:network"
        + "/ac-ntw:specific-provisioning-profiles" 
        + "/ac-ntw:valid-provider-identifiers"
        + "/ac-ntw:routing-profile-identifier/ac-ntw:id";
    }
    description
      "Defines a type to a routing profile for referencing 
       purposes.";
  }

  // L2 conenction

  grouping l2-connection {
    description
      "Defines Layer 2 protocols and parameters that are required to
       enable AC connectivity.";
    container encapsulation {
      description
        "Container for Layer 2 encapsulation.";
      leaf encap-type {
        type identityref {
          base vpn-common:encapsulation-type;
        }
        description
          "Tagged interface type.";
      }
      container dot1q {
        when "derived-from-or-self(../encap-type, "
           + "'vpn-common:dot1q')" {
          description
            "Only applies when the type of the tagged interface is
             'dot1q'.";
        }
        description
          "Tagged interface.";
        uses ac-common:dot1q;
        container tag-operations {
          description
            "Sets the tag manipulation policy for this AC. It defines
             a set of tag manipulations that allow for the insertion,
             removal, or rewriting of 802.1Q VLAN tags. These
             operations are indicated for the CE-PE direction.
             By default, tag operations are symmetric. As such, the
             reverse tag operation is assumed on the PE-CE 
             direction.";
          choice op-choice {
            description
              "Selects the tag rewriting policy for an AC.";
            leaf pop {
              type empty;
              description
                "Pop the outer tag.";
            }
            leaf push {
              type empty;
              description
                "Pushes one or two tags defined by the tag-1 and
                 tag-2 leaves.  It is assumed that, absent any
                 policy, the default value of 0 will be used for
                 the PCP  setting.";
            }
            leaf translate {
              type empty;
              description
                "Translates the outer tag to one or two tags. PCP 
                 bits are preserved.";
            }
          }
          leaf tag-1 {
            when 'not(../pop)';
            type dot1q-types:vlanid;
            description
              "A first tag to be used for push or translate 
               operations. This tag will be used as the outermost tag
               as a result of the tag operation.";
          }
          leaf tag-1-type {
            type dot1q-types:dot1q-tag-type;
            default "dot1q-types:s-vlan";
            description
              "Specifies a specific 802.1Q tag type of tag-1.";
          }
          leaf tag-2 {
            when '(../translate)';
            type dot1q-types:vlanid;
            description
              "A second tag to be used for translation.";
          }
          leaf tag-2-type {
            type dot1q-types:dot1q-tag-type;
            default "dot1q-types:c-vlan";
            description
              "Specifies a specific 802.1Q tag type of tag-2.";
          }
        }
      }
      container priority-tagged {
        when "derived-from-or-self(../encap-type, "
           + "'vpn-common:priority-tagged')" {
          description
            "Only applies when the type of the tagged interface is
             'priority-tagged'.";
        }
        description
          "Priority tagged container.";
        uses ac-common:priority-tagged;
      }
      container qinq {
        when "derived-from-or-self(../encap-type, "
           + "'vpn-common:qinq')" {
          description
            "Only applies when the type of the tagged interface is
             'QinQ'.";
        }
        description
          "Includes QinQ parameters.";
        uses ac-common:qinq;
        container tag-operations {
          description
            "Sets the tag manipulation policy for this AC. It defines
             a set of tag manipulations that allow for the insertion,
             removal, or rewriting of 802.1Q VLAN tags. These
             operations are indicated for the CE-PE direction.
             By default, tag operations are symmetric. As such, the
             reverse tag operation is assumed on the PE-CE 
             direction.";
          choice op-choice {
            description
              "Selects the tag rewriting policy for a AC.";
            leaf pop {
              type uint8 {
                range "1|2";
              }
              description
                "Pops one or two tags as a function of the indicated
                 pop value.";
            }
            leaf push {
              type empty;
              description
                "Pushes one or two tags defined by the tag-1 and 
                 tag-2 leaves. It is assumed that, absent any 
                 policy, the default value of 0 will be used for 
                 PCP setting.";
            }
            leaf translate {
              type uint8 {
                range "1|2";
              }
              description
                "Translates one or two outer tags. PCP bits are 
                 preserved. The following operations are supported:

                 - translate 1 with tag-1 leaf is provided: only the 
                   outermost tag is translated to the value in tag-1.

                 - translate 2 with both tag-1 and tag-2 leaves are 
                   provided: both outer and inner tags are translated
                   to the values in tag-1 and tag-2, respectively.

                 - translate 2 with tag-1 leaf is provided: the 
                   outer tag is popped while the inner tag is 
                   translated to the value in tag-1.";
            }
          }
          leaf tag-1 {
            when 'not(../pop)';
            type dot1q-types:vlanid;
            description
              "A first tag to be used for push or translate 
               operations. This tag will be used as the outermost tag
               as a result of the tag operation.";
          }
          leaf tag-1-type {
            type dot1q-types:dot1q-tag-type;
            default "dot1q-types:s-vlan";
            description
              "Specifies a specific 802.1Q tag type of tag-1.";
          }
          leaf tag-2 {
            when 'not(../pop)';
            type dot1q-types:vlanid;
            description
              "A second tag to be used for push or translate 
               operations.";
          }
          leaf tag-2-type {
            type dot1q-types:dot1q-tag-type;
            default "dot1q-types:c-vlan";
            description
              "Specifies a specific 802.1Q tag type of tag-2.";
          }
        }
      }
    }
    choice l2-service {
      description
        "The Layer 2 connectivity service can be provided by 
         indicating a pointer to an L2VPN or by specifying a Layer 2
         tunnel service.";
      container l2-tunnel-service {
        description
          "Defines a Layer 2 tunnel termination.";
        uses ac-common:l2-tunnel-service;
      }
      case l2vpn {
        leaf l2vpn-id {
          type vpn-common:vpn-id;
          description
            "Indicates the L2VPN service associated with an 
             Integrated Routing and Bridging (IRB) interface.";
        }
      }
    }
  }

  grouping l2-connection-if-ref {
    description
      "Specifies Layer 2 connection paramters with interface 
       references.";
    uses l2-connection;
    leaf l2-termination-point {
      type string;
      description
        "Specifies a reference to a local Layer 2 termination point,
         such as a Layer 2 sub-interface.";
    }
    leaf local-bridge-reference {
      type string;
      description
        "Specifies a local bridge reference to accommodate, e.g.,
         implementations that require internal bridging.
         A reference may be a local bridge domain.";
    }
    leaf bearer-reference {
      if-feature "vpn-common:bearer-reference";
      type string;
      description
        "This is an internal reference for the service provider to
         identify the bearer associated with this AC.";
    }
    container lag-interface {
      if-feature "vpn-common:lag-interface";
      description
        "Container for configuration of Link Aggregation Group (LAG)
         interface attributes.";
      leaf lag-interface-id {
        type string;
        description
          "LAG interface identifier.";
      }
      container member-link-list {
        description
          "Container for the member link list.";
        list member-link {
          key "name";
          description
            "Member link.";
          leaf name {
            type string;
            description
              "Member link name.";
          }
        }
      }
    }
  }

  // IPv4 connection groupings

  grouping ipv4-connection {
    description
      "IPv4-specific parameters.";
    leaf local-address {
      type inet:ipv4-address;
      description
        "The IP address used at the provider's interface.";
    }
    uses ac-common: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 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 dyncamically 
                   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 access.";
          }
          choice service-type {
            description
              "Choice based on the DHCP service type.";
            case relay {
              description
                "Container for a list of the provider's DHCP servers
                 (i.e., 'dhcp-service-type' is set to 'relay').";
              leaf-list server-ip-address {
                type inet:ipv4-address;
                description
                  "IPv4 addresses of the provider's DHCP server, for
                   use by the local DHCP relay.";
              }
            }
          }
        }
        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.";
          }
        }
      }
    }
  }

  grouping ipv6-connection {
    description
      "IPv6-specific parameters.";
    leaf local-address {
      type inet:ipv6-address;
      description
        "IPv6 address of the provider side.";
    }
    uses ac-common: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 dyncamically 
                   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 service-type {
            description
              "Choice based on the DHCP service type.";
            case relay {
              description
                "Container for a list of the provider's DHCP servers
                 (i.e., 'dhcp-service-type' is set to 'relay').";
              leaf-list server-ip-address {
                type inet:ipv6-address;
                description
                  "IPv6 addresses of the provider's DHCP server, for
                   use by the local DHCP relay.";
              }
            }
          }
        }
        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 IPv4 addresses that are used.";
        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 address of 
             the connection.";
          leaf address-id {
            type string;
            description
              "An identifier of the static IPv4 address.";
          }
          leaf customer-address {
            type inet:ipv6-address;
            description
              "An IPv6 address of the customer side.";
          }
        }
      }
    }
  }

  grouping ip-connection {
    description
      "Defines IP connection parameters.";
    leaf l3-termination-point {
      type string;
      description
        "Specifies a reference to a local Layer 3 termination point,
         such as a bridge domain interface.";
    }
    container ipv4 {
      if-feature "vpn-common:ipv4";
      description
        "IPv4-specific parameters.";
      uses ipv4-connection;
    }
    container ipv6 {
      if-feature "vpn-common:ipv6";
      description
        "IPv6-specific parameters.";
      uses ipv6-connection;
    }
  }

  /* Routing */
  //BGP base parameters

  grouping bgp-base {
    description
      "Configuration specific to BGP.";
    leaf description {
      type string;
      description
        "Includes a description of the BGP session. This description 
         is meant to be used for diagnostic purposes. The semantic 
         of the description is local to an implementation.";
    }
    uses rt-pol:apply-policy-group;
    leaf local-as {
      type inet:as-number;
      description
        "Indicates a local AS Number (ASN), if an ASN distinct from
         the ASN configured at the AC level is needed.";
    }
    leaf peer-as {
      type inet:as-number;
      mandatory true;
      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 multihop {
      type uint8;
      description
        "Describes the number of IP hops allowed between a given BGP
         neighbor and the PE.";
    }
    leaf as-override {
      type boolean;
      description
        "Defines whether ASN override is enabled, i.e., replacing the
         ASN of the customer specified in the AS_PATH attribute with
         the local ASN.";
    }
    leaf allow-own-as {
      type uint8;
      description
        "If set, specifies the maximum number of occurrences of the
         provider's ASN that are permitted within the AS_PATH
         before it is rejected.";
    }
    leaf prepend-global-as {
      type boolean;
      description
        "In some situations, the ASN that is provided at the node
         level may be distinct from the ASN configured at the AC.
         When such ASNs are provided, they are both prepended to the
         BGP route updates for this AC. To disable that behavior,
         'prepend-global-as' must be set to 'false'.  In such a
         case, the ASN that is provided at the node level is not
         prepended to the BGP route updates for this access.";
    }
    leaf send-default-route {
      type boolean;
      description
        "Defines whether default routes can be advertised to a peer.
         If set, the default routes are advertised to a peer.";
    }
    leaf site-of-origin {
      when "../address-family = 'vpn-common:ipv4' "
         + "or 'vpn-common:dual-stack'" {
        description
          "Only applies if IPv4 is activated.";
      }
      type rt-types:route-origin;
      description
        "The Site of Origin attribute is encoded as a Route Origin
         Extended Community. It is meant to uniquely identify the
         set of routes learned from a site via a particular AC and
         is used to prevent routing loops.";
      reference
        "RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs),
                   Section 7";
    }
    leaf ipv6-site-of-origin {
      when "../address-family = 'vpn-common:ipv6' "
         + "or 'vpn-common:dual-stack'" {
        description
          "Only applies if IPv6 is activated.";
      }
      type rt-types:ipv6-route-origin;
      description
        "The IPv6 Site of Origin attribute is encoded as an IPv6 
         Route Origin Extended Community.  It is meant to uniquely 
         identify the set of routes learned from a site.";
      reference
        "RFC 5701: IPv6 Address Specific BGP Extended Community
                   Attribute";
    }
    list redistribute-connected {
      key "address-family";
      description
        "Indicates, per address family, the policy to follow for
         connected routes.";
      leaf address-family {
        type identityref {
          base vpn-common:address-family;
        }
        description
          "Indicates the address family.";
      }
      leaf enable {
        type boolean;
        description
          "Enables the redistribution of connected routes.";
      }
    }
    container bgp-max-prefix {
      description
        "Controls the behavior when a prefix maximum is reached.";
      leaf max-prefix {
        type uint32;
        description
          "Indicates the maximum number of BGP prefixes allowed in 
           the BGP session.

           It allows control of how many prefixes can be received 
           from a neighbor.

           If the limit is exceeded, the action indicated in
           'violate-action' will be followed.";
        reference
          "RFC 4271: A Border Gateway Protocol 4 (BGP-4),
                     Section 8.2.2";
      }
      leaf warning-threshold {
        type decimal64 {
          fraction-digits 5;
          range "0..100";
        }
        units "percent";
        description
          "When this value is reached, a warning notification will be
           triggered.";
      }
      leaf violate-action {
        type enumeration {
          enum warning {
            description
              "Only a warning message is sent to the peer when the
               limit is exceeded.";
          }
          enum discard-extra-paths {
            description
              "Discards extra paths when the limit is exceeded.";
          }
          enum restart {
            description
              "The BGP session restarts after the indicated time
               interval.";
          }
        }
        description
          "If the BGP neighbor 'max-prefix' limit is reached, the 
           action indicated in 'violate-action' will be followed.";
      }
      leaf restart-timer {
        type uint32;
        units "seconds";
        description
          "Time interval after which the BGP session will be
           reestablished.";
      }
    }
    container bgp-timers {
      description
        "Includes two BGP timers.";
      leaf keepalive {
        type uint16 {
          range "0..21845";
        }
        units "seconds";
        description
          "This timer indicates the KEEPALIVE messages' frequency
           between a PE and a BGP peer.

           If set to '0', it indicates that KEEPALIVE messages are
           disabled.

           It is suggested that the maximum time between KEEPALIVE
           messages be one-third of the Hold Time interval.";
        reference
          "RFC 4271: A Border Gateway Protocol 4 (BGP-4),
                     Section 4.4";
      }
      leaf hold-time {
        type uint16 {
          range "0 | 3..65535";
        }
        units "seconds";
        description
          "Indicates the maximum number of seconds that may elapse
           between the receipt of successive KEEPALIVE and/or UPDATE
           messages from the peer.

           The Hold Time must be either zero or at least three
           seconds.";
        reference
          "RFC 4271: A Border Gateway Protocol 4 (BGP-4),
                     Section 4.2";
      }
    }
  }

  // RIP base parameters

  grouping rip-base {
    description
      "Configuration specific to RIP routing.";
    leaf address-family {
      type identityref {
        base vpn-common:address-family;
      }
      description
        "Indicates whether IPv4, IPv6, or both address families are
         to be activated.";
    }
    container timers {
      description
        "Indicates the RIP timers.";
      reference
        "RFC 2453: RIP Version 2";
      leaf update-interval {
        type uint16 {
          range "1..32767";
        }
        units "seconds";
        description
          "Indicates the RIP update time, i.e., the amount of time
           for which RIP updates are sent.";
      }
      leaf invalid-interval {
        type uint16 {
          range "1..32767";
        }
        units "seconds";
        description
          "The interval before a route is declared invalid after no
           updates are received. This value is at least three times
           the value for the 'update-interval' argument.";
      }
      leaf holddown-interval {
        type uint16 {
          range "1..32767";
        }
        units "seconds";
        description
          "Specifies the interval before better routes are 
           released.";
      }
      leaf flush-interval {
        type uint16 {
          range "1..32767";
        }
        units "seconds";
        description
          "Indicates the RIP flush timer, i.e., the amount of time
           that must elapse before a route is removed from the
           routing table.";
      }
    }
    leaf default-metric {
      type uint8 {
        range "0..16";
      }
      description
        "Sets the default metric.";
    }
  }

  // routing profile

  grouping routing-profile {
    description
      "Defines routing protocols.";
    list routing-protocol {
      key "id";
      description
        "List of routing protocols used on the AC.";
      leaf id {
        type string;
        description
          "Unique identifier for the routing protocol.";
      }
      leaf type {
        type identityref {
          base vpn-common:routing-protocol-type;
        }
        description
          "Type of routing protocol.";
      }
      container bgp {
        when "derived-from-or-self(../type, "
           + "'vpn-common:bgp-routing')" {
          description
            "Only applies when the protocol is BGP.";
        }
        description
          "Configuration specific to BGP.";
        uses bgp-base;
      }
      container ospf {
        when "derived-from-or-self(../type, "
           + "'vpn-common:ospf-routing')" {
          description
            "Only applies when the protocol is OSPF.";
        }
        description
          "Configuration specific to OSPF.";
        uses ac-common:ospf-basic;
        leaf max-lsa {
          type uint32 {
            range "1..4294967294";
          }
          description
            "Maximum number of allowed Link State Advertisements
             (LSAs) that the OSPF instance will accept.";
        }
      }
      container isis {
        when "derived-from-or-self(../type, "
           + "'vpn-common:isis-routing')" {
          description
            "Only applies when the protocol is IS-IS.";
        }
        description
          "Configuration specific to IS-IS.";
        uses ac-common:isis-basic;
        leaf level {
          type identityref {
            base vpn-common:isis-level;
          }
          description
            "Can be 'level-1', 'level-2', or 'level-1-2'.";
          reference
            "RFC 9181: A Common YANG Data Model for Layer 2 
                       and Layer 3 VPNs";
        }
        leaf metric {
          type uint16;
          description
            "Metric of the AC. It is used in the routing state
             calculation and path selection.";
        }
        leaf mode {
          type enumeration {
            enum active {
              description
                "The interface sends or receives IS-IS protocol
                 control packets.";
            }
            enum passive {
              description
                "Suppresses the sending of IS-IS updates through the
                 specified interface.";
            }
          }
          description
            "IS-IS interface mode type.";
        }
      }
      container rip {
        when "derived-from-or-self(../type, "
           + "'vpn-common:rip-routing')" {
          description
            "Only applies when the protocol is RIP.";
        }
        description
          "Configuration specific to RIP routing.";
        uses rip-base;
      }
      container vrrp {
        when "derived-from-or-self(../type, "
           + "'vpn-common:vrrp-routing')" {
          description
            "Only applies when the protocol is the Virtual Router
             Redundancy Protocol (VRRP).";
        }
        description
          "Configuration specific to VRRP.";
        reference
          "RFC 5798: Virtual Router Redundancy Protocol (VRRP)
                     Version 3 for IPv4 and IPv6";
        leaf address-family {
          type identityref {
            base vpn-common:address-family;
          }
          description
            "Indicates whether IPv4, IPv6, or both address families
             are to be enabled.";
        }
        leaf ping-reply {
          type boolean;
          description
            "Controls whether the VRRP speaker should reply to ping
             requests.";
        }
      }
    }
  }

  grouping routing {
    description
      "Defines routing protocols.";
    list routing-protocol {
      key "id";
      description
        "List of routing protocols used on the AC.";
      leaf id {
        type string;
        description
          "Unique identifier for the routing protocol.";
      }
      leaf type {
        type identityref {
          base vpn-common:routing-protocol-type;
        }
        description
          "Type of routing protocol.";
      }
      list routing-profiles {
        key "id";
        description
          "Routing profiles.";
        leaf id {
          type routing-profile-reference;
          description
            "Routing profile to be used.";
        }
        leaf type {
          type identityref {
            base vpn-common:ie-type;
          }
          description
            "Import, export, or both.";
        }
      }
      container static {
        when "derived-from-or-self(../type, "
           + "'vpn-common:static-routing')" {
          description
            "Only applies when the protocol is a static routing
             protocol.";
        }
        description
          "Configuration specific to static routing.";
        container cascaded-lan-prefixes {
          description
            "LAN prefixes from the customer.";
          list ipv4-lan-prefixes {
            if-feature "vpn-common:ipv4";
            key "lan next-hop";
            description
              "List of LAN prefixes for the site.";
            uses ac-common:ipv4-static-rtg-entry;
            leaf bfd-enable {
              if-feature "vpn-common:bfd";
              type boolean;
              description
                "Enables BFD.";
            }
            leaf preference {
              type uint32;
              description
                "Indicates the preference associated with the static
                 route.";
            }
            uses vpn-common:service-status;
          }
          list ipv6-lan-prefixes {
            if-feature "vpn-common:ipv6";
            key "lan next-hop";
            description
              "List of LAN prefixes for the site.";
            uses ac-common:ipv4-static-rtg-entry;
            leaf bfd-enable {
              if-feature "vpn-common:bfd";
              type boolean;
              description
                "Enables BFD.";
            }
            leaf preference {
              type uint32;
              description
                "Indicates the preference associated with the static
                 route.";
            }
            uses vpn-common:service-status;
          }
        }
      }
      container bgp {
        when "derived-from-or-self(../type, "
           + "'vpn-common:bgp-routing')" {
          description
            "Only applies when the protocol is BGP.";
        }
        description
          "Configuration specific to BGP.";
        container peer-groups {
          description
            "Configuration for BGP peer-groups";
          list peer-group {
            key "name";
            description
              "List of BGP peer-groups configured on the local 
               system - uniquely identified by peer-group name";
            leaf name {
              type string;
              description
                "Name of the BGP peer-group";
            }
            leaf local-address {
              type union {
                type inet:ip-address;
                type if:interface-ref;
              }
              description
                "Sets the local IP address to use for the BGP 
                 transport session. This may be expressed as either 
                 an IP address or a reference to an interface.";
            }
            uses bgp-base;
            uses ac-common:bgp-authentication;
          }
        }
        list neighbor {
          key "remote-address";
          description
            "List of BGP neighbors.";
          leaf remote-address {
            type inet:ip-address;
            description
              "The remote IP address of this entry's BGP peer.";
          }
          leaf local-address {
            type union {
              type inet:ip-address;
              type if:interface-ref;
            }
            description
              "Sets the local IP address to use for
               the BGP transport session.  This may be
               expressed as either an IP address or a
               reference to an interface.";
          }
          leaf peer-group {
            type leafref {
              path "../../peer-groups/peer-group/name";
            }
            description
              "The peer-group with which this neighbor is
               associated.";
          }
          uses bgp-base;
          uses ac-common:bgp-authentication;
          uses vpn-common:service-status;
        }
      }
      container ospf {
        when "derived-from-or-self(../type, "
           + "'vpn-common:ospf-routing')" {
          description
            "Only applies when the protocol is OSPF.";
        }
        description
          "Configuration specific to OSPF.";
        uses ac-common:ospf-basic;
        container sham-links {
          if-feature "vpn-common:rtg-ospf-sham-link";
          description
            "List of sham links.";
          reference
            "RFC 4577: OSPF as the Provider/Customer Edge Protocol
                       for BGP/MPLS IP Virtual Private Networks
                       (VPNs), Section 4.2.7
             RFC 6565: OSPFv3 as a Provider Edge to Customer Edge
                       (PE-CE) Routing Protocol, Section 5";
          list sham-link {
            key "target-site";
            description
              "Creates a sham link with another
               site.";
            leaf target-site {
              type string;
              description
                "Target site for the sham link connection. The site
                 is referred to by its identifier.";
            }
            leaf metric {
              type uint16;
              description
                "Metric of the sham link. It is used in the routing
                 state calculation and path selection.";
              reference
                "RFC 4577: OSPF as the Provider/Customer Edge 
                           Protocol for BGP/MPLS IP Virtual Private
                           Networks (VPNs), Section 4.2.7.3
                 RFC 6565: OSPFv3 as a Provider Edge to Customer Edge
                           (PE-CE) Routing Protocol, Section 5.2";
            }
          }
        }
        leaf max-lsa {
          type uint32 {
            range "1..4294967294";
          }
          description
            "Maximum number of allowed Link State Advertisements
             (LSAs) that the OSPF instance will accept.";
        }
        uses ac-common:ospf-authentication;
        uses vpn-common:service-status;
      }
      container isis {
        when "derived-from-or-self(../type, "
           + "'vpn-common:isis-routing')" {
          description
            "Only applies when the protocol is
             IS-IS.";
        }
        description
          "Configuration specific to IS-IS.";
        uses ac-common:isis-basic;
        leaf level {
          type identityref {
            base vpn-common:isis-level;
          }
          description
            "Can be 'level-1', 'level-2', or 'level-1-2'.";
          reference
            "RFC 9181: A Common YANG Data Model for Layer 2 and
                       Layer 3 VPNs";
        }
        leaf metric {
          type uint16;
          description
            "Metric of the PE-CE link. It is used in the routing 
             state calculation and path selection.";
        }
        leaf mode {
          type enumeration {
            enum active {
              description
                "The interface sends or receives
                 IS-IS protocol control packets.";
            }
            enum passive {
              description
                "Suppresses the sending of IS-IS
                 updates through the specified
                 interface.";
            }
          }
          description
            "IS-IS interface mode type.";
        }
        uses ac-common:isis-authentication;
        uses vpn-common:service-status;
      }
      container rip {
        when "derived-from-or-self(../type, "
           + "'vpn-common:rip-routing')" {
          description
            "Only applies when the protocol is RIP.
             For IPv4, the model assumes that RIP
             version 2 is used.";
        }
        description
          "Configuration specific to RIP routing.";
        uses rip-base;
        uses ac-common:rip-authentication;
        uses vpn-common:service-status;
      }
      container vrrp {
        when "derived-from-or-self(../type, "
           + "'vpn-common:vrrp-routing')" {
          description
            "Only applies when the protocol is the VRRP.";
        }
        description
          "Configuration specific to VRRP.";
        reference
          "RFC 5798: Virtual Router Redundancy Protocol (VRRP)
                     Version 3 for IPv4 and IPv6";
        leaf address-family {
          type identityref {
            base vpn-common:address-family;
          }
          description
            "Indicates whether IPv4, IPv6, or both address families
             are to be enabled.";
        }
        leaf vrrp-group {
          type uint8 {
            range "1..255";
          }
          description
            "Includes the VRRP group identifier.";
        }
        leaf backup-peer {
          type inet:ip-address;
          description
            "Indicates the IP address of the peer.";
        }
        leaf-list virtual-ip-address {
          type inet:ip-address;
          description
            "Virtual IP addresses for a single VRRP
             group.";
          reference
            "RFC 5798: Virtual Router Redundancy Protocol (VRRP)
                       Version 3 for IPv4 and IPv6, Sections 1.2
                       and 1.3";
        }
        leaf priority {
          type uint8 {
            range "1..254";
          }
          description
            "Sets the local priority of the VRRP speaker.";
        }
        leaf ping-reply {
          type boolean;
          description
            "Controls whether the VRRP speaker should reply to ping
             requests.";
        }
        uses vpn-common:service-status;
      }
    }
  }

  // OAM

  grouping bfd {
    description
      "Grouping for BFD.";
    leaf session-type {
      type identityref {
        base vpn-common:bfd-session-type;
      }
      description
        "Specifies the BFD session type.";
    }
    leaf desired-min-tx-interval {
      type uint32;
      units "microseconds";
      description
        "The minimum interval between transmissions of BFD Control
         packets, as desired by the operator.";
      reference
        "RFC 5880: Bidirectional Forwarding Detection (BFD),
                   Section 6.8.7";
    }
    leaf required-min-rx-interval {
      type uint32;
      units "microseconds";
      description
        "The minimum interval between received BFD Control packets 
         that the PE should support.";
      reference
        "RFC 5880: Bidirectional Forwarding Detection (BFD),
                   Section 6.8.7";
    }
    leaf local-multiplier {
      type uint8 {
        range "1..255";
      }
      description
        "Specifies the detection multiplier that is transmitted to a
         BFD peer.

         The detection interval for the receiving BFD peer is
         calculated by multiplying the value of the negotiated
         transmission interval by the received detection multiplier
         value.";
      reference
        "RFC 5880: Bidirectional Forwarding Detection (BFD),
                   Section 6.8.7";
    }
    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.";
      reference
        "RFC 5880: Bidirectional Forwarding Detection (BFD),
                   Section 6.8.18";
    }
  }

  // OAM

  grouping oam {
    description
      "Defines the Operations, Administration, and Maintenance
       (OAM) mechanisms used.";
    container bfd {
      description
        "Container for BFD.";
      leaf profile {
        type bfd-profile-reference;
        description
          "Well-known service provider profile name.";
      }
      uses bfd;
      container authentication {
        presence "Enables BFD authentication";
        description
          "Parameters for BFD authentication.";
        leaf key-chain {
          type key-chain:key-chain-ref;
          description
            "Name of the key chain.";
        }
        leaf meticulous {
          type boolean;
          description
            "Enables meticulous mode.";
          reference
            "RFC 5880: Bidirectional Forwarding Detection (BFD),
                       Section 6.7";
        }
      }
      uses vpn-common:service-status;
    }
  }

  // security

  grouping security {
    description
      "Security parameters for an AC.";
    container encryption {
      if-feature "vpn-common:encryption";
      description
        "Container for AC encryption.";
      leaf enabled {
        type boolean;
        description
          "If set to 'true', traffic encryption on the connection is
           required. Otherwise, it is disabled.";
      }
      leaf layer {
        when "../enabled = 'true'" {
          description
            "Included only when encryption is enabled.";
        }
        type enumeration {
          enum layer2 {
            description
              "Encryption occurs at Layer 2.";
          }
          enum layer3 {
            description
              "Encryption occurs at Layer 3. For example, IPsec
               may be used when a customer requests Layer 3
               encryption.";
          }
        }
        description
          "Indicates the layer on which encryption is applied.";
      }
    }
    container encryption-profile {
      when "../encryption/enabled = 'true'" {
        description
          "Indicates the layer on which encryption is enabled.";
      }
      description
        "Container for the encryption profile.";
      choice profile {
        description
          "Choice for the encryption profile.";
        case provider-profile {
          leaf profile-name {
            type encryption-profile-reference;
            description
              "Name of the provider's profile to be applied.";
          }
        }
        case customer-profile {
          leaf customer-key-chain {
            type key-chain:key-chain-ref;
            description
              "Customer-supplied key chain.";
          }
        }
      }
    }
  }

  // AC profile

  grouping ac-profile {
    description
      "Grouping for attachment circuit profiles.";
    container l2-connection {
      description
        "Defines Layer 2 protocols and parameters that
         are required to enable AC connectivity.";
      //uses l2-connection;
    }
    container ip-connection {
      description
        "Defines IP connection parameters.";
      //uses l3-connection;
    }
    container routing-protocols {
      description
        "Defines routing protocols.";
      uses routing-profile;
    }
    container oam {
      description
        "Defines the OAM mechanisms used for the AC profile.";
      container bfd {
        if-feature "vpn-common:bfd";
        description
          "Container for BFD.";
        uses bfd;
      }
    }
  }

  //AC network provisioning 

  grouping ac {
    description
      "Grouping for attachment circuits.";
    leaf description {
      type string;
      description
        "Associates a description with an AC.";
    }
    container l2-connection {
      description
        "Defines Layer 2 protocols and parameters that are required
         to enable AC connectivity.";
      uses l2-connection-if-ref;
    }
    container ip-connection {
      description
        "Defines IP connection parameters.";
      uses ip-connection;
    }
    container routing-protocols {
      description
        "Defines routing protocols.";
      uses routing;
    }
    container oam {
      description
        "Defines the OAM mechanisms used for the AC.";
      uses oam;
    }
    container security {
      description
        "AC-specific security parameters.";
      uses security;
    }
    container service {
      description
        "AC-specific bandwith parameters.";
      leaf mtu {
        type uint32;
        units "bytes";
        description
          "Layer 2 MTU.";
      }
      uses ac-svc:bandwidth;
      container qos {
        if-feature "vpn-common:qos";
        description
          "QoS configuration.";
        container qos-profiles {
          description
            "QoS profile configuration.";
          list qos-profile {
            key "profile";
            description
              "Points to a QoS profile.";
            leaf profile {
              type qos-profile-reference;
              description
                "QoS profile to be used.";
            }
            leaf direction {
              type identityref {
                base vpn-common:qos-profile-direction;
              }
              description
                "The direction to which the QoS profile
                 is applied.";
            }
          }
        }
      }
      container access-control-list {
        description
          "Container for the Access Control List (ACL).";
        container acl-profiles {
          description
            "ACL profile configuration.";
          list acl-profile {
            key "profile";
            description
              "Points to an ACL profile.";
            leaf profile {
              type forwarding-profile-reference;
              description
                "Forwarding profile to be used.";
            }
          }
        }
      }
    }
  }

  augment "/nw:networks/nw:network" {
    description
      "Add a list of profiles.";
    container specific-provisioning-profiles {
      description
        "Contains a set of valid profiles to reference in the AC
         activation.";
      uses ac-common:ac-profile-cfg;
    }
    list ac-profile {
      key "name";
      description
        "Specifies a list of AC profiles.";
      leaf name {
        type string;
        description
          "Name of the AC.";
      }
      uses ac-ntw:ac-profile;
    }
  }

  augment "/nw:networks/nw:network/nw:node" {
    when '../nw:network-types/sap:sap-network' {
      description
        "Augmentation parameters apply only for SAP networks.";
    }
    description
      "Augments nodes with AC provisioning details.";
    list ac {
      key "name";
      description
        "List of ACs.";
      leaf name {
        type string;
        description
          "A name that identifies the AC locally.";
      }
      leaf ac-svc-ref {
        type ac-svc:attachment-circuit-reference;
        description
          "A reference to the AC as exposed at the service level.";
      }
      list ac-profile {
        key "profile-id";
        description
          "List of AC profiles.";
        leaf profile-id {
          type ac-profile-reference;
          description
            "A reference to an AC profile.";
        }
      }
      leaf ac-parent-ref {
        type ac-ntw:attachment-circuit-reference;
        description
          "Specifies the parent AC that is inherited by an AC.
           Parent ACs are used, e.g., in contexts where multiple
           CEs are terminating the same AC, but some specific
           information is required for each peer SAP.";
      }
      leaf-list peer-sap-id {
        type string;
        description
          "One or more peer SAPs can be indicated.";
      }
      list group {
        key "group-id";
        description
          "List of group-ids.";
        leaf group-id {
          type string;
          description
            "Indicates the group-id to which the AC belongs.";
        }
        leaf precedence {
          type identityref {
            base ac-common:precedence-type;
          }
          description
            "Defines redundancy of an AC.";
        }
      }
      uses vpn-common:service-status;
      uses ac-ntw:ac;
    }
  }

  augment "/nw:networks/nw:network/nw:node"
        + "/sap:service/sap:sap" {
    when '../../../nw:network-types/sap:sap-network' {
      description
        "Augmentation parameters apply only for SAP networks.";
    }
    description
      "Augments SAPs with AC provisioning details.";
    leaf-list ac {
      type ac-ntw:attachment-circuit-reference;
      description
        "Specifies the ACs that are terminated by the SAP.";
    }
  }
}
<CODE ENDS>
]]></sourcecode>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The YANG module specified in this document defines a schema for data
   that is designed to be accessed via network management protocols such
   as NETCONF <xref target="RFC6241"/> or RESTCONF <xref target="RFC8040"/>.  The lowest NETCONF layer
   is the secure transport layer, and the mandatory-to-implement secure
   transport is Secure Shell (SSH) <xref target="RFC6242"/>.  The lowest RESTCONF layer
   is HTTPS, and the mandatory-to-implement secure transport is TLS
   <xref target="RFC8446"/>.</t>
      <t>The Network Configuration Access Control Model (NACM) <xref target="RFC8341"/>
   provides the means to restrict access for particular NETCONF or
   RESTCONF users to a preconfigured subset of all available NETCONF or
   RESTCONF protocol operations and content.</t>
      <t>There are a number of data nodes defined in this YANG module that are
   writable/creatable/deletable (i.e., config true, which is the
   default).  These data nodes may be considered sensitive or vulnerable
   in some network environments.  Write operations (e.g., edit-config)
   and delete operations to these data nodes without proper protection
   or authentication can have a negative effect on network operations.
   These are the subtrees and data nodes and their sensitivity/
   vulnerability in the "ietf-ac-ntw" module:</t>
      <dl>
        <dt>'specific-provisioning-profiles':</dt>
        <dd>
          <t>This container includes a set of sensitive data that
 influence how an AC is delivered.  For example, an
 attacker who has access to these data nodes may be able to
 manipulate routing policies, QoS policies, or encryption
 properties. These data nodes are defined with "nacm:default-deny-
 write" tagging <xref target="I-D.ietf-opsawg-teas-common-ac"/>.</t>
        </dd>
        <dt>'ac':</dt>
        <dd>
          <t>An attacker who is able to access network nodes can
 undertake various attacks, such as modify the attributes of an AC (e.g.,
 QoS, bandwidth, routing protocols, keying material), leading to
 malfunctioning of services that are delivered over that AC and therefore to Service Level
 Agreement (SLA) violations.  In addition, an attacker could
 attempt to add a new AC.
    : In addition to using NACM to prevent unauthorized access, such
 activity can be detected by adequately monitoring and tracking
 network configuration changes.</t>
        </dd>
      </dl>
      <t>Some of the readable data nodes in this YANG module may be considered
   sensitive or vulnerable in some network environments.  It is thus
   important to control read access (e.g., via get, get-config, or
   notification) to these data nodes.  These are the subtrees and data
   nodes and their sensitivity/vulnerability in the "ietf-ac-svc" module:</t>
      <dl>
        <dt>'ac':</dt>
        <dd>
          <t>Unauthorized access to this subtree can disclose the identity
 of a customer 'peer-sap-id'.</t>
        </dd>
        <dt>'l2-connection' and 'ip-connection':</dt>
        <dd>
          <t>An attacker can retrieve
privacy-related information, which can be used to track a
customer.  Disclosing such information may be considered a
violation of the customer-provider trust relationship.</t>
        </dd>
        <dt>'keying-material':</dt>
        <dd>
          <t>An attacker can retrieve the cryptographic keys
protecting an AC (routing, in particular). These keys could
be used to inject spoofed routing  advertisements.</t>
        </dd>
      </dl>
      <t>Several data nodes ('bgp', 'ospf', 'isis', and 'rip') rely upon <xref target="RFC8177"/> for authentication purposes. As such, the AC network module inherits the security considerations discussed in Section 5 of <xref target="RFC8177"/>. Also, these data nodes 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 AC network 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-ntw
   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-ntw
   Namespace:  urn:ietf:params:xml:ns:yang:ietf-ac-ntw
   Prefix:  ac-ntw
   Maintained by IANA?  N
   Reference:  RFC XXXX
]]></artwork>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="IEEE802.1Qcp" target="https://doi.org/10.1109/IEEESTD.2018.8467507">
          <front>
            <title>IEEE Standard for Local and metropolitan area networks--Bridges and Bridged Networks--Amendment 30: YANG Data Model</title>
            <author>
              <organization>IEEE</organization>
            </author>
            <date year="2018" month="September"/>
          </front>
        </reference>
        <reference anchor="I-D.ietf-opsawg-teas-attachment-circuit">
          <front>
            <title>YANG Data Models for '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="1" month="December" year="2023"/>
            <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.

   Also, the document specifies a set of reusable groupings.  Whether
   other service models reuse structures defined in the AC models or
   simply include an AC reference is a design choice of these service
   models.  Utilizing the AC service model to manage ACs over which a
   service is delivered has the advantage of decoupling service
   management from upgrading AC components to incorporate recent AC
   technologies or features.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-opsawg-teas-attachment-circuit-03"/>
        </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="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="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="I-D.ietf-opsawg-teas-common-ac">
          <front>
            <title>A Common 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="28" month="November" year="2023"/>
            <abstract>
              <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>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-opsawg-teas-common-ac-02"/>
        </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="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </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="RFC5880">
          <front>
            <title>Bidirectional Forwarding Detection (BFD)</title>
            <author fullname="D. Katz" initials="D." surname="Katz"/>
            <author fullname="D. Ward" initials="D." surname="Ward"/>
            <date month="June" year="2010"/>
            <abstract>
              <t>This document describes a protocol intended to detect faults in the bidirectional path between two forwarding engines, including interfaces, data link(s), and to the extent possible the forwarding engines themselves, with potentially very low latency. It operates independently of media, data protocols, and routing protocols. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5880"/>
          <seriesInfo name="DOI" value="10.17487/RFC5880"/>
        </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="RFC9067">
          <front>
            <title>A YANG Data Model for Routing Policy</title>
            <author fullname="Y. Qu" initials="Y." surname="Qu"/>
            <author fullname="J. Tantsura" initials="J." surname="Tantsura"/>
            <author fullname="A. Lindem" initials="A." surname="Lindem"/>
            <author fullname="X. Liu" initials="X." surname="Liu"/>
            <date month="October" year="2021"/>
            <abstract>
              <t>This document defines a YANG data model for configuring and managing routing policies in a vendor-neutral way. The model provides a generic routing policy framework that can be extended for specific routing protocols using the YANG 'augment' mechanism.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9067"/>
          <seriesInfo name="DOI" value="10.17487/RFC9067"/>
        </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="RFC5701">
          <front>
            <title>IPv6 Address Specific BGP Extended Community Attribute</title>
            <author fullname="Y. Rekhter" initials="Y." surname="Rekhter"/>
            <date month="November" year="2009"/>
            <abstract>
              <t>Current specifications of BGP Extended Communities (RFC 4360) support the IPv4 Address Specific Extended Community, but do not support an IPv6 Address Specific Extended Community. The lack of an IPv6 Address Specific Extended Community may be a problem when an application uses the IPv4 Address Specific Extended Community, and one wants to use this application in a pure IPv6 environment. This document defines a new BGP attribute, the IPv6 Address Specific Extended Community, that addresses this problem. The IPv6 Address Specific Extended Community is similar to the IPv4 Address Specific Extended Community, except that it carries an IPv6 address rather than an IPv4 address. [STANDARDS TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5701"/>
          <seriesInfo name="DOI" value="10.17487/RFC5701"/>
        </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="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="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="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="RFC4552">
          <front>
            <title>Authentication/Confidentiality for OSPFv3</title>
            <author fullname="M. Gupta" initials="M." surname="Gupta"/>
            <author fullname="N. Melam" initials="N." surname="Melam"/>
            <date month="June" year="2006"/>
            <abstract>
              <t>This document describes means and mechanisms to provide authentication/confidentiality to OSPFv3 using an IPv6 Authentication Header/Encapsulating Security Payload (AH/ESP) extension header. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4552"/>
          <seriesInfo name="DOI" value="10.17487/RFC4552"/>
        </reference>
        <reference anchor="RFC5709">
          <front>
            <title>OSPFv2 HMAC-SHA Cryptographic Authentication</title>
            <author fullname="M. Bhatia" initials="M." surname="Bhatia"/>
            <author fullname="V. Manral" initials="V." surname="Manral"/>
            <author fullname="M. Fanto" initials="M." surname="Fanto"/>
            <author fullname="R. White" initials="R." surname="White"/>
            <author fullname="M. Barnes" initials="M." surname="Barnes"/>
            <author fullname="T. Li" initials="T." surname="Li"/>
            <author fullname="R. Atkinson" initials="R." surname="Atkinson"/>
            <date month="October" year="2009"/>
            <abstract>
              <t>This document describes how the National Institute of Standards and Technology (NIST) Secure Hash Standard family of algorithms can be used with OSPF version 2's built-in, cryptographic authentication mechanism. This updates, but does not supercede, the cryptographic authentication mechanism specified in RFC 2328. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5709"/>
          <seriesInfo name="DOI" value="10.17487/RFC5709"/>
        </reference>
        <reference anchor="RFC7474">
          <front>
            <title>Security Extension for OSPFv2 When Using Manual Key Management</title>
            <author fullname="M. Bhatia" initials="M." surname="Bhatia"/>
            <author fullname="S. Hartman" initials="S." surname="Hartman"/>
            <author fullname="D. Zhang" initials="D." surname="Zhang"/>
            <author fullname="A. Lindem" initials="A." role="editor" surname="Lindem"/>
            <date month="April" year="2015"/>
            <abstract>
              <t>The current OSPFv2 cryptographic authentication mechanism as defined in RFCs 2328 and 5709 is vulnerable to both inter-session and intra- session replay attacks when using manual keying. Additionally, the existing cryptographic authentication mechanism does not cover the IP header. This omission can be exploited to carry out various types of attacks.</t>
              <t>This document defines changes to the authentication sequence number mechanism that will protect OSPFv2 from both inter-session and intra- session replay attacks when using manual keys for securing OSPFv2 protocol packets. Additionally, we also describe some changes in the cryptographic hash computation that will eliminate attacks resulting from OSPFv2 not protecting the IP header.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7474"/>
          <seriesInfo name="DOI" value="10.17487/RFC7474"/>
        </reference>
        <reference anchor="RFC7166">
          <front>
            <title>Supporting Authentication Trailer for OSPFv3</title>
            <author fullname="M. Bhatia" initials="M." surname="Bhatia"/>
            <author fullname="V. Manral" initials="V." surname="Manral"/>
            <author fullname="A. Lindem" initials="A." surname="Lindem"/>
            <date month="March" year="2014"/>
            <abstract>
              <t>Currently, OSPF for IPv6 (OSPFv3) uses IPsec as the only mechanism for authenticating protocol packets. This behavior is different from authentication mechanisms present in other routing protocols (OSPFv2, Intermediate System to Intermediate System (IS-IS), RIP, and Routing Information Protocol Next Generation (RIPng)). In some environments, it has been found that IPsec is difficult to configure and maintain and thus cannot be used. This document defines an alternative mechanism to authenticate OSPFv3 protocol packets so that OSPFv3 does not depend only upon IPsec for authentication.</t>
              <t>The OSPFv3 Authentication Trailer was originally defined in RFC 6506. This document obsoletes RFC 6506 by providing a revised definition, including clarifications and refinements of the procedures.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7166"/>
          <seriesInfo name="DOI" value="10.17487/RFC7166"/>
        </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="RFC5798">
          <front>
            <title>Virtual Router Redundancy Protocol (VRRP) Version 3 for IPv4 and IPv6</title>
            <author fullname="S. Nadas" initials="S." role="editor" surname="Nadas"/>
            <date month="March" year="2010"/>
            <abstract>
              <t>This memo defines the Virtual Router Redundancy Protocol (VRRP) for IPv4 and IPv6. It is version three (3) of the protocol, and it is based on VRRP (version 2) for IPv4 that is defined in RFC 3768 and in "Virtual Router Redundancy Protocol for IPv6". VRRP specifies an election protocol that dynamically assigns responsibility for a virtual router to one of the VRRP routers on a LAN. The VRRP router controlling the IPv4 or IPv6 address(es) associated with a virtual router is called the Master, and it forwards packets sent to these IPv4 or IPv6 addresses. VRRP Master routers are configured with virtual IPv4 or IPv6 addresses, and VRRP Backup routers infer the address family of the virtual addresses being carried based on the transport protocol. Within a VRRP router, the virtual routers in each of the IPv4 and IPv6 address families are a domain unto themselves and do not overlap. The election process provides dynamic failover in the forwarding responsibility should the Master become unavailable. For IPv4, the advantage gained from using VRRP is a higher-availability default path without requiring configuration of dynamic routing or router discovery protocols on every end-host. For IPv6, the advantage gained from using VRRP for IPv6 is a quicker switchover to Backup routers than can be obtained with standard IPv6 Neighbor Discovery mechanisms. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5798"/>
          <seriesInfo name="DOI" value="10.17487/RFC5798"/>
        </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="RFC8294">
          <front>
            <title>Common YANG Data Types for the Routing Area</title>
            <author fullname="X. Liu" initials="X." surname="Liu"/>
            <author fullname="Y. Qu" initials="Y." surname="Qu"/>
            <author fullname="A. Lindem" initials="A." surname="Lindem"/>
            <author fullname="C. Hopps" initials="C." surname="Hopps"/>
            <author fullname="L. Berger" initials="L." surname="Berger"/>
            <date month="December" year="2017"/>
            <abstract>
              <t>This document defines a collection of common data types using the YANG data modeling language. These derived common types are designed to be imported by other modules defined in the routing area.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8294"/>
          <seriesInfo name="DOI" value="10.17487/RFC8294"/>
        </reference>
        <reference anchor="RFC8343">
          <front>
            <title>A YANG Data Model for Interface Management</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>This document defines a YANG data model for the management of network interfaces. It is expected that interface-type-specific data models augment the generic interfaces data model defined in this document. The data model includes definitions for configuration and system state (status information and counters for the collection of statistics).</t>
              <t>The YANG data model in this document conforms to the Network Management Datastore Architecture (NMDA) defined in RFC 8342.</t>
              <t>This document obsoletes RFC 7223.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8343"/>
          <seriesInfo name="DOI" value="10.17487/RFC8343"/>
        </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="RFC6242">
          <front>
            <title>Using the NETCONF Protocol over Secure Shell (SSH)</title>
            <author fullname="M. Wasserman" initials="M." surname="Wasserman"/>
            <date month="June" year="2011"/>
            <abstract>
              <t>This document describes a method for invoking and running the Network Configuration Protocol (NETCONF) within a Secure Shell (SSH) session as an SSH subsystem. This document obsoletes RFC 4742. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6242"/>
          <seriesInfo name="DOI" value="10.17487/RFC6242"/>
        </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="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="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="AC-Ntw-Tree" target="https://github.com/boucadair/attachment-circuit-model/blob/main/yang/full-trees/ac-ntw-without-groupings.txt">
          <front>
            <title>Full Network Attachment Circuit Tree Structure</title>
            <author>
              <organization/>
            </author>
            <date year="2023"/>
          </front>
        </reference>
        <reference anchor="PYANG" target="https://github.com/mbj4668/pyang">
          <front>
            <title>pyang</title>
            <author>
              <organization/>
            </author>
            <date year="2023"/>
          </front>
        </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="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="RFC3644">
          <front>
            <title>Policy Quality of Service (QoS) Information Model</title>
            <author fullname="Y. Snir" initials="Y." surname="Snir"/>
            <author fullname="Y. Ramberg" initials="Y." surname="Ramberg"/>
            <author fullname="J. Strassner" initials="J." surname="Strassner"/>
            <author fullname="R. Cohen" initials="R." surname="Cohen"/>
            <author fullname="B. Moore" initials="B." surname="Moore"/>
            <date month="November" year="2003"/>
            <abstract>
              <t>This document presents an object-oriented information model for representing Quality of Service (QoS) network management policies. This document is based on the IETF Policy Core Information Model and its extensions. It defines an information model for QoS enforcement for differentiated and integrated services using policy. It is important to note that this document defines an information model, which by definition is independent of any particular data storage mechanism and access protocol.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3644"/>
          <seriesInfo name="DOI" value="10.17487/RFC3644"/>
        </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="RFC7880">
          <front>
            <title>Seamless Bidirectional Forwarding Detection (S-BFD)</title>
            <author fullname="C. Pignataro" initials="C." surname="Pignataro"/>
            <author fullname="D. Ward" initials="D." surname="Ward"/>
            <author fullname="N. Akiya" initials="N." surname="Akiya"/>
            <author fullname="M. Bhatia" initials="M." surname="Bhatia"/>
            <author fullname="S. Pallagatti" initials="S." surname="Pallagatti"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document defines Seamless Bidirectional Forwarding Detection (S-BFD), a simplified mechanism for using BFD with a large proportion of negotiation aspects eliminated, thus providing benefits such as quick provisioning, as well as improved control and flexibility for network nodes initiating path monitoring.</t>
              <t>This document updates RFC 5880.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7880"/>
          <seriesInfo name="DOI" value="10.17487/RFC7880"/>
        </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 3847?>

<section anchor="sec-examples">
      <name>Examples</name>
      <section anchor="vpls">
        <name>VPLS</name>
        <t>Let's consider the example depicted in <xref target="ex-topo"/> with two customer terminating points (CE1 and CE2). Let's also assume that the bearers to attach these CEs to the provider network are already in place. References to the identify these bearers are shown in the figure.</t>
        <figure anchor="ex-topo">
          <name>Topology Example</name>
          <artwork align="center"><![CDATA[
            .-----.   .--------------.   .-----.
.----.      | PE1 +===+              +===+ PE2 |      .----.
| CE1+------+"450"|   |     MPLS     |   |"451"+------+ CE2|
'----'   ^  '-----'   |              |   '-----'   ^  '----'
         |            |     Core     |             |  
    Bearer:1234       '--------------'         Bearer:5678
]]></artwork>
        </figure>
        <t>The AC service model <xref target="I-D.ietf-opsawg-teas-attachment-circuit"/> can be used by the provider to manage and expose the ACs over existing bearers as shown in <xref target="ex-ac"/>.</t>
        <figure anchor="ex-ac">
          <name>ACs Created Using ACaaS</name>
          <artwork align="center"><![CDATA[
{
   "ietf-ac-svc:attachment-circuits":{
      "ac-group-profile":[
         {
            "name":"an-ac-profile",
            "l2-connection":{
               "encapsulation":{
                  "encap-type":"ietf-vpn-common:dot1q",
                  "dot1q":{
                     "tag-type":"ietf-vpn-common:c-vlan",
                     "cvlan-id":550
                  }
               }
            },
            "service":{
               "mtu":1550,
               "svc-pe-to-ce-bandwidth":{
                  "pe-to-ce-bandwidth":[
                     {
                        "bw-type":"ietf-vpn-common:bw-per-port",
                        "cir":"20480000"
                     }
                  ]
               },
               "svc-ce-to-pe-bandwidth":{
                  "ce-to-pe-bandwidth":[
                     {
                        "bw-type":"ietf-vpn-common:bw-per-port",
                        "cir":"20480000"
                     }
                  ]
               },
               "qos":{
                  "qos-profile":{
                     "qos-profile":[
                        {
                           "profile":"QoS_Profile_A",
                           "direction":"ietf-vpn-common:both"
                        }
                     ]
                  }
               }
            }
         }
      ],
      "ac":[
         {
            "name":"ac-1",
            "description":"First attachment",
            "ac-group-profile":["an-ac-profile"],
            "l2-connection":{
               "bearer-reference":"1234"
            }
         },
         {
            "name":"ac-2",
            "description":"Second attachment",
            "ac-group-profile": ["an-ac-profile"],
            "l2-connection":{
               "bearer-reference":"5678"
            }
         }
      ]
   }
}
]]></artwork>
        </figure>
        <t>The provisionned AC at PE1 can be retrieved using the AC network model as depicted in <xref target="ex-acntw-query"/>. A similar query can be used for the AC at PE2.</t>
        <figure anchor="ex-acntw-query">
          <name>Example of AC Network Response (Message Body)</name>
          <artwork align="center"><![CDATA[
{
   "ietf-ac-ntw:ac":[
      {
         "name":"ac-11",
         "ac-svc-ref":"ac-1",
         "peer-sap-id":[
            "ce-1"
         ],
         "status":{
            "admin-status":{
               "status":"ietf-vpn-common:admin-up"
            },
            "oper-status":{
               "status":"ietf-vpn-common:op-up"
            }
         },
         "l2-connection":{
            "encapsulation":{
               "encap-type":"ietf-vpn-common:dot1q",
               "dot1q":{
                  "tag-type":"ietf-vpn-common:c-vlan",
                  "cvlan-id":550
               }
            },
            "bearer-reference":"1234"
         },
         "service":{
            "mtu":1550,
            "svc-pe-to-ce-bandwidth":{
               "pe-to-ce-bandwidth":[
                  {
                     "cir":"20480000"
                  }
               ]
            },
            "svc-ce-to-pe-bandwidth":{
               "ce-to-pe-bandwidth":[
                  {
                     "cir":"20480000"
                  }
               ]
            },
            "qos":{
               "qos-profile":{
                  "qos-profile":[
                     {
                        "profile":"QoS_Profile_A",
                        "direction":"ietf-vpn-common:both"
                     }
                  ]
               }
            }
         }
      }
   ]
}
]]></artwork>
        </figure>
        <t>Also, the AC network model can be used to retrieve the list of SAPs to which the ACs are bound as shown in <xref target="ex-acntw-query"/>.</t>
        <figure anchor="ex-acntw-query-2">
          <name>Example of AC Network Response to Retrieve the SAP (Message Body)</name>
          <artwork align="center"><![CDATA[
{
   "ietf-sap-ntw:service":[
      {
         "service-type":"ietf-vpn-common:vpls",
         "sap":[
            {
               "sap-id":"sap#1",
               "peer-sap-id":[
                  "ce-1"
               ],
               "description":"A parent SAP",
               "attachment-interface":"GE0/6/1",
               "interface-type":"ietf-sap-ntw:phy",
               "role":"ietf-sap-ntw:uni",
               "allows-child-saps":true,
               "sap-status":{
                  "status":"ietf-vpn-common:op-up"
               }
            },
            {
               "sap-id":"sap#11",
               "description":"A child SAP",
               "parent-termination-point":"GE0/6/4",
               "attachment-interface":"GE0/6/4.2",
               "interface-type":"ietf-sap-ntw:logical",
               "encapsulation-type":"ietf-vpn-common:vlan-type",
               "sap-status":{
                  "status":"ietf-vpn-common:op-up"
               },
               "ietf-ac-ntw:ac":[
                  "ac-1"
               ]
            }
         ]
      }
   ]
}
]]></artwork>
        </figure>
      </section>
      <section anchor="parent-ac">
        <name>Parent AC</name>
        <t>In reference to the topology depicted in <xref target="sap-ac-ntw"/>, PE2 has a SAP which terminates an AC with two peer SAPs (CE2 and CE5). In order to control data that is specific to each of these peer SAPs over the same AC, child ACs can be instantiated as depicted in <xref target="ex-parent-ac"/>.</t>
        <figure anchor="ex-parent-ac">
          <name>Example of Child ACs</name>
          <artwork align="center"><![CDATA[
{
   "ietf-ac-ntw:ac":[
      {
         "name":"ac-1",
         "peer-sap-id":[
            "CE2",
            "CE5"
         ],
         "status":{
            "admin-status":{
               "status":"ietf-vpn-common:admin-up"
            },
            "oper-status":{
               "status":"ietf-vpn-common:op-up"
            }
         },
         "l2-connection":{
            "encapsulation":{
               "encap-type":"ietf-vpn-common:dot1q",
               "dot1q":{
                  "tag-type":"ietf-vpn-common:c-vlan",
                  "cvlan-id":550
               }
            },
            "bearer-reference":"1234"
         }
      },
      {
         "name":"ac-1-to-ce2",
         "ac-parent-ref":"ac-1",
         "peer-sap-id":[
            "CE2"
         ]
      },
      {
         "name":"ac-1-to-ce5",
         "ac-parent-ref":"ac-1",
         "peer-sap-id":[
            "CE5"
         ]
      }
   ]
}
]]></artwork>
        </figure>
        <t><xref target="ex-parent-ac-sap"/> shows how to bind the parent AC to a SAP.</t>
        <figure anchor="ex-parent-ac-sap">
          <name>Example of Binding Parent AC to SAPs</name>
          <artwork align="center"><![CDATA[
{
   "ietf-sap-ntw:service":[
      {
         "service-type":"ietf-vpn-common:l3vpn",
         "sap":[
            {
               "sap-id":"sap#14587",
               "description":"A SAP",
               "parent-termination-point":"GE0/6/4",
               "attachment-interface":"GE0/6/4.2",
               "interface-type":"ietf-sap-ntw:logical",
               "encapsulation-type":"ietf-vpn-common:vlan-type",
               "sap-status":{
                  "status":"ietf-vpn-common:op-up"
               },
               "ietf-ac-ntw:ac":[
                  "ac-1"
               ]
            }
         ]
      }
   ]
}
]]></artwork>
        </figure>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This document builds on <xref target="RFC9182"/> and <xref target="RFC9291"/>.</t>
      <t>Thanks to Moti Morgenstern for the review and comments.</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 fullname="Ivan Bykov">
        <organization>Ribbon Communications</organization>
        <address>
          <email>Ivan.Bykov@rbbn.com</email>
        </address>
      </contact>
      <contact fullname="Qin Wu">
        <organization>Huawei</organization>
        <address>
          <email>bill.wu@huawei.com</email>
        </address>
      </contact>
      <contact fullname="Ogaki Kenichi">
        <organization>KDDI</organization>
        <address>
          <email>ke-oogaki@kddi.com</email>
        </address>
      </contact>
      <contact 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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
x8XCfBqK/tUMBI2eFqOX5N0St3Oqpn4UVckIRdl8UvfN1I0kOd5lnmfIJ+GP
w2PqNVVlUVo/bjA1vJVhzRaVn8jqVTpSZ1NfYMM2kH29hvx06kpQjYrnmFzF
y3aiwRJSSWViXUc/tRpN7RujSIDohN7cBkwXOBQS7dLteKTWcbP9tqVZc4aw
bdtc/xTzRKhksLzwS8jVUlK4xyOSDTWC2gI0azVX2nDsdxg4zzFq5LFmCl4H
psUMgA9ItuBjBZ4aXZiAF1MGJ2wbjpJ0x66kO25wNzRJOgOXssNjT4fBR0u6
GopaJJ0JVJvqskbSKQx7JZ2DzDZJp740SzqzyB0lXa0Xn6QzCwWdJJ1TozYP
zZKuXjPoLulaKjdJOm+VjtTZ1FeDpPPWkJ9OXa2VdGYX6yWdWbqbpHNqyI9f
0tWA6QJHsF7S1fHol3RefHfg9t568rPJPDVIOvNLN0nnfOkm6ZwvG479DgNf
K+kcQNZJuqCpRhcm4MWUR9LVhvP79DEfWj5m2/VVdy+PgkmKOfPiSrmf9KaB
uBDgiu+2MF7Is0nmaZvmeDTh41skyUTEcsqDKYbX2naqiQM7OhI2n4ooS/Nq
jrTUp/XJ7egxxXu1kwypcQ2Dm4k0joqC/XZ235HtmbQ9q9iiHm1MIBJUwdnF
9VEf/z0mZzHlO0mnAR4OQfdITElCkgUewZownFQEq5E/l2sKN6LhFtT+9yuc
Ue1jDFg9IB/gnK6ZwJhCnXtUrrWhTvr3/LuTiz79S+G2tyLynxan4bocBC/z
SvikZYYCBE8ca7qE8pwHdiQgwTt77L2Fncvz0ehkV4S+Hj09xls1jAkAXDah
oNegltmOdHmax/a7BroO4YQveqh4H0CHXBLFydSxE1W5SECnLFX+v4tTg/5k
GWuYlERv0Q4xbloAFD1LPPfELOgpVHHW8whPsuWcNhNRdItAJ++Em56qMbMW
LnbKA5Nywk11rpCOgUHXtF3Qq0nvnsA/YxzItNMQyiyK4p7M0Ynad3BmnLPL
1alTTpcD5HGN0adlInMqmsGxZbkS5wWJVILlqsBTneIUlV6cRHis66tdEjx1
g2ufh9mzTIoekVLPsg5cxoADdioZwzx49Gh/OBk/HT4a7g+H+94GzfLHR72+
H1Q5WM6XWLpN70FNPtxX4gUwOleiPuwnNrVUrsqkwD2aXSMhLhB/uRovEp1O
V2ZnjDjghU8uLJMizQXjIe5q3HrSd+40qXQKJOh2V6Q+hbnMRBpK83Sl6NTY
oBHX73i7f9N8nlgkqcT2CjwTvVqaeXy39dbDNu/0yM0w3uPBU092MhQZnC3S
sjRurUBNZ2+FzzUOA+O48Pr9FnufpelIyob7LV6/dYuner2a4i9hHLoJbIW7
ce9ClWgPpFPFxrNlza42FB6zaF4up13LpmVadi1bpJ1BuC6KZU17bFPxgg1T
XtzTtlwNpI/e6dgosOKu1NQ8IB9lmZ81VOac6ih9oLx3ocmSaFpr7/2G9M1a
VFf6+pOvhk9k8EhWLS0eKQLqts4LKdCkFEgXeEcfJbfuufTac9MP9Pkonyc9
xxarY710ghEO4nQpi0pxppy7acruUdmhGWUMFkGBF1bzqX4lhzW4MoM88gL3
zC8f0OcbAKRiaqSN4PQAIuSAkkeQeeOihG0raeWhcSVUxDcyf0Gp0slEFV8g
nXCyjCtMxFK7VIaPlVOimq0asqVaKVbTrkajeWMet54sVOaErcjMv6+S9DCk
wWWScP4YvltVXcjhzboGCHGz7jtnvRwioUeaSFQyB1CCtqJgll7jBY0OUklH
+YxsJRiZrasIb4hWWYQF1lVjEfW7KC32Yn2QTQ+yqdYGGPUx2JyTEI8asPXi
eu0tNOE+kFkUhgE/wUR5V4VX+bI+oEALjdZgiDpo2K6BXrUNxV2vq4oR603B
vPUKEn4u4sZU18vj1elpLEmgFi9dr4CHftn/g5XGeQ5Tu7AjfaeTNQhZWlHE
HTr1BebU57Qhhqi90fUxPQ0T0z3CyANsS8CRTWqi9F1gVZXvBKveEd14mcjP
up1Ux+e/+TIJNl0mwYbLJNh0mQT3sEyCTZdJsH6ZmKXWLRP15C7LxKl8J9LT
wK5dJk7pu8Aa3HGZPFhArWVaLSBD9ZNGkKNiNqS3VIqwoWQ7OddE7jZSZ88u
hCMT030IJkF5EWQarVLFcWPQv3BTbs9vp9E1HsBMkPdt7yqPrbqTBj2HceJk
LMF8DJKxOL1wFrh3VYA8hy0d6yJwQ3Wmy6jOdHYLO6fiwtgmoAubwVISA1c8
zUyw15ukoBcVkx4aCsJbjMdZertg6lWxTOPBrMoB+kZcrYNpOPSuD11Nnpb8
neGnFIV6AHgVV3GLTTPb9OCCX9TOCbioEC0FtGEl6shpoHQfdMyCSiKA73CL
iUw4zll/9u0FQqH5qAcS/bIrNHQ9HSUMVDXNAyB0xRfPDLxGQ5YrR3PMZUbf
VVoRsm0ndAVYJFLMILUi0CKDGAL8vdzqo5wiCiyRhawZYfaeId3HZG4ciowi
2NzOJNm1bx8zcsLV2mdSR7sQk4GwMQh80LAE8XlXMxBrPjiufxPHtQiK8YWf
N3aqqlGGmpB4322tiDYA57gmRbHPjbabLEIDrGm0yqrQagEBlC/4iXuY12mF
ecLH9G+10LX/L8wgwbIe1kfabVSGHNDWUJ1OcERlrXLH6nIvlC6ivTVhaNOL
hL6LLqUr80y8/HjCEHWPZYjbVkU6cZ0KQgFuqodSPQSOUMNVW2/AK5cYjcYp
Rs2q7b2VWElOInG1r7rVQ30gn4agGMxSa6kAefARc2pNFGjyiKBF5TTlI0K7
YarVoXUQN5gTknybkj8lEyMKiYmhbrY1UA2+baMWvc6UrdNtEpDrz6N3Tcad
JkRVxmi7wRRSlW6igjIkYqwJSJpswss2TudRdnzUXO86zTNS+GODGTbG/723
8M4xmGgmFGvMRI0AKt3ipHqbJMsIc5c3hbeahXGc1GJT4T+uFRI8eH4fPL8f
tytpSFTOHdy8lnUh/5n/93ZvXkJqRL5T2T5GYFb2+6TMuhvrbWblddqbibW7
6HBmfb8m11xL8oSOip7Z1V3UPR+ottLXXEt+uoP6kZqh2cid9UOLEO6kJZot
bKorWr1vrDFatTfUGy3kbaw9WgxpYx3Sqt1J/aspga36nyUJuuuYtU7Wa5qW
SPgIfTMw1t3GWqdZubvu6UiJNRqo2ceGeqhZdXNt1Kx9F53UrL+JZuqip0E/
dXrooqU6Vdbqqu5CX2EURSXSFDeaS430sIYgAj0UzLkLZIGp7qOsubiqscPh
wu4ZGKcsFx/uRPnuunIOVYdRbgxk7TCcNqI8hCHFV1GbkWk9pw/UCanSUH0L
m9ehPcT55HH3MULhXx3AhkOA9dKBQRVuTq72FeRtoiYeW7W0ehOUSDwPo2yG
OxNX87X4Mj7rHT7yUldg3UUyz5HhMEv27vBK1mIWtPprTIPmNLGp/qsqaiW9
KdSAPuHfwUjYg/8Mzd/4blxW6OtkYw1b1WxVr028b6xbm5U7KtaBRR1dVFWz
k41Vah+Ea/RpY8a6Q/iRmnRgkdJd1GjVwt10aFV9UwVa97ux9qyrbqg6a2xt
rDerqpsrzbrqGmU20ATUTV1WLXfSlX3Nr1eUA80o76glB6Ys30hFNmt2148V
xGuUY7P1TTRjs96GarFZdWOd2Ky8iUJs4aPZW/tei/lODltVvoserGBYowQH
rTPeNuUG+O3qrwNQs+6r/g1aFF+zkAN5N63X20CryuvUkJ+u6mRtWF5l1wtW
u6Z733A167h2B5sruE31u2q33vo11TboKDlbA8Mk21wb7fbebm6D8DFV865x
bli7Y5AbF71LhBvXvFN42x9xt+j9p4lZk3EqMmANY1zuEK2GR0LEYXgRP0Un
bnraKOlhsBoaJhT8w9dPlvI2XRkwRhc5UnEMFrJPAWO1S5VmF0N/hIVGkXFW
elIrOYFIu0uBVSgkx1laXiH4lQjpoZOwCDngqiz5PmHrCl7sOThTN4P5rvG1
ATftJKrN9xupq4nYstlj88G9C+rLR8dP8C6oXFzIpILRXLyUDTF/o8vgJan2
wc7o8iXdpySMATkSK1IMXvVKqPSSILfUMV95iXWhsBnjHwQiwE/QGmajFaew
MeK516e/xz1KwdDTuRd6KvbMads6oV3lM47bU0FsPQw75gNLVS76nICIF5fr
AvaKfFnQlZgyF8I33PCZcYPazuibs3I32BMNXOJRpJ9WdOFnS6VLrmUdJMeU
s4APbgghYGAm8JfSCFvZCdTp8dUCkFtWnGjhxcX5JV8WLMBB6PrYWfC3YL+/
f/B0F+83sw51yUzHR4PDwZHMdXx0eCzvM5N2mG8y2QSkgDtc1AmmecBgzpKv
Ko4oSTDdjYXzi/ShbTPR3hQnWaTzUBmh1ZE1HW4JBBbIqmJwOvqyH6SDBJAB
VlgWxXJxUpWpfY20md9YNMNF/3UxevMdwaqPwSlSwZaMkFN55TQvJNFMhNkJ
ZFUaq2FM8mC/F4f3KSNAlcPCzWe4cMVUXq3GJHaAmbxNdjVRUkPyzlnKM8EL
ToTMmqlTnLHIBtSIMBst0dS0yOcYjsnr7jzHOUMmDDbLNd+crnNMiFbsAfFd
aWDmpPPV3CCEOpiieh6DsCEWW0KPz26lQ6M+9zr7wqMeHjSkKOO+aKZI/s2X
st6qgerhcVnJaeug7IrAV9tW58mhbB8qiQ4UZoQYRy/5fmcBB0WQYvIIed1z
WRuIiCVVNGzR28vavdH6mmu+eJug1JcmitG6U0pRsTUXAg/pxAFAolzG28pb
FmUqD33lsliutgeAG32RUD75vHYEVsTg6tvz1EkzsFOKhSY6bBWs1YjvRhZp
til1CwoAETUskZVLklShsxkRq5Gj/YnLtQJKRXGJ3Uh+GryiIRi0Qtwjzify
4l/KayKLnb6rGPkn+XwOA60ocNvjFSGcnERFIZQKShMiOb86/IpsRTYp4FEN
18LorfQ3YhASLnHd45NHdLWzga5GRNF1iF5PSwONiCvMSZyadMFJpC5OqUXb
E9Iz2+Hc7iJtDWlNkcybIrmF0ohJRFDCIOQvZoP4oBYeX2M2JFqcU42BkkWU
JkXoZK4aRJIHG83SeVrxze8ES99Y49gWk5h9hNr2tPSUBGfVVo2n5suRwxpJ
Nw+s+UrdM0pXvfPt0zqQH6+gdSAUrTtA1DB2c5Wi+I3l3RHJO9D2q0SdENBj
bMer2XMAVExpdkqZyMvFlMrkRX5NThUjBzuHqYhmST8Qpy/wWfIO1GfdyDKq
rkrmE5IPkbon3FNSsmtFGzFh+a5qiOiTxE2A7Cclp/LBcqzgX4O6G00rxZoZ
Z1Kxl6QjpxfMGan/0yz0tP+L19Kbmzzg3+qK8GhZkexIxWSq/GLDYGdfOiJ6
yuMFyi3DkJYeUOt5h4ThI9r5DpoJ3iAAJns8GhwoBnnwZB9v/q4bM5GhLshx
o3TbOdgNesqB1w6eDcx/yEoMkEwGFGHqLbq6RCmGNrBHDrCo3fOF8QK1KJXB
9KEEaBNjcknnsryBYlb4upNVhpIOMzGogyagDQEXBjqNJOkK2DU8+4cG9ki8
9FFcwIIUV6+QBirp8s2JxOHIAiR4xdbeDhQIR692JR//8uAxmGp8q7BKHFEa
SKSMA5zyC++IJgKYR28TYvoI14vnj5GXkTWb8nUUlRqvakSZnuqqdJosvm3j
7AIQqGwoTClpGKZ8T0xUlqu5vALXuLdFXQHPCBX98SClOmkqUKU0cqjtt8lt
QO47KQKVVBC2uFJpCQoY58ucQVlKfkkJ1aIxCDwwO25EakHRjG6e1SkNyACX
yg0Iy6Ivzg3JQzgaMtEINwDcewVLK6Zriw23xTi5BcoTqTKUeH66jxfF9Clt
ViYbugQyO3tOc/06ia/hq0H1h/qWGaaJXZHDjUwouQvtXuTd6D9JNTnQ4SsQ
IKhhmRfu0IXNhZ3vQtgDLCGHpDeYW9mOB4UXEBYwc/TR2Stc2BJo5T6QXhwU
f+S0oaKm42MYXLRBKNTknmy5J5TlitaDvmiDL5fGovmCXoj6gpZsV4txoMxW
NvRZMkcciENery4vvhGnvNAdaBzzojddz3lR3YeDXr/7DGVNW9rrY0iAhiP7
Bj52MucVLNXwp1U0aahon67HT8NemN5xzMpozXbj78spHTwcYXg4wvDrJVb7
/S/i8iqa00n00sqKgbnRSFKo954kGfVGYB7BMJolFTkt2g9sGAXxYYfDEs7Q
7oE5aXSvjWy9S0zrJtGsneNYeSMf4A3VbnRLDKUJRbguwPMOe94NYHWL7vyo
uM6Piui824b3ut3ublvdd9zn/rhN7q473Hfc3v6Ive3fi2rwifarlb4tN6xJ
W++6Y02Fm8yu4dr9T+li9aWTt4OCqX4qcyXSNo9MdT5BQ+lHmeaDtv0w94hO
Re/sgpL77qdVUla0T8YeYzkXwhFi3yLqJqbOi/gKqhdRlRe4LUXxaGoXTg4K
cXN9IEzgo8doAiNg9PhQPD5+fIwOD8NnHS0W+Urf0kjD4b0Dcuew2PVtPdJU
0HWuZ8+dpCrBSKYsQZeHSJBCe3nKNOPmtbQ19ucwCQg0W4kusEzAElnls77J
KZs1vCqURxK1TgSXLHz0fpNTbQwTMskBDdiCGKPtmhvo3QvGGdbXJR7Lt4w6
3pFlYcowXyZVk3f8HPrkhP5OtnYJyPnlSG5CK5SqxKHkZ4ziOFlWTZ41y+dv
FwhKoJk5u9rGidynldQtwjWsDsWujV5sLHvdRcbuKqMhQWBO95IMHx+Qx46c
NInjlZPuqiICpbfQjR3obZYvYUL4x5OjJ0didiySfrJ/fEy2u+lKaPUlWP4B
J6Xo2WV4dincCsiJDbcCv+rqV6DKD36F371fYZOosY80X6wTKeaThkrkXbO0
uQ4ZUjb0WeRujH5jvPKDM+LBGRHUCOgP7Ix4WPkdV/6DV+DBK/DgFQjsafyV
vQJ/QEtfacDqCj1SoLua+lz6k9r6a6x8Yf6au6+2WcEgstHJhSi6G5m3zwrh
4vR6GJzT1ul+X3w5UMB1tqW1PcLGNHL05m51PD1f3QYSWcV760hvMZc9wkJi
BH9SNBEHAlEAq2hV3ZUh03Yuwd4Gg1hyNAwUX+I9bE5jMI00ARxLxHFKYJ1x
o6slRWFID8kVDHHGQUFqEGiGD4NPYhNLdCmjmENfEFB5I4k8OBDpEAfRiBl/
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
kQv2Ok1uRNT4XAQn/f/71rc/lTkCAA==

-->

</rfc>
