<?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.6.19 (Ruby 3.1.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-boro-opsawg-teas-attachment-circuit-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.3 -->
  <front>
    <title abbrev="ACSM">YANG Service Data Models for Attachment Circuits</title>
    <seriesInfo name="Internet-Draft" value="draft-boro-opsawg-teas-attachment-circuit-01"/>
    <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="January" day="20"/>
    <area>Operations and Management</area>
    <workgroup>OPSAWG</workgroup>
    <keyword>Slice Service</keyword>
    <keyword>L3VPN</keyword>
    <keyword>L2VPN</keyword>
    <abstract>
      <t>This document specifies a YANG service data model for Attachment Circuits (ACs). The model can be used for the provisioning of ACs prior or during service provisioning (e.g., Network Slice Service). The document specifies also a module that updates other service and network modules with the required information to bind specific services to ACs that are created using the AC service model.</t>
      <t>The AC service model is designed with the intent to be reusable. Whether a service model reuses structures defined in the AC service model or simply include an AC reference is a design choice of these service models. Relying upon the AC model to manage ACs over which a service is delivered has the merit to decorrelate the management of a service vs. upgrade the AC components to reflect recent AC technologies or features.</t>
      <t>Each AC is identified with a unique identifier within a domain. The mapping between this AC and a PE that terminates the AC is hidden to the application/customer that makes use of the AC service model. Such an information is internal to the network controller. Thus, the details about the (network node-specific) attachment interfaces are not exposed in this service model.</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>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>This document specifies a YANG service data model for managing attachment circuits (ACs) that are exposed by a network to its customers (e.g., an enterprise site, a network function, a hosting infrastructure, a peer network provider) . The model can be used for the provisioning of ACs prior or during advanced service provisioning (e.g., Network Slice Service).</t>
      <t>Also, the model is designed with the intent to be reusable. Whether a service model reuses structures defined in the AC service model or simply includes an AC reference (that was communicated during AC instantiation) is a design choice of these service models. Relying upon the AC service model to manage ACs over which services are delivered has the merit to decorrelate the management of a service vs. upgrade the AC components to reflect recent AC technologies or new features (e.g., new encryption scheme, additional routing protocol).</t>
      <t>Each AC is identified with a unique identifier within a domain. From a network provider standpoint, an AC can be bound to a single or multiple SAPs <xref target="I-D.ietf-opsawg-sap"/>. Likewise, a SAP can be bound to one or multiple ACs. However, the mapping between this AC and a local PE that terminates the AC is hidden to the application that makes use of the AC service model. This information is internal to the Network controller. As such, the details about the (node-specific) attachment interfaces are not exposed in this service model.</t>
      <t>The document specifies also a module (<xref target="glue"/>) that updates other service and network modules with the required informaiton to bind specific services to ACs that are created using the AC service model.</t>
      <t>The YANG data model in this document conforms to the Network Management Datastore Architecture (NMDA) defined in <xref target="RFC8342"/>.</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>
      <t>The meanings of the symbols in the YANG tree diagrams are defined in <xref target="RFC8340"/>.</t>
      <t>This document uses the following terms:</t>
      <dl>
        <dt>Network controller:</dt>
        <dd>
          <t>Denotes a functional entity responsible for the management of the 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. The service orchestrator is typically responsible for the attachment circuits, the Provider Edge (PE) selection, and requesting the activation of the requested service to a network controller.</t>
        </dd>
        <dt>Service provider network:</dt>
        <dd>
          <t>A network that is able to provide network services (e.g., Network Slice Services).</t>
        </dd>
        <dt>Service provider:</dt>
        <dd>
          <t>A service provider that offers network services (e.g., 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="uc"/> depictes two target topology flavors that may host ACs. A CE may be a physical node or a logical entity. The same AC request may include one or multiple ACs that may belong to one or both of these flavors. For the sake of simplfying the illustration, only a subset of these ACs is shown in <xref target="uc"/>.</t>
      <t>CEs may be dedicated to one single service or host multiple services (e.g., service functions <xref target="RFC7665"/>). A single AC (as seen by a network provider) may be bound to one or multiple peer SAPs.</t>
      <figure anchor="uc">
        <name>Examples of ACs</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="336" width="448" viewBox="0 0 448 336" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <g class="text">
                <text x="40" y="36">┌───────┐</text>
                <text x="348" y="36">┌──────────────────────┐</text>
                <text x="8" y="52">│</text>
                <text x="108" y="52">├────────┐</text>
                <text x="256" y="52">│</text>
                <text x="440" y="52">│</text>
                <text x="8" y="68">│</text>
                <text x="40" y="68">CE1</text>
                <text x="72" y="68">│</text>
                <text x="144" y="68">│</text>
                <text x="256" y="68">│</text>
                <text x="440" y="68">│</text>
                <text x="40" y="84">└───────┘</text>
                <text x="144" y="84">│</text>
                <text x="256" y="84">│</text>
                <text x="440" y="84">│</text>
                <text x="200" y="100">├─────────────┤</text>
                <text x="336" y="100">Network</text>
                <text x="440" y="100">│</text>
                <text x="40" y="116">┌───────┐</text>
                <text x="144" y="116">│</text>
                <text x="256" y="116">│</text>
                <text x="440" y="116">│</text>
                <text x="8" y="132">│</text>
                <text x="72" y="132">│</text>
                <text x="144" y="132">│</text>
                <text x="256" y="132">│</text>
                <text x="440" y="132">│</text>
                <text x="8" y="148">│</text>
                <text x="40" y="148">CE2</text>
                <text x="108" y="148">├────────┘</text>
                <text x="256" y="148">│</text>
                <text x="440" y="148">│</text>
                <text x="40" y="164">└───────┘</text>
                <text x="348" y="164">└──────────────────────┘</text>
                <text x="40" y="196">┌───────┐</text>
                <text x="348" y="196">┌──────────────────────┐</text>
                <text x="8" y="212">│</text>
                <text x="72" y="212">│</text>
                <text x="256" y="212">│</text>
                <text x="440" y="212">│</text>
                <text x="8" y="228">│</text>
                <text x="40" y="228">CE1</text>
                <text x="164" y="228">├──────────────────────┤</text>
                <text x="440" y="228">│</text>
                <text x="40" y="244">└───────┘</text>
                <text x="256" y="244">│</text>
                <text x="440" y="244">│</text>
                <text x="256" y="260">│</text>
                <text x="336" y="260">Network</text>
                <text x="440" y="260">│</text>
                <text x="40" y="276">┌───────┐</text>
                <text x="256" y="276">│</text>
                <text x="440" y="276">│</text>
                <text x="8" y="292">│</text>
                <text x="164" y="292">├──────────────────────┤</text>
                <text x="440" y="292">│</text>
                <text x="8" y="308">│</text>
                <text x="40" y="308">CE2</text>
                <text x="72" y="308">│</text>
                <text x="256" y="308">│</text>
                <text x="440" y="308">│</text>
                <text x="40" y="324">└───────┘</text>
                <text x="348" y="324">└──────────────────────┘</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
┌───────┐                      ┌──────────────────────┐
│       ├────────┐             │                      │
│  CE1  │        │             │                      │
└───────┘        │             │                      │
                 ├─────────────┤      Network         │
┌───────┐        │             │                      │
│       │        │             │                      │
│  CE2  ├────────┘             │                      │
└───────┘                      └──────────────────────┘

┌───────┐                      ┌──────────────────────┐
│       │                      │                      │
│  CE1  ├──────────────────────┤                      │
└───────┘                      │                      │
                               │      Network         │
┌───────┐                      │                      │
│       ├──────────────────────┤                      │
│  CE2  │                      │                      │
└───────┘                      └──────────────────────┘
]]></artwork>
        </artset>
      </figure>
      <section anchor="separate-ac-provisioning-vs-actual-service-provisioning">
        <name>Separate AC Provisioning vs. Actual Service Provisioning</name>
        <t>The procedure to provision a service in a service provider network may depend on the practices adopted by a service provider, including the flow put in place for the provisioning of advanced network services and how they are bound to an attachment circuit. For example, the same attachment circuit may be used to host multiple services. 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 the request a base attachment circuit to be put in place, and then refer to that base AC when requesting services that are bound to that AC.</t>
        <t><xref target="_u-ex"/> shows the positioning of the AC service model is the overall service delivery process.</t>
        <figure anchor="_u-ex">
          <name>An Example of AC Model Usage</name>
          <artwork align="center"><![CDATA[
                          +---------------+
                          |   Customer    |
                          +-------+-------+
          Customer Service Model  |
        e.g., slice-svc, ac-svc   |
                          +-------+-------+
                          |    Service    |
                          | Orchestration |
                          +-------+-------+
           Network Model          |
     e.g., l3vpn-ntw, sap, ac-ntw |
                          +-------+-------+
                          |   Network     |
                          | Orchestration |
                          +-------+-------+
    Network Configuration Model   |
                      +-----------+-----------+
                      |                       |
             +--------+------+       +--------+------+
             |    Domain     |       |     Domain    |
             | Orchestration |       | Orchestration |
             +---+-----------+       +--------+------+
  Device         |        |                   |
  Configuration  |        |                   |
  Model          |        |                   |
            +----+----+   |                   |
            | Config  |   |                   |
            | Manager |   |                   |
            +----+----+   |                   |
                 |        |                   |
                 | NETCONF/CLI..................
                 |        |                   |
]]></artwork>
        </figure>
      </section>
      <section anchor="examples">
        <name>Examples</name>
        <t>This section includes a non-exhaustive list of examples to illustrate the use of the AC service model.</t>
        <section anchor="ex-create-bearer">
          <name>Request A New Bearer</name>
          <t>An example of a request message body to create a bearer is shown in <xref target="create-bearer"/>.</t>
          <figure anchor="create-bearer">
            <name>Example of a Message Body to Create A New Bearer</name>
            <artwork><![CDATA[
{
  "ietf-ac-svc:bearers": {
    "bearer": [
      {
        "id": "an-identifier",
        "description": "A bearer example",
        "customer-device": {
          "device-id": "CE_X_SITE_Y",
          "requested-type": "ietf-ac-svc:ethernet"
        }
      }
    ]
  }
}
]]></artwork>
          </figure>
          <t>A bearer-reference is then generated by the controller for this bearer. <xref target="get-bearer"/> shows the example of a response message body that is sent by the controller to reply to a GET request:</t>
          <figure anchor="get-bearer">
            <name>Example of a Response Message Body with the Bearer Reference</name>
            <artwork><![CDATA[
{
  "ietf-ac-svc:bearers": {
    "bearer": [
      {
        "id": "an-identifier",
        "description": "A bearer example",
        "customer-device": {
          "device-id": "CE_X_SITE_Y",
          "requested-type": "ietf-ac-svc:ethernet"
        },
        "bearer-reference": "line-156"
      }
    ]
  }
}
]]></artwork>
          </figure>
        </section>
        <section anchor="request-an-ac-over-an-existing-bearer">
          <name>Request An AC over An Existing Bearer</name>
          <t>An example of  a request message body to create a simple AC over an existing bearer is shown in <xref target="ac-b"/>. The bearer reference is assumed to be known to both the customer and the network provider. Such a reference can be retrieved, e.g., following the example described in <xref target="ex-create-bearer"/>.</t>
          <figure anchor="ac-b">
            <name>Example of a Message Body to Request an AC over an Existing Bearer</name>
            <artwork><![CDATA[
{
  "ietf-ac-svc:attachment-circuits": {
    "ac": [
      {
        "name": "ac4585",
        "description": "An AC on an existing bearer",
        "requested-ac-start": "2023-12-12T05:00:00.00Z",
        "l2-connection": {
          "encapsulation": {
            "type": "ietf-vpn-common:dot1q",
            "dot1q": {
              "tag-type": "ietf-vpn-common:c-vlan",
              "cvlan-id": 550
            }
          },
          "bearer-reference": "line-156"
        }
      }
    ]
  }
}
]]></artwork>
          </figure>
        </section>
        <section anchor="request-an-ac-for-a-knwon-peer-sap">
          <name>Request An AC for a Knwon Peer SAP</name>
          <t>An example of a request to create a simple AC, when the peer SAP is known, is shown in <xref target="ac-known-ps"/>. In this example, the peer SAP identifier points to an identifier of a service function. The (topological) location of that service function is assumed to be known to the network controller. For example, this can be determined as part of an on-demand procedure to instantiate a service function in a cloud. That instantiated service function can be granted a connectivity service via the provider network.</t>
          <figure anchor="ac-known-ps">
            <name>Example of a Message Body to Request an AC with a Peer SAP</name>
            <artwork><![CDATA[
{
  "ietf-ac-svc:attachment-circuits": {
    "ac": [
      {
        "name": "ac4585",
        "description": "An AC on an existing bearer",
        "requested-ac-start": "2023-12-12T05:00:00.00Z",
        "peer-sap-id": [
          "nf-termination-ip"
        ],
        "l2-connection": {
          "encapsulation": {
            "type": "ietf-vpn-common:dot1q",
            "dot1q": {
              "tag-type": "ietf-vpn-common:c-vlan",
              "cvlan-id": 550
            }
          }
        }
      }
    ]
  }
}
]]></artwork>
          </figure>
        </section>
        <section anchor="one-ce-two-acs">
          <name>One CE, Two ACs</name>
          <t>Lets consider the example of an eNodeB (CE) that is directly connected to the access routers of the mobile backhaul (see <xref target="enodeb"/>). In this example, two ACs are needed to service the eNodeB.</t>
          <figure anchor="enodeb">
            <name>Example of a CE-PE ACs</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="240" width="432" viewBox="0 0 432 240" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                  <path d="M 8,32 L 8,160" fill="none" stroke="black"/>
                  <path d="M 120,32 L 120,160" fill="none" stroke="black"/>
                  <path d="M 272,32 L 272,224" fill="none" stroke="black"/>
                  <path d="M 424,32 L 424,224" fill="none" stroke="black"/>
                  <path d="M 8,32 L 120,32" fill="none" stroke="black"/>
                  <path d="M 272,32 L 424,32" fill="none" stroke="black"/>
                  <path d="M 128,78 L 264,78" fill="none" stroke="black"/>
                  <path d="M 128,82 L 264,82" fill="none" stroke="black"/>
                  <path d="M 128,110 L 264,110" fill="none" stroke="black"/>
                  <path d="M 128,114 L 264,114" fill="none" stroke="black"/>
                  <path d="M 8,160 L 120,160" fill="none" stroke="black"/>
                  <path d="M 272,224 L 424,224" fill="none" stroke="black"/>
                  <g class="text">
                    <text x="292" y="52">PE</text>
                    <text x="328" y="68">192.0.2.1</text>
                    <text x="60" y="84">eNodeB</text>
                    <text x="336" y="84">2001:db8::1</text>
                    <text x="220" y="100">vlan</text>
                    <text x="248" y="100">1</text>
                    <text x="220" y="132">vlan</text>
                    <text x="248" y="132">2</text>
                    <text x="156" y="148">Direct</text>
                    <text x="160" y="164">Routing</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
