Skip to content

Commit ae6baf1

Browse files
authored
Merge pull request #237 from boucadair/AD-Review-of-AC-Common
AD Review
2 parents a16bab3 + e58ef60 commit ae6baf1

20 files changed

+207
-302
lines changed

draft-ietf-opsawg-ntw-attachment-circuit.md

Lines changed: 56 additions & 42 deletions
Large diffs are not rendered by default.

draft-ietf-opsawg-teas-attachment-circuit.md

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -85,21 +85,11 @@ normative:
8585

8686
informative:
8787

88-
AC-svc-Tree:
89-
title: Full ACaaS Tree Structure
90-
date: 2024
91-
target: https://github.com/boucadair/attachment-circuit-model/blob/main/yang/full-trees/ac-svc-without-groupings.txt
92-
9388
Instance-Data:
9489
title: Example of AC SVC Instance Data
9590
date: 2024
9691
target: https://github.com/boucadair/attachment-circuit-model/blob/main/xml-examples/svc-full-instance.xml
9792

98-
PYANG:
99-
title: pyang
100-
date: 2024
101-
target: https://github.com/mbj4668/pyang
102-
10393
IEEE802.1AB:
10494
title: "IEEE Standard for Local and metropolitan area networks - Station and Media Access Control Connectivity Discovery"
10595
author:
@@ -479,10 +469,8 @@ The descriptions of the bearer data nodes are as follows:
479469

480470
## The Attachment Circuit Service ("ietf-ac-svc") YANG Module
481471

482-
The full tree diagram of the module can be generated using, e.g., the
483-
"pyang" tool {{PYANG}}. That tree is not included here because it is
484-
too long ({{Section 3.4 of ?I-D.ietf-netmod-rfc8407bis}}). Instead, subtrees are provided
485-
for the reader's convenience. The full tree of the 'ac-svc' is provided in {{AC-svc-Tree}}.
472+
The full tree diagram of the "ietf-ac-svc" module is provied in {{AC-svc-Tree}}. Subtrees are provided in the following subsections
473+
for the reader's convenience.
486474

487475
### Overall Structure
488476

@@ -592,18 +580,18 @@ The description of the data nodes is as follows:
592580
'peer-sap-id':
593581
: Includes references to the remote endpoints of an attachment circuit {{!RFC9408}}. 'peer' is drawn here from the perspective of the provider network. That is, a 'peer-sap' will refer to a customer node.
594582

595-
'ac-group-profile-ref':
583+
'group-profile-ref':
596584
: Indicates references to one or more profiles that are defined in {{sec-acp}}.
597585

598-
'ac-parent-ref':
586+
'parent-ref':
599587
: Specifies an AC that is inherited by an attachment circuit.
600588
: In contexts where dynamic terminating points are managed for a given AC,
601589
a parent AC can be defined with a set of stable and common information, while
602590
"child" ACs are defined to track dynamic information. These "child" ACs are bound to the parent AC, which is exposed to services (as a stable reference).
603591
: Whenever a parent AC is deleted, all its "child" ACs MUST be deleted.
604592
: A "child" AC MAY rely upon more than one parent AC (e.g., parent Layer 2 AC and parent Layer 3 AC). In such cases, these ACs MUST NOT be overlapping. An example to illustrate the use of multiple parent ACs is provided in {{sec-bfd-static}}.
605593

606-
'ac-child-ref':
594+
'child-ref':
607595
: Lists one or more references of child ACs that rely upon this attachment circuit as a parent AC.
608596

