<?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.24 (Ruby 3.1.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-boro-opsawg-teas-attachment-circuit-03" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.16.0 -->
  <front>
    <title abbrev="ACaaS">YANG Data Models for 'Attachment Circuits'-as-a-Service (ACaaS)</title>
    <seriesInfo name="Internet-Draft" value="draft-boro-opsawg-teas-attachment-circuit-03"/>
    <author fullname="Mohamed Boucadair" role="editor">
      <organization>Orange</organization>
      <address>
        <email>mohamed.boucadair@orange.com</email>
      </address>
    </author>
    <author fullname="Richard Roberts" role="editor">
      <organization>Juniper</organization>
      <address>
        <email>rroberts@juniper.net</email>
      </address>
    </author>
    <author fullname="Oscar Gonzalez de Dios">
      <organization>Telefonica</organization>
      <address>
        <email>oscar.gonzalezdedios@telefonica.com</email>
      </address>
    </author>
    <author fullname="Samier Barguil Giraldo">
      <organization>Nokia</organization>
      <address>
        <email>samier.barguil_giraldo@nokia.com</email>
      </address>
    </author>
    <author fullname="Bo Wu">
      <organization>Huawei Technologies</organization>
      <address>
        <email>lana.wubo@huawei.com</email>
      </address>
    </author>
    <date year="2023" month="March" day="01"/>
    <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). This 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>Also, the document specifies the common AC module, which is designed with the intent to be reusable. Whether a service model reuses structures defined in the AC models or simply include an AC reference is a design choice of these service models. Relying upon the AC service 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 network node (typically, a Provider Edge (PE)) that terminates an 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>
      <section anchor="scope-and-intended-use">
        <name>Scope and Intended Use</name>
        <t>Connectivity services are provided by networks to customers via dedicated terminating points (e.g., service functions, customer edges (CEs), peer ASBRs, data centers gateways, Internet Exchange Points). A connectivity service is basically about ensuring data transfer received from (or destined to) a given terminating point to (or from) other terminating points that belong to the same customer/service, an interconnection node, or an ancillary node. A set of objectives for the connectivity service may eventually be negotiated and agreed upon between a customer a network provider. For that data transfer to take place within the provider network, it is assumed that adequate setup is provisioned over the links that connect customer terminating points and a provider network so that data can be successfully exchanged over these links. The required setup is referred to in this document as Attachment Circuits (ACs), while the underlying link is referred to as "bearers".</t>
        <t>This document adheres to the definition of an Attachment Circuit as provided in Section 1.2 of <xref target="RFC4364"/>, especially:</t>
        <ul empty="true">
          <li>
            <t>Routers can be attached to each other, or to end systems, in a
   variety of different ways: PPP connections, ATM Virtual Circuits
   (VCs), Frame Relay VCs, ethernet interfaces, Virtual Local Area
   Networks (VLANs) on ethernet interfaces, GRE tunnels, Layer 2
   Tunneling Protocol (L2TP) tunnels, IPsec tunnels, etc.  We will use
   the term "attachment circuit" to refer generally to some such means
   of attaching to a router.  An attachment circuit may be the sort of
   connection that is usually thought of as a "data link", or it may be
   a tunnel of some sort; what matters is that it be possible for two
   devices to be network layer peers over the attachment circuit.</t>
          </li>
        </ul>
        <t>When a customer requests a new value-added service, the service can be bound to existing attachment circuits or trigger the instantiation of new attachment circuits. The provisioning of an value-added service should, thus, accommodate both deployments.</t>
        <t>Also, because the instantiation of an attachment circuit requires coordinating the provisioning of endpoints that might not belong to the same administrative entity (customer vs. provider or distinct operational teams within the same provider, etc.), <strong>programmatic means to expose 'attachment circuits'-as-a-service will greatly simplify the provisioning of value added services</strong> that will be delivered over an attachment circuits.</t>
        <t>This document specifies a YANG service data model ("ietf-ac-svc") for managing attachment circuits 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>The model also include a common module ("ietf-ac-common") which is designed with the intent to be reusable. Likewise, the "ietf-ac-svc" includes a set of reusable groupings. Whether a service model reuses structures defined in the "ietf-ac-svc" or simply includes an AC reference (that was communicated during AC service instantiation) is a design choice of these service models. Relying upon the AC service model to manage ACes over which services are delivered has the merit to decorrelate the management of the (core) service vs. upgrade the AC components to reflect recent AC technologies or new features (e.g., new encryption scheme, additional routing protocol). <strong>This document favors the approach of completely relying upon the AC service model instead of duplicating into specific modules of advanced services that are delivered over an Attachment Circuit.</strong></t>
        <t>Because the provisioning of an AC requires a bearer to be in place, this document allows customers to manage their bearer requests by means of a new module, called "ietf-bearer-svc". The customers can then retrieve a provider-assigned bearer reference that they will include in their AC service requests.</t>
        <t>An AC service request can provide a reference to a bearer or a set of peer SAPs. Both schemes are supported in the AC service model.</t>
        <t>Each AC is identified with a unique identifier within a (provider) domain. From a network provider standpoint, an AC can be bound to a single or multiple Service Attachment Points (SAPs) <xref target="I-D.ietf-opsawg-sap"/>. Likewise, a SAP can be bound to one or multiple ACs. However, the mapping between an AC and a PE in the provider network that terminates that AC is hidden to the application that makes use of the AC service model. Such mapping information is internal to the network controllers. As such, the details about the (node-specific) attachment interfaces are not exposed in the AC service model.</t>
        <t>The AC service model <strong>does not make any assumption about the internal structure or even the nature or the services that will be delivered over an attachment circuit</strong>. Customers do not have access to that network view other than the ACes that the ordered. For example, the AC service model can be used to provision a set of ACes to connect multiple sites (Site1, Site2, ..., SiteX) for customer that also requested VPN services. If these provisioning of these services require specific configured on ASBR nodes, such configuration is handled at the network level and is not exposed at the service level to the customer. However, the network controller will have access to such a view as the service points in these ASBRs will be exposed as SAPs with "role" set to "ietf-sap-ntw:nni" <xref target="I-D.ietf-opsawg-sap"/>.</t>
        <t>The AC service model can be used in a variety of contexts, such as (but not limited to) those provided in <xref target="examples"/>:</t>
        <ul spacing="normal">
          <li>Request an attachment circuit for a known peer SAP (<xref target="ac-no-bearer-peer-sap"/>).</li>
          <li>Instantiate multiple attachment circuits over the same bearer (<xref target="sec-ex-one-ce-multi-acs"/>).</li>
          <li>Control the precedence over multiple attachment circuits (<xref target="sec-ex-prec"/>).</li>
          <li>Bind a slice service to a set of pre-provisioned attachment circuits (<xref target="sec-ex-slice"/>).</li>
          <li>Connect a Cloud Infrastructure to a service provider network (<xref target="sec-ex-cloud"/>).</li>
        </ul>
        <t>These examples use the IPv4 address blocks reserved for documentation <xref target="RFC5737"/>, the IPv6 prefix reserved for documentation <xref target="RFC3849"/>, and the Autonomous System (AS) numbers reserved for documentation <xref target="RFC5398"/>.</t>
        <t>The YANG data models in this document conform to the Network Management Datastore Architecture (NMDA) defined in <xref target="RFC8342"/>.</t>
      </section>
      <section anchor="position-acaas-vs-other-data-models">
        <name>Position ACaaS vs. Other Data Models</name>
        <t>The model specified in this document <strong>is not a network model</strong> <xref target="RFC8969"/>. As such, the model does not expose details related to specific nodes in the provider's network that terminate a requested AC. The mapping between an AC as seen by a customer and the network implementation of an AC is maintained by the network controllers and not exposed to the customer. Such a mapping can be maintained using a variety of network models, e.g., Service Attachment Points (SAPs) <xref target="I-D.ietf-opsawg-sap"/>, AC Network Model <xref target="I-D.boro-opsawg-ntw-attachment-circuit"/>, etc.</t>
        <t>The AC service model <strong>is not a device model</strong>. A network provider may use a variety of device models (e.g., Routing management <xref target="RFC8349"/> or BGP <xref target="I-D.ietf-idr-bgp-model"/>) to provision an AC service.</t>
        <t>The document specifies also a module (<xref target="glue"/>) that updates other service and network modules with the required information to bind services to specific ACs that are created using the AC service model. It is anticipated that future revisions of the L3SM/L2SM can make use of the AC service model, by (preferably) offloading all the AC-related management matters from the core L3SM/L2SM to focus on L2/L3 VPN service matters.</t>
        <section anchor="why-not-using-l2sm-as-reference-data-model-for-acaas">
          <name>Why Not Using L2SM as Reference Data Model for ACaaS?</name>
          <t>The L2SM <xref target="RFC8466"/> covers some AC-related considerations. Nevertheless, the L2SM structure is too layer 2 centric. For example, the L2SM part does not cover Layer 3 provisioning, which is required for the instantiation of typical ACs.</t>
        </section>
        <section anchor="why-not-using-l3sm-as-reference-data-model-for-acaas">
          <name>Why Not Using L3SM as Reference Data Model for ACaaS?</name>
          <t>Similar to the L2NM, the L3SM <xref target="RFC8299"/> covers some AC-related considerations. Nevertheless, the L3SM structure does not adequately cover layer 2 provisioning matters. Moreover, the L3SM is drawn with conventional L3VPN deployments in mind and, as such, has some limitations for instantiating ACs in other deployment contexts (e.g., cloud environments). For example, the L3SM does not allow to provision multiple BGP sessions over the same AC.</t>
        </section>
      </section>
    </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>Bearer:</dt>
        <dd>
          <t>A physical or logical link that connects a customer node (or site) to a provider network. A bearer can be a wireless or wired link. One or multiple technologies can be used to build a bearer. The bearer type can be specified by a customer.</t>
        </dd>
        <dt/>
        <dd>
          <t>The operator allocates a unique bearer reference to identify a bearer within its network (e.g., customer line identifier). Such a reference can be retrieved by a customer and used in subsequent service placement requests to unambiguously identify where a service is to be bound.</t>
        </dd>
        <dt/>
        <dd>
          <t>The concept of bearer can be generalized to refer to the required underlying connection for the provisioning of an attachment circuit. One or multiple attachment circuits may be hosted over the same bearer (e.g., multiple VLANs on the same bearer that is provided by a physical link).</t>
        </dd>
        <dt>Network controller:</dt>
        <dd>
          <t>Denotes a functional entity responsible for the management of the service provider network.</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-data-models">
      <name>Sample Uses of the Data Models</name>
      <section anchor="acs-terminated-by-one-or-multiple-customer-devices">
        <name>ACs Terminated by One or Multiple Customer Devices</name>
        <t><xref target="uc"/> depicts two target topology flavors that involve ACs. These topologies are characterized as follows:</t>
        <ul spacing="normal">
          <li>A Customer Terminating Point (CTP) may be a physical node or a logical entity. A CTP is seen by the network as a peer SAP.</li>
          <li>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"/>.</li>
          <li>CTPs may be dedicated to one single service or host multiple services (e.g., service functions <xref target="RFC7665"/>).</li>
          <li>A single AC (as seen by a network provider) may be bound to one or multiple peer SAPs (e.g., CTP#1 and CTP#2). For example, and as discussed in <xref target="RFC4364"/>, multiple CTPs (CEs) can be attached to a PE over the same attachment circuit. This is typically implemented if the layer 2 infrastructure between the CTP and the network provides a multipoint service.</li>
          <li>The same CTP may terminate multiple ACs. These ACes may be over the same or distinct bearers.</li>
          <li>The customer may request protection schemes where the ACs bound to a customer endpoints are terminated by the same PE (e.g., CTP#3), distinct PEs (e.g., CTP#34), etc.</li>
        </ul>
        <figure anchor="uc">
          <name>Examples of ACs</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="224" width="544" viewBox="0 0 544 224" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 304,176 L 304,192" fill="none" stroke="black"/>
                <path d="M 512,160 L 512,192" fill="none" stroke="black"/>
                <g class="text">
                  <text x="40" y="36">┌───────┐</text>
                  <text x="292" y="36">┌────────────────────┐</text>
                  <text x="504" y="36">┌───────┐</text>
                  <text x="8" y="52">│</text>
                  <text x="100" y="52">├──────┐</text>
                  <text x="208" y="52">│</text>
                  <text x="424" y="52">├────AC─────┤</text>
                  <text x="536" y="52">│</text>
                  <text x="8" y="68">│</text>
                  <text x="40" y="68">CTP#1</text>
                  <text x="72" y="68">│</text>
                  <text x="128" y="68">│</text>
                  <text x="208" y="68">│</text>
                  <text x="424" y="68">├────AC─────┤</text>
                  <text x="504" y="68">CTP#3</text>
                  <text x="536" y="68">|</text>
                  <text x="40" y="84">└───────┘</text>
                  <text x="128" y="84">│</text>
                  <text x="208" y="84">│</text>
                  <text x="376" y="84">│</text>
                  <text x="504" y="84">└───────┘</text>
                  <text x="168" y="100">├───AC────┤</text>
                  <text x="280" y="100">Network</text>
                  <text x="376" y="100">│</text>
                  <text x="40" y="116">┌───────┐</text>
                  <text x="128" y="116">│</text>
                  <text x="208" y="116">│</text>
                  <text x="376" y="116">│</text>
                  <text x="8" y="132">│</text>
                  <text x="72" y="132">│</text>
                  <text x="128" y="132">│</text>
                  <text x="208" y="132">│</text>
                  <text x="376" y="132">│</text>
                  <text x="504" y="132">┌───────┐</text>
                  <text x="8" y="148">│</text>
                  <text x="40" y="148">CTP#2</text>
                  <text x="100" y="148">├──────┘</text>
                  <text x="208" y="148">│</text>
                  <text x="424" y="148">│─────AC────┤</text>
                  <text x="504" y="148">CTP#4</text>
                  <text x="536" y="148">│</text>
                  <text x="40" y="164">└───────┘</text>
                  <text x="208" y="164">│</text>
                  <text x="376" y="164">│</text>
                  <text x="488" y="164">└────</text>
                  <text x="528" y="164">──┘</text>
                  <text x="252" y="180">└───────────</text>
                  <text x="344" y="180">────────┘</text>
                  <text x="408" y="212">└────────────AC───────────┘</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
┌───────┐                ┌────────────────────┐           ┌───────┐
│       ├──────┐         │                    ├────AC─────┤       │
│ CTP#1 │      │         │                    ├────AC─────┤ CTP#3 |
└───────┘      │         │                    │           └───────┘
               ├───AC────┤     Network        │
┌───────┐      │         │                    │
│       │      │         │                    │           ┌───────┐
│ CTP#2 ├──────┘         │                    │─────AC────┤ CTP#4 │
└───────┘                │                    │           └────+──┘
                         └───────────+────────┘                |
                                     |                         |
                                     └────────────AC───────────┘
]]></artwork>
          </artset>
        </figure>
      </section>
      <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,|bearer-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..................
                 |        |                   |
               +--------------------------------+
 +----+ Bearer |                                | Bearer +----+
 |CTP +--------+            Network             +--------+ CTP|
 +----+        |                                |        +----+
               +--------------------------------+
  Site A                                                  Site B
]]></artwork>
        </figure>
      </section>
    </section>
    <section anchor="description-of-the-data-models">
      <name>Description of the Data Models</name>
      <section anchor="the-common-attachment-circuit-ietf-ac-common-yang-module">
        <name>The Common Attachment Circuit ("ietf-ac-common") YANG Module</name>
        <section anchor="tree-structure">
          <name>Tree Structure</name>
          <t>The full tree of the "ietf-ac-common" module is shown in <xref target="ac-common-full-tree"/>.</t>
          <figure anchor="ac-common-full-tree">
            <name>AC Common Full Tree Structure</name>
            <artwork align="center"><![CDATA[
module: ietf-ac-common

  grouping op-instructions
    +-- requested-start?   yang:date-and-time
    +-- requested-stop?    yang:date-and-time
    +--ro actual-start?      yang:date-and-time
    +--ro actual-stop?       yang:date-and-time
  grouping dot1q
    +-- tag-type?   identityref
    +-- cvlan-id?   uint16
  grouping priority-tagged
    +-- tag-type?   identityref
  grouping qinq
    +-- tag-type?   identityref
    +-- svlan-id    uint16
    +-- cvlan-id    uint16
  grouping pseudowire
    +-- vcid?      uint32
    +-- far-end?   union
  grouping vpls
    +-- vcid?      uint32
    +-- far-end*   union
  grouping vxlan
    +-- vni-id             uint32
    +-- peer-mode?         identityref
    +-- peer-ip-address*   inet:ip-address
  grouping l2-tunnel-service
    +-- type?         identityref
    +-- pseudowire
    |  +-- vcid?      uint32
    |  +-- far-end?   union
    +-- vpls
    |  +-- vcid?      uint32
    |  +-- far-end*   union
    +-- vxlan
       +-- vni-id             uint32
       +-- peer-mode?         identityref
       +-- peer-ip-address*   inet:ip-address
  grouping ipv4-allocation-type
    +-- prefix-length?             uint8
    +-- address-allocation-type?   identityref
  grouping ipv6-allocation-type
    +-- prefix-length?             uint8
    +-- address-allocation-type?   identityref
  grouping ipv4-connection-basic
    +-- prefix-length?                       uint8
    +-- address-allocation-type?             identityref
    +-- (allocation-type)?
       +--:(dynamic)
          +-- (provider-dhcp)?
          |  +--:(dhcp-service-type)
          |     +-- dhcp-service-type?       enumeration
          +-- (dhcp-relay)?
             +--:(customer-dhcp-servers)
                +-- customer-dhcp-servers
                   +-- server-ip-address*   inet:ipv4-address
  grouping ipv6-connection-basic
    +-- prefix-length?                       uint8
    +-- address-allocation-type?             identityref
    +-- (allocation-type)?
       +--:(dynamic)
          +-- (provider-dhcp)?
          |  +--:(dhcp-service-type)
          |     +-- dhcp-service-type?       enumeration
          +-- (dhcp-relay)?
             +--:(customer-dhcp-servers)
                +-- customer-dhcp-servers
                   +-- server-ip-address*   inet:ipv6-address
  grouping ipv4-connection
    +-- local-address?                           inet:ipv4-address
    +-- virtual-address?                         inet:ipv4-address
    +-- prefix-length?                           uint8
    +-- address-allocation-type?                 identityref
    +-- (allocation-type)?
       +--:(dynamic)
       |  +-- (address-assign)?
       |  |  +--:(number)
       |  |  |  +-- number-of-dynamic-address?   uint16
       |  |  +--:(explicit)
       |  |     +-- customer-addresses
       |  |        +-- address-pool* [pool-id]
       |  |           +-- pool-id?         string
       |  |           +-- start-address    inet:ipv4-address
       |  |           +-- end-address?     inet:ipv4-address
       |  +-- (provider-dhcp)?
       |  |  +--:(dhcp-service-type)
       |  |     +-- dhcp-service-type?           enumeration
       |  +-- (dhcp-relay)?
       |     +--:(customer-dhcp-servers)
       |        +-- customer-dhcp-servers
       |           +-- server-ip-address*   inet:ipv4-address
       +--:(static-addresses)
          +-- address* [address-id]
             +-- address-id?         string
             +-- customer-address?   inet:ipv4-address
  grouping ipv6-connection
    +-- local-address?                           inet:ipv6-address
    +-- virtual-address?                         inet:ipv6-address
    +-- prefix-length?                           uint8
    +-- address-allocation-type?                 identityref
    +-- (allocation-type)?
       +--:(dynamic)
       |  +-- (address-assign)?
       |  |  +--:(number)
       |  |  |  +-- number-of-dynamic-address?   uint16
       |  |  +--:(explicit)
       |  |     +-- customer-addresses
       |  |        +-- address-pool* [pool-id]
       |  |           +-- pool-id?         string
       |  |           +-- start-address    inet:ipv6-address
       |  |           +-- end-address?     inet:ipv6-address
       |  +-- (provider-dhcp)?
       |  |  +--:(dhcp-service-type)
       |  |     +-- dhcp-service-type?           enumeration
       |  +-- (dhcp-relay)?
       |     +--:(customer-dhcp-servers)
       |        +-- customer-dhcp-servers
       |           +-- server-ip-address*   inet:ipv6-address
       +--:(static-addresses)
          +-- address* [address-id]
             +-- address-id?         string
             +-- customer-address?   inet:ipv6-address
  grouping bgp-authentication
    +-- authentication
       +-- enable?            boolean
       +-- keying-material
          +-- (option)?
             +--:(ao)
             |  +-- enable-ao?          boolean
             |  +-- ao-keychain?        key-chain:key-chain-ref
             +--:(md5)
             |  +-- md5-keychain?       key-chain:key-chain-ref
             +--:(explicit)
                +-- key-id?             uint32
                +-- key?                string
                +-- crypto-algorithm?   identityref
  grouping ospf-authentication
    +-- authentication
       +-- enable?            boolean
       +-- keying-material
          +-- (option)?
             +--:(auth-key-chain)
             |  +-- key-chain?          key-chain:key-chain-ref
             +--:(auth-key-explicit)
                +-- key-id?             uint32
                +-- key?                string
                +-- crypto-algorithm?   identityref
  grouping isis-authentication
    +-- authentication
       +-- enable?            boolean
       +-- keying-material
          +-- (option)?
             +--:(auth-key-chain)
             |  +-- key-chain?          key-chain:key-chain-ref
             +--:(auth-key-explicit)
                +-- key-id?             uint32
                +-- key?                string
                +-- crypto-algorithm?   identityref
  grouping rip-authentication
    +-- authentication
       +-- enable?            boolean
       +-- keying-material
          +-- (option)?
             +--:(auth-key-chain)
             |  +-- key-chain?          key-chain:key-chain-ref
             +--:(auth-key-explicit)
                +-- key?                string
                +-- crypto-algorithm?   identityref
  grouping bgp-peer-group-without-name
    +--ro local-as?         inet:as-number
    +-- peer-as?          inet:as-number
    +-- address-family?   identityref
  grouping bgp-peer-group-with-name
    +-- name?             string
    +--ro local-as?         inet:as-number
    +-- peer-as?          inet:as-number
    +-- address-family?   identityref
  grouping ospf-basic
    +-- address-family?   identityref
    +-- area-id           yang:dotted-quad
    +-- metric?           uint16
  grouping isis-basic
    +-- address-family?   identityref
    +-- area-address      area-address
  grouping ipv4-static-rtg-entry
    +-- lan?        inet:ipv4-prefix
    +-- lan-tag?    string
    +-- next-hop?   union
    +-- metric?     uint32
  grouping ipv4-static-rtg
    +-- ipv4-lan-prefixes* [lan next-hop] {vpn-common:ipv4}?
       +-- lan?        inet:ipv4-prefix
       +-- lan-tag?    string
       +-- next-hop?   union
       +-- metric?     uint32
       +-- status
          +-- admin-status
          |  +-- status?        identityref
          |  +-- last-change?   yang:date-and-time
          +--ro oper-status
             +--ro status?        identityref
             +--ro last-change?   yang:date-and-time
  grouping ipv6-static-rtg-entry
    +-- lan?        inet:ipv6-prefix
    +-- lan-tag?    string
    +-- next-hop?   union
    +-- metric?     uint32
  grouping ipv6-static-rtg
    +-- ipv6-lan-prefixes* [lan next-hop] {vpn-common:ipv6}?
       +-- lan?        inet:ipv6-prefix
       +-- lan-tag?    string
       +-- next-hop?   union
       +-- metric?     uint32
       +-- status
          +-- admin-status
          |  +-- status?        identityref
          |  +-- last-change?   yang:date-and-time
          +--ro oper-status
             +--ro status?        identityref
             +--ro last-change?   yang:date-and-time
  grouping bfd
    +-- holdtime?   uint32
]]></artwork>
          </figure>
        </section>
        <section anchor="yang-module">
          <name>YANG Module</name>
          <t>This module uses types defined in <xref target="RFC6991"/>, <xref target="RFC8177"/>, and  <xref target="RFC9181"/>.</t>
          <sourcecode markers="true" name="ietf-ac-common@2022-11-30.yang"><![CDATA[
module ietf-ac-common {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-ac-common";
  prefix ac-common;

  import ietf-vpn-common {
    prefix vpn-common;
    reference
      "RFC 9181: A Common YANG Data Model for Layer 2 and Layer 3
                 VPNs";
  }
  import ietf-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 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.";
  }

  identity precedence-type {
    description
      "Redundancy type. The service can be created
       with primary and secondary tagging.";
  }

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

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

  /* Typedefs */

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

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

  /* Reusable groupings */
  // Operational instructions

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

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

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

  // priority-tagged

  grouping priority-tagged {
    description
      "Priority tagged.";
    leaf tag-type {
      type identityref {
        base vpn-common:tag-type;
      }
      default "vpn-common:c-vlan";
      description
        "Tag type.  By default, the tag type is 'c-vlan'.";
    }
  }

  // QinQ

  grouping 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.";
    }
  }

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

  grouping 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";
    }
  }

  // VPLS

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

  // VXLAN

  grouping vxlan {
    description
      "VXLAN termination parameters.";
    leaf vni-id {
      type uint32;
      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.";
    }
  }

  // 'pseudowire', 'vpls', and 'vxlan'

  grouping l2-tunnel-service {
    description
      "Defines a Layer 2 tunnel termination.
       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.";
      uses pseudowire;
    }
    container vpls {
      when "derived-from-or-self(../type, 'vpls')" {
        description
          "Only applies when the Layer 2 service type is 'vpls'.";
      }
      description
        "VPLS termination parameters.";
      uses vpls;
    }
    container vxlan {
      when "derived-from-or-self(../type, 'vxlan')" {
        description
          "Only applies when the Layer 2 service type is 'vxlan'.";
      }
      description
        "VXLAN termination parameters.";
      uses vxlan;
    }
  }

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

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

  // IPv6 allocation type

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

  // Basic IPv4 connection

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

  // Basic IPv6 connection

  grouping ipv6-connection-basic {
    description
      "Basic set fof IPv6-specific parameters for the connection.";
    uses ipv6-allocation-type;
    choice allocation-type {
      description
        "Choice of the IPv6 address allocation.";
      case dynamic {
        description
          "When the addresses are allocated by DHCP or other
           dynamic means local to the infrastructure.";
        choice provider-dhcp {
          description
            "Parameters related to DHCP-allocated addresses.
             IP addresses are allocated by DHCP, that is provided
             by the operator.";
          leaf dhcp-service-type {
            type enumeration {
              enum server {
                description
                  "Local DHCP server.";
              }
              enum relay {
                description
                  "Local DHCP relay.  DHCP requests are relayed
                   to a provider's server.";
              }
            }
            description
              "Indicates the type of DHCP service to be enabled
               on 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.";
            }
          }
        }
      }
    }
  }

  // Full IPv4 connection

  grouping ipv4-connection {
    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.";
    }
    uses ipv4-allocation-type;
    choice allocation-type {
      description
        "Choice of the IPv4 address allocation.";
      case dynamic {
        description
          "When the addresses are allocated by DHCP or other
           dynamic means local to the infrastructure.";
        choice address-assign {
          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.";
        list address {
          key "address-id";
          ordered-by user;
          description
            "Lists the IPv4 addresses that are used. The first address of
             the list is the primary address of the connection.";
          leaf address-id {
            type string;
            description
              "An identifier of the static IPv4 address.";
          }
          leaf customer-address {
            type inet:ipv4-address;
            description
              "An IPv4 address of the customer side.";
          }
        }
      }
    }
  }

  // Full IPv6 connection

  grouping ipv6-connection {
    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.";
    }
    uses ipv6-allocation-type;
    choice allocation-type {
      description
        "Choice of the IPv6 address allocation.";
      case dynamic {
        description
          "When the addresses are allocated by DHCP or other
           dynamic means local to the infrastructure.";
        choice address-assign {
          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.";
        list address {
          key "address-id";
          ordered-by user;
          description
            "Lists the IPv6 addresses that are used. The first address
             of the list is the primary IP address of the connection.";
          leaf address-id {
            type string;
            description
              "An identifier of the static IPv6 address.";
          }
          leaf customer-address {
            type inet:ipv6-address;
            description
              "An IPv6 address of the customer side.";
          }
        }
      }
    }
  }

  /********* Routing *************/
  // Routing Authentication

  grouping bgp-authentication {
    description
      "Grouping for BGP authentication parameters.";
    container authentication {
      description
        "Container for BGP authentication  parameters.";
      leaf 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 on an AC.";
        choice option {
          description
            "Choice of authentication options.";
          case ao {
            description
              "Uses the TCP Authentication Option (TCP-AO).";
            reference
              "RFC 5925: The TCP Authentication Option";
            leaf enable-ao {
              type boolean;
              description
                "Enables the TCP-AO.";
            }
            leaf ao-keychain {
              type key-chain:key-chain-ref;
              description
                "Reference to the TCP-AO key chain.";
              reference
                "RFC 8177: YANG Data Model for Key Chains";
            }
          }
          case md5 {
            description
              "Uses MD5 to secure the session.";
            reference
              "RFC 4364: BGP/MPLS IP Virtual Private Networks
                         (VPNs), Section 13.2";
            leaf md5-keychain {
              type key-chain:key-chain-ref;
              description
                "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.";
            }
          }
        }
      }
    }
  }

  // Basic routing parameters

  grouping bgp-peer-group-without-name {
    description
      "Identifies a BGP peer-group configured on the local system.";
    leaf local-as {
      type inet:as-number;
      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.";
    }
  }

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

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

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

  //Static routing 

  grouping ipv4-static-rtg {
    description
      "Configuration specific to IPv4 static routing.";
    list ipv4-lan-prefixes {
      if-feature "vpn-common:ipv4";
      key "lan next-hop";
      description
        "List of LAN prefixes for the site.";
      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;
    }
  }

  grouping ipv6-static-rtg {
    description
      "Configuration specific to IPv6 static routing.";
    list ipv6-lan-prefixes {
      if-feature "vpn-common:ipv6";
      key "lan next-hop";
      description
        "List of LAN prefixes for the 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;
    }
  }

  // OAM: maintain or remove

  grouping 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";
    }
  }
}
]]></sourcecode>
        </section>
      </section>
      <section anchor="the-bearer-service-ietf-bearer-svc-yang-module">
        <name>The Bearer Service ("ietf-bearer-svc") YANG Module</name>
        <section anchor="tree-structure-1">
          <name>Tree Structure</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[
module: ietf-bearer-svc
  +--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
]]></artwork>
          </figure>
          <t>The same customer site (CE, NF, etc.) can terminate one or multiple bearers; each of them uniquely identified by a refrence that is assigned by the network provider. These bearers can terminate on the same or distinct network nodes. CEs that terminate multiple bearers are called multi-homed CEs.</t>
        </section>
        <section anchor="yang-module-1">
          <name>YANG Module</name>
          <t>This module uses types defined in <xref target="RFC6991"/> and <xref target="RFC9181"/>.</t>
          <sourcecode markers="true" name="ietf-bearer-svc@2022-11-30.yang"><![CDATA[
module ietf-bearer-svc {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-bearer-svc";
  prefix bearer-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-ac-common {
    prefix ac-common;
    reference
      "RFC xxxx: A YANG Service Data Model for Attachment Circuits";
  }

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

     Editor:   Mohamed Boucadair
               <mailto:mohamed.boucadair@orange.com>
     Author:   Richard Roberts
               <mailto:rroberts@juniper.net>
     Author:   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
     network bearers 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.";
  }

  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 bearers.";
      }
      uses ac-common:op-instructions;
    }
  }
}
]]></sourcecode>
        </section>
      </section>
      <section anchor="the-attachment-circuit-service-ietf-ac-svc-yang-module">
        <name>The Attachment Circuit Service ("ietf-ac-svc") YANG Module</name>
        <section anchor="overall-structure">
          <name>Overall Structure</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 placement-constraints
  |  +--rw constraint* [constraint-type]
  |     +--rw constraint-type    identityref
  |     +--rw target
  |        +--rw (target-flavor)?
  |           +--:(id)
  |           |  +--rw group* [group-id]
  |           |     +--rw group-id    string
  |           +--:(all-accesses)
  |           |  +--rw all-other-accesses?   empty
  |           +--:(all-groups)
  |              +--rw all-other-groups?     empty
  +--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 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="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 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 group* [group-id]
        |  +--rw group-id      string
        |  +--rw precedence?   identityref
        +--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 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 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 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 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>
            <t>Similar to <xref target="RFC9182"/>, this version of the ACaaS assumes that parameters specific to the TCP-AO are preconfigured as part of the key chain that is referenced in the ACaaS. No assumption is made about how such a key chain is preconfigured. However, the structure of the key chain should cover data nodes beyond those in <xref target="RFC8177"/>, mainly SendID and RecvID (Section 3.1 of <xref target="RFC5925"/>).</t>
          </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 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 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 anchor="yang-module-2">
          <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-ac-common {
    prefix ac-common;
    reference
      "RFC xxxx: A YANG Service Data Model for Attachment Circuits";
  }
  import ietf-vpn-common {
    prefix vpn-common;
    reference
      "RFC 9181: A Common YANG Data Model for Layer 2 and Layer 3
                 VPNs";
  }
  import ietf-inet-types {
    prefix inet;
    reference
      "RFC 6991: Common YANG Data Types, Section 4";
  }
  import ietf-key-chain {
    prefix key-chain;
    reference
      "RFC 8177: YANG Data Model for Key Chains";
  }

  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";
  }

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

  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-global-profile/id";
    }
    description
      "Defines a reference to a gloabl attachment circuit that can be used
       by other modules.";
  }*/

  typedef ac-group-reference {
    type leafref {
      path "/ac-svc:attachment-circuits/ac-group-profile/id";
    }
    description
      "Defines a reference to an attachment circuit profile.";
  }

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

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

  /******************** Reusable groupings ********************/

  // Basic Layer 2 connection

  grouping l2-connection-basic {
    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;
        }
        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.";
        uses ac-common:dot1q;
      }
      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.";
        uses ac-common:qinq;
      }
    }
  }

  // Full Layer 2 connection

  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;
        }
        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.";
        uses ac-common:dot1q;
      }
      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'.";
        }
        uses ac-common:priority-tagged;
      }
      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.";
        uses ac-common:qinq;
      }
    }
    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.";
        uses ac-common:l2-tunnel-service;
      }
      case l2vpn {
        leaf l2vpn-id {
          type vpn-common:vpn-id;
          description
            "Indicates the L2VPN service associated with an Integrated
             Routing and Bridging (IRB) interface.";
        }
      }
    }
    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.";
    }
  }

  // Basic IP connection

  grouping ip-connection-basic {
    description
      "Defines basic IP connection parameters.";
    container ipv4 {
      if-feature "vpn-common:ipv4";
      description
        "IPv4-specific parameters.";
      uses ac-common:ipv4-connection-basic;
    }
    container ipv6 {
      if-feature "vpn-common:ipv6";
      description
        "IPv6-specific parameters.";
      uses ac-common:ipv6-connection-basic;
    }
  }

  // Full IP connection

  grouping ip-connection {
    description
      "Defines IP connection parameters.";
    container ipv4 {
      if-feature "vpn-common:ipv4";
      description
        "IPv4-specific parameters.";
      uses ac-common:ipv4-connection;
    }
    container ipv6 {
      if-feature "vpn-common:ipv6";
      description
        "IPv6-specific parameters.";
      uses ac-common:ipv6-connection;
    }
  }

  // Routing protocol list

  grouping routing-protocol-list {
    description
      "List of routing protocols used on the AC.";
    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.";
      }
    }
  }

  // Basic routing parameters

  grouping routing-basic {
    description
      "Defines basic parameters for 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.";
      }
      uses routing-protocol-list;
      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";
            uses ac-common:bgp-peer-group-with-name;
          }
        }
      }
      container ospf {
        when "derived-from-or-self(../type, "
           + "'vpn-common:ospf-routing')" {
          description
            "Only applies when the protocol is OSPF.";
        }
        description
          "Configuration specific to OSPF.";
        uses ac-common:ospf-basic;
      }
      container isis {
        when "derived-from-or-self(../type, "
           + "'vpn-common:isis-routing')" {
          description
            "Only applies when the protocol is IS-IS.";
        }
        description
          "Configuration specific to IS-IS.";
        uses ac-common:isis-basic;
      }
      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.";
        }
      }
    }
  }

  // Full routing parameters

  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.";
      }
      uses routing-protocol-list;
      container static {
        when "derived-from-or-self(../type, "
           + "'vpn-common:static-routing')" {
          description
            "Only applies when the protocol is static routing
             protocol.";
        }
        description
          "Configuration specific to static routing.";
        container cascaded-lan-prefixes {
          description
            "LAN prefixes from the customer.";
          uses ac-common:ipv4-static-rtg;
          uses ac-common:ipv6-static-rtg;
        }
      }
      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";
            uses ac-common:bgp-peer-group-with-name;
            leaf local-address {
              type inet:ip-address;
              config false;
              description
                "The local IP address that will be used to establish
                 the BGP session.";
            }
            uses ac-common: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.";
          }
          uses ac-common:bgp-peer-group-without-name;
          uses ac-common:bgp-authentication;
          uses vpn-common:service-status;
        }
      }
      container ospf {
        when "derived-from-or-self(../type, "
           + "'vpn-common:ospf-routing')" {
          description
            "Only applies when the protocol is OSPF.";
        }
        description
          "Configuration specific to OSPF.";
        uses ac-common:ospf-basic;
        uses ac-common:ospf-authentication;
        uses vpn-common:service-status;
      }
      container isis {
        when "derived-from-or-self(../type, "
           + "'vpn-common:isis-routing')" {
          description
            "Only applies when the protocol is IS-IS.";
        }
        description
          "Configuration specific to IS-IS.";
        uses ac-common:isis-basic;
        uses ac-common:isis-authentication;
        uses vpn-common:service-status;
      }
      container rip {
        when "derived-from-or-self(../type, "
           + "'vpn-common:rip-routing')" {
          description
            "Only applies when the protocol is RIP.
             For IPv4, the model assumes that RIP version 2 is used.";
        }
        description
          "Configuration specific to RIP routing.";
        leaf address-family {
          type identityref {
            base vpn-common:address-family;
          }
          description
            "Indicates whether IPv4, IPv6, or both address families
             are to be activated.";
        }
        uses ac-common:rip-authentication;
        uses vpn-common:service-status;
      }
      container vrrp {
        when "derived-from-or-self(../type, "
           + "'vpn-common:vrrp-routing')" {
          description
            "Only applies when the protocol is the
             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;
      }
    }
  }

  // Encryption choice

  grouping encryption-choice {
    description
      "Container for the encryption profile.";
    choice profile {
      description
        "Choice for the encryption profile.";
      case provider-profile {
        leaf provider-profile {
          type 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.";
        }
      }
    }
  }

  // Basic security parameters

  grouping ac-security-basic {
    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;
    }
  }

  // Basic AC parameter

  grouping ac-basic {
    description
      "Grouping for basic parameters for an attachment circuit.";
    leaf id {
      type string;
      description
        "An identifier of the AC.";
    }
    container l2-connection {
      description
        "Defines Layer 2 protocols and parameters that
         are required to enable AC connectivity.";
      uses l2-connection-basic;
    }
    container ip-connection {
      description
        "Defines IP connection parameters.";
      uses ip-connection-basic;
    }
    container routing-protocols {
      description
        "Defines routing protocols.";
      uses routing-basic;
    }
    container oam {
      description
        "Defines the Operations, Administration, and Maintenance
         (OAM) mechanisms used.";
      container bfd {
        if-feature "vpn-common:bfd";
        description
          "Container for BFD.";
        uses ac-common:bfd;
      }
    }
    container security {
      description
        "AC-specific security parameters.";
      uses ac-security-basic;
    }
  }

  // Full AC parameters

  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.";
    }
    container l2-connection {
      description
        "Defines Layer 2 protocols and parameters that
         are required to enable AC connectivity.";
      uses l2-connection;
    }
    container ip-connection {
      description
        "Defines IP connection parameters.";
      uses ip-connection;
    }
    container routing-protocols {
      description
        "Defines routing protocols.";
      uses routing;
    }
    container oam {
      description
        "Defines the OAM mechanisms used.";
      container bfd {
        if-feature "vpn-common:bfd";
        description
          "Container for BFD.";
        uses ac-common:bfd;
        uses vpn-common:service-status;
      }
    }
    container security {
      description
        "AC-specific security parameters.";
      uses ac-security-basic;
    }
  }

  /******************** Main AC containers ********************/

  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 attachment-circuits {
    description
      "Main container for the attachment circuits.";
    /*list ac-global-profile {
      key "id";
      description
        "Maintains a list of AC profiles.";
      uses ac-basic;
    }*/
    list ac-group-profile {
      key "id";
      description
        "Maintains a list of per-node AC profiles.";
      leaf id {
        type string;
        description
          "An identifier of the AC group.";
      }
      uses ac;
    }
    container placement-constraints {
      description
        "Diversity constraint type.";
      uses vpn-common:placement-constraints;
    }
    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 ac-common: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-group-profile {
        type ac-group-reference;
        description
          "A reference to a per-node AC profile.";
      }
      list group {
        key "group-id";
        description
          "List of group-ids.";
        leaf group-id {
          type string;
          description
            "Indicates the group-id to which the network
             access belongs to.";
        }
        leaf precedence {
          type identityref {
            base ac-common:precedence-type;
          }
          description
            "Defines service redundancy in transport
             network.";
        }
      }
      uses ac;
    }
  }
}
]]></sourcecode>
        </section>
      </section>
      <section anchor="glue">
        <name>Augmentations to Existing Service-Specific Models to Bind a Service to an AC</name>
        <section anchor="tree-structure-2">
          <name>Tree Structure</name>
          <t>ACs created using the "ietf-ac-svc" module can be referenced in other modules (e.g., L2SM, L3SM, L2NM, L3NM, and Slicing). Some augmentations are required to that aim as 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="yang-module-3">
          <name>YANG 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>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The YANG modules specified in this document define 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 these YANG modules 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 these 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>
      <t>Several data nodes ('bgp', 'ospf', 'isis', and 'rip') rely
   upon <xref target="RFC8177"/> for authentication purposes.  As such, the AC service module
   inherits the security considerations discussed in Section 5 of
   <xref target="RFC8177"/>.  Also, these data nodes support supplying explicit keys as
   strings in ASCII format.  The use of keys in hexadecimal string
   format would afford greater key entropy with the same number of key-
   string octets.  However, such a format is not included in this
   version of the AC service model, because it is not supported by the underlying
   device modules (e.g., <xref target="RFC8695"/>).</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA is requested to register the following URIs in the "ns" subregistry within
   the "IETF XML Registry" <xref target="RFC3688"/>:</t>
      <artwork><![CDATA[
   URI:  urn:ietf:params:xml:ns:yang:ietf-ac-common
   Registrant Contact:  The IESG.
   XML:  N/A; the requested URI is an XML namespace.

   URI:  urn:ietf:params:xml:ns:yang:ietf-bearer-svc
   Registrant Contact:  The IESG.
   XML:  N/A; the requested URI is an XML namespace.

   URI:  urn:ietf:params:xml:ns:yang:ietf-ac-svc
   Registrant Contact:  The IESG.
   XML:  N/A; the requested URI is an XML namespace.

   URI:  urn:ietf:params:xml:ns:yang:ietf-ac-glue
   Registrant Contact:  The IESG.
   XML:  N/A; the requested URI is an XML namespace.
]]></artwork>
      <t>IANA is requested to register the following YANG module in the "YANG Module
   Names" subregistry <xref target="RFC6020"/> within the "YANG Parameters" registry.</t>
      <artwork><![CDATA[
   Name:  ietf-ac-common
   Maintained by IANA?  N
   Namespace:  urn:ietf:params:xml:ns:yang:ietf-ac-common
   Prefix:  ac-common
   Reference:  RFC xxxx

   Name:  ietf-bearer-svc
   Maintained by IANA?  N
   Namespace:  urn:ietf:params:xml:ns:yang:ietf-bearer-svc
   Prefix:  bearer-svc
   Reference:  RFC xxxx

   Name:  ietf-ac-svc
   Maintained by IANA?  N
   Namespace:  urn:ietf:params:xml:ns:yang:ietf-ac-svc
   Prefix:  ac-svc
   Reference:  RFC xxxx

   Name:  ietf-ac-glue
   Maintained by IANA?  N
   Namespace:  urn:ietf:params:xml:ns:yang:ietf-ac-glue
   Prefix:  ac-glue
   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="RFC4364">
          <front>
            <title>BGP/MPLS IP Virtual Private Networks (VPNs)</title>
            <author fullname="E. Rosen" initials="E." surname="Rosen">
              <organization/>
            </author>
            <author fullname="Y. Rekhter" initials="Y." surname="Rekhter">
              <organization/>
            </author>
            <date month="February" year="2006"/>
            <abstract>
              <t>This document describes a method by which a Service Provider may use an IP backbone to provide IP Virtual Private Networks (VPNs) for its customers.  This method uses a "peer model", in which the customers' edge routers (CE routers) send their routes to the Service Provider's edge routers (PE routers); there is no "overlay" visible to the customer's routing algorithm, and CE routers at different sites do not peer with each other.  Data packets are tunneled through the backbone, so that the core routers do not need to know the VPN routes.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4364"/>
          <seriesInfo name="DOI" value="10.17487/RFC4364"/>
        </reference>
        <reference anchor="I-D.ietf-opsawg-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="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="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="RFC9182">
          <front>
            <title>A YANG Network Data Model for 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="L. Munoz" initials="L." surname="Munoz">
              <organization/>
            </author>
            <author fullname="A. Aguado" initials="A." surname="Aguado">
              <organization/>
            </author>
            <date month="February" year="2022"/>
            <abstract>
              <t>As a complement to the Layer 3 Virtual Private Network Service Model (L3SM), which is used for communication between customers and service providers, this document defines an L3VPN Network Model (L3NM) that can be used for the provisioning of Layer 3 Virtual Private Network (L3VPN) services within a service provider network. The model provides a network-centric view of L3VPN services.</t>
              <t>The L3NM is meant to be used by a network controller to derive the configuration information that will be sent to relevant network devices. The model can also facilitate communication between a service orchestrator and a network controller/orchestrator.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9182"/>
          <seriesInfo name="DOI" value="10.17487/RFC9182"/>
        </reference>
        <reference anchor="RFC5925">
          <front>
            <title>The TCP Authentication Option</title>
            <author fullname="J. Touch" initials="J." surname="Touch">
              <organization/>
            </author>
            <author fullname="A. Mankin" initials="A." surname="Mankin">
              <organization/>
            </author>
            <author fullname="R. Bonica" initials="R." surname="Bonica">
              <organization/>
            </author>
            <date month="June" year="2010"/>
            <abstract>
              <t>This document specifies the TCP Authentication Option (TCP-AO), which obsoletes the TCP MD5 Signature option of RFC 2385 (TCP MD5).  TCP-AO specifies the use of stronger Message Authentication Codes (MACs), protects against replays even for long-lived TCP connections, and provides more details on the association of security with TCP connections than TCP MD5.  TCP-AO is compatible with either a static Master Key Tuple (MKT) configuration or an external, out-of-band MKT management mechanism; in either case, TCP-AO also protects connections when using the same MKT across repeated instances of a connection, using traffic keys derived from the MKT, and coordinates MKT changes between endpoints.  The result is intended to support current infrastructure uses of TCP MD5, such as to protect long-lived connections (as used, e.g., in BGP and LDP), and to support a larger set of MACs with minimal other system and operational changes.  TCP-AO uses a different option identifier than TCP MD5, even though TCP-AO and TCP MD5 are never permitted to be used simultaneously.  TCP-AO supports IPv6, and is fully compatible with the proposed requirements for the replacement of TCP MD5.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5925"/>
          <seriesInfo name="DOI" value="10.17487/RFC5925"/>
        </reference>
        <reference anchor="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="RFC5737">
          <front>
            <title>IPv4 Address Blocks Reserved for Documentation</title>
            <author fullname="J. Arkko" initials="J." surname="Arkko">
              <organization/>
            </author>
            <author fullname="M. Cotton" initials="M." surname="Cotton">
              <organization/>
            </author>
            <author fullname="L. Vegoda" initials="L." surname="Vegoda">
              <organization/>
            </author>
            <date month="January" year="2010"/>
            <abstract>
              <t>Three IPv4 unicast address blocks are reserved for use in examples in specifications and other documents.  This document describes the use of these blocks.  This document is not an Internet Standards Track  specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5737"/>
          <seriesInfo name="DOI" value="10.17487/RFC5737"/>
        </reference>
        <reference anchor="RFC3849">
          <front>
            <title>IPv6 Address Prefix Reserved for Documentation</title>
            <author fullname="G. Huston" initials="G." surname="Huston">
              <organization/>
            </author>
            <author fullname="A. Lord" initials="A." surname="Lord">
              <organization/>
            </author>
            <author fullname="P. Smith" initials="P." surname="Smith">
              <organization/>
            </author>
            <date month="July" year="2004"/>
            <abstract>
              <t>To reduce the likelihood of conflict and confusion when relating documented examples to deployed systems, an IPv6 unicast address prefix is reserved for use in examples in RFCs, books, documentation, and the like.  Since site-local and link-local unicast addresses have special meaning in IPv6, these addresses cannot be used in many example situations.  The document describes the use of the IPv6 address prefix 2001:DB8::/32 as a reserved prefix for use in documentation.  This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3849"/>
          <seriesInfo name="DOI" value="10.17487/RFC3849"/>
        </reference>
        <reference anchor="RFC5398">
          <front>
            <title>Autonomous System (AS) Number Reservation for Documentation Use</title>
            <author fullname="G. Huston" initials="G." surname="Huston">
              <organization/>
            </author>
            <date month="December" year="2008"/>
            <abstract>
              <t>To reduce the likelihood of conflict and confusion when relating documented examples to deployed systems, two blocks of Autonomous System numbers (ASNs) are reserved for use in examples in RFCs, books, documentation, and the like.  This document describes the reservation of two blocks of ASNs as reserved numbers for use in documentation.  This memo provides information for the Internet  community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5398"/>
          <seriesInfo name="DOI" value="10.17487/RFC5398"/>
        </reference>
        <reference anchor="RFC8969">
          <front>
            <title>A Framework for Automating Service and Network Management with YANG</title>
            <author fullname="Q. Wu" initials="Q." role="editor" surname="Wu">
              <organization/>
            </author>
            <author fullname="M. Boucadair" initials="M." role="editor" surname="Boucadair">
              <organization/>
            </author>
            <author fullname="D. Lopez" initials="D." surname="Lopez">
              <organization/>
            </author>
            <author fullname="C. Xie" initials="C." surname="Xie">
              <organization/>
            </author>
            <author fullname="L. Geng" initials="L." surname="Geng">
              <organization/>
            </author>
            <date month="January" year="2021"/>
            <abstract>
              <t>Data models provide a programmatic approach to represent services and networks. Concretely, they can be used to derive configuration information for network and service components, and state information that will be monitored and tracked.  Data models can be used during the service and network management life cycle (e.g., service instantiation, service provisioning, service optimization, service monitoring, service diagnosing, and service assurance).  Data models are also instrumental in the automation of network management, and they can provide closed-loop control for adaptive and deterministic service creation, delivery, and maintenance.</t>
              <t>This document describes a framework for service and network management automation that takes advantage of YANG modeling technologies. This framework is drawn from a network operator perspective irrespective of the origin of a data model; thus, it can accommodate YANG modules that are developed outside the IETF.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8969"/>
          <seriesInfo name="DOI" value="10.17487/RFC8969"/>
        </reference>
        <reference anchor="I-D.boro-opsawg-ntw-attachment-circuit">
          <front>
            <title>A Network YANG Data Model for Attachment Circuits</title>
            <author fullname="Mohamed Boucadair" initials="M." surname="Boucadair">
              <organization>Orange</organization>
            </author>
            <author fullname="Richard Roberts" initials="R." surname="Roberts">
              <organization>Juniper</organization>
            </author>
            <author fullname="Oscar Gonzalez de Dios" initials="O. G." surname="de Dios">
              <organization>Telefonica</organization>
            </author>
            <author fullname="Samier Barguil" initials="S." surname="Barguil">
              <organization>Nokia</organization>
            </author>
            <author fullname="Bo Wu" initials="B." surname="Wu">
              <organization>Huawei Technologies</organization>
            </author>
            <date day="27" month="January" year="2023"/>
            <abstract>
              <t>   This document specifies a network model for attachment circuits.  The
   model can be used for the provisioning of attachment circuits prior
   or during service provisioning (e.g., Network Slice Service).  The
   companion service model is specified in
   [I-D.boro-opsawg-teas-attachment-circuit].

   The module augments the SAP model with the detailed information for
   the provisioning of attachment circuits in Provider Edges (PEs).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-boro-opsawg-ntw-attachment-circuit-00"/>
        </reference>
        <reference anchor="RFC8349">
          <front>
            <title>A YANG Data Model for Routing Management (NMDA Version)</title>
            <author fullname="L. Lhotka" initials="L." surname="Lhotka">
              <organization/>
            </author>
            <author fullname="A. Lindem" initials="A." surname="Lindem">
              <organization/>
            </author>
            <author fullname="Y. Qu" initials="Y." surname="Qu">
              <organization/>
            </author>
            <date month="March" year="2018"/>
            <abstract>
              <t>This document specifies three YANG modules and one submodule. Together, they form the core routing data model that serves as a framework for configuring and managing a routing subsystem.  It is expected that these modules will be augmented by additional YANG modules defining data models for control-plane protocols, route filters, and other functions.  The core routing data model provides common building blocks for such extensions -- routes, Routing Information Bases (RIBs), and control-plane protocols.</t>
              <t>The YANG modules in this document conform to the Network Management Datastore Architecture (NMDA).  This document obsoletes RFC 8022.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8349"/>
          <seriesInfo name="DOI" value="10.17487/RFC8349"/>
        </reference>
        <reference anchor="I-D.ietf-idr-bgp-model">
          <front>
            <title>BGP YANG Model for Service Provider Networks</title>
            <author fullname="Mahesh Jethanandani" initials="M." surname="Jethanandani">
              <organization>Kloud Services</organization>
            </author>
            <author fullname="Keyur Patel" initials="K." surname="Patel">
              <organization>Arrcus</organization>
            </author>
            <author fullname="Susan Hares" initials="S." surname="Hares">
              <organization>Huawei</organization>
            </author>
            <author fullname="Jeffrey Haas" initials="J." surname="Haas">
              <organization>Juniper Networks</organization>
            </author>
            <date day="13" month="October" year="2022"/>
            <abstract>
              <t>   This document defines a YANG data model for configuring and managing
   BGP, including protocol, policy, and operational aspects, such as
   RIB, based on data center, carrier, and content provider operational
   requirements.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-idr-bgp-model-15"/>
        </reference>
        <reference anchor="RFC8466">
          <front>
            <title>A YANG Data Model for Layer 2 Virtual Private Network (L2VPN) Service Delivery</title>
            <author fullname="B. Wen" initials="B." surname="Wen">
              <organization/>
            </author>
            <author fullname="G. Fioccola" initials="G." role="editor" surname="Fioccola">
              <organization/>
            </author>
            <author fullname="C. Xie" initials="C." surname="Xie">
              <organization/>
            </author>
            <author fullname="L. Jalil" initials="L." surname="Jalil">
              <organization/>
            </author>
            <date month="October" year="2018"/>
            <abstract>
              <t>This document defines a YANG data model that can be used to configure a Layer 2 provider-provisioned VPN service.  It is up to a management system to take this as an input and generate specific configuration models to configure the different network elements to deliver the service.  How this configuration of network elements is done is out of scope for this document.</t>
              <t>The YANG data model defined in this document includes support for point-to-point Virtual Private Wire Services (VPWSs) and multipoint Virtual Private LAN Services (VPLSs) that use Pseudowires signaled using the Label Distribution Protocol (LDP) and the Border Gateway Protocol (BGP) as described in RFCs 4761 and 6624.</t>
              <t>The YANG data model defined in this document conforms to the Network Management Datastore Architecture defined in RFC 8342.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8466"/>
          <seriesInfo name="DOI" value="10.17487/RFC8466"/>
        </reference>
        <reference anchor="RFC8299">
          <front>
            <title>YANG Data Model for L3VPN Service Delivery</title>
            <author fullname="Q. Wu" initials="Q." role="editor" surname="Wu">
              <organization/>
            </author>
            <author fullname="S. Litkowski" initials="S." surname="Litkowski">
              <organization/>
            </author>
            <author fullname="L. Tomotaki" initials="L." surname="Tomotaki">
              <organization/>
            </author>
            <author fullname="K. Ogaki" initials="K." surname="Ogaki">
              <organization/>
            </author>
            <date month="January" year="2018"/>
            <abstract>
              <t>This document defines a YANG data model that can be used for communication between customers and network operators and to deliver a Layer 3 provider-provisioned VPN service.  This document is limited to BGP PE-based VPNs as described in RFCs 4026, 4110, and 4364.  This model is intended to be instantiated at the management system to deliver the overall service.  It is not a configuration model to be used directly on network elements.  This model provides an abstracted view of the Layer 3 IP VPN service configuration components.  It will be up to the management system to take this model as input and use specific configuration models to configure the different network elements to deliver the service.  How the configuration of network elements is done is out of scope for this document.</t>
              <t>This document obsoletes RFC 8049; it replaces the unimplementable module in that RFC with a new module with the same name that is not backward compatible.  The changes are a series of small fixes to the YANG module and some clarifications to the text.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8299"/>
          <seriesInfo name="DOI" value="10.17487/RFC8299"/>
        </reference>
        <reference anchor="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="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>
        <reference anchor="RFC8695">
          <front>
            <title>A YANG Data Model for the Routing Information Protocol (RIP)</title>
            <author fullname="X. Liu" initials="X." surname="Liu">
              <organization/>
            </author>
            <author fullname="P. Sarda" initials="P." surname="Sarda">
              <organization/>
            </author>
            <author fullname="V. Choudhary" initials="V." surname="Choudhary">
              <organization/>
            </author>
            <date month="February" year="2020"/>
            <abstract>
              <t>This document describes a data model for the management of the Routing Information Protocol (RIP).  Both RIP version 2 and RIPng are covered.  The data model includes definitions for configuration, operational state, and Remote Procedure Calls (RPCs).</t>
              <t>The YANG data model in this document conforms to the Network Management Datastore Architecture (NMDA).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8695"/>
          <seriesInfo name="DOI" value="10.17487/RFC8695"/>
        </reference>
        <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="RFC6151">
          <front>
            <title>Updated Security Considerations for the MD5 Message-Digest and the HMAC-MD5 Algorithms</title>
            <author fullname="S. Turner" initials="S." surname="Turner">
              <organization/>
            </author>
            <author fullname="L. Chen" initials="L." surname="Chen">
              <organization/>
            </author>
            <date month="March" year="2011"/>
            <abstract>
              <t>This document updates the security considerations for the MD5 message digest algorithm.  It also updates the security considerations for HMAC-MD5.  This document is not an Internet Standards Track  specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6151"/>
          <seriesInfo name="DOI" value="10.17487/RFC6151"/>
        </reference>
        <reference anchor="RFC6952">
          <front>
            <title>Analysis of BGP, LDP, PCEP, and MSDP Issues According to the Keying and Authentication for Routing Protocols (KARP) Design Guide</title>
            <author fullname="M. Jethanandani" initials="M." surname="Jethanandani">
              <organization/>
            </author>
            <author fullname="K. Patel" initials="K." surname="Patel">
              <organization/>
            </author>
            <author fullname="L. Zheng" initials="L." surname="Zheng">
              <organization/>
            </author>
            <date month="May" year="2013"/>
            <abstract>
              <t>This document analyzes TCP-based routing protocols, the Border Gateway Protocol (BGP), the Label Distribution Protocol (LDP), the Path Computation Element Communication Protocol (PCEP), and the Multicast Source Distribution Protocol (MSDP), according to guidelines set forth in Section 4.2 of "Keying and Authentication for            Routing Protocols Design Guidelines", RFC 6518.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6952"/>
          <seriesInfo name="DOI" value="10.17487/RFC6952"/>
        </reference>
      </references>
    </references>
    <section anchor="ac-gp-tree">
      <name>Reusable Grouping in The "ietf-ac-svc" Module</name>
      <t>The reusable groupings defined in the ACaaS module are shown in <xref target="fig-ac-gp-tree"/>.</t>
      <figure anchor="fig-ac-gp-tree">
        <name>Tree Structure of the ACaaS Reusable Groupings</name>
        <artwork align="center"><![CDATA[
module: ietf-ac-svc

  grouping l2-connection-basic
    +-- encapsulation
       +-- type?    identityref
       +-- dot1q
       |  +-- tag-type?   identityref
       |  +-- cvlan-id?   uint16
       +-- qinq
          +-- tag-type?   identityref
          +-- svlan-id    uint16
          +-- cvlan-id    uint16
  grouping l2-connection
    +-- encapsulation
    |  +-- type?              identityref
    |  +-- dot1q
    |  |  +-- tag-type?   identityref
    |  |  +-- cvlan-id?   uint16
    |  +-- priority-tagged
    |  |  +-- tag-type?   identityref
    |  +-- qinq
    |     +-- tag-type?   identityref
    |     +-- svlan-id    uint16
    |     +-- cvlan-id    uint16
    +-- (l2-service)?
    |  +--:(l2-tunnel-service)
    |  |  +-- l2-tunnel-service
    |  |     +-- type?         identityref
    |  |     +-- pseudowire
    |  |     |  +-- vcid?      uint32
    |  |     |  +-- far-end?   union
    |  |     +-- vpls
    |  |     |  +-- vcid?      uint32
    |  |     |  +-- far-end*   union
    |  |     +-- vxlan
    |  |        +-- vni-id             uint32
    |  |        +-- peer-mode?         identityref
    |  |        +-- peer-ip-address*   inet:ip-address
    |  +--:(l2vpn)
    |     +-- l2vpn-id?            vpn-common:vpn-id
    +-- bearer-reference?          string
            {vpn-common:bearer-reference}?
  grouping ip-connection-basic
    +-- ipv4 {vpn-common:ipv4}?
    |  +-- prefix-length?                       uint8
    |  +-- address-allocation-type?             identityref
    |  +-- (allocation-type)?
    |     +--:(dynamic)
    |        +-- (provider-dhcp)?
    |        |  +--:(dhcp-service-type)
    |        |     +-- dhcp-service-type?       enumeration
    |        +-- (dhcp-relay)?
    |           +--:(customer-dhcp-servers)
    |              +-- customer-dhcp-servers
    |                 +-- server-ip-address*   inet:ipv4-address
    +-- ipv6 {vpn-common:ipv6}?
       +-- prefix-length?                       uint8
       +-- address-allocation-type?             identityref
       +-- (allocation-type)?
          +--:(dynamic)
             +-- (provider-dhcp)?
             |  +--:(dhcp-service-type)
             |     +-- dhcp-service-type?       enumeration
             +-- (dhcp-relay)?
                +--:(customer-dhcp-servers)
                   +-- customer-dhcp-servers
                      +-- server-ip-address*   inet:ipv6-address
  grouping ip-connection
    +-- ipv4 {vpn-common:ipv4}?
    |  +-- local-address?                           inet:ipv4-address
    |  +-- virtual-address?                         inet:ipv4-address
    |  +-- prefix-length?                           uint8
    |  +-- address-allocation-type?                 identityref
    |  +-- (allocation-type)?
    |     +--:(dynamic)
    |     |  +-- (address-assign)?
    |     |  |  +--:(number)
    |     |  |  |  +-- number-of-dynamic-address?   uint16
    |     |  |  +--:(explicit)
    |     |  |     +-- customer-addresses
    |     |  |        +-- address-pool* [pool-id]
    |     |  |           +-- pool-id?         string
    |     |  |           +-- start-address    inet:ipv4-address
    |     |  |           +-- end-address?     inet:ipv4-address
    |     |  +-- (provider-dhcp)?
    |     |  |  +--:(dhcp-service-type)
    |     |  |     +-- dhcp-service-type?           enumeration
    |     |  +-- (dhcp-relay)?
    |     |     +--:(customer-dhcp-servers)
    |     |        +-- customer-dhcp-servers
    |     |           +-- server-ip-address*   inet:ipv4-address
    |     +--:(static-addresses)
    |        +-- address* [address-id]
    |           +-- address-id?         string
    |           +-- customer-address?   inet:ipv4-address
    +-- ipv6 {vpn-common:ipv6}?
       +-- local-address?                           inet:ipv6-address
       +-- virtual-address?                         inet:ipv6-address
       +-- prefix-length?                           uint8
       +-- address-allocation-type?                 identityref
       +-- (allocation-type)?
          +--:(dynamic)
          |  +-- (address-assign)?
          |  |  +--:(number)
          |  |  |  +-- number-of-dynamic-address?   uint16
          |  |  +--:(explicit)
          |  |     +-- customer-addresses
          |  |        +-- address-pool* [pool-id]
          |  |           +-- pool-id?         string
          |  |           +-- start-address    inet:ipv6-address
          |  |           +-- end-address?     inet:ipv6-address
          |  +-- (provider-dhcp)?
          |  |  +--:(dhcp-service-type)
          |  |     +-- dhcp-service-type?           enumeration
          |  +-- (dhcp-relay)?
          |     +--:(customer-dhcp-servers)
          |        +-- customer-dhcp-servers
          |           +-- server-ip-address*   inet:ipv6-address
          +--:(static-addresses)
             +-- address* [address-id]
                +-- address-id?         string
                +-- customer-address?   inet:ipv6-address
  grouping routing-protocol-list
    +-- type?               identityref
    +-- routing-profiles* [id]
       +-- id?     routing-profile-reference
       +-- type?   identityref
  grouping routing-basic
    +-- routing-protocol* [id]
       +-- id?                 string
       +-- type?               identityref
       +-- routing-profiles* [id]
       |  +-- id?     routing-profile-reference
       |  +-- type?   identityref
       +-- bgp
       |  +-- peer-groups
       |     +-- peer-group* [name]
       |        +-- name?             string
       |        +--ro local-as?         inet:as-number
       |        +-- peer-as?          inet:as-number
       |        +-- address-family?   identityref
       +-- ospf
       |  +-- address-family?   identityref
       |  +-- area-id           yang:dotted-quad
       |  +-- metric?           uint16
       +-- isis
       |  +-- address-family?   identityref
       |  +-- area-address      area-address
       +-- rip
       |  +-- address-family?   identityref
       +-- vrrp
          +-- address-family?   identityref
  grouping routing
    +-- routing-protocol* [id]
       +-- id?                 string
       +-- type?               identityref
       +-- routing-profiles* [id]
       |  +-- id?     routing-profile-reference
       |  +-- type?   identityref
       +-- static
       |  +-- cascaded-lan-prefixes
       |     +-- ipv4-lan-prefixes* [lan next-hop] {vpn-common:ipv4}?
       |     |  +-- lan?        inet:ipv4-prefix
       |     |  +-- lan-tag?    string
       |     |  +-- next-hop?   union
       |     |  +-- metric?     uint32
       |     |  +-- status
       |     |     +-- admin-status
       |     |     |  +-- status?        identityref
       |     |     |  +-- last-change?   yang:date-and-time
       |     |     +--ro oper-status
       |     |        +--ro status?        identityref
       |     |        +--ro last-change?   yang:date-and-time
       |     +-- ipv6-lan-prefixes* [lan next-hop] {vpn-common:ipv6}?
       |        +-- lan?        inet:ipv6-prefix
       |        +-- lan-tag?    string
       |        +-- next-hop?   union
       |        +-- metric?     uint32
       |        +-- status
       |           +-- admin-status
       |           |  +-- status?        identityref
       |           |  +-- last-change?   yang:date-and-time
       |           +--ro oper-status
       |              +--ro status?        identityref
       |              +--ro last-change?   yang:date-and-time
       +-- bgp
       |  +-- peer-groups
       |  |  +-- peer-group* [name]
       |  |     +-- name?             string
       |  |     +--ro local-as?         inet:as-number
       |  |     +-- peer-as?          inet:as-number
       |  |     +-- address-family?   identityref
       |  |     +--ro local-address?    inet:ip-address
       |  |     +-- authentication
       |  |        +-- enable?            boolean
       |  |        +-- keying-material
       |  |           +-- (option)?
       |  |              +--:(ao)
       |  |              |  +-- enable-ao?          boolean
       |  |              |  +-- ao-keychain?
       |  |              |          key-chain:key-chain-ref
       |  |              +--:(md5)
       |  |              |  +-- md5-keychain?
       |  |              |          key-chain:key-chain-ref
       |  |              +--:(explicit)
       |  |                 +-- key-id?             uint32
       |  |                 +-- key?                string
       |  |                 +-- crypto-algorithm?   identityref
       |  +-- neighbor* [id]
       |     +-- id?               string
       |     +-- remote-address?   inet:ip-address
       |     +--ro local-address?    inet:ip-address
       |     +-- peer-group?
       |     |       -> ../../peer-groups/peer-group/name
       |     +--ro local-as?         inet:as-number
       |     +-- peer-as?          inet:as-number
       |     +-- address-family?   identityref
       |     +-- authentication
       |     |  +-- enable?            boolean
       |     |  +-- keying-material
       |     |     +-- (option)?
       |     |        +--:(ao)
       |     |        |  +-- enable-ao?          boolean
       |     |        |  +-- ao-keychain?
       |     |        |          key-chain:key-chain-ref
       |     |        +--:(md5)
       |     |        |  +-- md5-keychain?
       |     |        |          key-chain:key-chain-ref
       |     |        +--:(explicit)
       |     |           +-- key-id?             uint32
       |     |           +-- key?                string
       |     |           +-- crypto-algorithm?   identityref
       |     +-- status
       |        +-- admin-status
       |        |  +-- status?        identityref
       |        |  +-- last-change?   yang:date-and-time
       |        +--ro oper-status
       |           +--ro status?        identityref
       |           +--ro last-change?   yang:date-and-time
       +-- ospf
       |  +-- address-family?   identityref
       |  +-- area-id           yang:dotted-quad
       |  +-- metric?           uint16
       |  +-- authentication
       |  |  +-- enable?            boolean
       |  |  +-- keying-material
       |  |     +-- (option)?
       |  |        +--:(auth-key-chain)
       |  |        |  +-- key-chain?          key-chain:key-chain-ref
       |  |        +--:(auth-key-explicit)
       |  |           +-- key-id?             uint32
       |  |           +-- key?                string
       |  |           +-- crypto-algorithm?   identityref
       |  +-- status
       |     +-- admin-status
       |     |  +-- status?        identityref
       |     |  +-- last-change?   yang:date-and-time
       |     +--ro oper-status
       |        +--ro status?        identityref
       |        +--ro last-change?   yang:date-and-time
       +-- isis
       |  +-- address-family?   identityref
       |  +-- area-address      area-address
       |  +-- authentication
       |  |  +-- enable?            boolean
       |  |  +-- keying-material
       |  |     +-- (option)?
       |  |        +--:(auth-key-chain)
       |  |        |  +-- key-chain?          key-chain:key-chain-ref
       |  |        +--:(auth-key-explicit)
       |  |           +-- key-id?             uint32
       |  |           +-- key?                string
       |  |           +-- crypto-algorithm?   identityref
       |  +-- status
       |     +-- admin-status
       |     |  +-- status?        identityref
       |     |  +-- last-change?   yang:date-and-time
       |     +--ro oper-status
       |        +--ro status?        identityref
       |        +--ro last-change?   yang:date-and-time
       +-- rip
       |  +-- address-family?   identityref
       |  +-- authentication
       |  |  +-- enable?            boolean
       |  |  +-- keying-material
       |  |     +-- (option)?
       |  |        +--:(auth-key-chain)
       |  |        |  +-- key-chain?          key-chain:key-chain-ref
       |  |        +--:(auth-key-explicit)
       |  |           +-- key?                string
       |  |           +-- crypto-algorithm?   identityref
       |  +-- status
       |     +-- admin-status
       |     |  +-- status?        identityref
       |     |  +-- last-change?   yang:date-and-time
       |     +--ro oper-status
       |        +--ro status?        identityref
       |        +--ro last-change?   yang:date-and-time
       +-- vrrp
          +-- address-family?   identityref
          +-- status
             +-- admin-status
             |  +-- status?        identityref
             |  +-- last-change?   yang:date-and-time
             +--ro oper-status
                +--ro status?        identityref
                +--ro last-change?   yang:date-and-time
  grouping encryption-choice
    +-- (profile)?
       +--:(provider-profile)
       |  +-- provider-profile?     encryption-profile-reference
       +--:(customer-profile)
          +-- customer-key-chain?   key-chain:key-chain-ref
  grouping ac-security-basic
    +-- encryption {vpn-common:encryption}?
    |  +-- enabled?   boolean
    |  +-- layer?     enumeration
    +-- encryption-profile
       +-- (profile)?
          +--:(provider-profile)
          |  +-- provider-profile?     encryption-profile-reference
          +--:(customer-profile)
             +-- customer-key-chain?   key-chain:key-chain-ref
  grouping ac-basic
    +-- id?                  string
    +-- l2-connection
    |  +-- encapsulation
    |     +-- type?    identityref
    |     +-- dot1q
    |     |  +-- tag-type?   identityref
    |     |  +-- cvlan-id?   uint16
    |     +-- qinq
    |        +-- tag-type?   identityref
    |        +-- svlan-id    uint16
    |        +-- cvlan-id    uint16
    +-- ip-connection
    |  +-- ipv4 {vpn-common:ipv4}?
    |  |  +-- prefix-length?                       uint8
    |  |  +-- address-allocation-type?             identityref
    |  |  +-- (allocation-type)?
    |  |     +--:(dynamic)
    |  |        +-- (provider-dhcp)?
    |  |        |  +--:(dhcp-service-type)
    |  |        |     +-- dhcp-service-type?       enumeration
    |  |        +-- (dhcp-relay)?
    |  |           +--:(customer-dhcp-servers)
    |  |              +-- customer-dhcp-servers
    |  |                 +-- server-ip-address*   inet:ipv4-address
    |  +-- ipv6 {vpn-common:ipv6}?
    |     +-- prefix-length?                       uint8
    |     +-- address-allocation-type?             identityref
    |     +-- (allocation-type)?
    |        +--:(dynamic)
    |           +-- (provider-dhcp)?
    |           |  +--:(dhcp-service-type)
    |           |     +-- dhcp-service-type?       enumeration
    |           +-- (dhcp-relay)?
    |              +--:(customer-dhcp-servers)
    |                 +-- customer-dhcp-servers
    |                    +-- server-ip-address*   inet:ipv6-address
    +-- routing-protocols
    |  +-- routing-protocol* [id]
    |     +-- id?                 string
    |     +-- type?               identityref
    |     +-- routing-profiles* [id]
    |     |  +-- id?     routing-profile-reference
    |     |  +-- type?   identityref
    |     +-- bgp
    |     |  +-- peer-groups
    |     |     +-- peer-group* [name]
    |     |        +-- name?             string
    |     |        +--ro local-as?         inet:as-number
    |     |        +-- peer-as?          inet:as-number
    |     |        +-- address-family?   identityref
    |     +-- ospf
    |     |  +-- address-family?   identityref
    |     |  +-- area-id           yang:dotted-quad
    |     |  +-- metric?           uint16
    |     +-- isis
    |     |  +-- address-family?   identityref
    |     |  +-- area-address      area-address
    |     +-- rip
    |     |  +-- address-family?   identityref
    |     +-- vrrp
    |        +-- address-family?   identityref
    +-- oam
    |  +-- bfd {vpn-common:bfd}?
    |     +-- holdtime?   uint32
    +-- security
       +-- encryption {vpn-common:encryption}?
       |  +-- enabled?   boolean
       |  +-- layer?     enumeration
       +-- encryption-profile
          +-- (profile)?
             +--:(provider-profile)
             |  +-- provider-profile?
             |          encryption-profile-reference
             +--:(customer-profile)
                +-- customer-key-chain?   key-chain:key-chain-ref
  grouping ac
    +-- name?                string
    +-- l2-connection
    |  +-- encapsulation
    |  |  +-- type?              identityref
    |  |  +-- dot1q
    |  |  |  +-- tag-type?   identityref
    |  |  |  +-- cvlan-id?   uint16
    |  |  +-- priority-tagged
    |  |  |  +-- tag-type?   identityref
    |  |  +-- qinq
    |  |     +-- tag-type?   identityref
    |  |     +-- svlan-id    uint16
    |  |     +-- cvlan-id    uint16
    |  +-- (l2-service)?
    |  |  +--:(l2-tunnel-service)
    |  |  |  +-- l2-tunnel-service
    |  |  |     +-- type?         identityref
    |  |  |     +-- pseudowire
    |  |  |     |  +-- vcid?      uint32
    |  |  |     |  +-- far-end?   union
    |  |  |     +-- vpls
    |  |  |     |  +-- vcid?      uint32
    |  |  |     |  +-- far-end*   union
    |  |  |     +-- vxlan
    |  |  |        +-- vni-id             uint32
    |  |  |        +-- peer-mode?         identityref
    |  |  |        +-- peer-ip-address*   inet:ip-address
    |  |  +--:(l2vpn)
    |  |     +-- l2vpn-id?            vpn-common:vpn-id
    |  +-- bearer-reference?          string
    |          {vpn-common:bearer-reference}?
    +-- ip-connection
    |  +-- ipv4 {vpn-common:ipv4}?
    |  |  +-- local-address?
    |  |  |       inet:ipv4-address
    |  |  +-- virtual-address?
    |  |  |       inet:ipv4-address
    |  |  +-- prefix-length?                           uint8
    |  |  +-- address-allocation-type?                 identityref
    |  |  +-- (allocation-type)?
    |  |     +--:(dynamic)
    |  |     |  +-- (address-assign)?
    |  |     |  |  +--:(number)
    |  |     |  |  |  +-- number-of-dynamic-address?   uint16
    |  |     |  |  +--:(explicit)
    |  |     |  |     +-- customer-addresses
    |  |     |  |        +-- address-pool* [pool-id]
    |  |     |  |           +-- pool-id?         string
    |  |     |  |           +-- start-address    inet:ipv4-address
    |  |     |  |           +-- end-address?     inet:ipv4-address
    |  |     |  +-- (provider-dhcp)?
    |  |     |  |  +--:(dhcp-service-type)
    |  |     |  |     +-- dhcp-service-type?           enumeration
    |  |     |  +-- (dhcp-relay)?
    |  |     |     +--:(customer-dhcp-servers)
    |  |     |        +-- customer-dhcp-servers
    |  |     |           +-- server-ip-address*   inet:ipv4-address
    |  |     +--:(static-addresses)
    |  |        +-- address* [address-id]
    |  |           +-- address-id?         string
    |  |           +-- customer-address?   inet:ipv4-address
    |  +-- ipv6 {vpn-common:ipv6}?
    |     +-- local-address?
    |     |       inet:ipv6-address
    |     +-- virtual-address?
    |     |       inet:ipv6-address
    |     +-- prefix-length?                           uint8
    |     +-- address-allocation-type?                 identityref
    |     +-- (allocation-type)?
    |        +--:(dynamic)
    |        |  +-- (address-assign)?
    |        |  |  +--:(number)
    |        |  |  |  +-- number-of-dynamic-address?   uint16
    |        |  |  +--:(explicit)
    |        |  |     +-- customer-addresses
    |        |  |        +-- address-pool* [pool-id]
    |        |  |           +-- pool-id?         string
    |        |  |           +-- start-address    inet:ipv6-address
    |        |  |           +-- end-address?     inet:ipv6-address
    |        |  +-- (provider-dhcp)?
    |        |  |  +--:(dhcp-service-type)
    |        |  |     +-- dhcp-service-type?           enumeration
    |        |  +-- (dhcp-relay)?
    |        |     +--:(customer-dhcp-servers)
    |        |        +-- customer-dhcp-servers
    |        |           +-- server-ip-address*   inet:ipv6-address
    |        +--:(static-addresses)
    |           +-- address* [address-id]
    |              +-- address-id?         string
    |              +-- customer-address?   inet:ipv6-address
    +-- routing-protocols
    |  +-- routing-protocol* [id]
    |     +-- id?                 string
    |     +-- type?               identityref
    |     +-- routing-profiles* [id]
    |     |  +-- id?     routing-profile-reference
    |     |  +-- type?   identityref
    |     +-- static
    |     |  +-- cascaded-lan-prefixes
    |     |     +-- ipv4-lan-prefixes* [lan next-hop]
    |     |     |       {vpn-common:ipv4}?
    |     |     |  +-- lan?        inet:ipv4-prefix
    |     |     |  +-- lan-tag?    string
    |     |     |  +-- next-hop?   union
    |     |     |  +-- metric?     uint32
    |     |     |  +-- status
    |     |     |     +-- admin-status
    |     |     |     |  +-- status?        identityref
    |     |     |     |  +-- last-change?   yang:date-and-time
    |     |     |     +--ro oper-status
    |     |     |        +--ro status?        identityref
    |     |     |        +--ro last-change?   yang:date-and-time
    |     |     +-- ipv6-lan-prefixes* [lan next-hop]
    |     |             {vpn-common:ipv6}?
    |     |        +-- lan?        inet:ipv6-prefix
    |     |        +-- lan-tag?    string
    |     |        +-- next-hop?   union
    |     |        +-- metric?     uint32
    |     |        +-- status
    |     |           +-- admin-status
    |     |           |  +-- status?        identityref
    |     |           |  +-- last-change?   yang:date-and-time
    |     |           +--ro oper-status
    |     |              +--ro status?        identityref
    |     |              +--ro last-change?   yang:date-and-time
    |     +-- bgp
    |     |  +-- peer-groups
    |     |  |  +-- peer-group* [name]
    |     |  |     +-- name?             string
    |     |  |     +--ro local-as?         inet:as-number
    |     |  |     +-- peer-as?          inet:as-number
    |     |  |     +-- address-family?   identityref
    |     |  |     +--ro local-address?    inet:ip-address
    |     |  |     +-- authentication
    |     |  |        +-- enable?            boolean
    |     |  |        +-- keying-material
    |     |  |           +-- (option)?
    |     |  |              +--:(ao)
    |     |  |              |  +-- enable-ao?          boolean
    |     |  |              |  +-- ao-keychain?
    |     |  |              |          key-chain:key-chain-ref
    |     |  |              +--:(md5)
    |     |  |              |  +-- md5-keychain?
    |     |  |              |          key-chain:key-chain-ref
    |     |  |              +--:(explicit)
    |     |  |                 +-- key-id?             uint32
    |     |  |                 +-- key?                string
    |     |  |                 +-- crypto-algorithm?   identityref
    |     |  +-- neighbor* [id]
    |     |     +-- id?               string
    |     |     +-- remote-address?   inet:ip-address
    |     |     +--ro local-address?    inet:ip-address
    |     |     +-- peer-group?
    |     |     |       -> ../../peer-groups/peer-group/name
    |     |     +--ro local-as?         inet:as-number
    |     |     +-- peer-as?          inet:as-number
    |     |     +-- address-family?   identityref
    |     |     +-- authentication
    |     |     |  +-- enable?            boolean
    |     |     |  +-- keying-material
    |     |     |     +-- (option)?
    |     |     |        +--:(ao)
    |     |     |        |  +-- enable-ao?          boolean
    |     |     |        |  +-- ao-keychain?
    |     |     |        |          key-chain:key-chain-ref
    |     |     |        +--:(md5)
    |     |     |        |  +-- md5-keychain?
    |     |     |        |          key-chain:key-chain-ref
    |     |     |        +--:(explicit)
    |     |     |           +-- key-id?             uint32
    |     |     |           +-- key?                string
    |     |     |           +-- crypto-algorithm?   identityref
    |     |     +-- status
    |     |        +-- admin-status
    |     |        |  +-- status?        identityref
    |     |        |  +-- last-change?   yang:date-and-time
    |     |        +--ro oper-status
    |     |           +--ro status?        identityref
    |     |           +--ro last-change?   yang:date-and-time
    |     +-- ospf
    |     |  +-- address-family?   identityref
    |     |  +-- area-id           yang:dotted-quad
    |     |  +-- metric?           uint16
    |     |  +-- authentication
    |     |  |  +-- enable?            boolean
    |     |  |  +-- keying-material
    |     |  |     +-- (option)?
    |     |  |        +--:(auth-key-chain)
    |     |  |        |  +-- key-chain?
    |     |  |        |          key-chain:key-chain-ref
    |     |  |        +--:(auth-key-explicit)
    |     |  |           +-- key-id?             uint32
    |     |  |           +-- key?                string
    |     |  |           +-- crypto-algorithm?   identityref
    |     |  +-- status
    |     |     +-- admin-status
    |     |     |  +-- status?        identityref
    |     |     |  +-- last-change?   yang:date-and-time
    |     |     +--ro oper-status
    |     |        +--ro status?        identityref
    |     |        +--ro last-change?   yang:date-and-time
    |     +-- isis
    |     |  +-- address-family?   identityref
    |     |  +-- area-address      area-address
    |     |  +-- authentication
    |     |  |  +-- enable?            boolean
    |     |  |  +-- keying-material
    |     |  |     +-- (option)?
    |     |  |        +--:(auth-key-chain)
    |     |  |        |  +-- key-chain?
    |     |  |        |          key-chain:key-chain-ref
    |     |  |        +--:(auth-key-explicit)
    |     |  |           +-- key-id?             uint32
    |     |  |           +-- key?                string
    |     |  |           +-- crypto-algorithm?   identityref
    |     |  +-- status
    |     |     +-- admin-status
    |     |     |  +-- status?        identityref
    |     |     |  +-- last-change?   yang:date-and-time
    |     |     +--ro oper-status
    |     |        +--ro status?        identityref
    |     |        +--ro last-change?   yang:date-and-time
    |     +-- rip
    |     |  +-- address-family?   identityref
    |     |  +-- authentication
    |     |  |  +-- enable?            boolean
    |     |  |  +-- keying-material
    |     |  |     +-- (option)?
    |     |  |        +--:(auth-key-chain)
    |     |  |        |  +-- key-chain?
    |     |  |        |          key-chain:key-chain-ref
    |     |  |        +--:(auth-key-explicit)
    |     |  |           +-- key?                string
    |     |  |           +-- crypto-algorithm?   identityref
    |     |  +-- status
    |     |     +-- admin-status
    |     |     |  +-- status?        identityref
    |     |     |  +-- last-change?   yang:date-and-time
    |     |     +--ro oper-status
    |     |        +--ro status?        identityref
    |     |        +--ro last-change?   yang:date-and-time
    |     +-- vrrp
    |        +-- address-family?   identityref
    |        +-- status
    |           +-- admin-status
    |           |  +-- status?        identityref
    |           |  +-- last-change?   yang:date-and-time
    |           +--ro oper-status
    |              +--ro status?        identityref
    |              +--ro last-change?   yang:date-and-time
    +-- oam
    |  +-- bfd {vpn-common:bfd}?
    |     +-- holdtime?   uint32
    |     +-- status
    |        +-- admin-status
    |        |  +-- status?        identityref
    |        |  +-- last-change?   yang:date-and-time
    |        +--ro oper-status
    |           +--ro status?        identityref
    |           +--ro last-change?   yang:date-and-time
    +-- security
       +-- encryption {vpn-common:encryption}?
       |  +-- enabled?   boolean
       |  +-- layer?     enumeration
       +-- encryption-profile
          +-- (profile)?
             +--:(provider-profile)
             |  +-- provider-profile?
             |          encryption-profile-reference
             +--:(customer-profile)
                +-- customer-key-chain?   key-chain:key-chain-ref
]]></artwork>
      </figure>
    </section>
    <section anchor="full-tree">
      <name>Full Tree of The "ietf-ac-svc" Module</name>
      <t>The full tree of the ACaaS module is shown in <xref target="d-svc-tree"/>.</t>
      <figure anchor="d-svc-tree">
        <name>Full Tree Structure of the ACaaS Module</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 attachment-circuits
     +--rw ac-group-profile* [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-as?         inet:as-number
     |  |     |  |     +--rw peer-as?          inet:as-number
     |  |     |  |     +--rw address-family?   identityref
     |  |     |  |     +--ro local-address?    inet:ip-address
     |  |     |  |     +--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 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?
     |           |          encryption-profile-reference
     |           +--:(customer-profile)
     |              +--rw customer-key-chain?
     |                      key-chain:key-chain-ref
     +--rw placement-constraints
     |  +--rw constraint* [constraint-type]
     |     +--rw constraint-type    identityref
     |     +--rw target
     |        +--rw (target-flavor)?
     |           +--:(id)
     |           |  +--rw group* [group-id]
     |           |     +--rw group-id    string
     |           +--:(all-accesses)
     |           |  +--rw all-other-accesses?   empty
     |           +--:(all-groups)
     |              +--rw all-other-groups?     empty
     +--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-group-profile*    ac-group-reference
        +--rw group* [group-id]
        |  +--rw group-id      string
        |  +--rw precedence?   identityref
        +--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-as?         inet:as-number
        |     |  |     +--rw peer-as?          inet:as-number
        |     |  |     +--rw address-family?   identityref
        |     |  |     +--ro local-address?    inet:ip-address
        |     |  |     +--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 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?
                 |          encryption-profile-reference
                 +--:(customer-profile)
                    +--rw customer-key-chain?
                            key-chain:key-chain-ref
]]></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 service models defined in this document.</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-bearer-svc:bearers": {
    "bearer": [
      {
        "id": "an-identifier",
        "description": "A bearer example",
        "customer-device": {
          "device-id": "CE_X_SITE_Y",
          "requested-type": "ietf-bearer-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-bearer-svc:bearers": {
    "bearer": [
      {
        "id": "an-identifier",
        "description": "A bearer example",
        "customer-device": {
          "device-id": "CE_X_SITE_Y",
          "requested-type": "ietf-bearer-svc:ethernet"
        },
        "bearer-reference": "line-156"
      }
    ]
  }
}
]]></artwork>
        </figure>
      </section>
      <section anchor="ac-bearer-exist">
        <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"/> or using other means (including, exchanged out-of-band or via proprietary APIs).</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="ac-no-bearer-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="sec-ex-one-ce-multi-acs">
        <name>One CE, Two ACs</name>
        <t>Lets consider the example of an eNodeB (CTP) 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="sec-ex-prec">
        <name>Control Precedence over Multiple ACs</name>
        <t>When multiple ACs are requested by the same customer (for the same site), the request can tag one of these ACes as "primary" and the other ones as "secondary". An example of such a request is shown in <xref target="ac-precedence"/>. In this example, both ACes are bound to the same "group-id", and the "precedence" data node is set as a function of the intended role of each AC (primary or secondary).</t>
        <figure anchor="ac-precedence">
          <name>Example of a Message Body to Associate a Precedence Level with ACes</name>
          <artwork><![CDATA[
{
  "ietf-ac-svc:attachment-circuits": {
    "ac": [
      {
        "name": "ac1",
        "description": "Example to illustrate AC precedence usage",
        "group": [
          {
            "group-id": "1",
            "precedence": "ietf-ac-common:primary"
          }
        ],
        "l2-connection": {
          "bearer-reference": "bearerX@site1"
        }
      },
      {
        "name": "ac2",
        "description": "Example to illustrate AC precedence usage",
        "group": [
          {
            "group-id": "1",
            "precedence": "ietf-ac-common:secondary"
          }
        ],
        "l2-connection": {
          "bearer-reference": "bearerY@site1"
        }
      }
    ]
  }
}
]]></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-group-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-group-profile": ["simple-profile"],
        "l2-connection": {
          "encapsulation": {
            "dot1q": {
              "cvlan-id": 1
            }
          }
        },
        "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-group-profile": ["simple-profile"],
        "l2-connection": {
          "encapsulation": {
            "dot1q": {
              "cvlan-id": 2
            }
          }
        },
        "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-group-profile": [
      {
        "id": "simple-node-profile",
        "l2-connection": {
          "encapsulation": {
            "type": "ietf-vpn-common:dot1q"
          }
        },
        "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-group-profile": ["simple-node-profile"],
        "l2-connection": {
          "encapsulation": {
            "dot1q": {
              "cvlan-id": 1
            }
          }
        }
      },
      {
        "name": "ac2",
        "description": "a second ac with a same peer node",
        "ac-group-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-group-profile": [
          "simple-node-profile"
        ],
        "l2-connection": {
          "encapsulation": {
            "dot1q": {
              "cvlan-id": 3
            }
          },
          "bearer-reference": "line-156"
        }
      }
    ]
  }
}
]]></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-group-profile": [
      {
        "id": "simple-profile",
        "l2-connection": {
          "encapsulation": {
            "type": "ietf-vpn-common:dot1q",
            "dot1q": {
              "cvlan-id": 1
            }
          }
        }
      }
    ],
    "ac": [
      {
        "name": "ac1",
        "description": "First site",
        "ac-group-profile": [
          "simple-profile"
        ],
        "l2-connection": {
          "bearer-reference": "ce1-network"
        }
      },
      {
        "name": "ac2",
        "description": "Second Site",
        "ac-group-profile": [
          "simple-profile"
        ],
        "l2-connection": {
          "bearer-reference": "ce1-network"
        }
      },
      {
        "name": "ac3",
        "description": "Third site",
        "ac-group-profile": [
          "simple-profile"
        ],
        "l2-connection": {
          "bearer-reference": "ce3-network"
        }
      },
      {
        "name": "ac4",
        "description": "Another site",
        "ac-group-profile": [
          "simple-profile"
        ],
        "l2-connection": {
          "bearer-reference": "ce4-network"
        }
      }
    ]
  }
}
]]></artwork>
        </figure>
      </section>
      <section anchor="sec-ex-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>First, <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:static-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 anchor="sec-ex-cloud">
        <name>Connecting a Virtualized Environment Running in a Cloud Provider</name>
        <t>This example (<xref target="cloud-provider-1"/>) shows how the AC service model can be used to connect a Cloud Infrastructure to a service provider network. This example makes the following assumptions:</t>
        <ol spacing="normal" type="1"><li>A customer (e.g., Mobile Network Team or partner) has a virtualized infrastructure running in a Cloud Provider. A simplistic deployment is represented here with a set of Virtual Machines running in a Virtual Private Environment. The deployment and management of this infrastructure is achieved via private APIs that are supported by the Cloud Provider: this realization is out of the scope of this document.</li>
          <li>The connectivity to the Data Center is achieved thanks to a service based on direct attachment (physical connection), which is delivered upon ordering via an API exposed by the Cloud Provider. When ordering that connection, a unique "Connection Identifier" is generated and returned via the API.</li>
          <li>The customer provisions the networking logic within the Cloud Provider based on that unique connection Identifier (i.e., logical interfaces, IP addressing, and routing).</li>
        </ol>
        <figure anchor="cloud-provider-1">
          <name>An Example of Realization for Connecting a Cloud Site</name>
          <artwork><![CDATA[
    .--------------------------------------------------------.
    |                                      Cloud Provider DC |
    |                                                        |
    |                                                        |
    |  ┌───┐ ┌───┐ ┌───┐                                     |
    |  │VM1│ │VM2│ │VM3│  Virtual Private Cloud              |
    |  └─┬─┘ └─┬─┘ └─┬─┘                                     |
    |    │.2   │.5   │.12      198.51.100.0/24               |
    |   ─┴─────┴─────┴───┬───────────────────────            |
    |                    │.1                                 |
    |                ┌───┴────┐                              |
    |                │ CLOUD  │ BGP_ASN: 65536               |
    |                │PROVIDER│ BGP md5:                     |
    |                │   GW   │   "nyxNER_c5sdn608fFQl3331d" |
    |                └───┬────┘                              |
    |                    │ ▲ .2                              |
    '--------------------│-│---------------------------------'
                         │ │
 Direct Interconnection  │ │
 connection_id:          │BGP       vlan-id:50
   1234-56789            │ │        192.0.2.0/24
                         │ │
                         │ │ .1
    .--------------------│-▼---------------------------------.
    |             If-A┌──┴──┐       Service Provider Network |
    |                 │     │                                |
    |                 │ PE1 │ BGP_ASN: 65550                 |
    |                 │     │                                |
    |                 └─────┘                                |
    |                                                        |
    |                                                        |
    |                                                        |
    |                                                        |
    '--------------------------------------------------------'
]]></artwork>
        </figure>
        <t><xref target="cloud-provider-2"/> illustrates the pre-provisioning logic for the physical connection to the Cloud Provider. After this connection is delivered to the service provider, the network inventory is updated with "bearer-reference" set to the value of the "Connection Identifier".</t>
        <figure anchor="cloud-provider-2">
          <name>Illustration of Pre-provisioning</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="288" width="584" viewBox="0 0 584 288" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <g class="text">
                  <text x="52" y="36">Customer</text>
                  <text x="544" y="36">Cloud</text>
                  <text x="56" y="52">Orchestration</text>
                  <text x="148" y="52">DIRECT</text>
                  <text x="240" y="52">INTERCONNECTION</text>
                  <text x="340" y="52">ORDERING</text>
                  <text x="400" y="52">(API)</text>
                  <text x="548" y="52">Provider</text>
                  <text x="312" y="68">──────────────────────────────────────────────►</text>
                  <text x="164" y="100">Connection</text>
                  <text x="240" y="100">Created</text>
                  <text x="292" y="100">with</text>
                  <text x="360" y="100">"Connection</text>
                  <text x="464" y="100">ID:1234-56789</text>
                  <text x="316" y="116">◄───────────────────────────────────────────────</text>
                  <text x="328" y="132">x</text>
                  <text x="328" y="148">x</text>
                  <text x="328" y="164">x</text>
                  <text x="328" y="180">x</text>
                  <text x="92" y="212">Physical</text>
                  <text x="172" y="212">Connection</text>
                  <text x="260" y="212">1234-56789</text>
                  <text x="316" y="212">is</text>
                  <text x="368" y="212">delivered</text>
                  <text x="424" y="212">and</text>
                  <text x="240" y="228">connected</text>
                  <text x="292" y="228">to</text>
                  <text x="320" y="228">PE1</text>
                  <text x="88" y="260">Network</text>
                  <text x="168" y="260">Inventory</text>
                  <text x="236" y="260">Upated</text>
                  <text x="288" y="260">with:</text>
                  <text x="144" y="276">bearer-reference:</text>
                  <text x="260" y="276">1234-56789</text>
                  <text x="320" y="276">for</text>
                  <text x="392" y="276">PE1/Interface</text>
                  <text x="468" y="276">If-A</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
  Customer                                                       Cloud