+-------------+                  +------------------+
|             |                  | PE               |
|             |                  |  192.0.2.1       |
|   eNodeB    |==================|  2001:db8::1     |
|             |          vlan 1  |                  |
|             |==================|                  |
|             |          vlan 2  |                  |
|             | Direct           |                  |
+-------------+ Routing          |                  |
                                 |                  |
                                 |                  |
                                 |                  |
                                 +------------------+
]]></artwork>
            </artset>
          </figure>
          <t>An example of a request to create the ACs to service the eNodeB is shown in <xref target="two-acs-same-ce"/>. This example assumes that static addressing is used for both ACs.</t>
          <figure anchor="two-acs-same-ce">
            <name>Example of a Message Body to Request Two ACes on The Same Link</name>
            <artwork><![CDATA[
{
  "ietf-ac-svc:attachment-circuits": {
    "ac": [
      {
        "name": "ac1",
        "description": "a first ac with a same peer node",
        "l2-connection": {
          "encapsulation": {
            "type": "ietf-vpn-common:dot1q",
            "dot1q": {
              "cvlan-id": 1
            }
          },
          "bearer-reference": "line-156"
        },
        "ip-connection": {
          "ipv4": {
            "local-address": "192.0.2.1",
            "prefix-length": 30,
            "address": [
              {
                "address-id": "1",
                "customer-address": "192.0.2.2"
              }
            ]
          },
          "ipv6": {
            "local-address": "2001:db8::1",
            "prefix-length": 64,
            "address": [
              {
                "address-id": "1",
                "customer-address": "2001:db8::2"
              }
            ]
          }
        },
        "routing-protocols": {
          "routing-protocol": [
            {
              "id": "1",
              "type": "ietf-vpn-common:direct-routing"
            }
          ]
        }
      },
      {
        "name": "ac2",
        "description": "a second ac with a same peer node",
        "l2-connection": {
          "encapsulation": {
            "type": "ietf-vpn-common:dot1q",
            "dot1q": {
              "cvlan-id": 2
            }
          },
          "bearer-reference": "line-156"
        },
        "ip-connection": {
          "ipv4": {
            "local-address": "192.0.2.1",
            "prefix-length": 30,
            "address": [
              {
                "address-id": "1",
                "customer-address": "192.0.2.2"
              }
            ]
          },
          "ipv6": {
            "local-address": "2001:db8::1",
            "prefix-length": 64,
            "address": [
              {
                "address-id": "1",
                "customer-address": "2001:db8::2"
              }
            ]
          }
        },
        "routing-protocols": {
          "routing-protocol": [
            {
              "id": "1",
              "type": "ietf-vpn-common:direct-routing"
            }
          ]
        }
      }
    ]
  }
}
]]></artwork>
          </figure>
        </section>
        <section anchor="illustrate-the-use-of-global-profiles">
          <name>Illustrate the Use of Global Profiles</name>
          <t>An example of a request to create two ACs to service the same CE on the same link is shown in <xref target="two-acs-same-ce-profile"/>. Unlike <xref target="two-acs-same-ce"/>, this example factorizes some of the redundant data.</t>
          <figure anchor="two-acs-same-ce-profile">
            <name>Example of a Message Body to Request Two ACes on The Same Link (Global Profile)</name>
            <artwork><![CDATA[
{
  "ietf-ac-svc:attachment-circuits": {
    "ac-global-profile": [
      {
        "id": "simple-profile",
        "l2-connection": {
          "encapsulation": {
            "type": "ietf-vpn-common:dot1q"
          }
        },
        "routing-protocols": {
          "routing-protocol": [
            {
              "id": "1",
              "type": "ietf-vpn-common:direct-routing"
            }
          ]
        }
      }
    ],
    "ac": [
      {
        "name": "ac1",
        "description": "a first ac with a same peer node",
        "ac-global-profile": ["simple-profile"],
        "l2-connection": {
          "encapsulation": {
            "dot1q": {
              "cvlan-id": 1
            }
          },
          "bearer-reference": "line-156"
        },
        "ip-connection": {
          "ipv4": {
            "local-address": "192.0.2.1",
            "prefix-length": 30,
            "address": [
              {
                "address-id": "1",
                "customer-address": "192.0.2.2"
              }
            ]
          },
          "ipv6": {
            "local-address": "2001:db8::1",
            "prefix-length": 64,
            "address": [
              {
                "address-id": "1",
                "customer-address": "2001:db8::2"
              }
            ]
          }
        }
      },
      {
        "name": "ac2",
        "description": "a second ac with a same peer node",
        "ac-global-profile": ["simple-profile"],
        "l2-connection": {
          "encapsulation": {
            "dot1q": {
              "cvlan-id": 2
            }
          },
          "bearer-reference": "line-156"
        },
        "ip-connection": {
          "ipv4": {
            "local-address": "192.0.2.1",
            "prefix-length": 30,
            "address": [
              {
                "address-id": "1",
                "customer-address": "192.0.2.2"
              }
            ]
          },
          "ipv6": {
            "local-address": "2001:db8::1",
            "prefix-length": 64,
            "address": [
              {
                "address-id": "1",
                "customer-address": "2001:db8::2"
              }
            ]
          }
        }
      }
    ]
  }
}
]]></artwork>
          </figure>
        </section>
        <section anchor="illustrate-the-use-of-per-node-profiles">
          <name>Illustrate the Use of Per-Node Profiles</name>
          <t>An example of a request to create two ACs to service the same CE on the same link is shown in <xref target="two-acs-same-ce-node-profile"/>. Unlike <xref target="two-acs-same-ce"/>, this example factorizes all redundant data.</t>
          <figure anchor="two-acs-same-ce-node-profile">
            <name>Example of a Message Body to Request Two ACes on The Same Link (Node Profile)</name>
            <artwork><![CDATA[
{
  "ietf-ac-svc:attachment-circuits": {
    "ac-node-group": [
      {
        "id": "simple-node-profile",
        "l2-connection": {
          "encapsulation": {
            "type": "ietf-vpn-common:dot1q"
          },
          "bearer-reference": "line-156"
        },
        "ip-connection": {
          "ipv4": {
            "local-address": "192.0.2.1",
            "prefix-length": 30,
            "address": [
              {
                "address-id": "1",
                "customer-address": "192.0.2.2"
              }
            ]
          },
          "ipv6": {
            "local-address": "2001:db8::1",
            "prefix-length": 64,
            "address": [
              {
                "address-id": "1",
                "customer-address": "2001:db8::2"
              }
            ]
          }
        },
        "routing-protocols": {
          "routing-protocol": [
            {
              "id": "1",
              "type": "ietf-vpn-common:direct-routing"
            }
          ]
        }
      }
    ],
    "ac": [
      {
        "name": "ac1",
        "description": "a first ac with a same peer node",
        "ac-node-profile": ["simple-node-profile"],
        "l2-connection": {
          "encapsulation": {
            "dot1q": {
              "cvlan-id": 1
            }
          }
        }
      },
      {
        "name": "ac2",
        "description": "a second ac with a same peer node",
        "ac-node-profile": ["simple-node-profile"],
        "l2-connection": {
          "encapsulation": {
            "dot1q": {
              "cvlan-id": 2
            }
          }
        }
     }
    ]
  }
}
]]></artwork>
          </figure>
          <t>A customer may request adding a new AC by simply referring to an existing per-node AC profile as shown in <xref target="add-ac-same-ce-node-profile"/>. This AC inherites all the data that was enclosed in the indicated per-node AC profile (IP addressing, routing, etc.).</t>
          <figure anchor="add-ac-same-ce-node-profile">
            <name>Example of a Message Body to Add a new AC over an existing link (Node Profile)</name>
            <artwork><![CDATA[
{
  "ietf-ac-svc:attachment-circuits": {
    "ac": [
      {
        "name": "ac3",
        "description": "a third AC with a same peer node",
        "ac-node-profile": [
          "simple-node-profile"
        ],
        "l2-connection": {
          "encapsulation": {
            "dot1q": {
              "cvlan-id": 3
            }
          }
        }
      }
    ]
  }
}
]]></artwork>
          </figure>
        </section>
        <section anchor="multiple-ces">
          <name>Multiple CEs</name>
          <t><xref target="network-example"/> shows an example of CEs that are interconnected by a service provider network.</t>
          <figure anchor="network-example">
            <name>Network Topology Example</name>
            <artset>
              <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="192" width="504" viewBox="0 0 504 192" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                  <path d="M 8,48 L 8,80" fill="none" stroke="black"/>
                  <path d="M 8,112 L 8,144" fill="none" stroke="black"/>
                  <path d="M 48,48 L 48,80" fill="none" stroke="black"/>
                  <path d="M 48,112 L 48,144" fill="none" stroke="black"/>
                  <path d="M 112,32 L 112,160" fill="none" stroke="black"/>
                  <path d="M 392,32 L 392,160" fill="none" stroke="black"/>
                  <path d="M 456,48 L 456,80" fill="none" stroke="black"/>
                  <path d="M 456,112 L 456,144" fill="none" stroke="black"/>
                  <path d="M 496,48 L 496,80" fill="none" stroke="black"/>
                  <path d="M 496,112 L 496,144" fill="none" stroke="black"/>
                  <path d="M 112,32 L 392,32" fill="none" stroke="black"/>
                  <path d="M 8,48 L 48,48" fill="none" stroke="black"/>
                  <path d="M 456,48 L 496,48" fill="none" stroke="black"/>
                  <path d="M 48,64 L 112,64" fill="none" stroke="black"/>
                  <path d="M 392,64 L 456,64" fill="none" stroke="black"/>
                  <path d="M 8,80 L 48,80" fill="none" stroke="black"/>
                  <path d="M 456,80 L 496,80" fill="none" stroke="black"/>
                  <path d="M 8,112 L 48,112" fill="none" stroke="black"/>
                  <path d="M 456,112 L 496,112" fill="none" stroke="black"/>
                  <path d="M 48,128 L 112,128" fill="none" stroke="black"/>
                  <path d="M 392,128 L 456,128" fill="none" stroke="black"/>
                  <path d="M 8,144 L 48,144" fill="none" stroke="black"/>
                  <path d="M 456,144 L 496,144" fill="none" stroke="black"/>
                  <path d="M 112,160 L 392,160" fill="none" stroke="black"/>
                  <g class="text">
                    <text x="32" y="68">CE1</text>
                    <text x="480" y="68">CE3</text>
                    <text x="256" y="100">Network</text>
                    <text x="24" y="132">CE2</text>
                    <text x="480" y="132">CE4</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art" align="center"><![CDATA[
                   +----------------------------------+
      +----+       |                                  |       +----+
      | CE1+-------+                                  +-------+ CE3|
      +----+       |                                  |       +----+
                   |              Network             |
      +----+       |                                  |       +----+
      |CE2 +-------+                                  +-------+ CE4|
      +----+       |                                  |       +----+
                   +----------------------------------+
]]></artwork>
            </artset>
          </figure>
          <t><xref target="multiple-sites"/> depicts an example of the message body of a request to instantiate the various ACs that are shown in <xref target="network-example"/>.</t>
          <figure anchor="multiple-sites">
            <name>Example of a Message Body of a Request to Create Multiple ACs bound to Multiple CEs</name>
            <artwork><![CDATA[
{
  "ietf-ac-svc:attachment-circuits": {
    "ac-global-profile": [
      {
        "id": "simple-profile",
        "l2-connection": {
          "encapsulation": {
            "type": "ietf-vpn-common:dot1q",
            "dot1q": {
              "cvlan-id": 1
            }
          }
        }
      }
    ],
    "ac": [
      {
        "name": "ac1",
        "description": "Connect a first site",
        "ac-global-profile": [
          "simple-node-profile"
        ],
        "l2-connection": {
          "bearer-reference": "ce1-network"
        }
      },
      {
        "name": "ac2",
        "description": "Connect a second Site",
        "ac-global-profile": [
          "simple-node-profile"
        ],
        "l2-connection": {
          "bearer-reference": "ce2-network"
        }
      },
      {
        "name": "ac3",
        "description": "Connect a third site",
        "ac-global-profile": [
          "simple-node-profile"
        ],
        "l2-connection": {
          "bearer-reference": "ce3-network"
        }
      },
      {
        "name": "ac4",
        "description": "Connect a forth site",
        "ac-global-profile": [
          "simple-node-profile"
        ],
        "l2-connection": {
          "bearer-reference": "ce4-network"
        }
      }
    ]
  }
}
]]></artwork>
          </figure>
        </section>
      </section>
      <section anchor="binding-attachment-circuits-to-an-ietf-network-slice">
        <name>Binding Attachment Circuits to an IETF Network Slice</name>
        <t>This example shows how the AC service model complements <xref target="I-D.ietf-teas-ietf-network-slice-nbi-yang"/> to connect a site to a slice service.</t>
        <t>Firstly, <xref target="slice-vlan-1"/> describes the end-to-end network topology as well the orchestration scopes:</t>
        <ul spacing="normal">
          <li>The topology is made up of two sites (site1 and site2), interconnected via a Transport Network (e.g. IP/MPLS Network). A Network Function is deployed within each site in a dedicated IP Subnet.</li>
          <li>A 5G SMO is responsible for the deployment Network Functions and the indirect management of a local Gateway (i.e., CE device).</li>
          <li>An IETF Network Slice Controller is responsible for the deployment of IETF Network Slices accross the TN.</li>
        </ul>
        <t>Network Functions are deployed within each site.</t>
        <figure anchor="slice-vlan-1">
          <name>An Example of a Network Topology Used to Deploy Slices</name>
          <artwork><![CDATA[
      5G SMO                 IETF NSC                 5G SMO
         │               (TN ORCHESTRATOR)               │
         │                        │                      │
   ◄─────┴─────►        ◄─────────┴────────►        ◄────┴─────►
       Site1             TRANSPORT NETWORK              Site2
   ┌───┐                  ┌──────────────┐                 ┌───┐
   │NF1│                  │              │                 │NF2│
   └─┬─┘   ┌───┐        ┌─┴─┐          ┌─┴─┐        ┌───┐  └─┬─┘
     │     │   │        │   │          │   │        │   │    │
   ──┴─────┤GW1├────────┤PE1│          │PE2├────────┤GW2├────┴──
       ▲   │   │    ▲   │   │          │   │   ▲    │   │  ▲
       │   └───┘    │   └─┬─┘          └─┬─┘   │    └───┘  │
       │            │     │              │     │           │
       │            │     └──────────────┘     │           │
     LAN1           │                          │          LAN2
198.51.100.0/24     │                          │  203.0.113.0/24
                    │                          │
                    │                          │
            Physical Link ID:           Physical Link ID:
              bearerX@site1               bearerX@site2

]]></artwork>
        </figure>
        <t><xref target="slice-vlan-2"/> describes the logical connectivity enforced thanks to both IETF Network Slice and Attachment Circuit models.</t>
        <figure anchor="slice-vlan-2">
          <name>Logical Overview</name>
          <artwork><![CDATA[
                             AS 65536  ◄────BGP───► AS 65550

 ┌───┐                     ┌────────┐                    ┌───┐
 │NF1│       192.0.2.0/30  │        │   192.0.2.4/30     │NF2│
 └─┬─┘   ┌───┐          ┌──┴┐      ┌┴──┐          ┌───┐  └─┬─┘
   │     │   │.1      .2│   │      │   │.5      .6│   │    │
 ──┴─────┤GW1│----------│PE1│      │PE2│----------│GW2├────┴──
         │   │ vlan-id  │   │      │   │ vlan-id  │   │
         └───┘   100    └──┬┘      └┬──┘   200    └───┘
198.51.100.0/24            │        │             203.0.113.0/24
                           └────────┘
                         sdp1      sdp2
             ◄─────────► ◄────────────► ◄─────────►
             Attachment   Ietf Network   Attachment
              Circuit         Slice       Circuit
                ac1         EMBB_UP        ac2



 ac1 properties:
 - bearer-reference: bearerX@site1
 - vlan-id: 100
 - CE-address: 192.0.2.1/30
 - PE-address: 192.0.2.2/30
 - Routing: static 198.51.100.0/24 via
            192.0.2.1 tag primary_UP_slice

 ac2 properties:
 - bearer-reference: bearerY@site2
 - vlan-id: 200
 - CE-address: 192.0.2.5/30
 - PE-address: 192.0.2.6/30
 - Routing: BGP local-as:65536
                customer-as:65550
                customer-address: 192.0.2.6
]]></artwork>
        </figure>
        <t><xref target="slice-acs"/> shows the message body of the request to create the required ACs using the Attachment Circuit module.</t>
        <figure anchor="slice-acs">
          <name>Message Body of a Request to Create Required ACs</name>
          <artwork><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

