<?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.39 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-boro-opsawg-ntw-attachment-circuit-03" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.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-03"/>
    <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="September" day="05"/>
    <area>Operations and Management</area>
    <workgroup>Operations and Management Area Working Group</workgroup>
    <keyword>Slice Service</keyword>
    <keyword>L3VPN</keyword>
    <keyword>L2VPN</keyword>
    <abstract>
      <?line 80?>

<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/attachment-circuit-model"/>.</t>
    </note>
  </front>
  <middle>
    <?line 86?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Connectivity services are provided by networks to customers via
   dedicated terminating points, such as Service Functions <xref target="RFC7665"/>,
   customer edges (CEs), peer Autonomous System Border Routers (ASBRs),
   data centers gateways, or Internet Exchange Points.</t>
      <t>The procedure to provision a service in a service provider network may depend on the practices adopted by a service provider, including the flow put in place for the provisioning of advanced network services and how they are bound to an Attachment Circuit (AC). For example, the same AC may host multiple services (e.g., Layer 2 VPN, Slice Service, or Layer 3 VPN). In order to avoid service interference and redundant information in various locations, a service provider may expose an interface to manage ACs network-wide. Customers can then request a base AC 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 ACs ("ietf-ac-ntw"). The model can be used for the provisioning of ACs prior or during service provisioning.</t>
      <t>The document leverages <xref target="RFC9182"/> and <xref target="RFC9291"/> by adopting an AC provisioning structure that uses data nodes that are defined in these RFCs. Some refinements were introduced to cover, not only conventional service provider networks, but also specifics of other target deployments (cloud, for example).</t>
      <t>The AC network model is designed as an augmnetation to the Service Attachment Point (SAP) model <xref target="RFC9408"/>. An 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>
      <?line -18?>

