<?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.25 (Ruby 3.1.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-boro-opsawg-ntw-attachment-circuit-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.16.0 -->
  <front>
    <title abbrev="A YANG Network Model for ACs">A Network YANG Data Model for Attachment Circuits</title>
    <seriesInfo name="Internet-Draft" value="draft-boro-opsawg-ntw-attachment-circuit-02"/>
    <author fullname="Mohamed Boucadair" role="editor">
      <organization>Orange</organization>
      <address>
        <email>mohamed.boucadair@orange.com</email>
      </address>
    </author>
    <author fullname="Richard Roberts">
      <organization>Juniper</organization>
      <address>
        <email>rroberts@juniper.net</email>
      </address>
    </author>
    <author fullname="Oscar Gonzalez de Dios">
      <organization>Telefonica</organization>
      <address>
        <email>oscar.gonzalezdedios@telefonica.com</email>
      </address>
    </author>
    <author fullname="Samier Barguil Giraldo">
      <organization>Nokia</organization>
      <address>
        <email>samier.barguil_giraldo@nokia.com</email>
      </address>
    </author>
    <author fullname="Bo Wu">
      <organization>Huawei Technologies</organization>
      <address>
        <email>lana.wubo@huawei.com</email>
      </address>
    </author>
    <date year="2023" month="March" day="09"/>
    <area>Operations and Management</area>
    <workgroup>Operations and Management Area Working Group</workgroup>
    <keyword>Slice Service</keyword>
    <keyword>L3VPN</keyword>
    <keyword>L2VPN</keyword>
    <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). A companion service model is specified in <xref target="I-D.boro-opsawg-teas-attachment-circuit"/>.</t>
      <t>The module augments the Service Attachment Point (SAP) model with the detailed information for the provisioning of attachment circuits in Provider Edges (PEs).</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Operations and Management Area Working Group Working Group mailing list (opsawg@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/opsawg/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/boucadair/network-attachment-circuits"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</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 (AC). For example, the same attachment circuit may be used to host multiple services (e.g., Layer 2 VPN, Slice Services, or Layer 3 VPN). In order to avoid service interference and redundant information in various locations, a service provider may expose an interface to manage attachment circuits network-wide. Customers can then request a base attachment circuit to be put in place, and then refer to that AC when requesting services to be bound to that AC. <xref target="I-D.boro-opsawg-teas-attachment-circuit"/> specifies a data model for managing attachment circuits as a service.</t>
      <t>This document specifies a network model for attachment circuits ("ietf-ac-ntw"). The model can be used for the provisioning of attachment circuits prior or during service provisioning (e.g., Network Slice Service).</t>
      <t>The document leverages <xref target="RFC9182"/> and <xref target="RFC9291"/> by adopting an AC provisioning structure that uses data nodes that are defined in these RFCs. Some refinements were introduced to cover, not only conventional service provider networks, but also specifics of other target deployments (cloud, for example).</t>
      <t>The AC network model is designed as an augmnetation to the Service Attachment Point (SAP) model <xref target="I-D.ietf-opsawg-sap"/>. An AC can be bound to a single or multiple SAPs. Likewise, the model is designed to accomdate deployments where a SAP can be bound to one or multiple ACs.</t>
      <figure anchor="sap-ac-ntw">
        <name>Attachment Circuits Examples</name>
        <artwork align="center"><![CDATA[
                    .---.
                    |CE6|
                    '-+-'
                   ac |        .---.                    .---.
                      |        |CE5+----------+---------+CE2|
               .------+-----.  '---'          |         '---'
               |            |                 |ac
               |            |                 |
             .-+-.       .-+-.              .-+-.
           .-+sap+-------+sap+-.          .-+sap+-------------.
           | '---'       '---' |          | '---'             |
.---.    .-+-.                 |          |                   |
|CE1+----+sap|      PE1        |          |         PE2       |
'---' ac '-+-'                 |          |                   |
           '-------------------'          '-------------------'

           .-------------------.          .-------------------.
           |                   |          |                 .-+-. ac .---.
           |         PE3       |          |        PE4      |sap+----+CE5|
           |                   |          |                 '---'    '---'
           |             .---. |          | .---. .---. .---. |
           '-------------+sap+-'          '-+sap+-+sap+-+sap+-'
                         '-+-'              '-+-' '-+-' '-+-'
                           |ac                |     |ac   |ac
                         .-+-.                |   .-+-.   |
                         |CE3+--------ac------'   |CE4+---'
                         '---'                    '---'
]]></artwork>
      </figure>
      <t>The AC network model uses the AC common model defined in <xref target="I-D.boro-opsawg-teas-common-ac"/>.</t>
      <t>The YANG data model in this document conforms to the Network Management Datastore Architecture (NMDA) defined in <xref target="RFC8342"/>.</t>
    </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 reader should be familiar with the terms defined in <xref section="2" sectionFormat="of" target="I-D.ietf-opsawg-sap"/>.</t>
      <t>This document uses the term "network model" as defined in <xref section="2.1" sectionFormat="of" target="RFC8969"/>.</t>
      <t>The meanings of the symbols in the YANG tree diagrams are defined in <xref target="RFC8340"/>.</t>
      <t>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>
        <dt>Customer Terminating Point (CTP):</dt>
        <dd>
          <t>Refers to a customer-owned endpoint that terminates an attachment circuit. Such an endpoint can be a Customer Edge (CE), a Network Function (NF), a peer ASBR, etc.</t>
        </dd>
      </dl>
    </section>
    <section anchor="sample-uses-of-the-attachment-circuit-data-models">
      <name>Sample Uses of the Attachment Circuit Data Models</name>
      <t><xref target="_u-ex"/> shows the positioning of the AC network model in the overall service delivery process.</t>
      <figure anchor="_u-ex">
        <name>An Example of the Network AC Model Usage</name>
        <artwork align="center"><![CDATA[
                          +---------------+
                          |   Customer    |
                          +-------+-------+
          Customer Service Model  |
        e.g., slice-svc, ac-svc   |
                          +-------+-------+
                          |    Service    |
                          | Orchestration |
                          +-------+-------+
           Network Model          |
     e.g., l3vpn-ntw, sap, ac-ntw |
                          +-------+-------+
                          |   Network     |
                          | Orchestration |
                          +-------+-------+
    Network Configuration Model   |
                      +-----------+-----------+
                      |                       |
             +--------+------+       +--------+------+
             |    Domain     |       |     Domain    |
             | Orchestration |       | Orchestration |
             +---+-----------+       +--------+------+
  Device         |        |                   |
  Configuration  |        |                   |
  Model          |        |                   |
            +----+----+   |                   |
            | Config  |   |                   |
            | Manager |   |                   |
            +----+----+   |                   |
                 |        |                   |
                 | NETCONF/CLI..................
                 |        |                   |
               +--------------------------------+
 +----+ Bearer |                                | Bearer +----+
 |CTP +--------+            Network             +--------+ CTP|
 +----+        |                                |        +----+
               +--------------------------------+
  Site A                                                  Site B
]]></artwork>
      </figure>
    </section>
    <section anchor="description-of-the-attachment-circuit-yang-module">
      <name>Description of the Attachment Circuit YANG Module</name>
      <section anchor="overall-structure-of-the-module">
        <name>Overall Structure of the Module</name>
        <t>The overall tree structure of the module is shown in <xref target="o-ntw-tree"/>. A node can host one or more SAPs as per <xref target="I-D.ietf-opsawg-sap"/>. Each SAP terminate one or multiple ACs. The SAP model in <xref target="I-D.ietf-opsawg-sap"/> is thus augmented with required AC-related information. Also, in order to ease the correlation between the AC exposed at the service layer and the one that is actually provisioned in the network operation, a reference to the AC exposed to the customer  ('ac-ref') is stored in the 'ac-ntw' module.</t>
        <t>Unlike the AC service model, an AC is uniquely identified within the scope of a node, not a network. An AC can be characterized using Layer 2 connectivity, Layer 3 connectivity, routing protocols, OAM, and security considerations. In order to factorize a set of data that is provisioned for a set of ACs, a set of profiles can be defined at the network level, and then called under the node level. The information contained in the profile are thus inherited, unless the corresponding data node is refined at the AC level. In such as case, the value provided at the AC level takes precedence over the global one.</t>
        <figure anchor="o-ntw-tree">
          <name>Overall Tree Structure</name>
          <artwork><![CDATA[
  augment /nw:networks/nw:network:
    +--rw ac-profile* [name]
       ...
  augment /nw:networks/nw:network/nw:node/sap:service/sap:sap:
    +--rw ac* [name]
       +--rw name                 string
       +--rw ac-ref?              ac-svc:attachment-circuit-reference
       +--rw ac-profile* [profile-id]
       |  +--rw profile-id    -> /nw:networks/network/ac-profile/name
       +--rw peer-sap-id*         string
       +--rw group* [group-id]
       |  +--rw group-id      string
       |  +--rw precedence?   identityref
       +--rw status
       |  +--rw admin-status
       |  |  +--rw status?        identityref
       |  |  +--rw last-change?   yang:date-and-time
       |  +--ro oper-status
       |     +--ro status?        identityref
       |     +--ro last-change?   yang:date-and-time
       +--rw description?         string
       +--rw l2-connection
       |  ...
       +--rw ip-connection
       |  ...
       +--rw routing-protocols
       |  ...
       +--rw oam
       |  ...
       +--rw security
          ...
]]></artwork>
        </figure>
        <t>The full tree of the 'ac-ntw' is provided in <xref target="AC-Ntw-Tree"/>.</t>
      </section>
      <section anchor="l2-connection">
        <name>L2 Connection</name>
        <t>The  Layer 2 connection tree structure is shown in <xref target="l2-tree"/>.</t>
        <figure anchor="l2-tree">
          <name>Layer 2 Connection Tree Structure</name>
          <artwork><![CDATA[
  augment /nw:networks/nw:network/nw:node/sap:service/sap:sap:
    +--rw ac* [name]
       +--rw name                 string
       +--rw ac-ref?              ac-svc:attachment-circuit-reference
       +--rw ac-profile* [profile-id]
       |  +--rw profile-id    -> /nw:networks/network/ac-profile/name
       +--rw description?         string
       +--rw l2-connection
       |  +--rw encapsulation
       |  |  +--rw encap-type?        identityref
       |  |  +--rw dot1q
       |  |  |  +--rw tag-type?         identityref
       |  |  |  +--rw cvlan-id?         uint16
       |  |  |  +--rw tag-operations
       |  |  |     +--rw (op-choice)?
       |  |  |     |  +--:(pop)
       |  |  |     |  |  +--rw pop?         empty
       |  |  |     |  +--:(push)
       |  |  |     |  |  +--rw push?        empty
       |  |  |     |  +--:(translate)
       |  |  |     |     +--rw translate?   empty
       |  |  |     +--rw tag-1?             dot1q-types:vlanid
       |  |  |     +--rw tag-1-type?
       |  |  |     |       dot1q-types:dot1q-tag-type
       |  |  |     +--rw tag-2?             dot1q-types:vlanid
       |  |  |     +--rw tag-2-type?
       |  |  |             dot1q-types:dot1q-tag-type
       |  |  +--rw priority-tagged
       |  |  |  +--rw tag-type?   identityref
       |  |  +--rw qinq
       |  |     +--rw tag-type?         identityref
       |  |     +--rw svlan-id          uint16
       |  |     +--rw cvlan-id          uint16
       |  |     +--rw tag-operations
       |  |        +--rw (op-choice)?
       |  |        |  +--:(pop)
       |  |        |  |  +--rw pop?         uint8
       |  |        |  +--:(push)
       |  |        |  |  +--rw push?        empty
       |  |        |  +--:(translate)
       |  |        |     +--rw translate?   uint8
       |  |        +--rw tag-1?             dot1q-types:vlanid
       |  |        +--rw tag-1-type?
       |  |        |       dot1q-types:dot1q-tag-type
       |  |        +--rw tag-2?             dot1q-types:vlanid
       |  |        +--rw tag-2-type?
       |  |                dot1q-types:dot1q-tag-type
       |  +--rw (l2-service)?
       |  |  +--:(l2-tunnel-service)
       |  |  |  +--rw l2-tunnel-service
       |  |  |     +--rw type?         identityref
       |  |  |     +--rw pseudowire
       |  |  |     |  +--rw vcid?      uint32
       |  |  |     |  +--rw far-end?   union
       |  |  |     +--rw vpls
       |  |  |     |  +--rw vcid?      uint32
       |  |  |     |  +--rw far-end*   union
       |  |  |     +--rw vxlan
       |  |  |        +--rw vni-id             uint32
       |  |  |        +--rw peer-mode?         identityref
       |  |  |        +--rw peer-ip-address*   inet:ip-address
       |  |  +--:(l2vpn)
       |  |     +--rw l2vpn-id?            vpn-common:vpn-id
       |  +--rw l2-termination-point?      string
       |  +--rw local-bridge-reference?    string
       |  +--rw bearer-reference?          string
       |  |       {vpn-common:bearer-reference}?
       |  +--rw lag-interface {vpn-common:lag-interface}?
       |     +--rw lag-interface-id?   string
       |     +--rw member-link-list
       |        +--rw member-link* [name]
       |           +--rw name    string
       +--rw ip-connection
       |  ...
       +--rw routing-protocols
       |  ...
       +--rw oam
       |  ...
       +--rw security
          ...
]]></artwork>
        </figure>
      </section>
      <section anchor="ip-connection">
        <name>IP Connection</name>
        <t>The  Layer 3 connection tree structure is shown in <xref target="l3-tree"/>.</t>
        <figure anchor="l3-tree">
          <name>IP Connection Tree Structure</name>
          <artwork><![CDATA[
  augment /nw:networks/nw:network/nw:node/sap:service/sap:sap:
    +--rw ac* [name]
       +--rw name                 string
       +--rw ac-ref?              ac-svc:attachment-circuit-reference
       +--rw ac-profile* [profile-id]
       |  +--rw profile-id    -> /nw:networks/network/ac-profile/name
       +--rw description?         string
       +--rw l2-connection
       |  ...
       +--rw ip-connection
       |  +--rw l3-termination-point?   string
       |  +--rw ipv4 {vpn-common:ipv4}?
       |  |  +--rw local-address?
       |  |  |       inet:ipv4-address
       |  |  +--rw prefix-length?                           uint8
       |  |  +--rw address-allocation-type?
       |  |  |       identityref
       |  |  +--rw (allocation-type)?
       |  |     +--:(dynamic)
       |  |     |  +--rw (address-assign)?
       |  |     |  |  +--:(number)
       |  |     |  |  |  +--rw number-of-dynamic-address?   uint16
       |  |     |  |  +--:(explicit)
       |  |     |  |     +--rw customer-addresses
       |  |     |  |        +--rw address-pool* [pool-id]
       |  |     |  |           +--rw pool-id          string
       |  |     |  |           +--rw start-address
       |  |     |  |           |       inet:ipv4-address
       |  |     |  |           +--rw end-address?
       |  |     |  |                   inet:ipv4-address
       |  |     |  +--rw (provider-dhcp)?
       |  |     |  |  +--:(dhcp-service-type)
       |  |     |  |  |  +--rw dhcp-service-type?
       |  |     |  |  |          enumeration
       |  |     |  |  +--:(service-type)
       |  |     |  |     +--rw (service-type)?
       |  |     |  |        +--:(relay)
       |  |     |  |           +--rw server-ip-address*
       |  |     |  |                   inet:ipv4-address
       |  |     |  +--rw (dhcp-relay)?
       |  |     |     +--:(customer-dhcp-servers)
       |  |     |        +--rw customer-dhcp-servers
       |  |     |           +--rw server-ip-address*
       |  |     |                   inet:ipv4-address
       |  |     +--:(static-addresses)
       |  |        +--rw address* [address-id]
       |  |           +--rw address-id          string
       |  |           +--rw customer-address?   inet:ipv4-address
       |  +--rw ipv6 {vpn-common:ipv6}?
       |     +--rw local-address?
       |     |       inet:ipv6-address
       |     +--rw prefix-length?                           uint8
       |     +--rw address-allocation-type?
       |     |       identityref
       |     +--rw (allocation-type)?
       |        +--:(dynamic)
       |        |  +--rw (address-assign)?
       |        |  |  +--:(number)
       |        |  |  |  +--rw number-of-dynamic-address?   uint16
       |        |  |  +--:(explicit)
       |        |  |     +--rw customer-addresses
       |        |  |        +--rw address-pool* [pool-id]
       |        |  |           +--rw pool-id          string
       |        |  |           +--rw start-address
       |        |  |           |       inet:ipv6-address
       |        |  |           +--rw end-address?
       |        |  |                   inet:ipv6-address
       |        |  +--rw (provider-dhcp)?
       |        |  |  +--:(dhcp-service-type)
       |        |  |  |  +--rw dhcp-service-type?
       |        |  |  |          enumeration
       |        |  |  +--:(service-type)
       |        |  |     +--rw (service-type)?
       |        |  |        +--:(relay)
       |        |  |           +--rw server-ip-address*
       |        |  |                   inet:ipv6-address
       |        |  +--rw (dhcp-relay)?
       |        |     +--:(customer-dhcp-servers)
       |        |        +--rw customer-dhcp-servers
       |        |           +--rw server-ip-address*
       |        |                   inet:ipv6-address
       |        +--:(static-addresses)
       |           +--rw address* [address-id]
       |              +--rw address-id          string
       |              +--rw customer-address?   inet:ipv6-address
       +--rw routing-protocols
       |  ...
       +--rw oam
       |  ...
       +--rw security
          ...
]]></artwork>
        </figure>
      </section>
      <section anchor="routing">
        <name>Routing</name>
        <t>The routing tree structure is shown in <xref target="rtg-tree"/>.</t>
        <figure anchor="rtg-tree">
          <name>Rotuing Tree Structure</name>
          <artwork><![CDATA[
module: ietf-ac-ntw
  augment /nw:networks/nw:network:
    +--rw ac-profile* [name]
       +--rw name                 string
       +--rw l2-connection
       +--rw ip-connection
       +--rw routing-protocols
       |  +--rw routing-protocol* [id]
       |     +--rw id      string
       |     +--rw type?   identityref
       |     +--rw bgp
       |     |  +--rw description?              string
       |     |  +--rw local-as?                 inet:as-number
       |     |  +--rw peer-as                   inet:as-number
       |     |  +--rw address-family?           identityref
       |     |  +--rw multihop?                 uint8
       |     |  +--rw as-override?              boolean
       |     |  +--rw allow-own-as?             uint8
       |     |  +--rw prepend-global-as?        boolean
       |     |  +--rw send-default-route?       boolean
       |     |  +--rw site-of-origin?           rt-types:route-origin
       |     |  +--rw ipv6-site-of-origin?
       |     |  |       rt-types:ipv6-route-origin
       |     |  +--rw redistribute-connected* [address-family]
       |     |  |  +--rw address-family    identityref
       |     |  |  +--rw enable?           boolean
       |     |  +--rw bgp-max-prefix
       |     |  |  +--rw max-prefix?          uint32
       |     |  |  +--rw warning-threshold?   decimal64
       |     |  |  +--rw violate-action?      enumeration
       |     |  |  +--rw restart-timer?       uint32
       |     |  +--rw bgp-timers
       |     |     +--rw keepalive?   uint16
       |     |     +--rw hold-time?   uint16
       |     +--rw ospf
       |     |  +--rw address-family?   identityref
       |     |  +--rw area-id           yang:dotted-quad
       |     |  +--rw metric?           uint16
       |     |  +--rw max-lsa?          uint32
       |     +--rw isis
       |     |  +--rw address-family?   identityref
       |     |  +--rw area-address      area-address
       |     |  +--rw level?            identityref
       |     |  +--rw metric?           uint16
       |     |  +--rw mode?             enumeration
       |     +--rw rip
       |     |  +--rw address-family?   identityref
       |     |  +--rw timers
       |     |  |  +--rw update-interval?     uint16
       |     |  |  +--rw invalid-interval?    uint16
       |     |  |  +--rw holddown-interval?   uint16
       |     |  |  +--rw flush-interval?      uint16
       |     |  +--rw default-metric?   uint8
       |     +--rw vrrp
       |        +--rw address-family?   identityref
       |        +--rw ping-reply?       boolean
       +--rw oam
          ...
  augment /nw:networks/nw:network/nw:node/sap:service/sap:sap:
    +--rw ac* [name]
       +--rw name                 string
       +--rw ac-ref?              ac-svc:attachment-circuit-reference
       +--rw ac-profile* [profile-id]
       |  +--rw profile-id    -> /nw:networks/network/ac-profile/name
       +--rw description?         string
       +--rw l2-connection
       |  ...
       +--rw ip-connection
       |  ...
       +--rw routing-protocols
       |  +--rw routing-protocol* [id]
       |     +--rw id                  string
       |     +--rw type?               identityref
       |     +--rw routing-profiles* [id]
       |     |  +--rw id      leafref
       |     |  +--rw type?   identityref
       |     +--rw static
       |     |  +--rw cascaded-lan-prefixes
       |     |     +--rw ipv4-lan-prefixes* [lan next-hop]
       |     |     |       {vpn-common:ipv4}?
       |     |     |  +--rw lan           inet:ipv4-prefix
       |     |     |  +--rw lan-tag?      string
       |     |     |  +--rw next-hop      union
       |     |     |  +--rw metric?       uint32
       |     |     |  +--rw bfd-enable?   boolean {vpn-common:bfd}?
       |     |     |  +--rw preference?   uint32
       |     |     |  +--rw status
       |     |     |     +--rw admin-status
       |     |     |     |  +--rw status?        identityref
       |     |     |     |  +--rw last-change?   yang:date-and-time
       |     |     |     +--ro oper-status
       |     |     |        +--ro status?        identityref
       |     |     |        +--ro last-change?   yang:date-and-time
       |     |     +--rw ipv6-lan-prefixes* [lan next-hop]
       |     |             {vpn-common:ipv6}?
       |     |        +--rw lan           inet:ipv4-prefix
       |     |        +--rw lan-tag?      string
       |     |        +--rw next-hop      union
       |     |        +--rw metric?       uint32
       |     |        +--rw bfd-enable?   boolean {vpn-common:bfd}?
       |     |        +--rw preference?   uint32
       |     |        +--rw status
       |     |           +--rw admin-status
       |     |           |  +--rw status?        identityref
       |     |           |  +--rw last-change?   yang:date-and-time
       |     |           +--ro oper-status
       |     |              +--ro status?        identityref
       |     |              +--ro last-change?   yang:date-and-time
       |     +--rw bgp
       |     |  +--rw peer-groups
       |     |  |  +--rw peer-group* [name]
       |     |  |     +--rw name                      string
       |     |  |     +--rw local-address?            union
       |     |  |     +--rw description?              string
       |     |  |     +--rw local-as?                 inet:as-number
       |     |  |     +--rw peer-as                   inet:as-number
       |     |  |     +--rw address-family?           identityref
       |     |  |     +--rw multihop?                 uint8
       |     |  |     +--rw as-override?              boolean
       |     |  |     +--rw allow-own-as?             uint8
       |     |  |     +--rw prepend-global-as?        boolean
       |     |  |     +--rw send-default-route?       boolean
       |     |  |     +--rw site-of-origin?
       |     |  |     |       rt-types:route-origin
       |     |  |     +--rw ipv6-site-of-origin?
       |     |  |     |       rt-types:ipv6-route-origin
       |     |  |     +--rw redistribute-connected* [address-family]
       |     |  |     |  +--rw address-family    identityref
       |     |  |     |  +--rw enable?           boolean
       |     |  |     +--rw bgp-max-prefix
       |     |  |     |  +--rw max-prefix?          uint32
       |     |  |     |  +--rw warning-threshold?   decimal64
       |     |  |     |  +--rw violate-action?      enumeration
       |     |  |     |  +--rw restart-timer?       uint32
       |     |  |     +--rw bgp-timers
       |     |  |     |  +--rw keepalive?   uint16
       |     |  |     |  +--rw hold-time?   uint16
       |     |  |     +--rw authentication
       |     |  |        +--rw enable?            boolean
       |     |  |        +--rw keying-material
       |     |  |           +--rw (option)?
       |     |  |              +--:(ao)
       |     |  |              |  +--rw enable-ao?          boolean
       |     |  |              |  +--rw ao-keychain?
       |     |  |              |          key-chain:key-chain-ref
       |     |  |              +--:(md5)
       |     |  |              |  +--rw md5-keychain?
       |     |  |              |          key-chain:key-chain-ref
       |     |  |              +--:(explicit)
       |     |  |                 +--rw key-id?             uint32
       |     |  |                 +--rw key?                string
       |     |  |                 +--rw crypto-algorithm?
       |     |  |                         identityref
       |     |  +--rw neighbor* [remote-address]
       |     |     +--rw remote-address            inet:ip-address
       |     |     +--rw local-address?            union
       |     |     +--rw peer-group?
       |     |     |       -> ../../peer-groups/peer-group/name
       |     |     +--rw description?              string
       |     |     +--rw local-as?                 inet:as-number
       |     |     +--rw peer-as                   inet:as-number
       |     |     +--rw address-family?           identityref
       |     |     +--rw multihop?                 uint8
       |     |     +--rw as-override?              boolean
       |     |     +--rw allow-own-as?             uint8
       |     |     +--rw prepend-global-as?        boolean
       |     |     +--rw send-default-route?       boolean
       |     |     +--rw site-of-origin?
       |     |     |       rt-types:route-origin
       |     |     +--rw ipv6-site-of-origin?
       |     |     |       rt-types:ipv6-route-origin
       |     |     +--rw redistribute-connected* [address-family]
       |     |     |  +--rw address-family    identityref
       |     |     |  +--rw enable?           boolean
       |     |     +--rw bgp-max-prefix
       |     |     |  +--rw max-prefix?          uint32
       |     |     |  +--rw warning-threshold?   decimal64
       |     |     |  +--rw violate-action?      enumeration
       |     |     |  +--rw restart-timer?       uint32
       |     |     +--rw bgp-timers
       |     |     |  +--rw keepalive?   uint16
       |     |     |  +--rw hold-time?   uint16
       |     |     +--rw authentication
       |     |     |  +--rw enable?            boolean
       |     |     |  +--rw keying-material
       |     |     |     +--rw (option)?
       |     |     |        +--:(ao)
       |     |     |        |  +--rw enable-ao?          boolean
       |     |     |        |  +--rw ao-keychain?
       |     |     |        |          key-chain:key-chain-ref
       |     |     |        +--:(md5)
       |     |     |        |  +--rw md5-keychain?
       |     |     |        |          key-chain:key-chain-ref
       |     |     |        +--:(explicit)
       |     |     |           +--rw key-id?             uint32
       |     |     |           +--rw key?                string
       |     |     |           +--rw crypto-algorithm?   identityref
       |     |     +--rw status
       |     |        +--rw admin-status
       |     |        |  +--rw status?        identityref
       |     |        |  +--rw last-change?   yang:date-and-time
       |     |        +--ro oper-status
       |     |           +--ro status?        identityref
       |     |           +--ro last-change?   yang:date-and-time
       |     +--rw ospf
       |     |  +--rw address-family?   identityref
       |     |  +--rw area-id           yang:dotted-quad
       |     |  +--rw metric?           uint16
       |     |  +--rw sham-links {vpn-common:rtg-ospf-sham-link}?
       |     |  |  +--rw sham-link* [target-site]
       |     |  |     +--rw target-site    string
       |     |  |     +--rw metric?        uint16
       |     |  +--rw max-lsa?          uint32
       |     |  +--rw authentication
       |     |  |  +--rw enable?            boolean
       |     |  |  +--rw keying-material
       |     |  |     +--rw (option)?
       |     |  |        +--:(auth-key-chain)
       |     |  |        |  +--rw key-chain?
       |     |  |        |          key-chain:key-chain-ref
       |     |  |        +--:(auth-key-explicit)
       |     |  |           +--rw key-id?             uint32
       |     |  |           +--rw key?                string
       |     |  |           +--rw crypto-algorithm?   identityref
       |     |  +--rw status
       |     |     +--rw admin-status
       |     |     |  +--rw status?        identityref
       |     |     |  +--rw last-change?   yang:date-and-time
       |     |     +--ro oper-status
       |     |        +--ro status?        identityref
       |     |        +--ro last-change?   yang:date-and-time
       |     +--rw isis
       |     |  +--rw address-family?   identityref
       |     |  +--rw area-address      area-address
       |     |  +--rw level?            identityref
       |     |  +--rw metric?           uint16
       |     |  +--rw mode?             enumeration
       |     |  +--rw authentication
       |     |  |  +--rw enable?            boolean
       |     |  |  +--rw keying-material
       |     |  |     +--rw (option)?
       |     |  |        +--:(auth-key-chain)
       |     |  |        |  +--rw key-chain?
       |     |  |        |          key-chain:key-chain-ref
       |     |  |        +--:(auth-key-explicit)
       |     |  |           +--rw key-id?             uint32
       |     |  |           +--rw key?                string
       |     |  |           +--rw crypto-algorithm?   identityref
       |     |  +--rw status
       |     |     +--rw admin-status
       |     |     |  +--rw status?        identityref
       |     |     |  +--rw last-change?   yang:date-and-time
       |     |     +--ro oper-status
       |     |        +--ro status?        identityref
       |     |        +--ro last-change?   yang:date-and-time
       |     +--rw rip
       |     |  +--rw address-family?   identityref
       |     |  +--rw timers
       |     |  |  +--rw update-interval?     uint16
       |     |  |  +--rw invalid-interval?    uint16
       |     |  |  +--rw holddown-interval?   uint16
       |     |  |  +--rw flush-interval?      uint16
       |     |  +--rw default-metric?   uint8
       |     |  +--rw authentication
       |     |  |  +--rw enable?            boolean
       |     |  |  +--rw keying-material
       |     |  |     +--rw (option)?
       |     |  |        +--:(auth-key-chain)
       |     |  |        |  +--rw key-chain?
       |     |  |        |          key-chain:key-chain-ref
       |     |  |        +--:(auth-key-explicit)
       |     |  |           +--rw key?                string
       |     |  |           +--rw crypto-algorithm?   identityref
       |     |  +--rw status
       |     |     +--rw admin-status
       |     |     |  +--rw status?        identityref
       |     |     |  +--rw last-change?   yang:date-and-time
       |     |     +--ro oper-status
       |     |        +--ro status?        identityref
       |     |        +--ro last-change?   yang:date-and-time
       |     +--rw vrrp
       |        +--rw address-family?       identityref
       |        +--rw vrrp-group?           uint8
       |        +--rw backup-peer?          inet:ip-address
       |        +--rw virtual-ip-address*   inet:ip-address
       |        +--rw priority?             uint8
       |        +--rw ping-reply?           boolean
       |        +--rw status
       |           +--rw admin-status
       |           |  +--rw status?        identityref
       |           |  +--rw last-change?   yang:date-and-time
       |           +--ro oper-status
       |              +--ro status?        identityref
       |              +--ro last-change?   yang:date-and-time
       +--rw oam
       |  ...
       +--rw security
          ...
]]></artwork>
        </figure>
      </section>
      <section anchor="oam">
        <name>OAM</name>
        <t>The OAM tree structure is shown in <xref target="oam-tree"/>.</t>
        <figure anchor="oam-tree">
          <name>OAM Tree Structure</name>
          <artwork><![CDATA[
  augment /nw:networks/nw:network:
    +--rw ac-profile* [name]
       +--rw name                 string
       +--rw l2-connection
       +--rw ip-connection
       +--rw routing-protocols
       |  ...
       +--rw oam
          +--rw bfd {vpn-common:bfd}?
             +--rw session-type?               identityref
             +--rw desired-min-tx-interval?    uint32
             +--rw required-min-rx-interval?   uint32
             +--rw local-multiplier?           uint8
             +--rw holdtime?                   uint32
  augment /nw:networks/nw:network/nw:node/sap:service/sap:sap:
    +--rw ac* [name]
       +--rw name                 string
       +--rw ac-ref?              ac-svc:attachment-circuit-reference
       +--rw ac-profile* [profile-id]
       |  +--rw profile-id    -> /nw:networks/network/ac-profile/name
       +--rw description?         string
       +--rw l2-connection
       |  ...
       +--rw ip-connection
       |  ...
       +--rw routing-protocols
       |  ...
       +--rw oam
       |  +--rw bfd
       |     +--rw profile?                    ac-svc:bfd-profile-reference
       |     +--rw session-type?               identityref
       |     +--rw desired-min-tx-interval?    uint32
       |     +--rw required-min-rx-interval?   uint32
       |     +--rw local-multiplier?           uint8
       |     +--rw holdtime?                   uint32
       |     +--rw authentication!
       |     |  +--rw key-chain?    key-chain:key-chain-ref
       |     |  +--rw meticulous?   boolean
       |     +--rw status
       |        +--rw admin-status
       |        |  +--rw status?        identityref
       |        |  +--rw last-change?   yang:date-and-time
       |        +--ro oper-status
       |           +--ro status?        identityref
       |           +--ro last-change?   yang:date-and-time
       +--rw security
          ...
]]></artwork>
        </figure>
      </section>
      <section anchor="security">
        <name>Security</name>
        <t>The security tree structure is shown in <xref target="sec-tree"/>.</t>
        <figure anchor="sec-tree">
          <name>Security Tree Structure</name>
          <artwork><![CDATA[
  augment /nw:networks/nw:network/nw:node/sap:service/sap:sap:
    +--rw ac* [name]
       +--rw name                 string
       +--rw ac-ref?              ac-svc:attachment-circuit-reference
       +--rw ac-profile* [profile-id]
       |  +--rw profile-id    -> /nw:networks/network/ac-profile/name
       +--rw description?         string
       +--rw l2-connection
       |  ...
       +--rw ip-connection
       |  ...
       +--rw routing-protocols
       |  ...
       +--rw oam
       |  ...
       +--rw security
          +--rw encryption {vpn-common:encryption}?
          |  +--rw enabled?   boolean
          |  +--rw layer?     enumeration
          +--rw encryption-profile
             +--rw (profile)?
                +--:(provider-profile)
                |  +--rw profile-name?         leafref
                +--:(customer-profile)
                   +--rw customer-key-chain?
                           key-chain:key-chain-ref
]]></artwork>
        </figure>
      </section>
    </section>
    <section anchor="yang-module">
      <name>YANG Module</name>
      <t>This module uses types defined in <xref target="RFC6991"/>, <xref target="RFC8177"/>, <xref target="RFC8294"/>, <xref target="RFC8343"/>, <xref target="RFC9181"/>, <xref target="I-D.boro-opsawg-teas-common-ac"/>, and IEEE Std 802.1Qcp.</t>
      <sourcecode markers="true" name="ietf-ac-ntw@2022-11-30.yang"><![CDATA[
module ietf-ac-ntw {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-ac-ntw";
  prefix ac-ntw;

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

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

     Editor:   Mohamed Boucadair
               <mailto:mohamed.boucadair@orange.com>
     Author:   Richard Roberts
               <mailto:rroberts@juniper.net>";
  description
    "This YANG module defines a YANG model for the management of
     attachment circuits.

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

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

     This version of this YANG module is part of RFC 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";
  }

  // L2 conenction

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

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

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

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

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

  // IPv4 connection

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

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

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

  grouping ipv6-connection {
    description
      "IPv6-specific parameters.";
    leaf local-address {
      type inet:ipv6-address;
      description
        "IPv6 address of the provider side.";
    }
    uses ac-common:ipv6-allocation-type;
    choice allocation-type {
      description
        "Choice of the IPv6 address allocation.";
      case dynamic {
        description
          "When the addresses are allocated by DHCP or other
           dynamic means local to the infrastructure.";
        choice address-assign {
          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 service-type {
            description
              "Choice based on the DHCP service type.";
            case relay {
              description
                "Container for a list of the provider's DHCP servers
                 (i.e., 'dhcp-service-type' is set to 'relay').";
              leaf-list server-ip-address {
                type inet:ipv6-address;
                description
                  "IPv6 addresses of the provider's DHCP server, for
                   use by the local DHCP relay.";
              }
            }
          }
        }
        choice dhcp-relay {
          description
            "The DHCP relay is provided by the operator.";
          container customer-dhcp-servers {
            description
              "Container for a list of the customer's DHCP servers.";
            leaf-list server-ip-address {
              type inet:ipv6-address;
              description
                "IPv6 addresses of the customer's DHCP server.";
            }
          }
        }
      }
      case static-addresses {
        description
          "Lists the IPv4 addresses that are used.";
        list address {
          key "address-id";
          ordered-by user;
          description
            "Lists the IPv6 addresses that are used. The first 
             address of the list is the primary address of 
             the connection.";
          leaf address-id {
            type string;
            description
              "An identifier of the static IPv4 address.";
          }
          leaf customer-address {
            type inet:ipv6-address;
            description
              "An IPv6 address of the customer side.";
          }
        }
      }
    }
  }

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

  /* Routing */
  //BGP base parameters

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

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

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

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

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

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

  // RIP base parameters

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

  // routing profile

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

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

  // OAM

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

         The detection interval for the receiving BFD peer is
         calculated by multiplying the value of the negotiated
         transmission interval by the received detection multiplier
         value.";
      reference
        "RFC 5880: Bidirectional Forwarding Detection (BFD),
                   Section 6.8.7";
    }
    leaf holdtime {
      type uint32;
      units "milliseconds";
      description
        "Expected BFD holdtime.

         The customer may impose some fixed values for the holdtime
         period if the provider allows the customer to use this
         function.";
      reference
        "RFC 5880: Bidirectional Forwarding Detection (BFD),
                   Section 6.8.18";
    }
  }

  // OAM

  grouping oam {
    description
      "Defines the Operations, Administration, and Maintenance
       (OAM) mechanisms used.";
    container bfd {
      description
        "Container for BFD.";
      leaf profile {
        type leafref {
          path "/nw:networks/nw:network"
             + "/ac-ntw:specific-provisioning-profiles"
             + "/valid-provider-identifiers"
             + "/bfd-profile-identifier/id";
        }
        description
          "Well-known service provider profile name.";
      }
      uses bfd;
      container authentication {
        presence "Enables BFD authentication";
        description
          "Parameters for BFD authentication.";
        leaf key-chain {
          type key-chain:key-chain-ref;
          description
            "Name of the key chain.";
        }
        leaf meticulous {
          type boolean;
          description
            "Enables meticulous mode.";
          reference
            "RFC 5880: Bidirectional Forwarding Detection (BFD),
                       Section 6.7";
        }
      }
      uses vpn-common:service-status;
    }
  }

  // security

  grouping security {
    description
      "Security parameters for an AC.";
    container encryption {
      if-feature "vpn-common:encryption";
      description
        "Container for AC encryption.";
      leaf enabled {
        type boolean;
        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.";
      choice profile {
        description
          "Choice for the encryption profile.";
        case provider-profile {
          leaf profile-name {
            type leafref {
              path "/nw:networks/nw:network"
                 + "/ac-ntw:specific-provisioning-profiles"
                 + "/valid-provider-identifiers"
                 + "/encryption-profile-identifier/id";
            }
            description
              "Name of the provider's profile to be applied.";
          }
        }
        case customer-profile {
          leaf customer-key-chain {
            type key-chain:key-chain-ref;
            description
              "Customer-supplied key chain.";
          }
        }
      }
    }
  }

  // AC profile

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

  //AC network provisioning 

  grouping ac {
    description
      "Grouping for attachment circuits.";
    leaf description {
      type string;
      description
        "Associates a description with an AC.";
    }
    container l2-connection {
      description
        "Defines Layer 2 protocols and parameters that are required
         to enable AC connectivity.";
      uses l2-connection-if-ref;
    }
    container ip-connection {
      description
        "Defines IP connection parameters.";
      uses ip-connection;
    }
    container routing-protocols {
      description
        "Defines routing protocols.";
      uses routing;
    }
    container oam {
      description
        "Defines the OAM mechanisms used for the AC.";
      uses oam;
    }
    container security {
      description
        "AC-specific security parameters.";
      uses security;
    }
  }

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

  augment "/nw:networks/nw:network/nw:node"
        + "/sap:service/sap:sap" {
    when '../../../nw:network-types/sap:sap-network' {
      description
        "Augmentation parameters apply only for SAP networks.";
    }
    description
      "Augments SAPs with AC provisioning details.";
    list ac {
      key "name";
      description
        "List of ACs.";
      leaf name {
        type string;
        description
          "A local AC identifier.";
      }
      leaf ac-ref {
        type ac-svc:attachment-circuit-reference;
        description
          "A reference to the AC as exposed at the service level.";
      }
      list ac-profile {
        key "profile-id";
        description
          "List of AC profiles.";
        leaf profile-id {
          type leafref {
            path "/nw:networks/nw:network/ac-profile/name";
          }
          description
            "A reference to an AC profile.";
        }
      }
      leaf-list peer-sap-id {
        type string;
        description
          "One or more peer SAPs can be indicated.";
      }
      list group {
        key "group-id";
        description
          "List of group-ids.";
        leaf group-id {
          type string;
          description
            "Indicates the group-id to which the AC belongs.";
        }
        leaf precedence {
          type identityref {
            base ac-common:precedence-type;
          }
          description
            "Defines redundancy of an AC.";
        }
      }
      uses vpn-common:service-status;
      uses ac-ntw:ac;
    }
  }
}
]]></sourcecode>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The YANG module specified in this document defines a schema for data
   that is designed to be accessed via network management protocols such
   as NETCONF <xref target="RFC6241"/> or RESTCONF <xref target="RFC8040"/>.  The lowest NETCONF layer
   is the secure transport layer, and the mandatory-to-implement secure
   transport is Secure Shell (SSH) <xref target="RFC6242"/>.  The lowest RESTCONF layer
   is HTTPS, and the mandatory-to-implement secure transport is TLS
   <xref target="RFC8446"/>.</t>
      <t>The Network Configuration Access Control Model (NACM) <xref target="RFC8341"/>
   provides the means to restrict access for particular NETCONF or
   RESTCONF users to a preconfigured subset of all available NETCONF or
   RESTCONF protocol operations and content.</t>
      <t>There are a number of data nodes defined in this YANG module that are
   writable/creatable/deletable (i.e., config true, which is the
   default).  These data nodes may be considered sensitive or vulnerable
   in some network environments.  Write operations (e.g., edit-config)
   and delete operations to these data nodes without proper protection
   or authentication can have a negative effect on network operations.
   These are the subtrees and data nodes and their sensitivity/
   vulnerability in the "ietf-ac-ntw" module:</t>
      <ul spacing="normal">
        <li>TBC</li>
        <li>TBC</li>
      </ul>
      <t>Some of the readable data nodes in this YANG module may be considered
   sensitive or vulnerable in some network environments.  It is thus
   important to control read access (e.g., via get, get-config, or
   notification) to these data nodes.  These are the subtrees and data
   nodes and their sensitivity/vulnerability in the "ietf-ac-svc" module:</t>
      <ul spacing="normal">
        <li>TBC</li>
        <li>TBC</li>
      </ul>
      <t>Several data nodes ('bgp', 'ospf', 'isis', and 'rip') rely upon <xref target="RFC8177"/> for authentication purposes. As such, the AC network module inherits the security considerations discussed in Section 5 of <xref target="RFC8177"/>. Also, these data nodes support supplying explicit keys as strings in ASCII format. The use of keys in hexadecimal string format would afford greater key entropy with the same number of key-string octets. However, such a format is not included in this version of the AC network model, because it is not supported by the underlying device modules (e.g., <xref target="RFC8695"/>).</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA is requested to register the following URI in the "ns" subregistry within
   the "IETF XML Registry" <xref target="RFC3688"/>:</t>
      <artwork><![CDATA[
   URI:  urn:ietf:params:xml:ns:yang:ietf-ac-ntw
   Registrant Contact:  The IESG.
   XML:  N/A; the requested URI is an XML namespace.
]]></artwork>
      <t>IANA is requested to register the following YANG module in the "YANG Module
   Names" subregistry <xref target="RFC6020"/> within the "YANG Parameters" registry.</t>
      <artwork><![CDATA[
   Name:  ietf-ac-ntw
   Maintained by IANA?  N
   Namespace:  urn:ietf:params:xml:ns:yang:ietf-ac-ntw
   Prefix:  ac-ntw
   Reference:  RFC xxxx
]]></artwork>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="I-D.boro-opsawg-teas-attachment-circuit">
          <front>
            <title>YANG Data Models for 'Attachment Circuits'-as-a-Service (ACaaS)</title>
            <author fullname="Mohamed Boucadair" initials="M." surname="Boucadair">
              <organization>Orange</organization>
            </author>
            <author fullname="Richard Roberts" initials="R." surname="Roberts">
              <organization>Juniper</organization>
            </author>
            <author fullname="Oscar Gonzalez de Dios" initials="O. G." surname="de Dios">
              <organization>Telefonica</organization>
            </author>
            <author fullname="Samier Barguil" initials="S." surname="Barguil">
              <organization>Nokia</organization>
            </author>
            <author fullname="Bo Wu" initials="B." surname="Wu">
              <organization>Huawei Technologies</organization>
            </author>
            <date day="2" month="March" year="2023"/>
            <abstract>
              <t>   This document specifies a YANG service data model for Attachment
   Circuits (ACs).  This model can be used for the provisioning of ACs
   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.

   Also, the document specifies a set of reusable groupings.  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>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-boro-opsawg-teas-attachment-circuit-04"/>
        </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="RFC9291">
          <front>
            <title>A YANG Network Data Model for Layer 2 VPNs</title>
            <author fullname="M. Boucadair" initials="M." role="editor" surname="Boucadair">
              <organization/>
            </author>
            <author fullname="O. Gonzalez de Dios" initials="O." role="editor" surname="Gonzalez de Dios">
              <organization/>
            </author>
            <author fullname="S. Barguil" initials="S." surname="Barguil">
              <organization/>
            </author>
            <author fullname="L. Munoz" initials="L." surname="Munoz">
              <organization/>
            </author>
            <date month="September" year="2022"/>
            <abstract>
              <t>This document defines an L2VPN Network Model (L2NM) that can be used to manage the provisioning of Layer 2 Virtual Private Network (L2VPN) services within a network (e.g., a service provider network). The L2NM complements the L2VPN Service Model (L2SM) by providing a network-centric view of the service that is internal to a service provider. The L2NM is particularly meant to be used by a network controller to derive the configuration information that will be sent to relevant network devices.</t>
              <t>Also, this document defines a YANG module to manage Ethernet segments and the initial versions of two IANA-maintained modules that include a set of identities of BGP Layer 2 encapsulation types and pseudowire types.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9291"/>
          <seriesInfo name="DOI" value="10.17487/RFC9291"/>
        </reference>
        <reference anchor="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="I-D.boro-opsawg-teas-common-ac">
          <front>
            <title>A Common YANG Data Model for Attachment Circuits</title>
            <author fullname="Mohamed Boucadair" initials="M." surname="Boucadair">
              <organization>Orange</organization>
            </author>
            <author fullname="Richard Roberts" initials="R." surname="Roberts">
              <organization>Juniper</organization>
            </author>
            <author fullname="Oscar Gonzalez de Dios" initials="O. G." surname="de Dios">
              <organization>Telefonica</organization>
            </author>
            <author fullname="Samier Barguil" initials="S." surname="Barguil">
              <organization>Nokia</organization>
            </author>
            <author fullname="Bo Wu" initials="B." surname="Wu">
              <organization>Huawei Technologies</organization>
            </author>
            <date day="6" month="March" year="2023"/>
            <abstract>
              <t>   The document specifies a common Attachment Circuits (ACs) YANG
   module, which is designed with the intent to be reusable by other
   models.  For example, this common model can be reused by service
   models to expose ACs as a service, service models that require
   binding a service to a set of ACs, network and device models to
   provision ACs, etc.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-boro-opsawg-teas-common-ac-01"/>
        </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="RFC8294">
          <front>
            <title>Common YANG Data Types for the Routing Area</title>
            <author fullname="X. Liu" initials="X." surname="Liu">
              <organization/>
            </author>
            <author fullname="Y. Qu" initials="Y." surname="Qu">
              <organization/>
            </author>
            <author fullname="A. Lindem" initials="A." surname="Lindem">
              <organization/>
            </author>
            <author fullname="C. Hopps" initials="C." surname="Hopps">
              <organization/>
            </author>
            <author fullname="L. Berger" initials="L." surname="Berger">
              <organization/>
            </author>
            <date month="December" year="2017"/>
            <abstract>
              <t>This document defines a collection of common data types using the YANG data modeling language.  These derived common types are designed to be imported by other modules defined in the routing area.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8294"/>
          <seriesInfo name="DOI" value="10.17487/RFC8294"/>
        </reference>
        <reference anchor="RFC8343">
          <front>
            <title>A YANG Data Model for Interface Management</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund">
              <organization/>
            </author>
            <date month="March" year="2018"/>
            <abstract>
              <t>This document defines a YANG data model for the management of network interfaces.  It is expected that interface-type-specific data models augment the generic interfaces data model defined in this document. The data model includes definitions for configuration and system state (status information and counters for the collection of statistics).</t>
              <t>The YANG data model in this document conforms to the Network Management Datastore Architecture (NMDA) defined in RFC 8342.</t>
              <t>This document obsoletes RFC 7223.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8343"/>
          <seriesInfo name="DOI" value="10.17487/RFC8343"/>
        </reference>
        <reference anchor="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="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="AC-Ntw-Tree" target="https://github.com/boucadair/network-attachment-circuits/blob/main/yang/ac-ntw-without-groupings.txt">
          <front>
            <title>Full Network Attachment Circuit Tree Structure</title>
            <author>
              <organization/>
            </author>
            <date year="2023"/>
          </front>
        </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="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="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>
      </references>
    </references>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks to Moti Morgenstern for the review and comments.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