{
  "ietf-ac-svc:attachment-circuits": {
    "ac": [
      {
        "name": "ac1",
        "description": "Connection to site1 on vlan 100 for slice \
                                                            EMBB_UP",
        "requested-ac-start": "2023-12-12T05:00:00.00Z",
        "l2-connection": {
          "encapsulation": {
            "type": "ietf-vpn-common:dot1q",
            "dot1q": {
              "tag-type": "ietf-vpn-common:c-vlan",
              "cvlan-id": 100
            }
          },
          "bearer-reference": "bearerX@site1"
        },
        "ip-connection": {
          "ipv4": {
            "local-address": "192.0.2.2",
            "prefix-length": 30,
            "address": [
              {
                "address-id": "1",
                "customer-address": "192.0.2.1"
              }
            ]
          }
        },
        "routing-protocols": {
          "routing-protocol": [
            {
              "id": "1",
              "type": "ietf-vpn-common:bgp-routing",
              "static": {
                "cascaded-lan-prefixes": {
                  "ipv4-lan-prefixes": [
                    {
                      "lan": "198.51.100.0/24",
                      "next-hop": "192.0.2.1",
                      "lan-tag": "primary_UP_slice"
                    }
                  ]
                }
              }
            }
          ]
        }
      },
      {
        "name": "ac2",
        "description": "Connection to site2 on vlan 200 for slice \
                                                            EMBB_UP",
        "requested-ac-start": "2023-12-12T05:00:00.00Z",
        "l2-connection": {
          "encapsulation": {
            "type": "ietf-vpn-common:dot1q",
            "dot1q": {
              "tag-type": "ietf-vpn-common:c-vlan",
              "cvlan-id": 200
            }
          },
          "bearer-reference": "bearerY@site2"
        },
        "ip-connection": {
          "ipv4": {
            "local-address": "192.0.2.6",
            "prefix-length": 30,
            "address": [
              {
                "address-id": "1",
                "customer-address": "192.0.2.5"
              }
            ]
          }
        },
        "routing-protocols": {
          "routing-protocol": [
            {
              "id": "1",
              "type": "ietf-vpn-common:bgp-routing",
              "bgp": {
                "neighbor": [
                  {
                    "id": "1",
                    "local-as": "65536",
                    "peer-as": "65550"
                  }
                ]
              }
            }
          ]
        }
      }
    ]
  }
}
]]></artwork>
        </figure>
        <t><xref target="slice-prov"/> shows the message body of the request to create the a slice service bound to the ACs created using <xref target="slice-acs"/>. Only references to these ACs are included in the Slice Service request. This example assumes that the module defined <xref target="glue"/> is also supported by the NSC.</t>
        <figure anchor="slice-prov">
          <name>Message Body of a Request to Create a Slice Service Referring to the ACs</name>
          <artwork><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

