<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.19 (Ruby 3.1.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-boro-opsawg-ntw-attachment-circuit-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.3 -->
  <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-00"/>
    <author fullname="Mohamed Boucadair" role="editor">
      <organization>Orange</organization>
      <address>
        <email>mohamed.boucadair@orange.com</email>
      </address>
    </author>
    <author fullname="Richard Roberts">
      <organization>Juniper</organization>
      <address>
        <email>rroberts@juniper.net</email>
      </address>
    </author>
    <author fullname="Oscar Gonzalez de Dios">
      <organization>Telefonica</organization>
      <address>
        <email>oscar.gonzalezdedios@telefonica.com</email>
      </address>
    </author>
    <author fullname="Samier Barguil Giraldo">
      <organization>Nokia</organization>
      <address>
        <email>samier.barguil_giraldo@nokia.com</email>
      </address>
    </author>
    <author fullname="Bo Wu">
      <organization>Huawei Technologies</organization>
      <address>
        <email>lana.wubo@huawei.com</email>
      </address>
    </author>
    <date year="2023" month="January" day="27"/>
    <area>Operations and Management</area>
    <workgroup>Operations and Management Area Working Group</workgroup>
    <keyword>Slice Service</keyword>
    <keyword>L3VPN</keyword>
    <keyword>L2VPN</keyword>
    <abstract>
      <t>This document specifies a network model for attachment circuits. The model can be used for the provisioning of attachment circuits prior or during service provisioning (e.g., Network Slice Service). The companion service model is specified in <xref target="I-D.boro-opsawg-teas-attachment-circuit"/>.</t>
      <t>The module augments the SAP model with the detailed information for the provisioning of attachment circuits in Provider Edges (PEs).</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Operations and Management Area Working Group Working Group mailing list (opsawg@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/opsawg/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/boucadair/network-attachment-circuits"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>The procedure to provision a service in a service provider network may depend on the practices adopted by a service provider, including the flow put in place for the provisioning of advanced network services and how they are bound to an attachment circuit. For example, the same attachment circuit may be used to host multiple services. In order to avoid service interference and redundant information in various locations, a service provider may expose an interface to manage ACs network-wide. Customers can then request a base attachment circuit to be put in place, and then refer to that base AC when requesting services that are bound to that AC. <xref target="I-D.boro-opsawg-teas-attachment-circuit"/> specifies a data model for managing ACs as a service.</t>
      <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).</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 Points (SAPs) model <xref target="I-D.ietf-opsawg-sap"/>. An AC can be bound to a single or multiple SAPs. Likewise, the model is designed to accomdate deployments where a SAP can be bound to one or multiple ACs.</t>
      <t>The YANG data models in this document conform to the Network Management Datastore Architecture (NMDA) defined in <xref target="RFC8342"/>.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <t>The reader should be familiar with the terms defined in <xref section="2" sectionFormat="of" target="I-D.ietf-opsawg-sap"/>.</t>
      <t>This document uses the term "network model" as defined in <xref section="2.1" sectionFormat="of" target="RFC8969"/>.</t>
      <t>The meanings of the symbols in the YANG tree diagrams are defined in <xref target="RFC8340"/>.</t>
      <t>This document uses the following terms:</t>
      <dl>
        <dt>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..................
                 |        |                   |
]]></artwork>
      </figure>
    </section>
    <section anchor="description-of-the-attachment-circuit-yang-module">
      <name>Description of the Attachment Circuit YANG Module</name>
      <section anchor="overall-structure-of-the-module">
        <name>Overall Structure of the Module</name>
        <t>The overall tree structure of the module is shown in <xref target="o-ntw-tree"/>. A node can host one or more SAPs as per <xref target="I-D.ietf-opsawg-sap"/>. Each SAP terminate one or multiple ACs. The SAP model in <xref target="I-D.ietf-opsawg-sap"/> is thus augmented with required AC-related information. Also, in order to ease the correlation between the AC exposed at the service layer and the one that is actually provisioned in the network operation, a reference to the AC exposed to the customer  ('ac-ref') is stored in the 'ac-ntw' module.</t>
        <t>Unlike the AC service model, an AC is uniquely identified within the scope of a node not a network. An AC can be characterized using Layer 2 connectivity, Layer 3 connectivity, routing protocols, OAM, and security considerations. In order to factorize a set of data that is provisioned for a set of ACs, a set of profiled can be defined at the network level, and then called under the node level. The information contained in the profile are thus inherited, unless the corresponding data node is refined at the AC level. In such as case, the value provided at the AC level takes precedence over the global one.</t>
        <figure anchor="o-ntw-tree">
          <name>Overall Tree Structure</name>
          <artwork><![CDATA[
  augment /nw:networks/nw:network:
    +--rw ac-profile* [name]
       ...
  augment /nw:networks/nw:network/nw:node/sap:service/sap:sap:
    +--rw ac* [name]
       +--rw name                 string
       +--rw ac-ref?              ac-svc:attachment-circuit-reference
       +--rw ac-profile* [profile-id]
       |  +--rw profile-id    -> /nw:networks/network/ac-profile/name
       +--rw 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="full-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?         dot1q-types:vlanid
       |  |  |  +--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          dot1q-types:vlanid
       |  |     +--rw cvlan-id          dot1q-types:vlanid
       |  |     +--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: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 primary-address?                   -> ../address/address-id
       |  |        +--rw address* [address-id]
       |  |           +--rw address-id          string
       |  |           +--rw customer-address?   inet:ipv6-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 primary-address?                   -> ../address/address-id
       |           +--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      ac-svc: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      ac-svc:routing-profile-reference
       |     |  +--rw type?   identityref
       |     +--rw static
       |     |  +--rw cascaded-lan-prefixes
       |     |     +--rw ipv4-lan-prefixes* [lan next-hop] {vpn-common:ipv4}?
       |     |     |  +--rw lan           inet:ipv4-prefix
       |     |     |  +--rw lan-tag?      string
       |     |     |  +--rw next-hop      union
       |     |     |  +--rw bfd-enable?   boolean {vpn-common:bfd}?
       |     |     |  +--rw metric?       uint32
       |     |     |  +--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:ipv6-prefix
       |     |        +--rw lan-tag?      string
       |     |        +--rw next-hop      union
       |     |        +--rw bfd-enable?   boolean {vpn-common:bfd}?
       |     |        +--rw metric?       uint32
       |     |        +--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
       |     |  |              +--:(ipsec)
       |     |  |                 +--rw sa?                 string
       |     |  +--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
       |     |     |        +--:(ipsec)
       |     |     |           +--rw sa?                 string
       |     |     +--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
       |     |  |        +--:(ipsec)
       |     |  |           +--rw sa?                 string
       |     |  +--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      ac-svc: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?         ac-svc:encryption-profile-reference
                +--:(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"/>, 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-yang-types {
    prefix yang;
    reference
      "RFC 6991: Common YANG Data Types, Section 3";
  }
  import ietf-key-chain {
    prefix key-chain;
    reference
      "RFC 8177: YANG Data Model for Key Chains";
  }
  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-svc {
    prefix ac-svc;
    reference
      "RFC xxx: XXXX";
  }

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

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

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

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

     This version of this YANG module is part of RFC xxx; see the
     RFC itself for full legal notices.";

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

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

  grouping l2-connection-if-ref {
    description
      "Defines Layer 2 protocols and parameters that
       are required to enable AC connectivity.";
    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, for example, 
         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 VPN.";
    }
    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.";
          }
        }
      }
    }
  }

  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.";
      leaf local-address {
        type inet:ipv4-address;
        description
          "The IP address used at the provider's interface.";
      }
      leaf prefix-length {
        type uint8 {
          range "0..32";
        }
        description
          "Subnet prefix length expressed in bits.
           It is applied to both local and customer addresses.";
      }
      leaf address-allocation-type {
        type identityref {
          base ac-svc:address-allocation-type;
        }
        must "not(derived-from-or-self(current(), "
           + "'ac-svc:slaac') or "
           + "derived-from-or-self(current(), "
           + "'ac-svc:provider-dhcp-slaac'))" {
          error-message "SLAAC is only applicable "
                      + "to IPv6.";
        }
        description
          "Defines how addresses are allocated to
           the peer site.

           If there is no value for the address
           allocation type, then IPv4 addressing
           is not enabled.";
      }
      choice allocation-type {
        description
          "Choice of the 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 IPv6 addresses that are used.";
          leaf primary-address {
            type leafref {
              path "../address/address-id";
            }
            description
              "Primary IP address of the connection.";
          }
          list address {
            key "address-id";
            description
              "Lists the IPv6 addresses that are used.";
            leaf address-id {
              type string;
              description
                "An identifier of the static IPv6 address.";
            }
            leaf customer-address {
              type inet:ipv6-address;
              description
                "An IPv6 address of the customer side.";
            }
          }
        }}
}

    container ipv6 {
      if-feature "vpn-common:ipv6";
      description
        "IPv6-specific parameters.";
      leaf local-address {
        type inet:ipv6-address;
        description
          "IPv6 address of the provider side.";
      }
      leaf prefix-length {
        type uint8 {
          range "0..128";
        }
        description
          "Subnet prefix length expressed in bits.
           It is applied to both local and customer
           addresses.";
      }
      leaf address-allocation-type {
        type identityref {
          base ac-svc:address-allocation-type;
        }
        description
          "Defines how addresses are allocated.
           If there is no value for the address
           allocation type, then IPv6 addressing is
           disabled.";
      }
      choice allocation-type {
        description
          "Choice of the IPv6 address allocation.";
        case dynamic {
          description
            "When the addresses are allocated by DHCP or other
             dynamic means local to the infrastructure.";
          choice address-assign {
            default "number";
            description
              "A choice for how IPv6 addresses are assigned.";
            case number {
              leaf number-of-dynamic-address {
                type uint16;
                default "1";
                description
                  "Specifies the number of IP addresses to be assigned to
                   the customer on this access.";
              }
            }
            case explicit {
              container customer-addresses {
                description
                  "Container for customer addresses to be allocated
                   using DHCP.";
                list address-pool {
                  key "pool-id";
                  description
                    "Describes IP addresses to be dyncamically allocated.

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

                     When both 'start-address' and 'end-address' are
                     specified, it implies a range inclusive of both
                     addresses.";
                  leaf pool-id {
                    type string;
                    description
                      "A pool identifier for the address range from
                       'start-address' to 'end-address'.";
                  }
                  leaf start-address {
                    type inet:ipv6-address;
                    mandatory true;
                    description
                      "Indicates the first address in the pool.";
                  }
                  leaf end-address {
                    type inet:ipv6-address;
                    description
                      "Indicates the last address in the pool.";
                  }
                }
              }
            }
          }
          choice provider-dhcp {
            description
              "Parameters related to DHCP-allocated addresses.
               IP addresses are allocated by DHCP, which is provided
               by the operator.";
            leaf dhcp-service-type {
              type enumeration {
                enum server {
                  description
                    "Local DHCP server.";
                }
                enum relay {
                  description
                    "Local DHCP relay.  DHCP requests
                     are relayed to a provider's server.";
                }
              }
              description
                "Indicates the type of DHCP service to
                 be enabled on this access.";
            }
          choice 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 IPv6 addresses that are used.";
          leaf primary-address {
            type leafref {
              path "../address/address-id";
            }
            description
              "Primary IP address of the connection.";
          }
          list address {
            key "address-id";
            description
              "Lists the IPv6 addresses that are used.";
            leaf address-id {
              type string;
              description
                "An identifier of the static IPv6 address.";
            }
            leaf customer-address {
              type inet:ipv6-address;
              description
                "An IPv6 address of the customer side.";
            }
          }
        }}
}
}






  /* Routing */
  //BGP-generic
  //BGP-extended

  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 VPN node 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 VPN node level may be
         distinct from the ASN configured at the
         VPN network access level.  When such
         ASNs are provided, they are both
         prepended to the BGP route updates
         for this access.  To disable that
         behavior, 'prepend-global-as'
         must be set to 'false'.  In such a
         case, the ASN that is provided at
         the VPN 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 CE-PE connection 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 via VRF
         information.";
      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 that can be
         customized when building a VPN service
         with BGP used as the CE-PE routing
         protocol.";
      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";
      }
    }
  }

  grouping bgp-base-with-auth {
    description
      "Configuration specific to BGP.";
    uses bgp-base;
    container authentication {
      description
        "Container for BGP authentication
         parameters between a PE and a CE.";
      leaf enable {
        type boolean;
        default "false";
        description
          "Enables or disables authentication.";
      }
      container keying-material {
        when "../enable = 'true'";
        description
          "Container for describing how a BGP
           routing session is to be secured
           between a PE and a CE.";
        choice option {
          description
            "Choice of authentication options.";
          case ao {
            description
              "Uses the TCP Authentication
               Option (TCP-AO).";
            reference
              "RFC 5925: The TCP Authentication
                         Option";
            leaf enable-ao {
              type boolean;
              description
                "Enables the TCP-AO.";
            }
            leaf ao-keychain {
              type key-chain:key-chain-ref;
              description
                "Reference to the TCP-AO key
                 chain.";
              reference
                "RFC 8177: YANG Data Model for
                           Key Chains";
            }
          }
          case md5 {
            description
              "Uses MD5 to secure the session.";
            reference
              "RFC 4364: BGP/MPLS IP Virtual
                         Private Networks
                         (VPNs), Section 13.2";
            leaf md5-keychain {
              type key-chain:key-chain-ref;
              description
                "Reference to the MD5 key
                 chain.";
              reference
                "RFC 8177: YANG Data Model for
                           Key Chains";
            }
          }
          case explicit {
            leaf key-id {
              type uint32;
              description
                "Key identifier.";
            }
            leaf key {
              type string;
              description
                "BGP authentication key.
                 This model only supports the
                 subset of keys that are
                 representable as ASCII
                 strings.";
            }
            leaf crypto-algorithm {
              type identityref {
                base key-chain:crypto-algorithm;
              }
              description
                "Indicates the cryptographic
                 algorithm associated with the
                 key.";
            }
          }
          case ipsec {
            description
              "Specifies a reference to an
               Internet Key Exchange Protocol
               (IKE) Security Association
               (SA).";
            leaf sa {
              type string;
              description
                "Indicates the
                 administrator-assigned name
                 of the SA.";
            }
          }
        }
      }
    }
  }

  //routing profile

  grouping routing-profile {
    description
      "Defines routing protocols.";
    list routing-protocol {
      key "id";
      description
        "List of routing protocols used on the
         CE-PE link.  This list can be augmented.";
      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.";
        leaf address-family {
          type identityref {
            base vpn-common:address-family;
          }
          description
            "Indicates whether IPv4, IPv6, or
             both are to be activated.";
        }
        leaf area-id {
          type yang:dotted-quad;
          mandatory true;
          description
            "Area ID.";
          reference
            "RFC 4577: OSPF as the Provider/Customer
                       Edge Protocol for BGP/MPLS IP
                       Virtual Private Networks
                       (VPNs), Section 4.2.3
             RFC 6565: OSPFv3 as a Provider Edge to
                       Customer Edge (PE-CE) Routing
                       Protocol, Section 4.2";
        }
        leaf metric {
          type uint16;
          default "1";
          description
            "Metric of the PE-CE link.  It is used
             in the routing state calculation and
             path selection.";
        }
        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.";
        leaf address-family {
          type identityref {
            base vpn-common:address-family;
          }
          description
            "Indicates whether IPv4, IPv6, or both
             are to be activated.";
        }
        leaf area-address {
          type ac-svc:area-address;
          mandatory true;
          description
            "Area address.";
        }
        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.";
        }
      }
      container rip {
        when "derived-from-or-self(../type, "
           + "'vpn-common:rip-routing')" {
          description
            "Only applies when the protocol is RIP.
             For IPv4, the model assumes that RIP
             version 2 is used.";
        }
        description
          "Configuration specific to RIP routing.";
        leaf address-family {
          type identityref {
            base vpn-common:address-family;
          }
          description
            "Indicates whether IPv4, IPv6, or both
             address families are to be activated.";
        }
        container timers {
          description
            "Indicates the RIP timers.";
          reference
            "RFC 2453: RIP Version 2";
          leaf update-interval {
            type uint16 {
              range "1..32767";
            }
            units "seconds";
            default "30";
            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";
            default "180";
            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";
            default "180";
            description
              "Specifies the interval before better
               routes are released.";
          }
          leaf flush-interval {
            type uint16 {
              range "1..32767";
            }
            units "seconds";
            default "240";
            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";
          }
          default "1";
          description
            "Sets the default metric.";
        }
      }
      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;
          default "false";
          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
         CE-PE link.  This list can be augmented.";
      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";
          }*/
          type ac-svc:routing-profile-reference;
          description
            "Routing profile to be used.";
        }
        leaf type {
          type identityref {
            base vpn-common:ie-type;
          }
          description
            "Import, export, or both.";
        }
      }
      container static {
        when "derived-from-or-self(../type, "
           + "'vpn-common:static-routing')" {
          description
            "Only applies when the protocol is a
             static routing protocol.";
        }
        description
          "Configuration specific to static
           routing.";
        container cascaded-lan-prefixes {
          description
            "LAN prefixes from the customer.";
          list ipv4-lan-prefixes {
            if-feature "vpn-common:ipv4";
            key "lan next-hop";
            description
              "List of LAN prefixes for the site.";
            leaf lan {
              type inet:ipv4-prefix;
              description
                "LAN prefixes.";
            }
            leaf lan-tag {
              type string;
              description
                "Internal tag to be used in VPN
                 policies.";
            }
            leaf next-hop {
              type union {
                type inet:ip-address;
                type ac-svc:predefined-next-hop;
              }
              description
                "The next hop that is to be used
                 for the static route.  This may be
                 specified as an IP address or a
                 predefined next-hop type (e.g.,
                 'discard' or 'local-link').";
            }
            leaf bfd-enable {
              if-feature "vpn-common:bfd";
              type boolean;
              description
                "Enables Bidirectional Forwarding
                 Detection (BFD).";
            }
            leaf metric {
              type uint32;
              description
                "Indicates the metric associated
                 with the static route.";
            }
            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.";
            leaf lan {
              type inet:ipv6-prefix;
              description
                "LAN prefixes.";
            }
            leaf lan-tag {
              type string;
              description
                "Internal tag to be used in VPN
                 policies.";
            }
            leaf next-hop {
              type union {
                type inet:ip-address;
                type ac-svc:predefined-next-hop;
              }
              description
                "The next hop that is to be used for
                 the static route.  This may be
                 specified as an IP address or a
                 predefined next-hop type (e.g.,
                 'discard' or 'local-link').";
            }
            leaf bfd-enable {
              if-feature "vpn-common:bfd";
              type boolean;
              description
                "Enables BFD.";
            }
            leaf metric {
              type uint32;
              description
                "Indicates the metric associated
                 with the static route.";
            }
            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-with-auth;
          }
        }
        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-with-auth;
          uses vpn-common:service-status;
        }
      }
      container ospf {
        when "derived-from-or-self(../type, "
           + "'vpn-common:ospf-routing')" {
          description
            "Only applies when the protocol is
             OSPF.";
        }
        description
          "Configuration specific to OSPF.";
        leaf address-family {
          type identityref {
            base vpn-common:address-family;
          }
          description
            "Indicates whether IPv4, IPv6, or
             both are to be activated.";
        }
        leaf area-id {
          type yang:dotted-quad;
          mandatory true;
          description
            "Area ID.";
          reference
            "RFC 4577: OSPF as the Provider/Customer
                       Edge Protocol for BGP/MPLS IP
                       Virtual Private Networks
                       (VPNs), Section 4.2.3
             RFC 6565: OSPFv3 as a Provider Edge to
                       Customer Edge (PE-CE) Routing
                       Protocol, Section 4.2";
        }
        leaf metric {
          type uint16;
          default "1";
          description
            "Metric of the PE-CE link.  It is used
             in the routing state calculation and
             path selection.";
        }
        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.
                 The default value is set to '1'.";
              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.";
        }
        container authentication {
          description
            "Authentication configuration.";
          leaf enable {
            type boolean;
            default "false";
            description
              "Enables or disables authentication.";
          }
          container keying-material {
            when "../enable = 'true'";
            description
              "Container for describing how an OSPF
               session is to be secured between a CE
               and a PE.";
            choice option {
              description
                "Options for OSPF authentication.";
              case auth-key-chain {
                leaf key-chain {
                  type key-chain:key-chain-ref;
                  description
                    "Name of the key chain.";
                }
              }
              case auth-key-explicit {
                leaf key-id {
                  type uint32;
                  description
                    "Key identifier.";
                }
                leaf key {
                  type string;
                  description
                    "OSPF authentication key.
                     This model only supports the
                     subset of keys that are
                     representable as ASCII
                     strings.";
                }
                leaf crypto-algorithm {
                  type identityref {
                    base key-chain:crypto-algorithm;
                  }
                  description
                    "Indicates the cryptographic
                     algorithm associated with the
                     key.";
                }
              }
              case ipsec {
                leaf sa {
                  type string;
                  description
                    "Indicates the
                     administrator-assigned name
                     of the SA.";
                  reference
                    "RFC 4552: Authentication/
                               Confidentiality for
                               OSPFv3";
                }
              }
            }
          }
        }
        uses vpn-common:service-status;
      }
      container isis {
        when "derived-from-or-self(../type, "
           + "'vpn-common:isis-routing')" {
          description
            "Only applies when the protocol is
             IS-IS.";
        }
        description
          "Configuration specific to IS-IS.";
        leaf address-family {
          type identityref {
            base vpn-common:address-family;
          }
          description
            "Indicates whether IPv4, IPv6, or both
             are to be activated.";
        }
        leaf area-address {
          type ac-svc:area-address;
          mandatory true;
          description
            "Area address.";
        }
        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.";
        }
        container authentication {
          description
            "Authentication configuration.";
          leaf enable {
            type boolean;
            default "false";
            description
              "Enables or disables authentication.";
          }
          container keying-material {
            when "../enable = 'true'";
            description
              "Container for describing how an IS-IS
               session is to be secured between a CE
               and a PE.";
            choice option {
              description
                "Options for IS-IS authentication.";
              case auth-key-chain {
                leaf key-chain {
                  type key-chain:key-chain-ref;
                  description
                    "Name of the key chain.";
                }
              }
              case auth-key-explicit {
                leaf key-id {
                  type uint32;
                  description
                    "Key identifier.";
                }
                leaf key {
                  type string;
                  description
                    "IS-IS authentication key.
                     This model only supports the
                     subset of keys that are
                     representable as ASCII
                     strings.";
                }
                leaf crypto-algorithm {
                  type identityref {
                    base key-chain:crypto-algorithm;
                  }
                  description
                    "Indicates the cryptographic
                     algorithm associated with the
                     key.";
                }
              }
            }
          }
        }
        uses vpn-common:service-status;
      }
      container rip {
        when "derived-from-or-self(../type, "
           + "'vpn-common:rip-routing')" {
          description
            "Only applies when the protocol is RIP.
             For IPv4, the model assumes that RIP
             version 2 is used.";
        }
        description
          "Configuration specific to RIP routing.";
        leaf address-family {
          type identityref {
            base vpn-common:address-family;
          }
          description
            "Indicates whether IPv4, IPv6, or both
             address families are to be activated.";
        }
        container timers {
          description
            "Indicates the RIP timers.";
          reference
            "RFC 2453: RIP Version 2";
          leaf update-interval {
            type uint16 {
              range "1..32767";
            }
            units "seconds";
            default "30";
            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";
            default "180";
            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";
            default "180";
            description
              "Specifies the interval before better
               routes are released.";
          }
          leaf flush-interval {
            type uint16 {
              range "1..32767";
            }
            units "seconds";
            default "240";
            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";
          }
          default "1";
          description
            "Sets the default metric.";
        }
        container authentication {
          description
            "Authentication configuration.";
          leaf enable {
            type boolean;
            default "false";
            description
              "Enables or disables authentication.";
          }
          container keying-material {
            when "../enable = 'true'";
            description
              "Container for describing how a RIP
               session is to be secured between a CE
               and a PE.";
            choice option {
              description
                "Specifies the authentication
                 scheme.";
              case auth-key-chain {
                leaf key-chain {
                  type key-chain:key-chain-ref;
                  description
                    "Name of the key chain.";
                }
              }
              case auth-key-explicit {
                leaf key {
                  type string;
                  description
                    "RIP authentication key.
                     This model only supports the
                     subset of keys that are
                     representable as ASCII
                     strings.";
                }
                leaf crypto-algorithm {
                  type identityref {
                    base key-chain:crypto-algorithm;
                  }
                  description
                    "Indicates the cryptographic
                     algorithm associated with the
                     key.";
                }
              }
            }
          }
        }
        uses vpn-common:service-status;
      }
      container vrrp {
        when "derived-from-or-self(../type, "
           + "'vpn-common:vrrp-routing')" {
          description
            "Only applies when the protocol is the
             Virtual Router Redundancy Protocol
             (VRRP).";
        }
        description
          "Configuration specific to VRRP.";
        reference
          "RFC 5798: Virtual Router Redundancy
                     Protocol (VRRP) Version 3 for
                     IPv4 and IPv6";
        leaf address-family {
          type identityref {
            base vpn-common:address-family;
          }
          description
            "Indicates whether IPv4, IPv6, or both
             address families are to be enabled.";
        }
        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.

         If the provider doesn't allow the
         customer to use this function,
         fixed values will not be set.";
      reference
        "RFC 5880: Bidirectional Forwarding
                   Detection (BFD),
                   Section 6.8.18";
    }
  }

  // AC profile

  grouping ac-profile {
    description
      "Grouping for an attachment circuits.";
    // Layer 2
    container l2-connection {
      description
        "Defines Layer 2 protocols and parameters that
         are required to enable AC connectivity.";
      //uses l2-connection;
    }
    // Layer 3
    container ip-connection {
      description
        "Defines IP connection parameters.";
    }
    // Routing
    container routing-protocols {
      description
        "Defines routing protocols.";
      uses routing-profile;
    }
    // OAM
    container oam {
      description
        "Defines the Operations, Administration,
         and Maintenance (OAM) mechanisms used.";
      container bfd {
        if-feature "vpn-common:bfd";
        description
          "Container for BFD.";
        uses bfd;
      }
    }
  }

  //AC network provisioning 

  grouping ac {
    description
      "Grouping for an attachment circuits.";
    leaf description {
      type string;
      description
        "Associates a description with an AC.";
    }
    // Layer 2
    container l2-connection {
      description
        "Defines Layer 2 protocols and parameters that
         are required to enable AC connectivity.";
      uses l2-connection-if-ref;
    }
    // Layer 3
    container ip-connection {
      description
        "Defines IP connection parameters.";
      uses ip-connection;
    }
    // Routing
    container routing-protocols {
      description
        "Defines routing protocols.";
      uses routing;
    }
    // OAM
    container oam {
      description
        "Defines the Operations, Administration,
         and Maintenance (OAM) mechanisms used.";
      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";
          }*/
          type ac-svc:bfd-profile-reference;
          description
            "Well-known service provider profile name.

             The provider can propose some profiles
             to the customer, depending on the
             service level the customer wants to
             achieve.";
        }
        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 
    container security {
      description
        "Site-specific security parameters.";
      container encryption {
        if-feature "vpn-common:encryption";
        description
          "Container for AC security encryption.";
        leaf enabled {
          type boolean;
          default "false";
          description
            "If set to 'true', traffic encryption on
             the connection is required.  Otherwise,
             it is disabled.";
        }
        leaf layer {
          when "../enabled = 'true'" {
            description
              "Included only when encryption
               is enabled.";
          }
          type enumeration {
            enum layer2 {
              description
                "Encryption occurs at Layer 2.";
            }
            enum layer3 {
              description
                "Encryption occurs at Layer 3.
                 For example, IPsec may be used when
                 a customer requests Layer 3
                 encryption.";
            }
          }
          description
            "Indicates the layer on which encryption
             is applied.";
        }
      }
      container encryption-profile {
        when "../encryption/enabled = 'true'" {
          description
            "Indicates the layer on which encryption
             is enabled.";
        }
        description
          "Container for the encryption profile.";
        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";
              }*/
              type ac-svc:encryption-profile-reference;
              description
                "Name of the service provider's
                 profile to be applied.";
            }
          }
          case customer-profile {
            leaf customer-key-chain {
              type key-chain:key-chain-ref;
              description
                "Customer-supplied key chain.";
            }
          }
        }
      }
    }
  }

  augment "/nw:networks/nw:network" {
    description
      "Add a list of profiles.";
    // References to the profiles defines in the AC-SVC
    /*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
        "Maintains 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.";
        }
      }
      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>
    </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
   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 Service Data Models 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="20" month="January" year="2023"/>
            <abstract>
              <t>   This document specifies a YANG service data model for Attachment
   Circuits (ACs).  The model can be used for the provisioning of ACs
   prior or during service provisioning (e.g., Network Slice Service).
   The document specifies also a module that updates other service and
   network modules with the required information to bind specific
   services to ACs that are created using the AC service model.

   The AC service model is designed with the intent to be reusable.
   Whether a service model reuses structures defined in the AC service
   model or simply include an AC reference is a design choice of these
   service models.  Relying upon the AC model to manage ACs over which a
   service is delivered has the merit to decorrelate the management of a
   service vs. upgrade the AC components to reflect recent AC
   technologies or features.

   Each AC is identified with a unique identifier within a domain.  The
   mapping between this AC and a PE that terminates the AC is hidden to
   the application/customer that makes use of the AC service model.
   Such an information is internal to the network controller.  Thus, the
   details about the (network node-specific) attachment interfaces are
   not exposed in this service model.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-boro-opsawg-teas-attachment-circuit-01"/>
        </reference>
        <reference anchor="RFC9182">
          <front>
            <title>A YANG Network Data Model for Layer 3 VPNs</title>
            <author fullname="S. Barguil" initials="S." surname="Barguil">
              <organization/>
            </author>
            <author fullname="O. Gonzalez de Dios" initials="O." role="editor" surname="Gonzalez de Dios">
              <organization/>
            </author>
            <author fullname="M. Boucadair" initials="M." role="editor" surname="Boucadair">
              <organization/>
            </author>
            <author fullname="L. Munoz" initials="L." surname="Munoz">
              <organization/>
            </author>
            <author fullname="A. Aguado" initials="A." surname="Aguado">
              <organization/>
            </author>
            <date month="February" year="2022"/>
            <abstract>
              <t>As a complement to the Layer 3 Virtual Private Network Service Model (L3SM), which is used for communication between customers and service providers, this document defines an L3VPN Network Model (L3NM) that can be used for the provisioning of Layer 3 Virtual Private Network (L3VPN) services within a service provider network. The model provides a network-centric view of L3VPN services.</t>
              <t>The L3NM is meant to be used by a network controller to derive the configuration information that will be sent to relevant network devices. The model can also facilitate communication between a service orchestrator and a network controller/orchestrator.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9182"/>
          <seriesInfo name="DOI" value="10.17487/RFC9182"/>
        </reference>
        <reference anchor="RFC9291">
          <front>
            <title>A YANG Network Data Model for Layer 2 VPNs</title>
            <author fullname="M. Boucadair" initials="M." role="editor" surname="Boucadair">
              <organization/>
            </author>
            <author fullname="O. Gonzalez de Dios" initials="O." role="editor" surname="Gonzalez de Dios">
              <organization/>
            </author>
            <author fullname="S. Barguil" initials="S." surname="Barguil">
              <organization/>
            </author>
            <author fullname="L. Munoz" initials="L." surname="Munoz">
              <organization/>
            </author>
            <date month="September" year="2022"/>
            <abstract>
              <t>This document defines an L2VPN Network Model (L2NM) that can be used to manage the provisioning of Layer 2 Virtual Private Network (L2VPN) services within a network (e.g., a service provider network). The L2NM complements the L2VPN Service Model (L2SM) by providing a network-centric view of the service that is internal to a service provider. The L2NM is particularly meant to be used by a network controller to derive the configuration information that will be sent to relevant network devices.</t>
              <t>Also, this document defines a YANG module to manage Ethernet segments and the initial versions of two IANA-maintained modules that include a set of identities of BGP Layer 2 encapsulation types and pseudowire types.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9291"/>
          <seriesInfo name="DOI" value="10.17487/RFC9291"/>
        </reference>
        <reference anchor="I-D.ietf-opsawg-sap">
          <front>
            <title>A YANG Network Model for Service Attachment Points (SAPs)</title>
            <author fullname="Mohamed Boucadair" initials="M." surname="Boucadair">
              <organization>Orange</organization>
            </author>
            <author fullname="Oscar Gonzalez de Dios" initials="O. G." surname="de Dios">
              <organization>Telefonica</organization>
            </author>
            <author fullname="Samier Barguil" initials="S." surname="Barguil">
              <organization>Nokia</organization>
            </author>
            <author fullname="Qin Wu" initials="Q." surname="Wu">
              <organization>Huawei</organization>
            </author>
            <author fullname="Victor Lopez" initials="V." surname="Lopez">
              <organization>Nokia</organization>
            </author>
            <date day="18" month="January" year="2023"/>
            <abstract>
              <t>   This document defines a YANG data model for representing an abstract
   view of the provider network topology that contains the points from
   which its services can be attached (e.g., basic connectivity, VPN,
   network slices).  Also, the model can be used to retrieve the points
   where the services are actually being delivered to customers
   (including peer networks).

   This document augments the 'ietf-network' data model by adding the
   concept of Service Attachment Points (SAPs).  The SAPs are the
   network reference points to which network services, such as Layer 3
   Virtual Private Network (L3VPN) or Layer 2 Virtual Private Network
   (L2VPN), can be attached.  One or multiple services can be bound to
   the same SAP.  Both User-Network Interface (UNI) and Network-to-
   Network Interface (NNI) are supported in the SAP data model.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-opsawg-sap-15"/>
        </reference>
        <reference anchor="RFC8342">
          <front>
            <title>Network Management Datastore Architecture (NMDA)</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund">
              <organization/>
            </author>
            <author fullname="J. Schoenwaelder" initials="J." surname="Schoenwaelder">
              <organization/>
            </author>
            <author fullname="P. Shafer" initials="P." surname="Shafer">
              <organization/>
            </author>
            <author fullname="K. Watsen" initials="K." surname="Watsen">
              <organization/>
            </author>
            <author fullname="R. Wilton" initials="R." surname="Wilton">
              <organization/>
            </author>
            <date month="March" year="2018"/>
            <abstract>
              <t>Datastores are a fundamental concept binding the data models written in the YANG data modeling language to network management protocols such as the Network Configuration Protocol (NETCONF) and RESTCONF. This document defines an architectural framework for datastores based on the experience gained with the initial simpler model, addressing requirements that were not well supported in the initial model.  This document updates RFC 7950.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8342"/>
          <seriesInfo name="DOI" value="10.17487/RFC8342"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC6991">
          <front>
            <title>Common YANG Data Types</title>
            <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder">
              <organization/>
            </author>
            <date month="July" year="2013"/>
            <abstract>
              <t>This document introduces a collection of common data types to be used with the YANG data modeling language.  This document obsoletes RFC 6021.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6991"/>
          <seriesInfo name="DOI" value="10.17487/RFC6991"/>
        </reference>
        <reference anchor="RFC8177">
          <front>
            <title>YANG Data Model for Key Chains</title>
            <author fullname="A. Lindem" initials="A." role="editor" surname="Lindem">
              <organization/>
            </author>
            <author fullname="Y. Qu" initials="Y." surname="Qu">
              <organization/>
            </author>
            <author fullname="D. Yeung" initials="D." surname="Yeung">
              <organization/>
            </author>
            <author fullname="I. Chen" initials="I." surname="Chen">
              <organization/>
            </author>
            <author fullname="J. Zhang" initials="J." surname="Zhang">
              <organization/>
            </author>
            <date month="June" year="2017"/>
            <abstract>
              <t>This document describes the key chain YANG data model.  Key chains are commonly used for routing protocol authentication and other applications requiring symmetric keys.  A key chain is a list containing one or more elements containing a Key ID, key string, send/accept lifetimes, and the associated authentication or encryption algorithm.  By properly overlapping the send and accept lifetimes of multiple key chain elements, key strings and algorithms may be gracefully updated.  By representing them in a YANG data model, key distribution can be automated.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8177"/>
          <seriesInfo name="DOI" value="10.17487/RFC8177"/>
        </reference>
        <reference anchor="RFC8294">
          <front>
            <title>Common YANG Data Types for the Routing Area</title>
            <author fullname="X. Liu" initials="X." surname="Liu">
              <organization/>
            </author>
            <author fullname="Y. Qu" initials="Y." surname="Qu">
              <organization/>
            </author>
            <author fullname="A. Lindem" initials="A." surname="Lindem">
              <organization/>
            </author>
            <author fullname="C. Hopps" initials="C." surname="Hopps">
              <organization/>
            </author>
            <author fullname="L. Berger" initials="L." surname="Berger">
              <organization/>
            </author>
            <date month="December" year="2017"/>
            <abstract>
              <t>This document defines a collection of common data types using the YANG data modeling language.  These derived common types are designed to be imported by other modules defined in the routing area.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8294"/>
          <seriesInfo name="DOI" value="10.17487/RFC8294"/>
        </reference>
        <reference anchor="RFC8343">
          <front>
            <title>A YANG Data Model for Interface Management</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund">
              <organization/>
            </author>
            <date month="March" year="2018"/>
            <abstract>
              <t>This document defines a YANG data model for the management of network interfaces.  It is expected that interface-type-specific data models augment the generic interfaces data model defined in this document. The data model includes definitions for configuration and system state (status information and counters for the collection of statistics).</t>
              <t>The YANG data model in this document conforms to the Network Management Datastore Architecture (NMDA) defined in RFC 8342.</t>
              <t>This document obsoletes RFC 7223.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8343"/>
          <seriesInfo name="DOI" value="10.17487/RFC8343"/>
        </reference>
        <reference anchor="RFC9181">
          <front>
            <title>A Common YANG Data Model for Layer 2 and Layer 3 VPNs</title>
            <author fullname="S. Barguil" initials="S." surname="Barguil">
              <organization/>
            </author>
            <author fullname="O. Gonzalez de Dios" initials="O." role="editor" surname="Gonzalez de Dios">
              <organization/>
            </author>
            <author fullname="M. Boucadair" initials="M." role="editor" surname="Boucadair">
              <organization/>
            </author>
            <author fullname="Q. Wu" initials="Q." surname="Wu">
              <organization/>
            </author>
            <date month="February" year="2022"/>
            <abstract>
              <t>This document defines a common YANG module that is meant to be reused by various VPN-related modules such as Layer 3 VPN and Layer 2 VPN network models.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9181"/>
          <seriesInfo name="DOI" value="10.17487/RFC9181"/>
        </reference>
        <reference anchor="RFC6241">
          <front>
            <title>Network Configuration Protocol (NETCONF)</title>
            <author fullname="R. Enns" initials="R." role="editor" surname="Enns">
              <organization/>
            </author>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund">
              <organization/>
            </author>
            <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder">
              <organization/>
            </author>
            <author fullname="A. Bierman" initials="A." role="editor" surname="Bierman">
              <organization/>
            </author>
            <date month="June" year="2011"/>
            <abstract>
              <t>The Network Configuration Protocol (NETCONF) defined in this document provides mechanisms to install, manipulate, and delete the configuration of network devices.  It uses an Extensible Markup Language (XML)-based data encoding for the configuration data as well as the protocol messages.  The NETCONF protocol operations are realized as remote procedure calls (RPCs).  This document obsoletes RFC 4741.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6241"/>
          <seriesInfo name="DOI" value="10.17487/RFC6241"/>
        </reference>
        <reference anchor="RFC8040">
          <front>
            <title>RESTCONF Protocol</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman">
              <organization/>
            </author>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund">
              <organization/>
            </author>
            <author fullname="K. Watsen" initials="K." surname="Watsen">
              <organization/>
            </author>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document describes an HTTP-based protocol that provides a programmatic interface for accessing data defined in YANG, using the datastore concepts defined in the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8040"/>
          <seriesInfo name="DOI" value="10.17487/RFC8040"/>
        </reference>
        <reference anchor="RFC6242">
          <front>
            <title>Using the NETCONF Protocol over Secure Shell (SSH)</title>
            <author fullname="M. Wasserman" initials="M." surname="Wasserman">
              <organization/>
            </author>
            <date month="June" year="2011"/>
            <abstract>
              <t>This document describes a method for invoking and running the Network Configuration Protocol (NETCONF) within a Secure Shell (SSH) session as an SSH subsystem.  This document obsoletes RFC 4742.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6242"/>
          <seriesInfo name="DOI" value="10.17487/RFC6242"/>
        </reference>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol.  TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961.  This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC8341">
          <front>
            <title>Network Configuration Access Control Model</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman">
              <organization/>
            </author>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund">
              <organization/>
            </author>
            <date month="March" year="2018"/>
            <abstract>
              <t>The standardization of network configuration interfaces for use with the Network Configuration Protocol (NETCONF) or the RESTCONF protocol requires a structured and secure operating environment that promotes human usability and multi-vendor interoperability.  There is a need for standard mechanisms to restrict NETCONF or RESTCONF protocol access for particular users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content.  This document defines such an access control model.</t>
              <t>This document obsoletes RFC 6536.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="91"/>
          <seriesInfo name="RFC" value="8341"/>
          <seriesInfo name="DOI" value="10.17487/RFC8341"/>
        </reference>
        <reference anchor="RFC3688">
          <front>
            <title>The IETF XML Registry</title>
            <author fullname="M. Mealling" initials="M." surname="Mealling">
              <organization/>
            </author>
            <date month="January" year="2004"/>
            <abstract>
              <t>This document describes an IANA maintained registry for IETF standards which use Extensible Markup Language (XML) related items such as Namespaces, Document Type Declarations (DTDs), Schemas, and Resource Description Framework (RDF) Schemas.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="81"/>
          <seriesInfo name="RFC" value="3688"/>
          <seriesInfo name="DOI" value="10.17487/RFC3688"/>
        </reference>
        <reference anchor="RFC6020">
          <front>
            <title>YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund">
              <organization/>
            </author>
            <date month="October" year="2010"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration and state data manipulated by the Network Configuration Protocol (NETCONF), NETCONF remote procedure calls, and NETCONF notifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6020"/>
          <seriesInfo name="DOI" value="10.17487/RFC6020"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC8969">
          <front>
            <title>A Framework for Automating Service and Network Management with YANG</title>
            <author fullname="Q. Wu" initials="Q." role="editor" surname="Wu">
              <organization/>
            </author>
            <author fullname="M. Boucadair" initials="M." role="editor" surname="Boucadair">
              <organization/>
            </author>
            <author fullname="D. Lopez" initials="D." surname="Lopez">
              <organization/>
            </author>
            <author fullname="C. Xie" initials="C." surname="Xie">
              <organization/>
            </author>
            <author fullname="L. Geng" initials="L." surname="Geng">
              <organization/>
            </author>
            <date month="January" year="2021"/>
            <abstract>
              <t>Data models provide a programmatic approach to represent services and networks. Concretely, they can be used to derive configuration information for network and service components, and state information that will be monitored and tracked.  Data models can be used during the service and network management life cycle (e.g., service instantiation, service provisioning, service optimization, service monitoring, service diagnosing, and service assurance).  Data models are also instrumental in the automation of network management, and they can provide closed-loop control for adaptive and deterministic service creation, delivery, and maintenance.</t>
              <t>This document describes a framework for service and network management automation that takes advantage of YANG modeling technologies. This framework is drawn from a network operator perspective irrespective of the origin of a data model; thus, it can accommodate YANG modules that are developed outside the IETF.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8969"/>
          <seriesInfo name="DOI" value="10.17487/RFC8969"/>
        </reference>
        <reference anchor="RFC8340">
          <front>
            <title>YANG Tree Diagrams</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund">
              <organization/>
            </author>
            <author fullname="L. Berger" initials="L." role="editor" surname="Berger">
              <organization/>
            </author>
            <date month="March" year="2018"/>
            <abstract>
              <t>This document captures the current syntax used in YANG module tree diagrams.  The purpose of this document is to provide a single location for this definition.  This syntax may be updated from time to time based on the evolution of the YANG language.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="215"/>
          <seriesInfo name="RFC" value="8340"/>
          <seriesInfo name="DOI" value="10.17487/RFC8340"/>
        </reference>
      </references>
    </references>
    <section anchor="full-tree">
      <name>Full Tree</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      ac-svc: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
          +--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 encapsulation
       |  |  +--rw encap-type?        identityref
       |  |  +--rw dot1q
       |  |  |  +--rw tag-type?         identityref
       |  |  |  +--rw cvlan-id?         dot1q-types:vlanid
       |  |  |  +--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          dot1q-types:vlanid
       |  |     +--rw cvlan-id          dot1q-types:vlanid
       |  |     +--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 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: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 primary-address?                   -> ../address/address-id
       |  |        +--rw address* [address-id]
       |  |           +--rw address-id          string
       |  |           +--rw customer-address?   inet:ipv6-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 primary-address?                   -> ../address/address-id
       |           +--rw address* [address-id]
       |              +--rw address-id          string
       |              +--rw customer-address?   inet:ipv6-address
       +--rw routing-protocols
       |  +--rw routing-protocol* [id]
       |     +--rw id                  string
       |     +--rw type?               identityref
       |     +--rw routing-profiles* [id]
       |     |  +--rw id      ac-svc:routing-profile-reference
       |     |  +--rw type?   identityref
       |     +--rw static
       |     |  +--rw cascaded-lan-prefixes
       |     |     +--rw ipv4-lan-prefixes* [lan next-hop] {vpn-common:ipv4}?
       |     |     |  +--rw lan           inet:ipv4-prefix
       |     |     |  +--rw lan-tag?      string
       |     |     |  +--rw next-hop      union
       |     |     |  +--rw bfd-enable?   boolean {vpn-common:bfd}?
       |     |     |  +--rw metric?       uint32
       |     |     |  +--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:ipv6-prefix
       |     |        +--rw lan-tag?      string
       |     |        +--rw next-hop      union
       |     |        +--rw bfd-enable?   boolean {vpn-common:bfd}?
       |     |        +--rw metric?       uint32
       |     |        +--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
       |     |  |              +--:(ipsec)
       |     |  |                 +--rw sa?                 string
       |     |  +--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
       |     |     |        +--:(ipsec)
       |     |     |           +--rw sa?                 string
       |     |     +--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
       |     |  |        +--:(ipsec)
       |     |  |           +--rw sa?                 string
       |     |  +--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      ac-svc: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 bfd
       |     +--rw profile?                    ac-svc:bfd-profile-reference
       |     +--rw session-type?               identityref
       |     +--rw desired-min-tx-interval?    uint32
       |     +--rw required-min-rx-interval?   uint32
       |     +--rw local-multiplier?           uint8
       |     +--rw holdtime?                   uint32
       |     +--rw authentication!
       |     |  +--rw key-chain?    key-chain:key-chain-ref
       |     |  +--rw meticulous?   boolean
       |     +--rw status
       |        +--rw admin-status
       |        |  +--rw status?        identityref
       |        |  +--rw last-change?   yang:date-and-time
       |        +--ro oper-status
       |           +--ro status?        identityref
       |           +--ro last-change?   yang:date-and-time
       +--rw security
          +--rw encryption {vpn-common:encryption}?
          |  +--rw enabled?   boolean
          |  +--rw layer?     enumeration
          +--rw encryption-profile
             +--rw (profile)?
                +--:(provider-profile)
                |  +--rw profile-name?         ac-svc:encryption-profile-reference
                +--:(customer-profile)
                   +--rw customer-key-chain?   key-chain:key-chain-ref
]]></artwork>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
a/8XCvFvBAoQAgA=

-->

</rfc>