609597
'group':
@@ -1561,8 +1549,11 @@ Finally, the addition or deletion of compute nodes in the deployment ("compute-1
15611549
~~~~
15621550
{: #ex-json-bfd-static title="Message Body for the Configuration of CEs with Static Addressing and BFD Protection"}
15631551

1552+
# Full Tree {#AC-svc-Tree}
15641553

1565-
1554+
~~~~~~~~~~
1555+
{::include-fold ./yang/full-trees/ac-svc-without-groupings.txt}
1556+
~~~~~~~~~~
15661557

15671558
# Acknowledgments
15681559
{:numbered="false"}

draft-ietf-opsawg-teas-common-ac.md

Lines changed: 36 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ date:
1010
consensus: true
1111
v: 3
1212
area: "Operations and Management"
13-
workgroup: "OPSAWG"
13+
workgroup: "Operations and Management Area Working Group"
1414
keyword:
1515
- Slice Service
1616
- L3VPN
@@ -88,16 +88,6 @@ normative:
8888
date: 2002
8989
target: https://www.iso.org/standard/30932.html
9090

91-
informative:
92-
AC-Common-Tree:
93-
title: Full Common Attachment Circuit Tree Structure
94-
date: 2023
95-
target: https://github.com/boucadair/attachment-circuit-model/blob/main/yang/full-trees/ac-common-with-groupings.txt
96-
97-
PYANG:
98-
title: pyang
99-
date: 2023
100-
target: https://github.com/mbj4668/pyang
10191

10292
--- abstract
10393

@@ -107,7 +97,7 @@ The document specifies a common Attachment Circuits (ACs) YANG module, which is
10797

10898
# Introduction
10999

110-
Connectivity services are provided by networks to customers via dedicated terminating points (e.g., Service Functions (SFs), Customer Premises Equipment (CPEs), Autonomous System Border Routers (ASBRs), data centers gateways, or Internet Exchange Points). A connectivity service is basically about ensuring data transfer received from (or destined to) a given terminating point to (or from) other terminating points that belong to the same customer/service, an interconnection node, or an ancillary node. A set of objectives for the connectivity service may eventually be negotiated and agreed upon between a customer a network provider. For that data transfer to take place within the provider network, it is assumed that adequate setup is provisioned over the links that connect customer terminating points and a provider network (a Provider Edge (PE), typically) so that data can be successfully exchanged over these links. The required setup is referred to in this document as Attachment Circuits (ACs), while the underlying link is referred to as "bearer".
100+
Connectivity services are provided by networks to customers via dedicated terminating points (e.g., Service Functions (SFs), Customer Premises Equipment (CPEs), Autonomous System Border Routers (ASBRs), data centers gateways, or Internet Exchange Points). A connectivity service is basically about ensuring data transfer received from (or destined to) a given terminating point to (or from) other terminating points that belong to the same customer/service, an interconnection node, or an ancillary node. A set of objectives for the connectivity service may eventually be negotiated and agreed upon between a customer and a network provider. For that data transfer to take place within the provider network, it is assumed that adequate setup is provisioned over the links that connect customer terminating points and a provider network (a Provider Edge (PE), typically) so that data can be successfully exchanged over these links. The required setup is referred to in this document as Attachment Circuits (ACs), while the underlying link is referred to as "bearer".
111101

112102
This document adheres to the definition of an attachment circuit as provided in {{Section 1.2 of ?RFC4364}}, especially:
113103

@@ -122,7 +112,7 @@ This document adheres to the definition of an attachment circuit as provided in
122112
a tunnel of some sort; what matters is that it be possible for two
123113
devices to be network layer peers over the attachment circuit.
124114

125-
When a customer requests a new value-added service, the service can be bound to existing attachment circuits or trigger the instantiation of new attachment circuits. Whether these attachment circuits are specific to a given service or be shared to deliver a variety of services is deployment-specific.
115+
When a customer requests a new value-added service, the service can be bound to existing attachment circuits or trigger the instantiation of new attachment circuits. Whether these attachment circuits are specific for a given service or are shared to deliver a variety of services is deployment-specific.
126116

127117
An example of attachment circuits is depicted in {{uc}}. A Customer Edge (CE) may be a physical node or a logical entity. A CE is seen by the network as a peer Service Attachment Point (SAP) {{?RFC9408}}. CEs may be dedicated to one single service (e.g., Layer 3 Virtual Private Network (VPN) or Layer 2 VPN) or host multiple services (e.g., Service Functions {{?RFC7665}}). A single AC (as seen by a network provider) may be bound to one or multiple peer SAPs (e.g., "CE1" and "CE2"). For example, and as discussed in {{?RFC4364}}, multiple CEs can be attached to a PE over the same attachment circuit. This is typically implemented if the Layer 2 infrastructure between the CE and the network provides a multipoint service. The same CE may terminate multiple ACs. These ACs may be over the same or distinct bearers.
128118

@@ -211,13 +201,9 @@ To bind Layer 2 VPN or Layer 3 VPN services with ACs, "ietf-ac-glue" augments th
211201

212202
# Description of the AC Common YANG Module
213203

214-
The full tree diagram of the module can be generated using the
215-
"pyang" tool {{PYANG}} with "-f tree --tree-print-groupings" command-line parameters. That tree is not included here because it is
216-
too long ({{Section 3.3 of ?RFC8340}}). Instead, subtrees are provided
204+
The full tree diagram of the module is provided in {{AC-Common-Tree}}. Subtrees are provided in the following subsections
217205
for the reader's convenience.
218206

219-
> The full tree of the "ietf-ac-common" module is available at {{AC-Common-Tree}}.
220-
221207
## Features
222208

223209
The module defines the following features:
@@ -248,9 +234,6 @@ The module defines a set of identities, including the following:
248234
'precedence-type':
249235
: Used to indicate the redundancy type when requesting ACs. For example, this identity can be used to tag primary and secondary ACs.
250236

251-
'bgp-capability':
252-
: Used to indicate a BGP capability {{!RFC5492}}. Examples of BGP capabilities are Multiprotocol extensions for BGP-4 {{?RFC4760}}, route refresh {{?RFC2918}}, graceful restart {{?RFC4724}}, ADD-PATH {{?RFC7911}}, or BGP Role {{?RFC9234}}}.
253-
254237
'role':
255238
: Used to indicate the type of an AC: User-to-Network Interface (UNI), Network-to-Network Interface (NNI), or public NNI.
256239

@@ -288,6 +271,8 @@ Layer 2 tunnel services ({{l2-full-tree}}):
288271

289272
Layer 3 address allocation ({{l3-full-tree}}):
290273
: Defines both IPv4 and IPv6 groupings to specify IP address allocation over an AC. Both dynamic and static address schemes are supported.
274+
: For both IPv4 and IPv6, 'address-allocation-type' is used to indicate the IP address allocation mode to activate. When 'address-allocation-type' is set to 'provider-dhcp', DHCP assignments can be made locally or by an external DHCP server. Such behavior is controlled by setting 'dhcp-service-type'.
275+
: Note that if 'address-allocation-type' is set to 'slaac', the Prefix Information option of Router Advertisements that will be issued for SLAAC purposes will carry the IPv6 prefix that is determined by 'local-address' and 'prefix-length'.
291276

292277
IP connections ({{l3-full-tree}})::
293278
: Defines IPv4 and IPv6 groupings for managing Layer 3 connectivity over an AC. Both basic and more elaborated IP connection groupings are supported.
@@ -300,7 +285,7 @@ IP connections ({{l3-full-tree}})::
300285
Routing parameters & OAM ({{rtg-full-tree}}):
301286
: In addition to static routing, the module supports the following routing protocols: BGP {{!RFC4271}}, OSPF {{!RFC4577}} or {{!RFC6565}}, IS-IS {{ISO10589}}{{!RFC1195}}{{!RFC5308}}, and RIP {{!RFC2453}}. 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 {{!RFC2453}}, RIP Next Generation (RIPng), or both are to be enabled {{!RFC2080}}. More details about supported routing groupings are provided hereafter:
302287

303-
* Authentication: These groupings include the required information to manage the authentication of OSPF, IS-IS, BGP, and RIP. Similar to {{?RFC9182}}, this version of the common AC model assumes that parameters specific to the TCP-AO are preconfigured as part of the key chain that is referenced in the model. No assumption is made about how such a key chain is preconfigured. However, the structure of the key chain should cover data nodes beyond those in {{!RFC8177}}, mainly SendID and RecvID (Section 3.1 of {{!RFC5925}}).
288+
* Authentication: These groupings include the required information to manage the authentication of OSPF, IS-IS, BGP, and RIP. The groupings support local specification of authentication keys and the associated authentication algorithm to accomodate legacy implementations that do not support key chains {{!RFC8177}}. Similar to {{?RFC9182}}, this version of the common AC model assumes that parameters specific to the TCP-AO are preconfigured as part of the key chain that is referenced in the model. No assumption is made about how such a key chain is preconfigured. However, the structure of the key chain should cover data nodes beyond those in {{!RFC8177}}, mainly SendID and RecvID (Section 3.1 of {{!RFC5925}}).
304289

305290
* BGP peer groups: Includes a set of parameters to identify a BGP peer group. Such a group can be defined by providing a local AS Number (ASN), a customer's ASN, and the address families to be activated for this group. BGP peer groups can be identified by a name.
306291
* Basic parameters: These groupings include the minimal set of routing configuration that is required for the activation of OSPF, IS-IS, BGP, and RIP.
@@ -344,44 +329,43 @@ This module uses types defined in {{!RFC6991}}, {{!RFC8177}}, and {{!RFC9181}}.
344329

345330
# Security Considerations
346331

347-
This section uses the template described in {{Section 3.7 of ?I-D.ietf-netmod-rfc8407bis}}.
332+
This section is modeled after the template described in {{Section 3.7 of ?I-D.ietf-netmod-rfc8407bis}}.
348333

349-
The YANG module specified in this document defines schema for data
350-
that is designed to be accessed via network management protocols such
351-
as NETCONF {{!RFC6241}} or RESTCONF {{!RFC8040}}. The lowest NETCONF layer
352-
is the secure transport layer, and the mandatory-to-implement secure
353-
transport is Secure Shell (SSH) {{!RFC6242}}. The lowest RESTCONF layer
354-
is HTTPS, and the mandatory-to-implement secure transport is TLS
355-
{{!RFC8446}}.
334+
The "ietf-ac-common" YANG module defines a data model that is
335+
designed to be accessed via YANG-based management protocols, such as
336+
NETCONF {{?RFC6241}} and RESTCONF {{?RFC8040}}. These protocols have to
337+
use a secure transport layer (e.g., SSH {{?RFC4252}}, TLS {{?RFC8446}}, and
338+
QUIC {{?RFC9000}}) and have to use mutual authentication.
356339

357-
The Network Configuration Access Control Model (NACM) {{!RFC8341}}
358-
provides the means to restrict access for particular NETCONF or
359-
RESTCONF users to a preconfigured subset of all available NETCONF or
360-
RESTCONF protocol operations and content.
340+
The Network Configuration Access Control Model (NACM) {{!RFC8341}}
341+
provides the means to restrict access for particular NETCONF or
342+
RESTCONF users to a preconfigured subset of all available NETCONF or
343+
RESTCONF protocol operations and content.
361344

362-
The "ietf-ac-common" module defines a set of identities, types, and
363-
groupings. These nodes are intended to be reused by other YANG
364-
modules. The module by itself does not expose any data nodes that
365-
are writable, data nodes that contain read-only state, or RPCs.
345+
The YANG module defines a set of identities, types, and
346+
groupings. These nodes are intended to be reused by other YANG
347+
modules. The module by itself does not expose any data nodes that
348+
are writable, data nodes that contain read-only state, or RPCs.
349+
As such, there are no additional security issues related to
350+
the YANG module that need to be considered.
366351

367-
YANG modules that use the groupings that are defined in this document
368-
should identify the corresponding security considerations. For
352+
Modules that use the groupings that are defined in this document
353+
should identify the corresponding security considerations. For
369354
example, reusing some of these groupings will expose privacy-related
370355
information (e.g., 'ipv6-lan-prefixes' or 'ipv4-lan-prefixes'). Disclosing such information may
371356
be considered a violation of the customer-provider trust
372357
relationship.
373358

374-
Several groupings ('bgp-authentication', 'ospf-authentication', 'isis-authentication', and 'rip-authentication') rely
359+
Several groupings ('bgp-authentication', 'ospf-authentication', 'isis-authentication', and 'rip-authentication') rely
375360
upon {{!RFC8177}} for authentication purposes. As such, modules that will reuse these groupings
376-
will inherit the security considerations discussed in Section 5 of
377-
{{!RFC8177}}. Also, these groupings support supplying explicit keys as
361+
will inherit the security considerations discussed in
362+
{{Section 5 of !RFC8177}}. Also, these groupings support supplying explicit keys as
378363
strings in ASCII format. The use of keys in hexadecimal string
379364
format would afford greater key entropy with the same number of key-
380365
string octets. However, such a format is not included in this
381366
version of the common AC model, because it is not supported by the underlying
382367
device modules (e.g., {{?RFC8695}}).
383368

384-
385369
# IANA Considerations
386370

387371
IANA is requested to register the following URI in the "ns" subregistry within
@@ -406,6 +390,12 @@ This section uses the template described in {{Section 3.7 of ?I-D.ietf-netmod-rf
406390

407391
--- back
408392

393+
# Full Tree {#AC-Common-Tree}
394+
395+
~~~~~~~~~~
396+
{::include-fold ./yang/full-trees/ac-common-with-groupings.txt}
397+
~~~~~~~~~~
398+
409399
# Acknowledgments
410400
{:numbered="false"}
411401

@@ -416,3 +406,5 @@ Thanks to Ebben Aries for the YANG Doctors review, Andy Smith and Gyanh Mishra f
416406
rtg-dir reviews.
417407

418408
Thanks to Reza Rokui for the Shepherd review.
409+
410+
Thanks to Mahesh Jethanandani for the AD review.

json-examples/glue/example-acntw-2.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"ietf-ac-ntw:ac":[
33
{
44
"name":"ac-11",
5-
"ac-svc-ref":"ac-1",
5+
"svc-ref":"ac-1",
66
"peer-sap-id":[
77
"ce-1"
88
],

json-examples/ntw/multiple-acs-same-sap-2.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
},
2828
{
2929
"name":"ac-1-to-ce2",
30-
"ac-parent-ref":{
30+
"parent-ref":{
3131
"ac-ref":"ac-1",
3232
"node-ref":"example:pe2",
3333
"network-ref":"example:an-id"
@@ -38,7 +38,7 @@
3838
},
3939
{
4040
"name":"ac-1-to-ce5",
41-
"ac-parent-ref":{
41+
"parent-ref":{
4242
"ac-ref":"ac-1",
4343
"node-ref":"example:pe2",
4444
"network-ref":"example:an-id"

json-examples/svc/ac-cloud-parent.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -176,15 +176,15 @@
176176
{
177177
"name": "ac-nf-up-01-vlan-100",
178178
"description": "attachment to NF-up instance 1 in vlan 100",
179-
"ac-parent-ref": ["parent-vlan-100"],
179+
"parent-ref": ["parent-vlan-100"],
180180
"l2-connection": {
181181
"bearer-reference": "compute-01-nic1"
182182
}
183183
},
184184
{
185185
"name": "ac-nf-up-02-vlan-100",
186186
"description": "attachment to NF-up instance 2 in vlan 100",
187-
"ac-parent-ref": ["parent-vlan-100"],
187+
"parent-ref": ["parent-vlan-100"],
188188
"l2-connection": {
189189
"bearer-reference": "compute-02-nic2"
190190
}
@@ -195,15 +195,15 @@
195195
{
196196
"name": "ac-nf-up-08-vlan-100",
197197
"description": "attachment to NF-up instance 10 in vlan 100",
198-
"ac-parent-ref": ["parent-vlan-100"],
198+
"parent-ref": ["parent-vlan-100"],
199199
"l2-connection": {
200200
"bearer-reference": "compute-08-nic1"
201201
}
202202
},
203203
{
204204
"name": "ac-nf-cp-01-vlan-100",
205205
"description": "attachment to NF-CP instance 1 in vlan 100",
206-
"ac-parent-ref": ["parent-vlan-100"],
206+
"parent-ref": ["parent-vlan-100"],
207207
"l2-connection": {
208208
"bearer-reference": "compute-09-nic0"
209209
},
@@ -222,7 +222,7 @@
222222
{
223223
"name": "ac-nf-cp-02-vlan-100",
224224
"description": "attachment to NF-CP instance 2 in vlan 100",
225-
"ac-parent-ref": ["parent-vlan-100"],
225+
"parent-ref": ["parent-vlan-100"],
226226
"l2-connection": {
227227
"bearer-reference": "compute-10-nic0"
228228
},
@@ -241,7 +241,7 @@
241241
{
242242
"name": "ac-nf-up-1-vlan-200",
243243
"description": "attachment to NF-up instance 1 in vlan 200",
244-
"ac-parent-ref": ["parent-vlan-200"],
244+
"parent-ref": ["parent-vlan-200"],
245245
"l2-connection": {
246246
"bearer-reference": "compute-01-nic1"
247247
}
@@ -252,7 +252,7 @@
252252
{
253253
"name": "ac-nf-cp-2-vlan-200",
254254
"description": "attachment to NF-CP instance 2 in vlan 200",
255-
"ac-parent-ref": ["parent-vlan-200"],
255+
"parent-ref": ["parent-vlan-200"],
256256
"l2-connection": {
257257
"bearer-reference": "compute-10-nic0"
258258
}

0 commit comments

Comments
 (0)