{
  "ietf-network-slice-service:network-slice-services": {
    "slo-sle-templates": {
      "slo-sle-template": [
        {
          "id": "low-latency-template",
          "template-description": "Lowest possible latencey \
                                                 forwarding behavior"
        }
      ]
    },
    "slice-service": [
      {
        "service-id": "Slice EMBB_UP",
        "service-description": "Dedicate TN Slice for EMBB-UP",
        "slo-sle-template": "low-latency-template",
        "status": {},
        "sdps": {
          "sdp": [
            {
              "sdp-id": "sdp1",
              "ietf-ac-glue:ac-ref": [
                "ac1"
              ]
            },
            {
              "sdp-id": "sdp2",
              "ietf-ac-glue:ac-ref": [
                "ac2"
              ]
            }
          ]
        }
      }
    ]
  }
}
]]></artwork>
        </figure>
      </section>
    </section>
    <section anchor="description-of-the-attachment-circuit-yang-module">
      <name>Description of the Attachment Circuit YANG Module</name>
      <section anchor="overall-structure-of-the-module">
        <name>Overall Structure of the Module</name>
        <t>The overall tree structure of the AC service module is shown in <xref target="o-svc-tree"/>.</t>
        <figure anchor="o-svc-tree">
          <name>Overall AC Service Tree Structure</name>
          <artwork align="center"><![CDATA[
  +--rw specific-provisioning-profiles
  |  ...
  +--rw service-provisioning-profiles
  |  ...
  +--rw bearers
  |  ...
  +--rw attachment-circuits
     +--rw ac-global-profile* [id]
     |  ...
     +--rw ac-node-group* [id]
     |  ...
     +--rw ac* [name]
        ...
        +--rw l2-connection
        |  ...
        +--rw ip-connection
        |  ...
        +--rw routing-protocols
        |  ...
        +--rw oam
        |  ...
        +--rw security
           ...
]]></artwork>
        </figure>
        <t>The full tree structure is provided in <xref target="full-tree"/>.</t>
        <t>Each AC is identified with a unique identifier within a domain. The mapping between this AC and a local PE that terminates the AC is hidden to the application that makes use of the AC service model. This information is internal to the Network controller. As such, the details about the (node-specific) attachment interfaces are not exposed in this service model.</t>
      </section>
      <section anchor="service-profiles">
        <name>Service Profiles</name>
        <section anchor="description">
          <name>Description</name>
          <t>The 'specific-provisioning-profiles' container (<xref target="gp-svc-tree"/>) can be used by a service provider to maintain a set of specific profiles that are similar to those defined in <xref target="RFC9181"/>. The exact definition of the profiles is local to each service provider. The model only includes an identifier for these profiles in order to facilitate identifying and binding local policies when building an AC.</t>
          <figure anchor="gp-svc-tree">
            <name>Service Proviles</name>
            <artwork align="center"><![CDATA[
module: ietf-ac-svc
  +--rw specific-provisioning-profiles
  |  +--rw valid-provider-identifiers
  |     +--rw external-connectivity-identifier* [id]
  |     |       {external-connectivity}?
  |     |  +--rw id    string
  |     +--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 service-provisioning-profiles
  |  +--rw service-profile-identifier* [id]
  |     +--rw id    string
  +--rw bearers
  |  ...
  +--rw attachment-circuits
     +--rw ac-global-profile* [id]
     |  ...
     +--rw ac-node-group* [id]
     |  ...
     +--rw ac* [name]
        ...
        +--rw l2-connection
        |  ...
        +--rw ip-connection
        |  ...
        +--rw routing-protocols
        |  ...
        +--rw oam
        |  ...
        +--rw security
           ...
]]></artwork>
          </figure>
          <t>As shown in <xref target="gp-svc-tree"/>, two profile types can be defined: 'specific-provisioning-profiles' and 'service-provisioning-profiles'. Whether only specific profiles, service profiles, or a combination thereff are used is local to each service provider.</t>
          <t>The following specific rovisioning profiles can be defined:</t>
          <dl>
            <dt>'external-connectivity-identifier':</dt>
            <dd>
              <t>Refers to a profile that defines the external connectivity provided to a site that is connected via an AC. External connectivity may be access to the Internet or restricted connectivity, such as access to a public/private cloud.</t>
            </dd>
            <dt>'encryption-profile-identifier':</dt>
            <dd>
              <t>Refers to a set of policies related to the encryption setup that can be applied when provisioning an AC.</t>
            </dd>
            <dt>'qos-profile-identifier':</dt>
            <dd>
              <t>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>Refers to a set of Bidirectional Forwarding Detection (BFD) policies <xref target="RFC5880"/> that can be invoked when building an AC.</t>
            </dd>
            <dt>'forwarding-profile-identifier':</dt>
            <dd>
              <t>Refers to the policies that apply to the forwarding of packets conveyed within an AC. Such policies may consist, for example, of applying Access Control Lists (ACLs).</t>
            </dd>
            <dt>'routing-profile-identifier':</dt>
            <dd>
              <t>Refers to a set of routing policies that will be invoked (e.g., BGP policies) when building an AC.</t>
            </dd>
          </dl>
        </section>
        <section anchor="referencing-servicespecific-profiles">
          <name>Referencing Service/Specific Profiles</name>
          <t>All these profiles are uniquely identified by the NETCONF/RESTCONF server by an identifier. To ease referencing these profiles by other data models, specific typedefs are defined for each of these profiles. Likewise, an attachment circuit referenc typedef is defiened when referencing a (global) attachment circuit by its name is required. These typedefs <bcp14>SHOULD</bcp14> be used when other modules need a reference to one of these profiles or attahment circuits.</t>
        </section>
      </section>
      <section anchor="attachment-circuits-profiles">
        <name>Attachment Circuits Profiles</name>
      </section>
      <section anchor="node-specific-profiles">
        <name>Node-Specific Profiles</name>
      </section>
      <section anchor="bearers">
        <name>Bearers</name>
        <t><xref target="bearer-st"/> shows the sub-tree for managing the bearers (that is, the properties of the attachment that are below Layer 3). A bearer can be a wireless or wired link. A reference to a bearer is generated by the operator. Such a reference can be used, e.g., in a subsequent service request to create an AC. The anchroing of the AC can also be achieved by indicating (with or without a bearer reference), a peer SAP identifier (e.g., An identifier of a Service Function).</t>
        <figure anchor="bearer-st">
          <name>Bearers Tree Structure</name>
          <artwork align="center"><![CDATA[
  +--rw specific-provisioning-profiles
  |  ...
  +--rw service-provisioning-profiles
  |  ...
  +--rw bearers
  |  +--rw bearer* [id]
  |     +--rw id                  string
  |     +--rw description?        string
  |     +--rw customer-device
  |     |  +--rw device-id?   string
  |     |  +--rw location
  |     |     +--rw address?        string
  |     |     +--rw postal-code?    string
  |     |     +--rw state?          string
  |     |     +--rw city?           string
  |     |     +--rw country-code?   string
  |     +--rw requested-type?     identityref
  |     +--ro bearer-reference?   string
  |     |       {vpn-common:bearer-reference}?
  |     +--rw requested-start?    yang:date-and-time
  |     +--rw requested-stop?     yang:date-and-time
  |     +--ro actual-start?       yang:date-and-time
  |     +--ro actual-stop?        yang:date-and-time
  +--rw attachment-circuits
     ...
]]></artwork>
        </figure>
      </section>
      <section anchor="attachment-circuits">
        <name>Attachment Circuits</name>
        <t>The structure of 'attachment-circuits' is shown in <xref target="ac-svc-tree"/>.</t>
        <figure anchor="ac-svc-tree">
          <name>Overall Attachment Circuits Tree Structure</name>
          <artwork align="center"><![CDATA[
  +--rw specific-provisioning-profiles
  |  ...
  +--rw service-provisioning-profiles
  |  ...
  +--rw bearers
  |  ...
  +--rw attachment-circuits
     +--rw ac-global-profile* [id]
     |  ...
     +--rw ac-node-group* [id]
     |  ...
     +--rw ac* [name]
        +--rw customer-name?       string
        +--rw description?         string
        +--rw requested-start?     yang:date-and-time
        +--rw requested-stop?      yang:date-and-time
        +--ro actual-start?        yang:date-and-time
        +--ro actual-stop?         yang:date-and-time
        +--rw peer-sap-id*         string
        +--rw ac-global-profile*   ac-global-profile-reference
        +--rw ac-node-profile*     ac-node-group-reference
        +--rw name                 string
        +--rw l2-connection
        |  ...
        +--rw ip-connection
        |  ...
        +--rw routing-protocols
        |  ...
        +--rw oam
        |  ...
        +--rw security
           ...
]]></artwork>
        </figure>
        <section anchor="layer-2-connection-structure">
          <name>Layer 2 Connection Structure</name>
          <t>As shown in the tree depicted in <xref target="l2-svc-tree"/>, the 'l2-connection' container defines service parameters to enable such connectivity at Layer 2.</t>
          <figure anchor="l2-svc-tree">
            <name>Layer 2 Connection Tree Structure</name>
            <artwork align="center"><![CDATA[
  +--rw specific-provisioning-profiles
  |  ...
  +--rw service-provisioning-profiles
  |  ...
  +--rw bearers
  |  ...
  +--rw attachment-circuits
     +--rw ac-global-profile* [id]
     |  ...
     +--rw ac-node-group* [id]
     |  ...
     +--rw ac* [name]
        +--rw customer-name?       string
        +--rw description?         string
        +--rw requested-start?     yang:date-and-time
        +--rw requested-stop?      yang:date-and-time
        +--ro actual-start?        yang:date-and-time
        +--ro actual-stop?         yang:date-and-time
        +--rw peer-sap-id*         string
        +--rw ac-global-profile*   ac-global-profile-reference
        +--rw ac-node-profile*     ac-node-group-reference
        +--rw name                 string
        +--rw l2-connection
        |  +--rw encapsulation
        |  |  +--rw type?              identityref
        |  |  +--rw dot1q
        |  |  |  +--rw tag-type?   identityref
        |  |  |  +--rw cvlan-id?   uint16
        |  |  +--rw priority-tagged
        |  |  |  +--rw tag-type?   identityref
        |  |  +--rw qinq
        |  |     +--rw tag-type?   identityref
        |  |     +--rw svlan-id    uint16
        |  |     +--rw cvlan-id    uint16
        |  +--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 bearer-reference?          string
        |          {vpn-common:bearer-reference}?
        +--rw ip-connection
        |  ...
        +--rw routing-protocols
        |  ...
        +--rw oam
        |  ...
        +--rw security
           ...
]]></artwork>
          </figure>
        </section>
        <section anchor="layer-3-connection-structure">
          <name>Layer 3 Connection Structure</name>
          <t>The 'l3-connection' container defines a set of service parameters to enable Layer 3 connectivity for an AC. Both IPv4 and IPv6 parameters are supported.</t>
          <t><xref target="ipv4-svc-tree"/> shows the structure of the IPv4 connection.</t>
          <figure anchor="ipv4-svc-tree">
            <name>Layer 3 Connection Tree Structure (IPv4)</name>
            <artwork align="center"><![CDATA[
  +--rw specific-provisioning-profiles
  |  ...
  +--rw service-provisioning-profiles
  |  ...
  +--rw bearers
  |  ...
  +--rw attachment-circuits
     +--rw ac-global-profile* [id]
     |  ...
     +--rw ac-node-group* [id]
     |  ...
     +--rw ac* [name]
        +--rw customer-name?       string
        +--rw description?         string
        +--rw requested-start?     yang:date-and-time
        +--rw requested-stop?      yang:date-and-time
        +--ro actual-start?        yang:date-and-time
        +--ro actual-stop?         yang:date-and-time
        +--rw peer-sap-id*         string
        +--rw ac-global-profile*   ac-global-profile-reference
        +--rw ac-node-profile*     ac-node-group-reference
        +--rw name                 string
        +--rw l2-connection
        | ...
        +--rw ip-connection
        |  +--rw ipv4 {vpn-common:ipv4}?
        |  |  +--rw local-address?
        |  |  |       inet:ipv4-address
        |  |  +--rw virtual-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
        |  |     |  +--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 routing-protocols
        |  ...
        +--rw oam
        |  ...
        +--rw security
           ...
]]></artwork>
          </figure>
          <t><xref target="ipv6-svc-tree"/> shows the structure of the IPv6 connection.</t>
          <figure anchor="ipv6-svc-tree">
            <name>Layer 3 Connection Tree Structure (IPv6)</name>
            <artwork align="center"><![CDATA[
  +--rw specific-provisioning-profiles
  |  ...
  +--rw service-provisioning-profiles
  |  ...
  +--rw bearers
  |  ...
  +--rw attachment-circuits
     +--rw ac-global-profile* [id]
     |  ...
     +--rw ac-node-group* [id]
     |  ...
     +--rw ac* [name]
        +--rw customer-name?       string
        +--rw description?         string
        +--rw requested-start?     yang:date-and-time
        +--rw requested-stop?      yang:date-and-time
        +--ro actual-start?        yang:date-and-time
        +--ro actual-stop?         yang:date-and-time
        +--rw peer-sap-id*         string
        +--rw ac-global-profile*   ac-global-profile-reference
        +--rw ac-node-profile*     ac-node-group-reference
        +--rw name                 string
        +--rw l2-connection
        | ...
        +--rw ip-connection
        |  +--rw ipv4 {vpn-common:ipv4}?
        |  |  ...
        |  +--rw ipv6 {vpn-common:ipv6}?
        |     +--rw local-address?
        |     |       inet:ipv6-address
        |     +--rw virtual-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
        |        |  +--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
           ...
]]></artwork>
          </figure>
        </section>
        <section anchor="routing">
          <name>Routing</name>
          <t>As shown in the tree depicted in <xref target="rtg-svc-tree"/>, the 'routing-protocols' container defines th erequired parameters to enable the required routing features for an AC. One or more routing protocols can be associated with an AC.  Such routing protocols are then enabled between a PE and the CE. Each routing instance is uniquely identified to accommodate scenarios where multiple instances of the same routing protocol have to be configured on the same link.</t>
          <t>In addition to static routing, the module supports the following routing protocols:</t>
          <ul spacing="normal">
            <li>BGP <xref target="RFC4271"/></li>
            <li>OSPF <xref target="RFC4577"/> or <xref target="RFC6565"/></li>
            <li>IS-IS <xref target="ISO10589"/><xref target="RFC1195"/><xref target="RFC5308"/></li>
            <li>RIP <xref target="RFC2453"/></li>
          </ul>
          <t>The model also supports the Virtual Router Redundancy Protocol (VRRP) <xref target="RFC5798"/> on an AC.</t>
          <figure anchor="rtg-svc-tree">
            <name>Routing Tree Structure</name>
            <artwork align="center"><![CDATA[
  +--rw specific-provisioning-profiles
  |  ...
  +--rw service-provisioning-profiles
  |  ...
  +--rw bearers
  |  ...
  +--rw attachment-circuits
     +--rw ac-global-profile* [id]
     |  ...
     +--rw ac-node-group* [id]
     |  ...
     +--rw ac* [name]
        +--rw customer-name?       string
        +--rw description?         string
        +--rw requested-start?     yang:date-and-time
        +--rw requested-stop?      yang:date-and-time
        +--ro actual-start?        yang:date-and-time
        +--ro actual-stop?         yang:date-and-time
        +--rw peer-sap-id*         string
        +--rw ac-global-profile*   ac-global-profile-reference
        +--rw ac-node-profile*     ac-node-group-reference
        +--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      routing-profile-reference
        |     |  +--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 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:ipv6-prefix
        |     |        +--rw lan-tag?    string
        |     |        +--rw next-hop    union
        |     |        +--rw metric?     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 peer-groups
        |     |  |  +--rw peer-group* [name]
        |     |  |     +--rw name              string
        |     |  |     +--ro local-address?    inet:ip-address
        |     |  |     +--ro local-as?         inet:as-number
        |     |  |     +--rw peer-as?          inet:as-number
        |     |  |     +--rw address-family?   identityref
        |     |  |     +--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* [id]
        |     |     +--rw id                string
        |     |     +--rw remote-address?   inet:ip-address
        |     |     +--ro local-address?    inet:ip-address
        |     |     +--rw peer-group?
        |     |     |       -> ../../peer-groups/peer-group/name
        |     |     +--ro local-as?         inet:as-number
        |     |     +--rw peer-as?          inet:as-number
        |     |     +--rw address-family?   identityref
        |     |     +--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 address-family?   identityref
        |     |  +--rw area-id           yang:dotted-quad
        |     |  +--rw metric?           uint16
        |     |  +--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 address-family?   identityref
        |     |  +--rw area-address      area-address
        |     |  +--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 address-family?   identityref
        |     |  +--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 address-family?   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 oam
        |  ...
        +--rw security
           ...
]]></artwork>
          </figure>
          <t>For all supported routing protocols, 'address-family' indicates whether IPv4, IPv6, or both address families are to be activated. For example, this parameter is used to determine whether RIPv2 <xref target="RFC2453"/>, RIP Next Generation (RIPng), or both are to be enabled <xref target="RFC2080"/>.</t>
        </section>
        <section anchor="oam">
          <name>OAM</name>
          <t>As shown in the tree depicted in <xref target="oam-svc-tree"/>, the 'oam' container defines OAM-related parameters of an AC.</t>
          <figure anchor="oam-svc-tree">
            <name>OAM Tree Structure</name>
            <artwork align="center"><![CDATA[
  +--rw specific-provisioning-profiles
  |  ...
  +--rw service-provisioning-profiles
  |  ...
  +--rw bearers
  |  ...
  +--rw attachment-circuits
     +--rw ac-global-profile* [id]
     |  ...
     +--rw ac-node-group* [id]
     |  ...
     +--rw ac* [name]
        ...
        +--rw l2-connection
        |  ...
        +--rw ip-connection
        |  ...
        +--rw routing-protocols
        |  ...
        +--rw oam
        |  +--rw bfd {vpn-common:bfd}?
        |     +--rw holdtime?   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 security
           ...
]]></artwork>
          </figure>
        </section>
        <section anchor="security">
          <name>Security</name>
          <t>As shown in the tree depicted in <xref target="sec-svc-tree"/>, the 'security' container defines a set of AC security parameters.</t>
          <figure anchor="sec-svc-tree">
            <name>Security Tree Structure</name>
            <artwork align="center"><![CDATA[
  +--rw specific-provisioning-profiles
  |  ...
  +--rw service-provisioning-profiles
  |  ...
  +--rw bearers
  |  ...
  +--rw attachment-circuits
     +--rw ac-global-profile* [id]
     |  ...
     +--rw ac-node-group* [id]
     |  ...
     +--rw ac* [name]
        ...
        +--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 provider-profile?
                 |          ac-svc:encryption-profile-reference
                 +--:(customer-profile)
                    +--rw customer-key-chain?
                            key-chain:key-chain-ref
]]></artwork>
          </figure>
        </section>
      </section>
    </section>
    <section anchor="yang-module">
      <name>YANG Module</name>
      <t>This module uses types defined in <xref target="RFC6991"/>, <xref target="RFC9181"/>, and <xref target="RFC8177"/>.</t>
      <sourcecode markers="true" name="ietf-ac-svc@2022-11-30.yang"><![CDATA[
module ietf-ac-svc {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-ac-svc";
  prefix ac-svc;

  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-yang-types {
    prefix yang;
    reference
      "RFC 6991: Common YANG Data Types, Section 3";
  }
  import ietf-key-chain {
    prefix key-chain;
    reference
      "RFC 8177: YANG Data Model for Key Chains";
  }

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

     Editor:   Mohamed Boucadair
               <mailto:mohamed.boucadair@orange.com>
     Author:   Richard Roberts
               <mailto:rroberts@juniper.net>
     Author:   Oscar Gonzalez de Dios
               <mailto:oscar.gonzalezdedios@telefonica.com>
     Author:   Samier Barguil
               <mailto:ssamier.barguil_giraldo@nokia.com>
     Author:   Bo Wu
               <mailto:lana.wubo@huawei.com>";
  description
    "This YANG module defines a generic YANG model for exposing
     attachment circuits as a service.

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

  revision 2022-11-30 {
    description
      "Initial revision.";
    reference
      "RFC xxxx: A YANG Service Data Model for Attachment Circuits";
  }

  // Identities 

  identity bearer-type {
    description
      "Base identity for bearers type.";
  }

  identity ethernet {
    base bearer-type;
    description
      "Ethernet.";
  }

  identity wireless {
    base bearer-type;
    description
      "Wireless.";
  }

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

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

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

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

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

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

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

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

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

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

  identity l2-tunnel-type {
    description
      "Base identity for Layer 2 tunnel selection under the VPN
       network access.";
  }

  identity pseudowire {
    base l2-tunnel-type;
    description
      "Pseudowire tunnel termination in the VPN network access.";
  }

  identity vpls {
    base l2-tunnel-type;
    description
      "Virtual Private LAN Service (VPLS) tunnel termination in
       the VPN network access.";
  }

  identity vxlan {
    base l2-tunnel-type;
    description
      "Virtual eXtensible Local Area Network (VXLAN) tunnel
       termination in the VPN network access.";
  }

  /* Typedefs */

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

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

  typedef attachment-circuit-reference {
    type leafref {
      path "/ac-svc:attachment-circuits/ac-svc:ac/ac-svc:name";
    }
    description
      "Defines a reference to an attachment circuit that can be used
       by other modules.";
  }

  typedef ac-global-profile-reference {
    type leafref {
      path "/ac-svc:attachment-circuits/ac-svc:ac-global-profile"
         + "/ac-svc:id";
    }
    description
      "Defines a reference to a gloabl attachment circuit that can be used
       by other modules.";
  }

  typedef ac-node-group-reference {
    type leafref {
      path "/ac-svc:attachment-circuits/ac-svc:ac-node-group"
         + "/ac-svc:id";
    }
    description
      "Defines a reference to a per-node attachment circuit that can be used
       by other modules.";
  }

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

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

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

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

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

  /*
    typedef bearer-reference {
      type leafref {
        path "/ac-svc:bearers/ac-svc:bearer/ac-svc:id";
      }
      description
        "Defines a type to a bearer for referencing purposes.";
    }*/
  // L2 connection

  grouping l2-connection-profile {
    description
      "Defines Layer 2 protocols and parameters that can be
       factorized when provisioning Layer 2 connectivity.";
    container encapsulation {
      description
        "Container for Layer 2 encapsulation.";
      leaf type {
        type identityref {
          base vpn-common:encapsulation-type;
        }
        //default "vpn-common:priority-tagged";
        description
          "Encapsulation type.  By default, the type
           of the tagged interface is 'priority-tagged'.";
      }
      container dot1q {
        when "derived-from-or-self(../type, 'vpn-common:dot1q')" {
          description
            "Only applies when the type of the tagged interface
             is 'dot1q'.";
        }
        description
          "Tagged interface.";
        leaf tag-type {
          type identityref {
            base vpn-common:tag-type;
          }
          default "vpn-common:c-vlan";
          description
            "Tag type.  By default, the tag type is 'c-vlan'.";
        }
        leaf cvlan-id {
          type uint16 {
            range "1..4094";
          }
          description
            "VLAN identifier.";
        }
      }
      container qinq {
        when "derived-from-or-self(../type, 'vpn-common:qinq')" {
          description
            "Only applies when the type of the tagged interface
             is 'qinq'.";
        }
        description
          "Includes QinQ parameters.";
        leaf tag-type {
          type identityref {
            base vpn-common:tag-type;
          }
          default "vpn-common:s-c-vlan";
          description
            "Tag type.";
        }
        leaf svlan-id {
          type uint16;
          mandatory true;
          description
            "Service VLAN (S-VLAN) identifier.";
        }
        leaf cvlan-id {
          type uint16;
          mandatory true;
          description
            "Customer VLAN (C-VLAN) identifier.";
        }
      }
    }
  }

  grouping l2-connection {
    description
      "Defines Layer 2 protocols and parameters that are used to enable
       AC connectivity.";
    container encapsulation {
      description
        "Container for Layer 2 encapsulation.";
      leaf type {
        type identityref {
          base vpn-common:encapsulation-type;
        }
        //default "vpn-common:priority-tagged";
        description
          "Encapsulation type.  By default, the type of the tagged
           interface is 'priority-tagged'.";
      }
      container dot1q {
        when "derived-from-or-self(../type, 'vpn-common:dot1q')" {
          description
            "Only applies when the type of the tagged interface
             is 'dot1q'.";
        }
        description
          "Tagged interface.";
        leaf tag-type {
          type identityref {
            base vpn-common:tag-type;
          }
          default "vpn-common:c-vlan";
          description
            "Tag type.  By default, the tag type is 'c-vlan'.";
        }
        leaf cvlan-id {
          type uint16 {
            range "1..4094";
          }
          description
            "VLAN identifier.";
        }
      }
      container priority-tagged {
        when "derived-from-or-self(../type, "
           + "'vpn-common:priority-tagged')" {
          description
            "Only applies when the type of the tagged interface is
             'priority-tagged'.";
        }
        description
          "Priority tagged.";
        leaf tag-type {
          type identityref {
            base vpn-common:tag-type;
          }
          default "vpn-common:c-vlan";
          description
            "Tag type.  By default, the tag type is 'c-vlan'.";
        }
      }
      container qinq {
        when "derived-from-or-self(../type, 'vpn-common:qinq')" {
          description
            "Only applies when the type of the tagged interface
             is 'qinq'.";
        }
        description
          "Includes QinQ parameters.";
        leaf tag-type {
          type identityref {
            base vpn-common:tag-type;
          }
          default "vpn-common:s-c-vlan";
          description
            "Tag type.";
        }
        leaf svlan-id {
          type uint16;
          mandatory true;
          description
            "Service VLAN (S-VLAN) identifier.";
        }
        leaf cvlan-id {
          type uint16;
          mandatory true;
          description
            "Customer VLAN (C-VLAN) identifier.";
        }
      }
    }
    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.
           It is only applicable when a tunnel is required.
           The supported values are 'pseudowire', 'vpls', and 'vxlan'.
           Other values may be defined, if needed.";
        leaf type {
          type identityref {
            base l2-tunnel-type;
          }
          description
            "Selects the tunnel termination option for each AC
             Endpoint.";
        }
        container pseudowire {
          when "derived-from-or-self(../type, 'pseudowire')" {
            description
              "Only applies when the Layer 2 service type is
               'pseudowire'.";
          }
          description
            "Includes pseudowire termination parameters.";
          leaf vcid {
            type uint32;
            description
              "Indicates a pseudowire (PW) or virtual circuit (VC)
               identifier.";
          }
          leaf far-end {
            type union {
              type uint32;
              type inet:ip-address;
            }
            description
              "Neighbor reference.";
            reference
              "RFC 8077: Pseudowire Setup and Maintenance
                         Using the Label Distribution Protocol
                         (LDP), Section 6.1";
          }
        }
        container vpls {
          when "derived-from-or-self(../type, 'vpls')" {
            description
              "Only applies when the Layer 2 service type is 'vpls'.";
          }
          description
            "VPLS termination parameters.";
          leaf vcid {
            type uint32;
            description
              "VC identifier.";
          }
          leaf-list far-end {
            type union {
              type uint32;
              type inet:ip-address;
            }
            description
              "Neighbor reference.";
          }
        }
        container vxlan {
          when "derived-from-or-self(../type, 'vxlan')" {
            description
              "Only applies when the Layer 2 service type is 'vxlan'.";
          }
          description
            "VXLAN termination parameters.";
          leaf vni-id {
            type uint32;
            mandatory true;
            description
              "VXLAN Network Identifier (VNI).";
          }
          leaf peer-mode {
            type identityref {
              base vpn-common:vxlan-peer-mode;
            }
            default "vpn-common:static-mode";
            description
              "Specifies the VXLAN access mode.  By default,
               the peer mode is set to 'static-mode'.";
          }
          leaf-list peer-ip-address {
            type inet:ip-address;
            description
              "List of a peer's IP addresses.";
          }
        }
      }
      case l2vpn {
        leaf l2vpn-id {
          type vpn-common:vpn-id;
          description
            "Indicates the L2VPN service associated with an Integrated
             Routing and Bridging (IRB) interface.";
        }
      }
    }
    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.";
    }
  }

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

           If there is no value for the address allocation type,
           then IPv4 addressing is not enabled.";
      }
      choice allocation-type {
        description
          "Choice of the IPv4 address allocation.";
        case dynamic {
          description
            "When the addresses are allocated by DHCP or other
             dynamic means local to the infrastructure.";
          choice provider-dhcp {
            description
              "Parameters related to DHCP-allocated addresses. IP
               addresses are allocated by DHCP, which is provided by
               the operator.";
            leaf dhcp-service-type {
              type enumeration {
                enum server {
                  description
                    "Local DHCP server.";
                }
                enum relay {
                  description
                    "Local DHCP relay.  DHCP requests are relayed to
                     a provider's server.";
                }
              }
              description
                "Indicates the type of DHCP service to be enabled on
                 this AC.";
            }
          }
          choice dhcp-relay {
            description
              "The DHCP relay is provided by the operator.";
            container customer-dhcp-servers {
              description
                "Container for a list of the customer's DHCP servers.";
              leaf-list server-ip-address {
                type inet:ipv4-address;
                description
                  "IPv4 addresses of the customer's DHCP server.";
              }
            }
          }
        }
      }
    }
    container ipv6 {
      if-feature "vpn-common:ipv6";
      description
        "IPv6-specific parameters.";
      leaf prefix-length {
        type uint8 {
          range "0..128";
        }
        description
          "Subnet prefix length expressed in bits.
           It is applied to both local and customer addresses.";
      }
      leaf address-allocation-type {
        type identityref {
          base address-allocation-type;
        }
        default "static-address";
        description
          "Defines how addresses are allocated.
           If there is no value for the address allocation type,
           then IPv6 addressing is disabled.";
      }
      choice allocation-type {
        description
          "Choice of the IPv6 address allocation.";
        case dynamic {
          description
            "When the addresses are allocated by DHCP or other
             dynamic means local to the infrastructure.";
          choice provider-dhcp {
            description
              "Parameters related to DHCP-allocated addresses.
               IP addresses are allocated by DHCP, which is provided
               by the operator.";
            leaf dhcp-service-type {
              type enumeration {
                enum server {
                  description
                    "Local DHCP server.";
                }
                enum relay {
                  description
                    "Local DHCP relay.  DHCP requests are relayed
                     to a provider's server.";
                }
              }
              description
                "Indicates the type of DHCP service to
                 be enabled on this access.";
            }
          }
          choice dhcp-relay {
            description
              "The DHCP relay is provided by the operator.";
            container customer-dhcp-servers {
              description
                "Container for a list of the customer's DHCP servers.";
              leaf-list server-ip-address {
                type inet:ipv6-address;
                description
                  "IPv6 addresses of the customer's DHCP server.";
              }
            }
          }
        }
      }
    }
  }

  grouping ip-connection {
    description
      "Defines IP connection parameters.";
    container ipv4 {
      if-feature "vpn-common:ipv4";
      description
        "IPv4-specific parameters.";
      leaf local-address {
        type inet:ipv4-address;
        description
          "The IP address used at the provider's interface.";
      }
      leaf virtual-address {
        type inet:ipv4-address;
        description
          "This addresss may be used for redundancy purposes.";
      }
      leaf prefix-length {
        type uint8 {
          range "0..32";
        }
        description
          "Subnet prefix length expressed in bits.
           It is applied to both local and customer addresses.";
      }
      leaf address-allocation-type {
        type identityref {
          base address-allocation-type;
        }
        must "not(derived-from-or-self(current(), 'slaac') or "
           + "derived-from-or-self(current(), "
           + "'provider-dhcp-slaac'))" {
          error-message "SLAAC is only applicable to IPv6.";
        }
        default "static-address";
        description
          "Defines how addresses are allocated to the peer site.

           If there is no value for the address allocation type,
           then IPv4 addressing is not enabled.";
      }
      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 {
            default "number";
            description
              "A choice for how IPv4 addresses are assigned.";
            case number {
              leaf number-of-dynamic-address {
                type uint16;
                default "1";
                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 AC.";
            }
          }
          choice dhcp-relay {
            description
              "The DHCP relay is provided by the operator.";
            container customer-dhcp-servers {
              description
                "Container for a list of the customer's DHCP servers.";
              leaf-list server-ip-address {
                type inet:ipv4-address;
                description
                  "IPv4 addresses of the customer's DHCP server.";
              }
            }
          }
        }
        case static-addresses {
          description
            "Lists the IPv4 addresses that are used.";
          /*leaf primary-address {
            type leafref {
              path "../address/address-id";
            }
            description
              "Primary IP address of the connection.";
          }*/
          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.";
            }
          }
        }
      }
    }
    container ipv6 {
      if-feature "vpn-common:ipv6";
      description
        "IPv6-specific parameters.";
      leaf local-address {
        type inet:ipv6-address;
        description
          "IPv6 address of the provider side.";
      }
      leaf virtual-address {
        type inet:ipv6-address;
        description
          "This addresss may be used for redundancy purposes.";
      }
      leaf prefix-length {
        type uint8 {
          range "0..128";
        }
        description
          "Subnet prefix length expressed in bits.
           It is applied to both local and customer addresses.";
      }
      leaf address-allocation-type {
        type identityref {
          base address-allocation-type;
        }
        default "static-address";
        description
          "Defines how addresses are allocated.
           If there is no value for the address allocation type,
           then IPv6 addressing is disabled.";
      }
      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 {
            default "number";
            description
              "A choice for how IPv6 addresses are assigned.";
            case number {
              leaf number-of-dynamic-address {
                type uint16;
                default "1";
                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 dhcp-relay {
            description
              "The DHCP relay is provided by the operator.";
            container customer-dhcp-servers {
              description
                "Container for a list of the customer's DHCP servers.";
              leaf-list server-ip-address {
                type inet:ipv6-address;
                description
                  "IPv6 addresses of the customer's DHCP server.";
              }
            }
          }
        }
        case static-addresses {
          description
            "Lists the IPv6 addresses that are used.";
          /*leaf primary-address {
            type leafref {
              path "../address/address-id";
            }
            description
              "Primary IP address of the connection.";
          }*/
          list address {
            key "address-id";
            ordered-by user;
            description
              "Lists the IPv6 addresses that are used. The first address
               of the list is the primary IP address of the connection.";
            leaf address-id {
              type string;
              description
                "An identifier of the static IPv6 address.";
            }
            leaf customer-address {
              type inet:ipv6-address;
              description
                "An IPv6 address of the customer side.";
            }
          }
        }
      }
    }
  }

  /* Routing */

  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.";
      }
      list routing-profiles {
        key "id";
        description
          "Routing profiles.";
        leaf id {
          type routing-profile-reference;
          description
            "Reference to the routing profile to be used.";
        }
        leaf type {
          type identityref {
            base vpn-common:ie-type;
          }
          description
            "Import, export, or both.";
        }
      }
      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-as {
              type inet:as-number;
              config false;
              description
                "Indicates a local AS Number (ASN). This ASN is exposed
                 to a customer so that it knows which ASN to use
                 to set up a BGP session.";
            }
            leaf peer-as {
              type inet:as-number;
              description
                "Indicates the customer's ASN when the customer
                 requests BGP routing.";
            }
            leaf address-family {
              type identityref {
                base vpn-common:address-family;
              }
              description
                "This node contains the address families to be
                 activated. 'dual-stack' means that both IPv4 and IPv6e
                 will b activated.";
            }
          }
        }
      }
      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.";
        leaf address-family {
          type identityref {
            base vpn-common:address-family;
          }
          description
            "Indicates whether IPv4, IPv6, or both are to be
             activated.";
        }
        leaf area-id {
          type yang:dotted-quad;
          mandatory true;
          description
            "Area ID.";
          reference
            "RFC 4577: OSPF as the Provider/Customer Edge Protocol
                       for BGP/MPLS IP Virtual Private Networks
                       (VPNs), Section 4.2.3
             RFC 6565: OSPFv3 as a Provider Edge to Customer Edge
                       (PE-CE) Routing Protocol, Section 4.2";
        }
        leaf metric {
          type uint16;
          default "1";
          description
            "Metric of the AC.  It is used in the routing state
             calculation and path selection.";
        }
      }
      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.";
        leaf address-family {
          type identityref {
            base vpn-common:address-family;
          }
          description
            "Indicates whether IPv4, IPv6, or both are to
             be activated.";
        }
        leaf area-address {
          type area-address;
          mandatory true;
          description
            "Area address.";
        }
      }
      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.";
        leaf address-family {
          type identityref {
            base vpn-common:address-family;
          }
          description
            "Indicates whether IPv4, IPv6, or both
             address families are to be activated.";
        }
      }
      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.";
        }
      }
    }
  }

  grouping encryption-choice {
    description
      "Container for the encryption profile.";
    choice profile {
      description
        "Choice for the encryption profile.";
      case provider-profile {
        leaf provider-profile {
          type ac-svc:encryption-profile-reference;
          description
            "Reference to a provider encryption profile.";
        }
      }
      case customer-profile {
        leaf customer-key-chain {
          type key-chain:key-chain-ref;
          description
            "Customer-supplied key chain.";
        }
      }
    }
  }

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

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

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

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

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

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

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

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

  grouping ac-security {
    description
      "AC-specific security parameters.";
    container encryption {
      if-feature "vpn-common:encryption";
      description
        "Container for AC security encryption.";
      leaf enabled {
        type boolean;
        default "false";
        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.";
      uses encryption-choice;
    }
  }

  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
            "Reference to the 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.";
            leaf lan {
              type inet:ipv4-prefix;
              description
                "LAN prefixes.";
            }
            leaf lan-tag {
              type string;
              description
                "Internal tag to be used in VPN policies.";
            }
            leaf next-hop {
              type union {
                type inet:ip-address;
                type predefined-next-hop;
              }
              description
                "The next hop that is to be used for the static route.
                 This may be specified as an IP address or a
                 predefined next-hop type (e.g., 'discard' or
                 'local-link').";
            }
            leaf metric {
              type uint32;
              description
                "Indicates the metric associated with the static route.";
            }
            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.";
            leaf lan {
              type inet:ipv6-prefix;
              description
                "LAN prefixes.";
            }
            leaf lan-tag {
              type string;
              description
                "Internal tag to be used in VPN policies.";
            }
            leaf next-hop {
              type union {
                type inet:ip-address;
                type predefined-next-hop;
              }
              description
                "The next hop that is to be used for the static route.
                 This may be specified as an IP address or a predefined
                 next-hop type (e.g., 'discard' or 'local-link').";
            }
            leaf metric {
              type uint32;
              description
                "Indicates the metric associated with the static route.";
            }
            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 inet:ip-address;
              config false;
              description
                "The local IP address that will be used to establish
                 the BGP session.";
            }
            leaf local-as {
              type inet:as-number;
              config false;
              description
                "Indicates a local AS Number (ASN), if
                 an ASN distinct from the ASN configured
                 at the peer group level is needed.";
            }
            leaf peer-as {
              type inet:as-number;
              description
                "Indicates the customer's ASN when the customer
                 requests BGP routing.";
            }
            leaf address-family {
              type identityref {
                base vpn-common:address-family;
              }
              description
                "This node contains the address families
                 to be activated.  'dual-stack' means
                 that both IPv4 and IPv6 will be activated.";
            }
            uses bgp-authentication;
          }
        }
        list neighbor {
          key "id";
          description
            "List of BGP neighbors.";
          leaf id {
            type string;
            description
              "A neighbor identifier.";
          }
          leaf remote-address {
            type inet:ip-address;
            description
              "The remote IP address of this entry's BGP peer.

               If this leaf is not present, this means that the primary
               customer IP address is used as remote IP address.";
          }
          leaf local-address {
            type inet:ip-address;
            config false;
            description
              "The local IP address that will be used to establish
               the BGP session.";
          }
          leaf peer-group {
            type leafref {
              path "../../peer-groups/peer-group/name";
            }
            description
              "The peer-group with which this neighbor is
               associated.";
          }
          leaf local-as {
            type inet:as-number;
            config false;
            description
              "Indicates a local ASN.";
          }
          leaf peer-as {
            type inet:as-number;
            description
              "Indicates the customer's ASN when
               the customer requests BGP routing.";
          }
          leaf address-family {
            type identityref {
              base vpn-common:address-family;
            }
            description
              "This node contains the address families
               to be activated.  'dual-stack' means
               that both IPv4 and IPv6 will be activated.";
          }
          uses 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.";
        leaf address-family {
          type identityref {
            base vpn-common:address-family;
          }
          description
            "Indicates whether IPv4, IPv6, or
             both are to be activated.";
        }
        leaf area-id {
          type yang:dotted-quad;
          mandatory true;
          description
            "Area ID.";
          reference
            "RFC 4577: OSPF as the Provider/Customer Edge Protocol
                       for BGP/MPLS IP Virtual Private Networks
                       (VPNs), Section 4.2.3
             RFC 6565: OSPFv3 as a Provider Edge to Customer Edge
                       (PE-CE) Routing Protocol, Section 4.2";
        }
        leaf metric {
          type uint16;
          default "1";
          description
            "Metric of the ACE.  It is used in the routing state
             calculation and path selection.";
        }
        uses 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.";
        leaf address-family {
          type identityref {
            base vpn-common:address-family;
          }
          description
            "Indicates whether IPv4, IPv6, or both
             are to be activated.";
        }
        leaf area-address {
          type area-address;
          mandatory true;
          description
            "Area address.";
        }
        uses 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.";
        leaf address-family {
          type identityref {
            base vpn-common:address-family;
          }
          description
            "Indicates whether IPv4, IPv6, or both address families
             are to be activated.";
        }
        uses 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
             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.";
        }
        uses vpn-common:service-status;
      }
    }
  }

  grouping ac {
    description
      "Grouping for an attachment circuit.";
    leaf name {
      type string;
      description
        "A name of the AC. Data models that need to
         reference an attachment circuits should use
         attachment-circuit-reference.";
    }
    // Layer 2
    container l2-connection {
      description
        "Defines Layer 2 protocols and parameters that
         are required to enable AC connectivity.";
      uses l2-connection;
    }
    // Layer 3
    container ip-connection {
      description
        "Defines IP connection parameters.";
      uses ip-connection;
    }
    // Routing
    container routing-protocols {
      description
        "Defines routing protocols.";
      uses routing;
    }
    // OAM
    container oam {
      description
        "Defines the Operations, Administration, and Maintenance
         (OAM) mechanisms used.

         BFD is set as a fault detection mechanism,
         but other mechanisms can be defined in the future.";
      container bfd {
        if-feature "vpn-common:bfd";
        description
          "Container for BFD.";
        leaf holdtime {
          type uint32;
          units "milliseconds";
          description
            "Expected BFD holdtime.

             The customer may impose some fixed values
             for the holdtime period if the provider allows
             the customer to use this function.

             If the provider doesn't allow the customer to
             use this function, fixed values will not be set.";
          reference
            "RFC 5880: Bidirectional Forwarding
                       Detection (BFD), Section 6.8.18";
        }
        uses vpn-common:service-status;
      }
    }
    // Security 
    container security {
      description
        "AC-specific security parameters.";
      uses ac-security;
    }
  }

  grouping ac-profile {
    description
      "Grouping for an attachment circuit.";
    leaf id {
      type string;
      description
        "An identifier of the AC.";
    }
    // Layer 2
    container l2-connection {
      description
        "Defines Layer 2 protocols and parameters that
         are required to enable AC connectivity.";
      uses l2-connection-profile;
    }
    // Layer 3
    container ip-connection {
      description
        "Defines IP connection parameters.";
      uses ip-connection-global-profile;
    }
    // Routing
    container routing-protocols {
      description
        "Defines routing protocols.";
      uses routing-profile;
    }
    // OAM
    container oam {
      description
        "Defines the OAM mechanisms used.

         BFD is set as a fault detection mechanism, but
         other mechanisms can be defined in the future.";
      container bfd {
        if-feature "vpn-common:bfd";
        description
          "Container for BFD.";
        leaf holdtime {
          type uint32;
          units "milliseconds";
          description
            "Expected BFD holdtime.

             The customer may impose some fixed values
             for the holdtime period if the provider allows
             the customer to use this function.

             If the provider doesn't allow the customer to use
             this function, fixed values will not be set.";
          reference
            "RFC 5880: Bidirectional Forwarding
                       Detection (BFD), Section 6.8.18";
        }
      }
    }
    // Security 
    container security {
      description
        "AC-specific security parameters.";
      uses ac-security;
    }
  }

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

  container specific-provisioning-profiles {
    description
      "Contains a set of valid profiles to reference for an AC.";
    uses vpn-common:vpn-profile-cfg;
  }
  container service-provisioning-profiles {
    description
      "Contains a set of valid profiles to reference for an AC.";
    list service-profile-identifier {
      key "id";
      description
        "List of generic service profile identifiers.";
      leaf id {
        type string;
        description
          "Identification of the service profile to be used.
           the profile only has significance within the service
           provider's administrative domain.";
      }
    }
  }
  container bearers {
    description
      "Main container for the bearers.";
    list bearer {
      key "id";
      description
        "Maintains a list of bearers.";
      leaf id {
        type string;
        description
          "An identifier of the bearer.";
      }
      leaf description {
        type string;
        description
          "A description of this bearer.";
      }
      container customer-device {
        description
          "Identification of the customer device that terminates the
           bearer.";
        leaf device-id {
          type string;
          description
            "Identifier for the device.";
        }
        container location {
          description
            "Location of the node.";
          leaf address {
            type string;
            description
              "Address (number and street) of the site.";
          }
          leaf postal-code {
            type string;
            description
              "Postal code of the site.";
          }
          leaf state {
            type string;
            description
              "State of the site.  This leaf can also be
               used to describe a region for a country that
               does not have states.";
          }
          leaf city {
            type string;
            description
              "City of the site.";
          }
          leaf country-code {
            type string {
              pattern '[A-Z]{2}';
            }
            description
              "Country of the site.
               Expressed as ISO ALPHA-2 code.";
          }
        }
      }
      leaf requested-type {
        type identityref {
          base bearer-type;
        }
        description
          "Type of the requested bearer (e.g., Ethernet, or wireless)";
      }
      leaf bearer-reference {
        if-feature "vpn-common:bearer-reference";
        type string;
        config false;
        description
          "This is an internal reference for the service provider
           to identify the bearer associated with this AC.";
      }
      uses op-instructions;
    }
  }
  container attachment-circuits {
    description
      "Main container for the attachment circuits.";
    list ac-global-profile {
      key "id";
      description
        "Maintains a list of AC profiles.";
      uses ac-profile;
    }
    list ac-node-group {
      key "id";
      description
        "Maintains a list of per-node AC profiles.";
      leaf id {
        type string;
        description
          "An identifier of the AC group.";
      }
      uses ac;
    }
    list ac {
      key "name";
      description
        "Global provisioning of attachment circuits.";
      leaf customer-name {
        type string;
        description
          "Indicates the name of the customer that requested this
           AC.";
      }
      leaf description {
        type string;
        description
          "Associates a description with an AC.";
      }
      uses op-instructions;
      leaf-list peer-sap-id {
        type string;
        description
          "One or more peer SAPs can be indicated.";
      }
      leaf-list ac-global-profile {
        type ac-global-profile-reference;
        description
          "A reference to an AC profile.";
      }
      leaf-list ac-node-profile {
        type ac-node-group-reference;
        description
          "A reference to a per-node AC profile.";
      }
      uses ac;
    }
  }
}
]]></sourcecode>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The YANG module specified in this document define 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-svc" module:</t>
      <ul spacing="normal">
        <li>TBC</li>
        <li>TBC</li>
      </ul>
      <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>
      <ul spacing="normal">
        <li>TBC</li>
        <li>TBC</li>
      </ul>
    </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-svc
   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-svc
   Maintained by IANA?  N
   Namespace:  urn:ietf:params:xml:ns:yang:ietf-ac-svc
   Prefix:  ac
   Reference:  RFC xxxx
]]></artwork>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="ISO10589" target="https://www.iso.org/standard/30932.html">
          <front>
            <title>Information technology - Telecommunications and information exchange between systems - Intermediate System to Intermediate System intra-domain routeing information exchange protocol for use in conjunction with the protocol for providing the connectionless-mode network service (ISO8473)</title>
            <author>
              <organization>ISO</organization>
            </author>
            <date year="2002"/>
          </front>
        </reference>
        <reference anchor="I-D.ietf-opsawg-sap">
          <front>
            <title>A YANG Network Model for Service Attachment Points (SAPs)</title>
            <author fullname="Mohamed Boucadair" initials="M." surname="Boucadair">
              <organization>Orange</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="Qin Wu" initials="Q." surname="Wu">
              <organization>Huawei</organization>
            </author>
            <author fullname="Victor Lopez" initials="V." surname="Lopez">
              <organization>Nokia</organization>
            </author>
            <date day="18" month="January" 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).

   This document augments the 'ietf-network' data model 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-Network Interface (UNI) and Network-to-
   Network Interface (NNI) are supported in the SAP data model.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-opsawg-sap-15"/>
        </reference>
        <reference anchor="RFC8342">
          <front>
            <title>Network Management Datastore Architecture (NMDA)</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund">
              <organization/>
            </author>
            <author fullname="J. Schoenwaelder" initials="J." surname="Schoenwaelder">
              <organization/>
            </author>
            <author fullname="P. Shafer" initials="P." surname="Shafer">
              <organization/>
            </author>
            <author fullname="K. Watsen" initials="K." surname="Watsen">
              <organization/>
            </author>
            <author fullname="R. Wilton" initials="R." surname="Wilton">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="O. Gonzalez de Dios" initials="O." role="editor" surname="Gonzalez de Dios">
              <organization/>
            </author>
            <author fullname="M. Boucadair" initials="M." role="editor" surname="Boucadair">
              <organization/>
            </author>
            <author fullname="Q. Wu" initials="Q." surname="Wu">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="D. Ward" initials="D." surname="Ward">
              <organization/>
            </author>
            <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="RFC4271">
          <front>
            <title>A Border Gateway Protocol 4 (BGP-4)</title>
            <author fullname="Y. Rekhter" initials="Y." role="editor" surname="Rekhter">
              <organization/>
            </author>
            <author fullname="T. Li" initials="T." role="editor" surname="Li">
              <organization/>
            </author>
            <author fullname="S. Hares" initials="S." role="editor" surname="Hares">
              <organization/>
            </author>
            <date month="January" year="2006"/>
            <abstract>
              <t>This document discusses the Border Gateway Protocol (BGP), which is an inter-Autonomous System routing protocol.</t>
              <t>The primary function of a BGP speaking system is to exchange network reachability information with other BGP systems.  This network reachability information includes information on the list of Autonomous Systems (ASes) that reachability information traverses. This information is sufficient for constructing a graph of AS connectivity for this reachability from which routing loops may be pruned, and, at the AS level, some policy decisions may be enforced.</t>
              <t>BGP-4 provides a set of mechanisms for supporting Classless Inter-Domain Routing (CIDR).  These mechanisms include support for advertising a set of destinations as an IP prefix, and eliminating the concept of network "class" within BGP.  BGP-4 also introduces mechanisms that allow aggregation of routes, including aggregation of AS paths.</t>
              <t>This document obsoletes RFC 1771.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4271"/>
          <seriesInfo name="DOI" value="10.17487/RFC4271"/>
        </reference>
        <reference anchor="RFC4577">
          <front>
            <title>OSPF as the Provider/Customer Edge Protocol for BGP/MPLS IP Virtual Private Networks (VPNs)</title>
            <author fullname="E. Rosen" initials="E." surname="Rosen">
              <organization/>
            </author>
            <author fullname="P. Psenak" initials="P." surname="Psenak">
              <organization/>
            </author>
            <author fullname="P. Pillay-Esnault" initials="P." surname="Pillay-Esnault">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="P. Moyer" initials="P." surname="Moyer">
              <organization/>
            </author>
            <author fullname="J. Doyle" initials="J." surname="Doyle">
              <organization/>
            </author>
            <author fullname="E. Ertekin" initials="E." surname="Ertekin">
              <organization/>
            </author>
            <author fullname="M. Lundberg" initials="M." surname="Lundberg">
              <organization/>
            </author>
            <date month="June" year="2012"/>
            <abstract>
              <t>Many Service Providers (SPs) offer Virtual Private Network (VPN) services to their customers using a technique in which Customer Edge (CE) routers are routing peers of Provider Edge (PE) routers.  The Border Gateway Protocol (BGP) is used to distribute the customer's routes across the provider's IP backbone network, and Multiprotocol Label Switching (MPLS) is used to tunnel customer packets across the provider's backbone.  Support currently exists for both IPv4 and IPv6 VPNs; however, only Open Shortest Path First version 2 (OSPFv2) as PE-CE protocol is specified.  This document extends those specifications to support OSPF version 3 (OSPFv3) as a PE-CE routing protocol.  The OSPFv3 PE-CE functionality is identical to that of OSPFv2 except for the differences described in this document. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6565"/>
          <seriesInfo name="DOI" value="10.17487/RFC6565"/>
        </reference>
        <reference anchor="RFC1195">
          <front>
            <title>Use of OSI IS-IS for routing in TCP/IP and dual environments</title>
            <author fullname="R. Callon" initials="R." surname="Callon">
              <organization/>
            </author>
            <date month="December" year="1990"/>
            <abstract>
              <t>This memo specifies an integrated routing protocol, based on the OSI Intra-Domain IS-IS Routing Protocol, which may be used as an interior gateway protocol (IGP) to support TCP/IP as well as OSI.  This allows a single routing protocol to be used to support pure IP environments, pure OSI environments, and dual environments.  This specification was developed by the IS-IS working group of the Internet Engineering Task Force.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1195"/>
          <seriesInfo name="DOI" value="10.17487/RFC1195"/>
        </reference>
        <reference anchor="RFC5308">
          <front>
            <title>Routing IPv6 with IS-IS</title>
            <author fullname="C. Hopps" initials="C." surname="Hopps">
              <organization/>
            </author>
            <date month="October" year="2008"/>
            <abstract>
              <t>This document specifies a method for exchanging IPv6 routing information using the IS-IS routing protocol.  The described method utilizes two new TLVs: a reachability TLV and an interface address TLV to distribute the necessary IPv6 information throughout a routing domain.  Using this method, one can route IPv6 along with IPv4 and OSI using a single intra-domain routing protocol.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5308"/>
          <seriesInfo name="DOI" value="10.17487/RFC5308"/>
        </reference>
        <reference anchor="RFC2453">
          <front>
            <title>RIP Version 2</title>
            <author fullname="G. Malkin" initials="G." surname="Malkin">
              <organization/>
            </author>
            <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="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">
              <organization/>
            </author>
            <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="RFC2080">
          <front>
            <title>RIPng for IPv6</title>
            <author fullname="G. Malkin" initials="G." surname="Malkin">
              <organization/>
            </author>
            <author fullname="R. Minnear" initials="R." surname="Minnear">
              <organization/>
            </author>
            <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="RFC6991">
          <front>
            <title>Common YANG Data Types</title>
            <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder">
              <organization/>
            </author>
            <date month="July" year="2013"/>
            <abstract>
              <t>This document introduces a collection of common data types to be used with the YANG data modeling language.  This document obsoletes RFC 6021.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6991"/>
          <seriesInfo name="DOI" value="10.17487/RFC6991"/>
        </reference>
        <reference anchor="RFC8177">
          <front>
            <title>YANG Data Model for Key Chains</title>
            <author fullname="A. Lindem" initials="A." role="editor" surname="Lindem">
              <organization/>
            </author>
            <author fullname="Y. Qu" initials="Y." surname="Qu">
              <organization/>
            </author>
            <author fullname="D. Yeung" initials="D." surname="Yeung">
              <organization/>
            </author>
            <author fullname="I. Chen" initials="I." surname="Chen">
              <organization/>
            </author>
            <author fullname="J. Zhang" initials="J." surname="Zhang">
              <organization/>
            </author>
            <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="RFC6241">
          <front>
            <title>Network Configuration Protocol (NETCONF)</title>
            <author fullname="R. Enns" initials="R." role="editor" surname="Enns">
              <organization/>
            </author>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund">
              <organization/>
            </author>
            <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder">
              <organization/>
            </author>
            <author fullname="A. Bierman" initials="A." role="editor" surname="Bierman">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund">
              <organization/>
            </author>
            <author fullname="K. Watsen" initials="K." surname="Watsen">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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>
        <name>Informative References</name>
        <reference anchor="RFC8340">
          <front>
            <title>YANG Tree Diagrams</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund">
              <organization/>
            </author>
            <author fullname="L. Berger" initials="L." role="editor" surname="Berger">
              <organization/>
            </author>
            <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="RFC7665">
          <front>
            <title>Service Function Chaining (SFC) Architecture</title>
            <author fullname="J. Halpern" initials="J." role="editor" surname="Halpern">
              <organization/>
            </author>
            <author fullname="C. Pignataro" initials="C." role="editor" surname="Pignataro">
              <organization/>
            </author>
            <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="I-D.ietf-teas-ietf-network-slice-nbi-yang">
          <front>
            <title>IETF Network Slice Service YANG Model</title>
            <author fullname="Bo Wu" initials="B." surname="Wu">
              <organization>Huawei Technologies</organization>
            </author>
            <author fullname="Dhruv Dhody" initials="D." surname="Dhody">
              <organization>Huawei Technologies</organization>
            </author>
            <author fullname="Reza Rokui" initials="R." surname="Rokui">
              <organization>Ciena</organization>
            </author>
            <author fullname="Tarek Saad" initials="T." surname="Saad">
              <organization>Cisco Systems, Inc</organization>
            </author>
            <author fullname="Liuyan Han" initials="L." surname="Han">
              <organization>China Mobile</organization>
            </author>
            <author fullname="John Mullooly" initials="J." surname="Mullooly">
              <organization>Cisco Systems, Inc</organization>
            </author>
            <date day="24" month="October" year="2022"/>
            <abstract>
              <t>   This document defines a YANG model for the IETF Network Slice
   service.  The model can be used by an IETF Network Slice customer to
   manage IETF Network Slices.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-teas-ietf-network-slice-nbi-yang-03"/>
        </reference>
        <reference anchor="RFC3644">
          <front>
            <title>Policy Quality of Service (QoS) Information Model</title>
            <author fullname="Y. Snir" initials="Y." surname="Snir">
              <organization/>
            </author>
            <author fullname="Y. Ramberg" initials="Y." surname="Ramberg">
              <organization/>
            </author>
            <author fullname="J. Strassner" initials="J." surname="Strassner">
              <organization/>
            </author>
            <author fullname="R. Cohen" initials="R." surname="Cohen">
              <organization/>
            </author>
            <author fullname="B. Moore" initials="B." surname="Moore">
              <organization/>
            </author>
            <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>
      </references>
    </references>
    <section anchor="full-tree">
      <name>Full Tree</name>
      <figure anchor="d-svc-tree">
        <name>AC Service Tree Structure</name>
        <artwork align="center"><![CDATA[
module: ietf-ac-svc
  +--rw specific-provisioning-profiles
  |  +--rw valid-provider-identifiers
  |     +--rw external-connectivity-identifier* [id]
  |     |       {external-connectivity}?
  |     |  +--rw id    string
  |     +--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 service-provisioning-profiles
  |  +--rw service-profile-identifier* [id]
  |     +--rw id    string
  +--rw bearers
  |  +--rw bearer* [id]
  |     +--rw id                  string
  |     +--rw description?        string
  |     +--rw customer-device
  |     |  +--rw device-id?   string
  |     |  +--rw location
  |     |     +--rw address?        string
  |     |     +--rw postal-code?    string
  |     |     +--rw state?          string
  |     |     +--rw city?           string
  |     |     +--rw country-code?   string
  |     +--rw requested-type?     identityref
  |     +--ro bearer-reference?   string
  |     |       {vpn-common:bearer-reference}?
  |     +--rw requested-start?    yang:date-and-time
  |     +--rw requested-stop?     yang:date-and-time
  |     +--ro actual-start?       yang:date-and-time
  |     +--ro actual-stop?        yang:date-and-time
  +--rw attachment-circuits
     +--rw ac-global-profile* [id]
     |  +--rw id                   string
     |  +--rw l2-connection
     |  |  +--rw encapsulation
     |  |     +--rw type?    identityref
     |  |     +--rw dot1q
     |  |     |  +--rw tag-type?   identityref
     |  |     |  +--rw cvlan-id?   uint16
     |  |     +--rw qinq
     |  |        +--rw tag-type?   identityref
     |  |        +--rw svlan-id    uint16
     |  |        +--rw cvlan-id    uint16
     |  +--rw ip-connection
     |  |  +--rw ipv4 {vpn-common:ipv4}?
     |  |  |  +--rw prefix-length?                       uint8
     |  |  |  +--rw address-allocation-type?             identityref
     |  |  |  +--rw (allocation-type)?
     |  |  |     +--:(dynamic)
     |  |  |        +--rw (provider-dhcp)?
     |  |  |        |  +--:(dhcp-service-type)
     |  |  |        |     +--rw dhcp-service-type?       enumeration
     |  |  |        +--rw (dhcp-relay)?
     |  |  |           +--:(customer-dhcp-servers)
     |  |  |              +--rw customer-dhcp-servers
     |  |  |                 +--rw server-ip-address*
     |  |  |                         inet:ipv4-address
     |  |  +--rw ipv6 {vpn-common:ipv6}?
     |  |     +--rw prefix-length?                       uint8
     |  |     +--rw address-allocation-type?             identityref
     |  |     +--rw (allocation-type)?
     |  |        +--:(dynamic)
     |  |           +--rw (provider-dhcp)?
     |  |           |  +--:(dhcp-service-type)
     |  |           |     +--rw dhcp-service-type?       enumeration
     |  |           +--rw (dhcp-relay)?
     |  |              +--:(customer-dhcp-servers)
     |  |                 +--rw customer-dhcp-servers
     |  |                    +--rw server-ip-address*
     |  |                            inet:ipv6-address
     |  +--rw routing-protocols
     |  |  +--rw routing-protocol* [id]
     |  |     +--rw id                  string
     |  |     +--rw type?               identityref
     |  |     +--rw routing-profiles* [id]
     |  |     |  +--rw id      routing-profile-reference
     |  |     |  +--rw type?   identityref
     |  |     +--rw bgp
     |  |     |  +--rw peer-groups
     |  |     |     +--rw peer-group* [name]
     |  |     |        +--rw name              string
     |  |     |        +--ro local-as?         inet:as-number
     |  |     |        +--rw peer-as?          inet:as-number
     |  |     |        +--rw address-family?   identityref
     |  |     +--rw ospf
     |  |     |  +--rw address-family?   identityref
     |  |     |  +--rw area-id           yang:dotted-quad
     |  |     |  +--rw metric?           uint16
     |  |     +--rw isis
     |  |     |  +--rw address-family?   identityref
     |  |     |  +--rw area-address      area-address
     |  |     +--rw rip
     |  |     |  +--rw address-family?   identityref
     |  |     +--rw vrrp
     |  |        +--rw address-family?   identityref
     |  +--rw oam
     |  |  +--rw bfd {vpn-common:bfd}?
     |  |     +--rw holdtime?   uint32
     |  +--rw security
     |     +--rw encryption {vpn-common:encryption}?
     |     |  +--rw enabled?   boolean
     |     |  +--rw layer?     enumeration
     |     +--rw encryption-profile
     |        +--rw (profile)?
     |           +--:(provider-profile)
     |           |  +--rw provider-profile?
     |           |          ac-svc:encryption-profile-reference
     |           +--:(customer-profile)
     |              +--rw customer-key-chain?
     |                      key-chain:key-chain-ref
     +--rw ac-node-group* [id]
     |  +--rw id                   string
     |  +--rw name?                string
     |  +--rw l2-connection
     |  |  +--rw encapsulation
     |  |  |  +--rw type?              identityref
     |  |  |  +--rw dot1q
     |  |  |  |  +--rw tag-type?   identityref
     |  |  |  |  +--rw cvlan-id?   uint16
     |  |  |  +--rw priority-tagged
     |  |  |  |  +--rw tag-type?   identityref
     |  |  |  +--rw qinq
     |  |  |     +--rw tag-type?   identityref
     |  |  |     +--rw svlan-id    uint16
     |  |  |     +--rw cvlan-id    uint16
     |  |  +--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 bearer-reference?          string
     |  |          {vpn-common:bearer-reference}?
     |  +--rw ip-connection
     |  |  +--rw ipv4 {vpn-common:ipv4}?
     |  |  |  +--rw local-address?
     |  |  |  |       inet:ipv4-address
     |  |  |  +--rw virtual-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
     |  |  |     |  +--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 virtual-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
     |  |        |  +--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 routing-protocol* [id]
     |  |     +--rw id                  string
     |  |     +--rw type?               identityref
     |  |     +--rw routing-profiles* [id]
     |  |     |  +--rw id      routing-profile-reference
     |  |     |  +--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 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:ipv6-prefix
     |  |     |        +--rw lan-tag?    string
     |  |     |        +--rw next-hop    union
     |  |     |        +--rw metric?     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 peer-groups
     |  |     |  |  +--rw peer-group* [name]
     |  |     |  |     +--rw name              string
     |  |     |  |     +--ro local-address?    inet:ip-address
     |  |     |  |     +--ro local-as?         inet:as-number
     |  |     |  |     +--rw peer-as?          inet:as-number
     |  |     |  |     +--rw address-family?   identityref
     |  |     |  +--rw neighbor* [id]
     |  |     |     +--rw id                string
     |  |     |     +--rw remote-address?   inet:ip-address
     |  |     |     +--ro local-address?    inet:ip-address
     |  |     |     +--rw peer-group?
     |  |     |     |       -> ../../peer-groups/peer-group/name
     |  |     |     +--ro local-as?         inet:as-number
     |  |     |     +--rw peer-as?          inet:as-number
     |  |     |     +--rw address-family?   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 address-family?   identityref
     |  |     |  +--rw area-id           yang:dotted-quad
     |  |     |  +--rw metric?           uint16
     |  |     |  +--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 address-family?   identityref
     |  |     |  +--rw area-address      area-address
     |  |     |  +--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 address-family?   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 address-family?   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 oam
     |  |  +--rw bfd {vpn-common:bfd}?
     |  |     +--rw holdtime?   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 security
     |     +--rw encryption {vpn-common:encryption}?
     |     |  +--rw enabled?   boolean
     |     |  +--rw layer?     enumeration
     |     +--rw encryption-profile
     |        +--rw (profile)?
     |           +--:(provider-profile)
     |           |  +--rw provider-profile?
     |           |          ac-svc:encryption-profile-reference
     |           +--:(customer-profile)
     |              +--rw customer-key-chain?
     |                      key-chain:key-chain-ref
     +--rw ac* [name]
        +--rw customer-name?       string
        +--rw description?         string
        +--rw requested-start?     yang:date-and-time
        +--rw requested-stop?      yang:date-and-time
        +--ro actual-start?        yang:date-and-time
        +--ro actual-stop?         yang:date-and-time
        +--rw peer-sap-id*         string
        +--rw ac-global-profile*   ac-global-profile-reference
        +--rw ac-node-profile*     ac-node-group-reference
        +--rw name                 string
        +--rw l2-connection
        |  +--rw encapsulation
        |  |  +--rw type?              identityref
        |  |  +--rw dot1q
        |  |  |  +--rw tag-type?   identityref
        |  |  |  +--rw cvlan-id?   uint16
        |  |  +--rw priority-tagged
        |  |  |  +--rw tag-type?   identityref
        |  |  +--rw qinq
        |  |     +--rw tag-type?   identityref
        |  |     +--rw svlan-id    uint16
        |  |     +--rw cvlan-id    uint16
        |  +--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 bearer-reference?          string
        |          {vpn-common:bearer-reference}?
        +--rw ip-connection
        |  +--rw ipv4 {vpn-common:ipv4}?
        |  |  +--rw local-address?
        |  |  |       inet:ipv4-address
        |  |  +--rw virtual-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
        |  |     |  +--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 virtual-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
        |        |  +--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 routing-protocol* [id]
        |     +--rw id                  string
        |     +--rw type?               identityref
        |     +--rw routing-profiles* [id]
        |     |  +--rw id      routing-profile-reference
        |     |  +--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 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:ipv6-prefix
        |     |        +--rw lan-tag?    string
        |     |        +--rw next-hop    union
        |     |        +--rw metric?     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 peer-groups
        |     |  |  +--rw peer-group* [name]
        |     |  |     +--rw name              string
        |     |  |     +--ro local-address?    inet:ip-address
        |     |  |     +--ro local-as?         inet:as-number
        |     |  |     +--rw peer-as?          inet:as-number
        |     |  |     +--rw address-family?   identityref
        |     |  +--rw neighbor* [id]
        |     |     +--rw id                string
        |     |     +--rw remote-address?   inet:ip-address
        |     |     +--ro local-address?    inet:ip-address
        |     |     +--rw peer-group?
        |     |     |       -> ../../peer-groups/peer-group/name
        |     |     +--ro local-as?         inet:as-number
        |     |     +--rw peer-as?          inet:as-number
        |     |     +--rw address-family?   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 address-family?   identityref
        |     |  +--rw area-id           yang:dotted-quad
        |     |  +--rw metric?           uint16
        |     |  +--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 address-family?   identityref
        |     |  +--rw area-address      area-address
        |     |  +--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 address-family?   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 address-family?   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 oam
        |  +--rw bfd {vpn-common:bfd}?
        |     +--rw holdtime?   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 security
           +--rw encryption {vpn-common:encryption}?
           |  +--rw enabled?   boolean
           |  +--rw layer?     enumeration
           +--rw encryption-profile
              +--rw (profile)?
                 +--:(provider-profile)
                 |  +--rw provider-profile?
                 |          ac-svc:encryption-profile-reference
                 +--:(customer-profile)
                    +--rw customer-key-chain?
                            key-chain:key-chain-ref
]]></artwork>
      </figure>
    </section>
    <section anchor="glue">
      <name>Augmentation to Other Service-Specific Models to Bind a Service to an AC</name>
      <section anchor="tree">
        <name>Tree</name>
        <t>ACs creates using the ietf-ac-svc module can be references in other modules (L2SM, L3SM, L2NM, L3NM, and Slicing). The tree structure of the augmentation is shown in <xref target="ac-glue-tree"/></t>
        <figure anchor="ac-glue-tree">
          <name>Augmenting Other Service-Specific Modules</name>
          <artwork align="center"><![CDATA[
module: ietf-ac-glue
  augment /l3vpn-svc:l3vpn-svc/l3vpn-svc:sites/l3vpn-svc:site
            /l3vpn-svc:site-network-accesses
            /l3vpn-svc:site-network-access:
    +--rw ac-ref*   ac-svc:attachment-circuit-reference
  augment /l2vpn-svc:l2vpn-svc/l2vpn-svc:sites/l2vpn-svc:site
            /l2vpn-svc:site-network-accesses
            /l2vpn-svc:site-network-access:
    +--rw ac-ref*   ac-svc:attachment-circuit-reference
  augment /l3nm:l3vpn-ntw/l3nm:vpn-services/l3nm:vpn-service
            /l3nm:vpn-nodes/l3nm:vpn-node/l3nm:vpn-network-accesses
            /l3nm:vpn-network-access:
    +--rw ac-ref*   ac-svc:attachment-circuit-reference
  augment /l2nm:l2vpn-ntw/l2nm:vpn-services/l2nm:vpn-service
            /l2nm:vpn-nodes/l2nm:vpn-node/l2nm:vpn-network-accesses
            /l2nm:vpn-network-access:
    +--rw ac-ref*   ac-svc:attachment-circuit-reference
  augment /ietf-nss:network-slice-services/ietf-nss:slice-service
            /ietf-nss:sdps/ietf-nss:sdp:
    +--rw ac-ref*   ac-svc:attachment-circuit-reference
]]></artwork>
        </figure>
      </section>
      <section anchor="module">
        <name>Module</name>
        <sourcecode markers="true" name="ietf-ac-glue@2022-11-30.yang"><![CDATA[
module ietf-ac-glue {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-ac-glue";
  prefix ac-glue;

  import ietf-l3vpn-svc {
    prefix l3vpn-svc;
    reference
      "RFC 8299: xxxx";
  }
  import ietf-l2vpn-svc {
    prefix l2vpn-svc;
    reference
      "RFC 8466: xxxx";
  }
  import ietf-l3vpn-ntw {
    prefix l3nm;
    reference
      "RFC 9182: xxxx";
  }
  import ietf-l2vpn-ntw {
    prefix l2nm;
    reference
      "RFC 9291: xxxx";
  }
  import ietf-network-slice-service {
    prefix ietf-nss;
    reference
      "RFC XXXX: xxxx";
  }
  import ietf-ac-svc {
    prefix ac-svc;
    reference
      "RFC xxx: XXXX";
  }

  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>";
  description
    "This YANG module defines a generic YANG model for
     the configuration 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 xxx; see the
     RFC itself for full legal notices.";

  revision 2022-11-30 {
    description
      "Initial revision.";
    reference
      "RFC xxxx: A YANG Network Data Model for Attachment Circuits";
  }

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


  augment "/l3vpn-svc:l3vpn-svc"
        + "/l3vpn-svc:sites/l3vpn-svc:site"
        + "/l3vpn-svc:site-network-accesses/l3vpn-svc:site-network-access" {
    description
      "Augments VPN network access with AC provisioning details.";

    uses ac-glue;
  }

  augment "/l2vpn-svc:l2vpn-svc"
        + "/l2vpn-svc:sites/l2vpn-svc:site"
        + "/l2vpn-svc:site-network-accesses/l2vpn-svc:site-network-access" {
    description
      "Augments VPN network access with AC provisioning details.";

    uses ac-glue;
  }

  augment "/l3nm:l3vpn-ntw/l3nm:vpn-services/l3nm:vpn-service"
        + "/l3nm:vpn-nodes/l3nm:vpn-node"
        + "/l3nm:vpn-network-accesses/l3nm:vpn-network-access" {
    description
      "Augments VPN network access with AC provisioning details.";

    uses ac-glue;
  }

  augment "/l2nm:l2vpn-ntw/l2nm:vpn-services/l2nm:vpn-service"
        + "/l2nm:vpn-nodes/l2nm:vpn-node"
        + "/l2nm:vpn-network-accesses/l2nm:vpn-network-access" {
    description
      "Augments VPN network access with AC provisioning details.";

    uses ac-glue;
  }

  augment "/ietf-nss:network-slice-services/ietf-nss:slice-service"
        + "/ietf-nss:sdps/ietf-nss:sdp" {
    description
      "Augments VPN network access with AC provisioning details.";

    uses ac-glue;
  }
}
]]></sourcecode>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
    <section numbered="false" anchor="contributors">
      <name>Contributors</name>
      <t>TODO contribute.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