yNDT1OqxuK4qB9XsDqhWdfAWTTBFFlqKO8zV02TZQxD0H2fTaq091rtqx+0T
FNKUzWeF1myAQmcdQqB8dKEB4p12sJZ++jq3VlvaSOI6iScggzCyi2sQrpPL
QhO6Tc2iMAz4kxXp+yYCRdgfENPLtHPv0AcN2zXQq7y2LbqQUxUDhNpiJ/wK
En5exA1h8cvbMqhFgzErjKeTSCt/gi/ZgRXTyQqELKygjR6dhqLt/TltORjQ
3ejqQP2Wiel/bCAAbMcpApvUROm7wKoq3wlWw3pZd5nIZ9XGgyP11l8mbN1l
wtZcJmzdZcLuYZmwdZcJW71MzFKrlol6c5dl4lS+E+lpYFcuE6f0XWBld1wm
q3xI5M2h41AdSrMuFA7n+mj3FlS/6GmhebOyvcNnVg7Tv1l3bYdYoOP13WJm
I3d2jtkS4i4uMrOFdR1lVu9ru8us2ms6zSzkre06s/SutR1oVu1evi+5Ivu5
1jwRdcdOVrvZzJ4+x9nGjEW/tsvNrNzf8eawqRXuN7OPNZ1wZtX1XXFm7bs4
5Mz667jlXPS0+zfMHvq46JwqKx117kJf4qFwsHS6hsza6WEFQTA9FLxqDsgC
z93HeXtxVWO7JAng7o86ZXnx4XZc7qwq51B1FJfGQFYOw2kjLiMYEgjwLg+7
9Z4eqBNRpaH6FbWvQ3uI88nj/mOEwr86gC0BIn5pZlCFG+/fvYKCTXjisVNN
8JtIqttFU0ZxPsNjZ1fzlfgyntWuzCLNZlfjsgLWXaXzEhkOZ8lBc0ayFrOg
1V/rEQuniXUVMFVRa4ltdjU90bdsMNiD/xmqp/Hb8nn5nayt4rnjWl+/swd4
F+WOhWVqX81OVV9XrdP9rq3T6aprKnQaW2trc6rq+qqcrrpCxWKaEPspcarl
XhpcqPnV6hvTy/eOuhszJcxaiptZs7/WpiBeobKZra+jr5n11lTWzKpra2pm
5XXUNAsf7RuoayloZvk+2pmCYYVqxjpnvGvKDfC7lTIHoHaNTP3LOtQxs9Cd
dLFgA52KmFNDPn2VHG9YQRUsCFa3/nXfcLVrXnYH66tdbfX76lzB+p7CxXpK
zk7fXG+H40e7uTU8eKrmXV2Na/gZ7+5k/AwP4x80gKO+iud0TrW2vN4Y2ogj
itT3gBPcbwQENc+gRXpCt5PUKIgvezgonaHdQ2DKx54S4y7iores6CcoHCkB
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
J7AaQOghx7ZbwZNy13G+i9m6q/QGbGlctdAq14TZzy9Hr7EHnr67drwRxshx
TWbFBOWCSLuM3Z6cRuenbAILlRiAk/j+2a0MEdmlUTjN1bdzHjkyYKOachvv
asapB4D8N7XrU5Luul6iklFyajo/jU5OHUVYw2XMPMwuZYVjKj+cNavt80oz
m0ODenI1Ro2ZpaTcdo+CdyzKhdOXYB2U/+0b50s7HADJOTRFacuXDadSt8NP
ge6X9dW99Q9twQoSeeBBqBARKW/L+FbiKNpHFu+bApSiDeG6BhnIcBUYc4oE
DgrGuEaJFBe3fnWOb65QCBoTubCBth+BLgNydkyOICLWQP9IMyfnpHXgDPbA
n0qtd19IvJQN1vZcovbiYHZAwPrDGIOopsW0UOpgx0DM33xINEH2cIhBb4F6
ggIBsyNu2Q3SYP1sfN/0XUQjNs0q0IHFQI1Z4hSKo1aYdkesWciAa2fYijXb
sYHMecn7cVuJUcUHhCHVaAmkG7dxGMaaqwMEUWNnFXRRxMl206xQR4jNzd7I
vFikCdoNOKCa/04kbycESyGLIPcY1kGQGJASdArKe6eHOgWBOwkRhOy035wc
fJk5Sb7gnBy0DUv+8jU6J/3rvet2Tvu/qpbn9r2WvncuKst+FMo6FD+nw3Y9
GnPk3juqsdFfFb9/y4q/rYfUsyLJl/CNYVXDUuvAKY7qQZd+0KU75rW3Lr22
Kk0BKt4nGDv6Fdnm/scDpzlX1VutePtqL+kT0yX3j8jVqGY4pL0uuLb6+9ba
A/qmrbZ3a+2B6muq7YEWUA2+N5X9SxOLoeAbOFd6vtDqlQ4fwJfS6pGlAEqQ
URHXcZb/coG7F+lkuOE3Ehlo2Oc+Xz7FhCJ0YfJwgskQoMw5DfitMFulxnqq
2Yn0/fK5zAqhb64A5oADMy4VRDFXAxWJtaCFGSBTbY5SrJ0VQtTwuhrEUCsm
1LUCW0Oxi0bCgjyNaX7bczhtuO1Eq0QpcIYFoPPmCqMCOBcp9NfgGFZNwoM9
+GAP3rM9+CWJod0YXIsa/pWtRf6vUMjyA5mTrnsrBOWL3AAx91eYrJ3EBU6H
ZGioLWhYhLKDoilmlPMZuVaJztCXBz+fv8Z5gwp8gLe8mOhNN9IsodtcdqjH
qk0ITEpOhbwxtRowz9Werhyd6MbIUt1hzHg9eiYibu/kB2DVGbAQkdFLDMg0
SYym0zABeRFzVlttoTOhUHKGxtEq0QA6WJlkJAVICAHebULDSJtZRQVkmI8K
fcE/ts/ePtsJ75X4xPWpfQ8wyqaR3gELbAVqenepDY06tC9pI5BGoS1ZCYza
4lQrnObLAoG/F1PgJyNX00FTweNbv+laGeYKVf0TcfNQeU1Yuiu+BgwDEk0y
Lmdk6Xo5jjx8fzJgpzD8McUm6fDgz4Keg8ubdIaSED1ioPcuSwezgQF6Nl/k
FPdgmsxif5ZPUSFbRa1cVxwZfczjW+QeDgyTcg4LOzD4cQraWxUYNpDXNI0p
FnzTPM3klFfk2xdNpDygMVPoIenepY0ul5sMwDV2p2V4/ZQr0Bwgb11KV4U1
YoO/AZPXRL9izFbhzc7R2fvc0N80my2F/Q+y5WVWvGOj2axKZ/wdRRGx7Zej
H4zgXw1Y3Ijb+ww5y2nWBMlmfYGJaOXZ0K/pxZLBMYYjz3fQzVPK3osXFME/
dbNaMthIoRAfaoNhGwzbMLkgtWl0YnH1d+kt28TY281enPyV7seW6IREOmIQ
UEtc5HV1YXdCTfbXHWTYx9n59ZHBnS2mT9kg+oR+YCORUmx8B6LB6+SFLhaL
8xJrr1jGKYAtj0QLC6DhsVZizW7Vvpj7pEWJFv28Uztj9TemauV8WxFqIjxl
IpYJUSuh1O0YOg+qFSIP9WpS/kW6g1X2WLJ+RcNcWXv+48k5qmFgL6fWhqjs
ZZ6CXi34szAls2Jaxer0jUlBEgVWGm7Hpyu0Y35dbL+VMZIN45K8Km8sRMlR
UV/uTichjHflLB6+qNqSe7d7hvaP13KuaUGLmBOQwHRrcsRPZNIEDHk5KIl5
ebKC+2RRMCWg9NR9rXnChrwhwhmi5pl+JnIPG51DdsSKBNkdriJDf9jLGpkJ
kqY7MsFxzbznAU8dMV6R3txroBt6sg3w8xgADUwS0EmChALQh1yZTA8r5Bhi
jNYkOdS2rBTqW9wtlKKbdJfB7IQqV6koQWYh4ChXa62jN/KFub2hmr9lJFbf
wkUUakIw6XRCUKHWJ3Re8oZmuBFUZ9fEwrCjIEokDv3ZVI57noren8oOKcef
7skk5kFUovUFJdjlWudDwe26YAse7oASLNSFhuV6hMVArZbah9sq3sxnDnMY
N2WFxyGX6Z1wYxuP3OMmgcu47EDkrTFAAy+fObw1gccTqneF3f47zD31LyGL
1HE7zBffb9/yXIe0Yhp74Z1FPhdpoaxXi2Orn6+S47voIQaD0nAw202IrRzu
ECurgJaJY5E+jVZPmHGU0Ztj/EYGkSdwuzAj8POStAxSSXgT/uS5U0f9ITJv
P6s7amHA5B9/X6a12H6hL3yi4hAdGgpkP5jtvzpUdZu+pcdPYSfjNvo4lWdR
mT/KVh3B0go4PXfMegeQQoHFcGa1U2yDaIUiix5RDwlP2hqaRcx1AaE7G/Ng
EJB3IISx7WyQDnbZlkfqJIIxJAD5O0G3tRPQP2CZcFOS92BcXRSgwL7sbgWl
Ovpu55B3w6GNZMhIDpC7lL8GzXawREKpP6+t/PBSEguvY/CtblYV0FXVbCJz
7U+9HQQlm3YIKhR40Jce+lFD5xIIU0IY1n5mgRdThouTJ3INWgBt3pmsFnEb
Dojq8Aaa3Z7vJIQqUt+liu9o8GUFBJ9OIqAPaK/qZT72BI1vppMOZONdwiiQ
TXBntViC2RyPTjlF7PraIRKQuHqc9+DdGRWmniuA4XNpjX3FRphrAYYgW0HG
3UBajg6HhsGwmazrljIdUMd9HVDH9+GAOu7lgMLe3PEqb7E53jaX0/EXdDkd
P7ic+rmcjn9HLicxpH1PcN+XN8rXIB6cUQ/OKON5cEb5n/+pnVGeqDOfP74z
qnN4D84oG8oHZ5Q9DUZ/9+aM6vJFBTnbb+2LcoGyXFMPvqjflS+qg9ut9kUd
P/ii1PNP4YtqpYZVvqgAJTz4ojrwZoN2/KV9UXZdfmPQP7EvqoWMV/qiPN/M
Pfmi1roFB1QqN+Y14JE6/PVCVw97hq5aUZttUVSaTaLPUIHcEsSIZTY7x7Aq
gEw40ZyAtFaIjntAdLwSok6PooboOAgRj6/7swrE/vMe/r337IdzflmQbtGi
Mky6S99bCezECuxUEMJ8Q9sWdRmV1yYqdSQ4tpoRCwpHIS46F0dyzEKaqvC2
1pTfJWad8phk8awoa+Qdi2W1KNEiYfxKaLA88bVuQ3RpdpAZ7kSM5bVil1uj
rOOQz1dlOl+BDakvyzU1umCvub9te3TxemcXCI0uhbl4zfCGtqxIGsfqx0Hg
ZxmYq4MWRyc8bR2Oq0jTiZZlxhhkxvYeQwgb7ysG5sh6hFSdP1f8U5kvQAB6
ZOLW0gDQTv5uG/bgVVruRVp2C3Isn7rGRPSI139LnlBbHhlqKdOuQjwCw31q
akBbE0xiA8Itebcl3Nckz8nbxYUd3v2LkkYcQ9N1dXs+OmTSexsRdEC1c5a0
19Dz817hUWU62o6abdrcpDBnMZtl1/Bfa5aKNJtdjctK3Ut4fhqasToqQb8D
GeCcQhDXYms4hct6Guf1isB0KRKBnnCPgGhLdQJzJaxKWENkPmFGnzihC/7M
w+1Uy5Xn0oEovTKji/9zPrr8UQevU0S+vQjlAn4dGj5iMsKsau5Sc2ZJjP7R
CiEyRatvV8HJJ3Aev8/my7kxkWWSLCt+5EWMUYNsmGKIAqVY6hsbcYj2+HXt
cQr8NiX3KjqG8CLHMHsBrKN/bZaX4wCv/IzZP8O7KefA2rNmyQ+X7CpeSIMx
bTPBEXH16jFw5igOl1jctZOpGguafNWk4kBheZcS75KAuaVXtLwFItS+iG4E
hR6yulQk+avteykuS4SNbi/kzCK9iq+zsjKUrC0Py8Be8KrQcaq8A4TRLbwt
S0BshCmh/dQPeYZAKRuTluzBdY3J9u0YpFLjCGRaQF75S3EKWZd6qeXpxHhy
jXd31CKMi0SjMdly0Zn3D4gGyLUZqh0YZdakuK1XVtks0/oTvxNmMNhzRNtf
2Zaj8G6Zt8J8xTYBr9btilrEmHfDtJjA1r0w2ZQLIZokR9po2UhzIW8NHxIC
xGA6pwC1sAvM5A186A0fu2amxKzxltoJtxXe0uzzYhrc0/cNJzK8pXlZ4P2d
4hYJpQzCW9AkYEzmeSrDGuE3uYhZg/mocKOSVnxMM8OusxjnLq4o80tcoRJl
3UGXiYMh0NkC70QpGqmngAAAoakR5mXl4HeqHh0eHw1xgey9On95gbL2Z57d
jp1XhHN1lTjbxnvrd5ybZPgjr7h94lMYmQ6fS2bHX5rMjtciMxrTWrRGXfQl
OGHea5BNAgzSXSvhGZRiHulbSXkr6ebxk0f7Qw7nSKicF9JIQ3brQxmim5FE
gU036B+q9B3QqTQ9jSvCLBcXJ5tVAlrYALuoU9h6srjGRdzWA/jjt5PYfmAN
A0ebc16wxQhY80bdsCHQ63Ir08SxR+eTs9hoJDHuQOrItdYOT6k2766y7+sG
ympHlnWuX3kz0CEACmMkbqj/0DWT6HOu8MJlfjiV6x+cl8TyinupfJI6GCdX
5prmRorfmaECHx6Y4xeS/fGjR1oR7jkRvhKMi4N3nGqTJrPPuLvOBysy4Uxc
8sUvJAdEYKsY7DPHi4pU00KLqNIkxYvdrPbFQpe2ktO+dNLOuTqdvk/IWudr
JOaMXt/5lVnuyS2Yi5xSbFG5LXWBCV9Rtv/aZy1SKB08oUQrz8hZzX6ABm9A
Lz4XV22zI7YN6ImOwsJIi6Ong4PBQZj4b4DlUQ6SK1gomPHNJYMJMLN5nB8f
Wet1WvGBRRPgxU3NHpteVnHX0qPBYN+iFL14kRHWbBMYUCLTg/BHEdmTx6tJ
TMSr4YXu/H4cReS7MKtiZHQru7z83jfg8badbDbDrYAW9mDPpIueth1s2k2W
IPTeRuISWdWbA93HM54iLeUSjfgz6LDKXePOvEev7S56ghE4VhJXkyh931Rx
tIibqzW2vZ7zytgZ1Ga8tnIkrQsKUCAGtfTv/tLmD7IB4CdTuqzEvLKNmYnu
5COzJ67aJWjnctpDqjwuW5qnbmkcKMp0Q4wDnGQd9mHRqkAAJfWrVjF0sQj5
7Tz16uV2CY0qjAkU8zARh0+HVlmVImhjUGmufOhDUpCGUHdLQOW2xjvYEABe
yRFx79J0EecYWRZAyP6xRW6adR3sPz163MW8QngTzOuwh3zkV1vRPGWWqPz3
09Pz0cuzn0/l8q+3gN2iK7ZILOVR+//OT8nNF3OhSvaxI8mkv+HRFg++M3qM
m0CXbgyf8HVMPBGMrGkJ/LNuxHWBlrjH8Sk4VS9mE6pDIO6ySEEOZdVEev5+
RHlkkd2vKjaPBkfhZYZykgh0DYpiH9nhYHD8+PHhXanq63vQukTzfKbQx5bm
8cK+11ROF1doQWtakI1UL8lDhMtIkwtQ3R5wvJ/On48uw9Oq/HY+WV5aMyw9
Y2lGvqB/pJgRtUIvF6Ac73gDBcWCUwzlV6YIV40yL9d4e9a92wfzdefdPmzb
2Xn57fZcNJVJ1x16qHbJDKa7dMm36m3BWDzF3Y9p2XDuJwZMokdMuXKgxXg/
OHp8OKQKP4uMQAe26OBuUpVkuf9y3x8MDg+eHD9Zd6n3WNQILoeLhin3Ucgo
mZfLgscdOcrOtJSyWlcX94wCjbRoE1kBY84mv/XwL68MtUPscMTCj0170Uke
V6Q3EbhCMymsiEZzxNIUFHvZynawWQ2h0Ir6a9RFnDLse8uhDwx9n1FyqhaM
ouCY4H7Tb4xS+yiJi1yQAIhBw4tua3KIpVYVdJov66vfenz+iiGwOF/ot2K4
hEShxEVkgPLo9nDpL3RMMel9Rp3Xy+ZkuIXlzgq/6juwCWngyrCrjz3kh4OF
5F3rUokQN4obzFYKLwmwzGFsCS6dy5ly27bKL7mjYzTGk4IpmUUuTSc1tO3M
NOL0gmN6KUIrvT74DoAIHTYvGefM7K43l/1EPuTQqQ8XgpYV8TmZxVxUrZ1c
TAR7rwbVsr4MmLrTIqxOiIC2nOj9M/MiKHLJajP4qRceeoVR4UNhXjIsqx1H
Zb2Y3iOSsLkvgKU3F+cv7glNblPOKVcaAKAsS3QR5V/O69gakeGNcHw9WhYc
HXx99PXxE/i31WfUfhefZ/ZI/zLdinjRoO40khvDRi5J+Wy/vBjVO9qcxcFj
DokmxlhL8m7gfvmiCSHXJ5aszup7JBZs7gsQy9lFdHZxT9TiteUeisYhhMiF
BzJ4xNLGLn2GSS1TK2uTzQnfKdii2tH+1q78ebBFRo38AH/b/sKQ2cnWTpVu
k6B+jBTqOmO6Oyy+1mwdQmHPP4bccY0lNSH8LyIBi9xcF1FHUpZgOLjjUU3i
PJHZXHgaULADa0oL4gStu6CXk9QHvP14GPmLyXj080B0HntQxgTdQ4rBLTVP
/kI2gVgFal34cyL3mhaYZLnpPC8toFzE3GuyFpgXy8VCnS3gcIrMNBxAac+A
qVIuZ1ehjQBmxcsFLoF24e21SHj3GoM0ce7RrHZWCG3eIydEh8r9M0IwF+6J
DQacNvgQM5TOoHYd47qq7hNZ2NwXwBb+LUNlKD7DOTL2Np0siwkITsPdtv3z
27fnO/eEZGyrlxPw8ZOvnw4dWDvAC/Nj6Sg6JN5tRQdvOrKsNRJibaHWFg3R
d83eyV1nj58yr5gXlnUwc7QZI4zrDQzaC6voEsgywEGCTbQGc4PzH7/DiOCr
cplPGO8LY7+gZxtuGcPezp78sz9SwD2Yuf98Zq47M+jPMJVzd25au3xr+0ss
AvNnQuADP/jLnbSkzb3iZliIGEPj96ZNz8TW90CTLpqboWSDEQUFI18yRxWs
yT266sYBPd3h4g6mjPJ7znnKXpzIQZpxUKiDnXjnyNc1CVIv0Us/tjnHBFy7
eM0N/Vcwyn6KjjgreX/iWxykvX8BHktYRdM2Gfgr6bOEtd2VdRWUPood10k8
ASTlcRGpOK5eo8V0jaqG2nqUB0icQ7N0+haPGLb20++II3+IcUBLrEjfN9FV
uXC+d4SxSFZvQy/zU1hRqPwJ3Wov6aOZRbAwKieLIM/AMZ1EXrBj5zihhtN1
uxjvHqQRKfnsxfNus0keUXEThVgQuNEsPQCwdwWMDvyUHvKws68Ekve/G36a
HnPpirshsMll3caHJD0e340ejx/o8YEew/DfhR7bJdu/9PaAkbMbT+iSydBT
Ntl94HKS0VqiGV866Y8OzYWT0/Ra1E6n5lk6YVPwE5MupdW3dZPOWeQd5sn4
JSsGrAHA2rLgdF7K1rl4XmNjxgF13f/qtRy+GtSCCEYZuJPKvrKi/RYeXmo6
1ImTYHG7xdwLqLodgnInl8+OkRAHj7nUOiYBceFzCUqwiGqsc5BfHLMEFZe8
jXTuRkRg+Y3QgRx920bl3UARuEAiPNjgLpvxScsSLBQvASC8JyDWly64rRo2
AxK6CsY1Z5BWDW7aY2AtH4UFZee9L3LtyJYd168IvzXbdqhnNeWsiHTmrVtT
MOXh7yRgt2od/tlqma0k/w7i70P6PQi/97VlfUjeJVK5AgL0bhK8Wy1E/z61
u7V6Er+H/1a23uEjkF4CEKqYplUzcOP3XoDx9sb2pYjRFICR3iGju+mmCrGg
Mu8mNK2ttI+7dcGvtdz7KjLtysvDvv3qfXvDiXEVzykzns0lWpRzVPWpPVVt
Pe6K1Si3ncNaO7ZXjx4/eTLk2/MiKfS58GztnchbI07xfqPz1g09/gh1bOXh
37b64kywGSg8eGIXRniPHx8/5vBeH/Iz1RJeDiZMmAV3a3fnp9HJ6Y66bkgO
TwPw2Ncm1bSElMkmrmZpQweU++uUJ1UqrslRcydz1Xr3g+MTsh1F8mbV+70p
iJfUJj8/roxXBaZxlRq/iihz97LxoSA/oL6KHy0HNRfjEEPZK/kT0DUDm/Jq
VPd7P7i9d6+G2rGF7w+Y9vTX2MbnT3iFElBrrdI2csdH7c6tWKpdbbhH+O3l
Ojj0697nosWnx8I1jhjwZ9Wdmf+icVZhWdamPPRTHf6gsVs2Vh8CuX7bQC7r
YhL7uf84rqCo6BneRbxolYxwmPK6AuJ3GuflT5Ad+PU7ifPywQwEfuk4r4AC
s37gl6AojvR+ZLVWUFiYh9w33/6jBJrZU/ailLE5dHyTWAuQFawOcWQTqtg1
ruXBNbl8f4PQNW9GscB9T+gfKBrOCUh7iG0zO/mDx7YR3fi+u+B5LZoxpWkf
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
yussvRG6ypzz/43/Dzzf8mJ2cgEA

-->

</rfc>