Orchestration  DIRECT INTERCONNECTION ORDERING (API)            Provider
               ──────────────────────────────────────────────►

               Connection Created with "Connection ID:1234-56789
               ◄───────────────────────────────────────────────
                                        x
                                        x
                                        x
                                        x

       Physical Connection 1234-56789 is delivered and
                         connected to PE1

       Network  Inventory Upated with:
         bearer-reference: 1234-56789 for PE1/Interface If-A
]]></artwork>
          </artset>
        </figure>
        <t>Next, API workflows can be initiated:</t>
        <ul spacing="normal">
          <li>Cloud Provider for the configuration as per (3) above.</li>
          <li>Service provider network via the Attachment Circuit model. This request can be used in conjunction with additional requests based on L3SM (VPN provisioning) or Network Slice Service model (5G hybrid Cloud deployment).</li>
        </ul>
        <t><xref target="cloud-provider-ac"/> shows the message body of the request to create the required ACs to connect the Cloud Provider Virtualized (VM) using the Attachment Circuit module. Note that this Cloud Provider mandates the use of MD5 authentication for establishing BGP connections.</t>
        <ul empty="true">
          <li>
            <t>The module supports MD5 to basically accommodate the installed BGP base (including by some Cloud Providers). Note that MD5 suffers from the security weaknesses discussed in Section 2 of <xref target="RFC6151"/> and Section 2.1 of <xref target="RFC6952"/>.</t>
          </li>
        </ul>
        <figure anchor="cloud-provider-ac">
          <name>Message Body of a Request to Create the ACs for Connecting to the Cloud Provider</name>
          <artwork><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