F18at2gckpIy27aU2TalDPssdHZDSzW19q2w1o7R9K8frzWGiMYRd9d/txf6
r150of/6ai30359K/9WbnZGptanOrGazkpFu+xipaqpJdZ65sflVZ2aLkibV
WYfLrzqr5ppVZyZL+lVn9aOD6qx+NKjOepl5VWenH6/qrJdiDn/zqs5WFWdC
GlRnt6qq3UF1bqgdVJ29dbrSaqi3kOrsrSKfbp21q856Jx1UZwumLqpzYBgB
1dkGPaQ66z86qs7Wj46qs/VDVWxWnd1a8ukwce2qswVLq+rMQlU6rREvvjyq
szukT6f/bs+p/2436b/k68wH08mzoKguXdcCBxs+63Z1xRIV8M1r2TZCwkmv
7oskxpGUuon7CJ170f8XRqi8v2Xfyvu1LPNBSp6s/J4qr8u9WN1aaBiv0LeY
AzNU11RjvJQq47fv7fcY3YWVDfDEMANyYfZ5faN37YDUENQBWQmYx9QxdIcQ
epRJC1Q7yuGX0mvZYLKr+Jo8dmF8gOGL9HKKuLLzm8LG5CCjnGgqLBIPhqiS
iWmhNMRpQCm8/+WFGQdDO0tLX5L7PL+k8Lj/q827O3h1dHr8Ur578qtfwQ4K
pob/vf1k+wmVOTiNDk7h5cHp0ebGk6fP7u54gc3NZ0/k7ydbG0+p8MmB7KP/
+MnWnbi0zK956jE+OMQ/cK2LiBjjdoicq4NbdNHmSFv94eTkeE1ervjVs6cI
Y2be21zs4RZ7uMUe7sH2cDNajPxFdMJlpn7W6PbuFvc407Tud6yLSKUXmg82
QPb1JXc2rIot7iwKHM7BQ614AxR6N3r17tooC6PDgHkykKBnnKxWn5q35S50
2LJCuzJK8q5ba6Jrken631Bewo8vHTcRtzioIEU64JTh+n+45XnYnwbcSE10
nGZRa2GrWUWgYVII4KgEoXEFPIoIqYFZ+eHN6YpPO7iq+FzgqtrzgVtbdmYn
W/m0moSsjZSPbLebyJbNSLZsNrJlM5It60C2erFWslVv5iJbq/Z8dFDD2062
VvG5wGXzkq3Q9y4nIZZNOgOJbA/0nlKOmqYXVh26Uj5EfzoDMK2ghJ2wa1qw
eo1bXj0uI26SawZZxGHU5PMsteWu/yIep6PbZklqV53ihq9KBz6TjW7dkUYt
3BgaasR5no+SuL3q2wSvPkdjoJcijUcN5VWV1ZwUasdEZBVmwrYS57Y1xS34
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
lWRCpb6chJrQgj25RZhbCkaCO37PWJhWng6b2hFs1MpVCKca22ZgpOY+RXwl
bapmqW1eZu2CVIxpEcLqLK3VlUQcl/qxA7iEavKQITqRNqhHGLTg4eGW/kX0
6G/86yMNEuTsE4F3yENqWbfWxITGY5ev0E0J81JEQArK6wFSO93qW+1LD3P1
WlXVU1Z581NpXeotCv9h7FFklvIWo0MbTh0+CeMBQ7IgvYwqtio+rn1rfWZC
7CjxKQu65Wr+Y5X1tKn95iavHY9tyOWVJkxKpoVhUgNUZVUuNg9U2hPI0Wdt
4Oqz1Xtu3pC5OlrWg27zHAGjPW0bA2fDZ7TXvv3Sizdv+DQaSjF/3S3Gkb9M
hvfr3L+HNBSCTu2o4s17SL1kwx5SAbYKcypUR2czQoQO36spzPlIFQvhwynp
FmR+QmicOlVnUibTYY7uZt5CCo7rAZ9h5vBNb/GLuIiSjNNE5hKuIRkmI3sf
9SB9f9ml73ej2P+9LpKlkbXsG4Co8YqKzljaCDtNiFlX088Zs2Oe+mkKpJJn
HyvpCGWWwiN/rAsY6dAlZZ9lUDxebZGeVhuhPl0PaHMxQsfaRSR8jfvqmuZ4
sJeHaazT3ltS1mz2oBBcH98ypLUlYSvRJcfXlEamXM/3t6dDyMtF+UUkQIg0
G32IRWv9yCS4wZ6Yo0mIDhKPWcddpHLQk5z2sfhPZG0f3aqqtihev3YXU0Nt
snIHKM6t05VWQ70BLw0tA7eKfLp11tW0qM1rF9OiNcGuKafDMBrNjjXozWZH
bSF1NTtaZNbR7OihkQ5mxzknjsYjsuGpNdNkO1aC7A9y1XhXiqdKpzXixZfG
LR7YkhqWMhpKw9YyvakmKTNzY/NLGQfrTVJGh+vj23s/dJIyTPsdkjJ6mXml
jNOPV8ow83cXKcOc352ljFuVzSBlGmoHpYy3TldaDfUWkjLeKvLp1lnXA4PO
UsaCqYuUCQyj8TChXcroqJ/pMGFWKWPVYt2kjFtLPh0mrl3KWLC0ShkWqtJp
jXjx5ZEyi/ORj3M+oieudVvx5qn1iq16W2mUhdHpaR39ZyeSGJr3o8yBDltW
aLcywrbWRIuZ6WnUUF7l82Me64dbXD+UcM0abnkeu6wBN3JdjdMsai1sNasI
tPE8w4ejskKLbnZJhOT14GmCNyfX8XZwVfG5wFW15wO31lNnJ1v5tCq4lljw
ke12E9myGcmWzUa2bEayZR3IVi/WSrZM/p6LbK3a89FBDW872VrF5wKXzUu2
wn4456m2p1T4VFvvsPupts4AzD0dYSdscQ1Wn+FQXAd59kNxk9fOcRwskzmF
ZLpq3dUzGpaz0BuMjGeaahTG5X3mgbmUEpTG9ETfsNYcWu0gzuYAMe9EzzvL
rBvn68727sHz7s/wZuF292B19+FzPz9Hkw8dSKS7NjevHncfyuhMFvPSxH0I
4tN68Cwm96NO7gO5Ri1m6aPO0v19zqxK3iGarQanic05TVa9WTGhYzE8TVbB
GYGbY5qE0Pxoznx6sdCIu0zZXPN1n8nqNlNzTdN8c7RwiKwfBdvfjUOkued2
+9LdHPWNoSrpu+TpL+m7KxgkT28tdYuvpZb/tuAMtbTrgu0QapGOvmzGgOcC
IWuKQeRW1yMH8c4C8YKsqq7RJASjx1uVGWvb8VZlJnvv4q1qVdG8VdWXur0m
R0+3eMhb1erS6606b+e8bO2tqj6w2dpRxUPeqm7JkLeqPmceb1Ud9LC3qouP
gLeqXpD5CaFx6lQd21vVKqTgCHiMhor7vVW9ENTeqg/b95dd+q69Va3vdZFm
b9VQtS7eqo11O3irqvpf2d6qzBnpLN6qOjI7eqsyQyh28VZVkHm8VXUAGr1V
dQwUfj8iB8kB3yWrKb8f0ZyNzeNHZDXR7EfkwtXCOkN+RMwkHNuPSP+steX1
I7LKSjI1/IjcMqrVzn5EgX4sPyK3FHNUL8uPyFuF2RPi9SMKVVW1G/2IWmt7
/Iga6nSl1VBvrh9RQxX5dOus3ki4fkRuJ181+RF5YRLaTsCPqHEYzg7JD7rr
R2SVY/bGw+NH5FZhDnG6fkTeWqpiyI8oVEs+HSbuqwY/IguVxlrx+RG5qDeX
V5c14sVXu7cqM6VM2FuVmeQUljIaSgO+S1ZTTVJm5sbmlzIO1pukjA6XX8qw
blKGyZJ+KaN+dJAy6keDlNHLzCtlnH68UkYvxbpJGauKMyENUsatymaQMg21
g1LGW6crrYZ6C0kZbxX5dOusXcronXSQMhZMXaRMYBgBKWODHpIy+o+OUsb6
0VHKWD9YNynj1pJPh4lrlzIWLK1ShoWqdFojXny1e6uqOgFvVabNc5O3KjOp
rc1b1SreyVvVqtPkraqKfrABavFWdSu2WGmYxo6Ut6rbSoO3ql64xl83b1Wr
riSG5v2oC127t2pDTa/bX6h8wO0vVDzk9hcqr5+geHETOgLyFraaDZ+7NNfu
eAAThNdzOuQtq4rPBa6qPR+4tZ46O9nKp1XBtcRCu7dqQ80uZMtmI1s2I9my
DmSrF2slW/VmLrK1as9HBzW87WRrFZ8LXDYv2Qr7ofRW1RvXzJy6t6pexFPK
OTnTC6sOm71V/bU6e0m2VG/xYAyB3M2JMVS7g9+Fi3uftyozpz+kZzQsZ6E3
dPNW9dSdax6YSylBaUxPd2/VJhBnmGs2/0SzOWeZdeN83dnePXje/RneLNzu
HqzuPnyu9lbVm77HCu3qrerWbPZWdcs3oLS7NjevHncfyuhMFvPSxH0IovZW
dYc7P0G0eKuGZmQxuaF6802u8lb1TNM8c7uYpY8xS7W3qt3ibNPEGqfJbDU4
Ter3jNNk1ZsVEzoWw9NkFZwRODb7NAmhKb1V9RE2eKsyc35D3qpWsdCIu0zZ
XPN1n8nqNlNzTdN8c2R6q+pfOnurWlgJeas6yAt7q/rBML1VrWK2t6pVIuit
qj8KtoC3qlVWPp29VR2YAt6qbtGiwVs18IS8VSnjzvsd9sUQoaY8PAzIapT8
Znl3j52KlLOUqueU0lFOi2QZdBFKmBXFo/Qy+83yIMGstct3mNpnd3qJGR54
4rEqZ0eYllc2FJ2K/D08tx0lN3ueZkMWq65Ursf3X1yOppgU6IsvqP+l3b2S
Uaq3pGTTEtMqYTIkLUuQzLAkclgqdFOmsJzg4CVKtvq6f/pmnb3eov/vH9Jv
/H/MqnWKh3zZ5VqPckURSko5dpmPLNaHmZasvMpvMHsve/+ePE6nCc9pJJMa
OVmNsAjMmGiHPRpt4apCylG/tHeY0Lm0/jbm2/oWiZRmkcjrWM5QeGepJjMA
FND4ZU3Wbg4Pg6zr4fTVcPpqOH1rOP2G4fRnGU5T4YcZzlY2FhOTVTf8T+qT
U23pvLHxLb5S6jbzT+2vljnzFnug2cLh9dXw+s7w+o3D65vD6xvD63cbnr/Y
gwyP1lwGjcm2yxEyIzU69d14b8JXlxlOSuOv+UFUzFdnGYr9cuiRz4V5KDKz
Jnb8hcwwx/viqWef7786ODz9hlF+3GWdIX3X3+j3o83NaGujh7rC8pJMWqcV
opS6+DXCc2Pkf5u9TUxxq7LkseUuGeSwLcqYy48YmHj1NWbX48kWebeKWYlc
vqK4es2z69rCdRnTzz3tP3u2Q0noqKM7u+W+v+V+h5Yfb283tSxZhQ1zNm5o
9Nnm034ruG6j/eZG+882Gxr1LgmzA0nsDZ38Dp6GToR8Nlrl7xrahMZ2qGHR
5BKmNr2Ms/SvtW7Is0ceHZ/u/viKrR6ZaWff1OmLd0FvYD/COHE5vULD7xq1
OuBpIXlb0MSPyfkO/Pz1VVVNyp1HjzDlZlXEg7dJ0cOR9ACCRzeXj/JJGcM/
33B4oeLrtMTkkr8ex+moynf49+9klW+WeMH9YVrlBfbwJr+C1TJkz/PpIB7G
aW0NFo9sacwL9s5lwe/yAtX5HijgovvdaXXFWz1JQbMrhuwkP0+Kqgy1WRT8
+3d/nmYp4KwHRPAN4cPOfr18ZidY5dl5MaH5ZZIlBbAh+TUZYbY/3iclYDdy
GwcywgvE7OWT2yK9vKrY6mCNARfaYjSzZ8UUc3qL7MsAaomTq5LwgeIoBhkT
DkqV/B3A6QFmRiNGzWKaTvJeGcoeT5IhpsxMz6cEHnYxLUVK2GkBSwDfnKdZ
XNzisMblOs/aLkcoU/DCwFVO13XUBAHIcYpmWzaZFuWUJ4zlimU5Pf9zIqhN
pH9luOwy6Bg49rjk9CiyH6/T95PkOsW83M9PXwCRUVleHxMzA2AAEsB8yh3q
2ePeQKKgxt9KyV4nl/GIHctsh6XEAV40QkU658VfiAzi4vuqXAYVNpMk9RIQ
UEdpdpGvSZQSrUiZQFBYtIPYAVmF38QC/xqGkch8zDxlKFBFMrqgzNWYGpSN
CHRMnQuiGlOsLyG/4ONgtbwSzMVN3758kKVVGo9UJZmmPcR0gOvscrBllu4X
mKD3jaRwtlvT8Z6gY8mi6EwJMarLSi9Uu0xk1t7dI18vJBjkNhI6I6M9gKoS
2cs09m3ahcxF70tob6ezR3qBLVdcsuTdJEdyiyuRjl3syjDvds1ObqCkSp2J
1Frvx6AZPttyIJjyfknTxpZ9W53l2g5hFPDte5rKOkpm8/flhvnh4Jbsh+ND
lSBaZHomRgAD1bOHQhuwckeSQhlyk7LWaYQA05DgbpCsgTXulprKepDQ9P1T
ImHWbZU99+FtVaikSx/eL5+UMmbcjNm0EN6MhUq69PK5IWW+LZw53vAW7qcd
2J3Yh+0fvjj9RpiHvmC7g7dZfjNKhrw/2BdyN4Fk+Jvli3hUJrihOzt6cQSN
yZJJD2tibnNSZEABaqg2kMWg1v8PyB2PCsp2AgA=

-->

</rfc>