<t>The reader should be familiar with the terms defined in <xref section="2" sectionFormat="of" target="RFC9408"/>.</t>
      <t>This document uses the term "network model" as defined in <xref section="2.1" sectionFormat="of" target="RFC8969"/>.</t>
      <t>The meanings of the symbols in the YANG tree diagrams are defined in <xref target="RFC8340"/>.</t>
      <t>This document uses the following terms:</t>
      <dl>
        <dt>Bearer:</dt>
        <dd>
          <t>A physical or logical link that connects a customer node (or site) to a provider network. A bearer can be a wireless or wired link. One or multiple technologies can be used to build a bearer. The bearer type can be specified by a customer.</t>
        </dd>
        <dt/>
        <dd>
          <t>The operator allocates a unique bearer reference to identify a bearer within its network (e.g., customer line identifier). Such a reference can be retrieved by a customer and used in subsequent service placement requests to unambiguously identify where a service is to be bound.</t>
        </dd>
        <dt/>
        <dd>
          <t>The concept of bearer can be generalized to refer to the required underlying connection for the provisioning of an attachment circuit. One or multiple attachment circuits may be hosted over the same bearer (e.g., multiple VLANs on the same bearer that is provided by a physical link).</t>
        </dd>
        <dt>Network controller:</dt>
        <dd>
          <t>Denotes a functional entity responsible for the management of the service provider network.</t>
        </dd>
        <dt>Service orchestrator:</dt>
        <dd>
          <t>Refers to a functional entity that interacts with the customer of a network service. The service orchestrator is typically responsible for the attachment circuits, the Provider Edge (PE) selection, and requesting the activation of the requested service to a network controller.</t>
        </dd>
        <dt>Service provider network:</dt>
        <dd>
          <t>A network that is able to provide network services (e.g., Network Slice Services).</t>
        </dd>
        <dt>Service provider:</dt>
        <dd>
          <t>A service provider that offers network services (e.g., Network Slice Services).</t>
        </dd>
      </dl>
    </section>
    <section anchor="sample-uses-of-the-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 +----+
   |CE#1+--------+            Network             +--------+CE#2|
   +----+        |                                |        +----+
                 +--------------------------------+
   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="RFC9408"/>. Each SAP terminate one or multiple ACs. The SAP model in <xref target="RFC9408"/> 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 a profile is 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="10" month="July" year="2023"/>
            <abstract>
              <t>   This document specifies a YANG service data model for Attachment
   Circuits (ACs).  This model can be used for the provisioning of ACs
   before or during service provisioning (e.g., Network Slice Service).
   The document also specifies a 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
   other service models reuse structures defined in the AC models or
   simply include an AC reference is a design choice of these service
   models.  Utilizing the AC service model to manage ACs over which a
   service is delivered has the advantage of decoupling service
   management from upgrading AC components to incorporate recent AC
   technologies or features.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-boro-opsawg-teas-attachment-circuit-07"/>
        </reference>
        <reference anchor="RFC9182">
          <front>
            <title>A YANG Network Data Model for Layer 3 VPNs</title>
            <author fullname="S. Barguil" initials="S." surname="Barguil"/>
            <author fullname="O. Gonzalez de Dios" initials="O." role="editor" surname="Gonzalez de Dios"/>
            <author fullname="M. Boucadair" initials="M." role="editor" surname="Boucadair"/>
            <author fullname="L. Munoz" initials="L." surname="Munoz"/>
            <author fullname="A. Aguado" initials="A." surname="Aguado"/>
            <date month="February" year="2022"/>
            <abstract>
              <t>As a complement to the Layer 3 Virtual Private Network Service Model (L3SM), which is used for communication between customers and service providers, this document defines an L3VPN Network Model (L3NM) that can be used for the provisioning of Layer 3 Virtual Private Network (L3VPN) services within a service provider network. The model provides a network-centric view of L3VPN services.</t>
              <t>The L3NM is meant to be used by a network controller to derive the configuration information that will be sent to relevant network devices. The model can also facilitate communication between a service orchestrator and a network controller/orchestrator.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9182"/>
          <seriesInfo name="DOI" value="10.17487/RFC9182"/>
        </reference>
        <reference anchor="RFC9291">
          <front>
            <title>A YANG Network Data Model for Layer 2 VPNs</title>
            <author fullname="M. Boucadair" initials="M." role="editor" surname="Boucadair"/>
            <author fullname="O. Gonzalez de Dios" initials="O." role="editor" surname="Gonzalez de Dios"/>
            <author fullname="S. Barguil" initials="S." surname="Barguil"/>
            <author fullname="L. Munoz" initials="L." surname="Munoz"/>
            <date month="September" year="2022"/>
            <abstract>
              <t>This document defines an L2VPN Network Model (L2NM) that can be used to manage the provisioning of Layer 2 Virtual Private Network (L2VPN) services within a network (e.g., a service provider network). The L2NM complements the L2VPN Service Model (L2SM) by providing a network-centric view of the service that is internal to a service provider. The L2NM is particularly meant to be used by a network controller to derive the configuration information that will be sent to relevant network devices.</t>
              <t>Also, this document defines a YANG module to manage Ethernet segments and the initial versions of two IANA-maintained modules that include a set of identities of BGP Layer 2 encapsulation types and pseudowire types.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9291"/>
          <seriesInfo name="DOI" value="10.17487/RFC9291"/>
        </reference>
        <reference anchor="RFC9408">
          <front>
            <title>A YANG Network Data Model for Service Attachment Points (SAPs)</title>
            <author fullname="M. Boucadair" initials="M." role="editor" surname="Boucadair"/>
            <author fullname="O. Gonzalez de Dios" initials="O." surname="Gonzalez de Dios"/>
            <author fullname="S. Barguil" initials="S." surname="Barguil"/>
            <author fullname="Q. Wu" initials="Q." surname="Wu"/>
            <author fullname="V. Lopez" initials="V." surname="Lopez"/>
            <date month="June" year="2023"/>
            <abstract>
              <t>This document defines a YANG data model for representing an abstract view of the provider network topology that contains the points from which its services can be attached (e.g., basic connectivity, VPN, network slices). Also, the model can be used to retrieve the points where the services are actually being delivered to customers (including peer networks).</t>
              <t>This document augments the 'ietf-network' data model defined in RFC 8345 by adding the concept of Service Attachment Points (SAPs). The SAPs are the network reference points to which network services, such as Layer 3 Virtual Private Network (L3VPN) or Layer 2 Virtual Private Network (L2VPN), can be attached. One or multiple services can be bound to the same SAP. Both User-to-Network Interface (UNI) and Network-to-Network Interface (NNI) are supported in the SAP data model.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9408"/>
          <seriesInfo name="DOI" value="10.17487/RFC9408"/>
        </reference>
        <reference anchor="I-D.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="3" month="May" 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-02"/>
        </reference>
        <reference anchor="RFC8342">
          <front>
            <title>Network Management Datastore Architecture (NMDA)</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="J. Schoenwaelder" initials="J." surname="Schoenwaelder"/>
            <author fullname="P. Shafer" initials="P." surname="Shafer"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <author fullname="R. Wilton" initials="R." surname="Wilton"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>Datastores are a fundamental concept binding the data models written in the YANG data modeling language to network management protocols such as the Network Configuration Protocol (NETCONF) and RESTCONF. This document defines an architectural framework for datastores based on the experience gained with the initial simpler model, addressing requirements that were not well supported in the initial model. This document updates RFC 7950.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8342"/>
          <seriesInfo name="DOI" value="10.17487/RFC8342"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC6991">
          <front>
            <title>Common YANG Data Types</title>
            <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder"/>
            <date month="July" year="2013"/>
            <abstract>
              <t>This document introduces a collection of common data types to be used with the YANG data modeling language. This document obsoletes RFC 6021.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6991"/>
          <seriesInfo name="DOI" value="10.17487/RFC6991"/>
        </reference>
        <reference anchor="RFC8177">
          <front>
            <title>YANG Data Model for Key Chains</title>
            <author fullname="A. Lindem" initials="A." role="editor" surname="Lindem"/>
            <author fullname="Y. Qu" initials="Y." surname="Qu"/>
            <author fullname="D. Yeung" initials="D." surname="Yeung"/>
            <author fullname="I. Chen" initials="I." surname="Chen"/>
            <author fullname="J. Zhang" initials="J." surname="Zhang"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>This document describes the key chain YANG data model. Key chains are commonly used for routing protocol authentication and other applications requiring symmetric keys. A key chain is a list containing one or more elements containing a Key ID, key string, send/accept lifetimes, and the associated authentication or encryption algorithm. By properly overlapping the send and accept lifetimes of multiple key chain elements, key strings and algorithms may be gracefully updated. By representing them in a YANG data model, key distribution can be automated.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8177"/>
          <seriesInfo name="DOI" value="10.17487/RFC8177"/>
        </reference>
        <reference anchor="RFC8294">
          <front>
            <title>Common YANG Data Types for the Routing Area</title>
            <author fullname="X. Liu" initials="X." surname="Liu"/>
            <author fullname="Y. Qu" initials="Y." surname="Qu"/>
            <author fullname="A. Lindem" initials="A." surname="Lindem"/>
            <author fullname="C. Hopps" initials="C." surname="Hopps"/>
            <author fullname="L. Berger" initials="L." surname="Berger"/>
            <date month="December" year="2017"/>
            <abstract>
              <t>This document defines a collection of common data types using the YANG data modeling language. These derived common types are designed to be imported by other modules defined in the routing area.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8294"/>
          <seriesInfo name="DOI" value="10.17487/RFC8294"/>
        </reference>
        <reference anchor="RFC8343">
          <front>
            <title>A YANG Data Model for Interface Management</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>This document defines a YANG data model for the management of network interfaces. It is expected that interface-type-specific data models augment the generic interfaces data model defined in this document. The data model includes definitions for configuration and system state (status information and counters for the collection of statistics).</t>
              <t>The YANG data model in this document conforms to the Network Management Datastore Architecture (NMDA) defined in RFC 8342.</t>
              <t>This document obsoletes RFC 7223.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8343"/>
          <seriesInfo name="DOI" value="10.17487/RFC8343"/>
        </reference>
        <reference anchor="RFC9181">
          <front>
            <title>A Common YANG Data Model for Layer 2 and Layer 3 VPNs</title>
            <author fullname="S. Barguil" initials="S." surname="Barguil"/>
            <author fullname="O. Gonzalez de Dios" initials="O." role="editor" surname="Gonzalez de Dios"/>
            <author fullname="M. Boucadair" initials="M." role="editor" surname="Boucadair"/>
            <author fullname="Q. Wu" initials="Q." surname="Wu"/>
            <date month="February" year="2022"/>
            <abstract>
              <t>This document defines a common YANG module that is meant to be reused by various VPN-related modules such as Layer 3 VPN and Layer 2 VPN network models.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9181"/>
          <seriesInfo name="DOI" value="10.17487/RFC9181"/>
        </reference>
        <reference anchor="RFC6241">
          <front>
            <title>Network Configuration Protocol (NETCONF)</title>
            <author fullname="R. Enns" initials="R." role="editor" surname="Enns"/>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder"/>
            <author fullname="A. Bierman" initials="A." role="editor" surname="Bierman"/>
            <date month="June" year="2011"/>
            <abstract>
              <t>The Network Configuration Protocol (NETCONF) defined in this document provides mechanisms to install, manipulate, and delete the configuration of network devices. It uses an Extensible Markup Language (XML)-based data encoding for the configuration data as well as the protocol messages. The NETCONF protocol operations are realized as remote procedure calls (RPCs). This document obsoletes RFC 4741. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6241"/>
          <seriesInfo name="DOI" value="10.17487/RFC6241"/>
        </reference>
        <reference anchor="RFC8040">
          <front>
            <title>RESTCONF Protocol</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document describes an HTTP-based protocol that provides a programmatic interface for accessing data defined in YANG, using the datastore concepts defined in the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8040"/>
          <seriesInfo name="DOI" value="10.17487/RFC8040"/>
        </reference>
        <reference anchor="RFC6242">
          <front>
            <title>Using the NETCONF Protocol over Secure Shell (SSH)</title>
            <author fullname="M. Wasserman" initials="M." surname="Wasserman"/>
            <date month="June" year="2011"/>
            <abstract>
              <t>This document describes a method for invoking and running the Network Configuration Protocol (NETCONF) within a Secure Shell (SSH) session as an SSH subsystem. This document obsoletes RFC 4742. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6242"/>
          <seriesInfo name="DOI" value="10.17487/RFC6242"/>
        </reference>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC8341">
          <front>
            <title>Network Configuration Access Control Model</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>The standardization of network configuration interfaces for use with the Network Configuration Protocol (NETCONF) or the RESTCONF protocol requires a structured and secure operating environment that promotes human usability and multi-vendor interoperability. There is a need for standard mechanisms to restrict NETCONF or RESTCONF protocol access for particular users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content. This document defines such an access control model.</t>
              <t>This document obsoletes RFC 6536.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="91"/>
          <seriesInfo name="RFC" value="8341"/>
          <seriesInfo name="DOI" value="10.17487/RFC8341"/>
        </reference>
        <reference anchor="RFC3688">
          <front>
            <title>The IETF XML Registry</title>
            <author fullname="M. Mealling" initials="M." surname="Mealling"/>
            <date month="January" year="2004"/>
            <abstract>
              <t>This document describes an IANA maintained registry for IETF standards which use Extensible Markup Language (XML) related items such as Namespaces, Document Type Declarations (DTDs), Schemas, and Resource Description Framework (RDF) Schemas.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="81"/>
          <seriesInfo name="RFC" value="3688"/>
          <seriesInfo name="DOI" value="10.17487/RFC3688"/>
        </reference>
        <reference anchor="RFC6020">
          <front>
            <title>YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="October" year="2010"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration and state data manipulated by the Network Configuration Protocol (NETCONF), NETCONF remote procedure calls, and NETCONF notifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6020"/>
          <seriesInfo name="DOI" value="10.17487/RFC6020"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="AC-Ntw-Tree" target="https://github.com/boucadair/attachment-circuit-model/blob/main/yang/full-trees/ac-ntw-without-groupings.txt">
          <front>
            <title>Full Network Attachment Circuit Tree Structure</title>
            <author>
              <organization/>
            </author>
            <date year="2023"/>
          </front>
        </reference>
        <reference anchor="RFC7665">
          <front>
            <title>Service Function Chaining (SFC) Architecture</title>
            <author fullname="J. Halpern" initials="J." role="editor" surname="Halpern"/>
            <author fullname="C. Pignataro" initials="C." role="editor" surname="Pignataro"/>
            <date month="October" year="2015"/>
            <abstract>
              <t>This document describes an architecture for the specification, creation, and ongoing maintenance of Service Function Chains (SFCs) in a network. It includes architectural concepts, principles, and components used in the construction of composite services through deployment of SFCs, with a focus on those to be standardized in the IETF. This document does not propose solutions, protocols, or extensions to existing protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7665"/>
          <seriesInfo name="DOI" value="10.17487/RFC7665"/>
        </reference>
        <reference anchor="RFC8969">
          <front>
            <title>A Framework for Automating Service and Network Management with YANG</title>
            <author fullname="Q. Wu" initials="Q." role="editor" surname="Wu"/>
            <author fullname="M. Boucadair" initials="M." role="editor" surname="Boucadair"/>
            <author fullname="D. Lopez" initials="D." surname="Lopez"/>
            <author fullname="C. Xie" initials="C." surname="Xie"/>
            <author fullname="L. Geng" initials="L." surname="Geng"/>
            <date month="January" year="2021"/>
            <abstract>
              <t>Data models provide a programmatic approach to represent services and networks. Concretely, they can be used to derive configuration information for network and service components, and state information that will be monitored and tracked. Data models can be used during the service and network management life cycle (e.g., service instantiation, service provisioning, service optimization, service monitoring, service diagnosing, and service assurance). Data models are also instrumental in the automation of network management, and they can provide closed-loop control for adaptive and deterministic service creation, delivery, and maintenance.</t>
              <t>This document describes a framework for service and network management automation that takes advantage of YANG modeling technologies. This framework is drawn from a network operator perspective irrespective of the origin of a data model; thus, it can accommodate YANG modules that are developed outside the IETF.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8969"/>
          <seriesInfo name="DOI" value="10.17487/RFC8969"/>
        </reference>
        <reference anchor="RFC8340">
          <front>
            <title>YANG Tree Diagrams</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="L. Berger" initials="L." role="editor" surname="Berger"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>This document captures the current syntax used in YANG module tree diagrams. The purpose of this document is to provide a single location for this definition. This syntax may be updated from time to time based on the evolution of the YANG language.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="215"/>
          <seriesInfo name="RFC" value="8340"/>
          <seriesInfo name="DOI" value="10.17487/RFC8340"/>
        </reference>
        <reference anchor="RFC8695">
          <front>
            <title>A YANG Data Model for the Routing Information Protocol (RIP)</title>
            <author fullname="X. Liu" initials="X." surname="Liu"/>
            <author fullname="P. Sarda" initials="P." surname="Sarda"/>
            <author fullname="V. Choudhary" initials="V." surname="Choudhary"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>This document describes a data model for the management of the Routing Information Protocol (RIP). Both RIP version 2 and RIPng are covered. The data model includes definitions for configuration, operational state, and Remote Procedure Calls (RPCs).</t>
              <t>The YANG data model in this document conforms to the Network Management Datastore Architecture (NMDA).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8695"/>
          <seriesInfo name="DOI" value="10.17487/RFC8695"/>
        </reference>
      </references>
    </references>
    <?line 2688?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks to Moti Morgenstern for the review and comments.</t>
    </section>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>
      <contact initials="V." surname="Lopez" fullname="Victor Lopez">
        <organization>Nokia</organization>
        <address>
          <email>victor.lopez@nokia.com</email>
        </address>
      </contact>
      <contact fullname="Ivan Bykov">
        <organization>Ribbon Communications</organization>
        <address>
          <email>Ivan.Bykov@rbbn.com</email>
        </address>
      </contact>
      <contact fullname="Qin Wu">
        <organization>Huawei</organization>
        <address>
          <email>bill.wu@huawei.com</email>
        </address>
      </contact>
      <contact fullname="Ogaki Kenichi">
        <organization>KDDI</organization>
        <address>
          <email>ke-oogaki@kddi.com</email>
        </address>
      </contact>
      <contact fullname="Luis Angel Munoz">
        <organization>Vodafone</organization>
        <address>
          <email>luis-angel.munoz@vodafone.com</email>
        </address>
      </contact>
    </section>
  </back>
  <!-- ##markdown-source:
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
1y5qUdWSHI9JmUjpRiastWAe3gTcOmhvV5cx2m7smjiVrsMSjy8F9QyGMisy
8rXHSZTOw+z4qL3eVVpkFGsVGSu9VT36YOGdq6gYoVVKSFvA1Aig0lWjAJNl
3iXJIsQjVW3av1kYx0ktthUW4q5atC36JsNYzSjwZlN7U4uHrBU10F3wj2UY
t3EYPMkamQTTMkBNB1kVriACscSqtInUTxyiqMgLmG/aWD/Gvlq8rAfTXRMl
hctmW0lVEGnaJt/ugpYW4lXflwuKW6Qtr6tQ4KJlQJo75lA0je1aqyoh5cco
PcxaqypNsmU1c6DrxrcUGXqaWj0WV2XpoJrdAdWqDt52CabIQktxh7k2NFn2
EAT959m0WmuP9a7acfsE+TRl81mhNRug0EEHHygfXGiAeCcdrKWfvs6t1ZY2
orCKwhhkEEZ2cQ3CdXJZaEK3qVkUhgF/sjy5qQNQhJsDYnqZdu4dNkHDdg30
Kq9tiy7kVMUAobbYiWYFCT8v4oawNMvbMqhFgzErjCdxoJU/wZfswIpJvAIh
Cytoo0envmj75py2HAzobnR1oH7LxPQ/NuABtuMUgU1qovRdYFWV7wSrYb2s
u0zks2rjwZF66y8Ttu4yYWsuE7buMmH3sEzYusuErV4mZqlVy0S9ucsycSrf
ifQ0sCuXiVP6LrCyOy6TVT4k8ubQcagOpVkX8odzfbB786pf9LTQvFnZ3uEz
K/vp36y7tkPM0/H6bjGzkTs7x2wJcRcXmdnCuo4yq/e13WVW7TWdZhby1nad
WXrX2g40q3Yv35dckf1caw0RdcdOVrvZzJ4+xdnGjEW/tsvNrNzf8eawqRXu
N7OPNZ1wZtX1XXFm7bs45Mz667jlXPS0+zfMHvq46JwqKx117kJf4onwWqRC
afUVt9LDCoJgeih4HxuQBR66D7P24qrGdkESwN0fdcry4sPtsNhZVc6h6iAs
jIGsHIbTRlgEMCQQ4F0edus9PVAnoEpD9StoX4f2EOfx4/5jhMK/OYAtASLN
0sygCjfev3sFeZtoiMdONaHZRFTeLuoiCLMpHjubzVfiy3hWuzLzJJ3OxkUJ
rLtM5gUyHM6SveaMZC1mQau/1iMWThPrKmCqotYS2+xqeoJv2WCwB/8zVE/j
t+Xzanaytornjmt9/c4e4F2UO+aXqX01O1V9XbVO97u2TqerrqnQaWytrc2p
quurcrrqChWLaULsp8SplntpcL7mV6tvTC/fO+puzJQwayluZs3+WpuCeIXK
Zra+jr5m1ltTWTOrrq2pmZXXUdMsfLRvoK6loJnl+2hnCoYVqhnrnPGuKTfA
71bKHIDaNTL1L+tQx8xCd9LFvA10KmJODfn0VXIaw/KqYF6wuvWv+4arXfOy
O1hf7Wqr31fn8tZvKFysp+Ts9M31djh+sJtbw4Onat7V1biGn/HuTsZP8DD+
SQM4qlk4p3OqleX1xtBGHFGgvnuc4M1GQFDz1FKkJ3Q7SY2C+LKHg9IZ2j0E
pnzoKTHuIi56y4p+gsKREgBvoFhdh9loQhGssmnvwFBbwOpn0H6SKftJRuzd
uOkqVtp7f/OOO5ufwEH7ss878s5PYJwPYWEehvPAlR640gNX+h250kNQplHp
MwVlPvC5Pwafe2BVf2pWtVZUcyc0VpNiJ4Ppx7OEVY1xGL1bLgLcITCqdO65
6N7SEq9U730llllX3ni40jOvazSitvHx8hHWRbE2ntsoVv1ej2KdamvShQat
g2KdcutBxtamWOEl+bRTnfLEpTzW+baol3hM03ug883oFT/MCT+6D3ICVOte
K/UnObTZdaxWvRtP4vaQR3t6qkpd8+CMx0MwZlXMyF0mcYDrpL5p6ixarbaG
JnI+ULXypqG0+GvxjU6RciK1GJLNGcxKqBjJ/QX3UV09HNtg/1zHNlYcO1fr
wyd3xWB9BCPnAsOLJfIak2C2tebKMqv2X1mWfdN7ZZm1eq8ss1KvldWoZdsE
/9aiSmq9Gl/3VZuVAyeNllnBpZ5XAeiU/j1E/13k/icI/V4S/y7i/k6yfmX2
ACF1Ve4AENNeQX4hG9rgOS5FlphOkQ6lHm6K/Bfn3n3US+lYIEsW7wYxFSH9
2tKHHH9E7GEfzFrHt5JTely+HhjkRPjUlG3xbcdR0JjwAahrjGS5RrEGXeB0
61l1jgDaratLX1pbV4Cqok3Xh+9pY92KW8gFLbmFZAo+lsHsrGmUVVskPeM5
tTEsqZnJ/vjrr/c/ftzVmdyfGH8dfH1k/HV4dKj/+nr/qax3FjwfjIuyCIpF
FV6DsZKElaCmIIywEKaSOjs9PQWQY/b00cFg/+/RQvKov5y8eX7Knp3+cPb6
4ltG2aI2jbtkvj94dHAQ7O8Hh48GyH03N2QqN12Gvd/grDnAq4uQovcH+9/A
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
1+sZdCOsoksgywAHCTbRGswNzn/4DiOCZ8UyixnvC2O/oGcbbhnD3s6emmd/
pIB7MHP/+cxcd2bQn2Eq5+7ctHb51vaXWATWnAmBD/zQXO6kJW3u5dfDXMQY
Gr83bXomtr4HmnReXw8lGwwoKBj5kjkqb03u0VU3Dujp9hd3MGWU33POU/bi
RA7SjINCHeykcY58XZMgaSR66cc255iAaxevuaH/CkbZT9ERZyXvT3yLg7T3
L8BDCato2iaD5kr6JGFtd2VdBaWPYodVFMaApCzMAxXH1Wu0mK5R1VBbj/IA
iXNolk7f4hHD1n76HXHkDzEOaInlyU0dzIqF870jjEWyeht6mZ/CikLlj+9W
e0kf9TSAhVE6WQR5Bo5JHDSCHTvHCTWcrtvFePcgjUjJZy+ed5tN8oiKmyjE
gsCNZukBgL0rYHTQTOkhDzs3lUDy/nfDT9NjLl1xNwQ2uaza+JCkx+O70ePx
Az0+0KMf/rvQY7tk+5feHjByduMJXTIZesomuw9cTjJaSzTTlE76o0Nz/uQ0
vRa106l5lk7YFPzEpEtp1W1VJ3MWNA7zpPySFQNWD2BtWXA6L2XrXDyvsTHj
gLruf/Va9l8NakEEo/TcSWVfWdF+Cw8vNRnqxEmwuN1i7gVU3Q5BuZPLZ8dI
iIPHXCodk4C4aHIJSrCIaqxzkF8cswQVl7yNdO5GRGA1G6EDOfq2jbJxA4Xn
Agn/YL27bMYnLUuwULgEgPCegFBfuuC2atgMSOgqGNecQVo1uGmPgbV8FBaU
nfe+yLUjW3ZcvyL81mzboZ7VlLMi0pm3bk3BhIe/k4DdqnT4Z6tltpL8O4i/
D+n3IPze15b1IXmXSOUK8NC7SfBuNR/9N6ndrdWT+Bv4b2XrHT4C6SUAoYpp
WjUDN37veRhvb2xfihhNARjpHTK6m26qEAsqbdyEprWV9nG3Lvi1lntfRaZd
eXnYt1+9b284MWbhnDLj2VyiRTlHVZ/aU9XW465YjXLbOay1Y3v16PGTJ0O+
PS+SQp8Lz9beibw14hTvNzpv3dDjj1DHVh7+basvzgSbgcKDJ3ZhhPf48fFj
Du/VIT9TLeHlYMKEWXC3dnd+Gpyc7qjrhuTwNACPm9qkmhafMlmH5TSp6YBy
f53ypEzENTlq7mSu2sb94Pj4bEeRvFn1fm8K4iW1yc+PK+NVgWlcpcavIkrd
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
cwEA

-->

</rfc>
