<?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.17 (Ruby 3.1.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-boro-opsawg-teas-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="ACSM">A YANG Service Data Model for Attachment Circuits</title>
    <seriesInfo name="Internet-Draft" value="draft-boro-opsawg-teas-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="09"/>
    <area>Operations and Management</area>
    <workgroup>OPSAWG</workgroup>
    <keyword>Slice Service</keyword>
    <keyword>L3VPN</keyword>
    <keyword>L2VPN</keyword>
    <abstract>
      <t>This document specifies a YANG service data model for Attachment Circuits (ACs). The model can be used for the provisioning of ACs prior or during service provisioning (e.g., Network Slice Service).</t>
      <t>The model is designed with the intent to be reusable. Whether a service model reuses structures defined in the AC service model or simply include an AC reference is a design choice of these service models. Relying upon the AC model to manage ACs over which a service is delivered has the merit to decorrelate the management of a service vs. upgrade the AC components to reflect recent AC technologies or features.</t>
      <t>Each AC is identified with a unique identifier within a domain. The mapping between this AC and a PE that terminates the AC is hidden to the application/customer that makes use of the AC service model. Such an information is internal to the network controller. Thus, the details about the (network node-specific) attachment interfaces are not exposed in this service model.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Operations and Management Area Working Group Working Group mailing list (opsawg@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/opsawg/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/boucadair/attachment-circuit-model"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>This document specifies a YANG service data model for managing attachment circuits (ACs) that are exposed by a network to its customers (e.g., an enterprise site, a network function, a hosting infrastructure, a peer network provider) . The model can be used for the provisioning of ACs prior or during advanced service provisioning (e.g., Network Slice Service).</t>
      <t>Also, the model is designed with the intent to be reusable. Whether a service model reuses structures defined in the AC service model or simply includes an AC reference (that was communicated during AC instantiation) is a design choice of these service models. Relying upon the AC service model to manage ACs over which services are delivered has the merit to decorrelate the management of a service vs. upgrade the AC components to reflect recent AC technologies or new features (e.g., new encryption scheme, additional routing protocol).</t>
      <t>Each AC is identified with a unique identifier within a domain. From a network provider standpoint, an AC can be bound to a single or multiple SAPs <xref target="I-D.ietf-opsawg-sap"/>. Likewise, a SAP can be bound to one or multiple ACs. However, the mapping between this AC and a local PE that terminates the AC is hidden to the application that makes use of the AC service model. This information is internal to the Network controller. As such, the details about the (node-specific) attachment interfaces are not exposed in this service model.</t>
      <t>The YANG data model in this document conforms to the Network Management Datastore Architecture (NMDA) defined in <xref target="RFC8342"/>.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <t>The meanings of the symbols in the YANG tree diagrams are defined in <xref target="RFC8340"/>.</t>
      <t>This document uses the following terms:</t>
      <dl>
        <dt>Network controller:</dt>
        <dd>
          <t>Denotes a functional entity responsible for the management of the service provider network.</t>
        </dd>
        <dt>Service orchestrator:</dt>
        <dd>
          <t>Refers to a functional entity that interacts with the customer of a network service. The service orchestrator is typically responsible for the attachment circuits, the Provider Edge (PE) selection, and requesting the activation of the requested service to a network controller.</t>
        </dd>
        <dt>Service provider network:</dt>
        <dd>
          <t>A network that is able to provide network services (e.g., Network Slice Services).</t>
        </dd>
        <dt>Service provider:</dt>
        <dd>
          <t>A service provider that offers network services (e.g., Network Slice Services).</t>
        </dd>
      </dl>
    </section>
    <section anchor="sample-uses-of-the-attachment-circuit-data-models">
      <name>Sample Uses of the Attachment Circuit Data Models</name>
      <t><xref target="uc"/> depictes two target topology flavors that may host ACs. A CE may be a physical node or a logical entity. The same AC request may include one or multiple ACs that may belong to one or both of these flavors. For the sake of simplfying the illustration, only a subset of these ACs is shown in <xref target="uc"/>.</t>
      <t>CEs may be dedicated to one single service or host multiple services (e.g., service functions <xref target="RFC7665"/>). A single AC (as seen by a network provider) may be bound to one or multiple peer SAPs.</t>
      <figure anchor="uc">
        <name>Examples of ACs</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="336" width="448" viewBox="0 0 448 336" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <g class="text">
                <text x="40" y="36">┌───────┐</text>
                <text x="348" y="36">┌──────────────────────┐</text>
                <text x="8" y="52">│</text>
                <text x="108" y="52">├────────┐</text>
                <text x="256" y="52">│</text>
                <text x="440" y="52">│</text>
                <text x="8" y="68">│</text>
                <text x="40" y="68">CE1</text>
                <text x="72" y="68">│</text>
                <text x="144" y="68">│</text>
                <text x="256" y="68">│</text>
                <text x="440" y="68">│</text>
                <text x="40" y="84">└───────┘</text>
                <text x="144" y="84">│</text>
                <text x="256" y="84">│</text>
                <text x="440" y="84">│</text>
                <text x="200" y="100">├─────────────┤</text>
                <text x="336" y="100">Network</text>
                <text x="440" y="100">│</text>
                <text x="40" y="116">┌───────┐</text>
                <text x="144" y="116">│</text>
                <text x="256" y="116">│</text>
                <text x="440" y="116">│</text>
                <text x="8" y="132">│</text>
                <text x="72" y="132">│</text>
                <text x="144" y="132">│</text>
                <text x="256" y="132">│</text>
                <text x="440" y="132">│</text>
                <text x="8" y="148">│</text>
                <text x="40" y="148">CE2</text>
                <text x="108" y="148">├────────┘</text>
                <text x="256" y="148">│</text>
                <text x="440" y="148">│</text>
                <text x="40" y="164">└───────┘</text>
                <text x="348" y="164">└──────────────────────┘</text>
                <text x="40" y="196">┌───────┐</text>
                <text x="348" y="196">┌──────────────────────┐</text>
                <text x="8" y="212">│</text>
                <text x="72" y="212">│</text>
                <text x="256" y="212">│</text>
                <text x="440" y="212">│</text>
                <text x="8" y="228">│</text>
                <text x="40" y="228">CE1</text>
                <text x="164" y="228">├──────────────────────┤</text>
                <text x="440" y="228">│</text>
                <text x="40" y="244">└───────┘</text>
                <text x="256" y="244">│</text>
                <text x="440" y="244">│</text>
                <text x="256" y="260">│</text>
                <text x="336" y="260">Network</text>
                <text x="440" y="260">│</text>
                <text x="40" y="276">┌───────┐</text>
                <text x="256" y="276">│</text>
                <text x="440" y="276">│</text>
                <text x="8" y="292">│</text>
                <text x="164" y="292">├──────────────────────┤</text>
                <text x="440" y="292">│</text>
                <text x="8" y="308">│</text>
                <text x="40" y="308">CE2</text>
                <text x="72" y="308">│</text>
                <text x="256" y="308">│</text>
                <text x="440" y="308">│</text>
                <text x="40" y="324">└───────┘</text>
                <text x="348" y="324">└──────────────────────┘</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
┌───────┐                      ┌──────────────────────┐
│       ├────────┐             │                      │
│  CE1  │        │             │                      │
└───────┘        │             │                      │
                 ├─────────────┤      Network         │
┌───────┐        │             │                      │
│       │        │             │                      │
│  CE2  ├────────┘             │                      │
└───────┘                      └──────────────────────┘

┌───────┐                      ┌──────────────────────┐
│       │                      │                      │
│  CE1  ├──────────────────────┤                      │
└───────┘                      │                      │
                               │      Network         │
┌───────┐                      │                      │
│       ├──────────────────────┤                      │
│  CE2  │                      │                      │
└───────┘                      └──────────────────────┘
]]></artwork>
        </artset>
      </figure>
      <section anchor="separate-ac-provisioning-vs-actual-service-provisioning">
        <name>Separate AC Provisioning vs. Actual Service Provisioning</name>
        <t>The procedure to provision a service in a service provider network may depend on the practices adopted by a service provider, including the flow put in place for the provisioning of advanced network services and how they are bound to an attachment circuit. For example, the same attachment circuit may be used to host multiple services. In order to avoid service interference and redundant information in various locations, a service provider may expose an interface to manage ACs network-wide. Customers can the request a base attachment circuit to be put in place, and then refer to that base AC when requesting services that are bound to that AC.</t>
        <t><xref target="_u-ex"/> shows the positioning of the AC service model is the overall service delivery process.</t>
        <figure anchor="_u-ex">
          <name>An Example of AC Model Usage</name>
          <artwork align="center"><![CDATA[
                          +---------------+
                          |   Customer    |
                          +-------+-------+
          Customer Service Model  |
        e.g., slice-svc, ac-svc   |
                          +-------+-------+
                          |    Service    |
                          | Orchestration |
                          +-------+-------+
           Network Model          |
     e.g., l3vpn-ntw, sap, ac-ntw |
                          +-------+-------+
                          |   Network     |
                          | Orchestration |
                          +-------+-------+
    Network Configuration Model   |
                      +-----------+-----------+
                      |                       |
             +--------+------+       +--------+------+
             |    Domain     |       |     Domain    |
             | Orchestration |       | Orchestration |
             +---+-----------+       +--------+------+
  Device         |        |                   |
  Configuration  |        |                   |
  Model          |        |                   |
            +----+----+   |                   |
            | Config  |   |                   |
            | Manager |   |                   |
            +----+----+   |                   |
                 |        |                   |
                 | NETCONF/CLI..................
                 |        |                   |
]]></artwork>
        </figure>
      </section>
      <section anchor="examples">
        <name>Examples</name>
        <t>This section includes a non-exhaustive list of examples to illustrate the use of the AC service model.</t>
      </section>
      <section anchor="request-an-ac-over-an-existing-bearer">
        <name>Request An AC over An Existing Bearer</name>
        <t>An example of of a request message body to create a simple AC over an existing bearer is shown in <xref target="ac-b"/>. The bearer reference is assumed to be known to both the customer and the network provider. How such reference is shared is out of scope.</t>
        <figure anchor="ac-b">
          <name>Example of a Message Body to Request an AC over an Existing Bearer</name>
          <artwork align="center"><![CDATA[
{
  "ietf-ac-svc:attachment-circuits": {
    "ac": [
      {
        "name": "ac4585",
        "description": "An AC on an existing bearer",
        "requested-ac-start": "2023-12-12T05:00:00.00Z",
        "l2-connection": {
          "encapsulation": {
            "type": "ietf-vpn-common:dot1q",
            "dot1q": {
              "tag-type": "ietf-vpn-common:c-vlan",
              "cvlan-id": 550
            }
          },
          "bearer-reference": "line-156"
        }
      }
    ]
  }
}
]]></artwork>
        </figure>
      </section>
      <section anchor="request-an-ac-for-a-knwon-peer-sap">
        <name>Request An AC for a Knwon Peer SAP</name>
        <t>An example of a request to create a simple AC, when the peer SAP is known, is shown in <xref target="ac-known-ps"/>. In this example, the peer SAP identifier points to an identifier of a service function. The (topological) location of that service function is assumed to be known to the network controller. For example, this can be determined as part of an on-demand procedure to instantiate a service function in a cloud. That instantiated service function can be granted a connectivity service via the provider network.</t>
        <figure anchor="ac-known-ps">
          <name>Example of a Message Body to Request an AC with a Peer SAP</name>
          <artwork><![CDATA[
{
  "ietf-ac-svc:attachment-circuits": {
    "ac": [
      {
        "name": "ac4585",
        "description": "An AC on an existing bearer",
        "requested-ac-start": "2023-12-12T05:00:00.00Z",
        "peer-sap-id": [
          "nf-termination-ip"
        ],
        "l2-connection": {
          "encapsulation": {
            "type": "ietf-vpn-common:dot1q",
            "dot1q": {
              "tag-type": "ietf-vpn-common:c-vlan",
              "cvlan-id": 550
            }
          }
        }
      }
    ]
  }
}
]]></artwork>
        </figure>
      </section>
      <section anchor="one-ce-two-acs">
        <name>One CE, Two ACs</name>
        <t>An example of a request to create two ACs to service the same CE on the same link is shown in <xref target="two-acs-same-ce"/>. This example assumes that static addressing is used for both ACs.</t>
        <figure anchor="two-acs-same-ce">
          <name>Example of a Message Body to Request Two ACes on The Same Link</name>
          <artwork><![CDATA[
{
  "ietf-ac-svc:attachment-circuits": {
    "ac": [
      {
        "name": "ac1",
        "description": "a first ac with a same peer node",
        "l2-connection": {
          "encapsulation": {
            "type": "ietf-vpn-common:dot1q",
            "dot1q": {
              "cvlan-id": 1
            }
          }
        },
        "ip-connection": {
          "ipv4": {
            "local-address": "192.0.2.1",
            "prefix-length": 30,
            "address": [
              {
                "address-id": "1",
                "customer-address": "192.0.2.2"
              }
            ]
          },
          "ipv6": {
            "local-address": "2001:db8::1",
            "prefix-length": 64,
            "address": [
              {
                "address-id": "1",
                "customer-address": "2001:db8::2"
              }
            ]
          }
        },
        "routing-protocols": {
          "routing-protocol": [
            {
              "id": "1",
              "type": "ietf-vpn-common:direct-routing"
            }
          ]
        }
      },
      {
        "name": "ac2",
        "description": "a second ac with a same peer node",
        "l2-connection": {
          "encapsulation": {
            "type": "ietf-vpn-common:dot1q",
            "dot1q": {
              "cvlan-id": 2
            }
          }
        },
        "ip-connection": {
          "ipv4": {
            "local-address": "192.0.2.1",
            "prefix-length": 30,
            "address": [
              {
                "address-id": "1",
                "customer-address": "192.0.2.2"
              }
            ]
          },
          "ipv6": {
            "local-address": "2001:db8::1",
            "prefix-length": 64,
            "address": [
              {
                "address-id": "1",
                "customer-address": "2001:db8::2"
              }
            ]
          }
        },
        "routing-protocols": {
          "routing-protocol": [
            {
              "id": "1",
              "type": "ietf-vpn-common:direct-routing"
            }
          ]
        }
      }
    ]
  }
}
]]></artwork>
        </figure>
      </section>
      <section anchor="illustrate-the-use-of-global-profiles">
        <name>Illustrate the Use of Global Profiles</name>
        <t>An example of a request to create two ACs to service the same CE on the same link is shown in <xref target="two-acs-same-ce-profile"/>. Unlike <xref target="two-acs-same-ce"/>, this example factorizes some of the redundant data.</t>
        <figure anchor="two-acs-same-ce-profile">
          <name>Example of a Message Body to Request Two ACes on The Same Link (Global Profile)</name>
          <artwork><![CDATA[
{
  "ietf-ac-svc:attachment-circuits": {
    "ac-global-profile": [
      {
        "id": "simple-profile",
        "l2-connection": {
          "encapsulation": {
            "type": "ietf-vpn-common:dot1q"
          }
        },
        "routing-protocols": {
          "routing-protocol": [
            {
              "id": "1",
              "type": "ietf-vpn-common:direct-routing"
            }
          ]
        }
      }
    ],
    "ac": [
      {
        "name": "ac1",
        "description": "a first ac with a same peer node",
        "ac-global-profile": ["simple-profile"],
        "l2-connection": {
          "encapsulation": {
            "dot1q": {
              "cvlan-id": 1
            }
          }
        },
        "ip-connection": {
          "ipv4": {
            "local-address": "192.0.2.1",
            "prefix-length": 30,
            "address": [
              {
                "address-id": "1",
                "customer-address": "192.0.2.2"
              }
            ]
          },
          "ipv6": {
            "local-address": "2001:db8::1",
            "prefix-length": 64,
            "address": [
              {
                "address-id": "1",
                "customer-address": "2001:db8::2"
              }
            ]
          }
        }
      },
      {
        "name": "ac2",
        "description": "a second ac with a same peer node",
        "ac-global-profile": ["simple-profile"],
        "l2-connection": {
          "encapsulation": {
            "dot1q": {
              "cvlan-id": 2
            }
          }
        },
        "ip-connection": {
          "ipv4": {
            "local-address": "192.0.2.1",
            "prefix-length": 30,
            "address": [
              {
                "address-id": "1",
                "customer-address": "192.0.2.2"
              }
            ]
          },
          "ipv6": {
            "local-address": "2001:db8::1",
            "prefix-length": 64,
            "address": [
              {
                "address-id": "1",
                "customer-address": "2001:db8::2"
              }
            ]
          }
        }
      }
    ]
  }
}
]]></artwork>
        </figure>
      </section>
      <section anchor="illustrate-the-use-of-per-node-profiles">
        <name>Illustrate the Use of Per-Node Profiles</name>
        <t>An example of a request to create two ACs to service the same CE on the same link is shown in <xref target="two-acs-same-ce-node-profile"/>. Unlike <xref target="two-acs-same-ce"/>, this example factorizes all redundant data.</t>
        <figure anchor="two-acs-same-ce-node-profile">
          <name>Example of a Message Body to Request Two ACes on The Same Link (Node Profile)</name>
          <artwork><![CDATA[
{
  "ietf-ac-svc:attachment-circuits": {
    "ac-node-group": [
      {
        "id": "simple-node-profile",
        "l2-connection": {
          "encapsulation": {
            "type": "ietf-vpn-common:dot1q"
          }
        },
        "ip-connection": {
          "ipv4": {
            "local-address": "192.0.2.1",
            "prefix-length": 30,
            "address": [
              {
                "address-id": "1",
                "customer-address": "192.0.2.2"
              }
            ]
          },
          "ipv6": {
            "local-address": "2001:db8::1",
            "prefix-length": 64,
            "address": [
              {
                "address-id": "1",
                "customer-address": "2001:db8::2"
              }
            ]
          }
        },
        "routing-protocols": {
          "routing-protocol": [
            {
              "id": "1",
              "type": "ietf-vpn-common:direct-routing"
            }
          ]
        }
      }
    ],
    "ac": [
      {
        "name": "ac1",
        "description": "a first ac with a same peer node",
        "ac-node-profile": ["simple-node-profile"],
        "l2-connection": {
          "encapsulation": {
            "dot1q": {
              "cvlan-id": 1
            }
          }
        }
      },
      {
        "name": "ac2",
        "description": "a second ac with a same peer node",
        "ac-node-profile": ["simple-node-profile"],
        "l2-connection": {
          "encapsulation": {
            "dot1q": {
              "cvlan-id": 2
            }
          }
        }
     }
    ]
  }
}
]]></artwork>
        </figure>
        <t>A customer may request adding a new AC by simply referring to an existing per-node AC profile as shown in <xref target="add-ac-same-ce-node-profile"/>. This AC inherites all the data that was enclosed in the indicated per-node AC profile (IP addressing, routing, etc.).</t>
        <figure anchor="add-ac-same-ce-node-profile">
          <name>Example of a Message Body to Add a new AC over an existing link (Node Profile)</name>
          <artwork><![CDATA[
{
  "ietf-ac-svc:attachment-circuits": {
    "ac": [
      {
        "name": "ac3",
        "description": "a third AC with a same peer node",
        "ac-node-profile": [
          "simple-node-profile"
        ],
        "l2-connection": {
          "encapsulation": {
            "dot1q": {
              "cvlan-id": 3
            }
          },
          "bearer-reference": "line-156"
        }
      }
    ]
  }
}
]]></artwork>
        </figure>
      </section>
      <section anchor="multiple-ces">
        <name>Multiple CEs</name>
        <t><xref target="network-example"/> shows an example of CEs that are interconnected by a service provider network.</t>
        <figure anchor="network-example">
          <name>Network Topology Example</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="192" width="504" viewBox="0 0 504 192" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 8,48 L 8,80" fill="none" stroke="black"/>
                <path d="M 8,112 L 8,144" fill="none" stroke="black"/>
                <path d="M 48,48 L 48,80" fill="none" stroke="black"/>
                <path d="M 48,112 L 48,144" fill="none" stroke="black"/>
                <path d="M 112,32 L 112,160" fill="none" stroke="black"/>
                <path d="M 392,32 L 392,160" fill="none" stroke="black"/>
                <path d="M 456,48 L 456,80" fill="none" stroke="black"/>
                <path d="M 456,112 L 456,144" fill="none" stroke="black"/>
                <path d="M 496,48 L 496,80" fill="none" stroke="black"/>
                <path d="M 496,112 L 496,144" fill="none" stroke="black"/>
                <path d="M 112,32 L 392,32" fill="none" stroke="black"/>
                <path d="M 8,48 L 48,48" fill="none" stroke="black"/>
                <path d="M 456,48 L 496,48" fill="none" stroke="black"/>
                <path d="M 48,64 L 112,64" fill="none" stroke="black"/>
                <path d="M 392,64 L 456,64" fill="none" stroke="black"/>
                <path d="M 8,80 L 48,80" fill="none" stroke="black"/>
                <path d="M 456,80 L 496,80" fill="none" stroke="black"/>
                <path d="M 8,112 L 48,112" fill="none" stroke="black"/>
                <path d="M 456,112 L 496,112" fill="none" stroke="black"/>
                <path d="M 48,128 L 112,128" fill="none" stroke="black"/>
                <path d="M 392,128 L 456,128" fill="none" stroke="black"/>
                <path d="M 8,144 L 48,144" fill="none" stroke="black"/>
                <path d="M 456,144 L 496,144" fill="none" stroke="black"/>
                <path d="M 112,160 L 392,160" fill="none" stroke="black"/>
                <g class="text">
                  <text x="32" y="68">CE1</text>
                  <text x="480" y="68">CE3</text>
                  <text x="256" y="100">Network</text>
                  <text x="24" y="132">CE2</text>
                  <text x="480" y="132">CE4</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
                   +----------------------------------+
      +----+       |                                  |       +----+
      | CE1+-------+                                  +-------+ CE3|
      +----+       |                                  |       +----+
                   |              Network             |
      +----+       |                                  |       +----+
      |CE2 +-------+                                  +-------+ CE4|
      +----+       |                                  |       +----+
                   +----------------------------------+
]]></artwork>
          </artset>
        </figure>
        <t><xref target="multiple-sites"/> depicts an example of the message body of a request to instantiate the various ACs that are shown in <xref target="network-example"/>.</t>
        <figure anchor="multiple-sites">
          <name>Example of a Message Body to of Creating Multiple ACs bound to Multiple CEs</name>
          <artwork><![CDATA[
{
  "ietf-ac-svc:attachment-circuits": {
    "ac-global-profile": [
      {
        "id": "simple-profile",
        "l2-connection": {
          "encapsulation": {
            "type": "ietf-vpn-common:dot1q",
            "dot1q": {
              "cvlan-id": 1
            }
          }
        }
      }
    ],
    "ac": [
      {
        "name": "ac1",
        "description": "Connect a first site",
        "ac-global-profile": [
          "simple-node-profile"
        ],
        "l2-connection": {
          "bearer-reference": "ce1-network"
        }
      },
      {
        "name": "ac2",
        "description": "Connect a second Site",
        "ac-global-profile": [
          "simple-node-profile"
        ],
        "l2-connection": {
          "bearer-reference": "ce2-network"
        }
      },
      {
        "name": "ac3",
        "description": "Connect a third site",
        "ac-global-profile": [
          "simple-node-profile"
        ],
        "l2-connection": {
          "bearer-reference": "ce3-network"
        }
      },
      {
        "name": "ac4",
        "description": "Connect a forth site",
        "ac-global-profile": [
          "simple-node-profile"
        ],
        "l2-connection": {
          "bearer-reference": "ce4-network"
        }
      }
    ]
  }
}
]]></artwork>
        </figure>
      </section>
    </section>
    <section anchor="description-of-the-attachment-circuit-yang-module">
      <name>Description of the Attachment Circuit YANG Module</name>
      <section anchor="overall-structure-of-the-module">
        <name>Overall Structure of the Module</name>
        <t>The overall tree structure of the AC service module is shown in <xref target="o-svc-tree"/>.</t>
        <figure anchor="o-svc-tree">
          <name>Overall AC Service Tree Structure</name>
          <artwork align="center"><![CDATA[
module: ietf-ac-svc
  +--rw specific-provisioning-profiles
  |  ...
  +--rw service-provisioning-profiles
  |  ...
  +--rw attachment-circuits
     +--rw ac-global-profile* [id]
     |  ...
     +--rw ac-node-group* [id]
     |  ...
     +--rw ac* [id]
        +--rw peer-sap-id*         string
        +--rw profile-id*
        |       -> /attachment-circuits/ac-global-profile/id
        +--rw id                   string
        +--rw l2-connection
        |  ...
        +--rw ip-connection
        |  ...
        +--rw routing-protocols
        |  ...
        +--rw oam
        |  ...
        +--rw security
           ...
]]></artwork>
        </figure>
        <t>The full tree structure is provided in <xref target="full-tree"/>.</t>
        <t>Each AC is identified with a unique identifier within a domain. The mapping between this AC and a local PE that terminates the AC is hidden to the application that makes use of the AC service model. This information is internal to the Network controller. As such, the details about the (node-specific) attachment interfaces are not exposed in this service model.</t>
      </section>
      <section anchor="service-profiles">
        <name>Service Profiles</name>
        <section anchor="description">
          <name>Description</name>
          <t>The 'specific-provisioning-profiles' container (<xref target="gp-svc-tree"/>) can be used by a service provider to maintain a set of specific profiles that are similar to those defined in <xref target="RFC9181"/>. The exact definition of the profiles is local to each service provider. The model only includes an identifier for these profiles in order to facilitate identifying and binding local policies when building an AC.</t>
          <figure anchor="gp-svc-tree">
            <name>Service Proviles</name>
            <artwork align="center"><![CDATA[
module: ietf-ac-svc
  +--rw specific-provisioning-profiles
  |  +--rw valid-provider-identifiers
  |     +--rw external-connectivity-identifier* [id]
  |     |       {external-connectivity}?
  |     |  +--rw id    string
  |     +--rw encryption-profile-identifier* [id]
  |     |  +--rw id    string
  |     +--rw qos-profile-identifier* [id]
  |     |  +--rw id    string
  |     +--rw bfd-profile-identifier* [id]
  |     |  +--rw id    string
  |     +--rw forwarding-profile-identifier* [id]
  |     |  +--rw id    string
  |     +--rw routing-profile-identifier* [id]
  |        +--rw id    string
  +--rw service-provisioning-profiles
  |  +--rw service-profile-identifier* [id]
  |     +--rw id    string
  +--rw attachment-circuits
     +--rw ac-global-profile* [id]
     |  ...
     +--rw ac-node-group* [id]
     |  ...
     +--rw ac* [name]
        ...
]]></artwork>
          </figure>
          <t>As shown in <xref target="gp-svc-tree"/>, two profile types can be defined: 'specific-provisioning-profiles' and 'service-provisioning-profiles'. Whether only specific profiles, service profiles, or a combination thereff are used is local to each service provider.</t>
          <t>The following specific rovisioning profiles can be defined:</t>
          <dl>
            <dt>'external-connectivity-identifier':</dt>
            <dd>
              <t>Refers to a profile that defines the external connectivity provided to a site that is connected via an AC. External connectivity may be access to the Internet or restricted connectivity, such as access to a public/private cloud.</t>
            </dd>
            <dt>'encryption-profile-identifier':</dt>
            <dd>
              <t>Refers to a set of policies related to the encryption setup that can be applied when provisioning an AC.</t>
            </dd>
            <dt>'qos-profile-identifier':</dt>
            <dd>
              <t>Refers to a set of policies, such as classification, marking, and actions (e.g., <xref target="RFC3644"/>).</t>
            </dd>
            <dt>'bfd-profile-identifier':</dt>
            <dd>
              <t>Refers to a set of Bidirectional Forwarding Detection (BFD) policies <xref target="RFC5880"/> that can be invoked when building an AC.</t>
            </dd>
            <dt>'forwarding-profile-identifier':</dt>
            <dd>
              <t>Refers to the policies that apply to the forwarding of packets conveyed within an AC. Such policies may consist, for example, of applying Access Control Lists (ACLs).</t>
            </dd>
            <dt>'routing-profile-identifier':</dt>
            <dd>
              <t>Refers to a set of routing policies that will be invoked (e.g., BGP policies) when building an AC.</t>
            </dd>
          </dl>
        </section>
        <section anchor="referencing-servicespecific-profiles">
          <name>Referencing Service/Specific Profiles</name>
          <t>All these profiles are uniquely identified by the NETCONF/RESTCONF server by an identifier. To ease referencing these profiles by other data models, specific typedefs are defined for each of these profiles. Likewise, an attachment circuit referenc typedef is defiened when referencing a (global) attachment circuit by its name is required. These typedefs <bcp14>SHOULD</bcp14> be used when other modules need a reference to one of these profiles or attahment circuits.</t>
        </section>
      </section>
      <section anchor="attachment-circuits-profiles">
        <name>Attachment Circuits Profiles</name>
      </section>
      <section anchor="node-specific-profiles">
        <name>Node-Specific Profiles</name>
      </section>
      <section anchor="attachment-circuits">
        <name>Attachment Circuits</name>
        <t>The structure of 'attachment-circuits' is shown in <xref target="ac-svc-tree"/>.</t>
        <figure anchor="ac-svc-tree">
          <name>Overall Attachment Circuits Tree Structure</name>
          <artwork align="center"><![CDATA[
module: ietf-ac-svc
  +--rw specific-provisioning-profiles
  |  ...
  +--rw service-provisioning-profiles
  |  ...
  +--rw attachment-circuits
     +--rw ac-global-profile* [id]
     |  ...f
     +--rw ac-node-group* [id]
     |  ...
     +--rw ac* [name]
        +--rw customer-name?        string
        +--rw description?          string
        +--rw requested-ac-start?   yang:date-and-time
        +--rw requested-ac-stop?    yang:date-and-time
        +--ro actual-ac-start?      yang:date-and-time
        +--ro actual-ac-stop?       yang:date-and-time
        +--rw peer-sap-id*          string
        +--rw ac-global-profile*    ac-global-profile-reference
        +--rw ac-node-profile*      ac-node-group-reference
        +--rw name                  string
        +--rw l2-connection
        |  ...
        +--rw ip-connection
        |  ...
        +--rw routing-protocols
        |  ...
        +--rw oam
        |  ...
        +--rw security
           ...
]]></artwork>
        </figure>
        <section anchor="layer-2-connection-structure">
          <name>Layer 2 Connection Structure</name>
          <t>As shown in the tree depicted in <xref target="l2-svc-tree"/>, the 'l2-connection' container defines service parameters to enable such connectivity at Layer 2.</t>
          <figure anchor="l2-svc-tree">
            <name>Layer 2 Connection Tree Structure</name>
            <artwork align="center"><![CDATA[
module: ietf-ac-svc
  +--rw specific-provisioning-profiles
  |  ...
  +--rw service-provisioning-profiles
  |  ...
  +--rw attachment-circuits
     +--rw ac-global-profile* [id]
     |  ...f
     +--rw ac-node-group* [id]
     |  ...
     +--rw ac* [name]
        ...
        +--rw name                  string
        +--rw l2-connection
        |  +--rw encapsulation
        |  |  +--rw type?              identityref
        |  |  +--rw dot1q
        |  |  |  +--rw tag-type?   identityref
        |  |  |  +--rw cvlan-id?   uint16
        |  |  +--rw priority-tagged
        |  |  |  +--rw tag-type?   identityref
        |  |  +--rw qinq
        |  |     +--rw tag-type?   identityref
        |  |     +--rw svlan-id    uint16
        |  |     +--rw cvlan-id    uint16
        |  +--rw (l2-service)?
        |  |  +--:(l2-tunnel-service)
        |  |  |  +--rw l2-tunnel-service
        |  |  |     +--rw type?         identityref
        |  |  |     +--rw pseudowire
        |  |  |     |  +--rw vcid?      uint32
        |  |  |     |  +--rw far-end?   union
        |  |  |     +--rw vpls
        |  |  |     |  +--rw vcid?      uint32
        |  |  |     |  +--rw far-end*   union
        |  |  |     +--rw vxlan
        |  |  |        +--rw vni-id             uint32
        |  |  |        +--rw peer-mode?         identityref
        |  |  |        +--rw peer-ip-address*   inet:ip-address
        |  |  +--:(l2vpn)
        |  |     +--rw l2vpn-id?            vpn-common:vpn-id
        |  +--rw bearer-reference?          string {vpn-common:bearer-reference}?
        +--rw ip-connection
        |  ...
        +--rw routing-protocols
        |  ...
        +--rw oam
        |  ...
        +--rw security
           ...
]]></artwork>
          </figure>
        </section>
        <section anchor="layer-3-connection-structure">
          <name>Layer 3 Connection Structure</name>
          <t>As shown in the tree depicted in <xref target="l3-svc-tree"/>, the 'l3-connection' container defines service parameters to enable Layer 3 connectivity for an AC.</t>
          <figure anchor="l3-svc-tree">
            <name>Layer 3 Connection Tree Structure</name>
            <artwork align="center"><![CDATA[
module: ietf-ac-svc
  +--rw specific-provisioning-profiles
  |  ...
  +--rw service-provisioning-profiles
  |  ...
  +--rw attachment-circuits
     +--rw ac-global-profile* [id]
     |  ...f
     +--rw ac-node-group* [id]
     |  ...
     +--rw ac* [name]
        ...
        +--rw name                  string
        +--rw l2-connection
        |  ...
        +--rw ip-connection
        |  +--rw ipv4 {vpn-common:ipv4}?
        |  |  +--rw local-address?                           inet:ipv4-address
        |  |  +--rw prefix-length?                           uint8
        |  |  +--rw address-allocation-type?                 identityref
        |  |  +--rw (allocation-type)?
        |  |     +--:(dynamic)
        |  |     |  +--rw (address-assign)?
        |  |     |  |  +--:(number)
        |  |     |  |  |  +--rw number-of-dynamic-address?   uint16
        |  |     |  |  +--:(explicit)
        |  |     |  |     +--rw customer-addresses
        |  |     |  |        +--rw address-pool* [pool-id]
        |  |     |  |           +--rw pool-id          string
        |  |     |  |           +--rw start-address    inet:ipv4-address
        |  |     |  |           +--rw end-address?     inet:ipv4-address
        |  |     |  +--rw (provider-dhcp)?
        |  |     |  |  +--:(dhcp-service-type)
        |  |     |  |     +--rw dhcp-service-type?           enumeration
        |  |     |  +--rw (dhcp-relay)?
        |  |     |     +--:(customer-dhcp-servers)
        |  |     |        +--rw customer-dhcp-servers
        |  |     |           +--rw server-ip-address*   inet:ipv4-address
        |  |     +--:(static-addresses)
        |  |        +--rw address* [address-id]
        |  |           +--rw address-id          string
        |  |           +--rw customer-address?   inet:ipv4-address
        |  +--rw ipv6 {vpn-common:ipv6}?
        |     +--rw local-address?                           inet:ipv6-address
        |     +--rw prefix-length?                           uint8
        |     +--rw address-allocation-type?                 identityref
        |     +--rw (allocation-type)?
        |        +--:(dynamic)
        |        |  +--rw (address-assign)?
        |        |  |  +--:(number)
        |        |  |  |  +--rw number-of-dynamic-address?   uint16
        |        |  |  +--:(explicit)
        |        |  |     +--rw customer-addresses
        |        |  |        +--rw address-pool* [pool-id]
        |        |  |           +--rw pool-id          string
        |        |  |           +--rw start-address    inet:ipv6-address
        |        |  |           +--rw end-address?     inet:ipv6-address
        |        |  +--rw (provider-dhcp)?
        |        |  |  +--:(dhcp-service-type)
        |        |  |     +--rw dhcp-service-type?           enumeration
        |        |  +--rw (dhcp-relay)?
        |        |     +--:(customer-dhcp-servers)
        |        |        +--rw customer-dhcp-servers
        |        |           +--rw server-ip-address*   inet:ipv6-address
        |        +--:(static-addresses)
        |           +--rw address* [address-id]
        |              +--rw address-id          string
        |              +--rw customer-address?   inet:ipv6-address
        +--rw routing-protocols
        |  ...
        +--rw oam
        |  ...
        +--rw security
           ...
]]></artwork>
          </figure>
        </section>
        <section anchor="routing">
          <name>Routing</name>
          <t>As shown in the tree depicted in <xref target="rtg-svc-tree"/>, the 'routing-protocols' container defines th erequired parameters to enable the required routing features for an AC. One or more routing protocols can be associated with an AC.  Such routing protocols are then enabled between a PE and the CE. Each routing instance is uniquely identified to accommodate scenarios where multiple instances of the same routing protocol have to be configured on the same link.</t>
          <t>In addition to static routing, the module supports the following routing protocols:</t>
          <ul spacing="normal">
            <li>BGP <xref target="RFC4271"/></li>
            <li>OSPF <xref target="RFC4577"/> or <xref target="RFC6565"/></li>
            <li>IS-IS <xref target="ISO10589"/><xref target="RFC1195"/><xref target="RFC5308"/></li>
            <li>RIP <xref target="RFC2453"/></li>
          </ul>
          <t>The model also supports the Virtual Router Redundancy Protocol (VRRP) <xref target="RFC5798"/> on an AC.</t>
          <figure anchor="rtg-svc-tree">
            <name>Routing Tree Structure</name>
            <artwork align="center"><![CDATA[
module: ietf-ac-svc
  +--rw specific-provisioning-profiles
  |  ...
  +--rw service-provisioning-profiles
  |  ...
  +--rw attachment-circuits
     +--rw ac-global-profile* [id]
     |  ...f
     +--rw ac-node-group* [id]
     |  ...
     +--rw ac* [name]
        ...
        +--rw name                  string
        +--rw l2-connection
        |  ...
        +--rw ip-connection
        |  ...
        +--rw routing-protocols
        |  +--rw routing-protocol* [id]
        |     +--rw id                  string
        |     +--rw type?               identityref
        |     +--rw routing-profiles* [id]
        |     |  +--rw id      routing-profile-reference
        |     |  +--rw type?   identityref
        |     +--rw static
        |     |  +--rw cascaded-lan-prefixes
        |     |     +--rw ipv4-lan-prefixes* [lan next-hop] {vpn-common:ipv4}?
        |     |     |  +--rw lan         inet:ipv4-prefix
        |     |     |  +--rw lan-tag?    string
        |     |     |  +--rw next-hop    union
        |     |     |  +--rw 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 status
        |     |           +--rw admin-status
        |     |           |  +--rw status?        identityref
        |     |           |  +--rw last-change?   yang:date-and-time
        |     |           +--ro oper-status
        |     |              +--ro status?        identityref
        |     |              +--ro last-change?   yang:date-and-time
        |     +--rw bgp
        |     |  +--rw peer-groups
        |     |  |  +--rw peer-group* [name]
        |     |  |     +--rw name              string
        |     |  |     +--ro local-address?    inet:ip-address
        |     |  |     +--rw peer-as           inet:as-number
        |     |  |     +--rw address-family?   identityref
        |     |  +--rw neighbor* [remote-address]
        |     |     +--rw remote-address    inet:ip-address
        |     |     +--ro local-address?    inet:ip-address
        |     |     +--rw peer-group?       -> ../../peer-groups/peer-group/name
        |     |     +--rw peer-as           inet:as-number
        |     |     +--rw address-family?   identityref
        |     |     +--rw status
        |     |        +--rw admin-status
        |     |        |  +--rw status?        identityref
        |     |        |  +--rw last-change?   yang:date-and-time
        |     |        +--ro oper-status
        |     |           +--ro status?        identityref
        |     |           +--ro last-change?   yang:date-and-time
        |     +--rw ospf
        |     |  +--rw address-family?   identityref
        |     |  +--rw area-id           yang:dotted-quad
        |     |  +--rw metric?           uint16
        |     |  +--rw status
        |     |     +--rw admin-status
        |     |     |  +--rw status?        identityref
        |     |     |  +--rw last-change?   yang:date-and-time
        |     |     +--ro oper-status
        |     |        +--ro status?        identityref
        |     |        +--ro last-change?   yang:date-and-time
        |     +--rw isis
        |     |  +--rw address-family?   identityref
        |     |  +--rw area-address      area-address
        |     |  +--rw status
        |     |     +--rw admin-status
        |     |     |  +--rw status?        identityref
        |     |     |  +--rw last-change?   yang:date-and-time
        |     |     +--ro oper-status
        |     |        +--ro status?        identityref
        |     |        +--ro last-change?   yang:date-and-time
        |     +--rw rip
        |     |  +--rw address-family?   identityref
        |     |  +--rw status
        |     |     +--rw admin-status
        |     |     |  +--rw status?        identityref
        |     |     |  +--rw last-change?   yang:date-and-time
        |     |     +--ro oper-status
        |     |        +--ro status?        identityref
        |     |        +--ro last-change?   yang:date-and-time
        |     +--rw vrrp
        |        +--rw address-family?   identityref
        |        +--rw status
        |           +--rw admin-status
        |           |  +--rw status?        identityref
        |           |  +--rw last-change?   yang:date-and-time
        |           +--ro oper-status
        |              +--ro status?        identityref
        |              +--ro last-change?   yang:date-and-time
        +--rw oam
        |  ...
        +--rw security
           ...
]]></artwork>
          </figure>
          <t>For all supported routing protocols, 'address-family' indicates whether IPv4, IPv6, or both address families are to be activated. For example, this parameter is used to determine whether RIPv2 <xref target="RFC2453"/>, RIP Next Generation (RIPng), or both are to be enabled <xref target="RFC2080"/>.</t>
        </section>
        <section anchor="oam">
          <name>OAM</name>
          <t>As shown in the tree depicted in <xref target="oam-svc-tree"/>, the 'oam' container defines OAM-related parameters of an AC.</t>
          <figure anchor="oam-svc-tree">
            <name>OAM Tree Structure</name>
            <artwork align="center"><![CDATA[
module: ietf-ac-svc
  +--rw specific-provisioning-profiles
  |  ...
  +--rw service-provisioning-profiles
  |  ...
  +--rw attachment-circuits
     +--rw ac-global-profile* [id]
     |  ...f
     +--rw ac-node-group* [id]
     |  ...
     +--rw ac* [name]
        ...
        +--rw name                  string
        +--rw l2-connection
        |  ...
        +--rw ip-connection
        |  ...
        +--rw routing-protocols
        |  ...
        +--rw oam
        |  +--rw bfd {vpn-common:bfd}?
        |     +--rw holdtime?   uint32
        |     +--rw status
        |        +--rw admin-status
        |        |  +--rw status?        identityref
        |        |  +--rw last-change?   yang:date-and-time
        |        +--ro oper-status
        |           +--ro status?        identityref
        |           +--ro last-change?   yang:date-and-time
        +--rw security
           ...
]]></artwork>
          </figure>
        </section>
        <section anchor="security">
          <name>Security</name>
          <t>As shown in the tree depicted in <xref target="sec-svc-tree"/>, the 'security' container defines sercurity parameters of an AC.</t>
          <figure anchor="sec-svc-tree">
            <name>Security Tree Structure</name>
            <artwork align="center"><![CDATA[
module: ietf-ac-svc
  +--rw specific-provisioning-profiles
  |  ...
  +--rw service-provisioning-profiles
  |  ...
  +--rw attachment-circuits
     +--rw ac-global-profile* [id]
     |  ...f
     +--rw ac-node-group* [id]
     |  ...
     +--rw ac* [name]
        ...
        +--rw name                  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)?
                 +--:(customer-profile)
                    +--rw customer-key-chain?   key-chain:key-chain-ref
]]></artwork>
          </figure>
        </section>
      </section>
    </section>
    <section anchor="yang-module">
      <name>YANG Module</name>
      <t>This module uses types defined in <xref target="RFC6991"/>, <xref target="RFC9181"/>, and <xref target="RFC8177"/>.</t>
      <sourcecode markers="true" name="ietf-ac-svc@2022-11-30.yang"><![CDATA[
module ietf-ac-svc {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-ac-svc";
  prefix ac-svc;

  import ietf-vpn-common {
    prefix vpn-common;
    reference
      "RFC 9181: A Common YANG Data Model for Layer 2 and Layer 3
                 VPNs";
  }
  import ietf-inet-types {
    prefix inet;
    reference
      "RFC 6991: Common YANG Data Types, Section 4";
  }
  import ietf-yang-types {
    prefix yang;
    reference
      "RFC 6991: Common YANG Data Types, Section 3";
  }
  import ietf-key-chain {
    prefix key-chain;
    reference
      "RFC 8177: YANG Data Model for Key Chains";
  }

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

     Author:   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 attachment circuits exposed outside a network.

     Copyright (c) 2022 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 Data Model for Attachment Circuits";
  }

  // Identities 

  identity address-allocation-type {
    description
      "Base identity for address allocation type in the
       Provider Edge to Customer Edge (PE-CE) link.";
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

  /* Typedefs */

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

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

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

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


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

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

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

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

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

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

  // L2 connection

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

  grouping l2-connection {
    description
      "Defines Layer 2 protocols and parameters that are used to enable
       AC connectivity.";
    container encapsulation {
      description
        "Container for Layer 2 encapsulation.";
      leaf type {
        type identityref {
          base vpn-common:encapsulation-type;
        }
        //default "vpn-common:priority-tagged";
        description
          "Encapsulation type.  By default, the type of the tagged 
           interface is 'priority-tagged'.";
      }
      container dot1q {
        when "derived-from-or-self(../type, 'vpn-common:dot1q')" {
          description
            "Only applies when the type of the tagged interface 
             is 'dot1q'.";
        }
        description
          "Tagged interface.";
        leaf tag-type {
          type identityref {
            base vpn-common:tag-type;
          }
          default "vpn-common:c-vlan";
          description
            "Tag type.  By default, the tag type is 'c-vlan'.";
        }
        leaf cvlan-id {
          type uint16 {
            range "1..4094";
          }
          description
            "VLAN identifier.";
        }
      }
      container priority-tagged {
        when "derived-from-or-self(../type, "
           + "'vpn-common:priority-tagged')" {
          description
            "Only applies when the type of the tagged interface is
             'priority-tagged'.";
        }
        description
          "Priority tagged.";
        leaf tag-type {
          type identityref {
            base vpn-common:tag-type;
          }
          default "vpn-common:c-vlan";
          description
            "Tag type.  By default, the tag type is 'c-vlan'.";
        }
      }
      container qinq {
        when "derived-from-or-self(../type, 'vpn-common:qinq')" {
          description
            "Only applies when the type of the tagged interface 
             is 'qinq'.";
        }
        description
          "Includes QinQ parameters.";
        leaf tag-type {
          type identityref {
            base vpn-common:tag-type;
          }
          default "vpn-common:s-c-vlan";
          description
            "Tag type.";
        }
        leaf svlan-id {
          type uint16;
          mandatory true;
          description
            "Service VLAN (S-VLAN) identifier.";
        }
        leaf cvlan-id {
          type uint16;
          mandatory true;
          description
            "Customer VLAN (C-VLAN) identifier.";
        }
      }
    }
    choice l2-service {
      description
        "The Layer 2 connectivity service can be provided by indicating
         a pointer to an L2VPN or by specifying a Layer 2 tunnel
         service.";
      container l2-tunnel-service {
        description
          "Defines a Layer 2 tunnel termination.
           It is only applicable when a tunnel is required. 
           The supported values are 'pseudowire', 'vpls', and 'vxlan'.
           Other values may be defined, if needed.";
        leaf type {
          type identityref {
            base l2-tunnel-type;
          }

          description
            "Selects the tunnel termination option for each AC 
             Endpoint.";
        }
        container pseudowire {
          when "derived-from-or-self(../type, 'pseudowire')" {
            description
              "Only applies when the Layer 2 service type is 
               'pseudowire'.";
          }
          description
            "Includes pseudowire termination parameters.";
          leaf vcid {
            type uint32;
            description
              "Indicates a pseudowire (PW) or virtual circuit (VC) 
               identifier.";
          }
          leaf far-end {
            type union {
              type uint32;
              type inet:ip-address;
            }
            description
              "Neighbor reference.";
            reference
              "RFC 8077: Pseudowire Setup and Maintenance
                         Using the Label Distribution Protocol
                         (LDP), Section 6.1";
          }
        }
        container vpls {
          when "derived-from-or-self(../type, 'vpls')" {
            description
              "Only applies when the Layer 2 service type is
               'vpls'.";
          }
          description
            "VPLS termination parameters.";
          leaf vcid {
            type uint32;
            description
              "VC identifier.";
          }
          leaf-list far-end {
            type union {
              type uint32;
              type inet:ip-address;
            }
            description
              "Neighbor reference.";
          }
        }
        container vxlan {
          when "derived-from-or-self(../type, 'vxlan')" {
            description
              "Only applies when the Layer 2 service type is
               'vxlan'.";
          }
          description
            "VXLAN termination parameters.";
          leaf vni-id {
            type uint32;
            mandatory true;
            description
              "VXLAN Network Identifier (VNI).";
          }
          leaf peer-mode {
            type identityref {
              base vpn-common:vxlan-peer-mode;
            }
            default "vpn-common:static-mode";
            description
              "Specifies the VXLAN access mode.  By default,
               the peer mode is set to 'static-mode'.";
          }
          leaf-list peer-ip-address {
            type inet:ip-address;
            description
              "List of a peer's IP addresses.";
          }
        }
      }
      case l2vpn {
        leaf l2vpn-id {
          type vpn-common:vpn-id;
          description
            "Indicates the L2VPN service associated with an Integrated
             Routing and Bridging (IRB) interface.";
        }
      }
    }
    leaf bearer-reference {
      if-feature "vpn-common:bearer-reference";
      type string;
      description
        "This is an internal reference for the service provider
         to identify the bearer associated with this AC.";
    }
  }

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

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

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

           If there is no value for the address allocation type, 
           then IPv4 addressing is not enabled.";
      }
      choice allocation-type {
        description
          "Choice of the IPv4 address allocation.";
        case dynamic {
          description
            "When the addresses are allocated by DHCP or other
             dynamic means local to the infrastructure.";
          choice address-assign {
            default "number";
            description
              "A choice for how IPv4 addresses are assigned.";
            case number {
              leaf number-of-dynamic-address {
                type uint16;
                default "1";
                description
                  "Specifies the number of IP addresses to be
                   assigned to the customer on this access.";
              }
            }
            case explicit {
              container customer-addresses {
                description
                  "Container for customer addresses to be allocated
                   using DHCP.";
                list address-pool {
                  key "pool-id";
                  description
                    "Describes IP addresses to be dyncamically allocated.

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

                     When both 'start-address' and 'end-address' are
                     specified, it implies a range inclusive of both
                     addresses.";
                  leaf pool-id {
                    type string;
                    description
                      "A pool identifier for the address range from
                       'start-address' to 'end-address'.";
                  }
                  leaf start-address {
                    type inet:ipv4-address;
                    mandatory true;
                    description
                      "Indicates the first address in the pool.";
                  }
                  leaf end-address {
                    type inet:ipv4-address;
                    description
                      "Indicates the last address in the pool.";
                  }
                }
              }
            }
          }
          choice provider-dhcp {
            description
              "Parameters related to DHCP-allocated addresses. IP 
               addresses are allocated by DHCP, which is provided by 
               the operator.";
            leaf dhcp-service-type {
              type enumeration {
                enum server {
                  description
                    "Local DHCP server.";
                }
                enum relay {
                  description
                    "Local DHCP relay.  DHCP requests are relayed to
                     a provider's server.";
                }
              }
              description
                "Indicates the type of DHCP service to be enabled on
                 this AC.";
            }
          }
          choice dhcp-relay {
            description
              "The DHCP relay is provided by the operator.";
            container customer-dhcp-servers {
              description
                "Container for a list of the customer's DHCP servers.";
              leaf-list server-ip-address {
                type inet:ipv4-address;
                description
                  "IPv4 addresses of the customer's DHCP server.";
              }
            }
          }
        }
        case static-addresses {
          description
            "Lists the IPv4 addresses that are used.";
          /*leaf primary-address {
            type leafref {
              path "../address/address-id";
            }
            description
              "Primary IP address of the connection.";
          }*/
          list address {
            key "address-id";
            ordered-by user;
            description
              "Lists the IPv4 addresses that are used. The first address of
               the list is the primary address of the connection.";
            leaf address-id {
              type string;
              description
                "An identifier of the static IPv4 address.";
            }
            leaf customer-address {
              type inet:ipv4-address;
              description
                "An IPv4 address of the customer side.";
            }
          }
        }
      }
    }
    container ipv6 {
      if-feature "vpn-common:ipv6";
      description
        "IPv6-specific parameters.";
      leaf local-address {
        type inet:ipv6-address;
        description
          "IPv6 address of the provider side.";
      }
      leaf prefix-length {
        type uint8 {
          range "0..128";
        }
        description
          "Subnet prefix length expressed in bits.
           It is applied to both local and customer addresses.";
      }
      leaf address-allocation-type {
        type identityref {
          base address-allocation-type;
        }
        default "static-address";
        description
          "Defines how addresses are allocated.
           If there is no value for the address allocation type, 
           then IPv6 addressing is disabled.";
      }
      choice allocation-type {
        description
          "Choice of the IPv6 address allocation.";
        case dynamic {
          description
            "When the addresses are allocated by DHCP or other
             dynamic means local to the infrastructure.";
          choice address-assign {
            default "number";
            description
              "A choice for how IPv6 addresses are assigned.";
            case number {
              leaf number-of-dynamic-address {
                type uint16;
                default "1";
                description
                  "Specifies the number of IP addresses to be assigned to
                   the customer on this access.";
              }
            }
            case explicit {
              container customer-addresses {
                description
                  "Container for customer addresses to be allocated
                   using DHCP.";
                list address-pool {
                  key "pool-id";
                  description
                    "Describes IP addresses to be dyncamically allocated.

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

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

  /* Routing */

  grouping routing-profile {
    description
      "Defines routing protocols.";
    list routing-protocol {
      key "id";
      description
        "List of routing protocols used on the AC.";
      leaf id {
        type string;
        description
          "Unique identifier for the routing protocol.";
      }
      leaf type {
        type identityref {
          base vpn-common:routing-protocol-type;
        }
        description
          "Type of routing protocol.";
      }
      list routing-profiles {
        key "id";
        description
          "Routing profiles.";
        leaf id {
          type routing-profile-reference;
          description
            "Reference to the routing profile to be used.";
        }
        leaf type {
          type identityref {
            base vpn-common:ie-type;
          }
          description
            "Import, export, or both.";
        }
      }
      container bgp {
        when "derived-from-or-self(../type, 'vpn-common:bgp-routing')" {
          description
            "Only applies when the protocol is BGP.";
        }
        description
          "Configuration specific to BGP.";
        container peer-groups {
          description
            "Configuration for BGP peer-groups";
          list peer-group {
            key "name";
            description
              "List of BGP peer-groups configured on the local system -
               uniquely identified by peer-group name";
            leaf name {
              type string;
              description
                "Name of the BGP peer-group";
            }
            leaf 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 IPv6e 
                 will b activated.";
            }
          }
        }
      }
      container ospf {
        when "derived-from-or-self(../type, "
           + "'vpn-common:ospf-routing')" {
          description
            "Only applies when the protocol is OSPF.";
        }
        description
          "Configuration specific to OSPF.";
        leaf address-family {
          type identityref {
            base vpn-common:address-family;
          }
          description
            "Indicates whether IPv4, IPv6, or both are to be
             activated.";
        }
        leaf area-id {
          type yang:dotted-quad;
          mandatory true;
          description
            "Area ID.";
          reference
            "RFC 4577: OSPF as the Provider/Customer Edge Protocol
                       for BGP/MPLS IP Virtual Private Networks
                       (VPNs), Section 4.2.3
             RFC 6565: OSPFv3 as a Provider Edge to Customer Edge 
                       (PE-CE) Routing Protocol, Section 4.2";
        }
        leaf metric {
          type uint16;
          default "1";
          description
            "Metric of the AC.  It is used in the routing state
             calculation and path selection.";
        }
      }
      container isis {
        when "derived-from-or-self(../type, "
           + "'vpn-common:isis-routing')" {
          description
            "Only applies when the protocol is IS-IS.";
        }
        description
          "Configuration specific to IS-IS.";
        leaf address-family {
          type identityref {
            base vpn-common:address-family;
          }
          description
            "Indicates whether IPv4, IPv6, or both are to 
             be activated.";
        }
        leaf area-address {
          type area-address;
          mandatory true;
          description
            "Area address.";
        }
      }
      container rip {
        when "derived-from-or-self(../type, "
           + "'vpn-common:rip-routing')" {
          description
            "Only applies when the protocol is RIP.
             For IPv4, the model assumes that RIP
             version 2 is used.";
        }
        description
          "Configuration specific to RIP routing.";
        leaf address-family {
          type identityref {
            base vpn-common:address-family;
          }
          description
            "Indicates whether IPv4, IPv6, or both
             address families are to be activated.";
        }
      }
      container vrrp {
        when "derived-from-or-self(../type, "
           + "'vpn-common:vrrp-routing')" {
          description
            "Only applies when the protocol is the
             Virtual Router Redundancy Protocol (VRRP).";
        }
        description
          "Configuration specific to VRRP.";
        reference
          "RFC 5798: Virtual Router Redundancy Protocol (VRRP) 
                     Version 3 for IPv4 and IPv6";

        leaf address-family {
          type identityref {
            base vpn-common:address-family;
          }
          description
            "Indicates whether IPv4, IPv6, or both
             address families are to be enabled.";
        }
      }
    }
  }

  grouping routing {
    description
      "Defines routing protocols.";
    list routing-protocol {
      key "id";
      description
        "List of routing protocols used on the AC.";
      leaf id {
        type string;
        description
          "Unique identifier for the routing protocol.";
      }
      leaf type {
        type identityref {
          base vpn-common:routing-protocol-type;
        }
        description
          "Type of routing protocol.";
      }
      list routing-profiles {
        key "id";
        description
          "Routing profiles.";
        leaf id {
          type routing-profile-reference;
          description
            "Reference to the routing profile to be used.";
        }
        leaf type {
          type identityref {
            base vpn-common:ie-type;
          }
          description
            "Import, export, or both.";
        }
      }
      container static {
        when "derived-from-or-self(../type, "
           + "'vpn-common:static-routing')" {
          description
            "Only applies when the protocol is a
             static routing protocol.";
        }
        description
          "Configuration specific to static
           routing.";
        container cascaded-lan-prefixes {
          description
            "LAN prefixes from the customer.";
          list ipv4-lan-prefixes {
            if-feature "vpn-common:ipv4";
            key "lan next-hop";
            description
              "List of LAN prefixes for the site.";
            leaf lan {
              type inet:ipv4-prefix;
              description
                "LAN prefixes.";
            }
            leaf lan-tag {
              type string;
              description
                "Internal tag to be used in VPN policies.";
            }
            leaf next-hop {
              type union {
                type inet:ip-address;
                type predefined-next-hop;
              }
              description
                "The next hop that is to be used for the static route.  
                 This may be specified as an IP address or a
                 predefined next-hop type (e.g., 'discard' or 
                 'local-link').";
            }
            uses vpn-common:service-status;
          }
          list ipv6-lan-prefixes {
            if-feature "vpn-common:ipv6";
            key "lan next-hop";
            description
              "List of LAN prefixes for the site.";
            leaf lan {
              type inet:ipv6-prefix;
              description
                "LAN prefixes.";
            }
            leaf lan-tag {
              type string;
              description
                "Internal tag to be used in VPN policies.";
            }
            leaf next-hop {
              type union {
                type inet:ip-address;
                type predefined-next-hop;
              }
              description
                "The next hop that is to be used for the static route.  
                 This may be specified as an IP address or a predefined
                 next-hop type (e.g., 'discard' or 'local-link').";
            }
            uses vpn-common:service-status;
          }
        }
      }
      container bgp {
        when "derived-from-or-self(../type, "
           + "'vpn-common:bgp-routing')" {
          description
            "Only applies when the protocol is BGP.";
        }
        description
          "Configuration specific to BGP.";
        container peer-groups {
          description
            "Configuration for BGP peer-groups";
          list peer-group {
            key "name";
            description
              "List of BGP peer-groups configured on the local system -
               uniquely identified by peer-group name";
            leaf name {
              type string;
              description
                "Name of the BGP peer-group.";
            }
            leaf local-address {
              type inet:ip-address;
              config false;
              description
                "The local IP address that will be used to establish 
                 the BGP session.";
            }
            leaf 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.";
            }
          }
        }
        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 inet:ip-address;
            config false;
            description
              "The local IP address that will be used to establish 
               the BGP session.";
          }
          leaf peer-group {
            type leafref {
              path "../../peer-groups/peer-group/name";
            }
            description
              "The peer-group with which this neighbor is
               associated.";
          }
          leaf 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.";
          }
          uses vpn-common:service-status;
        }
      }
      container ospf {
        when "derived-from-or-self(../type, "
           + "'vpn-common:ospf-routing')" {
          description
            "Only applies when the protocol is OSPF.";
        }
        description
          "Configuration specific to OSPF.";
        leaf address-family {
          type identityref {
            base vpn-common:address-family;
          }
          description
            "Indicates whether IPv4, IPv6, or
             both are to be activated.";
        }
        leaf area-id {
          type yang:dotted-quad;
          mandatory true;
          description
            "Area ID.";
          reference
            "RFC 4577: OSPF as the Provider/Customer Edge Protocol
                       for BGP/MPLS IP Virtual Private Networks
                       (VPNs), Section 4.2.3
             RFC 6565: OSPFv3 as a Provider Edge to Customer Edge 
                       (PE-CE) Routing Protocol, Section 4.2";
        }
        leaf metric {
          type uint16;
          default "1";
          description
            "Metric of the ACE.  It is used in the routing state
             calculation and path selection.";
        }
        uses vpn-common:service-status;
      }
      container isis {
        when "derived-from-or-self(../type, "
           + "'vpn-common:isis-routing')" {
          description
            "Only applies when the protocol is IS-IS.";
        }
        description
          "Configuration specific to IS-IS.";
        leaf address-family {
          type identityref {
            base vpn-common:address-family;
          }
          description
            "Indicates whether IPv4, IPv6, or both
             are to be activated.";
        }
        leaf area-address {
          type area-address;
          mandatory true;
          description
            "Area address.";
        }
        uses vpn-common:service-status;
      }
      container rip {
        when "derived-from-or-self(../type, "
           + "'vpn-common:rip-routing')" {
          description
            "Only applies when the protocol is RIP.
             For IPv4, the model assumes that RIP version 2 is used.";
        }
        description
          "Configuration specific to RIP routing.";
        leaf address-family {
          type identityref {
            base vpn-common:address-family;
          }
          description
            "Indicates whether IPv4, IPv6, or both address families
             are to be activated.";
        }
        uses vpn-common:service-status;
      }
      container vrrp {
        when "derived-from-or-self(../type, "
           + "'vpn-common:vrrp-routing')" {
          description
            "Only applies when the protocol is the
             Virtual Router Redundancy Protocol (VRRP).";
        }
        description
          "Configuration specific to VRRP.";
        reference
          "RFC 5798: Virtual Router Redundancy Protocol (VRRP)
                      Version 3 for IPv4 and IPv6";
        leaf address-family {
          type identityref {
            base vpn-common:address-family;
          }
          description
            "Indicates whether IPv4, IPv6, or both
             address families are to be enabled.";
        }
        uses vpn-common:service-status;
      }
    }
  }

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

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

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

             If the provider doesn't allow the customer to
             use this function, fixed values will not be set.";
          reference
            "RFC 5880: Bidirectional Forwarding
                       Detection (BFD), Section 6.8.18";
        }
        uses vpn-common:service-status;
      }
    }
    // Security 
    container security {
      description
        "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 customer-profile {
            leaf customer-key-chain {
              type key-chain:key-chain-ref;
              description
                "Customer-supplied key chain.";
            }
          }
        }
      }
    }
  }

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

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

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

             If the provider doesn't allow the customer to use
             this function, fixed values will not be set.";
          reference
            "RFC 5880: Bidirectional Forwarding
                       Detection (BFD), Section 6.8.18";
        }
      }
    }
    // Security 
    container security {
      description
        "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 customer-profile {
          leaf customer-key-chain {
              type key-chain:key-chain-ref;
              description
                "Customer-supplied key chain.";
            }
          }
        }
      }
    }
  }

  container specific-provisioning-profiles {
    description
      "Contains a set of valid profiles to reference for an AC.";
    uses vpn-common:vpn-profile-cfg;
  }
  container service-provisioning-profiles {
    description
      "Contains a set of valid profiles to reference for an AC.";
    list service-profile-identifier {
      key "id";
      description
        "List of generic service profile identifiers.";
      leaf id {
        type string;
        description
          "Identification of the service profile to be used.
           the profile only has significance within the service
           provider's administrative domain.";
      }
    }
  }
  container attachment-circuits {
    description
      "Main container for the attachment circuits.";
    list ac-global-profile {
      key "id";
      description
        "Maintains a list of AC profiles.";
      uses ac-profile;
    }
    list ac-node-group {
      key "id";
      description
        "Maintains a list of per-node AC profiles.";
      leaf id {
        type string;
        description
          "An identifier of the AC group.";
      }
      uses ac;
    }
    list ac {
      key "name";
      description
        "Global provisioning of attachment circuits.";
      leaf customer-name {
        type string;
        description
          "Indicates the name of the customer that requested this
           AC.";
      }
      leaf description {
        type string;
        description
          "Associates a description with an AC.";
      }
      leaf requested-ac-start {
        type yang:date-and-time;
        description
          "Indicates the requested date and time when the AC is 
           expected to be active.";
      }
      leaf requested-ac-stop {
        type yang:date-and-time;
        description
          "Indicates the requested date and time when the AC is
           expected to be disabled.";
      }
      leaf actual-ac-start {
        type yang:date-and-time;
        config false;
        description
          "Indciates the actual date and time when the AC
           actually was enabled.";
      }
      leaf actual-ac-stop {
        type yang:date-and-time;
        config false;
        description
          "Indciates the actual date and time when the AC
           actually was disabled.";
      }
      leaf-list peer-sap-id {
        type string;
        description
          "One or more peer SAPs can be indicated.";
      }
      leaf-list ac-global-profile {
        /*type leafref {
          path "/attachment-circuits/ac-global-profile/id";
        }*/
        type ac-global-profile-reference;
        description
          "A reference to an AC profile.";
      }
      leaf-list ac-node-profile {
        /*type leafref {
          path "/attachment-circuits/ac-node-group/id";
        }*/
        type ac-node-group-reference;
        description
          "A reference to a per-node AC profile.";
      }
      uses ac;
    }
  }
}
]]></sourcecode>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The YANG module specified in this document define a schema for data
   that is designed to be accessed via network management protocols such
   as NETCONF <xref target="RFC6241"/> or RESTCONF <xref target="RFC8040"/>.  The lowest NETCONF layer
   is the secure transport layer, and the mandatory-to-implement secure
   transport is Secure Shell (SSH) <xref target="RFC6242"/>.  The lowest RESTCONF layer
   is HTTPS, and the mandatory-to-implement secure transport is TLS
   <xref target="RFC8446"/>.</t>
      <t>The Network Configuration Access Control Model (NACM) <xref target="RFC8341"/>
   provides the means to restrict access for particular NETCONF or
   RESTCONF users to a preconfigured subset of all available NETCONF or
   RESTCONF protocol operations and content.</t>
      <t>There are a number of data nodes defined in this YANG module that are
   writable/creatable/deletable (i.e., config true, which is the
   default).  These data nodes may be considered sensitive or vulnerable
   in some network environments.  Write operations (e.g., edit-config)
   and delete operations to these data nodes without proper protection
   or authentication can have a negative effect on network operations.
   These are the subtrees and data nodes and their sensitivity/
   vulnerability in the "ietf-ac-svc" module:</t>
      <ul spacing="normal">
        <li>TBC</li>
        <li>TBC</li>
      </ul>
      <t>Some of the readable data nodes in this YANG module may be considered
   sensitive or vulnerable in some network environments.  It is thus
   important to control read access (e.g., via get, get-config, or
   notification) to these data nodes.  These are the subtrees and data
   nodes and their sensitivity/vulnerability in the "ietf-ac-svc" module:</t>
      <ul spacing="normal">
        <li>TBC</li>
        <li>TBC</li>
      </ul>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA is requested to register the following URI in the "ns" subregistry within
   the "IETF XML Registry" <xref target="RFC3688"/>:</t>
      <artwork><![CDATA[
   URI:  urn:ietf:params:xml:ns:yang:ietf-ac-svc
   Registrant Contact:  The IESG.
   XML:  N/A; the requested URI is an XML namespace.
]]></artwork>
      <t>IANA is requested to register the following YANG module in the "YANG Module
   Names" subregistry <xref target="RFC6020"/> within the "YANG Parameters" registry.</t>
      <artwork><![CDATA[
   Name:  ietf-ac-svc
   Maintained by IANA?  N
   Namespace:  urn:ietf:params:xml:ns:yang:ietf-ac-svc
   Prefix:  ac
   Reference:  RFC xxxx
]]></artwork>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="ISO10589" target="https://www.iso.org/standard/30932.html">
          <front>
            <title>Information technology - Telecommunications and information exchange between systems - Intermediate System to Intermediate System intra-domain routeing information exchange protocol for use in conjunction with the protocol for providing the connectionless-mode network service (ISO8473)</title>
            <author>
              <organization>ISO</organization>
            </author>
            <date year="2002"/>
          </front>
        </reference>
        <reference anchor="I-D.ietf-opsawg-sap">
          <front>
            <title>A YANG Network Model for Service Attachment Points (SAPs)</title>
            <author fullname="Mohamed Boucadair" initials="M." surname="Boucadair">
              <organization>Orange</organization>
            </author>
            <author fullname="Oscar Gonzalez de Dios" initials="O. G." surname="de Dios">
              <organization>Telefonica</organization>
            </author>
            <author fullname="Samier Barguil" initials="S." surname="Barguil">
              <organization>Nokia</organization>
            </author>
            <author fullname="Qin Wu" initials="Q." surname="Wu">
              <organization>Huawei</organization>
            </author>
            <author fullname="Victor Lopez" initials="V." surname="Lopez">
              <organization>Nokia</organization>
            </author>
            <date day="9" 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-13"/>
        </reference>
        <reference anchor="RFC8342">
          <front>
            <title>Network Management Datastore Architecture (NMDA)</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund">
              <organization/>
            </author>
            <author fullname="J. Schoenwaelder" initials="J." surname="Schoenwaelder">
              <organization/>
            </author>
            <author fullname="P. Shafer" initials="P." surname="Shafer">
              <organization/>
            </author>
            <author fullname="K. Watsen" initials="K." surname="Watsen">
              <organization/>
            </author>
            <author fullname="R. Wilton" initials="R." surname="Wilton">
              <organization/>
            </author>
            <date month="March" year="2018"/>
            <abstract>
              <t>Datastores are a fundamental concept binding the data models written in the YANG data modeling language to network management protocols such as the Network Configuration Protocol (NETCONF) and RESTCONF. This document defines an architectural framework for datastores based on the experience gained with the initial simpler model, addressing requirements that were not well supported in the initial model.  This document updates RFC 7950.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8342"/>
          <seriesInfo name="DOI" value="10.17487/RFC8342"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC9181">
          <front>
            <title>A Common YANG Data Model for Layer 2 and Layer 3 VPNs</title>
            <author fullname="S. Barguil" initials="S." surname="Barguil">
              <organization/>
            </author>
            <author fullname="O. Gonzalez de Dios" initials="O." role="editor" surname="Gonzalez de Dios">
              <organization/>
            </author>
            <author fullname="M. Boucadair" initials="M." role="editor" surname="Boucadair">
              <organization/>
            </author>
            <author fullname="Q. Wu" initials="Q." surname="Wu">
              <organization/>
            </author>
            <date month="February" year="2022"/>
            <abstract>
              <t>This document defines a common YANG module that is meant to be reused by various VPN-related modules such as Layer 3 VPN and Layer 2 VPN network models.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9181"/>
          <seriesInfo name="DOI" value="10.17487/RFC9181"/>
        </reference>
        <reference anchor="RFC5880">
          <front>
            <title>Bidirectional Forwarding Detection (BFD)</title>
            <author fullname="D. Katz" initials="D." surname="Katz">
              <organization/>
            </author>
            <author fullname="D. Ward" initials="D." surname="Ward">
              <organization/>
            </author>
            <date month="June" year="2010"/>
            <abstract>
              <t>This document describes a protocol intended to detect faults in the bidirectional path between two forwarding engines, including interfaces, data link(s), and to the extent possible the forwarding engines themselves, with potentially very low latency.  It operates independently of media, data protocols, and routing protocols. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5880"/>
          <seriesInfo name="DOI" value="10.17487/RFC5880"/>
        </reference>
        <reference anchor="RFC4271">
          <front>
            <title>A Border Gateway Protocol 4 (BGP-4)</title>
            <author fullname="Y. Rekhter" initials="Y." role="editor" surname="Rekhter">
              <organization/>
            </author>
            <author fullname="T. Li" initials="T." role="editor" surname="Li">
              <organization/>
            </author>
            <author fullname="S. Hares" initials="S." role="editor" surname="Hares">
              <organization/>
            </author>
            <date month="January" year="2006"/>
            <abstract>
              <t>This document discusses the Border Gateway Protocol (BGP), which is an inter-Autonomous System routing protocol.</t>
              <t>The primary function of a BGP speaking system is to exchange network reachability information with other BGP systems.  This network reachability information includes information on the list of Autonomous Systems (ASes) that reachability information traverses. This information is sufficient for constructing a graph of AS connectivity for this reachability from which routing loops may be pruned, and, at the AS level, some policy decisions may be enforced.</t>
              <t>BGP-4 provides a set of mechanisms for supporting Classless Inter-Domain Routing (CIDR).  These mechanisms include support for advertising a set of destinations as an IP prefix, and eliminating the concept of network "class" within BGP.  BGP-4 also introduces mechanisms that allow aggregation of routes, including aggregation of AS paths.</t>
              <t>This document obsoletes RFC 1771.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4271"/>
          <seriesInfo name="DOI" value="10.17487/RFC4271"/>
        </reference>
        <reference anchor="RFC4577">
          <front>
            <title>OSPF as the Provider/Customer Edge Protocol for BGP/MPLS IP Virtual Private Networks (VPNs)</title>
            <author fullname="E. Rosen" initials="E." surname="Rosen">
              <organization/>
            </author>
            <author fullname="P. Psenak" initials="P." surname="Psenak">
              <organization/>
            </author>
            <author fullname="P. Pillay-Esnault" initials="P." surname="Pillay-Esnault">
              <organization/>
            </author>
            <date month="June" year="2006"/>
            <abstract>
              <t>Many Service Providers offer Virtual Private Network (VPN) services to their customers, using a technique in which customer edge routers (CE routers) are routing peers of provider edge routers (PE routers).  The Border Gateway Protocol (BGP) is used to distribute the customer's routes across the provider's IP backbone network, and Multiprotocol Label Switching (MPLS) is used to tunnel customer packets across the provider's backbone.  This is known as a "BGP/MPLS IP VPN".  The base specification for BGP/MPLS IP VPNs presumes that the routing protocol on the interface between a PE router and a CE router is BGP.  This document extends that specification by allowing the routing protocol on the PE/CE interface to be the Open Shortest Path First (OSPF) protocol.</t>
              <t>This document updates RFC 4364.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4577"/>
          <seriesInfo name="DOI" value="10.17487/RFC4577"/>
        </reference>
        <reference anchor="RFC6565">
          <front>
            <title>OSPFv3 as a Provider Edge to Customer Edge (PE-CE) Routing Protocol</title>
            <author fullname="P. Pillay-Esnault" initials="P." surname="Pillay-Esnault">
              <organization/>
            </author>
            <author fullname="P. Moyer" initials="P." surname="Moyer">
              <organization/>
            </author>
            <author fullname="J. Doyle" initials="J." surname="Doyle">
              <organization/>
            </author>
            <author fullname="E. Ertekin" initials="E." surname="Ertekin">
              <organization/>
            </author>
            <author fullname="M. Lundberg" initials="M." surname="Lundberg">
              <organization/>
            </author>
            <date month="June" year="2012"/>
            <abstract>
              <t>Many Service Providers (SPs) offer Virtual Private Network (VPN) services to their customers using a technique in which Customer Edge (CE) routers are routing peers of Provider Edge (PE) routers.  The Border Gateway Protocol (BGP) is used to distribute the customer's routes across the provider's IP backbone network, and Multiprotocol Label Switching (MPLS) is used to tunnel customer packets across the provider's backbone.  Support currently exists for both IPv4 and IPv6 VPNs; however, only Open Shortest Path First version 2 (OSPFv2) as PE-CE protocol is specified.  This document extends those specifications to support OSPF version 3 (OSPFv3) as a PE-CE routing protocol.  The OSPFv3 PE-CE functionality is identical to that of OSPFv2 except for the differences described in this document. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6565"/>
          <seriesInfo name="DOI" value="10.17487/RFC6565"/>
        </reference>
        <reference anchor="RFC1195">
          <front>
            <title>Use of OSI IS-IS for routing in TCP/IP and dual environments</title>
            <author fullname="R. Callon" initials="R." surname="Callon">
              <organization/>
            </author>
            <date month="December" year="1990"/>
            <abstract>
              <t>This memo specifies an integrated routing protocol, based on the OSI Intra-Domain IS-IS Routing Protocol, which may be used as an interior gateway protocol (IGP) to support TCP/IP as well as OSI.  This allows a single routing protocol to be used to support pure IP environments, pure OSI environments, and dual environments.  This specification was developed by the IS-IS working group of the Internet Engineering Task Force.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1195"/>
          <seriesInfo name="DOI" value="10.17487/RFC1195"/>
        </reference>
        <reference anchor="RFC5308">
          <front>
            <title>Routing IPv6 with IS-IS</title>
            <author fullname="C. Hopps" initials="C." surname="Hopps">
              <organization/>
            </author>
            <date month="October" year="2008"/>
            <abstract>
              <t>This document specifies a method for exchanging IPv6 routing information using the IS-IS routing protocol.  The described method utilizes two new TLVs: a reachability TLV and an interface address TLV to distribute the necessary IPv6 information throughout a routing domain.  Using this method, one can route IPv6 along with IPv4 and OSI using a single intra-domain routing protocol.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5308"/>
          <seriesInfo name="DOI" value="10.17487/RFC5308"/>
        </reference>
        <reference anchor="RFC2453">
          <front>
            <title>RIP Version 2</title>
            <author fullname="G. Malkin" initials="G." surname="Malkin">
              <organization/>
            </author>
            <date month="November" year="1998"/>
            <abstract>
              <t>This document specifies an extension of the Routing Information Protocol (RIP) to expand the amount of useful information carried in RIP messages and to add a measure of security.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="56"/>
          <seriesInfo name="RFC" value="2453"/>
          <seriesInfo name="DOI" value="10.17487/RFC2453"/>
        </reference>
        <reference anchor="RFC5798">
          <front>
            <title>Virtual Router Redundancy Protocol (VRRP) Version 3 for IPv4 and IPv6</title>
            <author fullname="S. Nadas" initials="S." role="editor" surname="Nadas">
              <organization/>
            </author>
            <date month="March" year="2010"/>
            <abstract>
              <t>This memo defines the Virtual Router Redundancy Protocol (VRRP) for IPv4 and IPv6.  It is version three (3) of the protocol, and it is based on VRRP (version 2) for IPv4 that is defined in RFC 3768 and in "Virtual Router Redundancy Protocol for IPv6".  VRRP specifies an election protocol that dynamically assigns responsibility for a virtual router to one of the VRRP routers on a LAN.  The VRRP router controlling the IPv4 or IPv6 address(es) associated with a virtual router is called the Master, and it forwards packets sent to these IPv4 or IPv6 addresses.  VRRP Master routers are configured with virtual IPv4 or IPv6 addresses, and VRRP Backup routers infer the address family of the virtual addresses being carried based on the transport protocol.  Within a VRRP router, the virtual routers in each of the IPv4 and IPv6 address families are a domain unto themselves and do not overlap.  The election process provides dynamic failover in the forwarding responsibility should the Master become unavailable.  For IPv4, the advantage gained from using VRRP is a higher-availability default path without requiring configuration of dynamic routing or router discovery protocols on every end-host.  For IPv6, the advantage gained from using VRRP for IPv6 is a quicker switchover to Backup routers than can be obtained with standard IPv6 Neighbor Discovery mechanisms.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5798"/>
          <seriesInfo name="DOI" value="10.17487/RFC5798"/>
        </reference>
        <reference anchor="RFC2080">
          <front>
            <title>RIPng for IPv6</title>
            <author fullname="G. Malkin" initials="G." surname="Malkin">
              <organization/>
            </author>
            <author fullname="R. Minnear" initials="R." surname="Minnear">
              <organization/>
            </author>
            <date month="January" year="1997"/>
            <abstract>
              <t>This document specifies a routing protocol for an IPv6 internet.  It is based on protocols and algorithms currently in wide use in the IPv4 Internet [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2080"/>
          <seriesInfo name="DOI" value="10.17487/RFC2080"/>
        </reference>
        <reference anchor="RFC6991">
          <front>
            <title>Common YANG Data Types</title>
            <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder">
              <organization/>
            </author>
            <date month="July" year="2013"/>
            <abstract>
              <t>This document introduces a collection of common data types to be used with the YANG data modeling language.  This document obsoletes RFC 6021.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6991"/>
          <seriesInfo name="DOI" value="10.17487/RFC6991"/>
        </reference>
        <reference anchor="RFC8177">
          <front>
            <title>YANG Data Model for Key Chains</title>
            <author fullname="A. Lindem" initials="A." role="editor" surname="Lindem">
              <organization/>
            </author>
            <author fullname="Y. Qu" initials="Y." surname="Qu">
              <organization/>
            </author>
            <author fullname="D. Yeung" initials="D." surname="Yeung">
              <organization/>
            </author>
            <author fullname="I. Chen" initials="I." surname="Chen">
              <organization/>
            </author>
            <author fullname="J. Zhang" initials="J." surname="Zhang">
              <organization/>
            </author>
            <date month="June" year="2017"/>
            <abstract>
              <t>This document describes the key chain YANG data model.  Key chains are commonly used for routing protocol authentication and other applications requiring symmetric keys.  A key chain is a list containing one or more elements containing a Key ID, key string, send/accept lifetimes, and the associated authentication or encryption algorithm.  By properly overlapping the send and accept lifetimes of multiple key chain elements, key strings and algorithms may be gracefully updated.  By representing them in a YANG data model, key distribution can be automated.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8177"/>
          <seriesInfo name="DOI" value="10.17487/RFC8177"/>
        </reference>
        <reference anchor="RFC6241">
          <front>
            <title>Network Configuration Protocol (NETCONF)</title>
            <author fullname="R. Enns" initials="R." role="editor" surname="Enns">
              <organization/>
            </author>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund">
              <organization/>
            </author>
            <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder">
              <organization/>
            </author>
            <author fullname="A. Bierman" initials="A." role="editor" surname="Bierman">
              <organization/>
            </author>
            <date month="June" year="2011"/>
            <abstract>
              <t>The Network Configuration Protocol (NETCONF) defined in this document provides mechanisms to install, manipulate, and delete the configuration of network devices.  It uses an Extensible Markup Language (XML)-based data encoding for the configuration data as well as the protocol messages.  The NETCONF protocol operations are realized as remote procedure calls (RPCs).  This document obsoletes RFC 4741.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6241"/>
          <seriesInfo name="DOI" value="10.17487/RFC6241"/>
        </reference>
        <reference anchor="RFC8040">
          <front>
            <title>RESTCONF Protocol</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman">
              <organization/>
            </author>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund">
              <organization/>
            </author>
            <author fullname="K. Watsen" initials="K." surname="Watsen">
              <organization/>
            </author>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document describes an HTTP-based protocol that provides a programmatic interface for accessing data defined in YANG, using the datastore concepts defined in the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8040"/>
          <seriesInfo name="DOI" value="10.17487/RFC8040"/>
        </reference>
        <reference anchor="RFC6242">
          <front>
            <title>Using the NETCONF Protocol over Secure Shell (SSH)</title>
            <author fullname="M. Wasserman" initials="M." surname="Wasserman">
              <organization/>
            </author>
            <date month="June" year="2011"/>
            <abstract>
              <t>This document describes a method for invoking and running the Network Configuration Protocol (NETCONF) within a Secure Shell (SSH) session as an SSH subsystem.  This document obsoletes RFC 4742.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6242"/>
          <seriesInfo name="DOI" value="10.17487/RFC6242"/>
        </reference>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol.  TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961.  This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC8341">
          <front>
            <title>Network Configuration Access Control Model</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman">
              <organization/>
            </author>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund">
              <organization/>
            </author>
            <date month="March" year="2018"/>
            <abstract>
              <t>The standardization of network configuration interfaces for use with the Network Configuration Protocol (NETCONF) or the RESTCONF protocol requires a structured and secure operating environment that promotes human usability and multi-vendor interoperability.  There is a need for standard mechanisms to restrict NETCONF or RESTCONF protocol access for particular users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content.  This document defines such an access control model.</t>
              <t>This document obsoletes RFC 6536.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="91"/>
          <seriesInfo name="RFC" value="8341"/>
          <seriesInfo name="DOI" value="10.17487/RFC8341"/>
        </reference>
        <reference anchor="RFC3688">
          <front>
            <title>The IETF XML Registry</title>
            <author fullname="M. Mealling" initials="M." surname="Mealling">
              <organization/>
            </author>
            <date month="January" year="2004"/>
            <abstract>
              <t>This document describes an IANA maintained registry for IETF standards which use Extensible Markup Language (XML) related items such as Namespaces, Document Type Declarations (DTDs), Schemas, and Resource Description Framework (RDF) Schemas.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="81"/>
          <seriesInfo name="RFC" value="3688"/>
          <seriesInfo name="DOI" value="10.17487/RFC3688"/>
        </reference>
        <reference anchor="RFC6020">
          <front>
            <title>YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund">
              <organization/>
            </author>
            <date month="October" year="2010"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration and state data manipulated by the Network Configuration Protocol (NETCONF), NETCONF remote procedure calls, and NETCONF notifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6020"/>
          <seriesInfo name="DOI" value="10.17487/RFC6020"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC8340">
          <front>
            <title>YANG Tree Diagrams</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund">
              <organization/>
            </author>
            <author fullname="L. Berger" initials="L." role="editor" surname="Berger">
              <organization/>
            </author>
            <date month="March" year="2018"/>
            <abstract>
              <t>This document captures the current syntax used in YANG module tree diagrams.  The purpose of this document is to provide a single location for this definition.  This syntax may be updated from time to time based on the evolution of the YANG language.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="215"/>
          <seriesInfo name="RFC" value="8340"/>
          <seriesInfo name="DOI" value="10.17487/RFC8340"/>
        </reference>
        <reference anchor="RFC7665">
          <front>
            <title>Service Function Chaining (SFC) Architecture</title>
            <author fullname="J. Halpern" initials="J." role="editor" surname="Halpern">
              <organization/>
            </author>
            <author fullname="C. Pignataro" initials="C." role="editor" surname="Pignataro">
              <organization/>
            </author>
            <date month="October" year="2015"/>
            <abstract>
              <t>This document describes an architecture for the specification, creation, and ongoing maintenance of Service Function Chains (SFCs) in a network.  It includes architectural concepts, principles, and components used in the construction of composite services through deployment of SFCs, with a focus on those to be standardized in the IETF.  This document does not propose solutions, protocols, or extensions to existing protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7665"/>
          <seriesInfo name="DOI" value="10.17487/RFC7665"/>
        </reference>
        <reference anchor="RFC3644">
          <front>
            <title>Policy Quality of Service (QoS) Information Model</title>
            <author fullname="Y. Snir" initials="Y." surname="Snir">
              <organization/>
            </author>
            <author fullname="Y. Ramberg" initials="Y." surname="Ramberg">
              <organization/>
            </author>
            <author fullname="J. Strassner" initials="J." surname="Strassner">
              <organization/>
            </author>
            <author fullname="R. Cohen" initials="R." surname="Cohen">
              <organization/>
            </author>
            <author fullname="B. Moore" initials="B." surname="Moore">
              <organization/>
            </author>
            <date month="November" year="2003"/>
            <abstract>
              <t>This document presents an object-oriented information model for representing Quality of Service (QoS) network management policies.  This document is based on the IETF Policy Core Information Model and its extensions.  It defines an information model for QoS enforcement for differentiated and integrated services using policy.  It is important to note that this document defines an information model, which by definition is independent of any particular data storage mechanism and access protocol.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3644"/>
          <seriesInfo name="DOI" value="10.17487/RFC3644"/>
        </reference>
      </references>
    </references>
    <section anchor="full-tree">
      <name>Full Tree</name>
      <figure anchor="d-svc-tree">
        <name>AC Service Tree Structure</name>
        <artwork align="center"><![CDATA[
module: ietf-ac-svc
  +--rw specific-provisioning-profiles
  |  +--rw valid-provider-identifiers
  |     +--rw external-connectivity-identifier* [id] {external-connectivity}?
  |     |  +--rw id    string
  |     +--rw encryption-profile-identifier* [id]
  |     |  +--rw id    string
  |     +--rw qos-profile-identifier* [id]
  |     |  +--rw id    string
  |     +--rw bfd-profile-identifier* [id]
  |     |  +--rw id    string
  |     +--rw forwarding-profile-identifier* [id]
  |     |  +--rw id    string
  |     +--rw routing-profile-identifier* [id]
  |        +--rw id    string
  +--rw service-provisioning-profiles
  |  +--rw service-profile-identifier* [id]
  |     +--rw id    string
  +--rw attachment-circuits
     +--rw ac-global-profile* [id]
     |  +--rw id                   string
     |  +--rw l2-connection
     |  |  +--rw encapsulation
     |  |     +--rw type?    identityref
     |  |     +--rw dot1q
     |  |     |  +--rw tag-type?   identityref
     |  |     |  +--rw cvlan-id?   uint16
     |  |     +--rw qinq
     |  |        +--rw tag-type?   identityref
     |  |        +--rw svlan-id    uint16
     |  |        +--rw cvlan-id    uint16
     |  +--rw ip-connection
     |  |  +--rw ipv4 {vpn-common:ipv4}?
     |  |  |  +--rw prefix-length?                       uint8
     |  |  |  +--rw address-allocation-type?             identityref
     |  |  |  +--rw (allocation-type)?
     |  |  |     +--:(dynamic)
     |  |  |        +--rw (provider-dhcp)?
     |  |  |        |  +--:(dhcp-service-type)
     |  |  |        |     +--rw dhcp-service-type?       enumeration
     |  |  |        +--rw (dhcp-relay)?
     |  |  |           +--:(customer-dhcp-servers)
     |  |  |              +--rw customer-dhcp-servers
     |  |  |                 +--rw server-ip-address*   inet:ipv4-address
     |  |  +--rw ipv6 {vpn-common:ipv6}?
     |  |     +--rw prefix-length?                       uint8
     |  |     +--rw address-allocation-type?             identityref
     |  |     +--rw (allocation-type)?
     |  |        +--:(dynamic)
     |  |           +--rw (provider-dhcp)?
     |  |           |  +--:(dhcp-service-type)
     |  |           |     +--rw dhcp-service-type?       enumeration
     |  |           +--rw (dhcp-relay)?
     |  |              +--:(customer-dhcp-servers)
     |  |                 +--rw customer-dhcp-servers
     |  |                    +--rw server-ip-address*   inet:ipv6-address
     |  +--rw routing-protocols
     |  |  +--rw routing-protocol* [id]
     |  |     +--rw id                  string
     |  |     +--rw type?               identityref
     |  |     +--rw routing-profiles* [id]
     |  |     |  +--rw id      routing-profile-reference
     |  |     |  +--rw type?   identityref
     |  |     +--rw bgp
     |  |     |  +--rw peer-groups
     |  |     |     +--rw peer-group* [name]
     |  |     |        +--rw name              string
     |  |     |        +--rw peer-as           inet:as-number
     |  |     |        +--rw address-family?   identityref
     |  |     +--rw ospf
     |  |     |  +--rw address-family?   identityref
     |  |     |  +--rw area-id           yang:dotted-quad
     |  |     |  +--rw metric?           uint16
     |  |     +--rw isis
     |  |     |  +--rw address-family?   identityref
     |  |     |  +--rw area-address      area-address
     |  |     +--rw rip
     |  |     |  +--rw address-family?   identityref
     |  |     +--rw vrrp
     |  |        +--rw address-family?   identityref
     |  +--rw oam
     |  |  +--rw bfd {vpn-common:bfd}?
     |  |     +--rw holdtime?   uint32
     |  +--rw security
     |     +--rw encryption {vpn-common:encryption}?
     |     |  +--rw enabled?   boolean
     |     |  +--rw layer?     enumeration
     |     +--rw encryption-profile
     |        +--rw (profile)?
     |           +--:(customer-profile)
     |              +--rw customer-key-chain?   key-chain:key-chain-ref
     +--rw ac-node-group* [id]
     |  +--rw id                   string
     |  +--rw name?                string
     |  +--rw l2-connection
     |  |  +--rw encapsulation
     |  |  |  +--rw type?              identityref
     |  |  |  +--rw dot1q
     |  |  |  |  +--rw tag-type?   identityref
     |  |  |  |  +--rw cvlan-id?   uint16
     |  |  |  +--rw priority-tagged
     |  |  |  |  +--rw tag-type?   identityref
     |  |  |  +--rw qinq
     |  |  |     +--rw tag-type?   identityref
     |  |  |     +--rw svlan-id    uint16
     |  |  |     +--rw cvlan-id    uint16
     |  |  +--rw (l2-service)?
     |  |  |  +--:(l2-tunnel-service)
     |  |  |  |  +--rw l2-tunnel-service
     |  |  |  |     +--rw type?         identityref
     |  |  |  |     +--rw pseudowire
     |  |  |  |     |  +--rw vcid?      uint32
     |  |  |  |     |  +--rw far-end?   union
     |  |  |  |     +--rw vpls
     |  |  |  |     |  +--rw vcid?      uint32
     |  |  |  |     |  +--rw far-end*   union
     |  |  |  |     +--rw vxlan
     |  |  |  |        +--rw vni-id             uint32
     |  |  |  |        +--rw peer-mode?         identityref
     |  |  |  |        +--rw peer-ip-address*   inet:ip-address
     |  |  |  +--:(l2vpn)
     |  |  |     +--rw l2vpn-id?            vpn-common:vpn-id
     |  |  +--rw bearer-reference?          string {vpn-common:bearer-reference}?
     |  +--rw ip-connection
     |  |  +--rw ipv4 {vpn-common:ipv4}?
     |  |  |  +--rw local-address?                           inet:ipv4-address
     |  |  |  +--rw prefix-length?                           uint8
     |  |  |  +--rw address-allocation-type?                 identityref
     |  |  |  +--rw (allocation-type)?
     |  |  |     +--:(dynamic)
     |  |  |     |  +--rw (address-assign)?
     |  |  |     |  |  +--:(number)
     |  |  |     |  |  |  +--rw number-of-dynamic-address?   uint16
     |  |  |     |  |  +--:(explicit)
     |  |  |     |  |     +--rw customer-addresses
     |  |  |     |  |        +--rw address-pool* [pool-id]
     |  |  |     |  |           +--rw pool-id          string
     |  |  |     |  |           +--rw start-address    inet:ipv4-address
     |  |  |     |  |           +--rw end-address?     inet:ipv4-address
     |  |  |     |  +--rw (provider-dhcp)?
     |  |  |     |  |  +--:(dhcp-service-type)
     |  |  |     |  |     +--rw dhcp-service-type?           enumeration
     |  |  |     |  +--rw (dhcp-relay)?
     |  |  |     |     +--:(customer-dhcp-servers)
     |  |  |     |        +--rw customer-dhcp-servers
     |  |  |     |           +--rw server-ip-address*   inet:ipv4-address
     |  |  |     +--:(static-addresses)
     |  |  |        +--rw address* [address-id]
     |  |  |           +--rw address-id          string
     |  |  |           +--rw customer-address?   inet:ipv4-address
     |  |  +--rw ipv6 {vpn-common:ipv6}?
     |  |     +--rw local-address?                           inet:ipv6-address
     |  |     +--rw prefix-length?                           uint8
     |  |     +--rw address-allocation-type?                 identityref
     |  |     +--rw (allocation-type)?
     |  |        +--:(dynamic)
     |  |        |  +--rw (address-assign)?
     |  |        |  |  +--:(number)
     |  |        |  |  |  +--rw number-of-dynamic-address?   uint16
     |  |        |  |  +--:(explicit)
     |  |        |  |     +--rw customer-addresses
     |  |        |  |        +--rw address-pool* [pool-id]
     |  |        |  |           +--rw pool-id          string
     |  |        |  |           +--rw start-address    inet:ipv6-address
     |  |        |  |           +--rw end-address?     inet:ipv6-address
     |  |        |  +--rw (provider-dhcp)?
     |  |        |  |  +--:(dhcp-service-type)
     |  |        |  |     +--rw dhcp-service-type?           enumeration
     |  |        |  +--rw (dhcp-relay)?
     |  |        |     +--:(customer-dhcp-servers)
     |  |        |        +--rw customer-dhcp-servers
     |  |        |           +--rw server-ip-address*   inet:ipv6-address
     |  |        +--:(static-addresses)
     |  |           +--rw address* [address-id]
     |  |              +--rw address-id          string
     |  |              +--rw customer-address?   inet:ipv6-address
     |  +--rw routing-protocols
     |  |  +--rw routing-protocol* [id]
     |  |     +--rw id                  string
     |  |     +--rw type?               identityref
     |  |     +--rw routing-profiles* [id]
     |  |     |  +--rw id      routing-profile-reference
     |  |     |  +--rw type?   identityref
     |  |     +--rw static
     |  |     |  +--rw cascaded-lan-prefixes
     |  |     |     +--rw ipv4-lan-prefixes* [lan next-hop] {vpn-common:ipv4}?
     |  |     |     |  +--rw lan         inet:ipv4-prefix
     |  |     |     |  +--rw lan-tag?    string
     |  |     |     |  +--rw next-hop    union
     |  |     |     |  +--rw 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 status
     |  |     |           +--rw admin-status
     |  |     |           |  +--rw status?        identityref
     |  |     |           |  +--rw last-change?   yang:date-and-time
     |  |     |           +--ro oper-status
     |  |     |              +--ro status?        identityref
     |  |     |              +--ro last-change?   yang:date-and-time
     |  |     +--rw bgp
     |  |     |  +--rw peer-groups
     |  |     |  |  +--rw peer-group* [name]
     |  |     |  |     +--rw name              string
     |  |     |  |     +--ro local-address?    inet:ip-address
     |  |     |  |     +--rw peer-as           inet:as-number
     |  |     |  |     +--rw address-family?   identityref
     |  |     |  +--rw neighbor* [remote-address]
     |  |     |     +--rw remote-address    inet:ip-address
     |  |     |     +--ro local-address?    inet:ip-address
     |  |     |     +--rw peer-group?       -> ../../peer-groups/peer-group/name
     |  |     |     +--rw peer-as           inet:as-number
     |  |     |     +--rw address-family?   identityref
     |  |     |     +--rw status
     |  |     |        +--rw admin-status
     |  |     |        |  +--rw status?        identityref
     |  |     |        |  +--rw last-change?   yang:date-and-time
     |  |     |        +--ro oper-status
     |  |     |           +--ro status?        identityref
     |  |     |           +--ro last-change?   yang:date-and-time
     |  |     +--rw ospf
     |  |     |  +--rw address-family?   identityref
     |  |     |  +--rw area-id           yang:dotted-quad
     |  |     |  +--rw metric?           uint16
     |  |     |  +--rw status
     |  |     |     +--rw admin-status
     |  |     |     |  +--rw status?        identityref
     |  |     |     |  +--rw last-change?   yang:date-and-time
     |  |     |     +--ro oper-status
     |  |     |        +--ro status?        identityref
     |  |     |        +--ro last-change?   yang:date-and-time
     |  |     +--rw isis
     |  |     |  +--rw address-family?   identityref
     |  |     |  +--rw area-address      area-address
     |  |     |  +--rw status
     |  |     |     +--rw admin-status
     |  |     |     |  +--rw status?        identityref
     |  |     |     |  +--rw last-change?   yang:date-and-time
     |  |     |     +--ro oper-status
     |  |     |        +--ro status?        identityref
     |  |     |        +--ro last-change?   yang:date-and-time
     |  |     +--rw rip
     |  |     |  +--rw address-family?   identityref
     |  |     |  +--rw status
     |  |     |     +--rw admin-status
     |  |     |     |  +--rw status?        identityref
     |  |     |     |  +--rw last-change?   yang:date-and-time
     |  |     |     +--ro oper-status
     |  |     |        +--ro status?        identityref
     |  |     |        +--ro last-change?   yang:date-and-time
     |  |     +--rw vrrp
     |  |        +--rw address-family?   identityref
     |  |        +--rw status
     |  |           +--rw admin-status
     |  |           |  +--rw status?        identityref
     |  |           |  +--rw last-change?   yang:date-and-time
     |  |           +--ro oper-status
     |  |              +--ro status?        identityref
     |  |              +--ro last-change?   yang:date-and-time
     |  +--rw oam
     |  |  +--rw bfd {vpn-common:bfd}?
     |  |     +--rw holdtime?   uint32
     |  |     +--rw status
     |  |        +--rw admin-status
     |  |        |  +--rw status?        identityref
     |  |        |  +--rw last-change?   yang:date-and-time
     |  |        +--ro oper-status
     |  |           +--ro status?        identityref
     |  |           +--ro last-change?   yang:date-and-time
     |  +--rw security
     |     +--rw encryption {vpn-common:encryption}?
     |     |  +--rw enabled?   boolean
     |     |  +--rw layer?     enumeration
     |     +--rw encryption-profile
     |        +--rw (profile)?
     |           +--:(customer-profile)
     |              +--rw customer-key-chain?   key-chain:key-chain-ref
     +--rw ac* [name]
        +--rw customer-name?        string
        +--rw description?          string
        +--rw requested-ac-start?   yang:date-and-time
        +--rw requested-ac-stop?    yang:date-and-time
        +--ro actual-ac-start?      yang:date-and-time
        +--ro actual-ac-stop?       yang:date-and-time
        +--rw peer-sap-id*          string
        +--rw ac-global-profile*    ac-global-profile-reference
        +--rw ac-node-profile*      ac-node-group-reference
        +--rw name                  string
        +--rw l2-connection
        |  +--rw encapsulation
        |  |  +--rw type?              identityref
        |  |  +--rw dot1q
        |  |  |  +--rw tag-type?   identityref
        |  |  |  +--rw cvlan-id?   uint16
        |  |  +--rw priority-tagged
        |  |  |  +--rw tag-type?   identityref
        |  |  +--rw qinq
        |  |     +--rw tag-type?   identityref
        |  |     +--rw svlan-id    uint16
        |  |     +--rw cvlan-id    uint16
        |  +--rw (l2-service)?
        |  |  +--:(l2-tunnel-service)
        |  |  |  +--rw l2-tunnel-service
        |  |  |     +--rw type?         identityref
        |  |  |     +--rw pseudowire
        |  |  |     |  +--rw vcid?      uint32
        |  |  |     |  +--rw far-end?   union
        |  |  |     +--rw vpls
        |  |  |     |  +--rw vcid?      uint32
        |  |  |     |  +--rw far-end*   union
        |  |  |     +--rw vxlan
        |  |  |        +--rw vni-id             uint32
        |  |  |        +--rw peer-mode?         identityref
        |  |  |        +--rw peer-ip-address*   inet:ip-address
        |  |  +--:(l2vpn)
        |  |     +--rw l2vpn-id?            vpn-common:vpn-id
        |  +--rw bearer-reference?          string {vpn-common:bearer-reference}?
        +--rw ip-connection
        |  +--rw ipv4 {vpn-common:ipv4}?
        |  |  +--rw local-address?                           inet:ipv4-address
        |  |  +--rw prefix-length?                           uint8
        |  |  +--rw address-allocation-type?                 identityref
        |  |  +--rw (allocation-type)?
        |  |     +--:(dynamic)
        |  |     |  +--rw (address-assign)?
        |  |     |  |  +--:(number)
        |  |     |  |  |  +--rw number-of-dynamic-address?   uint16
        |  |     |  |  +--:(explicit)
        |  |     |  |     +--rw customer-addresses
        |  |     |  |        +--rw address-pool* [pool-id]
        |  |     |  |           +--rw pool-id          string
        |  |     |  |           +--rw start-address    inet:ipv4-address
        |  |     |  |           +--rw end-address?     inet:ipv4-address
        |  |     |  +--rw (provider-dhcp)?
        |  |     |  |  +--:(dhcp-service-type)
        |  |     |  |     +--rw dhcp-service-type?           enumeration
        |  |     |  +--rw (dhcp-relay)?
        |  |     |     +--:(customer-dhcp-servers)
        |  |     |        +--rw customer-dhcp-servers
        |  |     |           +--rw server-ip-address*   inet:ipv4-address
        |  |     +--:(static-addresses)
        |  |        +--rw address* [address-id]
        |  |           +--rw address-id          string
        |  |           +--rw customer-address?   inet:ipv4-address
        |  +--rw ipv6 {vpn-common:ipv6}?
        |     +--rw local-address?                           inet:ipv6-address
        |     +--rw prefix-length?                           uint8
        |     +--rw address-allocation-type?                 identityref
        |     +--rw (allocation-type)?
        |        +--:(dynamic)
        |        |  +--rw (address-assign)?
        |        |  |  +--:(number)
        |        |  |  |  +--rw number-of-dynamic-address?   uint16
        |        |  |  +--:(explicit)
        |        |  |     +--rw customer-addresses
        |        |  |        +--rw address-pool* [pool-id]
        |        |  |           +--rw pool-id          string
        |        |  |           +--rw start-address    inet:ipv6-address
        |        |  |           +--rw end-address?     inet:ipv6-address
        |        |  +--rw (provider-dhcp)?
        |        |  |  +--:(dhcp-service-type)
        |        |  |     +--rw dhcp-service-type?           enumeration
        |        |  +--rw (dhcp-relay)?
        |        |     +--:(customer-dhcp-servers)
        |        |        +--rw customer-dhcp-servers
        |        |           +--rw server-ip-address*   inet:ipv6-address
        |        +--:(static-addresses)
        |           +--rw address* [address-id]
        |              +--rw address-id          string
        |              +--rw customer-address?   inet:ipv6-address
        +--rw routing-protocols
        |  +--rw routing-protocol* [id]
        |     +--rw id                  string
        |     +--rw type?               identityref
        |     +--rw routing-profiles* [id]
        |     |  +--rw id      routing-profile-reference
        |     |  +--rw type?   identityref
        |     +--rw static
        |     |  +--rw cascaded-lan-prefixes
        |     |     +--rw ipv4-lan-prefixes* [lan next-hop] {vpn-common:ipv4}?
        |     |     |  +--rw lan         inet:ipv4-prefix
        |     |     |  +--rw lan-tag?    string
        |     |     |  +--rw next-hop    union
        |     |     |  +--rw 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 status
        |     |           +--rw admin-status
        |     |           |  +--rw status?        identityref
        |     |           |  +--rw last-change?   yang:date-and-time
        |     |           +--ro oper-status
        |     |              +--ro status?        identityref
        |     |              +--ro last-change?   yang:date-and-time
        |     +--rw bgp
        |     |  +--rw peer-groups
        |     |  |  +--rw peer-group* [name]
        |     |  |     +--rw name              string
        |     |  |     +--ro local-address?    inet:ip-address
        |     |  |     +--rw peer-as           inet:as-number
        |     |  |     +--rw address-family?   identityref
        |     |  +--rw neighbor* [remote-address]
        |     |     +--rw remote-address    inet:ip-address
        |     |     +--ro local-address?    inet:ip-address
        |     |     +--rw peer-group?       -> ../../peer-groups/peer-group/name
        |     |     +--rw peer-as           inet:as-number
        |     |     +--rw address-family?   identityref
        |     |     +--rw status
        |     |        +--rw admin-status
        |     |        |  +--rw status?        identityref
        |     |        |  +--rw last-change?   yang:date-and-time
        |     |        +--ro oper-status
        |     |           +--ro status?        identityref
        |     |           +--ro last-change?   yang:date-and-time
        |     +--rw ospf
        |     |  +--rw address-family?   identityref
        |     |  +--rw area-id           yang:dotted-quad
        |     |  +--rw metric?           uint16
        |     |  +--rw status
        |     |     +--rw admin-status
        |     |     |  +--rw status?        identityref
        |     |     |  +--rw last-change?   yang:date-and-time
        |     |     +--ro oper-status
        |     |        +--ro status?        identityref
        |     |        +--ro last-change?   yang:date-and-time
        |     +--rw isis
        |     |  +--rw address-family?   identityref
        |     |  +--rw area-address      area-address
        |     |  +--rw status
        |     |     +--rw admin-status
        |     |     |  +--rw status?        identityref
        |     |     |  +--rw last-change?   yang:date-and-time
        |     |     +--ro oper-status
        |     |        +--ro status?        identityref
        |     |        +--ro last-change?   yang:date-and-time
        |     +--rw rip
        |     |  +--rw address-family?   identityref
        |     |  +--rw status
        |     |     +--rw admin-status
        |     |     |  +--rw status?        identityref
        |     |     |  +--rw last-change?   yang:date-and-time
        |     |     +--ro oper-status
        |     |        +--ro status?        identityref
        |     |        +--ro last-change?   yang:date-and-time
        |     +--rw vrrp
        |        +--rw address-family?   identityref
        |        +--rw status
        |           +--rw admin-status
        |           |  +--rw status?        identityref
        |           |  +--rw last-change?   yang:date-and-time
        |           +--ro oper-status
        |              +--ro status?        identityref
        |              +--ro last-change?   yang:date-and-time
        +--rw oam
        |  +--rw bfd {vpn-common:bfd}?
        |     +--rw holdtime?   uint32
        |     +--rw status
        |        +--rw admin-status
        |        |  +--rw status?        identityref
        |        |  +--rw last-change?   yang:date-and-time
        |        +--ro oper-status
        |           +--ro status?        identityref
        |           +--ro last-change?   yang:date-and-time
        +--rw security
           +--rw encryption {vpn-common:encryption}?
           |  +--rw enabled?   boolean
           |  +--rw layer?     enumeration
           +--rw encryption-profile
              +--rw (profile)?
                 +--:(customer-profile)
                    +--rw customer-key-chain?   key-chain:key-chain-ref
]]></artwork>
      </figure>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
    <section numbered="false" anchor="contributors">
      <name>Contributors</name>
      <t>TODO contribute.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
S+zra9P6WaJL7G4QwCpAMLub8t0OkOC72sXsXXfHDWzHItLy4hLXyBenii7m
EciHuHy7DkWCgc74uwr8mMBPCYFqFZS9H0edgN5qNbWYrsqrjJM66hOyPINb
Ka8ePJklpyCi5ck0j5R6qrSSTy8xNJGq7ZJSyfu2St43VTKbWSXv+9pl86tk
h1izqmTWTiUrOvtVskXSWpWsftSoZL3MrCrZacerkvVSrJ1Ktqo4rKhRyW5V
NoVKrqldqZKrBLAKUKVKrgfUrJL1NluoZAvF2VWyjWKVStZ/tFTJ1o+WKtn6
wVqp5BrqN6tkq6FGlcyqqrSSTy8xPCrZ7dLHWi/uVawX92ZaL9JOJu9Dq5Vh
VgzcpaFDBN/ysLhmkdzC868R5Q0uVELu2aprjMvFIqWMxRvs8NZY+9JiFaoB
2jzt8tTJPECT1+U70m4tuosVdw45Mj0Vn0m3t8vU8EfHHUZBoBIAP8vD88H7
9nRxG7pLUzXuv7AcKI+nfSh4DlpUd+5IOOWtpLjgs9Fk1+GNvDK2K259iHpO
RgpYTp8k6mZnymPB09iqk6Litu8JudzH4zQr7EtLHQodrKw8os1xHoLwePeL
nft7ePX24uylfPfkiy/u75E1/O/9J3hdIZQ5uQhOLuDlycXbne0nT7+8v+cF
dna+fCJ/P9nbfkqFz09kG7uPn+zdi2hdHt8YDvPUxPj7OKMboVCIQdrORZaM
7h1uwHKirX9/fn62IUMnvvjyKeKYLD0Pn6TnYUqXnL+IFbOvz8q+wHnv5FC5
zdFonFoBKrkXm19shOywFncT1KrYsNHANGsLxn4VlG6Yd8Ne1Atwg4Gb+I4B
adAPlyd6Wegd/MmS6H0RXKfjnxocRi4GWFuRVq2AOPjGmrix86ySh1Z5iSO+
dJz0bnEk3MRPC3NRM4qToLGwBVYJVTX7Kvqcg564DpNB1BB/4Mc3ZSnmFGhE
VxWfCV1VezZ0y7XuVKLmLoQtc9cnavt1osamFDU2naixFqKmF2sUNfVmJlGz
as/GuxLfZlGzis+ELptV1MRW02BcpRppR4ymUQ/2nlLOZKoXVg2682mVPOmD
1vXl1GzOuY0SkmGuNUrVwzzgfor62nJB1Q9H8fCufs7RlG08uL5KMcY+i0Yp
8oGD8dBHtWSWbNXNeUjEXCZK6Qu+BlNkC/7TpED7vYVsbAI4FcFnpTZrp0Pa
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
/w+tGZaQG+MBAA==

-->

</rfc>