{
    "ietf-ac-svc:attachment-circuits": {
      "ac": [
        {
          "name": "ac--BXT-DC-customer-VPC-foo",
          "description": "Connection to Cloud Provider BXT on \
                                              connection 1234-56789",
          "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": 50
              }
            },
            "bearer-reference": "1243-56789"
          },
          "ip-connection": {
            "ipv4": {
              "local-address": "192.0.2.1",
              "prefix-length": 24,
              "address": [
                {
                  "address-id": "1",
                  "customer-address": "192.0.2.2"
                }
              ]
            }
          },
          "routing-protocols": {
            "routing-protocol": [
              {
                "id": "1",
                "type": "ietf-vpn-common:bgp-routing",
                "bgp": {
                  "neighbor": [
                    {
                      "id": "1",
                      "local-as": "65550",
                      "peer-as": "65536",
                      "authentication": {
                         "keying-material": "\
                                            nyxNER_c5sdn608fFQl3331d"
                      }
                    }
                  ]
                }
              }
            ]
          }
        }
      ]
    }
  }
]]></artwork>
        </figure>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TBC.</t>
    </section>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>
      <contact initials="V." surname="Lopez" fullname="Victor Lopez">
        <organization>Nokia</organization>
        <address>
          <email>victor.lopez@nokia.com</email>
        </address>
      </contact>
      <contact initials="I." surname="Bykov" fullname="Ivan Bykov">
        <organization>Ribbon Communications</organization>
        <address>
          <email>Ivan.Bykov@rbbn.com</email>
        </address>
      </contact>
      <contact initials="Q." surname="Wu" fullname="Qin Wu">
        <organization>Huawei</organization>
        <address>
          <email>bill.wu@huawei.com</email>
        </address>
      </contact>
    </section>
  </back>
  <!-- ##markdown-source:
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
TeJE7tRBT/UY90LDC1cTSp2eEvxRlkfvllkwH1Xv1W29XUz8oMPMxkps3Jq0
rxGyiw+yBD83R2wXccS9RVjnE9dqLtnxOCN3awvExM09oE+nC1OtNijN19ci
xrYitNN0h4+vqdOQmBM0ruHgUsssi1AEXssihHNid0UYoaUCMGfElh3BpSSV
wYeO+DDzkUm+Ugv5FjpTl5U6Ihnz2vcV5Nv+9i5b4kwhnq4I7taS3OkwtNoe
u+Uw7NzfMKxEDSkTGcQrGUcO3pCH21/JXZoFOzmvr+V6bAVXVBLgg3EwDUdz
kxMo7FbdlGQam2rkPCa+8GdhvEi45SlZSJEyFgP+opcT7j5s7+fQll+QroyE
cSs591kiziVyRkG9IujmzpdTB1zJHfxSOluo1gxJqXlIE7v9OX3dKd7KwkM+
HlJvdwp7m6s86Vi9XF8Se1pTjBZbprUgnTQyRdWQhNL0HHV2UKv2UgBmLQHA
wqzotIcvUqE9mKAqlEb9JPinPBVAihKuZcE/IpRc397PADQhFdaUgIz4Taey
XyVAnQd+UqHfpNyg0ivRcVjBUy9AbqHDk88DbYmbB3x7NaWTtYCMIUwrQ+G8
AELbOok9vg1VbPLG8zNivHoz3W82l1IVbJvLQJg88Wx0GpCfFmNyklE8DZLm
xkaFDLo0B/T/3AeddDElUQp2H5/AEkUxUPgP/uZtlU0lE/eG+Ww486NkGs/m
6VCXcEct6/S+Puy9HMi3W1XaDc9TvFB204FIn8RXUBzaMCB9KUaIhog2tI0D
aZmBETZYHEOPq9CFPdY4YIPDIyxB7HMPj9GRKwKyeKlEFWalSRrShBREOzfO
/QjoklITWZKbjh1AtZdg0JbCalAtozua7yTfogY46auVbaRf3jCoyi4iwW1F
szjhUz3sAlU4OjAL8sdN6iqcYcUwmQ+veNCyPvD0GUp8+vjBSFEadtlRv/Xv
7cGwvzc86m8Z3yFHUfbln0QBn/77vz59/Iv+85P55vu/p7kcyQuzrlKGoz7Z
twGxh/rAcHQHvaP+kHXbwzdH/d/q3cIMdG7Qp4/fKWX+1TUA3xV2xfixSzBq
4JV+6L6oO8fceulKRfk9OTUfP1LJP9K/P+T3Sb7+yWxozgerGKOmDa19/H+l
tdaLZWnS/uTRyN8O3sCg/U/+4P+t166bFfbaXnGegzd2AlG3JK9P3/+v1Vj7
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

-->

</rfc>
