rfc8994.original | rfc8994.txt | |||
---|---|---|---|---|
ANIMA WG T. Eckert, Ed. | Internet Engineering Task Force (IETF) T. Eckert, Ed. | |||
Internet-Draft Futurewei USA | Request for Comments: 8994 Futurewei USA | |||
Intended status: Standards Track M. Behringer, Ed. | Category: Standards Track M. Behringer, Ed. | |||
Expires: 3 May 2021 | ISSN: 2070-1721 | |||
S. Bjarnason | S. Bjarnason | |||
Arbor Networks | Arbor Networks | |||
30 October 2020 | May 2021 | |||
An Autonomic Control Plane (ACP) | An Autonomic Control Plane (ACP) | |||
draft-ietf-anima-autonomic-control-plane-30 | ||||
Abstract | Abstract | |||
Autonomic functions need a control plane to communicate, which | Autonomic functions need a control plane to communicate, which | |||
depends on some addressing and routing. This Autonomic Control Plane | depends on some addressing and routing. This Autonomic Control Plane | |||
should ideally be self-managing, and as independent as possible of | should ideally be self-managing and be as independent as possible of | |||
configuration. This document defines such a plane and calls it the | configuration. This document defines such a plane and calls it the | |||
"Autonomic Control Plane", with the primary use as a control plane | "Autonomic Control Plane", with the primary use as a control plane | |||
for autonomic functions. It also serves as a "virtual out-of-band | for autonomic functions. It also serves as a "virtual out-of-band | |||
channel" for Operations, Administration and Management (OAM) | channel" for Operations, Administration, and Management (OAM) | |||
communications over a network that provides automatically configured | communications over a network that provides automatically configured, | |||
hop-by-hop authenticated and encrypted communications via | hop-by-hop authenticated and encrypted communications via | |||
automatically configured IPv6 even when the network is not | automatically configured IPv6 even when the network is not configured | |||
configured, or misconfigured. | or is misconfigured. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on 3 May 2021. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc8994. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2021 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
extracted from this document must include Simplified BSD License text | to this document. Code Components extracted from this document must | |||
as described in Section 4.e of the Trust Legal Provisions and are | include Simplified BSD License text as described in Section 4.e of | |||
provided without warranty as described in the Simplified BSD License. | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | ||||
Table of Contents | Table of Contents | |||
1. Introduction (Informative) . . . . . . . . . . . . . . . . . 6 | 1. Introduction (Informative) | |||
1.1. Applicability and Scope . . . . . . . . . . . . . . . . . 9 | 1.1. Applicability and Scope | |||
2. Acronyms and Terminology (Informative) . . . . . . . . . . . 11 | 2. Acronyms and Terminology (Informative) | |||
3. Use Cases for an Autonomic Control Plane (Informative) . . . 16 | 3. Use Cases for an Autonomic Control Plane (Informative) | |||
3.1. An Infrastructure for Autonomic Functions . . . . . . . . 17 | 3.1. An Infrastructure for Autonomic Functions | |||
3.2. Secure Bootstrap over a not configured Network . . . . . 17 | 3.2. Secure Bootstrap over an Unconfigured Network | |||
3.3. Data-Plane Independent Permanent Reachability . . . . . . 17 | 3.3. Permanent Reachability Independent of the Data Plane | |||
4. Requirements (Informative) . . . . . . . . . . . . . . . . . 19 | 4. Requirements (Informative) | |||
5. Overview (Informative) . . . . . . . . . . . . . . . . . . . 20 | 5. Overview (Informative) | |||
6. Self-Creation of an Autonomic Control Plane (ACP) | 6. Self-Creation of an Autonomic Control Plane (ACP) (Normative) | |||
(Normative) . . . . . . . . . . . . . . . . . . . . . . . 21 | 6.1. Requirements for the Use of Transport Layer Security (TLS) | |||
6.1. Requirements for use of Transport Layer Security (TLS) . 22 | 6.2. ACP Domain, Certificate, and Network | |||
6.2. ACP Domain, Certificate and Network . . . . . . . . . . . 23 | 6.2.1. ACP Certificates | |||
6.2.1. ACP Certificates . . . . . . . . . . . . . . . . . . 24 | 6.2.2. ACP Certificate AcpNodeName | |||
6.2.2. ACP Certificate AcpNodeName . . . . . . . . . . . . . 26 | 6.2.2.1. AcpNodeName ASN.1 Module | |||
6.2.2.1. AcpNodeName ASN.1 Module . . . . . . . . . . . . 29 | 6.2.3. ACP Domain Membership Check | |||
6.2.3. ACP domain membership check . . . . . . . . . . . . . 30 | 6.2.3.1. Realtime Clock and Time Validation | |||
6.2.3.1. Realtime clock and Time Validation . . . . . . . 33 | 6.2.4. Trust Anchors (TA) | |||
6.2.4. Trust Anchors (TA) . . . . . . . . . . . . . . . . . 33 | 6.2.5. Certificate and Trust Anchor Maintenance | |||
6.2.5. Certificate and Trust Anchor Maintenance . . . . . . 34 | 6.2.5.1. GRASP Objective for EST Server | |||
6.2.5.1. GRASP objective for EST server . . . . . . . . . 35 | 6.2.5.2. Renewal | |||
6.2.5.2. Renewal . . . . . . . . . . . . . . . . . . . . . 37 | 6.2.5.3. Certificate Revocation Lists (CRLs) | |||
6.2.5.3. Certificate Revocation Lists (CRLs) . . . . . . . 37 | 6.2.5.4. Lifetimes | |||
6.2.5.4. Lifetimes . . . . . . . . . . . . . . . . . . . . 38 | 6.2.5.5. Reenrollment | |||
6.2.5.5. Re-enrollment . . . . . . . . . . . . . . . . . . 38 | 6.2.5.6. Failing Certificates | |||
6.2.5.6. Failing Certificates . . . . . . . . . . . . . . 40 | 6.3. ACP Adjacency Table | |||
6.3. ACP Adjacency Table . . . . . . . . . . . . . . . . . . . 41 | 6.4. Neighbor Discovery with DULL GRASP | |||
6.4. Neighbor Discovery with DULL GRASP . . . . . . . . . . . 41 | 6.5. Candidate ACP Neighbor Selection | |||
6.5. Candidate ACP Neighbor Selection . . . . . . . . . . . . 45 | 6.6. Channel Selection | |||
6.6. Channel Selection . . . . . . . . . . . . . . . . . . . . 45 | 6.7. Candidate ACP Neighbor Verification | |||
6.7. Candidate ACP Neighbor verification . . . . . . . . . . . 49 | 6.8. Security Association (Secure Channel) Protocols | |||
6.8. Security Association (Secure Channel) protocols . . . . . 49 | 6.8.1. General Considerations | |||
6.8.1. General considerations . . . . . . . . . . . . . . . 50 | 6.8.2. Common Requirements | |||
6.8.2. Common requirements . . . . . . . . . . . . . . . . . 51 | 6.8.3. ACP via IPsec | |||
6.8.3. ACP via IPsec . . . . . . . . . . . . . . . . . . . . 52 | 6.8.3.1. Native IPsec | |||
6.8.3.1. Native IPsec . . . . . . . . . . . . . . . . . . 52 | 6.8.3.1.1. RFC 8221 (IPsec/ESP) | |||
6.8.3.1.1. RFC8221 (IPsec/ESP) . . . . . . . . . . . . . 53 | 6.8.3.1.2. RFC 8247 (IKEv2) | |||
6.8.3.1.2. RFC8247 (IKEv2) . . . . . . . . . . . . . . . 54 | 6.8.3.2. IPsec with GRE Encapsulation | |||
6.8.3.2. IPsec with GRE encapsulation . . . . . . . . . . 55 | 6.8.4. ACP via DTLS | |||
6.8.4. ACP via DTLS . . . . . . . . . . . . . . . . . . . . 56 | 6.8.5. ACP Secure Channel Profiles | |||
6.8.5. ACP Secure Channel Profiles . . . . . . . . . . . . . 58 | 6.9. GRASP in the ACP | |||
6.9. GRASP in the ACP . . . . . . . . . . . . . . . . . . . . 59 | 6.9.1. GRASP as a Core Service of the ACP | |||
6.9.1. GRASP as a core service of the ACP . . . . . . . . . 59 | 6.9.2. ACP as the Security and Transport Substrate for GRASP | |||
6.9.2. ACP as the Security and Transport substrate for | 6.9.2.1. Discussion | |||
GRASP . . . . . . . . . . . . . . . . . . . . . . . . 59 | 6.10. Context Separation | |||
6.9.2.1. Discussion . . . . . . . . . . . . . . . . . . . 62 | 6.11. Addressing inside the ACP | |||
6.10. Context Separation . . . . . . . . . . . . . . . . . . . 63 | 6.11.1. Fundamental Concepts of Autonomic Addressing | |||
6.11. Addressing inside the ACP . . . . . . . . . . . . . . . . 63 | 6.11.2. The ACP Addressing Base Scheme | |||
6.11.1. Fundamental Concepts of Autonomic Addressing . . . . 63 | 6.11.3. ACP Zone Addressing Sub-Scheme (ACP-Zone) | |||
6.11.2. The ACP Addressing Base Scheme . . . . . . . . . . . 65 | 6.11.4. ACP Manual Addressing Sub-Scheme (ACP-Manual) | |||
6.11.3. ACP Zone Addressing Sub-Scheme (ACP-Zone) . . . . . 67 | 6.11.5. ACP Vlong Addressing Sub-Scheme (ACP-Vlong-8/ | |||
6.11.4. ACP Manual Addressing Sub-Scheme (ACP-Manual) . . . 68 | ACP-Vlong-16) | |||
6.11.5. ACP Vlong Addressing Sub-Scheme (ACP-VLong-8/ | 6.11.6. Other ACP Addressing Sub-Schemes | |||
ACP-VLong-16 . . . . . . . . . . . . . . . . . . . . 69 | 6.11.7. ACP Registrars | |||
6.11.6. Other ACP Addressing Sub-Schemes . . . . . . . . . . 70 | 6.11.7.1. Use of BRSKI or Other Mechanisms or Protocols | |||
6.11.7. ACP Registrars . . . . . . . . . . . . . . . . . . . 71 | 6.11.7.2. Unique Address/Prefix Allocation | |||
6.11.7.1. Use of BRSKI or other Mechanism/Protocols . . . 71 | 6.11.7.3. Addressing Sub-Scheme Policies | |||
6.11.7.2. Unique Address/Prefix allocation . . . . . . . . 72 | 6.11.7.4. Address/Prefix Persistence | |||
6.11.7.3. Addressing Sub-Scheme Policies . . . . . . . . . 72 | 6.11.7.5. Further Details | |||
6.11.7.4. Address/Prefix Persistence . . . . . . . . . . . 74 | 6.12. Routing in the ACP | |||
6.11.7.5. Further Details . . . . . . . . . . . . . . . . 74 | 6.12.1. ACP RPL Profile | |||
6.12. Routing in the ACP . . . . . . . . . . . . . . . . . . . 74 | 6.12.1.1. Overview | |||
6.12.1. ACP RPL Profile . . . . . . . . . . . . . . . . . . 75 | 6.12.1.1.1. Single Instance | |||
6.12.1.1. Overview . . . . . . . . . . . . . . . . . . . . 75 | 6.12.1.1.2. Reconvergence | |||
6.12.1.1.1. Single Instance . . . . . . . . . . . . . . 75 | 6.12.1.2. RPL Instances | |||
6.12.1.1.2. Reconvergence . . . . . . . . . . . . . . . 76 | 6.12.1.3. Storing vs. Non-Storing Mode | |||
6.12.1.2. RPL Instances . . . . . . . . . . . . . . . . . 77 | 6.12.1.4. DAO Policy | |||
6.12.1.3. Storing vs. Non-Storing Mode . . . . . . . . . . 77 | 6.12.1.5. Path Metrics | |||
6.12.1.4. DAO Policy . . . . . . . . . . . . . . . . . . . 77 | 6.12.1.6. Objective Function | |||
6.12.1.5. Path Metric . . . . . . . . . . . . . . . . . . 77 | 6.12.1.7. DODAG Repair | |||
6.12.1.6. Objective Function . . . . . . . . . . . . . . . 77 | 6.12.1.8. Multicast | |||
6.12.1.7. DODAG Repair . . . . . . . . . . . . . . . . . . 77 | 6.12.1.9. Security | |||
6.12.1.8. Multicast . . . . . . . . . . . . . . . . . . . 78 | 6.12.1.10. P2P Communications | |||
6.12.1.9. Security . . . . . . . . . . . . . . . . . . . . 78 | 6.12.1.11. IPv6 Address Configuration | |||
6.12.1.10. P2P communications . . . . . . . . . . . . . . . 78 | 6.12.1.12. Administrative Parameters | |||
6.12.1.11. IPv6 address configuration . . . . . . . . . . . 78 | 6.12.1.13. RPL Packet Information | |||
6.12.1.12. Administrative parameters . . . . . . . . . . . 79 | 6.12.1.14. Unknown Destinations | |||
6.12.1.13. RPL Packet Information . . . . . . . . . . . . . 79 | 6.13. General ACP Considerations | |||
6.12.1.14. Unknown Destinations . . . . . . . . . . . . . . 79 | 6.13.1. Performance | |||
6.13. General ACP Considerations . . . . . . . . . . . . . . . 80 | 6.13.2. Addressing of Secure Channels | |||
6.13.1. Performance . . . . . . . . . . . . . . . . . . . . 80 | 6.13.3. MTU | |||
6.13.2. Addressing of Secure Channels . . . . . . . . . . . 80 | 6.13.4. Multiple Links between Nodes | |||
6.13.3. MTU . . . . . . . . . . . . . . . . . . . . . . . . 81 | 6.13.5. ACP Interfaces | |||
6.13.4. Multiple links between nodes . . . . . . . . . . . . 81 | 6.13.5.1. ACP Loopback Interfaces | |||
6.13.5. ACP interfaces . . . . . . . . . . . . . . . . . . . 82 | 6.13.5.2. ACP Virtual Interfaces | |||
6.13.5.1. ACP loopback interfaces . . . . . . . . . . . . 82 | 6.13.5.2.1. ACP Point-to-Point Virtual Interfaces | |||
6.13.5.2. ACP virtual interfaces . . . . . . . . . . . . . 84 | 6.13.5.2.2. ACP Multi-Access Virtual Interfaces | |||
6.13.5.2.1. ACP point-to-point virtual interfaces . . . 84 | 7. ACP Support on L2 Switches/Ports (Normative) | |||
6.13.5.2.2. ACP multi-access virtual interfaces . . . . 84 | 7.1. Why (Benefits of ACP on L2 Switches) | |||
7. ACP support on L2 switches/ports (Normative) . . . . . . . . 87 | 7.2. How (per L2 Port DULL GRASP) | |||
7.1. Why (Benefits of ACP on L2 switches) . . . . . . . . . . 87 | 8. Support for Non-ACP Components (Normative) | |||
7.2. How (per L2 port DULL GRASP) . . . . . . . . . . . . . . 88 | 8.1. ACP Connect | |||
8. Support for Non-ACP Components (Normative) . . . . . . . . . 89 | 8.1.1. Non-ACP Controller and/or Network Management System | |||
8.1. ACP Connect . . . . . . . . . . . . . . . . . . . . . . . 89 | (NMS) | |||
8.1.1. Non-ACP Controller / NMS system . . . . . . . . . . . 90 | 8.1.2. Software Components | |||
8.1.2. Software Components . . . . . . . . . . . . . . . . . 92 | 8.1.3. Autoconfiguration | |||
8.1.3. Auto Configuration . . . . . . . . . . . . . . . . . 93 | 8.1.4. Combined ACP and Data Plane Interface (VRF Select) | |||
8.1.4. Combined ACP/Data-Plane Interface (VRF Select) . . . 94 | 8.1.5. Use of GRASP | |||
8.1.5. Use of GRASP . . . . . . . . . . . . . . . . . . . . 96 | 8.2. Connecting ACP Islands over Non-ACP L3 Networks (Remote ACP | |||
8.2. Connecting ACP islands over Non-ACP L3 networks (Remote ACP | Neighbors) | |||
neighbors) . . . . . . . . . . . . . . . . . . . . . . . 97 | 8.2.1. Configured Remote ACP Neighbor | |||
8.2.1. Configured Remote ACP neighbor . . . . . . . . . . . 97 | 8.2.2. Tunneled Remote ACP Neighbor | |||
8.2.2. Tunneled Remote ACP Neighbor . . . . . . . . . . . . 98 | 8.2.3. Summary | |||
8.2.3. Summary . . . . . . . . . . . . . . . . . . . . . . . 98 | 9. ACP Operations (Informative) | |||
9. ACP Operations (Informative) . . . . . . . . . . . . . . . . 99 | 9.1. ACP (and BRSKI) Diagnostics | |||
9.1. ACP (and BRSKI) Diagnostics . . . . . . . . . . . . . . . 99 | 9.1.1. Secure Channel Peer Diagnostics | |||
9.1.1. Secure Channel Peer diagnostics . . . . . . . . . . . 103 | 9.2. ACP Registrars | |||
9.2. ACP Registrars . . . . . . . . . . . . . . . . . . . . . 104 | 9.2.1. Registrar Interactions | |||
9.2.1. Registrar interactions . . . . . . . . . . . . . . . 104 | 9.2.2. Registrar Parameters | |||
9.2.2. Registrar Parameter . . . . . . . . . . . . . . . . . 105 | 9.2.3. Certificate Renewal and Limitations | |||
9.2.3. Certificate renewal and limitations . . . . . . . . . 106 | 9.2.4. ACP Registrars with Sub-CA | |||
9.2.4. ACP Registrars with sub-CA . . . . . . . . . . . . . 107 | 9.2.5. Centralized Policy Control | |||
9.2.5. Centralized Policy Control . . . . . . . . . . . . . 107 | 9.3. Enabling and Disabling the ACP and/or the ANI | |||
9.3. Enabling and disabling ACP/ANI . . . . . . . . . . . . . 108 | 9.3.1. Filtering for Non-ACP/ANI Packets | |||
9.3.1. Filtering for non-ACP/ANI packets . . . . . . . . . . 108 | 9.3.2. "admin down" State | |||
9.3.2. Admin Down State . . . . . . . . . . . . . . . . . . 109 | 9.3.2.1. Security | |||
9.3.2.1. Security . . . . . . . . . . . . . . . . . . . . 110 | 9.3.2.2. Fast State Propagation and Diagnostics | |||
9.3.2.2. Fast state propagation and Diagnostics . . . . . 110 | 9.3.2.3. Low-Level Link Diagnostics | |||
9.3.2.3. Low Level Link Diagnostics . . . . . . . . . . . 111 | 9.3.2.4. Power Consumption Issues | |||
9.3.2.4. Power Consumption Issues . . . . . . . . . . . . 112 | 9.3.3. Enabling Interface-Level ACP and ANI | |||
9.3.3. Interface level ACP/ANI enable . . . . . . . . . . . 112 | 9.3.4. Which Interfaces to Auto-Enable? | |||
9.3.4. Which interfaces to auto-enable? . . . . . . . . . . 112 | 9.3.5. Enabling Node-Level ACP and ANI | |||
9.3.5. Node Level ACP/ANI enable . . . . . . . . . . . . . . 114 | 9.3.5.1. Brownfield Nodes | |||
9.3.5.1. Brownfield nodes . . . . . . . . . . . . . . . . 114 | 9.3.5.2. Greenfield Nodes | |||
9.3.5.2. Greenfield nodes . . . . . . . . . . . . . . . . 115 | 9.3.6. Undoing "ANI/ACP enable" | |||
9.3.6. Undoing ANI/ACP enable . . . . . . . . . . . . . . . 116 | 9.3.7. Summary | |||
9.3.7. Summary . . . . . . . . . . . . . . . . . . . . . . . 117 | 9.4. Partial or Incremental Adoption | |||
9.4. Partial or Incremental adoption . . . . . . . . . . . . . 117 | 9.5. Configuration and the ACP (Summary) | |||
9.5. Configuration and the ACP (summary) . . . . . . . . . . . 118 | 10. Summary: Benefits (Informative) | |||
10. Summary: Benefits (Informative) . . . . . . . . . . . . . . . 119 | 10.1. Self-Healing Properties | |||
10.1. Self-Healing Properties . . . . . . . . . . . . . . . . 119 | 10.2. Self-Protection Properties | |||
10.2. Self-Protection Properties . . . . . . . . . . . . . . . 121 | 10.2.1. From the Outside | |||
10.2.1. From the outside . . . . . . . . . . . . . . . . . . 121 | 10.2.2. From the Inside | |||
10.2.2. From the inside . . . . . . . . . . . . . . . . . . 122 | 10.3. The Administrator View | |||
10.3. The Administrator View . . . . . . . . . . . . . . . . . 123 | 11. Security Considerations | |||
11. Security Considerations . . . . . . . . . . . . . . . . . . . 124 | 12. IANA Considerations | |||
12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 129 | 13. References | |||
13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 130 | 13.1. Normative References | |||
14. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 130 | 13.2. Informative References | |||
15. Change log [RFC-Editor: Please remove] . . . . . . . . . . . 131 | Appendix A. Background and Future (Informative) | |||
15.1. Summary of changes since entering IESG review . . . . . 131 | A.1. ACP Address Space Schemes | |||
15.1.1. Reviews (while in IESG review status) / status . . . 131 | A.2. BRSKI Bootstrap (ANI) | |||
15.1.2. BRSKI / ACP registrar related enhancements . . . . . 132 | A.3. ACP Neighbor Discovery Protocol Selection | |||
15.1.3. Normative enhancements since start of IESG review . 132 | A.3.1. LLDP | |||
15.1.4. Explanatory enhancements since start of IESG | A.3.2. mDNS and L2 Support | |||
review . . . . . . . . . . . . . . . . . . . . . . . 133 | A.3.3. Why DULL GRASP? | |||
15.2. draft-ietf-anima-autonomic-control-plane-30 . . . . . . 134 | A.4. Choice of Routing Protocol (RPL) | |||
15.3. draft-ietf-anima-autonomic-control-plane-29 . . . . . . 136 | A.5. ACP Information Distribution and Multicast | |||
15.4. draft-ietf-anima-autonomic-control-plane-28 . . . . . . 138 | A.6. CAs, Domains, and Routing Subdomains | |||
15.5. draft-ietf-anima-autonomic-control-plane-27 . . . . . . 140 | A.7. Intent for the ACP | |||
15.6. draft-ietf-anima-autonomic-control-plane-26 . . . . . . 140 | A.8. Adopting ACP Concepts for Other Environments | |||
15.7. draft-ietf-anima-autonomic-control-plane-25 . . . . . . 141 | A.9. Further (Future) Options | |||
15.8. draft-ietf-anima-autonomic-control-plane-24 . . . . . . 144 | A.9.1. Auto-Aggregation of Routes | |||
15.9. draft-ietf-anima-autonomic-control-plane-23 . . . . . . 145 | A.9.2. More Options for Avoiding IPv6 Data Plane Dependencies | |||
15.10. draft-ietf-anima-autonomic-control-plane-22 . . . . . . 146 | A.9.3. ACP APIs and Operational Models (YANG) | |||
16. Normative References . . . . . . . . . . . . . . . . . . . . 148 | A.9.4. RPL Enhancements | |||
17. Informative References . . . . . . . . . . . . . . . . . . . 151 | A.9.5. Role Assignments | |||
Appendix A. Background and Futures (Informative) . . . . . . . . 160 | A.9.6. Autonomic L3 Transit | |||
A.1. ACP Address Space Schemes . . . . . . . . . . . . . . . . 160 | A.9.7. Diagnostics | |||
A.2. BRSKI Bootstrap (ANI) . . . . . . . . . . . . . . . . . . 161 | A.9.8. Avoiding and Dealing with Compromised ACP Nodes | |||
A.3. ACP Neighbor discovery protocol selection . . . . . . . . 162 | A.9.9. Detecting ACP Secure Channel Downgrade Attacks | |||
A.3.1. LLDP . . . . . . . . . . . . . . . . . . . . . . . . 162 | Acknowledgements | |||
A.3.2. mDNS and L2 support . . . . . . . . . . . . . . . . . 163 | Contributors | |||
A.3.3. Why DULL GRASP . . . . . . . . . . . . . . . . . . . 163 | Authors' Addresses | |||
A.4. Choice of routing protocol (RPL) . . . . . . . . . . . . 163 | ||||
A.5. ACP Information Distribution and multicast . . . . . . . 165 | ||||
A.6. CAs, domains and routing subdomains . . . . . . . . . . . 166 | ||||
A.7. Intent for the ACP . . . . . . . . . . . . . . . . . . . 167 | ||||
A.8. Adopting ACP concepts for other environments . . . . . . 168 | ||||
A.9. Further (future) options . . . . . . . . . . . . . . . . 170 | ||||
A.9.1. Auto-aggregation of routes . . . . . . . . . . . . . 170 | ||||
A.9.2. More options for avoiding IPv6 Data-Plane | ||||
dependencies . . . . . . . . . . . . . . . . . . . . 170 | ||||
A.9.3. ACP APIs and operational models (YANG) . . . . . . . 171 | ||||
A.9.4. RPL enhancements . . . . . . . . . . . . . . . . . . 171 | ||||
A.9.5. Role assignments . . . . . . . . . . . . . . . . . . 172 | ||||
A.9.6. Autonomic L3 transit . . . . . . . . . . . . . . . . 172 | ||||
A.9.7. Diagnostics . . . . . . . . . . . . . . . . . . . . . 172 | ||||
A.9.8. Avoiding and dealing with compromised ACP nodes . . . 173 | ||||
A.9.9. Detecting ACP secure channel downgrade attacks . . . 174 | ||||
Appendix B. Unfinished considerations (To Be Removed From | ||||
RFC) . . . . . . . . . . . . . . . . . . . . . . . . . . 175 | ||||
B.1. Considerations for improving secure channel | ||||
negotiation . . . . . . . . . . . . . . . . . . . . . . . 175 | ||||
B.2. ACP address verification . . . . . . . . . . . . . . . . 176 | ||||
B.3. Public CA considerations . . . . . . . . . . . . . . . . 178 | ||||
B.4. Hardening DULL GRASP considerations . . . . . . . . . . . 179 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 179 | ||||
1. Introduction (Informative) | 1. Introduction (Informative) | |||
Autonomic Networking is a concept of self-management: Autonomic | Autonomic Networking is a concept of self-management: autonomic | |||
functions self-configure, and negotiate parameters and settings | functions self-configure, and negotiate parameters and settings | |||
across the network. [RFC7575] defines the fundamental ideas and | across the network. "Autonomic Networking: Definitions and Design | |||
design goals of Autonomic Networking. A gap analysis of Autonomic | Goals" [RFC7575] defines the fundamental ideas and design goals of | |||
Networking is given in [RFC7576]. The reference architecture for | Autonomic Networking. A gap analysis of Autonomic Networking is | |||
Autonomic Networking in the IETF is specified in the document | given in "General Gap Analysis for Autonomic Networking" [RFC7576]. | |||
[I-D.ietf-anima-reference-model]. | The reference architecture for Autonomic Networking in the IETF is | |||
specified in the document "A Reference Model for Autonomic | ||||
Networking" [RFC8993]. | ||||
Autonomic functions need an autonomically built communications | Autonomic functions need an autonomically built communications | |||
infrastructure. This infrastructure needs to be secure, resilient | infrastructure. This infrastructure needs to be secure, resilient, | |||
and re-usable by all autonomic functions. Section 5 of [RFC7575] | and reusable by all autonomic functions. Section 5 of [RFC7575] | |||
introduces that infrastructure and calls it the Autonomic Control | introduces that infrastructure and calls it the Autonomic Control | |||
Plane (ACP). More descriptively it would be the "Autonomic | Plane (ACP). More descriptively, it could be called the "Autonomic | |||
communications infrastructure for OAM and Control". For naming | communications infrastructure for OAM and control". For naming | |||
consistency with that prior document, this document continues to use | consistency with that prior document, this document continues to use | |||
the name ACP though. | the name ACP. | |||
Today, the OAM and control plane of IP networks is what is typically | Today, the OAM and control plane of IP networks is what is typically | |||
called in-band management/signaling: Its management and control | called in-band management and/or signaling: its management and | |||
protocol traffic depends on the routing and forwarding tables, | control protocol traffic depends on the routing and forwarding | |||
security, policy, QoS and potentially other configuration that first | tables, security, policy, QoS, and potentially other configuration | |||
has to be established through the very same management and control | that first has to be established through the very same management and | |||
protocols. Misconfigurations including unexpected side effects or | control protocols. Misconfigurations, including unexpected side | |||
mutual dependences can disrupt OAM and control operations and | effects or mutual dependencies, can disrupt OAM and control | |||
especially disrupt remote management access to the affected node | operations and especially disrupt remote management access to the | |||
itself and potentially a much larger number of nodes for whom the | affected node itself and potentially disrupt access to a much larger | |||
affected node is on the network path. | number of nodes for which the affected node is on the network path. | |||
For an example of inband management failing in the face of operator | For an example of in-band management failing in the face of operator- | |||
induced misconfiguration, see [FCC], for example III.B.15 on page 8: | induced misconfiguration, see [FCC], for example, Section III.B.15 on | |||
"...engineers almost immediately recognized that they had | page 8: | |||
misdiagnosed the problem. However, they were unable to resolve the | ||||
issue by restoring the link because the network management tools | | ...engineers almost immediately recognized that they had | |||
required to do so remotely relied on the same paths they had just | | misdiagnosed the problem. However, they were unable to resolve | |||
disabled". | | the issue by restoring the link because the network management | |||
| tools required to do so remotely relied on the same paths they had | ||||
| just disabled. | ||||
Traditionally, physically separate, so-called out-of-band | Traditionally, physically separate, so-called out-of-band | |||
(management) networks have been used to avoid these problems or at | (management) networks have been used to avoid these problems or at | |||
least to allow recovery from such problems. Worst case, personnel | least to allow recovery from such problems. In the worst-case | |||
are sent on site to access devices through out-of-band management | scenario, personnel are sent on site to access devices through out- | |||
ports (also called craft ports, serial console, management ethernet | of-band management ports (also called craft ports, serial consoles, | |||
port). However, both options are expensive. | or management Ethernet ports). However, both options are expensive. | |||
In increasingly automated networks either centralized management | In increasingly automated networks, both centralized management | |||
systems or distributed autonomic service agents in the network | systems and distributed autonomic service agents in the network | |||
require a control plane which is independent of the configuration of | require a control plane that is independent of the configuration of | |||
the network they manage, to avoid impacting their own operations | the network they manage, to avoid impacting their own operations | |||
through the configuration actions they take. | through the configuration actions they take. | |||
This document describes a modular design for a self-forming, self- | This document describes a modular design for a self-forming, self- | |||
managing and self-protecting ACP, which is a virtual out-of-band | managing, and self-protecting ACP, which is a virtual out-of-band | |||
network designed to be as independent as possible of configuration, | network designed to be as independent as possible of configuration, | |||
addressing and routing to avoid the self-dependency problems of | addressing, and routing to avoid the self-dependency problems of | |||
current IP networks while still operating in-band on the same | current IP networks while still operating in-band on the same | |||
physical network that it is controlling and managing. The ACP design | physical network that it is controlling and managing. The ACP design | |||
is therefore intended to combine as well as possible the resilience | is therefore intended to combine as well as possible the resilience | |||
of out-of-band management networks with the low-cost of traditional | of out-of-band management networks with the low cost of traditional | |||
IP in-band network management. The details how this is achieved are | IP in-band network management. The details of how this is achieved | |||
described in Section 6. | are described in Section 6. | |||
In a fully autonomic network node without legacy control or | In a fully Autonomic Network without legacy control or management | |||
management functions/protocols, the Data-Plane would be for example | functions and/or protocols, the data plane would be just a forwarding | |||
just a forwarding plane for "Data" IPv6 packets, aka: packets other | plane for "data" IPv6 packets, which are packets other than those | |||
than the control and management plane packets that are forwarded by | control and management plane packets forwarded by the ACP itself. In | |||
the ACP itself. In such networks/nodes, there would be no non- | such a network, there would be no non-autonomous control of nodes nor | |||
autonomous control or non-autonomous management plane. | a non-autonomous management plane. | |||
Routing protocols for example would be built inside the ACP as so- | Routing protocols would be built inside the ACP as autonomous | |||
called autonomous functions via autonomous service agents, leveraging | functions via autonomous service agents, leveraging the following ACP | |||
the ACP's functions instead of implementing them separately for each | functions instead of implementing them separately for each protocol: | |||
protocol: discovery, automatically established authenticated and | discovery; automatically established, authenticated, and encrypted | |||
encrypted local and distant peer connectivity for control and | local and distant peer connectivity for control and management | |||
management traffic, and common control/management protocol session | traffic; and common session and presentation functions of the control | |||
and presentation functions. | and management protocol. | |||
When ACP functionality is added to nodes that have non-autonomous | When ACP functionality is added to nodes that do not have autonomous | |||
management plane and/or control plane functions (henceforth called | management plane and/or control plane functions (henceforth called | |||
non-autonomous nodes), the ACP instead is best abstracted as a | non-autonomous nodes), the ACP instead is best abstracted as a | |||
special Virtual Routing and Forwarding (VRF) instance (or virtual | special Virtual Routing and Forwarding (VRF) instance (or virtual | |||
router) and the complete pre-existing non-autonomous management and/ | router), and the complete, preexisting, non-autonomous management | |||
or control plane is considered to be part of the Data-Plane to avoid | and/or control plane is considered to be part of the data plane to | |||
introduction of more complex, new terminology only for this case. | avoid introducing more complex terminology only for this case. | |||
Like the forwarding plane for "Data" packets, the non-autonomous | Like the forwarding plane for "data" packets, the non-autonomous | |||
control and management plane functions can then be managed/used via | control and management plane functions can then be managed and/or | |||
the ACP. This terminology is consistent with pre-existing documents | used via the ACP. This terminology is consistent with preexisting | |||
such as [RFC8368]. | documents such as "Using an Autonomic Control Plane for Stable | |||
Connectivity of Network Operations, Administration, and Maintenance | ||||
(OAM)" [RFC8368]. | ||||
In both instances (autonomous and non-autonomous nodes), the ACP is | In both autonomous and non-autonomous instances, the ACP is built | |||
built such that it is operating in the absence of the Data-Plane, and | such that it operates in the absence of the data plane. The ACP also | |||
in the case of existing non-autonomous (management, control) | operates in the presence of any (mis)configured non-autonomous | |||
components in the Data-Plane also in the presence of any | management and/or control components in the data plane. | |||
(mis-)configuration thereof. | ||||
The Autonomic Control Plane serves several purposes at the same time: | The ACP serves several purposes simultaneously: | |||
1. Autonomic functions communicate over the ACP. The ACP therefore | 1. Autonomic functions communicate over the ACP. The ACP therefore | |||
directly supports Autonomic Networking functions, as described in | directly supports Autonomic Networking functions, as described in | |||
[I-D.ietf-anima-reference-model]. For example, Generic Autonomic | [RFC8993]. For example, GRASP ("GeneRic Autonomic Signaling | |||
Signaling Protocol (GRASP - [I-D.ietf-anima-grasp]) runs securely | Protocol (GRASP)" [RFC8990]) runs securely inside the ACP and | |||
inside the ACP and depends on the ACP as its "security and | depends on the ACP as its "security and transport substrate". | |||
transport substrate". | ||||
2. A controller or network management system can use it to securely | 2. A controller or network management system can use ACP to securely | |||
bootstrap network devices in remote locations, even if the (Data- | bootstrap network devices in remote locations, even if the (data | |||
Plane) network in between is not yet configured; no Data-Plane | plane) network in between is not yet configured; no bootstrap | |||
dependent bootstrap configuration is required. An example of | configuration that is dependent on the data plane is required. | |||
such a secure bootstrap process is described in | An example of such a secure bootstrap process is described in | |||
[I-D.ietf-anima-bootstrapping-keyinfra]. | "Bootstrapping Remote Secure Key Infrastructure (BRSKI)" | |||
3. An operator can use it to access remote devices using protocols | [RFC8995]. | |||
3. An operator can use ACP to access remote devices using protocols | ||||
such as Secure SHell (SSH) or Network Configuration Protocol | such as Secure SHell (SSH) or Network Configuration Protocol | |||
(NETCONF) running across the ACP, even if the network is | (NETCONF), even if the network is misconfigured or unconfigured. | |||
misconfigured or not configured. | ||||
This document describes these purposes as use cases for the ACP in | This document describes these purposes as use cases for the ACP in | |||
Section 3, it defines the requirements in Section 4. Section 5 gives | Section 3, and it defines the requirements in Section 4. Section 5 | |||
an overview of how the ACP is constructed. | gives an overview of how the ACP is constructed. | |||
The normative part of this document starts with Section 6, where the | The normative part of this document starts with Section 6, where the | |||
ACP is specified. Section 7 explains how to support ACP on L2 | ACP is specified. Section 7 explains how to support ACP on Layer 2 | |||
switches (normative). Section 8 explains how non-ACP nodes and | (L2) switches (normative). Section 8 explains how non-ACP nodes and | |||
networks can be integrated (normative). | networks can be integrated (normative). | |||
The remaining sections are non-normative: Section 10 reviews benefits | The remaining sections are non-normative. Section 10 reviews the | |||
of the ACP (after all the details have been defined), Section 9 | benefits of the ACP (after all the details have been defined). | |||
provides operational recommendations, Appendix A provides additional | Section 9 provides operational recommendations. Appendix A provides | |||
explanations and describes additional details or future standard or | additional background and describes possible extensions that were not | |||
proprietary extensions that were considered not to be appropriate for | applicable for this specification but were considered important to | |||
standardization in this document but were considered important to | document. There are no dependencies on Appendix A in order to build | |||
document. There are no dependencies against Appendix A to build a | a complete working and interoperable ACP according to this document. | |||
complete working and interoperable ACP according to this document. | ||||
The ACP provides secure IPv6 connectivity, therefore it can be used | The ACP provides secure IPv6 connectivity; therefore, it can be used | |||
not only as the secure connectivity for self-management as required | for secure connectivity not only for self-management as required for | |||
for the ACP in [RFC7575], but it can also be used as the secure | the ACP in [RFC7575] but also for traditional (centralized) | |||
connectivity for traditional (centralized) management. The ACP can | management. The ACP can be implemented and operated without any | |||
be implemented and operated without any other components of autonomic | other components of Autonomic Networks, except for GRASP. ACP relies | |||
networks, except for the GRASP protocol. ACP relies on per-link DULL | on per-link Discovery Unsolicited Link-Local (DULL) GRASP (see | |||
GRASP (see Section 6.4) to autodiscover ACP neighbors, and includes | Section 6.4) to auto-discover ACP neighbors and includes the ACP | |||
the ACP GRASP instance to provide service discovery for clients of | GRASP instance to provide service discovery for clients of the ACP | |||
the ACP (see Section 6.9) including for its own maintenance of ACP | (see Section 6.9), including for its own maintenance of ACP | |||
certificates. | certificates. | |||
The document "Using Autonomic Control Plane for Stable Connectivity | The document [RFC8368] describes how the ACP can be used alone to | |||
of Network OAM" [RFC8368] describes how the ACP alone can be used to | ||||
provide secure and stable connectivity for autonomic and non- | provide secure and stable connectivity for autonomic and non- | |||
autonomic OAM applications, specifically for the case of current non- | autonomic OAM applications, specifically for the case of current non- | |||
autonomic networks/nodes. That document also explains how existing | autonomic networks and/or nodes. That document also explains how | |||
management solutions can leverage the ACP in parallel with | existing management solutions can leverage the ACP in parallel with | |||
traditional management models, when to use the ACP and how to | traditional management models, when to use the ACP, and how to | |||
integrate with potentially IPv4 only OAM backends. | integrate with potentially IPv4-only OAM backends. | |||
Combining ACP with Bootstrapping Remote Secure Key Infrastructures | Combining ACP with Bootstrapping Remote Secure Key Infrastructure | |||
(BRSKI), see [I-D.ietf-anima-bootstrapping-keyinfra]) results in the | (BRSKI) (see [RFC8995]) results in the "Autonomic Network | |||
"Autonomic Network Infrastructure" (ANI) as defined in | Infrastructure" (ANI) as defined in [RFC8993], which provides | |||
[I-D.ietf-anima-reference-model], which provides autonomic | autonomic connectivity (from ACP) with secure zero-touch (automated) | |||
connectivity (from ACP) with secure zero-touch (automated) bootstrap | bootstrap from BRSKI. The ANI itself does not constitute an | |||
from BRSKI. The ANI itself does not constitute an Autonomic Network, | Autonomic Network, but it allows the building of more or less | |||
but it allows the building of more or less autonomic networks on top | Autonomic Networks on top of it, using either centralized automation | |||
of it - using either centralized, Software Defined Networking- | in SDN style (see "Software-Defined Networking (SDN): Layers and | |||
(SDN-)style (see [RFC7426]) automation or distributed automation via | Architecture Terminology" [RFC7426]) or distributed automation via | |||
Autonomic Service Agents (ASA) / Autonomic Functions (AF) - or a | Autonomic Service Agents (ASA) and/or Autonomic Functions (AF), or a | |||
mixture of both. See [I-D.ietf-anima-reference-model] for more | mixture of both. See [RFC8993] for more information. | |||
information. | ||||
1.1. Applicability and Scope | 1.1. Applicability and Scope | |||
Please see the following Terminology section (Section 2) for | Please see the following Terminology section (Section 2) for | |||
explanations of terms used in this section. | explanations of terms used in this section. | |||
The design of the ACP as defined in this document is considered to be | The design of the ACP as defined in this document is considered to be | |||
applicable to all types of "professionally managed" networks: Service | applicable to all types of "professionally managed" networks: Service | |||
Provider, Local Area Network (LAN), Metro(politan networks), Wide | Provider, Local Area Network (LAN), Metropolitan Area Network (MAN/ | |||
Area Network (WAN), Enterprise Information Technology (IT) and | Metro), Wide Area Network (WAN), Enterprise Information Technology | |||
->"Operational Technology" (OT) networks. The ACP can operate | (IT) and Operational Technology (OT) networks. The ACP can operate | |||
equally on layer 3 equipment and on layer 2 equipment such as bridges | equally on Layer 3 (L3) equipment and on L2 equipment such as bridges | |||
(see Section 7). The hop-by-hop authentication, integrity-protection | (see Section 7). The hop-by-hop authentication, integrity | |||
and confidentiality mechanism used by the ACP is defined to be | protection, and confidentiality mechanism used by the ACP is defined | |||
negotiable, therefore it can be extended to environments with | to be negotiable; therefore, it can be extended to environments with | |||
different protocol preferences. The minimum implementation | different protocol preferences. The minimum implementation | |||
requirements in this document attempt to achieve maximum | requirements in this document attempt to achieve maximum | |||
interoperability by requiring support for multiple options depending | interoperability by requiring support for multiple options depending | |||
on the type of device: IPsec, see [RFC4301], and Datagram Transport | on the type of device: IPsec (see "Security Architecture for the | |||
Layer Security (DTLS, see Section 6.8.4). | Internet Protocol" [RFC4301]) and Datagram Transport Layer Security | |||
(DTLS, see Section 6.8.4). | ||||
The implementation footprint of the ACP consists of Public Key | The implementation footprint of the ACP consists of Public Key | |||
Infrastructure (PKI) code for the ACP certificate including | Infrastructure (PKI) code for the ACP certificate including EST (see | |||
"Enrollment over Secure Transport (EST, see [RFC7030]), the GRASP | "Enrollment over Secure Transport" [RFC7030]), GRASP, UDP, TCP, and | |||
protocol, UDP, TCP and Transport Layer Security (TLS, see | Transport Layer Security (TLS, see Section 6.1). For more | |||
Section 6.1), for security and reliability of GRASP and for EST, the | information regarding the security and reliability of GRASP and for | |||
ACP secure channel protocol used (such as IPsec or DTLS), and an | EST, the ACP secure channel protocol used (such as IPsec or DTLS), | |||
instance of IPv6 packet forwarding and routing via the Routing | and an instance of IPv6 packet forwarding and routing via RPL, see | |||
Protocol for Low-power and Lossy Networks (RPL), see [RFC6550], that | "RPL: IPv6 Routing Protocol for Low-Power and Lossy Networks" | |||
is separate from routing and forwarding for the Data-Plane (user | [RFC6550], which is separate from routing and forwarding for the data | |||
traffic). | plane (user traffic). | |||
The ACP uses only IPv6 to avoid complexity of dual-stack ACP | The ACP uses only IPv6 to avoid the complexity of dual-stack (both | |||
operations (IPv6/IPv4). Nevertheless, it can without any changes be | IPv6 and IPv4) ACP operations. Nevertheless, it can be integrated | |||
integrated into even otherwise IPv4-only network devices. The Data- | without any changes to otherwise IPv4-only network devices. The data | |||
Plane itself would not need to change and it could continue to be | plane itself would not need to change, and it could continue to be | |||
IPv4 only. For such IPv4-only devices, the IPv6 protocol itself | IPv4 only. For such IPv4-only devices, IPv6 itself would be | |||
would be additional implementation footprint that is only required | additional implementation footprint that is only required for the | |||
for the ACP. | ACP. | |||
The protocol choices of the ACP are primarily based on wide use and | The protocol choices of the ACP are primarily based on wide use and | |||
support in networks and devices, well understood security properties | support in networks and devices, well-understood security properties, | |||
and required scalability. The ACP design is an attempt to produce | and required scalability. The ACP design is an attempt to produce | |||
the lowest risk combination of existing technologies and protocols to | the lowest risk combination of existing technologies and protocols to | |||
build a widely applicable operational network management solution. | build a widely applicable, operational network management solution. | |||
RPL was chosen because it requires a smaller routing table footprint | RPL was chosen because it requires a smaller routing table footprint | |||
in large networks compared to other routing protocols with an | in large networks compared to other routing protocols with an | |||
autonomically configured single area. The deployment experience of | autonomically configured single area. The deployment experience of | |||
large scale Internet of Things (IoT) networks serves as the basis for | large-scale Internet of Things (IoT) networks serves as the basis for | |||
wide deployment experience with RPL. The profile chosen for RPL in | wide deployment experience with RPL. The profile chosen for RPL in | |||
the ACP does not leverage any RPL specific forwarding plane features | the ACP does not leverage any RPL-specific forwarding plane features | |||
(IPv6 extension headers), making its implementation a pure control | (IPv6 extension headers), making its implementation a pure control | |||
plane software requirement. | plane software requirement. | |||
GRASP is the only completely novel protocol used in the ACP, and this | GRASP is the only completely novel protocol used in the ACP, and this | |||
choice was necessary because there is no existing suitable protocol | choice was necessary because there is no existing protocol suitable | |||
to provide the necessary functions to the ACP, so GRASP was developed | for providing the necessary functions to the ACP, so GRASP was | |||
to fill that gap. | developed to fill that gap. | |||
The ACP design can be applicable to devices constrained with respect | The ACP design can be applicable to devices constrained with respect | |||
to cpu and memory, and to networks constrained with respect to | to CPU and memory, and to networks constrained with respect to | |||
bitrate and reliability, but this document does not attempt to define | bitrate and reliability, but this document does not attempt to define | |||
the most constrained type of devices or networks to which the ACP is | the most constrained type of devices or networks to which the ACP is | |||
applicable. RPL and DTLS for ACP secure channels are two protocol | applicable. RPL and DTLS for ACP secure channels are two protocol | |||
choices already making ACP more applicable to constrained | choices already making ACP more applicable to constrained | |||
environments. Support for constrained devices in this specification | environments. Support for constrained devices in this specification | |||
is opportunistic, but not complete, because the reliable transport | is opportunistic, but not complete, because the reliable transport | |||
for GRASP (see Section 6.9.2) only specifies TCP/TLS. See | for GRASP (see Section 6.9.2) only specifies TCP/TLS. See | |||
Appendix A.8 for discussions about how future standards or | Appendix A.8 for discussions about how future standards or | |||
proprietary extensions/variations of the ACP could better meet | proprietary extensions and/or variations of the ACP could better meet | |||
different expectations from those on which the current design is | expectations that are different from those upon which the current | |||
based including supporting constrained devices better. | design is based, including supporting constrained devices better. | |||
2. Acronyms and Terminology (Informative) | 2. Acronyms and Terminology (Informative) | |||
[RFC-Editor: Please add ACP, BRSKI, GRASP, MASA to https://www.rfc- | This document serves both as a normative specification for ACP node | |||
editor.org/materials/abbrev.expansion.txt.] | behavior as well as an explanation of the context by providing | |||
descriptions of requirements, benefits, architecture, and operational | ||||
[RFC-Editor: What is the recommended way to reference a hanging text, | aspects. Normative sections are labeled "(Normative)" and use BCP 14 | |||
e.g. to a definition in the list of definitions? Up to -28, this | keywords. Other sections are labeled "(Informative)" and do not use | |||
document was using XMLv2 and the only option I could find for RFC/XML | ||||
to point to a hanging text was format="title", which leads to | ||||
references such as '->"ACP certificate" ()', aka: redundant empty | ||||
parenthesis. Many reviewers where concerned about this. I created a | ||||
ticket to ask for an xml2rfc enhancement to avoid this in the future: | ||||
https://trac.tools.ietf.org/tools/xml2rfc/trac/ticket/347. When i | ||||
changed to XMLv3 in version -29, i could get rid of the unnecessary | ||||
() by using format="none", but that format is declared to be | ||||
deprecated in XMLv3. So i am not aware of any working AND "non- | ||||
deprecated" option.] | ||||
[RFC-Editor: Question: Is it possible to change the first occurrences | ||||
of [RFCxxxx] references to "rfcxxx title" [RFCxxxx]? the XML2RFC | ||||
format does not seem to offer such a format, but I did not want to | ||||
duplicate 50 first references - one reference for title mentioning | ||||
and one for RFC number.] | ||||
This document serves both as a normative specification for how ACP | ||||
nodes have to behave as well as describing requirements, benefits, | ||||
architecture and operational aspects to explain the context. | ||||
Normative sections are labelled "(Normative)" and use BCP 14 | ||||
keywords. Other sections are labelled "(Informative)" and do not use | ||||
those normative keywords. | those normative keywords. | |||
In the rest of the document we will refer to systems using the ACP as | In the rest of the document, we will refer to systems that use the | |||
"nodes". Typically, such a node is a physical (network equipment) | ACP as "nodes". Typically, such a node is a physical (network | |||
device, but it can equally be some virtualized system. Therefore, we | equipment) device, but it can equally be some virtualized system. | |||
do not refer to them as devices unless the context specifically calls | Therefore, we do not refer to them as devices unless the context | |||
for a physical system. | specifically calls for a physical system. | |||
This document introduces or uses the following terms (sorted | This document introduces or uses the following terms (sorted | |||
alphabetically). Terms introduced are explained on first use, so | alphabetically). Introduced terms are explained on first use, so | |||
this list is for reference only. | this list is for reference only. | |||
ACP: "Autonomic Control Plane". The Autonomic Function as defined | ACP: Autonomic Control Plane. The autonomic function as defined in | |||
in this document. It provides secure zero-touch (automated) | this document. It provides secure, zero-touch (automated) | |||
transitive (network wide) IPv6 connectivity for all nodes in the | transitive (network-wide) IPv6 connectivity for all nodes in the | |||
same ACP domain as well as a GRASP instance running across this | same ACP domain as well as a GRASP instance running across this | |||
ACP IPv6 connectivity. The ACP is primarily meant to be used as a | ACP IPv6 connectivity. The ACP is primarily meant to be used as a | |||
component of the ANI to enable Autonomic Networks but it can | component of the ANI to enable Autonomic Networks, but it can | |||
equally be used in simple ANI networks (with no other Autonomic | equally be used in simple ANI networks (with no other autonomic | |||
Functions) or completely by itself. | functions) or completely by itself. | |||
ACP address: An IPv6 address assigned to the ACP node. It is stored | ACP address: An IPv6 address assigned to the ACP node. It is stored | |||
in the acp-node-name of the ->"ACP certificate". | in the acp-node-name of the ACP certificate. | |||
ACP address range/set: The ACP address may imply a range or set of | ||||
addresses that the node can assign for different purposes. This | ACP address range or set: The ACP address may imply a range or set | |||
address range/set is derived by the node from the format of the | of addresses that the node can assign for different purposes. | |||
ACP address called the "addressing sub-scheme". | This address range or set is derived by the node from the format | |||
ACP connect interface: An interface on an ACP node providing access | of the ACP address called the addressing sub-scheme. | |||
to the ACP for non ACP capable nodes without using an ACP secure | ||||
channel. See Section 8.1.1. | ACP certificate: A Local Device IDentity (LDevID) certificate | |||
ACP domain: The ACP domain is the set of nodes with ->"ACP | conforming to "Internet X.509 Public Key Infrastructure | |||
certificates" that allow them to authenticate each other as | Certificate and Certificate Revocation List (CRL) Profile" | |||
members of the ACP domain. See also Section 6.2.3. | [RFC5280] that carries the acp-node-name, which is used by the ACP | |||
ACP (ANI/AN) certificate: A [RFC5280] certificate (LDevID) carrying | to learn its address in the ACP and to derive and | |||
the acp-node-name which is used by the ACP to learn its address in | cryptographically assert its membership in the ACP domain. In the | |||
the ACP and to derive and cryptographically assert its membership | context of the ANI, the ACP certificate is also called the ANI | |||
in the ACP domain. | certificate. In the context of AN, the ACP certificate is also | |||
ACP acp-node-name field: An information field in the ACP certificate | called the AN certificate. | |||
in which the ACP relevant information is encoded: the ACP domain | ||||
name, the ACP IPv6 address of the node and optional additional | ACP connect interface: An interface on an ACP node that provides | |||
role attributes about the node. | access to the ACP for non-ACP-capable nodes without using an ACP | |||
ACP Loopback interface: The Loopback interface in the ACP Virtual | secure channel. See Section 8.1.1. | |||
Routing and Forwarding (VRF) that has the ACP address assigned to | ||||
it. See Section 6.13.5.1. | ACP domain: The ACP domain is the set of nodes with ACP certificates | |||
ACP network: The ACP network constitutes all the nodes that have | that allow them to authenticate each other as members of the ACP | |||
domain. See also Section 6.2.3. | ||||
ACP loopback interface: The loopback interface in the ACP VRF that | ||||
has the ACP address assigned to it. See Section 6.13.5.1. | ||||
ACP network: The ACP network comprises all the nodes that have | ||||
access to the ACP. It is the set of active and transitively | access to the ACP. It is the set of active and transitively | |||
connected nodes of an ACP domain plus all nodes that get access to | connected nodes of an ACP domain plus all nodes that get access to | |||
the ACP of that domain via ACP edge nodes. | the ACP of that domain via ACP edge nodes. | |||
ACP (ULA) prefix(es): The /48 IPv6 address prefixes used across the | ACP (ULA) prefix(es): The /48 IPv6 address prefixes used across the | |||
ACP. In the normal/simple case, the ACP has one ULA prefix, see | ACP. In the normal or simple case, the ACP has one Unique Local | |||
Section 6.11. The ACP routing table may include multiple ULA | Address (ULA) prefix, see Section 6.11. The ACP routing table may | |||
prefixes if the "rsub" option is used to create addresses from | include multiple ULA prefixes if the rsub option is used to create | |||
more than one ULA prefix. See Section 6.2.2. The ACP may also | addresses from more than one ULA prefix. See Section 6.2.2. The | |||
include non-ULA prefixes if those are configured on ACP connect | ACP may also include non-ULA prefixes if those are configured on | |||
interfaces. See Section 8.1.1. | ACP connect interfaces. See Section 8.1.1. | |||
ACP secure channel: A channel authenticated via ->"ACP certificates" | ||||
ACP secure channel: A channel authenticated via ACP certificates | ||||
providing integrity protection and confidentiality through | providing integrity protection and confidentiality through | |||
encryption. These are established between (normally) adjacent ACP | encryption. These channels are established between (normally) | |||
nodes to carry traffic of the ACP VRF securely and isolated from | adjacent ACP nodes to carry ACP VRF traffic in-band over the same | |||
Data-Plane traffic in-band over the same link/path as the Data- | links and paths as data plane traffic but isolate it from the data | |||
Plane. | plane traffic and secure it. | |||
ACP secure channel protocol: The protocol used to build an ACP | ACP secure channel protocol: The protocol used to build an ACP | |||
secure channel, e.g., Internet Key Exchange Protocol version 2 | secure channel, e.g., Internet Key Exchange Protocol version 2 | |||
(IKEv2) with IPsec or Datagram Transport Layer Security (DTLS). | (IKEv2) with IPsec or DTLS. | |||
ACP virtual interface: An interface in the ACP VRF mapped to one or | ACP virtual interface: An interface in the ACP VRF mapped to one or | |||
more ACP secure channels. See Section 6.13.5. | more ACP secure channels. See Section 6.13.5. | |||
AN "Autonomic Network": A network according to | ||||
[I-D.ietf-anima-reference-model]. Its main components are ANI, | acp-node-name field: An information field in the ACP certificate in | |||
Autonomic Functions and Intent. | which the following ACP-relevant information is encoded: the ACP | |||
domain name, the ACP IPv6 address of the node, and optional | ||||
additional role attributes about the node. | ||||
AN: Autonomic Network. A network according to [RFC8993]. Its main | ||||
components are ANI, autonomic functions, and Intent. | ||||
(AN) Domain Name: An FQDN (Fully Qualified Domain Name) in the acp- | (AN) Domain Name: An FQDN (Fully Qualified Domain Name) in the acp- | |||
node-name of the Domain Certificate. See Section 6.2.2. | node-name of the domain certificate. See Section 6.2.2. | |||
ANI (nodes/network): "Autonomic Network Infrastructure". The ANI is | ||||
ANI (nodes/network): Autonomic Network Infrastructure. The ANI is | ||||
the infrastructure to enable Autonomic Networks. It includes ACP, | the infrastructure to enable Autonomic Networks. It includes ACP, | |||
BRSKI and GRASP. Every Autonomic Network includes the ANI, but | BRSKI, and GRASP. Every Autonomic Network includes the ANI, but | |||
not every ANI network needs to include autonomic functions beyond | not every ANI network needs to include autonomic functions beyond | |||
the ANI (nor Intent). An ANI network without further autonomic | the ANI (nor Intent). An ANI network without further autonomic | |||
functions can for example support secure zero-touch (automated) | functions can, for example, support secure zero-touch (automated) | |||
bootstrap and stable connectivity for SDN networks - see | bootstrap and stable connectivity for SDN networks, see [RFC8368]. | |||
[RFC8368]. | ||||
ANIMA: "Autonomic Networking Integrated Model and Approach". ACP, | ANIMA: Autonomic Networking Integrated Model and Approach. ACP, | |||
BRSKI and GRASP are specifications of the IETF ANIMA working | BRSKI, and GRASP are specifications of the IETF ANIMA Working | |||
group. | Group. | |||
ASA: "Autonomic Service Agent". Autonomic software modules running | ||||
on an ANI device. The components making up the ANI (BRSKI, ACP, | ASA: Autonomic Service Agent. Autonomic software modules running on | |||
an ANI device. The components making up the ANI (BRSKI, ACP, and | ||||
GRASP) are also described as ASAs. | GRASP) are also described as ASAs. | |||
Autonomic Function: A function/service in an Autonomic Network (AN) | ||||
composed of one or more ASA across one or more ANI nodes. | autonomic function: A function and/or service in an Autonomic | |||
BRSKI: "Bootstrapping Remote Secure Key Infrastructures" | Network (AN) composed of one or more ASAs across one or more ANI | |||
([I-D.ietf-anima-bootstrapping-keyinfra]. A protocol extending | nodes. | |||
EST to enable secure zero-touch bootstrap in conjunction with ACP. | ||||
ANI nodes use ACP, BRSKI and GRASP. | BRSKI: Bootstrapping Remote Secure Key Infrastructure [RFC8995]. A | |||
CA: "Certification Authority". An entity that issues digital | protocol extending EST to enable secure zero-touch bootstrap in | |||
conjunction with ACP. ANI nodes use ACP, BRSKI, and GRASP. | ||||
CA: Certification Authority. An entity that issues digital | ||||
certificates. A CA uses its private key to sign the certificates | certificates. A CA uses its private key to sign the certificates | |||
it issues. Relying parties use the public key in the CA | it issues. Relying parties use the public key in the CA | |||
certificate to validate the signature. | certificate to validate the signature. | |||
CRL: "Certificate Revocation List". A list of revoked certificates. | ||||
Required to revoke certificates before their lifetime expires. | ||||
Data-Plane: The counterpoint to the ACP VRF in an ACP node: | ||||
forwarding of user traffic and in non-autonomous nodes/networks | ||||
also any non-autonomous control and/or management plane functions. | ||||
In a fully Autonomic Network node, the Data-Plane is managed | ||||
autonomically via Autonomic Functions and Intent. See Section 1 | ||||
for more detailed explanations. | ||||
device: A physical system, or physical node. | ||||
Enrollment: The process through which a node authenticates itself to | CRL: Certificate Revocation List. A list of revoked certificates is | |||
a network with an initial identity, which is often called IDevID | required to revoke certificates before their lifetime expires. | |||
certificate, and acquires from the network a network specific | ||||
identity, which is often called LDevID certificate, and | data plane: The counterpoint to the ACP VRF in an ACP node: the | |||
certificates of one or more Trust Anchor(s). In the ACP, the | forwarding of user traffic in non-autonomous nodes and/or networks | |||
LDevID certificate is called the ACP certificate. | and also any non-autonomous control and/or management plane | |||
EST: "Enrollment over Secure Transport" ([RFC7030]). IETF standard- | functions. In a fully Autonomic Network node, the data plane is | |||
track protocol for enrollment of a node with an LDevID | managed autonomically via autonomic functions and Intent. See | |||
Section 1 for more details. | ||||
device: A physical system or physical node. | ||||
enrollment: The process by which a node authenticates itself to a | ||||
network with an initial identity, which is often called an Initial | ||||
Device IDentity (IDevID) certificate, and acquires from the | ||||
network a network-specific identity, which is often called an | ||||
LDevID certificate, and certificates of one or more trust | ||||
anchor(s). In the ACP, the LDevID certificate is called the ACP | ||||
certificate. | ||||
EST: Enrollment over Secure Transport [RFC7030]. IETF Standards | ||||
Track protocol for enrollment of a node with an LDevID | ||||
certificate. BRSKI is based on EST. | certificate. BRSKI is based on EST. | |||
GRASP: "Generic Autonomic Signaling Protocol". An extensible | ||||
GRASP: GeneRic Autonomic Signaling Protocol. An extensible | ||||
signaling protocol required by the ACP for ACP neighbor discovery. | signaling protocol required by the ACP for ACP neighbor discovery. | |||
The ACP also provides the "security and transport substrate" for | The ACP also provides the "security and transport substrate" for | |||
the "ACP instance of GRASP". This instance of GRASP runs across | the "ACP instance of GRASP". This instance of GRASP runs across | |||
the ACP secure channels to support BRSKI and other NOC/OAM or | the ACP secure channels to support BRSKI and other NOC and/or OAM | |||
Autonomic Functions. See [I-D.ietf-anima-grasp]. | or autonomic functions. See [RFC8990]. | |||
IDevID: An "Initial Device IDentity" X.509 certificate installed by | ||||
the vendor on new equipment. Contains information that | IDevID: An Initial Device IDentity X.509 certificate installed by | |||
establishes the identity of the node in the context of its vendor/ | the vendor on new equipment. The IDevID certificate contains | |||
manufacturer such as device model/type and serial number. See | information that establishes the identity of the node in the | |||
[AR8021]. The IDevID certificate cannot be used as a node | context of its vendor and/or manufacturer such as device model | |||
identifier for the ACP because they are not provisioned by the | and/or type and serial number. See [AR8021]. The IDevID | |||
owner of the network, so they can not directly indicate an ACP | certificate cannot be used as a node identifier for the ACP | |||
domain they belong to. | because they are not provisioned by the owner of the network, so | |||
in-band (management/signaling): In-band management traffic and/or | they can not directly indicate an ACP domain they belong to. | |||
control plane signaling uses the same network resources such as | ||||
routers/switches and network links that it manages/controls. In- | in-band (as in management or signaling): In-band management traffic | |||
band is the standard management and signaling mechanism in IP | and/or control plane signaling uses the same network resources | |||
networks. Compared to ->"out-of-band" it requires no additional | such as routers and/or switches and network links that it manages | |||
physical resources, but introduces potentially circular | and/or controls. In-band is the standard management and signaling | |||
dependencies for its correct operations. See ->"introduction". | mechanism in IP networks. Compared to out-of-band, the in-band | |||
Intent: Policy language of an autonomic network according to | mechanism requires no additional physical resources, but it | |||
[I-D.ietf-anima-reference-model]. | introduces potentially circular dependencies for its correct | |||
Loopback interface: See ->"ACP Loopback interface". | operations. See Section 1. | |||
LDevID: A "Local Device IDentity" is an X.509 certificate installed | ||||
during "enrollment". The Domain Certificate used by the ACP is an | Intent: The policy language of an Autonomic Network according to | |||
[RFC8993]. | ||||
Loopback interface: See ACP loopback interface. | ||||
LDevID: A Local Device IDentity is an X.509 certificate installed | ||||
during enrollment. The domain certificate used by the ACP is an | ||||
LDevID certificate. See [AR8021]. | LDevID certificate. See [AR8021]. | |||
Management: Used in this document as another word for ->"OAM". | ||||
MASA (service): "Manufacturer Authorized Signing Authority". A | management: Used in this document as another word for OAM. | |||
vendor/manufacturer or delegated cloud service on the Internet | ||||
MASA (service): Manufacturer Authorized Signing Authority. A vendor | ||||
and/or manufacturer or delegated cloud service on the Internet | ||||
used as part of the BRSKI protocol. | used as part of the BRSKI protocol. | |||
MIC: "Manufacturer Installed Certificate". This is another word to | ||||
describe an IDevID in referenced materials. This term is not used | MIC: Manufacturer Installed Certificate. A synonym for an IDevID in | |||
in this document. | referenced materials. This term is not used in this document. | |||
native interface: Interfaces existing on a node without | native interface: Interfaces existing on a node without | |||
configuration of the already running node. On physical nodes | configuration of the already running node. On physical nodes, | |||
these are usually physical interfaces; on virtual nodes their | these are usually physical interfaces; on virtual nodes, their | |||
equivalent. | equivalent. | |||
NOC: Network Operations Center. | NOC: Network Operations Center. | |||
node: A system supporting the ACP according to this document. Can | node: A system supporting the ACP according to this document. A | |||
be virtual or physical. Physical nodes are called devices. | node can be virtual or physical. Physical nodes are called | |||
Node-ID: The identifier of an ACP node inside that ACP. It is the | devices. | |||
last 64 (see Section 6.11.3) or 78-bits (see Section 6.11.5) of | ||||
the ACP address. | Node-ID: The identifier of an ACP node inside that ACP. It is | |||
OAM: Operations, Administration and Management. Includes Network | either the last 64 bits (see Section 6.11.3) or 78 bits (see | |||
Monitoring. | Section 6.11.5) of the ACP address. | |||
Operational Technology (OT): https://en.wikipedia.org/wiki/ | ||||
Operational_Technology: "The hardware and software dedicated to | OAM: Operations, Administration, and Management. Includes network | |||
monitoring. | ||||
Operational Technology (OT): "The hardware and software dedicated to | ||||
detecting or causing changes in physical processes through direct | detecting or causing changes in physical processes through direct | |||
monitoring and/or control of physical devices such as valves, | monitoring and/or control of physical devices such as valves, | |||
pumps, etc.". OT networks are today in most cases well separated | pumps, etc." [OP-TECH]. In most cases today, OT networks are | |||
from Information Technology (IT) networks. | well separated from Information Technology (IT) networks. | |||
out-of-band (management) network: An out-of-band network is a | out-of-band (management) network: An out-of-band network is a | |||
secondary network used to manage a primary network. The equipment | secondary network used to manage a primary network. The equipment | |||
of the primary network is connected to the out-of-band network via | of the primary network is connected to the out-of-band network via | |||
dedicated management ports on the primary network equipment. | dedicated management ports on the primary network equipment. | |||
Serial (console) management ports were historically most common, | Serial (console) management ports were historically most common; | |||
higher end network equipment now also has ethernet ports dedicated | however, higher-end network equipment now also has Ethernet ports | |||
only for management. An out-of-band network provides management | dedicated only to management. An out-of-band network provides | |||
access to the primary network independent of the configuration | management access to the primary network independent of the | |||
state of the primary network. See ->"Introduction" | configuration state of the primary network. See Section 1. | |||
(virtual) out-of-band network: The ACP can be called a virtual out- | ||||
out-of-band network, virtual: The ACP can be called a virtual out- | ||||
of-band network for management and control because it attempts to | of-band network for management and control because it attempts to | |||
provide the benefits of a (physical) ->"out-of-band network" even | provide the benefits of a (physical) out-of-band network even | |||
though it is physically carried ->"in-band". See | though it is physically carried in-band. See Section 1. | |||
->"introduction". | ||||
root CA: "root Certification Authority". A ->"CA" for which the | root CA: root Certification Authority. A CA for which the root CA | |||
root CA Key update procedures of [RFC7030], Section 4.4 can be | key update procedures of [RFC7030], Section 4.4, can be applied. | |||
applied. | ||||
RPL: "IPv6 Routing Protocol for Low-Power and Lossy Networks". The | RPL: IPv6 Routing Protocol for Low-Power and Lossy Networks. The | |||
routing protocol used in the ACP. See [RFC6550]. | routing protocol used in the ACP. See [RFC6550]. | |||
(ACP/ANI/BRSKI) Registrar: An ACP registrar is an entity (software | ||||
and/or person) that is orchestrating the enrollment of ACP nodes | registrar (ACP, ANI/BRSKI): An ACP registrar is an entity (software | |||
with the ACP certificate. ANI nodes use BRSKI, so ANI registrars | and/or person) that orchestrates the enrollment of ACP nodes with | |||
are also called BRSKI registrars. For non-ANI ACP nodes, the | the ACP certificate. ANI nodes use BRSKI, so ANI registrars are | |||
registrar mechanisms are undefined by this document. See | also called BRSKI registrars. For non-ANI ACP nodes, the | |||
registrar mechanisms are not defined in this document. See | ||||
Section 6.11.7. Renewal and other maintenance (such as | Section 6.11.7. Renewal and other maintenance (such as | |||
revocation) of ACP certificates may be performed by other entities | revocation) of ACP certificates may be performed by entities other | |||
than registrars. EST must be supported for ACP certificate | than registrars. EST must be supported for ACP certificate | |||
renewal (see Section 6.2.5). BRSKI is an extension of EST, so | renewal (see Section 6.2.5). BRSKI is an extension of EST, so | |||
ANI/BRSKI registrars can easily support ACP domain certificate | ANI/BRSKI registrars can easily support ACP domain certificate | |||
renewal in addition to initial enrollment. | renewal in addition to initial enrollment. | |||
RPI: "RPL Packet Information". Network extension headers for use | ||||
with the ->"RPL" routing protocols. Not used with RPL in the ACP. | ||||
See Section 6.12.1.13. | ||||
RPL: "Routing Protocol for Low-Power and Lossy Networks". The | ||||
routing protocol used in the ACP. See Section 6.12. | ||||
sUDI: "secured Unique Device Identifier". This is another word to | RPI: RPL Packet Information. Network extension headers for use with | |||
describe an IDevID in referenced material. This term is not used | RPL. Not used with RPL in the ACP. See Section 6.12.1.13. | |||
in this document. | ||||
TA: "Trust Anchor". A Trust Anchor is an entity that is trusted for | RPL: Routing Protocol for Low-Power and Lossy Networks. The routing | |||
the purpose of certificate validation. Trust Anchor Information | protocol used in the ACP. See Section 6.12. | |||
such as self-signed certificate(s) of the Trust Anchor is | ||||
configured into the ACP node as part of Enrollment. See | sUDI: secured Unique Device Identifier. This is a synonym of IDevID | |||
[RFC5280], Section 6.1.1. | in referenced material. This term is not used in this document. | |||
UDI: "Unique Device Identifier". In the context of this document | ||||
unsecured identity information of a node typically consisting of | TA: Trust Anchor. A TA is an entity that is trusted for the purpose | |||
at least device model/type and serial number, often in a vendor | of certificate validation. TA information such as self-signed | |||
specific format. See sUDI and LDevID. | certificate(s) of the TA is configured into the ACP node as part | |||
ULA: (Global ID prefix) A "Unique Local Address" (ULA) is an IPv6 | of enrollment. See [RFC5280], Section 6.1.1. | |||
address in the block fc00::/7, defined in [RFC4193]. ULA is the | ||||
IPv6 successor of the IPv4 private address space ([RFC1918]). ULA | UDI: Unique Device Identifier. In the context of this document, | |||
have important differences over IPv4 private addresses that are | unsecured identity information of a node typically consists of at | |||
beneficial for and exploited by the ACP, such as the Locally | least a device model and/or type and a serial number, often in a | |||
Assigned Global ID prefix, which are the first 48-bits of a ULA | vendor-specific format. See sUDI and LDevID. | |||
address [RFC4193], section 3.2.1. In this document this prefix is | ||||
abbreviated as "ULA prefix". | ULA (Global ID prefix): A Unique Local Address is an IPv6 address in | |||
(ACP) VRF: The ACP is modeled in this document as a "Virtual Routing | the block fc00::/7, defined in "Unique Local IPv6 Unicast | |||
and Forwarding" instance (VRF). This means that it is based on a | Addresses" [RFC4193]. ULA is the IPv6 successor of the IPv4 | |||
private address space ("Address Allocation for Private Internets" | ||||
[RFC1918]). ULAs have important differences over IPv4 private | ||||
addresses that are beneficial for and exploited by the ACP, such | ||||
as the locally assigned Global ID prefix, which is the first 48 | ||||
bits of a ULA address [RFC4193], Section 3.2.1. In this document, | ||||
this prefix is abbreviated as "ULA prefix". | ||||
(ACP) VRF: The ACP is modeled in this document as a Virtual Routing | ||||
and Forwarding instance. This means that it is based on a | ||||
"virtual router" consisting of a separate IPv6 forwarding table to | "virtual router" consisting of a separate IPv6 forwarding table to | |||
which the ACP virtual interfaces are attached and an associated | which the ACP virtual interfaces are attached and an associated | |||
IPv6 routing table separate from the Data-Plane. Unlike the VRFs | IPv6 routing table separate from the data plane. Unlike the VRFs | |||
on MPLS/VPN-PE ([RFC4364]) or LISP XTR ([RFC6830]), the ACP VRF | on MPLS/VPN Provider Edge ("BGP/MPLS IP Virtual Private Networks | |||
does not have any special "core facing" functionality or routing/ | (VPNs)" [RFC4364]) or LISP xTR ("The Locator/ID Separation | |||
mapping protocols shared across multiple VRFs. In vendor products | Protocol (LISP)" [RFC6830]), the ACP VRF does not have any special | |||
a VRF such as the ACP-VRF may also be referred to as a so called | "core facing" functionality or routing and/or mapping protocols | |||
VRF-lite. | shared across multiple VRFs. In vendor products, a VRF such as | |||
the ACP VRF may also be referred to as a VRF-lite. | ||||
(ACP) Zone: An ACP zone is a set of ACP nodes using the same zone | (ACP) Zone: An ACP zone is a set of ACP nodes using the same zone | |||
field value in their ACP address according to Section 6.11.3. | field value in their ACP address according to Section 6.11.3. | |||
Zones are a mechanism to support structured addressing of ACP | Zones are a mechanism to support structured addressing of ACP | |||
addresses within the same /48-bit ULA prefix. | addresses within the same /48 ULA prefix. | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in | |||
14 [RFC2119],[RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
3. Use Cases for an Autonomic Control Plane (Informative) | 3. Use Cases for an Autonomic Control Plane (Informative) | |||
This section summarizes the use cases that are intended to be | This section summarizes the use cases that are intended to be | |||
supported by an ACP. To understand how these are derived from and | supported by an ACP. To understand how these are derived from and | |||
relate to the larger set of use cases for autonomic networks, please | relate to the larger set of use cases for Autonomic Networks, please | |||
refer to [RFC8316]. | refer to "Autonomic Networking Use Case for Distributed Detection of | |||
Service Level Agreement (SLA) Violations" [RFC8316]. | ||||
3.1. An Infrastructure for Autonomic Functions | 3.1. An Infrastructure for Autonomic Functions | |||
Autonomic Functions need a stable infrastructure to run on, and all | Autonomic functions need a stable infrastructure to run on, and all | |||
autonomic functions should use the same infrastructure to minimize | autonomic functions should use the same infrastructure to minimize | |||
the complexity of the network. In this way, there is only need for a | the complexity of the network. In this way, there is only need for a | |||
single discovery mechanism, a single security mechanism, and single | single discovery mechanism, a single security mechanism, and single | |||
instances of other processes that distributed functions require. | instances of other processes that distributed functions require. | |||
3.2. Secure Bootstrap over a not configured Network | 3.2. Secure Bootstrap over an Unconfigured Network | |||
Today, bootstrapping a new node typically requires all nodes between | Today, bootstrapping a new node typically requires all nodes between | |||
a controlling node such as an SDN controller ("Software Defined | a controlling node such as an SDN controller (see [RFC7426]) and the | |||
Networking", see [RFC7426]) and the new node to be completely and | new node to be completely and correctly addressed, configured, and | |||
correctly addressed, configured and secured. Bootstrapping and | secured. Bootstrapping and configuration of a network happens in | |||
configuration of a network happens in rings around the controller - | rings around the controller -- configuring each ring of devices | |||
configuring each ring of devices before the next one can be | before the next one can be bootstrapped. Without console access (for | |||
bootstrapped. Without console access (for example through an out-of- | example, through an out-of-band network), it is not possible today to | |||
band network) it is not possible today to make devices securely | make devices securely reachable before having configured the entire | |||
reachable before having configured the entire network leading up to | network leading up to them. | |||
them. | ||||
With the ACP, secure bootstrap of new devices and whole new networks | With the ACP, secure bootstrap of new devices and whole new networks | |||
can happen without requiring any configuration of unconfigured | can happen without requiring any configuration of unconfigured | |||
devices along the path: As long as all devices along the path support | devices along the path. As long as all devices along the path | |||
ACP and a zero-touch bootstrap mechanism such as BRSKI, the ACP | support ACP and a zero-touch bootstrap mechanism such as BRSKI, the | |||
across a whole network of unconfigured devices can be brought up | ACP across a whole network of unconfigured devices can be brought up | |||
without operator/provisioning intervention. The ACP also provides | without operator and/or provisioning intervention. The ACP also | |||
additional security for any bootstrap mechanism, because it can | offers additional security for any bootstrap mechanism because it can | |||
provide encrypted discovery (via ACP GRASP) of registrars or other | provide the encrypted discovery (via ACP GRASP) of registrars or | |||
bootstrap servers by bootstrap proxies connecting to nodes that are | other bootstrap servers by bootstrap proxies connecting to nodes that | |||
to be bootstrapped and the ACP encryption hides the identities of the | are to be bootstrapped. The ACP encryption hides the identities of | |||
communicating entities (pledge and registrar), making it more | the communicating entities (pledge and registrar), making it more | |||
difficult to learn which network node might be attackable. The ACP | difficult to learn which network node might be attackable. The ACP | |||
certificate can also be used to end-to-end encrypt the bootstrap | certificate can also be used to end-to-end encrypt the bootstrap | |||
communication between such proxies and server. Note that | communication between such proxies and server. Note that | |||
bootstrapping here includes not only the first step that can be | bootstrapping here includes not only the first step that can be | |||
provided by BRSKI (secure keys), but also later stages where | provided by BRSKI (secure keys), but also later stages where | |||
configuration is bootstrapped. | configuration is bootstrapped. | |||
3.3. Data-Plane Independent Permanent Reachability | 3.3. Permanent Reachability Independent of the Data Plane | |||
Today, most critical control plane protocols and OAM protocols are | Today, most critical control plane protocols and OAM protocols use | |||
using the Data-Plane of the network. This leads to often undesirable | the data plane of the network. This leads to often undesirable | |||
dependencies between control and OAM plane on one side and the Data- | dependencies between the control and OAM plane on one side and the | |||
Plane on the other: Only if the forwarding and control plane of the | data plane on the other: only if the forwarding and control plane of | |||
Data-Plane are configured correctly, will the Data-Plane and the OAM/ | the data plane are configured correctly, will the data plane and the | |||
control plane work as expected. | OAM and/or control plane work as expected. | |||
Data-Plane connectivity can be affected by errors and faults, for | Data plane connectivity can be affected by errors and faults. | |||
example misconfigurations that make AAA (Authentication, | Examples include misconfigurations that make AAA (Authentication, | |||
Authorization and Accounting) servers unreachable or can lock an | Authorization, and Accounting) servers unreachable or that can lock | |||
administrator out of a device; routing or addressing issues can make | an administrator out of a device; routing or addressing issues can | |||
a device unreachable; shutting down interfaces over which a current | make a device unreachable; and shutting down interfaces over which a | |||
management session is running can lock an admin irreversibly out of | current management session is running can lock an administrator | |||
the device. Traditionally only out-of-band access can help recover | irreversibly out of the device. Traditionally only out-of-band | |||
from such issues (such as serial console or ethernet management | access via a serial console or Ethernet management port can help | |||
port). | recover from such issues. | |||
Data-Plane dependencies also affect applications in a Network | Data plane dependencies also affect applications in a NOC such as SDN | |||
Operations Center (NOC) such as SDN controller applications: Certain | controller applications: certain network changes are hard to | |||
network changes are today hard to implement, because the change | implement today because the change itself may affect reachability of | |||
itself may affect reachability of the devices. Examples are address | the devices. Examples include address or mask changes, routing | |||
or mask changes, routing changes, or security policies. Today such | changes, or security policies. Today such changes require precise, | |||
changes require precise hop-by-hop planning. | hop-by-hop planning. | |||
Note that specific control plane functions for the Data-Plane often | Note that specific control plane functions for the data plane often | |||
want to depend on forwarding of their packets via the Data-Plane: | depend on the ability to forward their packets via the data plane: | |||
Aliveness and routing protocol signaling packets across the Data- | sending aliveness and routing protocol signaling packets across the | |||
Plane to verify reachability across the Data-Plane, using IPv4 | data plane to verify reachability, using IPv4 signaling packets for | |||
signaling packets for IPv4 routing vs. IPv6 signaling packets for | IPv4 routing and IPv6 signaling packets for IPv6 routing. | |||
IPv6 routing. | ||||
Assuming appropriate implementation (see Section 6.13.2 for more | Assuming appropriate implementation (see Section 6.13.2 for more | |||
details), the ACP provides reachability that is independent of the | details), the ACP provides reachability that is independent of the | |||
Data-Plane. This allows the control plane and OAM plane to operate | data plane. This allows the control plane and OAM plane to operate | |||
more robustly: | more robustly: | |||
* For management plane protocols, the ACP provides the functionality | * For management plane protocols, the ACP provides the functionality | |||
of a Virtual out-of-band (VooB) channel, by providing connectivity | of a Virtual out-of-Band (VooB) channel, by providing connectivity | |||
to all nodes regardless of their Data-Plane configuration, routing | to all nodes regardless of their data plane configuration, and | |||
and forwarding tables. | routing and forwarding tables. | |||
* For control plane protocols, the ACP allows their operation even | * For control plane protocols, the ACP allows their operation even | |||
when the Data-Plane is temporarily faulty, or during transitional | when the data plane is temporarily faulty, or during transitional | |||
events, such as routing changes, which may affect the control | events, such as routing changes, which may affect the control | |||
plane at least temporarily. This is specifically important for | plane at least temporarily. This is specifically important for | |||
autonomic service agents, which could affect Data-Plane | autonomic service agents, which could affect data plane | |||
connectivity. | connectivity. | |||
The document "Using Autonomic Control Plane for Stable Connectivity | The document "Using Autonomic Control Plane for Stable Connectivity | |||
of Network OAM" [RFC8368] explains this use case for the ACP in | of Network OAM" [RFC8368] explains this use case for the ACP in | |||
significantly more detail and explains how the ACP can be used in | significantly more detail and explains how the ACP can be used in | |||
practical network operations. | practical network operations. | |||
4. Requirements (Informative) | 4. Requirements (Informative) | |||
The following requirements were identified for the design of the ACP | The following requirements were identified for the design of the ACP | |||
based on the above use-cases (Section 3). These requirements are | based on the above use cases (Section 3). These requirements are | |||
informative. The ACP as specified in the normative parts of this | informative. The ACP as specified in the normative parts of this | |||
document is meeting or exceeding these use-case requirements: | document is meeting or exceeding these use case requirements: | |||
ACP1: The ACP should provide robust connectivity: As far as | ACP1: The ACP should provide robust connectivity: as far as | |||
possible, it should be independent of configured addressing, | possible, it should be independent of configured | |||
configuration and routing. Requirements 2 and 3 build on this | addressing, configuration, and routing. Requirements 2 and | |||
requirement, but also have value on their own. | 3 build on this requirement, but they also have value on | |||
ACP2: The ACP must have a separate address space from the Data- | their own. | |||
Plane. Reason: traceability, debug-ability, separation from | ||||
Data-Plane, infrastructure security (filtering based on known | ||||
address space). | ||||
ACP3: The ACP must use autonomically managed address space. Reason: | ||||
easy bootstrap and setup ("autonomic"); robustness (admin | ||||
cannot break network easily). This document uses Unique Local | ||||
Addresses (ULA) for this purpose, see [RFC4193]. | ||||
ACP4: The ACP must be generic, that is it must be usable by all the | ||||
functions and protocols of the ANI. Clients of the ACP must | ||||
not be tied to a particular application or transport protocol. | ||||
ACP5: The ACP must provide security: Messages coming through the ACP | ||||
must be authenticated to be from a trusted node, and it is | ||||
very strongly > recommended that they be encrypted. | ||||
Explanation for ACP4: In a fully autonomic network (AN), newly | ACP2: The ACP must have a separate address space from the data | |||
written ASAs could potentially all communicate exclusively via GRASP | plane. This separate address space provides traceability, | |||
with each other, and if that was assumed to be the only requirement | ease of debugging, separation from data plane, and | |||
against the ACP, it would not need to provide IPv6 layer connectivity | infrastructure security (filtering based on known address | |||
space). | ||||
ACP3: The ACP must use an autonomically managed address space. | ||||
An autonomically managed address space provides ease of | ||||
bootstrap and setup ("autonomic"), and robustness (the | ||||
administrator cannot break network easily). This document | ||||
uses ULA for this purpose, see [RFC4193]. | ||||
ACP4: The ACP must be generic, that is, it must be usable by all | ||||
the functions and protocols of the ANI. Clients of the ACP | ||||
must not be tied to a particular application or transport | ||||
protocol. | ||||
ACP5: The ACP must provide security: messages coming through the | ||||
ACP must be authenticated to be from a trusted node, and it | ||||
is very strongly recommended that they be encrypted. | ||||
The explanation for ACP4 is as follows: in a fully Autonomic Network | ||||
(AN), all newly written ASAs could potentially communicate with each | ||||
other exclusively via GRASP, and if that were the only requirement | ||||
for the ACP, it would not need to provide IPv6-layer connectivity | ||||
between nodes, but only GRASP connectivity. Nevertheless, because | between nodes, but only GRASP connectivity. Nevertheless, because | |||
ACP also intends to support non-AN networks, it is crucial to support | ACP also intends to support non-autonomous networks, it is crucial to | |||
IPv6 layer connectivity across the ACP to support any transport and | support IPv6-layer connectivity across the ACP to support any | |||
application layer protocols. | transport-layer and application-layer protocols. | |||
The ACP operates hop-by-hop, because this interaction can be built on | The ACP operates hop-by-hop because this interaction can be built on | |||
IPv6 link local addressing, which is autonomic, and has no dependency | IPv6 link-local addressing, which is autonomic, and has no dependency | |||
on configuration (requirement 1). It may be necessary to have ACP | on configuration (requirement ACP1). It may be necessary to have ACP | |||
connectivity across non-ACP nodes, for example to link ACP nodes over | connectivity across non-ACP nodes, for example, to link ACP nodes | |||
the general Internet. This is possible, but introduces a dependency | over the general Internet. This is possible, but it introduces a | |||
against stable/resilient routing over the non-ACP hops (see | dependency on stable and/or resilient routing over the non-ACP hops | |||
Section 8.2). | (see Section 8.2). | |||
5. Overview (Informative) | 5. Overview (Informative) | |||
When a node has an ACP certificate (see Section 6.2.1) and is enabled | When a node has an ACP certificate (see Section 6.2.1) and is enabled | |||
to bring up the ACP (see Section 9.3.5), it will create its ACP | to bring up the ACP (see Section 9.3.5), it will create its ACP | |||
without any configuration as follows. For details, see Section 6 and | without any configuration as follows. For details, see Section 6 and | |||
further sections: | following sections: | |||
1. The node creates a VRF instance, or a similar virtual context for | 1. The node creates a VRF instance or a similar virtual context for | |||
the ACP. | the ACP. | |||
2. The node assigns its ULA IPv6 address (prefix) (see Section 6.11 | ||||
which is learned from the acp-node-name (see Section 6.2.2) of | 2. The node assigns its ULA IPv6 address (prefix) (see | |||
its ACP certificate (see Section 6.2.1) to an ACP loopback | Section 6.11), which is learned from the acp-node-name (see | |||
interface (see Section 6.11) and connects this interface into the | Section 6.2.2) of its ACP certificate (see Section 6.2.1), to an | |||
ACP VRF. | ACP loopback interface (see Section 6.11) and connects this | |||
interface to the ACP VRF. | ||||
3. The node establishes a list of candidate peer adjacencies and | 3. The node establishes a list of candidate peer adjacencies and | |||
candidate channel types to try for the adjacency. This is | candidate channel types to try for the adjacency. This is | |||
automatic for all candidate link-local adjacencies, see | automatic for all candidate link-local adjacencies (see | |||
Section 6.4 across all native interfaces (see Section 9.3.4). If | Section 6.4) across all native interfaces (see Section 9.3.4). | |||
a candidate peer is discovered via multiple interfaces, this will | If a candidate peer is discovered via multiple interfaces, this | |||
result in one adjacency per interface. If the ACP node has | will result in one adjacency per interface. If the ACP node has | |||
multiple interfaces connecting to the same subnet across which it | multiple interfaces connecting to the same subnet across which it | |||
is also operating as an L2 switch in the Data-Plane, it employs | is also operating as an L2 switch in the data plane, it employs | |||
methods for ACP with L2 switching, see Section 7. | methods for ACP with L2 switching, see Section 7. | |||
4. For each entry in the candidate adjacency list, the node | 4. For each entry in the candidate adjacency list, the node | |||
negotiates a secure tunnel using the candidate channel types. | negotiates a secure tunnel using the candidate channel types. | |||
See Section 6.6. | See Section 6.6. | |||
5. The node authenticates the peer node during secure channel setup | 5. The node authenticates the peer node during secure channel setup | |||
and authorizes it to become part of the ACP according to | and authorizes it to become part of the ACP according to | |||
Section 6.2.3. | Section 6.2.3. | |||
6. Unsuccessful authentication of a candidate peer results in | 6. Unsuccessful authentication of a candidate peer results in | |||
throttled connection retries for as long as the candidate peer is | throttled connection retries for as long as the candidate peer is | |||
discoverable. See Section 6.7. | discoverable. See Section 6.7. | |||
7. Each successfully established secure channel is mapped into an | ||||
ACP virtual interface, which is placed into the ACP VRF. See | 7. Each successfully established secure channel is mapped to an ACP | |||
virtual interface, which is placed into the ACP VRF. See | ||||
Section 6.13.5.2. | Section 6.13.5.2. | |||
8. Each node runs a lightweight routing protocol, see Section 6.12, | ||||
8. Each node runs a lightweight routing protocol (see Section 6.12) | ||||
to announce reachability of the ACP loopback address (or prefix) | to announce reachability of the ACP loopback address (or prefix) | |||
across the ACP. | across the ACP. | |||
9. This completes the creation of the ACP with hop-by-hop secure | 9. This completes the creation of the ACP with hop-by-hop secure | |||
tunnels, auto-addressing and auto-routing. The node is now an | tunnels, auto-addressing, and auto-routing. The node is now an | |||
ACP node with a running ACP. | ACP node with a running ACP. | |||
Note: | Note: | |||
* None of the above operations (except the following explicit | * None of the above operations (except the following explicitly | |||
configured ones) are reflected in the configuration of the node. | configured ones) are reflected in the configuration of the node. | |||
* Non-ACP NMS ("Network Management Systems") or SDN controllers have | ||||
to be explicitly configured for connection into the ACP. | * Non-ACP network management systems (NMS) or SDN controllers have | |||
to be explicitly configured for connection to the ACP. | ||||
* Additional candidate peer adjacencies for ACP connections across | * Additional candidate peer adjacencies for ACP connections across | |||
non-ACP Layer-3 clouds requires explicit configuration. See | non-ACP Layer 3 clouds requires explicit configuration. See | |||
Section 8.2. | Section 8.2. | |||
The following figure illustrates the ACP. | Figure 1 illustrates the ACP. | |||
ACP node 1 ACP node 2 | ACP Node 1 ACP Node 2 | |||
................... ................... | ................... ................... | |||
secure . . secure . . secure | secure . . secure . . secure | |||
channel: +-----------+ : channel : +-----------+ : channel | channel: +-----------+ : channel : +-----------+ : channel | |||
..--------| ACP VRF |---------------------| ACP VRF |---------.. | ..--------| ACP VRF |---------------------| ACP VRF |---------.. | |||
: / \ / \ <--routing--> / \ / \ : | : / \ / \ <--routing--> / \ / \ : | |||
: \ / \ / \ / \ / : | : \ / \ / \ / \ / : | |||
..--------| Loopback |---------------------| Loopback |---------.. | ..--------| loopback |---------------------| loopback |---------.. | |||
: | interface | : : | interface | : | : | interface | : : | interface | : | |||
: +-----------+ : : +-----------+ : | : +-----------+ : : +-----------+ : | |||
: : : : | : : : : | |||
: Data-Plane :...............: Data-Plane : | : Data Plane :...............: Data Plane : | |||
: : link : : | : : link : : | |||
:.................: :.................: | :.................: :.................: | |||
Figure 1: ACP VRF and secure channels | Figure 1: ACP VRF and Secure Channels | |||
The resulting overlay network is normally based exclusively on hop- | The resulting overlay network is normally based exclusively on hop- | |||
by-hop tunnels. This is because addressing used on links is IPv6 | by-hop tunnels. This is because addressing used on links is IPv6 | |||
link local addressing, which does not require any prior set-up. In | link-local addressing, which does not require any prior setup. In | |||
this way the ACP can be built even if there is no configuration on | this way, the ACP can be built even if there is no configuration on | |||
the node, or if the Data-Plane has issues such as addressing or | the node, or if the data plane has issues such as addressing or | |||
routing problems. | routing problems. | |||
6. Self-Creation of an Autonomic Control Plane (ACP) (Normative) | 6. Self-Creation of an Autonomic Control Plane (ACP) (Normative) | |||
This section specifies the components and steps to set up an ACP. | This section specifies the components and steps to set up an ACP. | |||
The ACP is automatically "self-creating", which makes it | The ACP is automatically self-creating, which makes it | |||
"indestructible" against most changes to the Data-Plane, including | "indestructible" against most changes to the data plane, including | |||
misconfigurations of routing, addressing, NAT, firewall or any other | misconfigurations of routing, addressing, NAT, firewall, or any other | |||
traffic policy filters that inadvertently or otherwise unavoidably | traffic policy filters that would inadvertently or otherwise | |||
would also impact the management plane traffic, such as the actual | unavoidably also impact the management plane traffic, such as the | |||
operator CLI session or controller NETCONF session through which the | actual operator command-line interface (CLI) session or controller | |||
configuration changes to the Data-Plane are executed. | NETCONF session through which the configuration changes to the data | |||
plane are executed. | ||||
Physical misconfiguration of wiring between ACP nodes will also not | Physical misconfiguration of wiring between ACP nodes will also not | |||
break the ACP: As long as there is a transitive physical path between | break the ACP. As long as there is a transitive physical path | |||
ACP nodes, the ACP should be able to recover given that it | between ACP nodes, the ACP should be able to recover given that it | |||
automatically operates across all interfaces of the ACP nodes and | automatically operates across all interfaces of the ACP nodes and | |||
automatically determines paths between them. | automatically determines paths between them. | |||
Attacks against the network via incorrect routing or addressing | Attacks against the network via incorrect routing or addressing | |||
information for the Data-Plane will not impact the ACP. Even | information for the data plane will not impact the ACP. Even | |||
impaired ACP nodes will have a significantly reduced attack surface | impaired ACP nodes will have a significantly reduced attack surface | |||
against malicious misconfiguration because only very limited ACP or | against malicious misconfiguration because only very limited ACP or | |||
interface up/down configuration can affect the ACP, and pending on | interface up/down configuration can affect the ACP, and depending on | |||
their specific designs these type of attacks could also be | their specific designs, these types of attacks could also be | |||
eliminated. See more in Section 9.3 and Section 11. | eliminated. See more in Section 9.3 and Section 11. | |||
An ACP node can be a router, switch, controller, NMS host, or any | An ACP node can be a router, switch, controller, NMS host, or any | |||
other IPv6 capable node. Initially, it MUST have its ACP | other IPv6-capable node. Initially, it MUST have its ACP | |||
certificate, as well as an (empty) ACP Adjacency Table (described in | certificate, as well as an (empty) ACP adjacency table (described in | |||
Section 6.3). It then can start to discover ACP neighbors and build | Section 6.3). It then can start to discover ACP neighbors and build | |||
the ACP. This is described step by step in the following sections: | the ACP. This is described step by step in the following sections. | |||
6.1. Requirements for use of Transport Layer Security (TLS) | 6.1. Requirements for the Use of Transport Layer Security (TLS) | |||
The following requirements apply to TLS required or used by ACP | The following requirements apply to TLS that is required or used by | |||
components. Applicable ACP components include ACP certificate | ACP components. Applicable ACP components include ACP certificate | |||
maintenance via EST, see Section 6.2.5, TLS connections for | maintenance via EST (see Section 6.2.5), TLS connections for CRL | |||
Certificate Revocation List (CRL) Distribution Point (CRLDP) or | Distribution Point (CRLDP) or Online Certificate Status Protocol | |||
Online Certificate Status Protocol (OCSP) responder (if used, see | (OCSP) responder (if used, see Section 6.2.3), and ACP GRASP (see | |||
Section 6.2.3) and ACP GRASP (see Section 6.9.2). On ANI nodes these | Section 6.9.2). On ANI nodes, these requirements also apply to | |||
requirements also apply to BRSKI. | BRSKI. | |||
TLS MUST comply with [RFC7525] except that TLS 1.2 ([RFC5246]) is | TLS MUST comply with "Recommendations for Secure Use of Transport | |||
REQUIRED and that older versions of TLS MUST NOT be used. TLS 1.3 | Layer Security (TLS) and Datagram Transport Layer Security (DTLS)" | |||
([RFC8446]) SHOULD be supported. The choice for TLS 1.2 as the | [RFC7525] except that TLS 1.2 ("The Transport Layer Security (TLS) | |||
lowest common denominator for the ACP is based on current expected | Protocol Version 1.2" [RFC5246]) is REQUIRED and that older versions | |||
most likely availability across the wide range of candidate ACP node | of TLS MUST NOT be used. TLS 1.3 ("The Transport Layer Security | |||
types, potentially with non-agile operating system TCP/IP stacks. | (TLS) Protocol Version 1.3" [RFC8446]) SHOULD be supported. The | |||
choice for TLS 1.2 as the lowest common denominator for the ACP is | ||||
based on the currently expected and most likely availability across | ||||
the wide range of candidate ACP node types, potentially with non- | ||||
agile operating system TCP/IP stacks. | ||||
TLS MUST offer TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 and | TLS MUST offer TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 and | |||
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 and MUST NOT offer options | TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 and MUST NOT offer options | |||
with less than 256-bit symmetric key strength or hash strength of | with less than 256-bit symmetric key strength or hash strength of | |||
less than 384 bits. When TLS 1.3 is supported, | less than 384 bits. When TLS 1.3 is supported, | |||
TLS_AES_256_GCM_SHA384 MUST be offered and | TLS_AES_256_GCM_SHA384 MUST be offered and | |||
TLS_CHACHA20_POLY1305_SHA256 MAY be offered. | TLS_CHACHA20_POLY1305_SHA256 MAY be offered. | |||
TLS MUST also include the "Supported Elliptic Curves" extension, it | TLS MUST also include the "Supported Elliptic Curves" extension, and | |||
MUST support the NIST P-256 (secp256r1(22)) and P-384 (secp384r1(24)) | it MUST support the NIST P-256 (secp256r1(22)) and P-384 | |||
curves [RFC8422]. In addition, TLS 1.2 clients SHOULD send an | (secp384r1(24)) curves "Elliptic Curve Cryptography (ECC) Cipher | |||
Suites for Transport Layer Security (TLS) Versions 1.2 and Earlier" | ||||
[RFC8422]. In addition, TLS 1.2 clients SHOULD send an | ||||
ec_point_format extension with a single element, "uncompressed". | ec_point_format extension with a single element, "uncompressed". | |||
6.2. ACP Domain, Certificate and Network | 6.2. ACP Domain, Certificate, and Network | |||
The ACP relies on group security. An ACP domain is a group of nodes | The ACP relies on group security. An ACP domain is a group of nodes | |||
that trust each other to participate in ACP operations such as | that trust each other to participate in ACP operations such as | |||
creating ACP secure channels in an autonomous peer-to-peer fashion | creating ACP secure channels in an autonomous, peer-to-peer fashion | |||
between ACP domain members via protocols such as IPsec. To | between ACP domain members via protocols such as IPsec. To | |||
authenticate and authorize another ACP member node with access to the | authenticate and authorize another ACP member node with access to the | |||
ACP Domain, each ACP member requires keying material: An ACP node | ACP domain, each ACP member requires keying material: an ACP node | |||
MUST have a Local Device IDentity (LDevID) certificate, henceforth | MUST have an LDevID certificate and information about one or more TAs | |||
called the ACP certificate and information about one or more Trust | as required for the ACP domain membership check (Section 6.2.3). | |||
Anchor (TA) as required for the ACP domain membership check | ||||
(Section 6.2.3). | ||||
Manual keying via shared secrets is not usable for an ACP domain | Manual keying via shared secrets is not usable for an ACP domain | |||
because it would require a single shared secret across all current | because it would require a single shared secret across all current | |||
and future ACP domain members to meet the expectation of autonomous, | and future ACP domain members to meet the expectation of autonomous, | |||
peer-to-peer establishment of ACP secure channels between any ACP | peer-to-peer establishment of ACP secure channels between any ACP | |||
domain members. Such a single shared secret would be an inacceptable | domain members. Such a single shared secret would be an unacceptable | |||
security weakness. Asymmetric keying material (public keys) without | security weakness. Asymmetric keying material (public keys) without | |||
certificates does not provide the mechanisms to authenticate ACP | certificates does not provide the mechanism to authenticate ACP | |||
domain membership in an autonomous, peer-to-peer fashion for current | domain membership in an autonomous, peer-to-peer fashion for current | |||
and future ACP domain members. | and future ACP domain members. | |||
The LDevID certificate is called the ACP certificate. The TA is the | The LDevID certificate is henceforth called the ACP certificate. The | |||
Certification Authority (CA) root certificate of the ACP domain. | TA is the CA root certificate of the ACP domain. | |||
The ACP does not mandate specific mechanisms by which this keying | The ACP does not mandate specific mechanisms by which this keying | |||
material is provisioned into the ACP node. It only requires the | material is provisioned into the ACP node. It only requires that the | |||
certificate to comply with Section 6.2.1, specifically to have the | certificate comply with Section 6.2.1, specifically that it have the | |||
acp-node-name as specified in Section 6.2.2 in its domain certificate | acp-node-name as specified in Section 6.2.2 in its domain certificate | |||
as well as those of candidate ACP peers. See Appendix A.2 for more | as well as those of candidate ACP peers. See Appendix A.2 for more | |||
information about enrollment or provisioning options. | information about enrollment or provisioning options. | |||
This document uses the term ACP in many places where the Autonomic | This document uses the term ACP in many places where the Autonomic | |||
Networking reference documents [RFC7575] and | Networking reference documents [RFC7575] and [RFC8993] use the word | |||
[I-D.ietf-anima-reference-model] use the word autonomic. This is | autonomic. This is done because those reference documents consider | |||
done because those reference documents consider (only) fully | (only) fully Autonomic Networks and nodes, but the support of ACP | |||
autonomic networks and nodes, but support of ACP does not require | does not require the support for other components of Autonomic | |||
support for other components of autonomic networks except for relying | Networks except for the reliance on GRASP and the providing of | |||
on GRASP and providing security and transport for GRASP. Therefore, | security and transport for GRASP. Therefore, the word autonomic | |||
the word autonomic might be misleading to operators interested in | might be misleading to operators interested in only the ACP. | |||
only the ACP. | ||||
[RFC7575] defines the term "Autonomic Domain" as a collection of | [RFC7575] defines the term "autonomic domain" as a collection of | |||
autonomic nodes. ACP nodes do not need to be fully autonomic, but | autonomic nodes. ACP nodes do not need to be fully autonomic, but | |||
when they are, then the ACP domain is an autonomic domain. Likewise, | when they are, then the ACP domain is an autonomic domain. Likewise, | |||
[I-D.ietf-anima-reference-model] defines the term "Domain | [RFC8993] defines the term "domain certificate" as the certificate | |||
Certificate" as the certificate used in an autonomic domain. The ACP | used in an autonomic domain. The ACP certificate is that domain | |||
certificate is that domain certificate when ACP nodes are (fully) | certificate when ACP nodes are (fully) autonomic nodes. Finally, | |||
autonomic nodes. Finally, this document uses the term ACP network to | this document uses the term ACP network to refer to the network | |||
refer to the network created by active ACP nodes in an ACP domain. | created by active ACP nodes in an ACP domain. The ACP network itself | |||
The ACP network itself can extend beyond ACP nodes through the | can extend beyond ACP nodes through the mechanisms described in | |||
mechanisms described in Section 8.1. | Section 8.1. | |||
6.2.1. ACP Certificates | 6.2.1. ACP Certificates | |||
ACP certificates MUST be [RFC5280] compliant X.509 v3 ([X.509]) | ACP certificates MUST be [RFC5280] compliant X.509 v3 [X.509] | |||
certificates. | certificates. | |||
ACP nodes MUST support handling ACP certificates, TA certificates and | ACP nodes MUST support handling ACP certificates, TA certificates, | |||
certificate chain certificates (henceforth just called certificates | and certificate chain certificates (henceforth just called | |||
in this section) with RSA public keys and certificates with Elliptic | certificates in this section) with RSA public keys and certificates | |||
Curve (ECC) public keys. | with Elliptic Curve Cryptography (ECC) public keys. | |||
ACP nodes MUST NOT support certificates with RSA public keys of less | ACP nodes MUST NOT support certificates with RSA public keys of less | |||
than 2048-bit modulus or curves with group order of less than | than a 2048-bit modulus or curves with group order of less than 256 | |||
256-bit. They MUST support certificates with RSA public keys with | bits. They MUST support certificates with RSA public keys with | |||
2048-bit modulus and MAY support longer RSA keys. They MUST support | 2048-bit modulus and MAY support longer RSA keys. They MUST support | |||
certificates with ECC public keys using NIST P-256 curves and SHOULD | certificates with ECC public keys using NIST P-256 curves and SHOULD | |||
support P-384 and P-521 curves. | support P-384 and P-521 curves. | |||
ACP nodes MUST NOT support certificates with RSA public keys whose | ACP nodes MUST NOT support certificates with RSA public keys whose | |||
modulus is less than 2048 bits, or certificates whose ECC public keys | modulus is less than 2048 bits, or certificates whose ECC public keys | |||
are in groups whose order is less than 256-bits. RSA signing | are in groups whose order is less than 256 bits. RSA signing | |||
certificates with 2048-bit public keys MUST be supported, and such | certificates with 2048-bit public keys MUST be supported, and such | |||
certificates with longer public keys MAY be supported. ECDSA | certificates with longer public keys MAY be supported. ECDSA | |||
certificates using the NIST P-256 curve MUST be supported, and such | certificates using the NIST P-256 curve MUST be supported, and such | |||
certificates using the P-384 and P-521 curves SHOULD be supported. | certificates using the P-384 and P-521 curves SHOULD be supported. | |||
ACP nodes MUST support RSA certificates that are signed by RSA | ACP nodes MUST support RSA certificates that are signed by RSA | |||
signatures over the SHA-256 digest of the contents, and SHOULD | signatures over the SHA-256 digest of the contents and SHOULD | |||
additionally support SHA-384 and SHA-512 digests in such signatures. | additionally support SHA-384 and SHA-512 digests in such signatures. | |||
The same requirements for digest usage in certificate signatures | The same requirements for digest usage in certificate signatures | |||
apply to ECDSA certificates, and additionally, ACP nodes MUST support | apply to Elliptic Curve Digital Signature Algorithm (ECDSA) | |||
ECDSA signatures on ECDSA certificates. | certificates, and additionally, ACP nodes MUST support ECDSA | |||
signatures on ECDSA certificates. | ||||
The ACP certificate SHOULD use an RSA key and an RSA signature when | The ACP certificate SHOULD use an RSA key and an RSA signature when | |||
the ACP certificate is intended to be used not only for ACP | the ACP certificate is intended to be used not only for ACP | |||
authentication but also for other purposes. The ACP certificate MAY | authentication but also for other purposes. The ACP certificate MAY | |||
use an ECC key and an ECDSA signature if the ACP certificate is only | use an ECC key and an ECDSA signature if the ACP certificate is only | |||
used for ACP and ANI authentication and authorization. | used for ACP and ANI authentication and authorization. | |||
Any secure channel protocols used for the ACP as specified in this | Any secure channel protocols used for the ACP as specified in this | |||
document or extensions of this document MUST therefore support | document or extensions of this document MUST therefore support | |||
authentication (e.g. signing) starting with these type of | authentication (e.g., signing), starting with these types of | |||
certificates. See [RFC8422] for more information. | certificates. See [RFC8422] for more information. | |||
The reason for these choices are as follows: As of 2020, RSA is still | The reason for these choices are as follows: as of 2020, RSA is still | |||
more widely used than ECC, therefore the MUST for RSA. ECC offers | more widely used than ECC, therefore the MUST-level requirements for | |||
equivalent security at (logarithmically) shorter key lengths (see | RSA. ECC offers equivalent security at (logarithmically) shorter key | |||
[RFC8422]). This can be beneficial especially in the presence of | lengths (see [RFC8422]). This can be beneficial especially in the | |||
constrained bandwidth or constrained nodes in an ACP/ANI network. | presence of constrained bandwidth or constrained nodes in an ACP/ANI | |||
Some ACP functions such as GRASP peer-2-peer across the ACP require | network. Some ACP functions such as GRASP peer-to-peer across the | |||
end-to-end/any-to-any authentication/authorization, therefore ECC can | ACP require end-to-end/any-to-any authentication and authorization, | |||
only reliably be used in the ACP when it MUST be supported on all ACP | therefore ECC can only reliably be used in the ACP when it MUST be | |||
nodes. RSA signatures are mandatory to be supported also for ECC | supported on all ACP nodes. RSA signatures are mandatory to be | |||
certificates because CAs themselves may not support ECC yet. | supported also for ECC certificates because the CAs themselves may | |||
not support ECC yet. | ||||
The ACP certificate SHOULD be used for any authentication between | The ACP certificate SHOULD be used for any authentication between | |||
nodes with ACP domain certificates (ACP nodes and NOC nodes) where a | nodes with ACP domain certificates (ACP nodes and NOC nodes) where a | |||
required authorization condition is ACP domain membership, such as | required authorization condition is ACP domain membership, such as | |||
ACP node to NOC/OAM end-to-end security and ASA to ASA end-to-end | ACP node to NOC/OAM end-to-end security and ASA to ASA end-to-end | |||
security. Section 6.2.3 defines this "ACP domain membership check". | security. Section 6.2.3 defines this "ACP domain membership check". | |||
The uses of this check that are standardized in this document are for | The uses of this check that are standardized in this document are for | |||
the establishment of hop-by-hop ACP secure channels (Section 6.7) and | the establishment of hop-by-hop ACP secure channels (Section 6.8) and | |||
for ACP GRASP (Section 6.9.2) end-to-end via TLS. | for ACP GRASP (Section 6.9.2) end to end via TLS. | |||
The ACP domain membership check requires a minimum amount of elements | The ACP domain membership check requires a minimum number of elements | |||
in a certificate as described in Section 6.2.3. The identity of a | in a certificate as described in Section 6.2.3. The identity of a | |||
node in the ACP is carried via the acp-node-name as defined in | node in the ACP is carried via the acp-node-name as defined in | |||
Section 6.2.2. | Section 6.2.2. | |||
To support ECDH directly with the key in the ACP certificate, ACP | To support Elliptic Curve Diffie-Hellman (ECDH) directly with the key | |||
certificates with ECC keys need to indicate to be Elliptic Curve | in the ACP certificate, ACP certificates with ECC keys need to | |||
Diffie-Hellman capable (ECDH): If the X.509v3 keyUsage extension is | indicate that they are ECDH capable: if the X.509 v3 keyUsage | |||
present, the keyAgreement bit must then be set. Note that this | extension is present, the keyAgreement bit must then be set. Note | |||
option is not required for any of the required ciphersuites in this | that this option is not required for any of the required ciphersuites | |||
document and may not be supported by all CA. | in this document and may not be supported by all CAs. | |||
Any other fields of the ACP certificate are to be populated as | Any other fields of the ACP certificate are to be populated as | |||
required by [RFC5280]: As long as they are compliant with [RFC5280], | required by [RFC5280]. As long as they are compliant with [RFC5280], | |||
any other field of an ACP certificate can be set as desired by the | any other field of an ACP certificate can be set as desired by the | |||
operator of the ACP domain through appropriate ACP registrar/ACP CA | operator of the ACP domain through the appropriate ACP registrar and/ | |||
procedures. For example, other fields may be required for other | or ACP CA procedures. For example, other fields may be required for | |||
purposes that the ACP certificate is intended to be used for (such as | purposes other than those that the ACP certificate is intended to be | |||
elements of a SubjectName). | used for (such as elements of a SubjectName). | |||
For further certificate details, ACP certificates may follow the | For further certificate details, ACP certificates may follow the | |||
recommendations from [CABFORUM]. | recommendations from [CABFORUM]. | |||
For diagnostic and other operational purposes, it is beneficial to | For diagnostic and other operational purposes, it is beneficial to | |||
copy the device identifying fields of the node's IDevID certificate | copy the device-identifying fields of the node's IDevID certificate | |||
into the ACP certificate, such as the [X.520], section 6.2.9 | into the ACP certificate, such as the "serialNumber" attribute | |||
"serialNumber" attribute in the subject field distinguished name | ([X.520], Section 6.2.9) in the subject field distinguished name | |||
encoding. Note that this is not the certificate serial number. See | encoding. Note that this is not the certificate serial-number. See | |||
also [I-D.ietf-anima-bootstrapping-keyinfra] section 2.3.1. This can | also [RFC8995], Section 2.3.1. This can be done, for example, if it | |||
be done for example if it would be acceptable for the device's | would be acceptable for the device's "serialNumber" to be signaled | |||
"serialNumber" to be signaled via the Link Layer Discovery Protocol | via the Link Layer Discovery Protocol [LLDP] because, like LLDP- | |||
(LLDP, [LLDP]) because like LLDP signaled information, the ACP | signaled information, the ACP certificate information can be | |||
certificate information can be retrieved by neighboring nodes without | retrieved by neighboring nodes without further authentication and can | |||
further authentication and be used either for beneficial diagnostics | be used either for beneficial diagnostics or for malicious attacks. | |||
or for malicious attacks. Retrieval of the ACP certificate is | Retrieval of the ACP certificate is possible via a (failing) attempt | |||
possible via a (failing) attempt to set up an ACP secure channel, and | to set up an ACP secure channel, and the "serialNumber" usually | |||
the "serialNumber" usually contains device type information that may | contains device type information that may help to more quickly | |||
help to faster determine working exploits/attacks against the device. | determine working exploits/attacks against the device. | |||
Note that there is no intention to constrain authorization within the | Note that there is no intention to constrain authorization within the | |||
ACP or autonomic networks using the ACP to just the ACP domain | ACP or Autonomic Networks using the ACP to just the ACP domain | |||
membership check as defined in this document. It can be extended or | membership check as defined in this document. It can be extended or | |||
modified with additional requirements. Such future authorizations | modified with additional requirements. Such future authorizations | |||
can use and require additional elements in certificates or policies | can use and require additional elements in certificates or policies | |||
or even additional certificates. See the additional check against | or even additional certificates. See Section 6.2.5 for the | |||
the id-kp-cmcRA [RFC6402] extended key usage attribute | additional check against the id-kp-cmcRA extended key usage attribute | |||
(Section 6.2.5) and for possible future extensions, see | ("Certificate Management over CMS (CMC) Updates" [RFC6402]), and see | |||
Appendix A.9.5. | Appendix A.9.5 for possible future extensions. | |||
6.2.2. ACP Certificate AcpNodeName | 6.2.2. ACP Certificate AcpNodeName | |||
acp-node-name = local-part "@" acp-domain-name | acp-node-name = local-part "@" acp-domain-name | |||
local-part = [ acp-address ] [ "+" rsub extensions ] | local-part = [ acp-address ] [ "+" rsub extensions ] | |||
acp-address = 32HEXDIG | "0" ; HEXDIG as of RFC5234 section B.1 | acp-address = 32HEXDIG / "0" ; HEXDIG as of [RFC5234], Appendix B.1 | |||
rsub = [ <subdomain> ] ; <subdomain> as of RFC1034, section 3.5 | rsub = [ <subdomain> ] ; <subdomain> as of [RFC1034], Section 3.5 | |||
acp-domain-name = ; <domain> ; as of RFC 1034, section 3.5 | acp-domain-name = <domain> ; as of [RFC1034], Section 3.5 | |||
extensions = *( "+" extension ) | extensions = *( "+" extension ) | |||
extension = 1*etext ; future standard definition. | extension = 1*etext ; future standard definition. | |||
etext = ALPHA / DIGIT / ; Printable US-ASCII | etext = ALPHA / DIGIT / ; Printable US-ASCII | |||
"!" / "#" / "$" / "%" / "&" / "'" / | "!" / "#" / "$" / "%" / "&" / "'" / | |||
"*" / "-" / "/" / "=" / "?" / "^" / | "*" / "-" / "/" / "=" / "?" / "^" / | |||
"_" / "`" / "{" / "|" / "}" / "~" | "_" / "`" / "{" / "|" / "}" / "~" | |||
routing-subdomain = [ rsub "." ] acp-domain-name | routing-subdomain = [ rsub "." ] acp-domain-name | |||
Example: | Figure 2: ACP Node Name ABNF | |||
given an ACP address of fd89:b714:f3db:0:200:0:6400:0000 | ||||
and an ACP domain-name of acp.example.com | Example: | |||
and an rsub extenstion of area51.research | ||||
Given an ACP address of fd89:b714:f3db:0:200:0:6400:0000, an ACP | ||||
domain name of acp.example.com, and an rsub extension of | ||||
area51.research, then this results in the following: | ||||
then this results in: | ||||
acp-node-name = fd89b714f3db00000200000064000000 | acp-node-name = fd89b714f3db00000200000064000000 | |||
+area51.research@acp.example.com | +area51.research@acp.example.com | |||
acp-domain-name = acp.example.com | acp-domain-name = acp.example.com | |||
routing-subdomain = area51.research.acp.example.com | routing-subdomain = area51.research.acp.example.com | |||
Figure 2: ACP Node Name ABNF | ||||
acp-node-name in above Figure 2 is the ABNF ([RFC5234]) definition of | The acp-node-name in Figure 2 is the ABNF definition ("Augmented BNF | |||
the ACP Node Name. An ACP certificate MUST carry this information. | for Syntax Specifications: ABNF" [RFC5234]) of the ACP Node Name. An | |||
It MUST be encoded as a subjectAltName / otherName / AcpNodeName as | ACP certificate MUST carry this information. It MUST contain an | |||
described in Section 6.2.2.1. | otherName field in the X.509 Subject Alternative Name extension, and | |||
the otherName MUST contain an AcpNodeName as described in | ||||
Section 6.2.2. | ||||
Nodes complying with this specification MUST be able to receive their | Nodes complying with this specification MUST be able to receive their | |||
ACP address through the domain certificate, in which case their own | ACP address through the domain certificate, in which case their own | |||
ACP certificate MUST have a 32HEXDIG acp-address field. Acp-address | ACP certificate MUST have a 32HEXDIG acp-address field. The acp- | |||
is case insensitive because ABNF HEXDIG is. It is recommended to | address field is case insensitive because ABNF HEXDIG is. It is | |||
encode acp-address with lower case letters. Nodes complying with | recommended to encode acp-address with lowercase letters. Nodes | |||
this specification MUST also be able to authenticate nodes as ACP | complying with this specification MUST also be able to authenticate | |||
domain members or ACP secure channel peers when they have a 0-value | nodes as ACP domain members or ACP secure channel peers when they | |||
acp-address field and as ACP domain members (but not as ACP secure | have a zero-value acp-address field and as ACP domain members (but | |||
channel peers) when the acp-address field is omitted from their | not as ACP secure channel peers) when the acp-address field is | |||
AcpNodeName. See Section 6.2.3. | omitted from their AcpNodeName. See Section 6.2.3. | |||
acp-domain-name is used to indicate the ACP Domain across which ACP | The acp-domain-name is used to indicate the ACP domain across which | |||
nodes authenticate and authorize each other, for example to build ACP | ACP nodes authenticate and authorize each other, for example, to | |||
secure channels to each other, see Section 6.2.3. acp-domain-name | build ACP secure channels to each other, see Section 6.2.3. The acp- | |||
SHOULD be the FQDN of an Internet domain owned by the network | domain-name SHOULD be the FQDN of an Internet domain owned by the | |||
administration of the ACP and ideally reserved to only be used for | network administration of the ACP and ideally reserved to only be | |||
the ACP. In this specification it serves to be a name for the ACP | used for the ACP. In this specification, it serves as a name for the | |||
that ideally is globally unique. When acp-domain-name is a globally | ACP that ideally is globally unique. When acp-domain-name is a | |||
unique name, collision of ACP addresses across different ACP domains | globally unique name, collision of ACP addresses across different ACP | |||
can only happen due to ULA hash collisions (see Section 6.11.2). | domains can only happen due to ULA hash collisions (see | |||
Using different acp-domain-names, operators can distinguish multiple | Section 6.11.2). Using different acp-domain-names, operators can | |||
ACP even when using the same TA. | distinguish multiple ACPs even when using the same TA. | |||
To keep the encoding simple, there is no consideration for | To keep the encoding simple, there is no consideration for | |||
internationalized acp-domain-names. The acp-node-name is not | internationalized acp-domain-names. The acp-node-name is not | |||
intended for end user consumption. There is no protection against an | intended for end-user consumption. There is no protection against an | |||
operator to pick any domain name for an ACP whether or not the | operator picking any domain name for an ACP whether or not the | |||
operator can claim to own the domain name. Instead, the domain name | operator can claim to own the domain name. Instead, the domain name | |||
only serves as a hash seed for the ULA and for diagnostics to the | only serves as a hash seed for the ULA and for diagnostics for the | |||
operator. Therefore, any operator owning only an internationalized | operator. Therefore, any operator owning only an internationalized | |||
domain name should be able to pick an equivalently unique 7-bit ASCII | domain name should be able to pick an equivalently unique 7-bit ASCII | |||
acp-domain-name string representing the internationalized domain | acp-domain-name string representing the internationalized domain | |||
name. | name. | |||
"routing-subdomain" is a string that can be constructed from the acp- | The routing-subdomain is a string that can be constructed from the | |||
node-name, and it is used in the hash-creation of the ULA (see | acp-node-name, and it is used in the hash creation of the ULA (see | |||
below). The presence of the "rsub" component allows a single ACP | Section 6.11.2). The presence of the rsub component allows a single | |||
domain to employ multiple /48 ULA prefixes. See Appendix A.6 for | ACP domain to employ multiple /48 ULA prefixes. See Appendix A.6 for | |||
example use-cases. | example use cases. | |||
The optional "extensions" field is used for future standardized | The optional extensions field is used for future standardized | |||
extensions to this specification. It MUST be ignored if present and | extensions to this specification. It MUST be ignored if present and | |||
not understood. | not understood. | |||
The following points explain and justify the encoding choices | The following points explain and justify the encoding choices | |||
described: | described: | |||
1. Formatting notes: | 1. Formatting notes: | |||
1.1 "rsub" needs to be in the "local-part": If the format just | ||||
had routing-subdomain as the domain part of the acp-node- | 1.1 The rsub component needs to be in the local-part: if the | |||
name, rsub and acp-domain-name could not be separated from | format just had routing-subdomain as the domain part of the | |||
each other to determine in the ACP domain membership check | acp-node-name, rsub and acp-domain-name could not be | |||
which part is the acp-domain-name and which is solely for | separated from each other to determine in the ACP domain | |||
creating a different ULA prefix. | membership check which part is the acp-domain-name and which | |||
1.2 If both "acp-address" and "rsub" are omitted from | is solely for creating a different ULA prefix. | |||
AcpNodeName, the "local-part" will have the format | ||||
"++extension(s)". The two plus characters are necessary so | 1.2 If both acp-address and rsub are omitted from AcpNodeName, | |||
the node can unambiguously parse that both "acp-address" and | the local-part will have the format "++extension(s)". The | |||
"rsub" are omitted. | two plus characters are necessary so the node can | |||
unambiguously parse that both acp-address and rsub are | ||||
omitted. | ||||
2. The encoding of the ACP domain name and ACP address as described | 2. The encoding of the ACP domain name and ACP address as described | |||
in this section is used for the following reasons: | in this section is used for the following reasons: | |||
2.1 The acp-node-name is the identifier of a node's ACP. It | 2.1 The acp-node-name is the identifier of a node's ACP. It | |||
includes the necessary components to identify a node's ACP | includes the necessary components to identify a node's ACP | |||
both from within the ACP as well as from the outside of the | both from within the ACP as well as from the outside of the | |||
ACP. | ACP. | |||
2.2 For manual and/or automated diagnostics and backend | 2.2 For manual and/or automated diagnostics and backend | |||
management of devices and ACPs, it is necessary to have an | management of devices and ACPs, it is necessary to have an | |||
easily human readable and software parsed standard, single | easily human-readable and software-parsable standard, single | |||
string representation of the information in the acp-node- | string representation of the information in the acp-node- | |||
name. For example, inventory or other backend systems can | name. For example, inventory or other backend systems can | |||
always identify an entity by one unique string field but not | always identify an entity by one unique string field but not | |||
by a combination of multiple fields, which would be | by a combination of multiple fields, which would be | |||
necessary if there was no single string representation. | necessary if there were no single string representation. | |||
2.3 If the encoding was not that of such a string, it would be | ||||
necessary to define a second standard encoding to provide | 2.3 If the encoding was not such a string, it would be necessary | |||
this format (standard string encoding) for operator | to define a second standard encoding to provide this format | |||
consumption. | (standard string encoding) for operator consumption. | |||
2.4 Addresses of the form <local>@<domain> have become the | 2.4 Addresses of the form <local>@<domain> have become the | |||
preferred format for identifiers of entities in many | preferred format for identifiers of entities in many | |||
systems, including the majority of user identification in | systems, including the majority of user identifiers in web | |||
web or mobile applications such as multi-domain single-sign- | or mobile applications such as multi-domain single-sign-on | |||
on systems. | systems. | |||
3. Compatibilities: | 3. Compatibilities: | |||
3.1 It should be possible to use the ACP certificate as an | 3.1 It should be possible to use the ACP certificate as an | |||
LDevID certificate on the system for other uses beside the | LDevID certificate on the system for uses besides the ACP. | |||
ACP. Therefore, the information element required for the | Therefore, the information element required for the ACP | |||
ACP should be encoded so that it minimizes the possibility | should be encoded so that it minimizes the possibility of | |||
of creating incompatibilities with such other uses. The | creating incompatibilities with other such uses. The | |||
attributes of the subject field for example are often used | attributes of the subject field, for example, are often used | |||
in non-ACP applications and should therefore not be occupied | in non-ACP applications and therefore should not be occupied | |||
by new ACP values. | by new ACP values. | |||
3.2 The element should not require additional ASN.1 en/decoding, | ||||
because libraries to access certificate information | 3.2 The element should not require additional ASN.1 encoding | |||
especially for embedded devices may not support extended | and/or decoding because libraries for accessing certificate | |||
ASN.1 decoding beyond predefined, mandatory fields. | information, especially for embedded devices, may not | |||
subjectAltName / otherName is already used with a single | support extended ASN.1 decoding beyond predefined, mandatory | |||
string parameter for several otherNames (see [RFC3920], | fields. subjectAltName / otherName is already used with a | |||
[RFC7585], [RFC4985], [RFC8398]). | single string parameter for several otherNames (see | |||
"Extensible Messaging and Presence Protocol (XMPP): Core" | ||||
[RFC6120], "Dynamic Peer Discovery for RADIUS/TLS and | ||||
RADIUS/DTLS Based on the Network Access Identifier (NAI)" | ||||
[RFC7585], "Internet X.509 Public Key Infrastructure Subject | ||||
Alternative Name for Expression of Service Name" [RFC4985], | ||||
"Internationalized Email Addresses in X.509 Certificates" | ||||
[RFC8398]). | ||||
3.3 The element required for the ACP should minimize the risk of | 3.3 The element required for the ACP should minimize the risk of | |||
being misinterpreted by other uses of the LDevID | being misinterpreted by other uses of the LDevID | |||
certificate. It also must not be misinterpreted to actually | certificate. It also must not be misinterpreted as an email | |||
be an email address, hence the use of the otherName / | address, hence the use of the otherName / rfc822Name option | |||
rfc822Name option in the certificate would be inappropriate. | in the certificate would be inappropriate. | |||
See section 4.2.1.6 of [RFC5280] for details on the subjectAltName | See Section 4.2.1.6 of [RFC5280] for details on the subjectAltName | |||
field. | field. | |||
6.2.2.1. AcpNodeName ASN.1 Module | 6.2.2.1. AcpNodeName ASN.1 Module | |||
The following ASN.1 module normatively specifies the AcpNodeName | The following ASN.1 module normatively specifies the AcpNodeName | |||
structure. This specification uses the ASN.1 definitions from | structure. This specification uses the ASN.1 definitions from "New | |||
ASN.1 Modules for the Public Key Infrastructure Using X.509 (PKIX)" | ||||
[RFC5912] with the 2002 ASN.1 notation used in that document. | [RFC5912] with the 2002 ASN.1 notation used in that document. | |||
[RFC5912] updates normative documents using older ASN.1 notation. | [RFC5912] updates normative documents using older ASN.1 notation. | |||
ANIMA-ACP-2020 | ANIMA-ACP-2020 | |||
{ iso(1) identified-organization(3) dod(6) | { iso(1) identified-organization(3) dod(6) | |||
internet(1) security(5) mechanisms(5) pkix(7) id-mod(0) | internet(1) security(5) mechanisms(5) pkix(7) id-mod(0) | |||
id-mod-anima-acpnodename-2020(IANA1) } | id-mod-anima-acpnodename-2020(97) } | |||
DEFINITIONS IMPLICIT TAGS ::= | DEFINITIONS IMPLICIT TAGS ::= | |||
BEGIN | BEGIN | |||
IMPORTS | IMPORTS | |||
OTHER-NAME | OTHER-NAME | |||
FROM PKIX1Implicit-2009 | FROM PKIX1Implicit-2009 | |||
{ iso(1) identified-organization(3) dod(6) internet(1) | { iso(1) identified-organization(3) dod(6) internet(1) | |||
security(5) mechanisms(5) pkix(7) id-mod(0) | security(5) mechanisms(5) pkix(7) id-mod(0) | |||
id-mod-pkix1-implicit-02(59) } | id-mod-pkix1-implicit-02(59) } | |||
skipping to change at page 30, line 34 ¶ | skipping to change at line 1433 ¶ | |||
id-mod-pkix1-explicit-02(51) } ; | id-mod-pkix1-explicit-02(51) } ; | |||
id-on OBJECT IDENTIFIER ::= { id-pkix 8 } | id-on OBJECT IDENTIFIER ::= { id-pkix 8 } | |||
AcpNodeNameOtherNames OTHER-NAME ::= { on-AcpNodeName, ... } | AcpNodeNameOtherNames OTHER-NAME ::= { on-AcpNodeName, ... } | |||
on-AcpNodeName OTHER-NAME ::= { | on-AcpNodeName OTHER-NAME ::= { | |||
AcpNodeName IDENTIFIED BY id-on-AcpNodeName | AcpNodeName IDENTIFIED BY id-on-AcpNodeName | |||
} | } | |||
id-on-AcpNodeName OBJECT IDENTIFIER ::= { id-on IANA2 } | id-on-AcpNodeName OBJECT IDENTIFIER ::= { id-on 10 } | |||
AcpNodeName ::= IA5String (SIZE (1..MAX)) | AcpNodeName ::= IA5String (SIZE (1..MAX)) | |||
-- AcpNodeName as specified in this document carries the | -- AcpNodeName as specified in this document carries the | |||
-- acp-node-name as specified in the ABNF in Section 6.1.2 | -- acp-node-name as specified in the ABNF in Section 6.2.2 | |||
END | END | |||
Figure 3 | Figure 3: AcpNodeName ASN.1 Module | |||
6.2.3. ACP domain membership check | 6.2.3. ACP Domain Membership Check | |||
The following points constitute the ACP domain membership check of a | The following points constitute the ACP domain membership check of a | |||
candidate peer via its certificate: | candidate peer via its certificate: | |||
1: The peer has proved ownership of the private key associated with | 1. The peer has proved ownership of the private key associated with | |||
the certificate's public key. This check is performed by the | the certificate's public key. This check is performed by the | |||
security association protocol used, for example [RFC7296], section | security association protocol used, for example, Section 2.15 of | |||
2.15. | "Internet Key Exchange Protocol Version 2 (IKEv2)" [RFC7296]. | |||
2: The peer's certificate passes certificate path validation as | 2. The peer's certificate passes certificate path validation as | |||
defined in [RFC5280], section 6 against one of the TA associated | defined in [RFC5280], Section 6, against one of the TAs | |||
with the ACP node's ACP certificate (see Section 6.2.4 below). | associated with the ACP node's ACP certificate (see | |||
This includes verification of the validity (lifetime) of the | Section 6.2.4). This includes verification of the validity | |||
certificates in the path. | (lifetime) of the certificates in the path. | |||
3: If the peer's certificate indicates a Certificate Revocation List | ||||
(CRL) Distribution Point (CRLDP) ([RFC5280], section 4.2.1.13) or | 3. If the peer's certificate indicates a CRLDP ([RFC5280], | |||
Online Certificate Status Protocol (OCSP) responder ([RFC5280], | Section 4.2.1.13) or OCSP responder ([RFC5280], Section 4.2.2.1), | |||
section 4.2.2.1), then the peer's certificate MUST be valid | then the peer's certificate MUST be valid according to those | |||
according to those mechanisms when they are available: An OCSP | mechanisms when they are available: an OCSP check for the peer's | |||
check for the peer's certificate across the ACP must succeed or | certificate across the ACP must succeed, or the peer's | |||
the peer certificate must not be listed in the CRL retrieved from | certificate must not be listed in the CRL retrieved from the | |||
the CRLDP. These mechanisms are not available when the ACP node | CRLDP. These mechanisms are not available when the ACP node has | |||
has no ACP or non-ACP connectivity to retrieve a current CRL or | no ACP or non-ACP connectivity to retrieve a current CRL or has | |||
access an OCSP responder and the security association protocol | no access an OCSP responder, and the security association | |||
itself has also no way to communicate CRL or OCSP check. | protocol itself also has no way to communicate the CRL or OCSP | |||
Retries to learn revocation via OCSP/CRL SHOULD be made using the | check. | |||
same backoff as described in Section 6.7. If and when the ACP | ||||
node then learns that an ACP peer's certificate is invalid for | Retries to learn revocation via OCSP or CRL SHOULD be made using | |||
which rule 3 had to be skipped during ACP secure channel | the same backoff as described in Section 6.7. If and when the | |||
establishment, then the ACP secure channel to that peer MUST be | ACP node then learns that an ACP peer's certificate is invalid | |||
closed even if this peer is the only connectivity to access CRL/ | for which Rule 3 had to be skipped during ACP secure channel | |||
OCSP. This applies (of course) to all ACP secure channels to this | establishment, then the ACP secure channel to that peer MUST be | |||
peer if there are multiple. The ACP secure channel connection | closed even if this peer is the only connectivity to access CRL/ | |||
MUST be retried periodically to support the case that the neighbor | OCSP. This applies (of course) to all ACP secure channels to | |||
acquires a new, valid certificate. | this peer if there are multiple. The ACP secure channel | |||
4: The peer's certificate has a syntactically valid acp-node-name | connection MUST be retried periodically to support the case that | |||
field and the acp-domain-name in that peer's acp-node-name is the | the neighbor acquires a new, valid certificate. | |||
same as in this ACP node's certificate (lowercase normalized). | ||||
4. The peer's certificate has a syntactically valid acp-node-name | ||||
field, and the acp-domain-name in that peer's acp-node-name is | ||||
the same as in this ACP node's certificate (lowercase | ||||
normalized). | ||||
When checking a candidate peer's certificate for the purpose of | When checking a candidate peer's certificate for the purpose of | |||
establishing an ACP secure channel, one additional check is | establishing an ACP secure channel, one additional check is | |||
performed: | performed: | |||
5: The acp-address field of the candidate peer certificate's | 5. The acp-address field of the candidate peer certificate's | |||
AcpNodeName is not omitted but either 32HEXDIG or 0, according to | AcpNodeName is not omitted but is either 32HEXDIG or 0, according | |||
Figure 2. | to Figure 2. | |||
Technically, ACP secure channels can only be built with nodes that | Technically, ACP secure channels can only be built with nodes that | |||
have an acp-address. Rule 5 ensures that this is taken into account | have an acp-address. Rule 5 ensures that this is taken into account | |||
during ACP domain membership check. | during ACP domain membership check. | |||
Nodes with an omitted acp-address field can only use their ACP domain | Nodes with an omitted acp-address field can only use their ACP domain | |||
certificate for non-ACP-secure channel authentication purposes. This | certificate for non-ACP secure channel authentication purposes. This | |||
includes for example NMS type nodes permitted to communicate into the | includes, for example, NMS type nodes permitted to communicate into | |||
ACP via ACP connect (Section 8.1) | the ACP via ACP connect (Section 8.1) | |||
The special value 0 in an ACP certificates acp-address field is used | ||||
for nodes that can and should determine their ACP address through | The special value "0" in an ACP certificate's acp-address field is | |||
other mechanisms than learning it through the acp-address field in | used for nodes that can and should determine their ACP address | |||
their ACP certificate. These ACP nodes are permitted to establish | through mechanisms other than learning it through the acp-address | |||
ACP secure channels. Mechanisms for those nodes to determine their | field in their ACP certificate. These ACP nodes are permitted to | |||
ACP address are outside the scope of this specification, but this | establish ACP secure channels. Mechanisms for those nodes to | |||
option is defined here so that any ACP nodes can build ACP secure | determine their ACP address are outside the scope of this | |||
channels to them according to Rule 5. | specification, but this option is defined here so that any ACP nodes | |||
can build ACP secure channels to them according to Rule 5. | ||||
The optional rsub field of the AcpNodeName is not relevant to the ACP | The optional rsub field of the AcpNodeName is not relevant to the ACP | |||
domain membership check because it only serves to structure routing | domain membership check because it only serves to structure routing | |||
and addressing within an ACP but not to segment mutual | and addressing within an ACP but not to segment mutual authentication | |||
authentication/authorization (hence the name "routing subdomain"). | and authorization (hence the name "routing subdomain"). | |||
In summary: | In summary: | |||
* Steps 1...4 constitute standard certificate validity verification | * Steps 1 through 4 constitute standard certificate validity | |||
and private key authentication as defined by [RFC5280] and | verification and private key authentication as defined by | |||
security association protocols (such as Internet Key Exchange | [RFC5280] and security association protocols (such as IKEv2 | |||
Protocol version 2 IKEv2 [RFC7296] when leveraging certificates. | [RFC7296]) when leveraging certificates. | |||
* Steps 1...4 do not include verification of any pre-existing form | ||||
of non-public-key-only based identity elements of a certificate | * Except for its public key, Steps 1 through 4 do not include the | |||
such as a web servers domain name prefix often encoded in | verification of any preexisting form of a certificate's identity | |||
certificate common name. Step 5 is an equivalent step for the | elements, such as a web server's domain name prefix, which is | |||
AcpNodeName. | often encoded in the certificate common name. Step 5 is an | |||
* Step 4 constitutes standard CRL/OCSP checks refined for the case | equivalent step for the AcpNodeName. | |||
of missing connectivity and limited functionality security | ||||
* Step 4 constitutes standard CRL and OCSP checks refined for the | ||||
case of missing connectivity and limited-functionality security | ||||
association protocols. | association protocols. | |||
* Steps 1...4 authorize to build any secure connection between | ||||
members of the same ACP domain except for ACP secure channels. | * Steps 1 through 4 authorize the building of any secure connection | |||
between members of the same ACP domain except for ACP secure | ||||
channels. | ||||
* Step 5 is the additional verification of the presence of an ACP | * Step 5 is the additional verification of the presence of an ACP | |||
address as necessary for ACP secure channels. | address as necessary for ACP secure channels. | |||
* Steps 1...5 therefore authorize to build an ACP secure channel. | ||||
* Steps 1 through 5 therefore authorize the building of an ACP | ||||
secure channel. | ||||
For brevity, the remainder of this document refers to this process | For brevity, the remainder of this document refers to this process | |||
only as authentication instead of as authentication and | only as authentication instead of as authentication and | |||
authorization. | authorization. | |||
[RFC-Editor: Please remove the following paragraph]. | 6.2.3.1. Realtime Clock and Time Validation | |||
Note that the ACP domain membership check does not verify the network | ||||
layer address of the security association. See [ACPDRAFT], | ||||
Appendix B.2 for explanations. | ||||
6.2.3.1. Realtime clock and Time Validation | ||||
An ACP node with a realtime clock in which it has confidence, MUST | An ACP node with a realtime clock in which it has confidence MUST | |||
check the time stamps when performing ACP domain membership check | check the timestamps when performing an ACP domain membership check, | |||
such as the certificate validity period in step 1. and the respective | such as checking the certificate validity period in Step 1 and the | |||
times in step 4 for revocation information (e.g., signingTimes in CMS | respective times in Step 4 for revocation information (e.g., | |||
signatures). | signingTimes in Cryptographic Message Syntax (CMS) signatures). | |||
An ACP node without such a realtime clock MAY ignore those time stamp | An ACP node without such a realtime clock MAY ignore those timestamp | |||
validation steps if it does not know the current time. Such an ACP | validation steps if it does not know the current time. Such an ACP | |||
node SHOULD obtain the current time in a secured fashion, such as via | node SHOULD obtain the current time in a secured fashion, such as via | |||
a Network Time Protocol signaled through the ACP. It then ignores | NTP signaled through the ACP. It then ignores timestamp validation | |||
time stamp validation only until the current time is known. In the | only until the current time is known. In the absence of implementing | |||
absence of implementing a secured mechanism, such an ACP node MAY use | a secured mechanism, such an ACP node MAY use a current time learned | |||
a current time learned in an insecure fashion in the ACP domain | in an insecure fashion in the ACP domain membership check. | |||
membership check. | ||||
Current time MAY for example be learned unsecured via NTP ([RFC5905]) | Current time MAY be learned in an unsecured fashion, for example, via | |||
over the same link-local IPv6 addresses used for the ACP from | NTP ("Network Time Protocol Version 4: Protocol and Algorithms | |||
neighboring ACP nodes. ACP nodes that do provide NTP insecure over | Specification" [RFC5905]) over the same link-local IPv6 addresses | |||
their link-local addresses SHOULD primarily run NTP across the ACP | used for the ACP from neighboring ACP nodes. ACP nodes that do | |||
and provide NTP time across the ACP only when they have a trusted | provide unsecured NTP over their link-local addresses SHOULD | |||
time source. Details for such NTP procedures are beyond the scope of | primarily run NTP across the ACP and provide NTP time across the ACP | |||
this specification. | only when they have a trusted time source. Details for such NTP | |||
procedures are beyond the scope of this specification. | ||||
Beside ACP domain membership check, the ACP itself has no dependency | Besides the ACP domain membership check, the ACP itself has no | |||
against knowledge of the current time, but protocols and services | dependency on knowing the current time, but protocols and services | |||
using the ACP will likely have the need to know the current time. | using the ACP, for example, event logging, will likely need to know | |||
For example, event logging. | the current time. | |||
6.2.4. Trust Anchors (TA) | 6.2.4. Trust Anchors (TA) | |||
ACP nodes need TA information according to [RFC5280], section 6.1.1 | ACP nodes need TA information according to [RFC5280], Section 6.1.1 | |||
(d), typically in the form of one or more certificate of the TA to | (d), typically in the form of one or more certificates of the TA to | |||
perform certificate path validation as required by Section 6.2.3, | perform certificate path validation as required by Section 6.2.3, | |||
rule 2. TA information MUST be provisioned to an ACP node (together | Rule 2. TA information MUST be provisioned to an ACP node (together | |||
with its ACP domain certificate) by an ACP Registrar during initial | with its ACP domain certificate) by an ACP registrar during initial | |||
enrollment of a candidate ACP node. ACP nodes MUST also support | enrollment of a candidate ACP node. ACP nodes MUST also support the | |||
renewal of TA information via EST as described below in | renewal of TA information via EST as described in Section 6.2.5. | |||
Section 6.2.5. | ||||
The required information about a TA can consist of not only a single, | The required information about a TA can consist of one or more | |||
but multiple certificates as required for dealing with CA certificate | certificates as required for dealing with CA certificate renewals as | |||
renewals as explained in Section 4.4 of CMP ([RFC4210]). | explained in Section 4.4 of "Internet X.509 Public Key Infrastructure | |||
Certificate Management Protocol (CMP)" [RFC4210]). | ||||
A certificate path is a chain of certificates starting at the ACP | A certificate path is a chain of certificates starting at the ACP | |||
certificate (leaf/end-entity) followed by zero or more intermediate | certificate (the leaf and/or end entity), followed by zero or more | |||
CA certificates and ending with the TA information, which are | intermediate CA certificates, and ending with the TA information, | |||
typically one or two the self-signed certificates of the TA. The CA | which is typically one or two self-signed certificates of the TA. | |||
that signs the ACP certificate is called the assigning CA. If there | The CA that signs the ACP certificate is called the assigning CA. If | |||
are no intermediate CA, then the assigning CA is the TA. Certificate | there are no intermediate CAs, then the assigning CA is the TA. | |||
path validation authenticates that the ACP certificate is permitted | Certificate path validation authenticates that the TA associated with | |||
by a TA associated with the ACP, directly or indirectly via one or | the ACP permits the ACP certificate, either directly or indirectly | |||
more intermediate CA. | via one or more intermediate CA. | |||
Note that different ACP nodes may have different intermediate CA in | Note that different ACP nodes may have different intermediate CAs in | |||
their certificate path and even different TA. The set of TA for an | their certificate path and even different TA. The set of TAs for an | |||
ACP domain must be consistent across all ACP members so that any ACP | ACP domain must be consistent across all ACP members so that any ACP | |||
node can authenticate any other ACP node. The protocols through | node can authenticate any other ACP node. The protocols through | |||
which ACP domain membership check rules 1-3 are performed need to | which the ACP domain membership check Rules 1 through 3 are performed | |||
support the exchange not only of the ACP nodes certificates, but also | need to support the exchange not only of the ACP nodes certificates | |||
exchange of the intermedia TA. | but also the exchange of the intermediate TA. | |||
ACP nodes MUST support for the ACP domain membership check the | For the ACP domain membership check, ACP nodes MUST support | |||
certificate path validation with 0 or 1 intermediate CA. They SHOULD | certificate path validation with zero or one intermediate CA. They | |||
support 2 intermediate CA and two TA (to permit migration to from one | SHOULD support two intermediate CAs and two TAs (to permit migration | |||
TA to another TA). | from one TA to another TA). | |||
Certificates for an ACP MUST only be given to nodes that are allowed | Certificates for an ACP MUST only be given to nodes that are allowed | |||
to be members of that ACP. When the signing CA relies on an ACP | to be members of that ACP. When the signing CA relies on an ACP | |||
Registrar, the CA MUST only sign certificates with acp-node-name | registrar, the CA MUST only sign certificates with acp-node-name | |||
through trusted ACP Registrars. In this setup, any existing CA, | through trusted ACP registrars. In this setup, any existing CA, | |||
unaware of the formatting of acp-node-name, can be used. | unaware of the formatting of acp-node-name, can be used. | |||
These requirements can be achieved by using a TA private to the owner | These requirements can be achieved by using a TA private to the owner | |||
of the ACP domain or potentially through appropriate contractual | of the ACP domain or potentially through appropriate contractual | |||
agreements between the involved parties (Registrar and CA). Using | agreements between the involved parties (registrar and CA). Using a | |||
public CA is out of scope of this document. [RFC-Editor: please | public CA is out of scope of this document. | |||
remove the following sentence]. See [ACPDRAFT], Appendix B.3 for | ||||
further considerations. | ||||
A single owner can operate multiple independent ACP domains from the | A single owner can operate multiple, independent ACP domains from the | |||
same set of TA. Registrars must then know which ACP a node needs to | same set of TAs. Registrars must then know into which ACP a node | |||
be enrolled into. | needs to be enrolled. | |||
6.2.5. Certificate and Trust Anchor Maintenance | 6.2.5. Certificate and Trust Anchor Maintenance | |||
ACP nodes MUST support renewal of their Certificate and TA | ACP nodes MUST support renewal of their certificate and TA | |||
information via EST and MAY support other mechanisms. See | information via EST and MAY support other mechanisms. See | |||
Section 6.1 for TLS requirements. An ACP network MUST have at least | Section 6.1 for TLS requirements. An ACP network MUST have at least | |||
one ACP node supporting EST server functionality across the ACP so | one ACP node supporting EST server functionality across the ACP so | |||
that EST renewal is useable. | that EST renewal is usable. | |||
ACP nodes SHOULD be able to remember the IPv6 locator parameters of | ACP nodes SHOULD remember the GRASP O_IPv6_LOCATOR parameters of the | |||
the O_IPv6_LOCATOR in GRASP of the EST server from which they last | EST server with which they last renewed their ACP certificate. They | |||
renewed their ACP certificate. They SHOULD provide the ability for | SHOULD provide the ability for these EST server parameters to also be | |||
these EST server parameters to also be set by the ACP Registrar (see | set by the ACP registrar (see Section 6.11.7) that initially enrolled | |||
Section 6.11.7) that initially enrolled the ACP device with its ACP | the ACP device with its ACP certificate. When BRSKI is used (see | |||
certificate. When BRSKI (see | [RFC8995]), the IPv6 locator of the BRSKI registrar from the BRSKI | |||
[I-D.ietf-anima-bootstrapping-keyinfra]) is used, the IPv6 locator of | TLS connection SHOULD be remembered and used for the next renewal via | |||
the BRSKI registrar from the BRSKI TLS connection SHOULD be | EST if that registrar also announces itself as an EST server via | |||
remembered and used for the next renewal via EST if that registrar | GRASP on its ACP address (see Section 6.2.5.1). | |||
also announces itself as an EST server via GRASP (see next section) | ||||
on its ACP address. | ||||
The EST server MUST present a certificate that is passing ACP domain | The EST server MUST present a certificate that passes the ACP domain | |||
membership check in its TLS connection setup (Section 6.2.3, rules | membership check in its TLS connection setup (Section 6.2.3, rules 1 | |||
1...4, not rule 5 as this is not for an ACP secure channel setup). | through 4, not rule 5 as this is not for an ACP secure channel | |||
The EST server certificate MUST also contain the id-kp-cmcRA | setup). The EST server certificate MUST also contain the id-kp-cmcRA | |||
[RFC6402] extended key usage attribute and the EST client MUST check | extended key usage attribute [RFC6402], and the EST client MUST check | |||
its presence. | its presence. | |||
The additional check against the id-kp-cmcRA extended key usage | The additional check against the id-kp-cmcRA extended key usage | |||
extension field ensures that clients do not fall prey to an illicit | extension field ensures that clients do not fall prey to an illicit | |||
EST server. While such illicit EST servers should not be able to | EST server. While such illicit EST servers should not be able to | |||
support certificate signing requests (as they are not able to elicit | support certificate signing requests (as they are not able to elicit | |||
a signing response from a valid CA), such an illicit EST server would | a signing response from a valid CA), such an illicit EST server would | |||
be able to provide faked CA certificates to EST clients that need to | be able to provide faked CA certificates to EST clients that need to | |||
renew their CA certificates when they expire. | renew their CA certificates when they expire. | |||
Note that EST servers supporting multiple ACP domains will need to | Note that EST servers supporting multiple ACP domains will need to | |||
have for each of these ACP domains a separate certificate and respond | have a separate certificate for each of these ACP domains and respond | |||
on a different transport address (IPv6 address and/or TCP port), but | on a different transport address (IPv6 address and/or TCP port). | |||
this is easily automated on the EST server as long as the CA does not | This is easily automated on the EST server if the CA allows | |||
restrict registrars to request certificates with the id-kp-cmcRA | registrars to request certificates with the id-kp-cmcRA extended | |||
extended usage extension for themselves. | usage extension for themselves. | |||
6.2.5.1. GRASP objective for EST server | ||||
ACP nodes that are EST servers MUST announce their service via GRASP | 6.2.5.1. GRASP Objective for EST Server | |||
in the ACP through M_FLOOD messages. See [I-D.ietf-anima-grasp], | ||||
section 2.8.11 for the definition of this message type: | ||||
Example: | ACP nodes that are EST servers MUST announce their service in the ACP | |||
via GRASP Flood Synchronization (M_FLOOD) messages. See [RFC8990], | ||||
Section 2.8.11 for the definition of this message type and Figure 4 | ||||
for an example. | ||||
[M_FLOOD, 12340815, h'fd89b714f3db0000200000064000001', 210000, | [M_FLOOD, 12340815, h'fd89b714f3db0000200000064000001', 210000, | |||
[["SRV.est", 4, 255 ], | [["SRV.est", 4, 255 ], | |||
[O_IPv6_LOCATOR, | [O_IPv6_LOCATOR, | |||
h'fd89b714f3db0000200000064000001', IPPROTO_TCP, 443]] | h'fd89b714f3db0000200000064000001', IPPROTO_TCP, 443]] | |||
] | ] | |||
Figure 4: GRASP SRV.est example | Figure 4: GRASP "SRV.est" Objective Example | |||
The formal definition of the objective in Concise data definition | The formal definition of the objective in CDDL (see "Concise Data | |||
language (CDDL) (see [RFC8610]) is as follows: | Definition Language (CDDL): A Notational Convention to Express | |||
Concise Binary Object Representation (CBOR) and JSON Data Structures" | ||||
[RFC8610]) is as follows: | ||||
flood-message = [M_FLOOD, session-id, initiator, ttl, | flood-message = [M_FLOOD, session-id, initiator, ttl, | |||
+[objective, (locator-option / [])]] | +[objective, (locator-option / [])]] | |||
; see example above and explanation | ; See example above and explanation | |||
; below for initiator and ttl | ; below for initiator and ttl. | |||
objective = ["SRV.est", objective-flags, loop-count, | objective = ["SRV.est", objective-flags, loop-count, | |||
objective-value] | objective-value] | |||
objective-flags = sync-only ; as in GRASP spec | objective-flags = sync-only ; As in [RFC8990]. | |||
sync-only = 4 ; M_FLOOD only requires synchronization | sync-only = 4 ; M_FLOOD only requires synchronization. | |||
loop-count = 255 ; recommended as there is no mechanism | loop-count = 255 ; Recommended as there is no mechanism | |||
; to discover network diameter. | ; to discover network diameter. | |||
objective-value = any ; reserved for future extensions | objective-value = any ; Reserved for future extensions. | |||
Figure 5: GRASP SRV.est definition | Figure 5: GRASP "SRV.est" Definition | |||
The objective name "SRV.est" indicates that the objective is an | The objective name "SRV.est" indicates that the objective is an EST | |||
[RFC7030] compliant EST server because "est" is an [RFC6335] | server compliant with [RFC7030] because "est" is a registered service | |||
registered service name for [RFC7030]. Objective-value MUST be | name ("Internet Assigned Numbers Authority (IANA) Procedures for the | |||
ignored if present. Backward compatible extensions to [RFC7030] MAY | Management of the Service Name and Transport Protocol Port Number | |||
be indicated through objective-value. Non [RFC7030] compatible | Registry" [RFC6335]) for [RFC7030]. The 'objective-value' field MUST | |||
certificate renewal options MUST use a different objective-name. | be ignored if present. Backward-compatible extensions to [RFC7030] | |||
Non-recognized objective-values (or parts thereof if it is a | MAY be indicated through 'objective-value'. Certificate renewal | |||
structure partially understood) MUST be ignored. | options that are incompatible with [RFC7030] MUST use a different | |||
'objective-name'. Unrecognized 'objective-value' fields (or parts | ||||
thereof if it is a partially understood structure) MUST be ignored. | ||||
The M_FLOOD message MUST be sent periodically. The default SHOULD be | The M_FLOOD message MUST be sent periodically. The default SHOULD be | |||
60 seconds; the value SHOULD be operator configurable but SHOULD be | 60 seconds; the value SHOULD be operator configurable but SHOULD be | |||
not smaller than 60 seconds. The frequency of sending MUST be such | not smaller than 60 seconds. The frequency of sending MUST be such | |||
that the aggregate amount of periodic M_FLOODs from all flooding | that the aggregate amount of periodic M_FLOODs from all flooding | |||
sources cause only negligible traffic across the ACP. The time-to- | sources cause only negligible traffic across the ACP. The time-to- | |||
live (ttl) parameter SHOULD be 3.5 times the period so that up to | live (ttl) parameter SHOULD be 3.5 times the period so that up to | |||
three consecutive messages can be dropped before considering an | three consecutive messages can be dropped before an announcement is | |||
announcement expired. In the example above, the ttl is 210000 msec, | considered expired. In the example above, the ttl is 210000 msec, | |||
3.5 times 60 seconds. When a service announcer using these | that is, 3.5 times 60 seconds. When a service announcer using these | |||
parameters unexpectedly dies immediately after sending the M_FLOOD, | parameters unexpectedly dies immediately after sending the M_FLOOD, | |||
receivers would consider it expired 210 seconds later. When a | receivers would consider it expired 210 seconds later. When a | |||
receiver tries to connect to this dead service before this timeout, | receiver tries to connect to this dead service before this timeout, | |||
it will experience a failing connection and use that as an indication | it will experience a failing connection and use that as an indication | |||
that the service instance is dead and select another instance of the | that the service instance is dead and select another instance of the | |||
same service instead (from another GRASP announcement). | same service instead (from another GRASP announcement). | |||
The "SRV.est" objective(s) SHOULD only be announced when the ACP node | The "SRV.est" objective(s) SHOULD only be announced when the ACP node | |||
knows that it can successfully communicate with a CA to perform the | knows that it can successfully communicate with a CA to perform the | |||
EST renewal/rekeying operations for the ACP domain. See also | EST renewal and/or rekeying operations for the ACP domain. See also | |||
Section 11. | Section 11. | |||
6.2.5.2. Renewal | 6.2.5.2. Renewal | |||
When performing renewal, the node SHOULD attempt to connect to the | When performing renewal, the node SHOULD attempt to connect to the | |||
remembered EST server. If that fails, it SHOULD attempt to connect | remembered EST server. If that fails, it SHOULD attempt to connect | |||
to an EST server learned via GRASP. The server with which | to an EST server learned via GRASP. The server with which | |||
certificate renewal succeeds SHOULD be remembered for the next | certificate renewal succeeds SHOULD be remembered for the next | |||
renewal. | renewal. | |||
Remembering the last renewal server and preferring it provides | Remembering the last renewal server and preferring it provides | |||
stickiness which can help diagnostics. It also provides some | stickiness that can help diagnostics. It also provides some | |||
protection against off-path compromised ACP members announcing bogus | protection against off-path, compromised ACP members announcing bogus | |||
information into GRASP. | information into GRASP. | |||
Renewal of certificates SHOULD start after less than 50% of the | Renewal of certificates SHOULD start after less than 50% of the | |||
domain certificate lifetime so that network operations has ample time | domain certificate lifetime so that network operations have ample | |||
to investigate and resolve any problems that causes a node to not | time to investigate and resolve any problems that cause a node to not | |||
renew its domain certificate in time - and to allow prolonged periods | renew its domain certificate in time, and to allow prolonged periods | |||
of running parts of a network disconnected from any CA. | of running parts of a network disconnected from any CA. | |||
6.2.5.3. Certificate Revocation Lists (CRLs) | 6.2.5.3. Certificate Revocation Lists (CRLs) | |||
The ACP node SHOULD support revocation through CRL(s) via HTTP from | The ACP node SHOULD support revocation through CRL(s) via HTTP from | |||
one or more CRL Distribution Points (CRLDP). The CRLDP(s) MUST be | one or more CRL Distribution Points (CRLDP). The CRLDP(s) MUST be | |||
indicated in the Domain Certificate when used. If the CRLDP URL uses | indicated in the domain certificate when used. If the CRLDP URL uses | |||
an IPv6 address (ULA address when using the addressing rules | an IPv6 address (ULA address when using the addressing rules | |||
specified in this document), the ACP node will connect to the CRLDP | specified in this document), the ACP node will connect to the CRLDP | |||
via the ACP. If the CRLDP uses a domain name, the ACP node will | via the ACP. If the CRLDP uses a domain name, the ACP node will | |||
connect to the CRLDP via the Data-Plane. | connect to the CRLDP via the data plane. | |||
It is common to use domain names for CRLDP(s), but there is no | It is common to use domain names for CRLDP(s), but there is no | |||
requirement for the ACP to support DNS. Any DNS lookup in the Data- | requirement for the ACP to support DNS. Any DNS lookup in the data | |||
Plane is not only a possible security issue, but it would also not | plane is not only a possible security issue, but it would also not | |||
indicate whether the resolved address is meant to be reachable across | indicate whether the resolved address is meant to be reachable across | |||
the ACP. Therefore, the use of an IPv6 address versus the use of a | the ACP. Therefore, the use of an IPv6 address versus the use of a | |||
DNS name doubles as an indicator whether or not to reach the CRLDP | DNS name doubles as an indicator whether or not to reach the CRLDP | |||
via the ACP. | via the ACP. | |||
A CRLDP can be reachable across the ACP either by running it on a | A CRLDP can be reachable across the ACP either by running it on a | |||
node with ACP or by connecting its node via an ACP connect interface | node with ACP or by connecting its node via an ACP connect interface | |||
(see Section 8.1). | (see Section 8.1). | |||
When using a private PKI for ACP certificates, the CRL may be need- | When using a private PKI for ACP certificates, the CRL may be need- | |||
to-know, for example to prohibit insight into the operational | to-know, for example, to prohibit insight into the operational | |||
practices of the domain by tracking the growth of the CRL. In this | practices of the domain by tracking the growth of the CRL. In this | |||
case, HTTPS may be chosen to provide confidentiality, especially when | case, HTTPS may be chosen to provide confidentiality, especially when | |||
making the CRL available via the Data-Plane. Authentication and | making the CRL available via the data plane. Authentication and | |||
authorization SHOULD use ACP certificates and ACP domain membership | authorization SHOULD use ACP certificates and the ACP domain | |||
check. The CRLDP MAY omit the CRL verification during authentication | membership check (Section 6.2.3). The CRLDP MAY omit the CRL | |||
of the peer to permit retrieval of the CRL by an ACP node with | verification during authentication of the peer to permit CRL | |||
revoked ACP certificate. This can allow for that (ex) ACP node to | retrieval by an ACP node with a revoked ACP certificate, which can | |||
quickly discover its ACP certificate revocation. This may violate | allow the (ex) ACP node to quickly discover its ACP certificate | |||
the desired need-to-know requirement though. ACP nodes MAY support | revocation. This may violate the desired need-to-know requirement, | |||
CRLDP operations via HTTPS. | though. ACP nodes MAY support CRLDP operations via HTTPS. | |||
6.2.5.4. Lifetimes | 6.2.5.4. Lifetimes | |||
Certificate lifetime may be set to shorter lifetimes than customary | The certificate lifetime may be set to shorter lifetimes than | |||
(1 year) because certificate renewal is fully automated via ACP and | customary (one year) because certificate renewal is fully automated | |||
EST. The primary limiting factor for shorter certificate lifetimes | via ACP and EST. The primary limiting factor for shorter certificate | |||
is load on the EST server(s) and CA. It is therefore recommended | lifetimes is the load on the EST server(s) and CA. It is therefore | |||
that ACP certificates are managed via a CA chain where the assigning | recommended that ACP certificates are managed via a CA chain where | |||
CA has enough performance to manage short lived certificates. See | the assigning CA has enough performance to manage short-lived | |||
also Section 9.2.4 for discussion about an example setup achieving | certificates. See also Section 9.2.4 for a discussion about an | |||
this. See also [I-D.ietf-acme-star]. | example setup achieving this. See also "Support for Short-Term, | |||
Automatically Renewed (STAR) Certificates in the Automated | ||||
Certificate Management Environment (ACME)" [RFC8739]. | ||||
When certificate lifetimes are sufficiently short, such as few hours, | When certificate lifetimes are sufficiently short, such as few hours, | |||
certificate revocation may not be necessary, allowing to simplify the | certificate revocation may not be necessary, allowing the | |||
overall certificate maintenance infrastructure. | simplification of the overall certificate maintenance infrastructure. | |||
See Appendix A.2 for further optimizations of certificate maintenance | See Appendix A.2 for further optimizations of certificate maintenance | |||
when BRSKI can be used ("Bootstrapping Remote Secure Key | when BRSKI can be used [RFC8995]. | |||
Infrastructures", see [I-D.ietf-anima-bootstrapping-keyinfra]). | ||||
6.2.5.5. Re-enrollment | 6.2.5.5. Reenrollment | |||
An ACP node may determine that its ACP certificate has expired, for | An ACP node may determine that its ACP certificate has expired, for | |||
example because the ACP node was powered down or disconnected longer | example, because the ACP node was powered down or disconnected longer | |||
than its certificate lifetime. In this case, the ACP node SHOULD | than its certificate lifetime. In this case, the ACP node SHOULD | |||
convert to a role of a re-enrolling candidate ACP node. | convert to a role of a reenrolling candidate ACP node. | |||
In this role, the node does maintain the TA and certificate chain | In this role, the node maintains the TA and certificate chain | |||
associated with its ACP certificate exclusively for the purpose of | associated with its ACP certificate exclusively for the purpose of | |||
re-enrollment, and attempts (or waits) to get re-enrolled with a new | reenrollment, and it attempts (or waits) to get reenrolled with a new | |||
ACP certificate. The details depend on the mechanisms/protocols used | ACP certificate. The details depend on the mechanisms and protocols | |||
by the ACP Registrars. | used by the ACP registrars. | |||
Please refer to Section 6.11.7 and | Please refer to Section 6.11.7 and [RFC8995] for explanations about | |||
[I-D.ietf-anima-bootstrapping-keyinfra] for explanations about ACP | ACP registrars and vouchers as used in the following text. When ACP | |||
Registrars and vouchers as used in the following text. When ACP is | is intended to be used without BRSKI, the details about BRSKI and | |||
intended to be used without BRSKI, the details about BRSKI and | ||||
vouchers in the following text can be skipped. | vouchers in the following text can be skipped. | |||
When BRSKI is used (i.e.: on ACP nodes that are ANI nodes), the re- | When BRSKI is used (i.e., on ACP nodes that are ANI nodes), the | |||
enrolling candidate ACP node would attempt to enroll like a candidate | reenrolling candidate ACP node attempts to enroll like a candidate | |||
ACP node (BRSKI pledge), but instead of using the ACP nodes IDevID | ACP node (BRSKI pledge), but instead of using the ACP node's IDevID | |||
certificate, it SHOULD first attempt to use its ACP domain | certificate, it SHOULD first attempt to use its ACP domain | |||
certificate in the BRSKI TLS authentication. The BRSKI registrar MAY | certificate in the BRSKI TLS authentication. The BRSKI registrar MAY | |||
honor this certificate beyond its expiration date purely for the | honor this certificate beyond its expiration date purely for the | |||
purpose of re-enrollment. Using the ACP node's domain certificate | purpose of reenrollment. Using the ACP node's domain certificate | |||
allows the BRSKI registrar to learn that node's acp-node-name, so | allows the BRSKI registrar to learn that node's acp-node-name so that | |||
that the BRSKI registrar can re-assign the same ACP address | the BRSKI registrar can reassign the same ACP address information to | |||
information to the ACP node in the new ACP certificate. | the ACP node in the new ACP certificate. | |||
If the BRSKI registrar denies the use of the old ACP certificate, the | If the BRSKI registrar denies the use of the old ACP certificate, the | |||
re-enrolling candidate ACP node MUST re-attempt re-enrollment using | reenrolling candidate ACP node MUST reattempt reenrollment using its | |||
its IDevID certificate as defined in BRSKI during the TLS connection | IDevID certificate as defined in BRSKI during the TLS connection | |||
setup. | setup. | |||
Both when the BRSKI connection is attempted with the old ACP | When the BRSKI connection is attempted with either with the old ACP | |||
certificate or the IDevID certificate, the re-enrolling candidate ACP | certificate or the IDevID certificate, the reenrolling candidate ACP | |||
node SHOULD authenticate the BRSKI registrar during TLS connection | node SHOULD authenticate the BRSKI registrar during TLS connection | |||
setup based on its existing TA certificate chain information | setup based on its existing TA certificate chain information | |||
associated with its old ACP certificate. The re-enrolling candidate | associated with its old ACP certificate. The reenrolling candidate | |||
ACP node SHOULD only fall back to requesting a voucher from the BRSKI | ACP node SHOULD only fall back to requesting a voucher from the BRSKI | |||
registrar when this authentication fails during TLS connection setup. | registrar when this authentication fails during TLS connection setup. | |||
As a countermeasure against attacks that attempt to force the ACP | As a countermeasure against attacks that attempt to force the ACP | |||
node to forget its prior (expired) certificate and TA, the ACP node | node to forget its prior (expired) certificate and TA, the ACP node | |||
should alternate between attempting to re-enroll using its old keying | should alternate between attempting to reenroll using its old keying | |||
material and attempting to re-enroll with its IDevID and requesting a | material and attempting to reenroll with its IDevID and requesting a | |||
voucher. | voucher. | |||
When other mechanisms than BRSKI are used for ACP certificate | When mechanisms other than BRSKI are used for ACP certificate | |||
enrollment, the principles of the re-enrolling candidate ACP node are | enrollment, the principles of the reenrolling candidate ACP node are | |||
the same. The re-enrolling candidate ACP node attempts to | the same. The reenrolling candidate ACP node attempts to | |||
authenticate any ACP Registrar peers during re-enrollment protocol/ | authenticate any ACP registrar peers using reenrollment protocols | |||
mechanisms via its existing certificate chain/TA information and | and/or mechanisms via its existing certificate chain and/or TA | |||
provides its existing ACP certificate and other identification (such | information and provides its existing ACP certificate and other | |||
as the IDevID certificate) as necessary to the registrar. | identification (such as the IDevID certificate) as necessary to the | |||
registrar. | ||||
Maintaining existing TA information is especially important when | Maintaining existing TA information is especially important when | |||
enrollment mechanisms are used that unlike BRSKI do not leverage a | using enrollment mechanisms that do not leverage a mechanism to | |||
mechanism (such as the voucher in BRSKI) to authenticate the ACP | authenticate the ACP registrar (such as the voucher in BRSKI), and | |||
registrar and where therefore the injection of certificate failures | when the injection of certificate failures could otherwise make the | |||
could otherwise make the ACP node easily attackable remotely by | ACP vulnerable to remote attacks by returning the ACP node to a | |||
returning the ACP node to a "duckling" state in which it accepts to | "duckling" state in which it accepts enrollment by any network it | |||
be enrolled by any network it connects to. The (expired) ACP | connects to. The (expired) ACP certificate and ACP TA SHOULD | |||
certificate and ACP TA SHOULD therefore be maintained and attempted | therefore be maintained and attempted to be used as one possible | |||
to be used as one possible credential for re-enrollment until new | credential for reenrollment until new keying material is acquired. | |||
keying material is acquired. | ||||
When using BRSKI or other protocol/mechanisms supporting vouchers, | When using BRSKI or other protocols and/or mechanisms that support | |||
maintaining existing TA information allows for re-enrollment of | vouchers, maintaining existing TA information allows for lighter- | |||
expired ACP certificates to be more lightweight, especially in | weight reenrollment of expired ACP certificates, especially in | |||
environments where repeated acquisition of vouchers during the | environments where repeated acquisition of vouchers during the | |||
lifetime of ACP nodes may be operationally expensive or otherwise | lifetime of ACP nodes may be operationally expensive or otherwise | |||
undesirable. | undesirable. | |||
6.2.5.6. Failing Certificates | 6.2.5.6. Failing Certificates | |||
An ACP certificate is called failing in this document, if/when the | An ACP certificate is called failing in this document if or when the | |||
ACP node to which the certificate was issued can determine that it | ACP node to which the certificate was issued can determine that it | |||
was revoked (or explicitly not renewed), or in the absence of such | was revoked (or explicitly not renewed), or in the absence of such | |||
explicit local diagnostics, when the ACP node fails to connect to | explicit local diagnostics, when the ACP node fails to connect to | |||
other ACP nodes in the same ACP domain using its ACP certificate. | other ACP nodes in the same ACP domain using its ACP certificate. To | |||
For connection failures to determine the ACP certificate as the | determine that the ACP certificate is the culprit of a connection | |||
culprit, the peer should pass the domain membership check | failure, the peer should pass the domain membership check | |||
(Section 6.2.3) and other reasons for the connection failure can be | (Section 6.2.3), and connection error diagnostics should exclude | |||
excluded because of the connection error diagnostics. | other reasons for the connection failure. | |||
This type of failure can happen during setup/refresh of a secure ACP | This type of failure can happen during the setup or refreshment of a | |||
channel connections or any other use of the ACP certificate, such as | secure ACP channel connection or during any other use of the ACP | |||
for the TLS connection to an EST server for the renewal of the ACP | certificate, such as for the TLS connection to an EST server for the | |||
domain certificate. | renewal of the ACP domain certificate. | |||
Example reasons for failing certificates that the ACP node can only | The following are examples of failing certificates that the ACP node | |||
discover through connection failure are that the domain certificate | can only discover through connection failure: the domain certificate | |||
or any of its signing certificates could have been revoked or may | or any of its signing certificates could have been revoked or may | |||
have expired, but the ACP node cannot self-diagnose this condition | have expired, but the ACP node cannot diagnose this condition | |||
directly. Revocation information or clock synchronization may only | directly by itself. Revocation information or clock synchronization | |||
be available across the ACP, but the ACP node cannot build ACP secure | may only be available across the ACP, but the ACP node cannot build | |||
channels because ACP peers reject the ACP node's domain certificate. | ACP secure channels because the ACP peers reject the ACP node's | |||
domain certificate. | ||||
ACP nodes SHOULD support the option to determines whether its ACP | An ACP node SHOULD support the option to determine whether its ACP | |||
certificate is failing, and when it does, put itself into the role of | certificate is failing, and when it does, put itself into the role of | |||
a re-enrolling candidate ACP node as explained above | a reenrolling candidate ACP node as explained in Section 6.2.5.5. | |||
(Section 6.2.5.5). | ||||
6.3. ACP Adjacency Table | 6.3. ACP Adjacency Table | |||
To know to which nodes to establish an ACP channel, every ACP node | To know to which nodes to establish an ACP channel, every ACP node | |||
maintains an adjacency table. The adjacency table contains | maintains an adjacency table. The adjacency table contains | |||
information about adjacent ACP nodes, at a minimum: Node-ID | information about adjacent ACP nodes, at a minimum: Node-ID (the | |||
(identifier of the node inside the ACP, see Section 6.11.3 and | identifier of the node inside the ACP, see Section 6.11.3 and | |||
Section 6.11.5), interface on which neighbor was discovered (by GRASP | Section 6.11.5), the interface on which neighbor was discovered (by | |||
as explained below), link-local IPv6 address of neighbor on that | GRASP as explained below), the link-local IPv6 address of the | |||
interface, certificate (including acp-node-name). An ACP node MUST | neighbor on that interface, and the certificate (including acp-node- | |||
maintain this adjacency table. This table is used to determine to | name). An ACP node MUST maintain this adjacency table. This table | |||
which neighbor an ACP connection is established. | is used to determine to which neighbor an ACP connection is | |||
established. | ||||
Where the next ACP node is not directly adjacent (i.e., not on a link | When the next ACP node is not directly adjacent (i.e., not on a link | |||
connected to this node), the information in the adjacency table can | connected to this node), the information in the adjacency table can | |||
be supplemented by configuration. For example, the Node-ID and IP | be supplemented by configuration. For example, the Node-ID and IP | |||
address could be configured. See Section 8.2. | address could be configured. See Section 8.2. | |||
The adjacency table MAY contain information about the validity and | The adjacency table MAY contain information about the validity and | |||
trust of the adjacent ACP node's certificate. However, subsequent | trust of the adjacent ACP node's certificate. However, subsequent | |||
steps MUST always start with the ACP domain membership check against | steps MUST always start with the ACP domain membership check against | |||
the peer (see Section 6.2.3). | the peer (see Section 6.2.3). | |||
The adjacency table contains information about adjacent ACP nodes in | The adjacency table contains information about adjacent ACP nodes in | |||
general, independently of their domain and trust status. The next | general, independent of their domain and trust status. The next step | |||
step determines to which of those ACP nodes an ACP connection should | determines to which of those ACP nodes an ACP connection should be | |||
be established. | established. | |||
6.4. Neighbor Discovery with DULL GRASP | 6.4. Neighbor Discovery with DULL GRASP | |||
[RFC-Editor: GRASP draft is in RFC editor queue, waiting for | ||||
dependencies, including ACP. Please ensure that references to I- | ||||
D.ietf-anima-grasp that include section number references (throughout | ||||
this document) will be updated in case any last-minute changes in | ||||
GRASP would make those section references change. | ||||
Discovery Unsolicited Link-Local (DULL) GRASP is a limited subset of | Discovery Unsolicited Link-Local (DULL) GRASP is a limited subset of | |||
GRASP intended to operate across an insecure link-local scope. See | GRASP intended to operate across an insecure link-local scope. See | |||
section 2.5.2 of [I-D.ietf-anima-grasp] for its formal definition. | Section 2.5.2 of [RFC8990] for its formal definition. The ACP uses | |||
The ACP uses one instance of DULL GRASP for every L2 interface of the | one instance of DULL GRASP for every L2 interface of the ACP node to | |||
ACP node to discover link level adjacent candidate ACP neighbors. | discover candidate ACP neighbors that are link-level adjacent. | |||
Unless modified by policy as noted earlier (Section 5 bullet point | Unless modified by policy as noted earlier (Section 5, bullet point | |||
2.), native interfaces (e.g., physical interfaces on physical nodes) | 2), native interfaces (e.g., physical interfaces on physical nodes) | |||
SHOULD be initialized automatically to a state in which ACP discovery | SHOULD be initialized automatically to a state in which ACP discovery | |||
can be performed and any native interfaces with ACP neighbors can | can be performed, and any native interfaces with ACP neighbors can | |||
then be brought into the ACP even if the interface is otherwise not | then be brought into the ACP even if the interface is otherwise | |||
configured. Reception of packets on such otherwise not configured | unconfigured. Reception of packets on such otherwise unconfigured | |||
interfaces MUST be limited so that at first only IPv6 StateLess | interfaces MUST be limited so that at first only SLAAC ("IPv6 | |||
Address Auto Configuration (SLAAC - [RFC4862]) and DULL GRASP work | Stateless Address Autoconfiguration" [RFC4862]) and DULL GRASP work, | |||
and then only the following ACP secure channel setup packets - but | and then only the following ACP secure channel setup packets work, | |||
not any other unnecessary traffic (e.g., no other link-local IPv6 | but not any other unnecessary traffic (e.g., no other link-local IPv6 | |||
transport stack responders for example). | transport stack responders, for example). | |||
Note that the use of the IPv6 link-local multicast address | Note that the use of the IPv6 link-local multicast address | |||
(ALL_GRASP_NEIGHBORS) implies the need to use Multicast Listener | (ALL_GRASP_NEIGHBORS) implies the need to use MLDv2 (see "Multicast | |||
Discovery Version 2 (MLDv2, see [RFC3810]) to announce the desire to | Listener Discovery Version 2 (MLDv2) for IPv6" [RFC3810]) to announce | |||
receive packets for that address. Otherwise DULL GRASP could fail to | the desire to receive packets for that address. Otherwise, DULL | |||
operate correctly in the presence of MLD snooping ([RFC4541]) | GRASP could fail to operate correctly in the presence of MLD-snooping | |||
switches that are not ACP supporting/enabled - because those switches | switches ("Considerations for Internet Group Management Protocol | |||
would stop forwarding DULL GRASP packets. Switches not supporting | (IGMP) and Multicast Listener Discovery (MLD) Snooping Switches" | |||
MLD snooping simply need to operate as pure L2 bridges for IPv6 | [RFC4541]) that either do not support ACP or are not ACP enabled | |||
multicast packets for DULL GRASP to work. | because those switches would stop forwarding DULL GRASP packets. | |||
Switches that do not support MLD snooping simply need to operate as | ||||
pure L2 bridges for IPv6 multicast packets for DULL GRASP to work. | ||||
ACP discovery SHOULD NOT be enabled by default on non-native | ACP discovery SHOULD NOT be enabled by default on non-native | |||
interfaces. In particular, ACP discovery MUST NOT run inside the ACP | interfaces. In particular, ACP discovery MUST NOT run inside the ACP | |||
across ACP virtual interfaces. See Section 9.3 for further, non- | across ACP virtual interfaces. See Section 9.3 for further non- | |||
normative suggestions on how to enable/disable ACP at node and | normative suggestions on how to enable and disable ACP at the node | |||
interface level. See Section 8.2.2 for more details about tunnels | and interface level. See Section 8.2.2 for more details about | |||
(typical non-native interfaces). See Section 7 for how ACP should be | tunnels (typical non-native interfaces). See Section 7 for extending | |||
extended on devices operating (also) as L2 bridges. | ACP on devices operating (also) as L2 bridges. | |||
Note: If an ACP node also implements BRSKI to enroll its ACP | Note: if an ACP node also implements BRSKI to enroll its ACP | |||
certificate (see Appendix A.2 for a summary), then the above | certificate (see Appendix A.2 for a summary), then the above | |||
considerations also apply to GRASP discovery for BRSKI. Each DULL | considerations also apply to GRASP discovery for BRSKI. Each DULL | |||
instance of GRASP set up for ACP is then also used for the discovery | instance of GRASP set up for ACP is then also used for the discovery | |||
of a bootstrap proxy via BRSKI when the node does not have a domain | of a bootstrap proxy via BRSKI when the node does not have a domain | |||
certificate. Discovery of ACP neighbors happens only when the node | certificate. Discovery of ACP neighbors happens only when the node | |||
does have the certificate. The node therefore never needs to | does have the certificate. The node therefore never needs to | |||
discover both a bootstrap proxy and ACP neighbor at the same time. | discover both a bootstrap proxy and an ACP neighbor at the same time. | |||
An ACP node announces itself to potential ACP peers by use of the | An ACP node announces itself to potential ACP peers by use of the | |||
"AN_ACP" objective. This is a synchronization objective intended to | "AN_ACP" objective. This is a synchronization objective intended to | |||
be flooded on a single link using the GRASP Flood Synchronization | be flooded on a single link using the GRASP Flood Synchronization | |||
(M_FLOOD) message. In accordance with the design of the Flood | (M_FLOOD) message. In accordance with the design of the Flood | |||
message, a locator consisting of a specific link-local IP address, IP | Synchronization message, a locator consisting of a specific link- | |||
protocol number and port number will be distributed with the flooded | local IP address, IP protocol number, and port number will be | |||
objective. An example of the message is informally: | distributed with the flooded objective. An example of the message is | |||
informally: | ||||
[M_FLOOD, 12340815, h'fe80000000000000c0011001feef0000', 210000, | [M_FLOOD, 12340815, h'fe80000000000000c0011001feef0000', 210000, | |||
[["AN_ACP", 4, 1, "IKEv2" ], | [["AN_ACP", 4, 1, "IKEv2" ], | |||
[O_IPv6_LOCATOR, | [O_IPv6_LOCATOR, | |||
h'fe80000000000000c0011001feef0000', IPPROTO_UDP, 15000]] | h'fe80000000000000c0011001feef0000', IPPROTO_UDP, 15000]] | |||
[["AN_ACP", 4, 1, "DTLS" ], | [["AN_ACP", 4, 1, "DTLS" ], | |||
[O_IPv6_LOCATOR, | [O_IPv6_LOCATOR, | |||
h'fe80000000000000c0011001feef0000', IPPROTO_UDP, 17000]] | h'fe80000000000000c0011001feef0000', IPPROTO_UDP, 17000]] | |||
] | ] | |||
Figure 6: GRASP AN_ACP example | ||||
Figure 6: GRASP "AN_ACP" Objective Example | ||||
The formal CDDL definition is: | The formal CDDL definition is: | |||
flood-message = [M_FLOOD, session-id, initiator, ttl, | flood-message = [M_FLOOD, session-id, initiator, ttl, | |||
+[objective, (locator-option / [])]] | +[objective, (locator-option / [])]] | |||
objective = ["AN_ACP", objective-flags, loop-count, | objective = ["AN_ACP", objective-flags, loop-count, | |||
objective-value] | objective-value] | |||
objective-flags = sync-only ; as in the GRASP specification | objective-flags = sync-only ; as in [RFC8990] | |||
sync-only = 4 ; M_FLOOD only requires synchronization | sync-only = 4 ; M_FLOOD only requires synchronization | |||
loop-count = 1 ; limit to link-local operation | loop-count = 1 ; limit to link-local operation | |||
objective-value = method-name / [ method, *extension ] | objective-value = method-name / [ method, *extension ] | |||
method = method-name / [ method-name, *method-param ] | method = method-name / [ method-name, *method-param ] | |||
method-name = "IKEv2" / "DTLS" / id | method-name = "IKEv2" / "DTLS" / id | |||
extension = any | extension = any | |||
method-param = any | method-param = any | |||
id = text .regexp "[A-Za-z@_$]([-.]*[A-Za-z0-9@_$])*" | id = text .regexp "[A-Za-z@_$]([-.]*[A-Za-z0-9@_$])*" | |||
Figure 7: GRASP AN_ACP definition | Figure 7: GRASP "AN_ACP" Definition | |||
The objective-flags field is set to indicate synchronization. | The 'objective-flags' field is set to indicate synchronization. | |||
The loop-count is fixed at 1 since this is a link-local operation. | The 'loop-count' is fixed at 1 since this is a link-local operation. | |||
In the above example the RECOMMENDED period of sending of the | In the above example, the RECOMMENDED period of sending of the | |||
objective is 60 seconds. The indicated ttl of 210000 msec means that | objective is 60 seconds. The indicated 'ttl' of 210000 msec means | |||
the objective would be cached by ACP nodes even when two out of three | that the objective would be cached by ACP nodes even when two out of | |||
messages are dropped in transit. | three messages are dropped in transit. | |||
The session-id is a random number used for loop prevention | The 'session-id' is a random number used for loop prevention | |||
(distinguishing a message from a prior instance of the same message). | (distinguishing a message from a prior instance of the same message). | |||
In DULL this field is irrelevant but has to be set according to the | In DULL this field is irrelevant but has to be set according to the | |||
GRASP specification. | GRASP specification. | |||
The originator MUST be the IPv6 link local address of the originating | The originator MUST be the IPv6 link-local address of the originating | |||
ACP node on the sending interface. | ACP node on the sending interface. | |||
The method-name in the 'objective-value' parameter is a string | The 'method-name' in the 'objective-value' parameter is a string | |||
indicating the protocol available at the specified or implied | indicating the protocol available at the specified or implied | |||
locator. It is a protocol supported by the node to negotiate a | locator. It is a protocol supported by the node to negotiate a | |||
secure channel. IKEv2 as shown above is the protocol used to | secure channel. "IKEv2" as shown in Figure 6 is the protocol used to | |||
negotiate an IPsec secure channel. | negotiate an IPsec secure channel. | |||
Method-params allows to carry method specific parameters. This | The 'method-param' parameter allows method-specific parameters to be | |||
specification does not define any method-param(s) for "IKEv2" or | carried. This specification does not define any 'method-param'(s) | |||
"DTLS". Method-params for these two methods that are not understood | for "IKEv2" or "DTLS". Any method-params for these two methods that | |||
by an ACP node MUST be ignored by it. | are not understood by an ACP node MUST be ignored by it. | |||
extension(s) allows to define method independent parameters. This | The 'extension' parameter allows the definition of method-independent | |||
specification does not define any extensions. Extensions not | parameters. This specification does not define any extensions. | |||
understood by an ACP node MUST be ignored by it. | Extensions not understood by an ACP node MUST be ignored by it. | |||
The locator-option is optional and only required when the secure | The 'locator-option' is optional and is only required when the secure | |||
channel protocol is not offered at a well-defined port number, or if | channel protocol is not offered at a well-defined port number, or if | |||
there is no well-defined port number. | there is no well-defined port number. | |||
IKEv2 is the actual protocol used to negotiate an Internet Protocol | IKEv2 is the actual protocol used to negotiate an IPsec connection. | |||
security architecture (IPsec) connection. GRASP therefore indicates | GRASP therefore indicates "IKEv2" and not "IPsec". If "IPsec" was | |||
"IKEv2" and not "IPsec". If "IPsec" was used, this too could mean | used, this could mean the use of the obsolete, older version IKE (v1) | |||
use of the obsolete older version IKE (v1) ([RFC2409]). IKEv2 has an | ("The Internet Key Exchange (IKE)" [RFC2409]). IKEv2 has an IANA- | |||
IANA assigned port number 500, but in the above example, the | assigned port number 500, but in Figure 6, the candidate ACP neighbor | |||
candidate ACP neighbor is offering ACP secure channel negotiation via | is offering ACP secure channel negotiation via IKEv2 on port 15000 | |||
IKEv2 on port 15000 (purely to show through the example that GRASP | (purely to show through the example that GRASP allows the indication | |||
allows to indicate the port number and it does not have to be the | of a port number, and it does not have to be IANA assigned). | |||
IANA assigned one). | ||||
There is no default UDP port for DTLS, it is always locally assigned | There is no default UDP port for DTLS, it is always locally assigned | |||
by the node. For further details about the "DTLS" secure channel | by the node. For further details about the "DTLS" secure channel | |||
protocol, see Section 6.8.4. | protocol, see Section 6.8.4. | |||
If a locator is included, it MUST be an O_IPv6_LOCATOR, and the IPv6 | If a locator is included, it MUST be an O_IPv6_LOCATOR, and the IPv6 | |||
address MUST be the same as the initiator address (these are DULL | address MUST be the same as the initiator address (these are DULL | |||
requirements to minimize third party DoS attacks). | requirements to minimize third-party DoS attacks). | |||
The secure channel methods defined in this document use the | The secure channel methods defined in this document use "IKEv2" and | |||
objective-values of "IKEv2" and "DTLS". There is no distinction | "DTLS" for 'objective-value'. There is no distinction between IKEv2 | |||
between IKEv2 native and GRE-IKEv2 because this is purely negotiated | native and GRE-IKEv2 because this is purely negotiated via IKEv2. | |||
via IKEv2. | ||||
A node that supports more than one secure channel protocol method | A node that supports more than one secure channel protocol method | |||
needs to flood multiple versions of the "AN_ACP" objective so that | needs to flood multiple versions of the "AN_ACP" objective so that | |||
each method can be accompanied by its own locator-option. This can | each method can be accompanied by its own 'locator-option'. This can | |||
use a single GRASP M_FLOOD message as shown in Figure 6. | use a single GRASP M_FLOOD message as shown in Figure 6. | |||
The use of DULL GRASP primarily serves to discover the link-local | The primary use of DULL GRASP is to discover the link-local IPv6 | |||
IPv6 address of candidate ACP peers on subnets. The signaling of the | address of candidate ACP peers on subnets. The signaling of the | |||
supported secure channel option is primarily for diagnostic purposes, | supported secure channel option is primarily for diagnostic purposes, | |||
but it is also necessary for discovery when the protocol has no well- | but it is also necessary for discovery when the protocol has no well- | |||
known transport address, such as in the case of DTLS. [RFC-Editor: | known transport address, such as in the case of DTLS. | |||
Please remove the following sentence]. See [ACPDRAFT], Appendix B.4. | ||||
Note that a node serving both as an ACP node and BRSKI Join Proxy may | Note that a node serving both as an ACP node and BRSKI Join Proxy may | |||
choose to distribute the "AN_ACP" objective and the respective BRSKI | choose to distribute the "AN_ACP" objective and the respective BRSKI | |||
in the same M_FLOOD message, since GRASP allows multiple objectives | in the same M_FLOOD message, since GRASP allows multiple objectives | |||
in one message. This may be impractical though if ACP and BRSKI | in one message. This may be impractical, though, if ACP and BRSKI | |||
operations are implemented via separate software modules / ASAs. | operations are implemented via separate software modules and/or ASAs. | |||
The result of the discovery is the IPv6 link-local address of the | The result of the discovery is the IPv6 link-local address of the | |||
neighbor as well as its supported secure channel protocols (and non- | neighbor as well as its supported secure channel protocols (and the | |||
standard port they are running on). It is stored in the ACP | non-standard port they are running on). It is stored in the ACP | |||
Adjacency Table (see Section 6.3), which then drives the further | adjacency table (see Section 6.3), which then drives the further | |||
building of the ACP to that neighbor. | building of the ACP to that neighbor. | |||
Note that the DULL GRASP objective described intentionally does not | Note that the described DULL GRASP objective intentionally does not | |||
include the ACP node's ACP certificate even though this would be | include the ACP node's ACP certificate, even though this would be | |||
useful for diagnostics and to simplify the security exchange in ACP | useful for diagnostics and to simplify the security exchange in ACP | |||
secure channel security association protocols (see Section 6.8). The | secure channel security association protocols (see Section 6.8). The | |||
reason is that DULL GRASP messages are periodically multicasted | reason is that DULL GRASP messages are periodically multicast across | |||
across IPv6 subnets and full certificates could easily lead to | IPv6 subnets, and full certificates could easily lead to fragmented | |||
fragmented IPv6 DULL GRASP multicast packets due to the size of a | IPv6 DULL GRASP multicast packets due to the size of a certificate. | |||
certificate. This would be highly undesirable. | This would be highly undesirable. | |||
6.5. Candidate ACP Neighbor Selection | 6.5. Candidate ACP Neighbor Selection | |||
An ACP node determines to which other ACP nodes in the adjacency | An ACP node determines to which other ACP nodes in the adjacency | |||
table it should attempt to build an ACP connection. This is based on | table it should attempt to build an ACP connection. This is based on | |||
the information in the ACP Adjacency table. | the information in the ACP adjacency table. | |||
The ACP is established exclusively between nodes in the same domain. | The ACP is established exclusively between nodes in the same domain. | |||
This includes all routing subdomains. Appendix A.6 explains how ACP | This includes all routing subdomains. Appendix A.6 explains how ACP | |||
connections across multiple routing subdomains are special. | connections across multiple routing subdomains are special. | |||
The result of the candidate ACP neighbor selection process is a list | The result of the candidate ACP neighbor selection process is a list | |||
of adjacent or configured autonomic neighbors to which an ACP channel | of adjacent or configured autonomic neighbors to which an ACP channel | |||
should be established. The next step begins that channel | should be established. The next step begins that channel | |||
establishment. | establishment. | |||
6.6. Channel Selection | 6.6. Channel Selection | |||
To avoid attacks, initial discovery of candidate ACP peers cannot | To avoid attacks, the initial discovery of candidate ACP peers cannot | |||
include any non-protected negotiation. To avoid re-inventing and | include any unprotected negotiation. To avoid reinventing and | |||
validating security association mechanisms, the next step after | validating security association mechanisms, the next step after | |||
discovering the address of a candidate neighbor can only be to try | discovering the address of a candidate neighbor is to establish a | |||
first to establish a security association with that neighbor using a | security association with that neighbor using a well-known security | |||
well-known security association method. | association method. | |||
From the use-cases it seems clear that not all type of ACP nodes can | It seems clear from the use cases that not all types of ACP nodes can | |||
or need to connect directly to each other or are able to support or | or need to connect directly to each other, nor are they able to | |||
prefer all possible mechanisms. For example, code space limited IoT | support or prefer all possible mechanisms. For example, IoT devices | |||
devices may only support DTLS because that code exists already on | that are codespace limited may only support DTLS because that code | |||
them for end-to-end security, but low-end in-ceiling L2 switches may | exists already on them for end-to-end security, but low-end, in- | |||
only want to support Media Access Control Security (MacSec, see | ceiling L2 switches may only want to support Media Access Control | |||
802.1AE ([MACSEC]) because that is also supported in their chips. | Security (MacSec, see 802.1AE [MACSEC]) because that is also | |||
Only a flexible gateway device may need to support both of these | supported in their chips. Only a flexible gateway device may need to | |||
mechanisms and potentially more. Note that MacSec is not required by | support both of these mechanisms and potentially more. Note that | |||
any profiles of the ACP in this specification. Instead, MacSec is | MacSec is not required by any profiles of the ACP in this | |||
mentioned as a likely next interesting secure channel protocol. Note | specification. Instead, MacSec is mentioned as an interesting | |||
also that the security model allows and requires for any-to-any | potential secure channel protocol. Note also that the security model | |||
authentication and authorization between all ACP nodes because there | allows and requires any-to-any authentication and authorization | |||
is also end-to-end and not only hop-by-hop authentication for secure | between all ACP nodes because there is not only hop-by-hop but also | |||
channels. | end-to-end authentication for secure channels. | |||
To support extensible secure channel protocol selection without a | To support extensible selection of the secure channel protocol | |||
single common mandatory to implement (MTI) protocol, ACP nodes MUST | without a single common mandatory-to-implement (MTI) protocol, an ACP | |||
try all the ACP secure channel protocols it supports and that are | node MUST try all the ACP secure channel protocols it supports and | |||
feasible because the candidate ACP neighbor also announced them via | that are also announced by the candidate ACP neighbor via its | |||
its AN_ACP GRASP parameters (these are called the "feasible" ACP | "AN_ACP" GRASP parameters (these are called the "feasible" ACP secure | |||
secure channel protocols). | channel protocols). | |||
To ensure that the selection of the secure channel protocols always | To ensure that the selection of the secure channel protocols always | |||
succeeds in a predictable fashion without blocking, the following | succeeds in a predictable fashion without blocking, the following | |||
rules apply: | rules apply: | |||
* An ACP node may choose to attempt to initiate the different | * An ACP node may choose to attempt to initiate the different | |||
feasible ACP secure channel protocols it supports according to its | feasible ACP secure channel protocols it supports according to its | |||
local policies sequentially or in parallel, but it MUST support | local policies sequentially or in parallel, but it MUST support | |||
acting as a responder to all of them in parallel. | acting as a responder to all of them in parallel. | |||
* Once the first ACP secure channel protocol connection to a | * Once the first ACP secure channel protocol connection to a | |||
specific peer IPv6 address passes peer authentication, the two | specific peer IPv6 address passes peer authentication, the two | |||
peers know each other's certificate because those ACP certificates | peers know each other's certificate because those ACP certificates | |||
are used by all secure channel protocols for mutual | are used by all secure channel protocols for mutual | |||
authentication. The peer with the higher Node-ID in the | authentication. The peer with the higher Node-ID in the | |||
AcpNodeName of its ACP certificate takes on the role of the | AcpNodeName of its ACP certificate takes on the role of the | |||
Decider towards the peer. The other peer takes on the role of the | Decider towards the peer. The other peer takes on the role of the | |||
Follower. The Decider selects which secure channel protocol to | Follower. The Decider selects which secure channel protocol to | |||
ultimately use. | ultimately use. | |||
* The Follower becomes passive: it does not attempt to further | * The Follower becomes passive: it does not attempt to further | |||
initiate ACP secure channel protocol connections with the Decider | initiate ACP secure channel protocol connections with the Decider | |||
and does not consider it to be an error when the Decider closes | and does not consider it to be an error when the Decider closes | |||
secure channels. The Decider becomes the active party, continues | secure channels. The Decider becomes the active party, continuing | |||
to attempt setting up secure channel protocols with the Follower. | to attempt the setup of secure channel protocols with the | |||
This process terminates when the Decider arrives at the "best" ACP | Follower. This process terminates when the Decider arrives at the | |||
secure channel connection option that also works with the Follower | "best" ACP secure channel connection option that also works with | |||
("best" from the Deciders point of view). | the Follower ("best" from the Decider's point of view). | |||
* A peer with a "0" acp-address in its AcpNodeName takes on the role | * A peer with a "0" acp-address in its AcpNodeName takes on the role | |||
of Follower when peering with a node that has a non-"0" acp- | of Follower when peering with a node that has a non-"0" acp- | |||
address (note that this specification does not fully define the | address (note that this specification does not fully define the | |||
behavior of ACP secure channel negotiation for nodes with a "0" | behavior of ACP secure channel negotiation for nodes with a "0" | |||
ACP address field, it only defines interoperability with such ACP | ACP address field, it only defines interoperability with such ACP | |||
nodes). | nodes). | |||
In a simple example, ACP peer Node 1 attempts to initiate an IPsec | In a simple example, ACP peer Node 1 attempts to initiate an IPsec | |||
via IKEv2 connection to peer Node 2. The IKEv2 authentication | connection via IKEv2 to peer Node 2. The IKEv2 authentication | |||
succeeds. Node 1 has the lower ACP address and becomes the Follower. | succeeds. Node 1 has the lower ACP address and becomes the Follower. | |||
Node 2 becomes the Decider. IKEv2 might not be the preferred ACP | Node 2 becomes the Decider. IKEv2 might not be the preferred ACP | |||
secure channel protocol for the Decider Node 2. Node 2 would | secure channel protocol for the Decider Node 2. Node 2 would | |||
therefore proceed to attempt secure channel setups with (in its view) | therefore proceed to attempt secure channel setups with more | |||
more preferred protocol options (e.g., DTLS/UDP). If any such | preferred protocol options (in its view, e.g., DTLS/UDP). If any | |||
preferred ACP secure channel connection of the Decider succeeds, it | such preferred ACP secure channel connection of the Decider succeeds, | |||
would close the IPsec connection. If Node 2 has no preferred | it would close the IPsec connection. If Node 2 has no preferred | |||
protocol option over IPsec, or no such connection attempt from Node 2 | protocol option over IPsec, or no such connection attempt from Node 2 | |||
to Node 1 succeeds, Node 2 would keep the IPsec connection and use | to Node 1 succeeds, Node 2 would keep the IPsec connection and use | |||
it. | it. | |||
The Decider SHOULD NOT send actual payload packets across a secure | The Decider SHOULD NOT send actual payload packets across a secure | |||
channel until it has decided to use it. The Follower MAY delay | channel until it has decided to use it. The Follower MAY delay | |||
linking the ACP secure channel into the ACP virtual interface until | linking the ACP secure channel to the ACP virtual interface until it | |||
it sees the first payload packet from the Decider up to a maximum of | sees the first payload packet from the Decider up to a maximum of 5 | |||
5 seconds to avoid unnecessarily linking a secure channel that will | seconds to avoid unnecessarily linking a secure channel that will be | |||
be terminated as undesired by the Decider shortly afterwards. | terminated as undesired by the Decider shortly afterward. | |||
The following sequence of steps show this example in more detail. | The following sequence of steps show this example in more detail. | |||
Each step is tagged with [<step#>{:<connection>}]. The connection is | Each step is tagged with [<step#>{:<connection>}]. The connection is | |||
included to more easily distinguish which of the two competing | included to more easily distinguish which of the two competing | |||
connections the step belongs to, one initiated by Node 1, one | connections the step belongs to, one initiated by Node 1, one | |||
initiated by Node 2. | initiated by Node 2. | |||
[1] Node 1 sends GRASP AN_ACP message to announce itself | [1] Node 1 sends GRASP "AN_ACP" message to announce itself. | |||
[2] Node 2 sends GRASP AN_ACP message to announce itself | ||||
[3] Node 2 receives [1] from Node 1 | [2] Node 2 sends GRASP "AN_ACP" message to announce itself. | |||
[4:C1] Because of [3], Node 2 starts as initiator on its | [3] Node 2 receives [1] from Node 1. | |||
preferred secure channel protocol towards Node 1. | ||||
Connection C1. | ||||
[5] Node 1 receives [2] from Node 2 | [4:C1] Because of [3], Node 2 starts as initiator on its preferred | |||
secure channel protocol towards Node 1. Connection C1. | ||||
[6:C2] Because of [5], Node 1 starts as initiator on its | [5] Node 1 receives [2] from Node 2. | |||
preferred secure channel protocol towards Node 2. | ||||
Connection C2. | ||||
[7:C1] Node1 and Node2 have authenticated each others | [6:C2] Because of [5], Node 1 starts as initiator on its preferred | |||
certificate on connection C1 as valid ACP peers. | secure channel protocol towards Node 2. Connection C2. | |||
[8:C1] Node 1 certificate has lower ACP Node-ID than Node2, therefore | [7:C1] Node 1 and Node 2 have authenticated each other's | |||
Node 1 considers itself the Follower and Node 2 the Decider | certificate on connection C1 as valid ACP peers. | |||
on connection C1. Connection setup C1 is completed. | ||||
[9] Node 1 refrains from attempting any further secure channel | [8:C1] Node 1's certificate has a lower ACP Node-ID than Node 2's, | |||
connections to Node 2 (the Decider) as learned from [2] | therefore Node 1 considers itself the Follower and Node 2 | |||
because it knows from [8:C1] that it is the Follower | the Decider on connection C1. Connection setup C1 is | |||
relative to Node 1. | completed. | |||
[10:C2] Node1 and Node2 have authenticated each others | [9] Node 1 refrains from attempting any further secure channel | |||
certificate on connection C2 (like [7:C1]). | connections to Node 2 (the Decider) as learned from [2] | |||
because it knows from [8:C1] that it is the Follower | ||||
relative to Node 2. | ||||
[11:C2] Node 1 certificate has lower ACP Node-ID than Node2, | [10:C2] Node 1 and Node 2 have authenticated each other's | |||
therefore Node 1 considers itself the Follower and Node 2 the | certificate on connection C2 (like [7:C1]). | |||
Decider on connection C2, but they also identify that C2 is | ||||
to the same mutual peer as their C1, so this has no further | ||||
impact: the roles Decider and Follower where already assigned | ||||
between these two peers by [8:C1]. | ||||
[12:C2] Node 2 (the Decider) closes C1. Node 1 is fine with this, | [11:C2] Node 1's certificate has a lower ACP Node-ID than Node 2's, | |||
because of its role as the Follower (from [8:C1]). | therefore Node 1 considers itself the Follower and Node 2 | |||
the Decider on connection C2, but they also identify that | ||||
C2 is to the same mutual peer as their C1, so this has no | ||||
further impact: the roles Decider and Follower where | ||||
already assigned between these two peers by [8:C1]. | ||||
[13] Node 2 (the Decider) and Node 1 (the Follower) start data | [12:C2] Node 2 (the Decider) closes C1. Node 1 is fine with this, | |||
transfer across C2, which makes it become a secure channel | because of its role as the Follower (from [8:C1]). | |||
for the ACP. | ||||
Figure 8: Secure Channel sequence of steps | [13] Node 2 (the Decider) and Node 1 (the Follower) start data | |||
transfer across C2, which makes it become a secure channel | ||||
for the ACP. | ||||
All this negotiation is in the context of an "L2 interface". The | All this negotiation is in the context of an L2 interface. The | |||
Decider and Follower will build ACP connections to each other on | Decider and Follower will build ACP connections to each other on | |||
every "L2 interface" that they both connect to. An autonomic node | every L2 interface that they both connect to. An autonomic node MUST | |||
MUST NOT assume that neighbors with the same L2 or link-local IPv6 | NOT assume that neighbors with the same L2 or link-local IPv6 | |||
addresses on different L2 interfaces are the same node. This can | addresses on different L2 interfaces are the same node. This can | |||
only be determined after examining the certificate after a successful | only be determined after examining the certificate after a successful | |||
security association attempt. | security association attempt. | |||
The Decider SHOULD NOT suppress attempting a particular ACP secure | The Decider SHOULD NOT suppress attempting a particular ACP secure | |||
channel protocol connection on one L2 interface because this type of | channel protocol connection on one L2 interface because this type of | |||
ACP secure channel connection has failed to the peer with the same | ACP secure channel connection has failed to the peer with the same | |||
ACP certificate on another L2 interface: Not only the supported ACP | ACP certificate on another L2 interface: not only may the supported | |||
secure channel protocol options may be different on the same ACP peer | ACP secure channel protocol options be different on the same ACP peer | |||
across different L2 interfaces, but also error conditions may cause | across different L2 interfaces, but also error conditions may cause | |||
inconsistent failures across different L2 interfaces. Avoiding such | inconsistent failures across different L2 interfaces. Avoiding such | |||
connection attempt optimizations can therefore help to increase | connection attempt optimizations can therefore help to increase | |||
robustness in the case of errors. | robustness in the case of errors. | |||
6.7. Candidate ACP Neighbor verification | 6.7. Candidate ACP Neighbor Verification | |||
Independent of the security association protocol chosen, candidate | Independent of the security association protocol chosen, candidate | |||
ACP neighbors need to be authenticated based on their domain | ACP neighbors need to be authenticated based on their domain | |||
certificate. This implies that any secure channel protocol MUST | certificate. This implies that any secure channel protocol MUST | |||
support certificate based authentication that can support the ACP | support certificate-based authentication that can support the ACP | |||
domain membership check as defined in Section 6.2.3. If it fails, | domain membership check as defined in Section 6.2.3. If it fails, | |||
the connection attempt is aborted and an error logged. Attempts to | the connection attempt is aborted and an error logged. Attempts to | |||
reconnect MUST be throttled. The RECOMMENDED default is exponential | reconnect MUST be throttled. The RECOMMENDED default is exponential | |||
base 2 backoff with an initial retransmission time (IRT) of 10 | base-two backoff with an initial retransmission time (IRT) of 10 | |||
seconds and a maximum retransmission time (MRT) of 640 seconds. | seconds and a maximum retransmission time (MRT) of 640 seconds. | |||
Failure to authenticate an ACP neighbor when acting in the role of a | Failure to authenticate an ACP neighbor when acting in the role of a | |||
responder of the security authentication protocol MUST NOT impact the | responder of the security authentication protocol MUST NOT impact the | |||
attempts of the ACP node to attempt establishing a connection as an | attempts of the ACP node to attempt establishing a connection as an | |||
initiator. Only failed connection attempts as an initiator must | initiator. Only failed connection attempts as an initiator must | |||
cause throttling. This rule is meant to increase resilience of | cause throttling. This rule is meant to increase resilience of | |||
secure channel creation. Section 6.6 shows how simultaneous mutual | secure channel creation. Section 6.6 shows how simultaneous mutual | |||
secure channel setup collisions are resolved. | secure channel setup collisions are resolved. | |||
6.8. Security Association (Secure Channel) protocols | 6.8. Security Association (Secure Channel) Protocols | |||
This section describes how ACP nodes establish secured data | This section describes how ACP nodes establish secured data | |||
connections to automatically discovered or configured peers in the | connections to automatically discovered or configured peers in the | |||
ACP. Section 6.4 above described how IPv6 subnet adjacent peers are | ACP. Section 6.4 describes how peers that are adjacent on an IPv6 | |||
discovered automatically. Section 8.2 describes how non IPv6 subnet | subnet are discovered automatically. Section 8.2 describes how to | |||
adjacent peers can be configured. | configure peers that are not adjacent on an IPv6 subnet. | |||
Section 6.13.5.2 describes how secure channels are mapped to virtual | Section 6.13.5.2 describes how secure channels are mapped to virtual | |||
IPv6 subnet interfaces in the ACP. The simple case is to map every | IPv6 subnet interfaces in the ACP. The simple case is to map every | |||
ACP secure channel into a separate ACP point-to-point virtual | ACP secure channel to a separate ACP point-to-point virtual interface | |||
interface Section 6.13.5.2.1. When a single subnet has multiple ACP | (Section 6.13.5.2.1). When a single subnet has multiple ACP peers, | |||
peers this results in multiple ACP point-to-point virtual interfaces | this results in multiple ACP point-to-point virtual interfaces across | |||
across that underlying multi-party IPv6 subnet. This can be | that underlying multiparty IPv6 subnet. This can be optimized with | |||
optimized with ACP multi-access virtual interfaces | ACP multi-access virtual interfaces (Section 6.13.5.2.2), but the | |||
(Section 6.13.5.2.2) but the benefits of that optimization may not | benefits of that optimization may not justify the complexity of that | |||
justify the complexity of that option. | option. | |||
6.8.1. General considerations | 6.8.1. General Considerations | |||
Due to Channel Selection (Section 6.6), ACP can support an evolving | Due to channel selection (Section 6.6), ACP can support an evolving | |||
set of security association protocols and does not require support | set of security association protocols and does not require support | |||
for a single network wide MTI. ACP nodes only need to implement | for a single network-wide MTI. ACP nodes only need to implement | |||
those protocols required to interoperate with their candidate peers, | those protocols required to interoperate with their candidate peers, | |||
not with potentially any node in the ACP domain. See Section 6.8.5 | not with potentially any node in the ACP domain. See Section 6.8.5 | |||
for an example of this. | for an example of this. | |||
The degree of security required on every hop of an ACP network needs | The degree of security required on every hop of an ACP network needs | |||
to be consistent across the network so that there is no designated | to be consistent across the network so that there is no designated | |||
"weakest link" because it is that "weakest link" that would otherwise | "weakest link" because it is that "weakest link" that would otherwise | |||
become the designated point of attack. When the secure channel | become the designated point of attack. When the secure channel | |||
protection on one link is compromised, it can be used to send/receive | protection on one link is compromised, it can be used to send and/or | |||
packets across the whole ACP network. Therefore, even though the | receive packets across the whole ACP network. Therefore, even though | |||
security association protocols can be different, their minimum degree | the security association protocols can be different, their minimum | |||
of security should be comparable. | degree of security should be comparable. | |||
Secure channel protocols do not need to always support arbitrary L3 | Secure channel protocols do not need to always support arbitrary | |||
connectivity between peers, but can leverage the fact that the | Layer 3 (L3) connectivity between peers, but can leverage the fact | |||
standard use case for ACP secure channels is an L2 adjacency. Hence, | that the standard use case for ACP secure channels is an L2 | |||
L2 dependent mechanisms could be adopted for use as secure channel | adjacency. Hence, L2 dependent mechanisms could be adopted for use | |||
association protocols: | as secure channel association protocols. | |||
L2 mechanisms such as strong encrypted radio technologies or [MACSEC] | L2 mechanisms such as strong encrypted radio technologies or [MACSEC] | |||
may offer equivalent encryption and the ACP security association | may offer equivalent encryption, and the ACP security association | |||
protocol may only be required to authenticate ACP domain membership | protocol may only be required to authenticate ACP domain membership | |||
of a peer and/or derive a key for the L2 mechanism. Mechanisms to | of a peer and/or derive a key for the L2 mechanism. Mechanisms that | |||
auto-discover and associate ACP peers leveraging such underlying L2 | leverage such underlying L2 security to auto-discover and associate | |||
security are possible and desirable to avoid duplication of | ACP peers are possible and desirable to avoid duplication of | |||
encryption, but none are specified in this document. | encryption, but none are specified in this document. | |||
Strong physical security of a link may stand in where cryptographic | Strong physical security of a link may stand in where cryptographic | |||
security is infeasible. As there is no secure mechanism to | security is infeasible. As there is no secure mechanism to | |||
automatically discover strong physical security solely between two | automatically discover strong physical security solely between two | |||
peers, it can only be used with explicit configuration and that | peers, it can only be used with explicit configuration, and that | |||
configuration too could become an attack vector. This document | configuration too could become an attack vector. This document | |||
therefore only specifies with ACP connect (Section 8.1) one | therefore specifies with ACP connect (Section 8.1) only one | |||
explicitly configured mechanism without any secure channel | explicitly configured mechanism without any secure channel | |||
association protocol - for the case where both the link and the nodes | association protocol for the case where both the link and the nodes | |||
attached to it have strong physical security. | attached to it have strong physical security. | |||
6.8.2. Common requirements | 6.8.2. Common Requirements | |||
The authentication of peers in any security association protocol MUST | The authentication of peers in any security association protocol MUST | |||
use the ACP certificate according to Section 6.2.3. Because auto- | use the ACP certificate according to Section 6.2.3. Because auto- | |||
discovery of candidate ACP neighbors via GRASP (see Section 6.4) as | discovery of candidate ACP neighbors via GRASP (see Section 6.4) as | |||
specified in this document does not communicate the neighbors ACP | specified in this document does not communicate the neighbor's ACP | |||
certificate, and ACP nodes may not (yet) have any other network | certificate, and ACP nodes may not (yet) have any other network | |||
connectivity to retrieve certificates, any security association | connectivity to retrieve certificates, any security association | |||
protocol MUST use a mechanism to communicate the certificate directly | protocol MUST use a mechanism to communicate the certificate directly | |||
instead of relying on a referential mechanism such as communicating | instead of relying on a referential mechanism such as communicating | |||
only a hash and/or URL for the certificate. | only a hash and/or URL for the certificate. | |||
A security association protocol MUST use Forward Secrecy (whether | A security association protocol MUST use Forward Secrecy (whether | |||
inherently or as part of a profile of the security association | inherently or as part of a profile of the security association | |||
protocol). | protocol). | |||
Because the ACP payload of legacy protocol payloads inside the ACP | Because the ACP payload of legacy protocol payloads inside the ACP | |||
and hop-by-hop ACP flooded GRASP information is unencrypted, the ACP | and hop-by-hop ACP flooded GRASP information is unencrypted, the ACP | |||
secure channel protocol requires confidentiality. Symmetric | secure channel protocol requires confidentiality. Symmetric | |||
encryption for the transmission of secure channel data MUST use | encryption for the transmission of secure channel data MUST use | |||
encryption schemes considered to be security wise equal to or better | encryption schemes considered to be security wise equal to or better | |||
than 256-bit key strength, such as AES256. There MUST NOT be support | than 256-bit key strength, such as AES-256. There MUST NOT be | |||
for NULL encryption. | support for NULL encryption. | |||
Security association protocols typically only signal the End Entity | Security association protocols typically only signal the end entity | |||
certificate (e.g. the ACP certificate) and any possible intermediate | certificate (e.g., the ACP certificate) and any possible intermediate | |||
CA certificates for successful mutual authentication. The TA has to | CA certificates for successful mutual authentication. The TA has to | |||
be mutually known and trusted and therefore its certificate does not | be mutually known and trusted, and therefore its certificate does not | |||
need to be signaled for successful mutual authentication. | need to be signaled for successful mutual authentication. | |||
Nevertheless, for use with ACP secure channel setup, there SHOULD be | Nevertheless, for use with ACP secure channel setup, there SHOULD be | |||
the option to include the TA certificate in the signaling to aid | the option to include the TA certificate in the signaling to aid | |||
troubleshooting, see Section 9.1.1. | troubleshooting, see Section 9.1.1. | |||
Signaling of TA certificates may not be appropriate when the | Signaling of TA certificates may not be appropriate when the | |||
deployment is relying on a security model where the TA certificate | deployment relies on a security model where the TA certificate | |||
content is considered confidential and only its hash is appropriate | content is considered confidential, and only its hash is appropriate | |||
for signaling. ACP nodes SHOULD have a mechanism to select whether | for signaling. ACP nodes SHOULD have a mechanism to select whether | |||
the TA certificate is signaled or not. Assuming that both options | the TA certificate is signaled or not, assuming that both options are | |||
are possible with a specific secure channel protocol. | possible with a specific secure channel protocol. | |||
An ACP secure channel MUST immediately be terminated when the | An ACP secure channel MUST immediately be terminated when the | |||
lifetime of any certificate in the chain used to authenticate the | lifetime of any certificate in the chain used to authenticate the | |||
neighbor expires or becomes revoked. This may not be standard | neighbor expires or becomes revoked. This may not be standard | |||
behavior in secure channel protocols because the certificate | behavior in secure channel protocols because the certificate | |||
authentication may only influence the setup of the secure channel in | authentication may only influence the setup of the secure channel in | |||
these protocols, but may not be re-validated during the lifetime of | these protocols, but may not be revalidated during the lifetime of | |||
the secure connection in the absence of this requirement. | the secure connection in the absence of this requirement. | |||
When specifying an additional security association protocol for ACP | When specifying an additional security association protocol for ACP | |||
secure channels beyond those covered in this document, protocol | secure channels beyond those covered in this document, any protocol | |||
options SHOULD be eliminated that are not necessary to support | options that are unnecessary for the support of devices that are | |||
devices that are expected to be able to support the ACP to minimize | expected to be able to support the ACP SHOULD be eliminated in order | |||
implementation complexity. For example, definitions for security | to minimize implementation complexity. For example, definitions for | |||
protocols often include old/inferior security options required only | security protocols often include old and/or inferior security options | |||
to interoperate with existing devices that will not be able to update | required only to interoperate with existing devices that cannot | |||
to the currently preferred security options. Such old/inferior | update to the currently preferred security options. Such old and/or | |||
security options do not need to be supported when a security | inferior security options do not need to be supported when a security | |||
association protocol is first specified for the ACP, strengthening | association protocol is first specified for the ACP, thus | |||
the "weakest link" and simplifying ACP implementation overhead. | strengthening the "weakest link" and simplifying ACP implementation | |||
overhead. | ||||
6.8.3. ACP via IPsec | 6.8.3. ACP via IPsec | |||
An ACP node announces its ability to support IPsec, negotiated via | An ACP node announces its ability to support IPsec, negotiated via | |||
IKEv2, as the ACP secure channel protocol using the "IKEv2" | IKEv2, as the ACP secure channel protocol using the "IKEv2" | |||
objective-value in the "AN_ACP" GRASP objective. | 'objective-value' in the "AN_ACP" GRASP objective. | |||
The ACP usage of IPsec and IKEv2 mandates a profile with a narrow set | The ACP usage of IPsec and IKEv2 mandates a profile with a narrow set | |||
of options of the current standards-track usage guidance for IPsec | of options of the current Standards Track usage guidance for IPsec | |||
[RFC8221] and IKEv2 [RFC8247]. These option result in stringent | ("Cryptographic Algorithm Implementation Requirements and Usage | |||
security properties and can exclude deprecated/legacy algorithms | Guidance for Encapsulating Security Payload (ESP) and Authentication | |||
because there is no need for interoperability with legacy equipment | Header (AH)" [RFC8221]) and IKEv2 ("Algorithm Implementation | |||
for ACP secure channels. Any such backward compatibility would lead | Requirements and Usage Guidance for the Internet Key Exchange | |||
only to increased attack surface and implementation complexity, for | Protocol Version 2 (IKEv2)" [RFC8247]). These options result in | |||
no benefit. | stringent security properties and can exclude deprecated and legacy | |||
algorithms because there is no need for interoperability with legacy | ||||
equipment for ACP secure channels. Any such backward compatibility | ||||
would lead only to an increased attack surface and implementation | ||||
complexity, for no benefit. | ||||
6.8.3.1. Native IPsec | 6.8.3.1. Native IPsec | |||
An ACP node that is supporting native IPsec MUST use IPsec in tunnel | An ACP node that is supporting native IPsec MUST use IPsec in tunnel | |||
mode, negotiated via IKEv2, and with IPv6 payload (e.g., ESP Next | mode, negotiated via IKEv2, and with IPv6 payload (e.g., ESP Next | |||
Header of 41). It MUST use local and peer link-local IPv6 addresses | Header of 41). It MUST use local and peer link-local IPv6 addresses | |||
for encapsulation. Manual keying MUST NOT be used, see Section 6.2. | for encapsulation. Manual keying MUST NOT be used, see Section 6.2. | |||
Traffic Selectors are: | Traffic Selectors are: | |||
TSi = (0, 0-65535, :: - FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF) | TSi = (0, 0-65535, :: - FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF) | |||
skipping to change at page 52, line 44 ¶ | skipping to change at line 2462 ¶ | |||
6.8.3.1. Native IPsec | 6.8.3.1. Native IPsec | |||
An ACP node that is supporting native IPsec MUST use IPsec in tunnel | An ACP node that is supporting native IPsec MUST use IPsec in tunnel | |||
mode, negotiated via IKEv2, and with IPv6 payload (e.g., ESP Next | mode, negotiated via IKEv2, and with IPv6 payload (e.g., ESP Next | |||
Header of 41). It MUST use local and peer link-local IPv6 addresses | Header of 41). It MUST use local and peer link-local IPv6 addresses | |||
for encapsulation. Manual keying MUST NOT be used, see Section 6.2. | for encapsulation. Manual keying MUST NOT be used, see Section 6.2. | |||
Traffic Selectors are: | Traffic Selectors are: | |||
TSi = (0, 0-65535, :: - FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF) | TSi = (0, 0-65535, :: - FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF) | |||
TSr = (0, 0-65535, :: - FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF) | TSr = (0, 0-65535, :: - FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF) | |||
IPsec tunnel mode is required because the ACP will route/forward | ||||
packets received from any other ACP node across the ACP secure | IPsec tunnel mode is required because the ACP will route and/or | |||
channels, and not only its own generated ACP packets. With IPsec | forward packets received from any other ACP node across the ACP | |||
transport mode (and no additional encapsulation header in the ESP | secure channels, and not only its own generated ACP packets. With | |||
payload), it would only be possible to send packets originated by the | IPsec transport mode (and no additional encapsulation header in the | |||
ACP node itself because the IPv6 addresses of the ESP must be the | ESP payload), it would only be possible to send packets originated by | |||
the ACP node itself because the IPv6 addresses of the ESP must be the | ||||
same as that of the outer IPv6 header. | same as that of the outer IPv6 header. | |||
6.8.3.1.1. RFC8221 (IPsec/ESP) | 6.8.3.1.1. RFC 8221 (IPsec/ESP) | |||
ACP IPsec implementations MUST comply with [RFC8221] (and its | ACP IPsec implementations MUST comply with [RFC8221] and any | |||
updates). The requirements from above and this section amend and | specifications that update it. The requirements from above and this | |||
superseded its requirements. | section amend and supersede its requirements. | |||
The IP Authentication Header (AH) MUST NOT be used (because it does | The IP Authentication Header (AH) MUST NOT be used (because it does | |||
not provide confidentiality). | not provide confidentiality). | |||
For the required ESP encryption algorithms in section 5 of [RFC8221] | For the required ESP encryption algorithms in Section 5 of [RFC8221], | |||
the following guidance applies: | the following guidance applies: | |||
* ENCR_NULL AH MUST NOT be used (because it does not provide | * ENCR_NULL AH MUST NOT be used (because it does not provide | |||
confidentiality). | confidentiality). | |||
* ENCR_AES_GCM_16 is the only MTI ESP encryption algorithm for ACP | * ENCR_AES_GCM_16 is the only MTI ESP encryption algorithm for ACP | |||
via IPsec/ESP (it is already listed as MUST in [RFC8221]). | via IPsec/ESP (it is already listed as MUST in [RFC8221]). | |||
* ENCR_AES_CBC with AUTH_HMAC_SHA2_256_128 (as the ESP | * ENCR_AES_CBC with AUTH_HMAC_SHA2_256_128 (as the ESP | |||
authentication algorithm) and ENCR_AES_CCM_8 MAY be supported. If | authentication algorithm) and ENCR_AES_CCM_8 MAY be supported. If | |||
either provides higher performance than ENCR_AES_GCM_16 it SHOULD | either provides higher performance than ENCR_AES_GCM_16, it SHOULD | |||
be supported. | be supported. | |||
* ENCR_CHACHA20_POLY1305 SHOULD be supported at equal or higher | * ENCR_CHACHA20_POLY1305 SHOULD be supported at equal or higher | |||
performance than ENCR_AES_GCM_16. If that performance is not | performance than ENCR_AES_GCM_16. If that performance is not | |||
feasible, it MAY be supported. | feasible, it MAY be supported. | |||
IKEv2 indicates an order for the offered algorithms. The algorithms | IKEv2 indicates an order for the offered algorithms. The algorithms | |||
SHOULD be ordered by performance. The first algorithm supported by | SHOULD be ordered by performance. The first algorithm supported by | |||
both sides is generally chosen. | both sides is generally chosen. | |||
Explanations: | Explanations: | |||
skipping to change at page 53, line 46 ¶ | skipping to change at line 2509 ¶ | |||
IKEv2 indicates an order for the offered algorithms. The algorithms | IKEv2 indicates an order for the offered algorithms. The algorithms | |||
SHOULD be ordered by performance. The first algorithm supported by | SHOULD be ordered by performance. The first algorithm supported by | |||
both sides is generally chosen. | both sides is generally chosen. | |||
Explanations: | Explanations: | |||
* There is no requirement to interoperate with legacy equipment in | * There is no requirement to interoperate with legacy equipment in | |||
ACP secure channels, so a single MTI encryption algorithm for | ACP secure channels, so a single MTI encryption algorithm for | |||
IPsec in ACP secure channels is sufficient for interoperability | IPsec in ACP secure channels is sufficient for interoperability | |||
and allows for the most lightweight implementations. | and allows for the most lightweight implementations. | |||
* ENCR_AES_GCM_16 is an authenticated encryption with associated | ||||
data (AEAD) cipher mode, so no additional ESP authentication | * ENCR_AES_GCM_16 is an Authenticated Encryption with Associated | |||
Data (AEAD) cipher mode, so no additional ESP authentication | ||||
algorithm is needed, simplifying the MTI requirements of IPsec for | algorithm is needed, simplifying the MTI requirements of IPsec for | |||
the ACP. | the ACP. | |||
* There is no MTI requirement for the support of ENCR_AES_CBC | * There is no MTI requirement for the support of ENCR_AES_CBC | |||
because ENCR_AES_GCM_16 is assumed to be feasible with less cost/ | because ENCR_AES_GCM_16 is assumed to be feasible with less cost | |||
higher performance in modern devices hardware accelerated | and/or higher performance in modern devices' hardware-accelerated | |||
implementations compared to ENCR-AES_CBC. | implementations compared to ENCR-AES_CBC. | |||
* ENCR_CHACHA20_POLY1305 is mandatory in [RFC8221] because of its | * ENCR_CHACHA20_POLY1305 is mandatory in [RFC8221] because of its | |||
target use as a fallback algorithm in case weaknesses in AES are | target use as a fallback algorithm in case weaknesses in AES are | |||
uncovered. Unfortunately, there is currently no way to | uncovered. Unfortunately, there is currently no way to | |||
automatically propagate across an ACP a policy to disallow use of | automatically propagate across an ACP a policy to disallow use of | |||
AES based algorithms, so this target benefit of | AES-based algorithms, so this target benefit of | |||
ENCR_CHACHA20_POLY1305 cannot fully be adopted yet for the ACP. | ENCR_CHACHA20_POLY1305 cannot fully be adopted yet for the ACP. | |||
Therefore, this algorithm is only recommended. Changing from AES | Therefore, this algorithm is only recommended. Changing from AES | |||
to this algorithm at potentially big drop in performance could | to this algorithm with a potentially big drop in performance could | |||
also render the ACP inoperable. Therefore, the performance | also render the ACP inoperable. Therefore, there is a performance | |||
requirement against this algorithm so that it could become an | requirement against this algorithm so that it could become an | |||
effective security backup to AES for the ACP once a policy to | effective security backup to AES for the ACP once a policy to | |||
switch over to it or prefer it is available in an ACP framework. | switch over to it or prefer it is available in an ACP framework. | |||
[RFC8221] allows for 128-bit or 256-bit AES keys. This document | [RFC8221] allows for 128-bit or 256-bit AES keys. This document | |||
mandates that only 256-bit AES keys MUST be supported. | mandates that only 256-bit AES keys MUST be supported. | |||
When [RFC8221] is updated, ACP implementations will need to consider | When [RFC8221] is updated, ACP implementations will need to consider | |||
legacy interoperability, and the IPsec WG has generally done a very | legacy interoperability. | |||
good job of taking that into account in its recommendations. | ||||
6.8.3.1.2. RFC8247 (IKEv2) | 6.8.3.1.2. RFC 8247 (IKEv2) | |||
[RFC8247] provides a baseline recommendation for mandatory to | [RFC8247] provides a baseline recommendation for mandatory-to- | |||
implement ciphers, integrity checks, pseudo-random-functions and | implement ciphers, integrity checks, pseudorandom functions, and | |||
Diffie-Hellman mechanisms. Those recommendations, and the | Diffie-Hellman mechanisms. Those recommendations, and the | |||
recommendations of subsequent documents apply well to the ACP. | recommendations of subsequent documents, apply as well to the ACP. | |||
Because IKEv2 for ACP secure channels is sufficient to be implemented | Because IKEv2 for ACP secure channels is sufficient to be implemented | |||
in control plane software, rather than in ASIC hardware, and ACP | in control plane software rather than in Application-Specific | |||
nodes supporting IKEv2 are not assumed to be code-space constrained, | Integrated Circuit (ASIC) hardware, and ACP nodes supporting IKEv2 | |||
and because existing IKEv2 implementations are expected to support | are not assumed to be code space constrained, and because existing | |||
[RFC8247] recommendations, this documents makes no attempt to | IKEv2 implementations are expected to support [RFC8247] | |||
simplify its recommendations for use with the ACP. | recommendations, this document makes no attempt to simplify its | |||
recommendations for use with the ACP. | ||||
See [IKEV2IANA] for IANA IKEv2 parameter names used in this text. | See [IKEV2IANA] for IANA IKEv2 parameter names used in this text. | |||
ACP Nodes supporting IKEv2 MUST comply with [RFC8247] amended by the | ACP nodes supporting IKEv2 MUST comply with [RFC8247] amended by the | |||
following requirements which constitute a policy statement as | following requirements, which constitute a policy statement as | |||
permitted by [RFC8247]. | permitted by [RFC8247]. | |||
To signal the ACP certificate chain (including TA) as required by | To signal the ACP certificate chain (including TA) as required by | |||
Section 6.8.2, "X.509 Certificate - Signature" payload in IKEv2 can | Section 6.8.2, the "X.509 Certificate - Signature" payload in IKEv2 | |||
be used. It is mandatory according to [RFC7296] section 3.6. | can be used. It is mandatory according to [RFC7296], Section 3.6. | |||
ACP nodes SHOULD set up IKEv2 to only use the ACP certificate and TA | ACP nodes SHOULD set up IKEv2 to only use the ACP certificate and TA | |||
when acting as an IKEv2 responder on the IPv6 link local address and | when acting as an IKEv2 responder on the IPv6 link-local address and | |||
port number indicated in the AN_ACP DULL GRASP announcements (see | port number indicated in the "AN_ACP" DULL GRASP announcements (see | |||
Section 6.4). | Section 6.4). | |||
When CERTREQ is received from a peer, and does not indicate any of | When CERTREQ is received from a peer, and it does not indicate any of | |||
this ACP nodes TA certificates, the ACP node SHOULD ignore the | this ACP node's TA certificates, the ACP node SHOULD ignore the | |||
CERTREQ and continue sending its certificate chain including its TA | CERTREQ and continue sending its certificate chain including its TA | |||
as subject to the requirements and explanations in Section 6.8.2. | as subject to the requirements and explanations in Section 6.8.2. | |||
This will not result in successful mutual authentication but assists | This will not result in successful mutual authentication but assists | |||
diagnostics. | diagnostics. | |||
Note that with IKEv2, failing authentication will only result in the | Note that with IKEv2, failing authentication will only result in the | |||
responder receiving the certificate chain from the initiator, but not | responder receiving the certificate chain from the initiator, but not | |||
vice versa. Because ACP secure channel setup is symmetric (see | vice versa. Because ACP secure channel setup is symmetric (see | |||
Section 6.7), every non-malicious ACP neighbor will attempt to | Section 6.7), every non-malicious ACP neighbor will attempt to | |||
connect as an initiator though, allowing to obtain the diagnostic | connect as an initiator, though, allowing it to obtain the diagnostic | |||
information about the neighbors certificate. | information about the neighbor's certificate. | |||
In IKEv2, ACP nodes are identified by their ACP address. The | In IKEv2, ACP nodes are identified by their ACP addresses. The | |||
ID_IPv6_ADDR IKEv2 identification payload MUST be used and MUST | ID_IPv6_ADDR IKEv2 identification payload MUST be used and MUST | |||
convey the ACP address. If the peer's ACP certificate includes a | convey the ACP address. If the peer's ACP certificate includes a | |||
32HEXDIG ACP address in the acp-node-name (not "0" or omitted), the | 32HEXDIG ACP address in the acp-node-name (not "0" or omitted), the | |||
address in the IKEv2 identification payload MUST match it. See | address in the IKEv2 identification payload MUST match it. See | |||
Section 6.2.3 for more information about "0" or omitted ACP address | Section 6.2.3 for more information about "0" or omitted ACP address | |||
fields in the acp-node-name. | fields in the acp-node-name. | |||
IKEv2 authentication MUST use authentication method 14 ("Digital | IKEv2 authentication MUST use authentication method 14 ("Digital | |||
Signature") for ACP certificates; this authentication method can be | Signature") for ACP certificates; this authentication method can be | |||
used with both RSA and ECDSA certificates, indicated by an ASN.1 | used with both RSA and ECDSA certificates, indicated by an ASN.1 | |||
object AlgorithmIdentifier. | object AlgorithmIdentifier. | |||
The Digital Signature hash SHA2-512 MUST be supported (in addition to | The Digital Signature hash SHA2-512 MUST be supported (in addition to | |||
SHA2-256). | SHA2-256). | |||
The IKEv2 Diffie-Hellman key exchange group 19 (256-bit random ECP), | The IKEv2 Diffie-Hellman key exchange group 19 (256-bit random ECP), | |||
MUST be supported. Reason: ECC provides a similar security level to | MUST be supported. Reason: ECC provides a similar security level to | |||
finite-field (MODP) key exchange with a shorter key length, so is | finite-field (modular exponentiation (MODP)) key exchange with a | |||
generally preferred absent other considerations. | shorter key length, so is generally preferred absent other | |||
considerations. | ||||
6.8.3.2. IPsec with GRE encapsulation | 6.8.3.2. IPsec with GRE Encapsulation | |||
In network devices it is often more common to implement high | In network devices, it is often more common to implement high- | |||
performance virtual interfaces on top of GRE encapsulation than on | performance virtual interfaces on top of GRE encapsulation than on | |||
top of a "native" IPsec association (without any other encapsulation | top of a "native" IPsec association (without any other encapsulation | |||
than those defined by IPsec). On those devices it may be beneficial | than those defined by IPsec). On those devices, it may be beneficial | |||
to run the ACP secure channel on top of GRE protected by the IPsec | to run the ACP secure channel on top of GRE protected by the IPsec | |||
association. | association. | |||
The requirements for ESP/IPsec/IKEv2 with GRE are the same as for | The requirements for ESP/IPsec/IKEv2 with GRE are the same as for | |||
native IPsec (see Section 6.8.3.1) except that IPsec transport mode | native IPsec (see Section 6.8.3.1) except that IPsec transport mode | |||
and next protocol GRE (47) are to be negotiated. Tunnel mode is not | and next protocol GRE (47) are to be negotiated. Tunnel mode is not | |||
required because of GRE. Traffic Selectors are: | required because of GRE. Traffic Selectors are: | |||
TSi = (47, 0-65535, Initiator-IPv6-LL-addr ... Initiator-IPv6-LL- | TSi = (47, 0-65535, Initiator-IPv6-LL-addr ... Initiator-IPv6-LL-addr) | |||
addr) | TSr = (47, 0-65535, Responder-IPv6-LL-addr ... Responder-IPv6-LL-addr) | |||
TSr = (47, 0-65535, Responder-IPv6-LL-addr ... Responder-IPv6-LL- | ||||
addr) | ||||
If IKEv2 initiator and responder support IPsec over GRE, it will be | If the IKEv2 initiator and responder support IPsec over GRE, it will | |||
preferred over native IPsec because of the way how IKEv2 negotiates | be preferred over native IPsec because of how IKEv2 negotiates | |||
transport mode (as used by this IPsec over GRE profile) versus tunnel | transport mode (as used by this IPsec over GRE profile) versus tunnel | |||
mode as used by native IPsec (see [RFC7296], section 1.3.1). The ACP | mode as used by native IPsec (see Section 1.3.1 of [RFC7296]). The | |||
IPv6 traffic has to be carried across GRE according to [RFC7676]. | ACP IPv6 traffic has to be carried across GRE according to "IPv6 | |||
Support for Generic Routing Encapsulation (GRE)" [RFC7676]. | ||||
6.8.4. ACP via DTLS | 6.8.4. ACP via DTLS | |||
This document defines the use of ACP via DTLS, on the assumption that | This document defines the use of ACP via DTLS on the assumption that | |||
it is likely the first transport encryption supported in some classes | it is likely the first transport encryption supported in some classes | |||
of constrained devices: DTLS is commonly used in constrained devices | of constrained devices: DTLS is commonly used in constrained devices | |||
when IPsec is not. Code-space on those devices may be also be too | when IPsec is not. Code space on those devices may be also be too | |||
limited to support more than the minimum number of required | limited to support more than the minimum number of required | |||
protocols. | protocols. | |||
An ACP node announces its ability to support DTLS version 1.2 | An ACP node announces its ability to support DTLS version 1.2 | |||
([RFC6347]) compliant with the requirements defined in this document | ("Datagram Transport Layer Security Version 1.2" [RFC6347]) compliant | |||
as an ACP secure channel protocol in GRASP through the "DTLS" | with the requirements defined in this document as an ACP secure | |||
objective-value in the "AN_ACP" objective (see Section 6.4). | channel protocol in GRASP through the "DTLS" 'objective-value' in the | |||
"AN_ACP" objective (see Section 6.4). | ||||
To run ACP via UDP and DTLS, a locally assigned UDP port is used that | To run ACP via UDP and DTLS, a locally assigned UDP port is used that | |||
is announced as a parameter in the GRASP AN_ACP objective to | is announced as a parameter in the GRASP "AN_ACP" objective to | |||
candidate neighbors. This port can also be any newer version of DTLS | candidate neighbors. This port can also be any newer version of DTLS | |||
as long as that version can negotiate a DTLS v1.2 connection in the | as long as that version can negotiate a DTLS 1.2 connection in the | |||
presence of an DTLS v1.2 only peer. | presence of a peer that only supports DTLS 1.2. | |||
All ACP nodes supporting DTLS as a secure channel protocol MUST | All ACP nodes supporting DTLS as a secure channel protocol MUST | |||
adhere to the DTLS implementation recommendations and security | adhere to the DTLS implementation recommendations and security | |||
considerations of BCP 195, BCP 195 [RFC7525] except with respect to | considerations of BCP 195 [RFC7525] except with respect to the DTLS | |||
the DTLS version. ACP nodes supporting DTLS MUST support DTLS 1.2. | version. ACP nodes supporting DTLS MUST support DTLS 1.2. They MUST | |||
They MUST NOT support older versions of DTLS. | NOT support older versions of DTLS. | |||
Unlike for IPsec, no attempts are made to simplify the requirements | Unlike for IPsec, no attempts are made to simplify the requirements | |||
of the BCP 195 recommendations because the expectation is that DTLS | of the recommendations in BCP 195 [RFC7525] because the expectation | |||
would be using software-only implementations where the ability to | is that DTLS would use software-only implementations where the | |||
reuse of widely adopted implementations is more important than | ability to reuse widely adopted implementations is more important | |||
minimizing the complexity of a hardware accelerated implementation | than the ability to minimize the complexity of a hardware-accelerated | |||
which is known to be important for IPsec. | implementation, which is known to be important for IPsec. | |||
DTLS v1.3 ([I-D.ietf-tls-dtls13]) is "backward compatible" with DTLS | DTLS 1.3 [TLS-DTLS13] is "backward compatible" with DTLS 1.2 (see | |||
v1.2 (see section 1. of DTLS v1.3). A DTLS implementation supporting | Section 1 of [TLS-DTLS13]). A DTLS implementation supporting both | |||
both DTLS v1.2 and DTLS v1.3 does comply with the above requirements | DTLS 1.2 and DTLS 1.3 does comply with the above requirements of | |||
of negotiating to DTLS v1.2 in the presence of a DTLS v1.2 only peer, | negotiating to DTLS 1.2 in the presence of a DTLS 1.2 only peer, but | |||
but using DTLS v1.3 when booth peers support it. | using DTLS 1.3 when booth peers support it. | |||
Version v1.2 is the MTI version of DTLS in this specification because | Version 1.2 is the MTI version of DTLS in this specification because | |||
of the following: | ||||
* There is more experience with DTLS v1.2 across the spectrum of | * There is more experience with DTLS 1.2 across the spectrum of | |||
target ACP nodes. | target ACP nodes. | |||
* Firmware of lower end, embedded ACP nodes may not support a newer | ||||
* Firmware of lower-end, embedded ACP nodes may not support a newer | ||||
version for a long time. | version for a long time. | |||
* There are significant changes of DTLS v1.3, such as a different | ||||
* There are significant changes with DTLS 1.3, such as a different | ||||
record layer requiring time to gain implementation and deployment | record layer requiring time to gain implementation and deployment | |||
experience especially on lower end, code space limited devices. | experience especially on lower-end devices with limited code | |||
* The existing BCP [RFC7525] for DTLS v1.2 may equally take longer | space. | |||
* The existing BCP [RFC7525] for DTLS 1.2 may take an equally longer | ||||
time to be updated with experience from a newer DTLS version. | time to be updated with experience from a newer DTLS version. | |||
* There are no significant use-case relevant benefits of DTLS v1.3 | ||||
over DTLS v1.2 in the context of the ACP options for DTLS. For | ||||
example, signaling performance improvements for session setup in | ||||
DTLS v1.3 is not important for the ACP given the long-lived nature | ||||
of ACP secure channel connections and the fact that DTLS | ||||
connections are mostly link-local (short RTT). | ||||
Nevertheless, newer versions of DTLS, such as DTLS v1.3 have stricter | * There are no significant benefits of DTLS 1.3 over DTLS 1.2 that | |||
security requirements and use of the latest standard protocol version | are use-case relevant in the context of the ACP options for DTLS. | |||
is for IETF security standards in general recommended. Therefore, | For example, signaling performance improvements for session setup | |||
ACP implementations are advised to support all the newer versions of | in DTLS 1.3 is not important for the ACP given the long-lived | |||
DTLS that can still negotiate down to DTLS v1.2. | nature of ACP secure channel connections and the fact that DTLS | |||
connections are mostly link local (short RTT). | ||||
Nevertheless, newer versions of DTLS, such as DTLS 1.3, have stricter | ||||
security requirements, and the use of the latest standard protocol | ||||
version is in general recommended for IETF security standards. | ||||
Therefore, ACP implementations are advised to support all the newer | ||||
versions of DTLS that can still negotiate down to DTLS 1.2. | ||||
[RFC-editor: if by the time of AUTH48, DTLS 1.3 would have evolved to | ||||
be an RFC, then not only would the references to the DTLS v1.3 draft | ||||
be changed to the RFC number, but that RFC is then going to be put | ||||
into the normative list of references and the above paragraph is | ||||
going to be amended to say: Implementations SHOULD support | ||||
[DTLSv1.3-RFC]. This is not done right now, because there is no | ||||
benefit in potentially waiting in RFC-editor queue for that RFC given | ||||
how the text already lays out a non-normative desire to support | ||||
DTLSv1.3.] | ||||
There is no additional session setup or other security association | There is no additional session setup or other security association | |||
besides this simple DTLS setup. As soon as the DTLS session is | besides this simple DTLS setup. As soon as the DTLS session is | |||
functional, the ACP peers will exchange ACP IPv6 packets as the | functional, the ACP peers will exchange ACP IPv6 packets as the | |||
payload of the DTLS transport connection. oAny DTLS defined security | payload of the DTLS transport connection. Any DTLS-defined security | |||
association mechanisms such as re-keying are used as they would be | association mechanisms such as rekeying are used as they would be for | |||
for any transport application relying solely on DTLS. | any transport application relying solely on DTLS. | |||
6.8.5. ACP Secure Channel Profiles | 6.8.5. ACP Secure Channel Profiles | |||
As explained in the beginning of Section 6.6, there is no single | As explained in the beginning of Section 6.6, there is no single | |||
secure channel mechanism mandated for all ACP nodes. Instead, this | secure channel mechanism mandated for all ACP nodes. Instead, this | |||
section defines two ACP profiles (baseline and constrained) for ACP | section defines two ACP profiles, "baseline" and "constrained", for | |||
nodes that do introduce such requirements. | ACP nodes that do introduce such requirements. | |||
An ACP node supporting the "baseline" profile MUST support IPsec | An ACP node supporting the baseline profile MUST support IPsec | |||
natively and MAY support IPsec via GRE. An ACP node supporting the | natively and MAY support IPsec via GRE. An ACP node supporting the | |||
"constrained" profile node that cannot support IPsec MUST support | constrained profile that cannot support IPsec MUST support DTLS. An | |||
DTLS. An ACP node connecting an area of constrained ACP nodes with | ACP node connecting an area of constrained ACP nodes with an area of | |||
an area of baseline ACP nodes needs to support IPsec and DTLS and | baseline ACP nodes needs to support both IPsec and DTLS and therefore | |||
supports therefore the baseline and constrained profile. | supports both the baseline and constrained profiles. | |||
Explanation: Not all type of ACP nodes can or need to connect | Explanation: not all types of ACP nodes are able to or need to | |||
directly to each other or are able to support or prefer all possible | connect directly to each other, nor are they able to support or | |||
secure channel mechanisms. For example, code space limited IoT | prefer all possible secure channel mechanisms. For example, IoT | |||
devices may only support DTLS because that code exists already on | devices with limited code space may only support DTLS because that | |||
them for end-to-end security, but high-end core routers may not want | code already exists on them for end-to-end security, but high-end | |||
to support DTLS because they can perform IPsec in accelerated | core routers may not want to support DTLS because they can perform | |||
hardware but would need to support DTLS in an underpowered CPU | IPsec in accelerated hardware, but they would need to support DTLS in | |||
forwarding path shared with critical control plane operations. This | an underpowered CPU forwarding path shared with critical control | |||
is not a deployment issue for a single ACP across these type of nodes | plane operations. This is not a deployment issue for a single ACP | |||
as long as there are also appropriate gateway ACP nodes that support | across these types of nodes as long as there are also appropriate | |||
sufficiently many secure channel mechanisms to allow interconnecting | gateway ACP nodes that sufficiently support many secure channel | |||
areas of ACP nodes with a more constrained set of secure channel | mechanisms to allow interconnecting areas of ACP nodes with a more | |||
protocols. On the edge between IoT areas and high-end core networks, | constrained set of secure channel protocols. On the edge between IoT | |||
general-purpose routers that act as those gateways and that can | areas and high-end core networks, general-purpose routers that act as | |||
support a variety of secure channel protocols is the norm already. | those gateways and that can support a variety of secure channel | |||
protocols are the norm already. | ||||
IPsec natively with tunnel mode provides the shortest encapsulation | Native IPsec with tunnel mode provides the shortest encapsulation | |||
overhead. GRE may be preferred by legacy implementations because the | overhead. GRE may be preferred by legacy implementations because, in | |||
virtual interfaces required by ACP design in conjunction with secure | the past, the virtual interfaces required by ACP design in | |||
channels have in the past more often been implemented for GRE than | conjunction with secure channels have been implemented more often for | |||
purely for native IPsec. | GRE than purely for native IPsec. | |||
ACP nodes need to specify in documentation the set of secure ACP | ACP nodes need to specify the set of secure ACP mechanisms they | |||
mechanisms they support and should declare which profile they support | support in documentation and should declare which profile they | |||
according to above requirements. | support according to the above requirements. | |||
6.9. GRASP in the ACP | 6.9. GRASP in the ACP | |||
6.9.1. GRASP as a core service of the ACP | 6.9.1. GRASP as a Core Service of the ACP | |||
The ACP MUST run an instance of GRASP inside of it. It is a key part | The ACP MUST run an instance of GRASP inside of it. It is a key part | |||
of the ACP services. The function in GRASP that makes it fundamental | of the ACP services. The function in GRASP that makes it fundamental | |||
as a service of the ACP is the ability to provide ACP wide service | as a service of the ACP is the ability to provide ACP-wide service | |||
discovery (using objectives in GRASP). | discovery (using objectives in GRASP). | |||
ACP provides IP unicast routing via the RPL routing protocol (see | ACP provides IP unicast routing via RPL (see Section 6.12). | |||
Section 6.12). | ||||
The ACP does not use IP multicast routing nor does it provide generic | The ACP does not use IP multicast routing nor does it provide generic | |||
IP multicast services (the handling of GRASP link-local multicast | IP multicast services (the handling of GRASP link-local multicast | |||
messages is explained in Section 6.9.2). Instead, the ACP provides | messages is explained in Section 6.9.2). Instead, the ACP provides | |||
service discovery via the objective discovery/announcement and | service discovery via the objective discovery/announcement and | |||
negotiation mechanisms of the ACP GRASP instance (services are a form | negotiation mechanisms of the ACP GRASP instance (services are a form | |||
of objectives). These mechanisms use hop-by-hop reliable flooding of | of objectives). These mechanisms use hop-by-hop reliable flooding of | |||
GRASP messages for both service discovery (GRASP M_DISCOVERY | GRASP messages for both service discovery (GRASP M_DISCOVERY | |||
messages) and service announcement (GRASP M_FLOOD messages). | messages) and service announcement (GRASP M_FLOOD messages). | |||
See Appendix A.5 for discussion about this design choice of the ACP. | See Appendix A.5 for discussion about this design choice of the ACP. | |||
6.9.2. ACP as the Security and Transport substrate for GRASP | 6.9.2. ACP as the Security and Transport Substrate for GRASP | |||
In the terminology of GRASP ([I-D.ietf-anima-grasp]), the ACP is the | In the terminology of GRASP [RFC8990], the ACP is the security and | |||
security and transport substrate for the GRASP instance run inside | transport substrate for the GRASP instance run inside the ACP ("ACP | |||
the ACP ("ACP GRASP"). | GRASP"). | |||
This means that the ACP is responsible for ensuring that this | This means that the ACP is responsible for ensuring that this | |||
instance of GRASP is only sending messages across the ACP GRASP | instance of GRASP is only sending messages across the ACP GRASP | |||
virtual interfaces. Whenever the ACP adds or deletes such an | virtual interfaces. Whenever the ACP adds or deletes such an | |||
interface because of new ACP secure channels or loss thereof, the ACP | interface because of new ACP secure channels or loss thereof, the ACP | |||
needs to indicate this to the ACP instance of GRASP. The ACP exists | needs to indicate this to the ACP instance of GRASP. The ACP exists | |||
also in the absence of any active ACP neighbors. It is created when | also in the absence of any active ACP neighbors. It is created when | |||
the node has a domain certificate, and continues to exist even if all | the node has a domain certificate, and it continues to exist even if | |||
of its neighbors cease operation. | all of its neighbors cease operation. | |||
In this case ASAs using GRASP running on the same node would still | In this case, ASAs using GRASP running on the same node still need to | |||
need to be able to discover each other's objectives. When the ACP | be able to discover each other's objectives. When the ACP does not | |||
does not exist, ASAs leveraging the ACP instance of GRASP via APIs | exist, ASAs leveraging the ACP instance of GRASP via APIs MUST still | |||
MUST still be able to operate, and MUST be able to understand that | be able to operate, and they MUST be able to understand that there is | |||
there is no ACP and that therefore the ACP instance of GRASP cannot | no ACP and that therefore the ACP instance of GRASP cannot operate. | |||
operate. | ||||
The following explanation how ACP acts as the security and transport | How the ACP acts as the security and transport substrate for GRASP is | |||
substrate for GRASP is visualized in Figure 9 below. | shown in Figure 8. | |||
GRASP unicast messages inside the ACP always use the ACP address. | GRASP unicast messages inside the ACP always use the ACP address. | |||
Link-local addresses from the ACP VRF MUST NOT be used inside | Link-local addresses from the ACP VRF MUST NOT be used inside | |||
objectives. GRASP unicast messages inside the ACP are transported | objectives. GRASP unicast messages inside the ACP are transported | |||
via TLS. See Section 6.1 for TLS requirements. TLS mutual | via TLS. See Section 6.1 for TLS requirements. TLS mutual | |||
authentication MUST use the ACP domain membership check defined in | authentication MUST use the ACP domain membership check defined in | |||
(Section 6.2.3). | Section 6.2.3. | |||
GRASP link-local multicast messages are targeted for a specific ACP | GRASP link-local multicast messages are targeted for a specific ACP | |||
virtual interface (as defined Section 6.13.5) but are sent by the ACP | virtual interface (as defined Section 6.13.5), but they are sent by | |||
into an ACP GRASP virtual interface that is constructed from the TCP | the ACP to an ACP GRASP virtual interface that is constructed from | |||
connection(s) to the IPv6 link-local neighbor address(es) on the | the TCP connection(s) to the IPv6 link-local neighbor address(es) on | |||
underlying ACP virtual interface. If the ACP GRASP virtual interface | the underlying ACP virtual interface. If the ACP GRASP virtual | |||
has two or more neighbors, the GRASP link-local multicast messages | interface has two or more neighbors, the GRASP link-local multicast | |||
are replicated to all neighbor TCP connections. | messages are replicated to all neighbor TCP connections. | |||
TCP and TLS connections for GRASP in the ACP use the IANA assigned | TCP and TLS connections for GRASP in the ACP use the IANA-assigned | |||
TCP port for GRASP (7107). Effectively the transport stack is | TCP port for GRASP (7017). Effectively, the transport stack is | |||
expected to be TLS for connections from/to the ACP address (e.g., | expected to be TLS for connections to and from the ACP address (e.g., | |||
global scope address(es)) and TCP for connections from/to link-local | global-scope address(es)) and TCP for connections to and from the | |||
addresses on the ACP virtual interfaces. The latter ones are only | link-local addresses on the ACP virtual interfaces. The latter ones | |||
used for flooding of GRASP messages. | are only used for the flooding of GRASP messages. | |||
..............................ACP.............................. | ..............................ACP.............................. | |||
. . | . . | |||
. /-GRASP-flooding-\ ACP GRASP instance . | . /-GRASP-flooding-\ ACP GRASP instance . | |||
. / \ A | . / \ A | |||
. GRASP GRASP GRASP C | . GRASP GRASP GRASP C | |||
. link-local unicast link-local P | . link-local unicast link-local P | |||
. multicast messages multicast . | . multicast messages multicast . | |||
. messages | messages . | . messages | messages . | |||
. | | | . | . | | | . | |||
............................................................... | ............................................................... | |||
. v v v ACP security and transport . | . v v v ACP security and transport . | |||
. | | | substrate for GRASP . | . | | | substrate for GRASP . | |||
. | | | . | . | | | . | |||
. | ACP GRASP | - ACP GRASP A | . | ACP GRASP | - ACP GRASP A | |||
. | Loopback | Loopback interface C | . | loopback | loopback interface C | |||
. | interface | - ACP-cert auth P | . | interface | - ACP-cert auth P | |||
. | TLS | . | . | TLS | . | |||
. ACP GRASP | ACP GRASP - ACP GRASP virtual . | . ACP GRASP | ACP GRASP - ACP GRASP virtual . | |||
. subnet1 | subnet2 virtual interfaces . | . subnet1 | subnet2 interfaces . | |||
. TCP | TCP . | . TCP | TCP . | |||
. | | | . | . | | | . | |||
............................................................... | ............................................................... | |||
. | | | ^^^ Users of ACP (GRASP/ASA) . | . | | | ^^^ Users of ACP (GRASP/ASA) . | |||
. | | | ACP interfaces/addressing . | . | | | ACP interfaces/addressing . | |||
. | | | . | . | | | . | |||
. | | | A | . | | | A | |||
. | ACP-Loopback Interf.| <- ACP Loopback interface C | . | ACP loopback interf.| <- ACP loopback interface C | |||
. | ACP-address | - address (global ULA) P | . | ACP-address | - address (global ULA) P | |||
. subnet1 | subnet2 <- ACP virtual interfaces . | . subnet1 | subnet2 <- ACP virtual interfaces . | |||
. link-local | link-local - link-local addresses . | . link-local | link-local - link-local addresses . | |||
............................................................... | ............................................................... | |||
. | | | ACP VRF . | . | | | ACP VRF . | |||
. | RPL-routing | virtual routing and forwarding . | . | RPL-routing | virtual routing and forwarding . | |||
. | /IP-Forwarding\ | A | . | /IP-Forwarding\ | A | |||
. | / \ | C | . | / \ | C | |||
. ACP IPv6 packets ACP IPv6 packets P | . ACP IPv6 packets ACP IPv6 packets P | |||
. |/ \| . | . |/ \| . | |||
. IPsec/DTLS IPsec/DTLS - ACP-cert auth . | . IPsec/DTLS IPsec/DTLS - ACP-cert auth . | |||
............................................................... | ............................................................... | |||
| | Data-Plane | | | Data Plane | |||
| | | | | | |||
| | - ACP secure channel | | | - ACP secure channel | |||
link-local link-local - encapsulation addresses | link-local link-local - encapsulation addresses | |||
subnet1 subnet2 - Data-Plane interfaces | subnet1 subnet2 - data plane interfaces | |||
| | | | | | |||
ACP-Nbr1 ACP-Nbr2 | ACP-Nbr1 ACP-Nbr2 | |||
Figure 9: ACP as security and transport substrate for GRASP | Figure 8: ACP as Security and Transport Substrate for GRASP | |||
6.9.2.1. Discussion | 6.9.2.1. Discussion | |||
TCP encapsulation for GRASP M_DISCOVERY and M_FLOOD link local | TCP encapsulation for GRASP M_DISCOVERY and M_FLOOD link-local | |||
messages is used because these messages are flooded across | messages is used because these messages are flooded across | |||
potentially many hops to all ACP nodes and a single link with even | potentially many hops to all ACP nodes, and a single link with even | |||
temporary packet loss issues (e.g., WiFi/Powerline link) can reduce | temporary packet-loss issues (e.g., a Wi-Fi or Powerline link) can | |||
the probability for loss free transmission so much that applications | reduce the probability for loss-free transmission so much that | |||
would want to increase the frequency with which they send these | applications would want to increase the frequency with which they | |||
messages. Such shorter periodic retransmission of datagrams would | send these messages. Such shorter periodic retransmission of | |||
result in more traffic and processing overhead in the ACP than the | datagrams would result in more traffic and processing overhead in the | |||
hop-by-hop reliable retransmission mechanism by TCP and duplicate | ACP than the hop-by-hop, reliable retransmission mechanism offered by | |||
elimination by GRASP. | TCP and duplicate elimination by GRASP. | |||
TLS is mandated for GRASP non-link-local unicast because the ACP | TLS is mandated for GRASP non-link-local unicast because the ACP | |||
secure channel mandatory authentication and encryption protects only | secure channel mandatory authentication and encryption protects only | |||
against attacks from the outside but not against attacks from the | against attacks from the outside but not against attacks from the | |||
inside: Compromised ACP members that have (not yet) been detected and | inside: compromised ACP members that have (not yet) been detected and | |||
removed (e.g., via domain certificate revocation / expiry). | removed (e.g., via domain certificate revocation and/or expiry). | |||
If GRASP peer connections were to use just TCP, compromised ACP | If GRASP peer connections were to use just TCP, compromised ACP | |||
members could simply eavesdrop passively on GRASP peer connections | members could simply eavesdrop passively on GRASP peer connections | |||
for whom they are on-path ("man in the middle" - MITM) or intercept | for which they are on-path ("man in the middle" or MITM) or intercept | |||
and modify them. With TLS, it is not possible to completely | and modify messages. With TLS, it is not possible to completely | |||
eliminate problems with compromised ACP members, but attacks are a | eliminate problems with compromised ACP members, but attacks are a | |||
lot more complex: | lot more complex. | |||
Eavesdropping/spoofing by a compromised ACP node is still possible | Eavesdropping and/or spoofing by a compromised ACP node is still | |||
because in the model of the ACP and GRASP, the provider and consumer | possible because in the model of the ACP and GRASP, the provider and | |||
of an objective have initially no unique information (such as an | consumer of an objective have initially no unique information (such | |||
identity) about the other side which would allow them to distinguish | as an identity) about the other side that would allow them to | |||
a benevolent from a compromised peer. The compromised ACP node would | distinguish a benevolent from a compromised peer. The compromised | |||
simply announce the objective as well, potentially filter the | ACP node would simply announce the objective as well, potentially | |||
original objective in GRASP when it is a MITM and act as an | filter the original objective in GRASP when it is a MITM and act as | |||
application level proxy. This of course requires that the | an application-level proxy. This of course requires that the | |||
compromised ACP node understand the semantics of the GRASP | compromised ACP node understand the semantics of the GRASP | |||
negotiation to an extent that allows it to proxy it without being | negotiation to an extent that allows the compromised node to proxy | |||
detected, but in an ACP environment this is quite likely public | the messages without being detected, but in an ACP environment, this | |||
knowledge or even standardized. | is quite likely public knowledge or even standardized. | |||
The GRASP TLS connections are run the same as any other ACP traffic | The GRASP TLS connections are run the same as any other ACP traffic | |||
through the ACP secure channels. This leads to double | through the ACP secure channels. This leads to double authentication | |||
authentication/encryption, which has the following benefits: | and encryption, which has the following benefits: | |||
* Secure channel methods such as IPsec may provide protection | * Secure channel methods such as IPsec may provide protection | |||
against additional attacks, for example reset-attacks. | against additional attacks, for example, reset attacks. | |||
* The secure channel method may leverage hardware acceleration and | ||||
* The secure channel method may leverage hardware acceleration, and | ||||
there may be little or no gain in eliminating it. | there may be little or no gain in eliminating it. | |||
* There is no different security model for ACP GRASP from other ACP | * The security model for ACP GRASP is no different than other ACP | |||
traffic. Instead, there is just another layer of protection | traffic. Instead, there is just another layer of protection | |||
against certain attacks from the inside which is important due to | against certain attacks from the inside, which is important due to | |||
the role of GRASP in the ACP. | the role of GRASP in the ACP. | |||
6.10. Context Separation | 6.10. Context Separation | |||
The ACP is in a separate context from the normal Data-Plane of the | The ACP is in a separate context from the normal data plane of the | |||
node. This context includes the ACP channels' IPv6 forwarding and | node. This context includes the ACP channels' IPv6 forwarding and | |||
routing as well as any required higher layer ACP functions. | routing as well as any required higher-layer ACP functions. | |||
In classical network system, a dedicated VRF is one logical | In a classical network system, a dedicated VRF is one logical | |||
implementation option for the ACP. If possible by the systems | implementation option for the ACP. If allowed by the system's | |||
software architecture, separation options that minimize shared | software architecture, separation options that minimize shared | |||
components are preferred, such as a logical container or virtual | components, such as a logical container or virtual machine instance, | |||
machine instance. The context for the ACP needs to be established | are preferred. The context for the ACP needs to be established | |||
automatically during bootstrap of a node. As much as possible it | automatically during the bootstrap of a node. As much as possible, | |||
should be protected from being modified unintentionally by ("Data- | it should be protected from being modified unintentionally by (data | |||
Plane") configuration. | plane) configuration. | |||
Context separation improves security, because the ACP is not | Context separation improves security because the ACP is not reachable | |||
reachable from the Data-Plane routing or forwarding table(s). Also, | from the data plane routing or forwarding table(s). Also, | |||
configuration errors from the Data-Plane setup do not affect the ACP. | configuration errors from the data plane setup do not affect the ACP. | |||
6.11. Addressing inside the ACP | 6.11. Addressing inside the ACP | |||
The channels explained above typically only establish communication | The channels explained above typically only establish communication | |||
between two adjacent nodes. In order for communication to happen | between two adjacent nodes. In order for communication to happen | |||
across multiple hops, the autonomic control plane requires ACP | across multiple hops, the Autonomic Control Plane requires ACP | |||
network wide valid addresses and routing. Each ACP node creates a | network-wide valid addresses and routing. Each ACP node creates a | |||
Loopback interface with an ACP network wide unique address (prefix) | loopback interface with an ACP network-wide unique address (prefix) | |||
inside the ACP context (as explained in in Section 6.10). This | inside the ACP context (as explained in Section 6.10). This address | |||
address may be used also in other virtual contexts. | may be used also in other virtual contexts. | |||
With the algorithm introduced here, all ACP nodes in the same routing | With the algorithm introduced here, all ACP nodes in the same routing | |||
subdomain have the same /48 ULA prefix. Conversely, ULA global IDs | subdomain have the same /48 ULA prefix. Conversely, ULA Global IDs | |||
from different domains are unlikely to clash, such that two ACP | from different domains are unlikely to clash, such that two ACP | |||
networks can be merged, as long as the policy allows that merge. See | networks can be merged, as long as the policy allows that merge. See | |||
also Section 10.1 for a discussion on merging domains. | also Section 10.1 for a discussion on merging domains. | |||
Links inside the ACP only use link-local IPv6 addressing, such that | Links inside the ACP only use link-local IPv6 addressing, such that | |||
each node's ACP only requires one routable address prefix. | each node's ACP only requires one routable address prefix. | |||
6.11.1. Fundamental Concepts of Autonomic Addressing | 6.11.1. Fundamental Concepts of Autonomic Addressing | |||
* Usage: Autonomic addresses are exclusively used for self- | * Usage: autonomic addresses are exclusively used for self- | |||
management functions inside a trusted domain. They are not used | management functions inside a trusted domain. They are not used | |||
for user traffic. Communications with entities outside the | for user traffic. Communications with entities outside the | |||
trusted domain use another address space, for example normally | trusted domain use another address space, for example, a normally | |||
managed routable address space (called "Data-Plane" in this | managed routable address space (called "data plane" in this | |||
document). | document). | |||
* Separation: Autonomic address space is used separately from user | ||||
* Separation: autonomic address space is used separately from user | ||||
address space and other address realms. This supports the | address space and other address realms. This supports the | |||
robustness requirement. | robustness requirement. | |||
* Loopback-only: Only ACP Loopback interfaces (and potentially those | ||||
configured for "ACP connect", see Section 8.1) carry routable | * Loopback only: only ACP loopback interfaces (and potentially those | |||
configured for ACP connect, see Section 8.1) carry routable | ||||
address(es); all other interfaces (called ACP virtual interfaces) | address(es); all other interfaces (called ACP virtual interfaces) | |||
only use IPv6 link local addresses. The usage of IPv6 link local | only use IPv6 link-local addresses. The usage of IPv6 link-local | |||
addressing is discussed in [RFC7404]. | addressing is discussed in "Using Only Link-Local Addressing | |||
* Use-ULA: For Loopback interfaces of ACP nodes, we use ULA with L=1 | inside an IPv6 Network" [RFC7404]. | |||
(as defined in section 3.1 of [RFC4193]). Note that the random | ||||
hash for ACP Loopback addresses uses the definition in | * Use of ULA: for loopback interfaces of ACP nodes, we use ULA with | |||
Section 6.11.2 and not the one of [RFC4193] section 3.2.2. | the L bit set to 1 (as defined in Section 3.1 of [RFC4193]). Note | |||
* No external connectivity: They do not provide access to the | that the random hash for ACP loopback addresses uses the | |||
Internet. If a node requires further reaching connectivity, it | definition in Section 6.11.2 and not the one in [RFC4193], | |||
should use another, traditionally managed address scheme in | Section 3.2.2. | |||
parallel. | ||||
* Addresses in the ACP are permanent, and do not support temporary | * No external connectivity: the addresses do not provide access to | |||
addresses as defined in [RFC4941]. | the Internet. If a node requires further connectivity, it should | |||
use another, traditionally managed addressing scheme in parallel. | ||||
* Addresses in the ACP are permanent and do not support temporary | ||||
addresses as defined in "Temporary Address Extensions for | ||||
Stateless Address Autoconfiguration in IPv6" [RFC8981]. | ||||
* Addresses in the ACP are not considered sensitive on privacy | * Addresses in the ACP are not considered sensitive on privacy | |||
grounds because ACP nodes are not expected to be end-user hosts | grounds because ACP nodes are not expected to be end-user hosts, | |||
and ACP addresses do therefore not represent end-users or groups | and therefore ACP addresses do not represent end users or groups | |||
of end-users. All ACP nodes are in one (potentially federated) | of end users. All ACP nodes are in one (potentially federated) | |||
administrative domain. They are assumed to be to be candidate | administrative domain. For ACP traffic, the nodes are assumed to | |||
hosts of ACP traffic amongst each other or transit thereof. There | be either candidate hosts or transit nodes. There are no transit | |||
are no transit nodes less privileged to know about the identity of | nodes with fewer privileges to know the identity of other hosts in | |||
other hosts in the ACP. Therefore, ACP addresses do not need to | the ACP. Therefore, ACP addresses do not need to be pseudorandom | |||
be pseudo-random as discussed in [RFC7721]. Because they are not | as discussed in "Security and Privacy Considerations for IPv6 | |||
propagated to untrusted (non ACP) nodes and stay within a domain | Address Generation Mechanisms" [RFC7721]. Because they are not | |||
(of trust), we also consider them not to be subject to scanning | propagated to untrusted (non-ACP) nodes and stay within a domain | |||
(of trust), we also do not consider them to be subject to scanning | ||||
attacks. | attacks. | |||
The ACP is based exclusively on IPv6 addressing, for a variety of | The ACP is based exclusively on IPv6 addressing for a variety of | |||
reasons: | reasons: | |||
* Simplicity, reliability and scale: If other network layer | * Simplicity, reliability, and scale: if other network-layer | |||
protocols were supported, each would have to have its own set of | protocols were supported, each would have to have its own set of | |||
security associations, routing table and process, etc. | security associations, routing table, and process, etc. | |||
* Autonomic functions do not require IPv4: Autonomic functions and | ||||
* Autonomic functions do not require IPv4: autonomic functions and | ||||
autonomic service agents are new concepts. They can be | autonomic service agents are new concepts. They can be | |||
exclusively built on IPv6 from day one. There is no need for | exclusively built on IPv6 from day one. There is no need for | |||
backward compatibility. | backward compatibility. | |||
* OAM protocols do not require IPv4: The ACP may carry OAM | ||||
* OAM protocols do not require IPv4: the ACP may carry OAM | ||||
protocols. All relevant protocols (SNMP, TFTP, SSH, SCP, RADIUS, | protocols. All relevant protocols (SNMP, TFTP, SSH, SCP, RADIUS, | |||
Diameter, NETCONF ...) are available in IPv6. See also [RFC8368] | Diameter, NETCONF, etc.) are available in IPv6. See also | |||
for how ACP could be made to interoperate with IPv4 only OAM. | [RFC8368] for how ACP could be made to interoperate with IPv4-only | |||
OAM. | ||||
Further explanation about the addressing and routing related reasons | Further explanation about the addressing and routing-related reasons | |||
for the choice of the autonomous ACP addressing can be found in | for the choice of the autonomous ACP addressing can be found in | |||
Section 6.13.5.1. | Section 6.13.5.1. | |||
6.11.2. The ACP Addressing Base Scheme | 6.11.2. The ACP Addressing Base Scheme | |||
The Base ULA addressing scheme for ACP nodes has the following | The ULA addressing base scheme for ACP nodes has the following | |||
format: | format: | |||
8 40 2 78 | 8 40 2 78 | |||
+--+-------------------------+------+------------------------------+ | +--+-------------------------+------+------------------------------+ | |||
|fd| hash(routing-subdomain) | Type | (sub-scheme) | | |fd| hash(routing-subdomain) | Type | (sub-scheme) | | |||
+--+-------------------------+------+------------------------------+ | +--+-------------------------+------+------------------------------+ | |||
Figure 10: ACP Addressing Base Scheme | Figure 9: ACP Addressing Base Scheme | |||
The first 48-bits follow the ULA scheme, as defined in [RFC4193], to | The first 48 bits follow the ULA scheme as defined in [RFC4193], to | |||
which a type field is added: | which a Type field is added. | |||
* "fd" identifies a locally defined ULA address. | fd: Identifies a locally defined ULA address. | |||
* The 40-bits ULA "global ID" (term from [RFC4193]) for ACP | ||||
addresses carried in the acp-node-name in the ACP certificates are | hash(routing-subdomain): The 40-bit ULA Global ID (a term from | |||
the first 40-bits of the SHA256 hash of the routing subdomain from | [RFC4193]) for ACP addresses carried in the acp-node-name in the | |||
the same acp-node-name. In the example of Section 6.2.2, the | ACP certificates are the first 40 bits of the SHA-256 hash of the | |||
routing subdomain is "area51.research.acp.example.com" and the | routing-subdomain from the same acp-node-name. In the example of | |||
40-bits ULA "global ID" 89b714f3db. | Section 6.2.2, the routing-subdomain is | |||
* When creating a new routing-subdomain for an existing autonomic | "area51.research.acp.example.com", and the 40-bit ULA Global ID is | |||
network, it MUST be ensured, that rsub is selected so the | 89b714f3db. | |||
resulting hash of the routing-subdomain does not collide with the | ||||
hash of any pre-existing routing-subdomains of the autonomic | When creating a new routing-subdomain for an existing Autonomic | |||
network. This ensures that ACP addresses created by registrars | Network, it MUST be ensured that rsub is selected so the resulting | |||
for different routing subdomains do not collide with each other. | hash of the routing-subdomain does not collide with the hash of | |||
* To allow for extensibility, the fact that the ULA "global ID" is a | any preexisting routing-subdomains of the Autonomic Network. This | |||
hash of the routing subdomain SHOULD NOT be assumed by any ACP | ensures that ACP addresses created by registrars for different | |||
routing subdomains do not collide with each other. | ||||
To allow for extensibility, the fact that the ULA Global ID is a | ||||
hash of the routing-subdomain SHOULD NOT be assumed by any ACP | ||||
node during normal operations. The hash function is only executed | node during normal operations. The hash function is only executed | |||
during the creation of the certificate. If BRSKI is used, then | during the creation of the certificate. If BRSKI is used, then | |||
the BRSKI registrar will create the acp-node-name in response to | the BRSKI registrar will create the acp-node-name in response to | |||
the EST Certificate Signing Request (CSR) Attribute Request | the EST Certificate Signing Request (CSR) Attributes Request | |||
message by the pledge. | message sent by the pledge. | |||
* Establishing connectivity between different ACP (different acp- | Establishing connectivity between different ACPs (different acp- | |||
domain-name) is outside the scope of this specification. If it is | domain-names) is outside the scope of this specification. If it | |||
being done through future extensions, then the rsub of all | is being done through future extensions, then the rsub of all | |||
routing-subdomains across those autonomic networks need to be | routing-subdomains across those Autonomic Networks needs to be | |||
selected so the resulting routing-subdomain hashes do not collide. | selected so that the resulting routing-subdomain hashes do not | |||
For example, a large cooperation with its own private TA may want | collide. For example, a large cooperation with its own private TA | |||
to create different autonomic networks that initially should not | may want to create different Autonomic Networks that initially do | |||
be able to connect but where the option to do so should be kept | not connect but where the option to do so should be kept open. | |||
open. When taking this future possibility into account, it is | When taking this possibility into account, it is always easy to | |||
easy to always select rsub so that no collisions happen. | select rsub so that no collisions happen. | |||
* Type: This field allows different address sub-schemes. This | ||||
Type: This field allows different addressing sub-schemes. This | ||||
addresses the "upgradability" requirement. Assignment of types | addresses the "upgradability" requirement. Assignment of types | |||
for this field will be maintained by IANA. | for this field will be maintained by IANA. | |||
The sub-scheme may imply a range or set of addresses assigned to the | (sub-scheme): The sub-scheme may imply a range or set of addresses | |||
node, this is called the ACP address range/set and explained in each | assigned to the node. This is called the ACP address range/set | |||
sub-scheme. | and explained in each sub-scheme. | |||
Please refer to Section 6.11.7 and Appendix A.1 for further | Please refer to Section 6.11.7 and Appendix A.1 for further | |||
explanations why the following Sub-Addressing schemes are used and | explanations for why the following addressing sub-schemes are used | |||
why multiple are necessary. | and why multiple are necessary. | |||
The following summarizes the addressing Sub-Schemes: | The following summarizes the addressing sub-schemes: | |||
+------+-----------------+-----------+-------------------+ | +======+==============+=======+=====+=========+========+ | |||
| Type | Name |F-bit| Z | V-bits | Prefix | | | Type | Name | F-bit | Z | V-bits | Prefix | | |||
+------+-----------------+-----+-----+----------+--------+ | +======+==============+=======+=====+=========+========+ | |||
| 0x00 | ACP-Zone | N/A | 0 | 1 bit | /127 | | | 0 | ACP-Zone | N/A | 0 | 1 bit | /127 | | |||
+------+-----------------+-----+-----+----------+--------+ | +------+--------------+-------+-----+---------+--------+ | |||
| 0x00 | ACP-Manual | N/A | 1 | N/A | /64 | | | 0 | ACP-Manual | N/A | 1 | N/A | /64 | | |||
+------+-----------------+-----+-----+----------+--------+ | +------+--------------+-------+-----+---------+--------+ | |||
| 0x01 | ACP-VLong-8 | 0 | N/A | 8 bits | /120 | | | 1 | ACP-Vlong-8 | 0 | N/A | 8 bits | /120 | | |||
+------+-----------------+-----+-----+----------+--------+ | +------+--------------+-------+-----+---------+--------+ | |||
| 0x01 | ACP-VLong-16 | 1 | N/A | 16 bits | /112 | | | 1 | ACP-Vlong-16 | 1 | N/A | 16 bits | /112 | | |||
+------+-----------------+-----+-----+----------+--------+ | +------+--------------+-------+-----+---------+--------+ | |||
| 0x10 | Reserved / For future definition/allocation | | | 2 | Reserved / For future definition/allocation | | |||
+------+-----------------+-----+-----+----------+--------+ | +------+-----------------------------------------------+ | |||
| 0x11 | Reserved / For future definition/allocation | | | 3 | Reserved / For future definition/allocation | | |||
+------+-----------------+-----+-----+----------+--------+ | +------+-----------------------------------------------+ | |||
Figure 11: Addressing Sub-Schemes | Table 1: Addressing Sub-Schemes | |||
F-Bit and Z are two encoding fields explained below for the Sub- | The F-bit (format bit, Section 6.11.5) and Z (Section 6.11.4) are two | |||
Schemes that introduce/use them. V-bits is the number of bits of | encoding fields that are explained in the sections covering the sub- | |||
addresses allocated to the ACP node. Prefix is the prefix the ACP | schemes that use them. V-bits is the number of bits of addresses | |||
node is announcing into the RPL routing protocol. | allocated to the ACP node. Prefix is the prefix that the ACP node is | |||
announcing into RPL. | ||||
6.11.3. ACP Zone Addressing Sub-Scheme (ACP-Zone) | 6.11.3. ACP Zone Addressing Sub-Scheme (ACP-Zone) | |||
This sub-scheme is used when the Type field of the base scheme is | This sub-scheme is used when the Type field of the base scheme is 0 | |||
0x00 and the Z bit is 0x0. | and the Z bit is 0. | |||
64 64 | 64 64 | |||
+-----------------+---+---------++-----------------------------+---+ | +-----------------+---+---------++-----------------------------+---+ | |||
| (base scheme) | Z | Zone-ID || Node-ID | | | (base scheme) | Z | Zone-ID || Node-ID | | |||
| | | || Registrar-ID | Node-Number| V | | | | | || Registrar-ID | Node-Number| V | | |||
+-----------------+---+---------++--------------+--------------+---+ | +-----------------+---+---------++--------------+--------------+---+ | |||
50 1 13 48 15 1 | 50 1 13 48 15 1 | |||
Figure 12: ACP Zone Addressing Sub-Scheme | Figure 10: ACP Zone Addressing Sub-Scheme | |||
The fields are defined as follows: | The fields are defined as follows: | |||
* Type: MUST be 0x0. | Type: MUST be 0. | |||
* Z: MUST be 0x0. | ||||
* Zone-ID: A value for a network zone. | ||||
* Node-ID: A unique value for each node. | ||||
The 64-bit Node-ID must be unique across the ACP domain for each | Z: MUST be 0. | |||
node. It is derived and composed as follows: | ||||
* Registrar-ID (48-bit): A number unique inside the domain that | Zone-ID: A value for a network zone. | |||
identifies the ACP registrar which assigned the Node-ID to the | ||||
node. One or more domain-wide unique identifiers of the ACP | ||||
registrar can be used for this purpose. See Section 6.11.7.2. | ||||
* Node-Number: Number to make the Node-ID unique. This can be | ||||
sequentially assigned by the ACP Registrar owning the Registrar- | ||||
ID. | ||||
* V (1-bit): Virtualization bit: 0: Indicates the ACP itself ("ACP | ||||
node base system); 1: Indicates the optional "host" context on the | ||||
ACP node (see below). | ||||
In the ACP Zone Addressing Sub-Scheme, the ACP address in the | Node-ID: A unique value for each node. | |||
certificate has V field as all zero bits. | ||||
The 64-bit Node-ID must be unique across the ACP domain for each | ||||
node. It is derived and composed as follows: | ||||
Registrar-ID (48 bits): A number unique inside the domain | ||||
identifying the ACP registrar that assigned the Node-ID to the | ||||
node. One or more domain-wide unique identifiers of the ACP | ||||
registrar can be used for this purpose. See Section 6.11.7.2. | ||||
Node-Number: A number to make the Node-ID unique. This can be | ||||
sequentially assigned by the ACP registrar owning the | ||||
Registrar-ID. | ||||
V (1 bit): Virtualization bit: | ||||
0: Indicates the ACP itself ("ACP node base system) | ||||
1: Indicates the optional "host" context on the ACP node (see | ||||
below). | ||||
In the Zone Addressing Sub-Scheme, the ACP address in the certificate | ||||
has V field as all zero bits. | ||||
The ACP address set of the node includes addresses with any Zone-ID | The ACP address set of the node includes addresses with any Zone-ID | |||
value and any V value. No two nodes in the same ACP can have the | value and any V value. Therefore, no two nodes in the same ACP and | |||
same Node-ID, but different Zone-IDs. | the same hash(routing-subdomain) can have the same Node-ID with the | |||
Zone Addressing Sub-Scheme, for example, by differing only in their | ||||
Zone-ID. | ||||
The Virtual bit in this sub-scheme allows the easy addition of the | The Virtualization bit in this sub-scheme allows the easy addition of | |||
ACP as a component to existing systems without causing problems in | the ACP as a component to existing systems without causing problems | |||
the port number space between the services in the ACP and the | in the port number space between the services in the ACP and the | |||
existing system. V:0 is the ACP router (autonomic node base system), | existing system. V=0 is the ACP router (autonomic node base system), | |||
V:1 is the host with pre-existing transport endpoints on it that | V=1 is the host with preexisting transport endpoints on it that could | |||
could collide with the transport endpoints used by the ACP router. | collide with the transport endpoints used by the ACP router. The ACP | |||
The ACP host could for example have a p2p virtual interface with the | host could, for example, have a P2P (peer-to-peer) virtual interface | |||
V:0 address as its router into the ACP. Depending on the software | with the V=0 address as its router to the ACP. Depending on the | |||
design of ASAs, which is outside the scope of this specification, | software design of ASAs, which is outside the scope of this | |||
they may use the V:0 or V:1 address. | specification, they may use the V=0 or V=1 address. | |||
The location of the V bit(s) at the end of the address allows the | The location of the V bit(s) at the end of the address allows the | |||
announcement of a single prefix for each ACP node. For example, in a | announcement of a single prefix for each ACP node. For example, in a | |||
network with 20,000 ACP nodes, this avoid 20,000 additional routes in | network with 20,000 ACP nodes, this avoids 20,000 additional routes | |||
the routing table. | in the routing table. | |||
It is RECOMMENDED that only Zone-ID 0 is used unless it is meant to | It is RECOMMENDED that only Zone-ID 0 is used unless it is meant to | |||
be used in conjunction with operational practices for partial/ | be used in conjunction with operational practices for partial or | |||
incremental adoption of the ACP as described in Section 9.4. | incremental adoption of the ACP as described in Section 9.4. | |||
Note: Zones and Zone-ID as defined here are not related to [RFC4007] | Note: Zones and Zone-ID as defined here are not related to zones or | |||
zones or zone_id. ACP zone addresses are not scoped (reachable only | zone_id defined in "IPv6 Scoped Address Architecture" [RFC4007]. ACP | |||
from within an RFC4007 zone) but reachable across the whole ACP. An | zone addresses are not scoped (i.e., reachable only from within a | |||
RFC4007 zone_id is a zone index that has only local significance on a | zone as defined by [RFC4007]) but are reachable across the whole ACP. | |||
node, whereas an ACP Zone-ID is an identifier for an ACP zone that is | A zone_id is a zone index that has only local significance on a node | |||
unique across that ACP. | [RFC4007], whereas an ACP Zone-ID is an identifier for an ACP zone | |||
that is unique across that ACP. | ||||
6.11.4. ACP Manual Addressing Sub-Scheme (ACP-Manual) | 6.11.4. ACP Manual Addressing Sub-Scheme (ACP-Manual) | |||
This sub-scheme is used when the Type field of the base scheme is | This sub-scheme is used when the Type field of the base scheme is 0 | |||
0x00 and the Z bit is 0x1. | and the Z bit is 1. | |||
64 64 | 64 64 | |||
+---------------------+---+----------++-----------------------------+ | +---------------------+---+----------++-----------------------------+ | |||
| (base scheme) | Z | Subnet-ID|| Interface Identifier | | | (base scheme) | Z | Subnet-ID|| Interface Identifier | | |||
+---------------------+---+----------++-----------------------------+ | +---------------------+---+----------++-----------------------------+ | |||
50 1 13 | 50 1 13 | |||
Figure 13: ACP Manual Addressing Sub-Scheme | Figure 11: ACP Manual Addressing Sub-Scheme | |||
The fields are defined as follows: | The fields are defined as follows: | |||
* Type: MUST be 0x0. | Type: MUST be 0. | |||
* Z: MUST be 0x1. | ||||
* Subnet-ID: Configured subnet identifier. | ||||
* Interface Identifier. | ||||
This sub-scheme is meant for "manual" allocation to subnets where the | Z: MUST be 1. | |||
other addressing schemes cannot be used. The primary use case is for | ||||
assignment to ACP connect subnets (see Section 8.1.1). | ||||
"Manual" means that allocations of the Subnet-ID need to be done | Subnet-ID: Configured subnet identifier. | |||
today with pre-existing, non-autonomic mechanisms. Every subnet that | ||||
uses this addressing sub-scheme needs to use a unique Subnet-ID | ||||
(unless some anycast setup is done). | ||||
The Z bit field was added to distinguish Zone addressing and manual | Interface Identifier: Interface identifier according to [RFC4291]. | |||
addressing sub-schemes without requiring one more bit in the base | ||||
scheme and therefore allowing for the Vlong scheme (described below) | ||||
to have one more bit available. | ||||
Manual addressing sub-scheme addresses SHOULD NOT be used in ACP | This sub-scheme is meant for the "manual" allocation to subnets where | |||
certificates. Any node capable to build ACP secure channels and | the other addressing schemes cannot be used. The primary use case is | |||
permitted by Registrar policy to participate in building ACP secure | for assignment to ACP connect subnets (see Section 8.1.1). | |||
channels SHOULD receive an ACP address (prefix) from one of the other | ||||
ACP addressing sub-schemes. Nodes not capable (or permitted) to | "Manual" means that allocations of the Subnet-ID need to be done with | |||
participate in ACP secure channels can connect to the ACP via ACP | preexisting, non-autonomic mechanisms. Every subnet that uses this | |||
connect interfaces of ACP edge nodes (see Section 8.1), without | addressing sub-scheme needs to use a unique Subnet-ID (unless some | |||
setting up an ACP secure channel. Their ACP certificate MUST omit | anycast setup is done). | |||
the acp-address field to indicate that their ACP certificate is only | ||||
usable for non- ACP secure channel authentication, such as end-to-end | The Z bit field was added to distinguish between the Zone Addressing | |||
transport connections across the ACP or Data-Plane. | Sub-Scheme and the Manual Addressing Sub-Scheme without requiring one | |||
more bit in the base scheme and therefore allowing for the Vlong | ||||
Addressing Sub-Scheme (described in Section 6.11.5) to have one more | ||||
bit available. | ||||
The Manual Addressing Sub-Scheme addresses SHOULD NOT be used in ACP | ||||
certificates. Any node capable of building ACP secure channels and | ||||
is permitted by registrar policy to participate in building ACP | ||||
secure channels SHOULD receive an ACP address (prefix) from one of | ||||
the other ACP addressing sub-schemes. A node that cannot or is not | ||||
permitted to participate in ACP secure channels can connect to the | ||||
ACP via ACP connect interfaces of ACP edge nodes (see Section 8.1) | ||||
without setting up an ACP secure channel. Its ACP certificate MUST | ||||
omit the acp-address field to indicate that its ACP certificate is | ||||
only usable for non-ACP secure channel authentication, such as end- | ||||
to-end transport connections across the ACP or data plane. | ||||
Address management of ACP connect subnets is done using traditional | Address management of ACP connect subnets is done using traditional | |||
assignment methods and existing IPv6 protocols. See Section 8.1.3 | assignment methods and existing IPv6 protocols. See Section 8.1.3 | |||
for details. Therefore, the notion of V-bit many addresses assigned | for details. Therefore, the notion of /V-bits multiple addresses | |||
to the ACP nodes does not apply to this Sub-Scheme. | assigned to the ACP nodes does not apply to this sub-scheme. | |||
6.11.5. ACP Vlong Addressing Sub-Scheme (ACP-VLong-8/ACP-VLong-16 | 6.11.5. ACP Vlong Addressing Sub-Scheme (ACP-Vlong-8/ACP-Vlong-16) | |||
This sub-scheme is used when the Type field of the base scheme is | This addressing sub-scheme is used when the Type field of the base | |||
0x01. | scheme is 1. | |||
50 78 | 50 78 | |||
+---------------------++-----------------------------+----------+ | +---------------------++-----------------------------+----------+ | |||
| (base scheme) || Node-ID | | | (base scheme) || Node-ID | | |||
| || Registrar-ID |F| Node-Number| V | | | || Registrar-ID |F| Node-Number| V | | |||
+---------------------++--------------+--------------+----------+ | +---------------------++--------------+--------------+----------+ | |||
50 46 1 23/15 8/16 | 50 46 1 23/15 8/16 | |||
Figure 14: ACP Vlong Addressing Sub-Scheme | Figure 12: ACP Vlong Addressing Sub-Scheme | |||
This addressing scheme foregoes the Zone-ID field to allow for | This addressing sub-scheme foregoes the Zone-ID field | |||
larger, flatter routed networks (e.g., as in IoT) with 8421376 Node- | (Section 6.11.3) to allow for larger, flatter routed networks (e.g., | |||
Numbers (2^23+2^15). It also allows for up to 2^16 (i.e. 65536) | as in IoT) with 8,421,376 Node-Numbers (2^23 + 2^15). It also allows | |||
different virtualized addresses within a node, which could be used to | for up to 2^16 (i.e., 65,536) different virtualized addresses within | |||
address individual software components in an ACP node. | a node, which could be used to address individual software components | |||
in an ACP node. | ||||
The fields are the same as in the Zone-ID sub-scheme with the | The fields are the same as in the Zone Addressing Sub-Scheme | |||
following refinements: | (Section 6.11.3) with the following refinements: | |||
* F: format bit. This bit determines the format of the subsequent | F: Format bit. This bit determines the format of the subsequent | |||
bits. | bits. | |||
* V: Virtualization bit: this is a field that is either 8 or 16 | ||||
bits. For F=0, it is 8 bits, for F=1 it is 16 bits. The V bits | V: Virtualization bit: this is a field that is either 8 or 16 bits. | |||
are assigned by the ACP node. In the ACP certificate's ACP | For F=0, it is 8 bits, for F=1 it is 16 bits. The V-bits are | |||
address Section 6.2.2, the V-bits are always set to 0. | assigned by the ACP node. In the ACP certificate's ACP address | |||
* Registrar-ID: To maximize Node-Number and V, the Registrar-ID is | (Section 6.2.2), the V-bits are always set to 0. | |||
reduced to 46-bits. One or more domain-wide unique identifiers of | ||||
Registrar-ID: To maximize Node-Number and V, the Registrar-ID is | ||||
reduced to 46 bits. One or more domain-wide unique identifiers of | ||||
the ACP registrar can be used for this purpose. See | the ACP registrar can be used for this purpose. See | |||
Section 6.11.7.2. | Section 6.11.7.2. | |||
* The Node-Number is unique to each ACP node. There are two formats | ||||
for the Node-Number. When F=0, the node-number is 23 bits, for | Node-Number: The Node-Number is unique to each ACP node. There are | |||
F=1 it is 15 bits. Each format of node-number is considered to be | two formats for the Node-Number. When F=0, the Node-Number is 23 | |||
in a unique number space. | bits, for F=1, it is 15 bits. Each format of Node-Number is | |||
considered to be in a unique number space. | ||||
The F=0 bit format addresses are intended to be used for "general | The F=0 bit format addresses are intended to be used for "general | |||
purpose" ACP nodes that would potentially have a limited number (< | purpose" ACP nodes that would potentially have a limited number (less | |||
256) of clients (ASA/Autonomic Functions or legacy services) of the | than 256) of clients (ASA and/or autonomic functions or legacy | |||
ACP that require separate V(irtual) addresses. | services) of the ACP that require separate V(irtual) addresses. | |||
The F=1 bit Node-Numbers are intended for ACP nodes that are ACP edge | The F=1 bit Node-Numbers are intended for ACP nodes that are ACP edge | |||
nodes (see Section 8.1.1) or that have a large number of clients | nodes (see Section 8.1.1) or that have a large number of clients | |||
requiring separate V(irtual) addresses. For example, large SDN | requiring separate V(irtual) addresses, for example, large SDN | |||
controllers with container modular software architecture (see | controllers with container modular software architecture (see | |||
Section 8.1.2). | Section 8.1.2). | |||
In the Vlong addressing sub-scheme, the ACP address in the | In the Vlong Addressing Sub-Scheme, the ACP address in the | |||
certificate has all V field bits as zero. The ACP address set for | certificate has all V field bits as zero. The ACP address set for | |||
the node includes any V value. | the node includes any V value. | |||
6.11.6. Other ACP Addressing Sub-Schemes | 6.11.6. Other ACP Addressing Sub-Schemes | |||
Before further addressing sub-schemes are defined, experience with | Before further addressing sub-schemes are defined, experience with | |||
the schemes defined here should be collected. The schemes defined in | the schemes defined here should be collected. The schemes defined in | |||
this document have been devised to allow hopefully sufficiently | this document have been devised to allow hopefully a sufficiently | |||
flexible setup of ACPs for a variety of situation. These reasons | flexible setup of ACPs for a variety of situations. These reasons | |||
also lead to the fairly liberal use of address space: The Zone | also lead to the fairly liberal use of address space: the Zone | |||
Addressing Sub-Scheme is intended to enable optimized routing in | Addressing Sub-Scheme is intended to enable optimized routing in | |||
large networks by reserving bits for Zone-ID's. The Vlong addressing | large networks by reserving bits for Zone-IDs. The Vlong Addressing | |||
sub-scheme enables the allocation of 8/16-bit of addresses inside | Sub-Scheme enables the allocation of 8/16-bit of addresses inside | |||
individual ACP nodes. Both address spaces allow distributed, | individual ACP nodes. Both address spaces allow distributed, | |||
uncoordinated allocation of node addresses by reserving bits for the | uncoordinated allocation of node addresses by reserving bits for the | |||
registrar-ID field in the address. | Registrar-ID field in the address. | |||
6.11.7. ACP Registrars | 6.11.7. ACP Registrars | |||
ACP registrars are responsible to enroll candidate ACP nodes with ACP | ACP registrars are responsible for enrolling candidate ACP nodes with | |||
certificates and associated trust anchor(s). They are also | ACP certificates and associated trust anchor(s). They are also | |||
responsible that an acp-node-name field is included in the ACP | responsible for including an acp-node-name field in the ACP | |||
certificate carrying the ACP domain name and the ACP nodes ACP | certificate. This field carries the ACP domain name and the ACP | |||
address prefix. This address prefix is intended to persist unchanged | node's ACP address prefix. This address prefix is intended to | |||
through the lifetime of the ACP node. | persist unchanged through the lifetime of the ACP node. | |||
Because of the ACP addressing sub-schemes, an ACP domain can have | Because of the ACP addressing sub-schemes, an ACP domain can have | |||
multiple distributed ACP registrars that do not need to coordinate | multiple distributed ACP registrars that do not need to coordinate | |||
for address assignment. ACP registrars can also be sub-CAs, in which | for address assignment. ACP registrars can also be sub-CAs, in which | |||
case they can also assign ACP certificates without dependencies | case they can also assign ACP certificates without dependencies | |||
against a (shared) TA (except during renewals of their own | against a (shared) TA (except during renewals of their own | |||
certificates). | certificates). | |||
ACP registrars are PKI registration authorities (RA) enhanced with | ACP registrars are PKI registration authorities (RA) enhanced with | |||
the handling of the ACP certificate specific fields. They request | the handling of the ACP certificate-specific fields. They request | |||
certificates for ACP nodes from a Certification Authority through any | certificates for ACP nodes from a CA through any appropriate | |||
appropriate mechanism (out of scope in this document, but required to | mechanism (out of scope in this document, but this mechanism is | |||
be BRSKI for ANI registrars). Only nodes that are trusted to be | required to be BRSKI for ANI registrars). Only nodes that are | |||
compliant with the requirements against registrar described in this | trusted to be compliant with the registrar requirements described in | |||
section can be given the necessary credentials to perform this RA | this section can be given the necessary credentials to perform this | |||
function, such as credentials for the BRSKI connection to the CA for | RA function, such as the credential for the ACP registrar to connect | |||
ANI registrars. | to the CA as a registrar. | |||
6.11.7.1. Use of BRSKI or other Mechanism/Protocols | 6.11.7.1. Use of BRSKI or Other Mechanisms or Protocols | |||
Any protocols or mechanisms may be used by ACP registrars, as long as | Any protocols or mechanisms may be used by ACP registrars as long as | |||
the resulting ACP certificate and TA certificate(s) allow to perform | the resulting ACP certificate and TA certificate(s) can be used by | |||
the ACP domain membership described in Section 6.2.3 with other ACP | other domain members to perform the ACP domain membership check | |||
domain members, and meet the ACP addressing requirements for its acp- | described in Section 6.2.3, and the acp-node-name meets the ACP | |||
node-name as described further below in this section. | addressing requirements described in the next three sections. | |||
An ACP registrar could be a person deciding whether to enroll a | An ACP registrar could be a person deciding whether to enroll a | |||
candidate ACP node and then orchestrating the enrollment of the ACP | candidate ACP node and then orchestrating the enrollment of the ACP | |||
certificate and associated TA, using command line or web based | certificate and associated TA, using command line or web-based | |||
commands on the candidate ACP node and TA to generate and sign the | commands on the candidate ACP node and TA to generate and sign the | |||
ACP certificate and configure certificate and TA onto the node. | ACP certificate and configure certificate and TA onto the node. | |||
The only currently defined protocol for ACP registrars is BRSKI | The only currently defined protocol for ACP registrars is BRSKI | |||
([I-D.ietf-anima-bootstrapping-keyinfra]). When BRSKI is used, the | [RFC8995]. When BRSKI is used, the ACP nodes are called ANI nodes, | |||
ACP nodes are called ANI nodes, and the ACP registrars are called | and the ACP registrars are called BRSKI or ANI registrars. The BRSKI | |||
BRSKI or ANI registrars. The BRSKI specification does not define the | specification does not define the handling of the acp-node-name field | |||
handling of the acp-node-name field because the rules do not depend | because the rules do not depend on BRSKI but apply equally to any | |||
on BRSKI but apply equally to any protocols/mechanisms an ACP | protocols or mechanisms that an ACP registrar may use. | |||
registrar may use. | ||||
6.11.7.2. Unique Address/Prefix allocation | 6.11.7.2. Unique Address/Prefix Allocation | |||
ACP registrars MUST NOT allocate ACP address prefixes to ACP nodes | ACP registrars MUST NOT allocate ACP address prefixes to ACP nodes | |||
via the acp-node-name that would collide with the ACP address | via the acp-node-name that would collide with the ACP address | |||
prefixes of other ACP nodes in the same ACP domain. This includes | prefixes of other ACP nodes in the same ACP domain. This includes | |||
both prefixes allocated by the same ACP registrar to different ACP | both prefixes allocated by the same ACP registrar to different ACP | |||
nodes as well as prefixes allocated by other ACP registrars for the | nodes as well as prefixes allocated by other ACP registrars for the | |||
same ACP domain. | same ACP domain. | |||
To support such unique address allocation, an ACP registrar MUST have | To support such unique address allocation, an ACP registrar MUST have | |||
one or more 46-bit identifiers unique across the ACP domain which is | one or more 46-bit identifiers, called the Registrar-ID, that are | |||
called the Registrar-ID. Allocation of Registrar-ID(s) to an ACP | unique across the ACP domain. Allocation of Registrar-ID(s) to an | |||
registrar can happen through OAM mechanisms in conjunction with some | ACP registrar can happen through OAM mechanisms in conjunction with | |||
database / allocation orchestration. | some database and/or allocation orchestration. | |||
ACP registrars running on physical devices with known globally unique | ACP registrars running on physical devices with known globally unique | |||
EUI-48 MAC address(es) can use the lower 46 bits of those address(es) | EUI-48 MAC address(es) (EUI stands for "Extended Unique Identifier") | |||
as unique Registrar-IDs without requiring any external signaling/ | can use the lower 46 bits of those address(es) as unique Registrar- | |||
configuration (the upper two bits, V and U are not uniquely assigned | IDs without requiring any external signaling and/or configuration | |||
but functional). This approach is attractive for distributed, non- | (the upper two bits, V and U, are not uniquely assigned but are | |||
functional). This approach is attractive for distributed, non- | ||||
centrally administered, lightweight ACP registrar implementations. | centrally administered, lightweight ACP registrar implementations. | |||
There is no mechanism to deduce from a MAC address itself whether it | There is no mechanism to deduce from a MAC address itself whether it | |||
is actually uniquely assigned. Implementations need to consult | is actually uniquely assigned. Implementations need to consult | |||
additional offline information before making this assumption. For | additional offline information before making this assumption, for | |||
example by knowing that a particular physical product/MIC-chip is | example, by knowing that a particular physical product or Network | |||
guaranteed to use globally unique assigned EUI-48 MAC address(es). | Interface Controller (NIC) chip is guaranteed to use globally unique | |||
assigned EUI-48 MAC address(es). | ||||
When the candidate ACP device (called Pledge in BRSKI) is to be | When the candidate ACP device (called pledge in BRSKI) is to be | |||
enrolled into an ACP domain, the ACP registrar needs to allocate a | enrolled into an ACP domain, the ACP registrar needs to allocate a | |||
unique ACP address to the node and ensure that the ACP certificate | unique ACP address to the node and ensure that the ACP certificate | |||
gets a acp-node-name field (Section 6.2.2) with the appropriate | gets an acp-node-name field (Section 6.2.2) with the appropriate | |||
information - ACP domain-name, ACP-address, and so on. If the ACP | information: ACP domain name, ACP address, and so on. If the ACP | |||
registrar uses BRSKI, it signals the ACP acp-node-name field to the | registrar uses BRSKI, it signals the ACP acp-node-name field to the | |||
Pledge via the EST /csrattrs command (see | pledge via EST CSR Attributes (see [RFC8995], Section 5.9.2, "EST CSR | |||
[I-D.ietf-anima-bootstrapping-keyinfra], section 5.9.2 - "EST CSR | ||||
Attributes"). | Attributes"). | |||
[RFC-Editor: please update reference to section 5.9.2 accordingly | ||||
with latest BRSKI draft at time of publishing, or RFC] | ||||
6.11.7.3. Addressing Sub-Scheme Policies | 6.11.7.3. Addressing Sub-Scheme Policies | |||
The ACP registrar selects for the candidate ACP node a unique address | The ACP registrar selects for the candidate ACP node a unique address | |||
prefix from an appropriate ACP addressing sub-scheme, either a zone | prefix from an appropriate ACP addressing sub-scheme, either a Zone | |||
addressing sub-scheme prefix (see Section 6.11.3), or a Vlong | Addressing Sub-Scheme prefix (see Section 6.11.3), or a Vlong | |||
addressing sub-scheme prefix (see Section 6.11.5). The assigned ACP | Addressing Sub-Scheme prefix (see Section 6.11.5). The assigned ACP | |||
address prefix encoded in the acp-node-name field of the ACP | address prefix encoded in the acp-node-name field of the ACP | |||
certificate indicates to the ACP node its ACP address information. | certificate indicates to the ACP node its ACP address information. | |||
The addressing sub-scheme indicates the prefix length: /127 for the | ||||
Zone Addressing Sub-Scheme, /120 or /112 for the Vlong Addressing | ||||
Sub-Scheme. The first address of the prefix is the ACP address. All | ||||
other addresses in the prefix are for other uses by the ACP node as | ||||
described in the Zone Addressing Sub-Scheme and Vlong Addressing Sub- | ||||
Scheme sections. The ACP address prefix itself is then signaled by | ||||
the ACP node into the ACP routing protocol (see Section 6.12) to | ||||
establish IPv6 reachability across the ACP. | ||||
The sub-addressing scheme indicates the prefix length: /127 for zone | The choice of addressing sub-scheme and prefix length in the Vlong | |||
address sub-scheme, /120 or /112 for Vlong address sub-scheme. The | Addressing Sub-Scheme is subject to ACP registrar policy. It could | |||
first address of the prefix is the ACP address. All other addresses | be an ACP domain-wide policy, or a per ACP node or per ACP node type | |||
in the prefix are for other uses by the ACP node as described in the | ||||
zone and Vlong addressing sub scheme sections. The ACP address | ||||
prefix itself is then signaled by the ACP node into the ACP routing | ||||
protocol (see Section 6.12) to establish IPv6 reachability across the | ||||
ACP. | ||||
The choice of addressing sub-scheme and prefix-length in the Vlong | ||||
address sub-scheme is subject to ACP registrar policy. It could be | ||||
an ACP domain wide policy, or a per ACP node or per ACP node type | ||||
policy. For example, in BRSKI, the ACP registrar is aware of the | policy. For example, in BRSKI, the ACP registrar is aware of the | |||
IDevID certificate of the candidate ACP node, which typically | IDevID certificate of the candidate ACP node, which typically | |||
contains a "serialNumber" attribute in the subject field | contains a "serialNumber" attribute in the subject field | |||
distinguished name encoding that is often indicating the node's | distinguished name encoding that often indicates the node's vendor | |||
vendor and device type and can be used to drive a policy selecting an | and device type, and it can be used to drive a policy for selecting | |||
appropriate addressing sub-scheme for the (class of) node(s). | an appropriate addressing sub-scheme for the (class of) node(s). | |||
ACP registrars SHOULD default to allocate ACP zone sub-address scheme | ACP registrars SHOULD default to allocating Zone Addressing Sub- | |||
addresses with Zone-ID 0. | Scheme addresses with Zone-ID 0. | |||
ACP registrars that are aware of the IDevID certificate of a | ACP registrars that are aware of the IDevID certificate of a | |||
candidate ACP device SHOULD be able to choose the zone vs. Vlong sub- | candidate ACP device SHOULD be able to choose the Zone vs. Vlong | |||
address scheme for ACP nodes based on the [X.520] "serialNumber" | Addressing Sub-Scheme for ACP nodes based on the "serialNumber" | |||
attribute in the subject field distinguished name encoding of the | attribute [X.520] in the subject field distinguished name encoding of | |||
IDevID certificate, for example by the PID (Product Identifier) part | the IDevID certificate, for example, by the PID (Product Identifier) | |||
which identifies the product type, or the complete "serialNumber". | part, which identifies the product type, or by the complete | |||
The PID for example could identify nodes that allow for specialized | "serialNumber". The PID, for example, could identify nodes that | |||
ASA requiring multiple addresses or non-autonomic VMs for services | allow for specialized ASA requiring multiple addresses or for non- | |||
and those nodes could receive Vlong sub-address scheme ACP addresses. | autonomic virtual machines (VMs) for services, and those nodes could | |||
receive Vlong Addressing Sub-Scheme ACP addresses. | ||||
In a simple allocation scheme, an ACP registrar remembers | In a simple allocation scheme, an ACP registrar remembers | |||
persistently across reboots its currently used Registrar-ID and for | persistently across reboots its currently used Registrar-ID and, for | |||
each addressing scheme (Zone with Zone-ID 0, Vlong with /112, Vlong | each addressing scheme (Zone with Zone-ID 0, Vlong with /112, Vlong | |||
with /120), the next Node-Number available for allocation and | with /120), the next Node-Number available for allocation, and it | |||
increases it during successful enrollment to an ACP node. In this | increases the next Node-Number during successful enrollment of an ACP | |||
simple allocation scheme, the ACP registrar would not recycle ACP | node. In this simple allocation scheme, the ACP registrar would not | |||
address prefixes from no longer used ACP nodes. | recycle ACP address prefixes from ACP nodes that are no longer used. | |||
If allocated addresses cannot be remembered by registrars, then it is | If allocated addresses cannot be remembered by registrars, then it is | |||
necessary to either use a new value for the Register-ID field in the | necessary either to use a new value for the Register-ID field in the | |||
ACP addresses, or determine allocated ACP addresses from determining | ACP addresses or to determine allocated ACP addresses by determining | |||
the addresses of reachable ACP nodes, which is not necessarily the | the addresses of reachable ACP nodes, which is not necessarily the | |||
set of all ACP nodes. Non-tracked ACP addresses can be reclaimed by | set of all ACP nodes. Untracked ACP addresses can be reclaimed by | |||
revoking or not renewing their certificates and instead handing out | revoking or not renewing their certificates and instead handing out | |||
new certificate with new addresses (for example with a new Registrar- | new certificates with new addresses (for example, with a new | |||
ID value). Note that such strategies may require coordination | Registrar-ID value). Note that such strategies may require | |||
amongst registrars. | coordination amongst registrars. | |||
6.11.7.4. Address/Prefix Persistence | 6.11.7.4. Address/Prefix Persistence | |||
When an ACP certificate is renewed or rekeyed via EST or other | When an ACP certificate is renewed or rekeyed via EST or other | |||
mechanisms, the ACP address/prefix in the acp-node-name field MUST be | mechanisms, the ACP address/prefix in the acp-node-name field MUST be | |||
maintained unless security issues or violations of the unique address | maintained unless security issues or violations of the unique address | |||
assignment requirements exist or are suspected by the ACP registrar. | assignment requirements exist or are suspected by the ACP registrar. | |||
ACP address information SHOULD be maintained even when the renewing/ | ACP address information SHOULD be maintained even when the renewing | |||
rekeying ACP registrar is not the same as the one that enrolled the | and/or rekeying ACP registrar is not the same as the one that | |||
prior ACP certificate. See Section 9.2.4 for an example. | enrolled the prior ACP certificate. See Section 9.2.4 for an | |||
example. | ||||
ACP address information SHOULD also be maintained even after an ACP | ACP address information SHOULD also be maintained even after an ACP | |||
certificate did expire or failed. See Section 6.2.5.5 and | certificate expires or fails. See Section 6.2.5.5 and | |||
Section 6.2.5.6. | Section 6.2.5.6. | |||
6.11.7.5. Further Details | 6.11.7.5. Further Details | |||
Section 9.2 discusses further informative details of ACP registrars: | Section 9.2 discusses further informative details of ACP registrars: | |||
What interactions registrars need, what parameters they require, | needed interactions, required parameters, certificate renewal and | |||
certificate renewal and limitations, use of sub-CAs on registrars and | limitations, use of sub-CAs on registrars, and centralized policy | |||
centralized policy control. | control. | |||
6.12. Routing in the ACP | 6.12. Routing in the ACP | |||
Once ULA address are set up all autonomic entities should run a | Once ULA addresses are set up, all autonomic entities should run a | |||
routing protocol within the autonomic control plane context. This | routing protocol within the ACP context. This routing protocol | |||
routing protocol distributes the ULA created in the previous section | distributes the ULA created in the previous section for reachability. | |||
for reachability. The use of the autonomic control plane specific | The use of the ACP-specific context eliminates the probable clash | |||
context eliminates the probable clash with Data-Plane routing tables | with data plane routing tables and also secures the ACP from | |||
and also secures the ACP from interference from the configuration | interference from configuration mismatch or incorrect routing | |||
mismatch or incorrect routing updates. | updates. | |||
The establishment of the routing plane and its parameters are | The establishment of the routing plane and its parameters are | |||
automatic and strictly within the confines of the autonomic control | automatic and strictly within the confines of the ACP. Therefore, no | |||
plane. Therefore, no explicit configuration is required. | explicit configuration is required. | |||
All routing updates are automatically secured in transit as the | All routing updates are automatically secured in transit as the | |||
channels of the ACP are encrypted, and this routing runs only inside | channels of the ACP are encrypted, and this routing runs only inside | |||
the ACP. | the ACP. | |||
The routing protocol inside the ACP is RPL ([RFC6550]). See | The routing protocol inside the ACP is RPL [RFC6550]. See | |||
Appendix A.4 for more details on the choice of RPL. | Appendix A.4 for more details on the choice of RPL. | |||
RPL adjacencies are set up across all ACP channels in the same domain | RPL adjacencies are set up across all ACP channels in the same domain | |||
including all its routing subdomains. See Appendix A.6 for more | including all its routing subdomains. See Appendix A.6 for more | |||
details. | details. | |||
6.12.1. ACP RPL Profile | 6.12.1. ACP RPL Profile | |||
The following is a description of the RPL profile that ACP nodes need | The following is a description of the RPL profile that ACP nodes need | |||
to support by default. The format of this section is derived from | to support by default. The format of this section is derived from | |||
[I-D.ietf-roll-applicability-template]. | [ROLL-APPLICABILITY]. | |||
6.12.1.1. Overview | 6.12.1.1. Overview | |||
RPL Packet Information (RPI) defined in [RFC6550], section 11.2 | RPL Packet Information (RPI), defined in [RFC6550], Section 11.2, | |||
defines the data packet artefacts required or beneficial in | defines the data packet artifacts required or beneficial in the | |||
forwarding of packets routed by RPL. This profile does not use RPI | forwarding of packets routed by RPL. This profile does not use RPI | |||
for better compatibility with accelerated hardware forwarding planes | for better compatibility with accelerated hardware forwarding planes, | |||
which most often does not support the Hop-by-Hop headers used for | which most often do not support the Hop-by-Hop headers used for RPI, | |||
RPI, but also to avoid the overhead of the RPI header on the wire and | but also to avoid the overhead of the RPI header on the wire and cost | |||
cost of adding/removing them. | of adding and/or removing them. | |||
6.12.1.1.1. Single Instance | 6.12.1.1.1. Single Instance | |||
To avoid the need for RPI, the ACP RPL profile uses a simple | To avoid the need for RPI, the ACP RPL profile uses a simple routing/ | |||
destination prefix based routing/forwarding table. To achieve this, | forwarding table based on destination prefix. To achieve this, the | |||
the profiles uses only one RPL instanceID. This single instanceID | profile uses only one RPL instanceID. This single instanceID can | |||
can contain only one Destination Oriented Directed Acyclic Graph | contain only one Destination-Oriented Directed Acyclic Graph (DODAG), | |||
(DODAG), and the routing/forwarding table can therefore only | and the routing/forwarding table can therefore only calculate a | |||
calculate a single class of service ("best effort towards the primary | single class of service ("best effort towards the primary NOC/root") | |||
NOC/root") and cannot create optimized routing paths to accomplish | and cannot create optimized routing paths to accomplish latency or | |||
latency or energy goals between any two nodes. | energy goals between any two nodes. | |||
This choice is a compromise. Consider a network that has multiple | This choice is a compromise. Consider a network that has multiple | |||
NOCs in different locations. Only one NOC will become the DODAG | NOCs in different locations. Only one NOC will become the DODAG | |||
root. Traffic to and from other NOCs has to be sent through the | root. Traffic to and from other NOCs has to be sent through the | |||
DODAG (shortest path tree) rooted in the primary NOC. Depending on | DODAG (shortest path tree) rooted in the primary NOC. Depending on | |||
topology, this can be an annoyance from a latency point of view or | topology, this can be an annoyance from a point of view of latency or | |||
from minimizing network path resources, but this is deemed to be | minimizing network path resources, but this is deemed to be | |||
acceptable given how ACP traffic is "only" network management/control | acceptable given how ACP traffic is "only" network management/control | |||
traffic. See Appendix A.9.4 for more details. | traffic. See Appendix A.9.4 for more details. | |||
Using a single instanceID/DODAG does not introduce a single point of | Using a single instanceID/DODAG does not introduce a single point of | |||
failure, as the DODAG will reconfigure itself when it detects Data- | failure, as the DODAG will reconfigure itself when it detects data | |||
Plane forwarding failures including choosing a different root when | plane forwarding failures, including choosing a different root when | |||
the primary one fails. | the primary one fails. | |||
The benefit of this profile, especially compared to other IGPs is | The benefit of this profile, especially compared to other IGPs, is | |||
that it does not calculate routes for node reachable through the same | that it does not calculate routes for nodes reachable through the | |||
interface as the DODAG root. This RPL profile can therefore scale to | same interface as the DODAG root. This RPL profile can therefore | |||
much larger number of ACP nodes in the same amount of compute and | scale to a much larger number of ACP nodes in the same amount of | |||
memory than other routing protocols. Especially on nodes that are | computation and memory than other routing protocols, especially on | |||
leafs of the topology or those close to those leafs. | nodes that are leafs of the topology or those close to those leafs. | |||
6.12.1.1.2. Reconvergence | 6.12.1.1.2. Reconvergence | |||
In RPL profiles where RPL Packet Information (RPI, see | In RPL profiles where RPI (see Section 6.12.1.13) is present, it is | |||
Section 6.12.1.13) is present, it is also used to trigger | also used to trigger reconvergence when misrouted, for example, | |||
reconvergence when misrouted, for example looping, packets are | looping packets, which are recognized because of their RPI data. | |||
recognized because of their RPI data. This helps to minimize RPL | This helps to minimize RPL signaling traffic, especially in networks | |||
signaling traffic especially in networks without stable topology and | without stable topology and slow links. | |||
slow links. | ||||
The ACP RPL profile instead relies on quick reconverging the DODAG by | The ACP RPL profile instead relies on quickly reconverging the DODAG | |||
recognizing link state change (down/up) and triggering reconvergence | by recognizing link state change (down/up) and triggering | |||
signaling as described in Section 6.12.1.7. Since links in the ACP | reconvergence signaling as described in Section 6.12.1.7. Since | |||
are assumed to be mostly reliable (or have link layer protection | links in the ACP are assumed to be mostly reliable (or have link- | |||
against loss) and because there is no stretch according to | layer protection against loss) and because there is no stretch | |||
Section 6.12.1.7, loops caused by loss of RPL routing protocol | according to Section 6.12.1.7, loops caused by loss of RPL signaling | |||
signaling packets should be exceedingly rare. | packets should be exceedingly rare. | |||
In addition, there are a variety of mechanisms possible in RPL to | In addition, there are a variety of mechanisms possible in RPL to | |||
further avoid temporary loops RECOMMENDED to be used for the ACPL RPL | further avoid temporary loops that are RECOMMENDED to be used for the | |||
profile: DODAG Information Objects (DIOs) SHOULD be sent 2 or 3 times | ACP RPL profile: DODAG Information Objects (DIOs) SHOULD be sent two | |||
to inform children when losing the last parent. The technique in | or three times to inform children when losing the last parent. The | |||
[RFC6550] section 8.2.2.6. (Detaching) SHOULD be favored over that | technique in [RFC6550], Section 8.2.2.6 (Detaching) SHOULD be favored | |||
in section 8.2.2.5., (Poisoning) because it allows local | over that in Section 8.2.2.5 (Poisoning) because it allows local | |||
connectivity. Nodes SHOULD select more than one parent, at least 3 | connectivity. Nodes SHOULD select more than one parent, at least | |||
if possible, and send Destination Advertisement Objects (DAO)s to all | three if possible, and send Destination Advertisement Objects (DAOs) | |||
of them in parallel. | to all of them in parallel. | |||
Additionally, failed ACP tunnels can be quickly discovered trough the | Additionally, failed ACP tunnels can be quickly discovered through | |||
secure channel protocol mechanisms such as IKEv2 Dead Peer Detection. | the secure channel protocol mechanisms such as IKEv2 dead peer | |||
This can function as a replacement for a Low-power and Lossy | detection. This can function as a replacement for a Low-power and | |||
Networks' (LLN's) Expected Transmission Count (ETX) feature that is | Lossy Network's (LLN's) Expected Transmission Count (ETX) feature, | |||
not used in this profile. A failure of an ACP tunnel should | which is not used in this profile. A failure of an ACP tunnel should | |||
immediately signal the RPL control plane to pick a different parent. | immediately signal the RPL control plane to pick a different parent. | |||
6.12.1.2. RPL Instances | 6.12.1.2. RPL Instances | |||
Single RPL instance. Default RPLInstanceID = 0. | There is a single RPL instance. The default RPLInstanceID is 0. | |||
6.12.1.3. Storing vs. Non-Storing Mode | 6.12.1.3. Storing vs. Non-Storing Mode | |||
RPL Mode of Operations (MOP): MUST support mode 2 - "Storing Mode of | The RPL Mode of Operation (MOP) MUST support mode 2, "Storing Mode of | |||
Operations with no multicast support". Implementations MAY support | Operations with no multicast support". Implementations MAY support | |||
mode 3 ("... with multicast support" as that is a superset of mode | mode 3 ("... with multicast support") as that is a superset of mode | |||
2). Note: Root indicates mode in DIO flow. | 2. Note: Root indicates mode in DIO flow. | |||
6.12.1.4. DAO Policy | 6.12.1.4. DAO Policy | |||
Proactive, aggressive DAO state maintenance: | The DAO policy is proactive, aggressive DAO state maintenance: | |||
* Use K-flag in unsolicited DAO indicating change from previous | * Use the 'K' flag in unsolicited DAO to indicate change from | |||
information (to require DAO-ACK). | previous information (to require DAO-ACK). | |||
* Retry such DAO DAO-RETRIES(3) times with DAO- ACK_TIME_OUT(256ms) | ||||
* Retry such DAO DAO-RETRIES(3) times with DAO-ACK_TIME_OUT(256ms) | ||||
in between. | in between. | |||
6.12.1.5. Path Metric | 6.12.1.5. Path Metrics | |||
Use Hopcount according to [RFC6551]. Note that this is solely for | Use Hop Count according to "Routing Metrics Used for Path Calculation | |||
diagnostic purposes as it is not used by the objective function. | in Low-Power and Lossy Networks" [RFC6551]. Note that this is solely | |||
for diagnostic purposes as it is not used by the Objective Function. | ||||
6.12.1.6. Objective Function | 6.12.1.6. Objective Function | |||
Objective Function (OF): Use OF0 [RFC6552]. No use of metric | Objective Function (OF): Use Objective Function Zero (OF0) | |||
containers. | ("Objective Function Zero for the Routing Protocol for Low-Power | |||
and Lossy Networks (RPL)" [RFC6552]). Metric containers are not | ||||
used. | ||||
rank_factor: Derived from link speed: <= 100Mbps: | rank_factor: Derived from link speed: if less than or equal to 100 | |||
LOW_SPEED_FACTOR(5), else HIGH_SPEED_FACTOR(1) | Mbps, LOW_SPEED_FACTOR(5), else HIGH_SPEED_FACTOR(1). | |||
This is a simple rank differentiation between typical "low speed" or | This is a simple rank differentiation between typical "low speed" | |||
"IoT" links that commonly max out at 100 Mbps and typical | or IoT links that commonly max out at 100 Mbps and typical | |||
infrastructure links with speeds of 1 Gbps or higher. Given how the | infrastructure links with speeds of 1 Gbps or higher. Given how | |||
path selection for the ACP focusses only on reachability but not on | the path selection for the ACP focuses only on reachability but | |||
path cost optimization, no attempts at finer grained path | not on path cost optimization, no attempts at finer-grained path | |||
optimization are made. | optimization are made. | |||
6.12.1.7. DODAG Repair | 6.12.1.7. DODAG Repair | |||
Global Repair: we assume stable links and ranks (metrics), so there | Global Repair: We assume stable links and ranks (metrics), so there | |||
is no need to periodically rebuild the DODAG. The DODAG version is | is no need to periodically rebuild the DODAG. The DODAG version | |||
only incremented under catastrophic events (e.g., administrative | is only incremented under catastrophic events (e.g., | |||
action). | administrative action). | |||
Local Repair: As soon as link breakage is detected, the ACP node send | Local Repair: As soon as link breakage is detected, the ACP node | |||
No-Path DAO for all the targets that were reachable only via this | sends a No-Path DAO for all the targets that were reachable only | |||
link. As soon as link repair is detected, the ACP node validates if | via this link. As soon as link repair is detected, the ACP node | |||
this link provides a better parent. If so, a new rank is computed by | validates if this link provides a better parent. If so, a new | |||
the ACP node and it sends new DIO that advertise the new rank. Then | rank is computed by the ACP node, and it sends a new DIO that | |||
it sends a DAO with a new path sequence about itself. | advertises the new rank. Then it sends a DAO with a new path | |||
sequence about itself. | ||||
When using ACP multi-access virtual interfaces, local repair can be | When using ACP multi-access virtual interfaces, local repair can | |||
triggered directly by peer breakage, see Section 6.13.5.2.2. | be triggered directly by peer breakage, see Section 6.13.5.2.2. | |||
stretch_rank: none provided ("not stretched"). | stretch_rank: None provided ("not stretched"). | |||
Data Path Validation: Not used. | Data-Path Validation: Not used. | |||
Trickle: Not used. | Trickle: Not used. | |||
6.12.1.8. Multicast | 6.12.1.8. Multicast | |||
Not used yet but possible because of the selected mode of operations. | Multicast is not used yet, but it is possible because of the selected | |||
mode of operations. | ||||
6.12.1.9. Security | 6.12.1.9. Security | |||
[RFC6550] security not used, substituted by ACP security. | RPL security [RFC6550] is not used, and ACP security is substituted. | |||
Because the ACP links already include provisions for confidentiality | Because the ACP links already include provisions for confidentiality | |||
and integrity protection, their usage at the RPL layer would be | and integrity protection, their usage at the RPL layer would be | |||
redundant, and so RPL security is not used. | redundant, and so RPL security is not used. | |||
6.12.1.10. P2P communications | 6.12.1.10. P2P Communications | |||
Not used. | Not used. | |||
6.12.1.11. IPv6 address configuration | 6.12.1.11. IPv6 Address Configuration | |||
Every ACP node (RPL node) announces an IPv6 prefix covering the | Every ACP node (RPL node) announces an IPv6 prefix covering the | |||
addresses assigned to the ACP node via the AcpNodeName. The prefix | addresses assigned to the ACP node via the AcpNodeName. The prefix | |||
length depends on the addressing sub-scheme of the acp-address, /127 | length depends on the addressing sub-scheme of the acp-address, /127 | |||
for Zone Addressing Sub-Scheme and /112 or /120 for Vlong addressing | for the Zone Addressing Sub-Scheme and /112 or /120 for the Vlong | |||
sub-scheme. See Section 6.11 for more details. | Addressing Sub-Scheme. See Section 6.11 for more details. | |||
Every ACP node MUST install a black hole (aka null) route if there | Every ACP node MUST install a black hole route (also known as a null | |||
are unused parts of the ACP address space assigned to the ACP node | route) if there are unused parts of the ACP address space assigned to | |||
via its AcpNodeName. This is superseded by longer prefixes assigned | the ACP node via its AcpNodeName. This is superseded by longer | |||
to interfaces for the address space actually used by the node. For | prefixes assigned to interfaces for the address space actually used | |||
example, when the node has an ACP-VLong-8 address space, it installs | by the node. For example, when the node has an ACP-Vlong-8 address | |||
a /120 black hole route. If it then for example only uses the ACP | space, it installs a /120 black hole route. If it then only uses the | |||
address (first address from the space), it would assign that address | ACP address (first address from the space), for example, it would | |||
via a /128 address prefix to the ACP loopback interface (see | assign that address via a /128 address prefix to the ACP loopback | |||
Section 6.13.5.1). None of those longer prefixes are announced into | interface (see Section 6.13.5.1). None of those longer prefixes are | |||
RPL. | announced into RPL. | |||
For ACP-Manual address prefixes configured on an ACP node, for | For ACP-Manual address prefixes configured on an ACP node, for | |||
example for ACP connect subnets (see Section 8.1.1), the node | example, for ACP connect subnets (see Section 8.1.1), the node | |||
announces the /64 subnet prefix. | announces the /64 subnet prefix. | |||
6.12.1.12. Administrative parameters | 6.12.1.12. Administrative Parameters | |||
Administrative Preference ([RFC6550], 3.2.6 - to become root): | Administrative Preference ([RFC6550], Section 3.2.6 --to become | |||
Indicated in DODAGPreference field of DIO message. | root): The preference is indicated in the DODAGPreference field of | |||
DIO message. | ||||
* Explicit configured "root": 0b100 | Explicitly configured "root": 0b100 | |||
* ACP registrar (Default): 0b011 | ||||
* ACP-connect (non-registrar): 0b010 | ACP registrar (default): 0b011 | |||
* Default: 0b001. | ||||
ACP connect (non-registrar): 0b010 | ||||
Default: 0b001 | ||||
6.12.1.13. RPL Packet Information | 6.12.1.13. RPL Packet Information | |||
RPI is not required in the ACP RPL profile for the following reasons. | RPI is not required in the ACP RPL profile for the following reasons. | |||
One RPI option is the RPL Source Routing Header (SRH) [RFC6554] which | One RPI option is the RPL Source Routing Header (SRH) ("An IPv6 | |||
is not necessary because the ACP RPL profile uses storing mode where | Routing Header for Source Routes with the Routing Protocol for | |||
each hop has the necessary next-hop forwarding information. | Low-Power and Lossy Networks (RPL)" [RFC6554]), which is not | |||
necessary because the ACP RPL profile uses storing mode where each | ||||
hop has the necessary next-hop forwarding information. | ||||
The simpler RPL Option header [RFC6553] is also not necessary in this | The simpler RPL Option header "The Routing Protocol for Low-Power and | |||
profile, because it uses a single RPL instance and data path | Lossy Networks (RPL) Option for Carrying RPL Information in | |||
Data-Plane Datagrams" [RFC6553] is also not necessary in this | ||||
profile, because it uses a single RPL instance and data-path | ||||
validation is also not used. | validation is also not used. | |||
6.12.1.14. Unknown Destinations | 6.12.1.14. Unknown Destinations | |||
Because RPL minimizes the size of the routing and forwarding table, | Because RPL minimizes the size of the routing and forwarding table, | |||
prefixes reachable through the same interface as the RPL root are not | prefixes reachable through the same interface as the RPL root are not | |||
known on every ACP node. Therefore, traffic to unknown destination | known on every ACP node. Therefore, traffic to unknown destination | |||
addresses can only be discovered at the RPL root. The RPL root | addresses can only be discovered at the RPL root. The RPL root | |||
SHOULD have attach safe mechanisms to operationally discover and log | SHOULD have attach-safe mechanisms to operationally discover and log | |||
such packets. | such packets. | |||
As this requirement places additional constraints on the Data-Plane | As this requirement places additional constraints on the data plane | |||
functionality of the RPL root, it does not apply to "normal" nodes | functionality of the RPL root, it does not apply to "normal" nodes | |||
that are not configured to have special functionality (i.e., the | that are not configured to have special functionality (i.e., the | |||
administrative parameter from Section 6.12.1.12 has value 0b001). If | administrative parameter from Section 6.12.1.12 has value 0b001). If | |||
the ACP network is degraded to the point where there are no nodes | the ACP network is degraded to the point where there are no nodes | |||
that could be configured as root, registrar, or ACP-connect nodes, it | that could be configured as root, registrar, or ACP connect nodes, it | |||
is possible that the RPL root (and thus the ACP as a whole) would be | is possible that the RPL root (and thus the ACP as a whole) would be | |||
unable to detect traffic to unknown destinations. However, in the | unable to detect traffic to unknown destinations. However, in the | |||
absence of nodes with administrative preference other than 0b001, | absence of nodes with administrative preference other than 0b001, | |||
there is also unlikely to be a way to get diagnostic information out | there is also unlikely to be a way to get diagnostic information out | |||
of the ACP, so detection of traffic to unknown destinations would not | of the ACP, so detection of traffic to unknown destinations would not | |||
be actionable anyway. | be actionable anyway. | |||
6.13. General ACP Considerations | 6.13. General ACP Considerations | |||
Since channels are by default established between adjacent neighbors, | Since channels are established between adjacent neighbors by default, | |||
the resulting overlay network does hop-by-hop encryption. Each node | the resulting overlay network does hop-by-hop encryption. Each node | |||
decrypts incoming traffic from the ACP, and encrypts outgoing traffic | decrypts incoming traffic from the ACP and encrypts outgoing traffic | |||
to its neighbors in the ACP. Routing is discussed in Section 6.12. | to its neighbors in the ACP. Routing is discussed in Section 6.12. | |||
6.13.1. Performance | 6.13.1. Performance | |||
There are no performance requirements against ACP implementations | There are no performance requirements for ACP implementations defined | |||
defined in this document because the performance requirements depend | in this document because the performance requirements depend on the | |||
on the intended use case. It is expected that full autonomic node | intended use case. It is expected that a fully autonomic node with a | |||
with a wide range of ASA can require high forwarding plane | wide range of ASA can require high forwarding plane performance in | |||
performance in the ACP, for example for telemetry. Implementations | the ACP, for example, for telemetry. Implementations of ACP that | |||
of ACP to solely support traditional/SDN style use cases can benefit | solely support traditional or SDN-style use cases can benefit from | |||
from ACP at lower performance, especially if the ACP is used only for | ACP at lower performance, especially if the ACP is used only for | |||
critical operations, e.g., when the Data-Plane is not available. The | critical operations, e.g., when the data plane is not available. The | |||
design of the ACP as specified in this document is intended to | design of the ACP as specified in this document is intended to | |||
support a wide range of performance options: It is intended to allow | support a wide range of performance options: it is intended to allow | |||
software-only implementations at potentially low performance, but can | software-only implementations at potentially low performance, but the | |||
also support high performance options. See [RFC8368] for more | design can also support high-performance options. See [RFC8368] for | |||
details. | more details. | |||
6.13.2. Addressing of Secure Channels | 6.13.2. Addressing of Secure Channels | |||
In order to be independent of the Data-Plane routing and addressing, | In order to be independent of the data plane routing and addressing, | |||
the GRASP discovered ACP secure channels use IPv6 link local | the ACP secure channels discovered via GRASP use IPv6 link-local | |||
addresses between adjacent neighbors. Note: Section 8.2 specifies | addresses between adjacent neighbors. Note: Section 8.2 specifies | |||
extensions in which secure channels are configured tunnels operating | extensions in which secure channels are configured tunnels operating | |||
over the Data-Plane, so those secure channels cannot be independent | over the data plane, so those secure channels cannot be independent | |||
of the Data-Plane. | of the data plane. | |||
To avoid that Data-Plane configuration can impact the operations of | To avoid impacting the operations of the IPv6 (link-local) interface/ | |||
the IPv6 (link-local) interface/address used for ACP channels, | address used for ACP channels when configuring the data plane, | |||
appropriate implementation considerations are required. If the IPv6 | appropriate implementation considerations are required. If the IPv6 | |||
interface/link-local address is shared with the Data-Plane, it needs | interface/link-local address is shared with the data plane, it needs | |||
to be impossible to unconfigure/disable it through configuration. | to be impossible to unconfigure and/or disable it through | |||
Instead of sharing the IPv6 interface/link-local address, a separate | configuration. Instead of sharing the IPv6 interface/link-local | |||
(virtual) interface with a separate IPv6 link-local address can be | address, a separate (virtual) interface with a separate IPv6 link- | |||
used. For example, the ACP interface could be run over a separate | local address can be used. For example, the ACP interface could be | |||
MAC address of an underlying L2 (Ethernet) interface. For more | run over a separate MAC address of an underlying L2 (Ethernet) | |||
details and options, see Appendix A.9.2. | interface. For more details and options, see Appendix A.9.2. | |||
Note that other (non-ideal) implementation choices may introduce | Note that other (nonideal) implementation choices may introduce | |||
additional undesired dependencies against the Data-Plane. For | additional, undesired dependencies against the data plane, for | |||
example, shared code and configuration of the secure channel | example, shared code and configuration of the secure channel | |||
protocols (IPsec / DTLS). | protocols (IPsec and/or DTLS). | |||
6.13.3. MTU | 6.13.3. MTU | |||
The MTU for ACP secure channels MUST be derived locally from the | The MTU for ACP secure channels MUST be derived locally from the | |||
underlying link MTU minus the secure channel encapsulation overhead. | underlying link MTU minus the secure channel encapsulation overhead. | |||
ACP secure Channel protocols do not need to perform MTU discovery | ACP secure channel protocols do not need to perform MTU discovery | |||
because they are built across L2 adjacencies - the MTU on both sides | because they are built across L2 adjacencies: the MTUs on both sides | |||
connecting to the L2 connection are assumed to be consistent. | connecting to the L2 connection are assumed to be consistent. | |||
Extensions to ACP where the ACP is for example tunneled need to | Extensions to ACP where the ACP is, for example, tunneled need to | |||
consider how to guarantee MTU consistency. This is an issue of | consider how to guarantee MTU consistency. This is an issue of | |||
tunnels, not an issue of running the ACP across a tunnel. Transport | tunnels, not an issue of running the ACP across a tunnel. Transport | |||
stacks running across ACP can perform normal PMTUD (Path MTU | stacks running across ACP can perform normal PMTUD (Path MTU | |||
Discovery). Because the ACP is meant to prioritize reliability over | Discovery). Because the ACP is meant to prioritize reliability over | |||
performance, they MAY opt to only expect IPv6 minimum MTU (1280) to | performance, they MAY opt to only expect IPv6 minimum MTU (1280 | |||
avoid running into PMTUD implementation bugs or underlying link MTU | octets) to avoid running into PMTUD implementation bugs or underlying | |||
mismatch problems. | link MTU mismatch problems. | |||
6.13.4. Multiple links between nodes | 6.13.4. Multiple Links between Nodes | |||
If two nodes are connected via several links, the ACP SHOULD be | If two nodes are connected via several links, the ACP SHOULD be | |||
established across every link, but it is possible to establish the | established across every link, but it is possible to establish the | |||
ACP only on a sub-set of links. Having an ACP channel on every link | ACP only on a subset of links. Having an ACP channel on every link | |||
has a number of advantages, for example it allows for a faster | has a number of advantages, for example, it allows for a faster | |||
failover in case of link failure, and it reflects the physical | failover in case of link failure, and it reflects the physical | |||
topology more closely. Using a subset of links (for example, a | topology more closely. Using a subset of links (for example, a | |||
single link), reduces resource consumption on the node, because state | single link), reduces resource consumption on the node because state | |||
needs to be kept per ACP channel. The negotiation scheme explained | needs to be kept per ACP channel. The negotiation scheme explained | |||
in Section 6.6 allows the Decider (the node with the higher ACP | in Section 6.6 allows the Decider (the node with the higher ACP | |||
address) to drop all but the desired ACP channels to the Follower - | address) to drop all but the desired ACP channels to the Follower, | |||
and the Follower will not re-try to build these secure channels from | and the Follower will not retry to build these secure channels from | |||
its side unless the Decider shows up with a previously unknown GRASP | its side unless the Decider appears with a previously unknown GRASP | |||
announcement (e.g., on a different link or with a different address | announcement (e.g., on a different link or with a different address | |||
announced in GRASP). | announced in GRASP). | |||
6.13.5. ACP interfaces | 6.13.5. ACP Interfaces | |||
The ACP VRF has conceptually two type of interfaces: The "ACP | Conceptually, the ACP VRF has two types of interfaces: the "ACP | |||
Loopback interface(s)" to which the ACP ULA address(es) are assigned | loopback interface(s)" to which the ACP ULA address(es) are assigned | |||
and the "ACP virtual interfaces" that are mapped to the ACP secure | and the "ACP virtual interfaces" that are mapped to the ACP secure | |||
channels. | channels. | |||
6.13.5.1. ACP loopback interfaces | 6.13.5.1. ACP Loopback Interfaces | |||
For autonomous operations of the ACP, as described in Section 6 and | For autonomous operations of the ACP, as described in Section 6 and | |||
Section 7, the ACP node uses the first address from the N bit ACP | Section 7, the ACP node uses the first address from the N bit ACP | |||
prefix (N = 128 - number of Vbits of the ACP address) assigned to the | prefix assigned to the node. N = (128 - number of Vbits of the ACP | |||
node. This address is assigned with an address prefix of N or larger | address). This address is assigned with an address prefix of N or | |||
to a loopback interface. | larger to a loopback interface. | |||
Other addresses from the prefix can be used by the ACP of the node as | Other addresses from the prefix can be used by the ACP of the node as | |||
desired. The autonomous operations of the ACP does not require | desired. The autonomous operations of the ACP do not require | |||
additional global scope IPv6 addresses, they are instead intended for | additional global-scope IPv6 addresses, they are instead intended for | |||
ASA or non-autonomous functions. Non fully autonomic components of | ASA or non-autonomous functions. Components of the ACP that are not | |||
the ACP such as ACP connect interfaces (see Figure 16) may also | fully autonomic, such as ACP connect interfaces (see Figure 14), may | |||
introduce additional global scope IPv6 addresses on other types of | also introduce additional global-scope IPv6 addresses on other types | |||
interfaces into the ACP. | of interfaces to the ACP. | |||
[RFC-Editor: please remove this paragraph: Note to reviewers: Please | ||||
do not complain again about an obsolete RFC number in the following | ||||
paragraph. The text should make it clear that the reference was | ||||
chosen to indicate a particular point in time, but not to recommend/ | ||||
use a particularly obsolete protocol spec.] | ||||
The use of loopback interfaces for global scope addresses is common | The use of loopback interfaces for global-scope addresses is common | |||
operational configuration practice on routers, for example in IBGP | operational configuration practice on routers, for example, in | |||
connections since BGP4 (see [RFC1654]) or earlier. The ACP adopts | Internal BGP (IBGP) connections since BGP4 (see "A Border Gateway | |||
and automates this operational practice. | Protocol 4 (BGP-4)" [RFC1654]) or earlier. The ACP adopts and | |||
automates this operational practice. | ||||
A loopback interface for use with the ACP as described above is an | A loopback interface for use with the ACP as described above is an | |||
interface behaving according to [RFC6724] Section 4., paragraph 2: | interface that behaves according to Section 4 of "Default Address | |||
Packets sent by the host of the node from the loopback interface | Selection for Internet Protocol Version 6 (IPv6)" [RFC6724], | |||
behave as if they are looped back by the interface so that they look | paragraph 2. Packets sent by the host of the node from the loopback | |||
as if they originated from the loopback interface, are then received | interface behave as if they are looped back by the interface so that | |||
by the node and forwarded by it towards the destination. | they look as if they originated from the loopback interface, are then | |||
received by the node and forwarded by it towards the destination. | ||||
The word loopback only indicates this behavior, but not the actual | The term "loopback only" indicates this behavior, but not the actual | |||
name of the interface type choosen in an actual implementation. A | name of the interface type chosen in an actual implementation. A | |||
loopback interface for use with the ACP can be a virtual/software | loopback interface for use with the ACP can be a virtual and/or | |||
construct without any associated hardware, or it can be a hardware | software construct without any associated hardware, or it can be a | |||
interface operating in loopback mode. | hardware interface operating in loopback mode. | |||
A loopback interface used for the ACP MUST NOT have connectivity to | A loopback interface used for the ACP MUST NOT have connectivity to | |||
other nodes. | other nodes. | |||
The following reviews the reasons for the choice of loopback | The following list reviews the reasons for the choice of loopback | |||
addresses for ACP addresses is based on the IPv6 address architecture | addresses for ACP addresses, which is based on the IPv6 address | |||
and common challenges: | architecture and common challenges: | |||
1. IPv6 addresses are assigned to interfaces, not nodes. IPv6 | 1. IPv6 addresses are assigned to interfaces, not nodes. IPv6 | |||
continues the IPv4 model that a subnet prefix is associated with | continues the IPv4 model that a subnet prefix is associated with | |||
one link, see [RFC4291], Section 2.1. | one link, see Section 2.1 of "IP Version 6 Addressing | |||
Architecture" [RFC4291]. | ||||
2. IPv6 implementations commonly do not allow assignment of the same | 2. IPv6 implementations commonly do not allow assignment of the same | |||
IPv6 global scope address in the same VRF to more than one | IPv6 global-scope address in the same VRF to more than one | |||
interface. | interface. | |||
3. Global scope addresses assigned to interfaces that are connecting | ||||
to other nodes (external interfaces) may not be stable addresses | 3. Global-scope addresses assigned to interfaces that connect to | |||
for communications because any such interface could fail due to | other nodes (external interfaces) may not be stable addresses for | |||
communications because any such interface could fail due to | ||||
reasons external to the node. This could render the addresses | reasons external to the node. This could render the addresses | |||
assigned to that interface unusable. | assigned to that interface unusable. | |||
4. If failure of the subnet does not result in bringing down the | ||||
interface and making the addresses unusable, it could result in | 4. If failure of the subnet does not bring down the interface and | |||
unreachability of the address because the shortest path to the | make the addresses unusable, it could result in unreachability of | |||
node might go through one of the other nodes on the same subnet | the address because the shortest path to the node might go | |||
which could equally consider the subnet to be operational even | through one of the other nodes on the same subnet, which could | |||
though it is not. | equally consider the subnet to be operational even though it is | |||
not. | ||||
5. Many OAM service implementations on routers cannot deal with more | 5. Many OAM service implementations on routers cannot deal with more | |||
than one peer address, often because they do already expect that | than one peer address, often because they already expect that a | |||
a single loopback address can be used, especially to provide a | single loopback address can be used, especially to provide a | |||
stable address under failure of external interfaces or links. | stable address under failure of external interfaces or links. | |||
6. Even when an application supports multiple addresses to a peer, | 6. Even when an application supports multiple addresses to a peer, | |||
it can only use one address for a connection at a time with the | it can only use one address at a time for a connection with the | |||
most widely deployed transport protocols TCP and UDP. While | most widely deployed transport protocols, TCP and UDP. While | |||
[RFC6824] solves this problem, it is not widely adopted for | "TCP Extensions for Multipath Operation with Multiple Addresses" | |||
router OAM services implementations. | [RFC6824]/[RFC8684] solves this problem, it is not widely adopted | |||
7. To completely autonomously assign global scope addresses to | by implementations of router OAM services. | |||
7. To completely autonomously assign global-scope addresses to | ||||
subnets connecting to other nodes, it would be necessary for | subnets connecting to other nodes, it would be necessary for | |||
every node to have an amount of prefix address space in the order | every node to have an amount of prefix address space on the order | |||
of the maximum number of subnets that the node could connect to | of the maximum number of subnets that the node could connect to, | |||
and then the node would have to negotiate with adjacent nodes | and then the node would have to negotiate with adjacent nodes | |||
across those subnets whose address space to use for each subnet. | across those subnets which address space to use for each subnet. | |||
8. Using global scope addresses for subnets between nodes is | ||||
8. Using global-scope addresses for subnets between nodes is | ||||
unnecessary if those subnets only connect routers, such as ACP | unnecessary if those subnets only connect routers, such as ACP | |||
secure channels, because they can communicate to remote nodes via | secure channels, because they can communicate to remote nodes via | |||
their global scope loopback addresses. Using global scope | their global-scope loopback addresses. Using global-scope | |||
addresses for those extern subnets is therefore wasteful for the | addresses for those external subnets is therefore wasteful for | |||
address space and also unnecessarily increasing the size of | the address space and also unnecessarily increases the size of | |||
routing and forwarding tables, which especially for the ACP is | the routing and forwarding tables, which, especially for the ACP, | |||
highly undesirable because it should attempt to minimize the per- | is highly undesirable because it should attempt to minimize the | |||
node overhead of the ACP VRF. | per-node overhead of the ACP VRF. | |||
9. For all these reasons, the ACP addressing schemes do not consider | 9. For all these reasons, the ACP addressing sub-schemes do not | |||
ACP addresses for subnets connecting ACP nodes. | consider ACP addresses for subnets connecting ACP nodes. | |||
Note that [RFC8402] introduces the term Node-SID to refer to IGP | Note that "Segment Routing Architecture" [RFC8402] introduces the | |||
prefix segments that identify a specific router, for example on a | term Node-SID to refer to IGP prefix segments that identify a | |||
loopback interface. An ACP loopback address prefix may similarly be | specific router, for example, on a loopback interface. An ACP | |||
called an ACP Node Identifier. | loopback address prefix may similarly be called an ACP Node | |||
Identifier. | ||||
6.13.5.2. ACP virtual interfaces | 6.13.5.2. ACP Virtual Interfaces | |||
Any ACP secure channel to another ACP node is mapped to ACP virtual | Any ACP secure channel to another ACP node is mapped to ACP virtual | |||
interfaces in one of the following ways. This is independent of the | interfaces in one of the following ways. This is independent of the | |||
chosen secure channel protocol (IPsec, DTLS or other future protocol | chosen secure channel protocol (IPsec, DTLS, or other future | |||
- standards or non-standards). | protocol, either standardized or not). | |||
Note that all the considerations described here are assuming point- | Note that all the considerations described here assume point-to-point | |||
to-point secure channel associations. Mapping multi-party secure | secure channel associations. Mapping multiparty secure channel | |||
channel associations such as [RFC6407] is out of scope. | associations, such as "The Group Domain of Interpretation" [RFC6407], | |||
is out of scope. | ||||
6.13.5.2.1. ACP point-to-point virtual interfaces | 6.13.5.2.1. ACP Point-to-Point Virtual Interfaces | |||
In this option, each ACP secure channel is mapped into a separate | In this option, each ACP secure channel is mapped to a separate | |||
point-to-point ACP virtual interface. If a physical subnet has more | point-to-point ACP virtual interface. If a physical subnet has more | |||
than two ACP capable nodes (in the same domain), this implementation | than two ACP-capable nodes (in the same domain), this implementation | |||
approach will lead to a full mesh of ACP virtual interfaces between | approach will lead to a full mesh of ACP virtual interfaces between | |||
them. | them. | |||
When the secure channel protocol determines a peer to be dead, this | When the secure channel protocol determines a peer to be dead, this | |||
SHOULD result in indicating link breakage to trigger RPL DODAG | SHOULD result in indicating link breakage to trigger RPL DODAG | |||
repair, see Section 6.12.1.7. | repair, see Section 6.12.1.7. | |||
6.13.5.2.2. ACP multi-access virtual interfaces | 6.13.5.2.2. ACP Multi-Access Virtual Interfaces | |||
In a more advanced implementation approach, the ACP will construct a | In a more advanced implementation approach, the ACP will construct a | |||
single multi-access ACP virtual interface for all ACP secure channels | single multi-access ACP virtual interface for all ACP secure channels | |||
to ACP capable nodes reachable across the same underlying (physical) | to ACP-capable nodes reachable across the same underlying (physical) | |||
subnet. IPv6 link-local multicast packets sent into an ACP multi- | subnet. IPv6 link-local multicast packets sent to an ACP multi- | |||
access virtual interface are replicated to every ACP secure channel | access virtual interface are replicated to every ACP secure channel | |||
mapped into the ACP multicast-access virtual interface. IPv6 unicast | mapped to the ACP multi-access virtual interface. IPv6 unicast | |||
packets sent into an ACP multi-access virtual interface are sent to | packets sent to an ACP multi-access virtual interface are sent to the | |||
the ACP secure channel that belongs to the ACP neighbor that is the | ACP secure channel that belongs to the ACP neighbor that is the next | |||
next-hop in the ACP forwarding table entry used to reach the packets | hop in the ACP forwarding table entry used to reach the packets' | |||
destination address. | destination address. | |||
When the secure channel protocol determines a peer to be dead for a | When the secure channel protocol determines that a peer is dead for a | |||
secure channel mapped into an ACP multi-access virtual interface, | secure channel mapped to an ACP multi-access virtual interface, this | |||
this SHOULD result in signaling breakage of that peer to RPL, so it | SHOULD result in signaling breakage of that peer to RPL, so it can | |||
can trigger RPL DODAG repair, see Section 6.12.1.7. | trigger RPL DODAG repair, see Section 6.12.1.7. | |||
There is no requirement for all ACP nodes on the same multi-access | There is no requirement for all ACP nodes on the same multi-access | |||
subnet to use the same type of ACP virtual interface. This is purely | subnet to use the same type of ACP virtual interface. This is purely | |||
a node local decision. | a node-local decision. | |||
ACP nodes MUST perform standard IPv6 operations across ACP virtual | ACP nodes MUST perform standard IPv6 operations across ACP virtual | |||
interfaces including SLAAC (Stateless Address Auto-Configuration) - | interfaces including SLAAC [RFC4862] to assign their IPv6 link-local | |||
[RFC4862]) to assign their IPv6 link local address on the ACP virtual | address on the ACP virtual interface and ND ("Neighbor Discovery for | |||
interface and ND (Neighbor Discovery - [RFC4861]) to discover which | IP version 6 (IPv6)" [RFC4861]) to discover which IPv6 link-local | |||
IPv6 link-local neighbor address belongs to which ACP secure channel | neighbor address belongs to which ACP secure channel mapped to the | |||
mapped to the ACP virtual interface. This is independent of whether | ACP virtual interface. This is independent of whether the ACP | |||
the ACP virtual interface is point-to-point or multi-access. | virtual interface is point-to-point or multi-access. | |||
"Optimistic Duplicate Address Detection (DAD)" according to [RFC4429] | Optimistic Duplicate Address Detection (DAD) according to "Optimistic | |||
is RECOMMENDED because the likelihood for duplicates between ACP | Duplicate Address Detection (DAD) for IPv6" [RFC4429] is RECOMMENDED | |||
nodes is highly improbable as long as the address can be formed from | because the likelihood for duplicates between ACP nodes is highly | |||
a globally unique local assigned identifier (e.g., EUI-48/EUI-64, see | improbable as long as the address can be formed from a globally | |||
below). | unique, locally assigned identifier (e.g., EUI-48/EUI-64, see below). | |||
ACP nodes MAY reduce the amount of link-local IPv6 multicast packets | ACP nodes MAY reduce the amount of link-local IPv6 multicast packets | |||
from ND by learning the IPv6 link-local neighbor address to ACP | from ND by learning the IPv6 link-local neighbor address to ACP | |||
secure channel mapping from other messages such as the source address | secure channel mapping from other messages, such as the source | |||
of IPv6 link-local multicast RPL messages - and therefore forego the | address of IPv6 link-local multicast RPL messages, and therefore | |||
need to send Neighbor Solicitation messages. | forego the need to send Neighbor Solicitation messages. | |||
The ACP virtual interface IPv6 link local address can be derived from | The ACP virtual interface IPv6 link-local address can be derived from | |||
any appropriate local mechanism such as node local EUI-48 or EUI-64 | any appropriate local mechanism, such as node-local EUI-48 or EUI-64. | |||
("EUI" stands for "Extended Unique Identifier"). It MUST NOT depend | It MUST NOT depend on something that is attackable from the data | |||
on something that is attackable from the Data-Plane such as the IPv6 | plane, such as the IPv6 link-local address of the underlying physical | |||
link-local address of the underlying physical interface, which can be | interface, which can be attacked by SLAAC, or parameters of the | |||
attacked by SLAAC, or parameters of the secure channel encapsulation | secure channel encapsulation header that may not be protected by the | |||
header that may not be protected by the secure channel mechanism. | secure channel mechanism. | |||
The link-layer address of an ACP virtual interface is the address | The link-layer address of an ACP virtual interface is the address | |||
used for the underlying interface across which the secure tunnels are | used for the underlying interface across which the secure tunnels are | |||
built, typically Ethernet addresses. Because unicast IPv6 packets | built, typically Ethernet addresses. Because unicast IPv6 packets | |||
sent to an ACP virtual interface are not sent to a link-layer | sent to an ACP virtual interface are not sent to a link-layer | |||
destination address but rather an ACP secure channel, the link-layer | destination address but rather to an ACP secure channel, the link- | |||
address fields SHOULD be ignored on reception and instead the ACP | layer address fields SHOULD be ignored on reception, and instead the | |||
secure channel from which the message was received should be | ACP secure channel from which the message was received should be | |||
remembered. | remembered. | |||
Multi-access ACP virtual interfaces are preferable implementations | Multi-access ACP virtual interfaces are preferable implementations | |||
when the underlying interface is a (broadcast) multi-access subnet | when the underlying interface is a (broadcast) multi-access subnet | |||
because they do reflect the presence of the underlying multi-access | because they reflect the presence of the underlying multi-access | |||
subnet into the virtual interfaces of the ACP. This makes it for | subnet to the virtual interfaces of the ACP. This makes it, for | |||
example simpler to build services with topology awareness inside the | example, simpler to build services with topology awareness inside the | |||
ACP VRF in the same way as they could have been built running | ACP VRF in the same way as they could have been built running | |||
natively on the multi-access interfaces. | natively on the multi-access interfaces. | |||
Consider also the impact of point-to-point vs. multi-access virtual | Consider also the impact of point-to-point vs. multi-access virtual | |||
interface on the efficiency of flooding via link local multicasted | interfaces on the efficiency of flooding via link-local multicast | |||
messages: | messages. | |||
Assume a LAN with three ACP neighbors, Alice, Bob and Carol. Alice's | Assume a LAN with three ACP neighbors, Alice, Bob, and Carol. | |||
ACP GRASP wants to send a link-local GRASP multicast message to Bob | Alice's ACP GRASP wants to send a link-local GRASP multicast message | |||
and Carol. If Alice's ACP emulates the LAN as per-peer, point-to- | to Bob and Carol. If Alice's ACP emulates the LAN as per-peer, | |||
point virtual interfaces, one to Bob and one to Carol, Alice's ACP | point-to-point virtual interfaces, one to Bob and one to Carol, | |||
GRASP will send two copies of multicast GRASP messages: One to Bob | Alice's ACP GRASP will send two copies of multicast GRASP messages: | |||
and one to Carol. If Alice's ACP emulates a LAN via a multipoint | one to Bob and one to Carol. If Alice's ACP emulates a LAN via a | |||
virtual interface, Alice's ACP GRASP will send one packet to that | multipoint virtual interface, Alice's ACP GRASP will send one packet | |||
interface and the ACP multipoint virtual interface will replicate the | to that interface, and the ACP multipoint virtual interface will | |||
packet to each secure channel, one to Bob, one to Carol. The result | replicate the packet to each secure channel, one to Bob, one to | |||
is the same. The difference happens when Bob and Carol receive their | Carol. The result is the same. The difference happens when Bob and | |||
packet. If they use ACP point-to-point virtual interfaces, their | Carol receive their packets. If they use ACP point-to-point virtual | |||
GRASP instance would forward the packet from Alice to each other as | interfaces, their GRASP instance would forward the packet from Alice | |||
part of the GRASP flooding procedure. These packets are unnecessary | to each other as part of the GRASP flooding procedure. These packets | |||
and would be discarded by GRASP on receipt as duplicates (by use of | are unnecessary and would be discarded by GRASP on receipt as | |||
the GRASP Session ID). If Bob and Carol's ACP would emulate a multi- | duplicates (by use of the GRASP Session ID). If Bob and Carol's ACP | |||
access virtual interface, then this would not happen, because GRASPs | emulated a multi-access virtual interface, then this would not happen | |||
flooding procedure does not replicate back packets to the interface | because GRASP's flooding procedure does not replicate packets back to | |||
that they were received from. | the interface from which they were received. | |||
Note that link-local GRASP multicast messages are not sent directly | Note that link-local GRASP multicast messages are not sent directly | |||
as IPv6 link-local multicast UDP messages into ACP virtual | as IPv6 link-local multicast UDP messages to ACP virtual interfaces, | |||
interfaces, but instead into ACP GRASP virtual interfaces, that are | but instead to ACP GRASP virtual interfaces that are layered on top | |||
layered on top of ACP virtual interfaces to add TCP reliability to | of ACP virtual interfaces to add TCP reliability to link-local | |||
link-local multicast GRASP messages. Nevertheless, these ACP GRASP | multicast GRASP messages. Nevertheless, these ACP GRASP virtual | |||
virtual interfaces perform the same replication of message and, | interfaces perform the same replication of messages and therefore | |||
therefore, result in the same impact on flooding. See Section 6.9.2 | have the same impact on flooding. See Section 6.9.2 for more | |||
for more details. | details. | |||
RPL does support operations and correct routing table construction | RPL does support operations and correct routing table construction | |||
across non-broadcast multi-access (NBMA) subnets. This is common | across non-broadcast multi-access (NBMA) subnets. This is common | |||
when using many radio technologies. When such NBMA subnets are used, | when using many radio technologies. When such NBMA subnets are used, | |||
they MUST NOT be represented as ACP multi-access virtual interfaces | they MUST NOT be represented as ACP multi-access virtual interfaces | |||
because the replication of IPv6 link-local multicast messages will | because the replication of IPv6 link-local multicast messages will | |||
not reach all NBMA subnet neighbors. In result, GRASP message | not reach all NBMA subnet neighbors. As a result, GRASP message | |||
flooding would fail. Instead, each ACP secure channel across such an | flooding would fail. Instead, each ACP secure channel across such an | |||
interface MUST be represented as a ACP point-to-point virtual | interface MUST be represented as an ACP point-to-point virtual | |||
interface. See also Appendix A.9.4. | interface. See also Appendix A.9.4. | |||
Care needs to be taken when creating multi-access ACP virtual | Care needs to be taken when creating multi-access ACP virtual | |||
interfaces across ACP secure channels between ACP nodes in different | interfaces across ACP secure channels between ACP nodes in different | |||
domains or routing subdomains. If for example future inter-domain | domains or routing subdomains. If, for example, future inter-domain | |||
ACP policies are defined as "peer-to-peer" policies, it is easier to | ACP policies are defined as "peer-to-peer" policies, it is easier to | |||
create ACP point-to-point virtual interfaces for these inter-domain | create ACP point-to-point virtual interfaces for these inter-domain | |||
secure channels. | secure channels. | |||
7. ACP support on L2 switches/ports (Normative) | 7. ACP Support on L2 Switches/Ports (Normative) | |||
7.1. Why (Benefits of ACP on L2 switches) | 7.1. Why (Benefits of ACP on L2 Switches) | |||
ANrtr1 ------ ANswitch1 --- ANswitch2 ------- ANrtr2 | ANrtr1 ------ ANswitch1 --- ANswitch2 ------- ANrtr2 | |||
.../ \ \ ... | .../ \ \ ... | |||
ANrtrM ------ \ ------- ANrtrN | ANrtrM ------ \ ------- ANrtrN | |||
ANswitchM ... | ANswitchM ... | |||
Figure 15: Topology with L2 ACP switches | Figure 13: Topology with L2 ACP Switches | |||
Consider a large L2 LAN with ANrtr1...ANrtrN connected via some | Consider a large L2 LAN with routers ANrtr1 through ANrtrN connected | |||
topology of L2 switches. Examples include large enterprise campus | via some topology of L2 switches. Examples include large enterprise | |||
networks with an L2 core, IoT networks or broadband aggregation | campus networks with an L2 core, IoT networks, or broadband | |||
networks which often have even a multi-level L2 switched topology. | aggregation networks, which often have a multilevel L2-switched | |||
topology. | ||||
If the discovery protocol used for the ACP is operating at the subnet | If the discovery protocol used for the ACP operates at the subnet | |||
level, every ACP router will see all other ACP routers on the LAN as | level, every ACP router will see all other ACP routers on the LAN as | |||
neighbors and a full mesh of ACP channels will be built. If some or | neighbors, and a full mesh of ACP channels will be built. If some or | |||
all of the AN switches are autonomic with the same discovery | all of the AN switches are autonomic with the same discovery | |||
protocol, then the full mesh would include those switches as well. | protocol, then the full mesh would include those switches as well. | |||
A full mesh of ACP connections can create fundamental scale | A full mesh of ACP connections can create fundamental scale | |||
challenges. The number of security associations of the secure | challenges. The number of security associations of the secure | |||
channel protocols will likely not scale arbitrarily, especially when | channel protocols will likely not scale arbitrarily, especially when | |||
they leverage platform accelerated encryption/decryption. Likewise, | they leverage platform-accelerated encryption/decryption. Likewise, | |||
any other ACP operations (such as routing) needs to scale to the | any other ACP operations (such as routing) need to scale to the | |||
number of direct ACP neighbors. An ACP router with just 4 physical | number of direct ACP neighbors. An ACP router with just four | |||
interfaces might be deployed into a LAN with hundreds of neighbors | physical interfaces might be deployed into a LAN with hundreds of | |||
connected via switches. Introducing such a new unpredictable scaling | neighbors connected via switches. Introducing such a new, | |||
factor requirement makes it harder to support the ACP on arbitrary | unpredictable scaling factor requirement makes it harder to support | |||
platforms and in arbitrary deployments. | the ACP on arbitrary platforms and in arbitrary deployments. | |||
Predictable scaling requirements for ACP neighbors can most easily be | Predictable scaling requirements for ACP neighbors can most easily be | |||
achieved if in topologies such as these, ACP capable L2 switches can | achieved if, in topologies such as these, ACP-capable L2 switches can | |||
ensure that discovery messages terminate on them so that neighboring | ensure that discovery messages terminate on them so that neighboring | |||
ACP routers and switches will only find the physically connected ACP | ACP routers and switches will only find the physically connected ACP | |||
L2 switches as their candidate ACP neighbors. With such a discovery | L2 switches as their candidate ACP neighbors. With such a discovery | |||
mechanism in place, the ACP and its security associations will only | mechanism in place, the ACP and its security associations will only | |||
need to scale to the number of physical interfaces instead of a | need to scale to the number of physical interfaces instead of a | |||
potentially much larger number of "LAN-connected" neighbors. And the | potentially much larger number of "LAN-connected" neighbors, and the | |||
ACP topology will follow directly the physical topology, something | ACP topology will follow directly the physical topology, something | |||
which can then also be leveraged in management operations or by ASAs. | that can then also be leveraged in management operations or by ASAs. | |||
In the example above, consider ANswitch1 and ANswitchM are ACP | In the example above, consider that ANswitch1 and ANswitchM are ACP | |||
capable, and ANswitch2 is not ACP capable. The desired ACP topology | capable, and ANswitch2 is not ACP capable. The desired ACP topology | |||
is that ANrtr1 and ANrtrM only have an ACP connection to ANswitch1, | is that ANrtr1 and ANrtrM only have an ACP connection to ANswitch1, | |||
and that ANswitch1, ANrtr2, ANrtrN have a full mesh of ACP connection | and that ANswitch1, ANrtr2, and ANrtrN have a full mesh of ACP | |||
amongst each other. ANswitch1 also has an ACP connection with | connections amongst each other. ANswitch1 also has an ACP connection | |||
ANswitchM and ANswitchM has ACP connections to anything else behind | with ANswitchM, and ANswitchM has ACP connections to anything else | |||
it. | behind it. | |||
7.2. How (per L2 port DULL GRASP) | 7.2. How (per L2 Port DULL GRASP) | |||
To support ACP on L2 switches or L2 switched ports of an L3 device, | To support ACP on L2 switches or L2-switched ports of an L3 device, | |||
it is necessary to make those L2 ports look like L3 interfaces for | it is necessary to make those L2 ports look like L3 interfaces for | |||
the ACP implementation. This primarily involves the creation of a | the ACP implementation. This primarily involves the creation of a | |||
separate DULL GRASP instance/domain on every such L2 port. Because | separate DULL GRASP instance/domain on every such L2 port. Because | |||
GRASP has a dedicated link-local IPv6 multicast address | GRASP has a dedicated link-local IPv6 multicast address | |||
(ALL_GRASP_NEIGHBORS), it is sufficient that all packets for this | (ALL_GRASP_NEIGHBORS), it is sufficient that all packets for this | |||
address are being extracted at the port level and passed to that DULL | address are extracted at the port level and passed to that DULL GRASP | |||
GRASP instance. Likewise the IPv6 link-local multicast packets sent | instance. Likewise, the IPv6 link-local multicast packets sent by | |||
by that DULL GRASP instance need to be sent only towards the L2 port | that DULL GRASP instance need to be sent only towards the L2 port for | |||
for this DULL GRASP instance (instead of being flooded across all | this DULL GRASP instance (instead of being flooded across all ports | |||
ports of the VLAN to which the port belongs). | of the VLAN to which the port belongs). | |||
When Ports/Interfaces across which the ACP is expected to operate in | When the ports/interfaces across which the ACP is expected to operate | |||
an ACP-aware L2-switch or L2/L3-switch/router are L2-bridged, packets | in an ACP-aware L2 switch or L2/L3 switch/router are L2-bridged, | |||
for the ALL_GRASP_NEIGHBORS multicast address MUST never be forward | packets for the ALL_GRASP_NEIGHBORS multicast address MUST never be | |||
between these ports. If MLD snooping is used, it MUST be prohibited | forwarded between these ports. If MLD snooping is used, it MUST be | |||
from bridging packets for the ALL_GRASP_NEIGHBORS IPv6 multicast | prohibited from bridging packets for the ALL_GRASP_NEIGHBORS IPv6 | |||
address. | multicast address. | |||
On hybrid L2/L3 switches, multiple L2 ports are assigned to a single | On hybrid L2/L3 switches, multiple L2 ports are assigned to a single | |||
L3 VLAN interface. With the aforementioned changes for DULL GRASP, | L3 VLAN interface. With the aforementioned changes for DULL GRASP, | |||
ACP can simply operate on the L3 VLAN interfaces, so no further | ACP can simply operate on the L3 VLAN interfaces, so no further | |||
(hardware) forwarding changes are required to make ACP operate on L2 | (hardware) forwarding changes are required to make ACP operate on L2 | |||
ports. This is possible because the ACP secure channel protocols | ports. This is possible because the ACP secure channel protocols | |||
only use link-local IPv6 unicast packets, and these packets will be | only use link-local IPv6 unicast packets, and these packets will be | |||
sent to the correct L2 port towards the peer by the VLAN logic of the | sent to the correct L2 port towards the peer by the VLAN logic of the | |||
device. | device. | |||
This is sufficient when p2p ACP virtual interfaces are established to | This is sufficient when P2P ACP virtual interfaces are established to | |||
every ACP peer. When it is desired to create multi-access ACP | every ACP peer. When it is desired to create multi-access ACP | |||
virtual interfaces (see Section 6.13.5.2.2), it is REQIURED not to | virtual interfaces (see Section 6.13.5.2.2), it is REQUIRED not to | |||
coalesce all the ACP secure channels on the same L3 VLAN interface, | coalesce all the ACP secure channels on the same L3 VLAN interface, | |||
but only all those on the same L2 port. | but only all those on the same L2 port. | |||
If VLAN tagging is used, then all the above described logic only | If VLAN tagging is used, then the logic described above only applies | |||
applies to untagged GRASP packets. For the purpose of ACP neighbor | to untagged GRASP packets. For the purpose of ACP neighbor discovery | |||
discovery via GRASP, no VLAN tagged packets SHOULD be sent or | via GRASP, no VLAN-tagged packets SHOULD be sent or received. In a | |||
received. In a hybrid L2/L3 switch, each VLAN would therefore only | hybrid L2/L3 switch, each VLAN would therefore only create ACP | |||
create ACP adjacencies across those ports where the VLAN is carried | adjacencies across those ports where the VLAN is carried untagged. | |||
untagged. | ||||
In result, the simple logic is that ACP secure channels would operate | As a result, the simple logic is that ACP secure channels would | |||
over the same L3 interfaces that present a single flat bridged | operate over the same L3 interfaces that present a single, flat | |||
network across all routers, but because DULL GRASP is separated on a | bridged network across all routers, but because DULL GRASP is | |||
per-port basis, no full mesh of ACP secure channels is created, but | separated on a per-port basis, no full mesh of ACP secure channels is | |||
only per-port ACP secure channels to per-port L2-adjacent ACP node | created, but only per-port ACP secure channels to per-port | |||
neighbors. | L2-adjacent ACP node neighbors. | |||
For example, in the above picture, ANswitch1 would run separate DULL | For example, in the above picture, ANswitch1 would run separate DULL | |||
GRASP instances on its ports to ANrtr1, ANswitch2 and ANswitchI, even | GRASP instances on its ports to ANrtr1, ANswitch2, and ANswitchI, | |||
though all those three ports may be in the data plane in the same | even though all three ports may be in the data plane in the same | |||
(V)LAN and perform L2 switching between these ports, ANswitch1 would | (V)LAN and perform L2 switching between these ports, ANswitch1 would | |||
perform ACP L3 routing between them. | perform ACP L3 routing between them. | |||
The description in the previous paragraph was specifically meant to | The description in the previous paragraph is specifically meant to | |||
illustrate that on hybrid L3/L2 devices that are common in | illustrate that, on hybrid L3/L2 devices that are common in | |||
enterprise, IoT and broadband aggregation, there is only the GRASP | enterprise, IoT, and broadband aggregation, there is only the GRASP | |||
packet extraction (by Ethernet address) and GRASP link-local | packet extraction (by Ethernet address) and GRASP link-local | |||
multicast per L2-port packet injection that has to consider L2 ports | multicast per L2-port packet injection that has to consider L2 ports | |||
at the hardware forwarding level. The remaining operations are | at the hardware-forwarding level. The remaining operations are | |||
purely ACP control plane and setup of secure channels across the L3 | purely ACP control plane and setup of secure channels across the L3 | |||
interface. This hopefully makes support for per-L2 port ACP on those | interface. This hopefully makes support for per-L2 port ACP on those | |||
hybrid devices easy. | hybrid devices easy. | |||
In devices without such a mix of L2 port/interfaces and L3 interfaces | In devices without such a mix of L2 port/interfaces and L3 interfaces | |||
(to terminate any transport layer connections), implementation | (to terminate any transport-layer connections), implementation | |||
details will differ. Logically most simply every L2 port is | details will differ. Logically and most simply every L2 port is | |||
considered and used as a separate L3 subnet for all ACP operations. | considered and used as a separate L3 subnet for all ACP operations. | |||
The fact that the ACP only requires IPv6 link-local unicast and | The fact that the ACP only requires IPv6 link-local unicast and | |||
multicast should make support for it on any type of L2 devices as | multicast should make support for it on any type of L2 devices as | |||
simple as possible. | simple as possible. | |||
A generic issue with ACP in L2 switched networks is the interaction | A generic issue with ACP in L2-switched networks is the interaction | |||
with the Spanning Tree Protocol. Without further L2 enhancements, | with the Spanning Tree Protocol (STP). Without further L2 | |||
the ACP would run only across the active STP topology and the ACP | enhancements, the ACP would run only across the active STP topology, | |||
would be interrupted and re-converge with STP changes. Ideally, ACP | and the ACP would be interrupted and reconverge with STP changes. | |||
peering SHOULD be built also across ports that are blocked in STP so | Ideally, ACP peering SHOULD be built also across ports that are | |||
that the ACP does not depend on STP and can continue to run | blocked in STP so that the ACP does not depend on STP and can | |||
unaffected across STP topology changes, where re-convergence can be | continue to run unaffected across STP topology changes, where | |||
quite slow. The above described simple implementation options are | reconvergence can be quite slow. The above described simple | |||
not sufficient to achieve this. | implementation options are not sufficient to achieve this. | |||
8. Support for Non-ACP Components (Normative) | 8. Support for Non-ACP Components (Normative) | |||
8.1. ACP Connect | 8.1. ACP Connect | |||
8.1.1. Non-ACP Controller / NMS system | ||||
The Autonomic Control Plane can be used by management systems, such | 8.1.1. Non-ACP Controller and/or Network Management System (NMS) | |||
as controllers or network management system (NMS) hosts (henceforth | ||||
called simply "NMS hosts"), to connect to devices (or other type of | The ACP can be used by management systems, such as controllers or NMS | |||
nodes) through it. For this, an NMS host needs to have access to the | hosts, to connect to devices (or other type of nodes) through it. | |||
ACP. The ACP is a self-protecting overlay network, which allows by | For this, an NMS host needs to have access to the ACP. The ACP is a | |||
default access only to trusted, autonomic systems. Therefore, a | self-protecting overlay network, which allows access only to trusted, | |||
traditional, non-ACP NMS system does not have access to the ACP by | autonomic systems by default. Therefore, a traditional, non-ACP NMS | |||
default, such as any other external node. | does not have access to the ACP by default, such as any other | |||
external node. | ||||
If the NMS host is not autonomic, i.e., it does not support autonomic | If the NMS host is not autonomic, i.e., it does not support autonomic | |||
negotiation of the ACP, then it can be brought into the ACP by | negotiation of the ACP, then it can be brought into the ACP by | |||
explicit configuration. To support connections to adjacent non-ACP | explicit configuration. To support connections to adjacent non-ACP | |||
nodes, an ACP node SHOULD support "ACP connect" (sometimes also | nodes, an ACP node SHOULD support "ACP connect" (sometimes also | |||
called "autonomic connect"): | called "autonomic connect"). | |||
"ACP connect" is an interface level configured workaround for | "ACP connect" is an interface-level, configured workaround for | |||
connection of trusted non-ACP nodes to the ACP. The ACP node on | connection of trusted non-ACP nodes to the ACP. The ACP node on | |||
which ACP connect is configured is called an "ACP edge node". With | which ACP connect is configured is called an "ACP edge node". With | |||
ACP connect, the ACP is accessible from those non-ACP nodes (such as | ACP connect, the ACP is accessible from those non-ACP nodes (such as | |||
NOC systems) on such an interface without those non-ACP nodes having | NOC systems) on such an interface without those non-ACP nodes having | |||
to support any ACP discovery or ACP channel setup. This is also | to support any ACP discovery or ACP channel setup. This is also | |||
called "native" access to the ACP because to those NOC systems the | called "native" access to the ACP because, to those NOC systems, the | |||
interface looks like a normal network interface without any ACP | interface looks like a normal network interface without any ACP | |||
secure channel that is encapsulating the traffic. | secure channel that is encapsulating the traffic. | |||
Data-Plane "native" (no ACP) | Data Plane "native" (no ACP) | |||
. | . | |||
+--------+ +----------------+ . +-------------+ | +--------+ +----------------+ . +-------------+ | |||
| ACP | |ACP Edge Node | . | | | | ACP | |ACP Edge Node | . | | | |||
| Node | | | v | | | | Node | | | v | | | |||
| |-------|...[ACP VRF]....+----------------| |+ | | |-------|...[ACP VRF]....+----------------| |+ | |||
| | ^ |. | | NOC Device || | | | ^ |. | | NOC Device || | |||
| | . | .[Data-Plane]..+----------------| "NMS hosts" || | | | . | .[Data Plane]..+----------------| "NMS hosts" || | |||
| | . | [ ] | . ^ | || | | | . | [ ] | . ^ | || | |||
+--------+ . +----------------+ . . +-------------+| | +--------+ . +----------------+ . . +-------------+| | |||
. . . +-------------+ | . . . +-------------+ | |||
. . . | . . . | |||
Data-Plane "native" . ACP "native" (unencrypted) | Data Plane "native" . ACP "native" (unencrypted) | |||
+ ACP auto-negotiated . "ACP connect subnet" | + ACP auto-negotiated . "ACP connect subnet" | |||
and encrypted . | and encrypted . | |||
ACP connect interface | ACP connect interface | |||
e.g., "VRF ACP native" (config) | e.g., "VRF ACP native" (config) | |||
Figure 16: ACP connect | Figure 14: ACP Connect | |||
ACP connect has security consequences: All systems and processes | ACP connect has security consequences: all systems and processes | |||
connected via ACP connect have access to all ACP nodes on the entire | connected via ACP connect have access to all ACP nodes on the entire | |||
ACP, without further authentication. Thus, the ACP connect interface | ACP, without further authentication. Thus, the ACP connect interface | |||
and NOC systems connected to it needs to be physically controlled/ | and the NOC systems connected to it need to be physically controlled | |||
secured. For this reason the mechanisms described here do explicitly | and/or secured. For this reason, the mechanisms described here | |||
not include options to allow for a non-ACP router to be connected | explicitly do not include options to allow for a non-ACP router to be | |||
across an ACP connect interface and addresses behind such a router | connected across an ACP connect interface and addresses behind such a | |||
routed inside the ACP. | router routed inside the ACP. | |||
Physical controlled/secured means that attackers can gain no access | Physically controlled and/or secured means that attackers cannot gain | |||
to the physical device hosting the ACP Edge Node, the physical | access to the physical device hosting the ACP edge node, the physical | |||
interfaces and links providing the ACP connect link nor the physical | interfaces and links providing the ACP connect link, nor the physical | |||
devices hosting the NOC Device. In a simple case, ACP Edge node and | devices hosting the NOC device. In a simple case, ACP edge node and | |||
NOC Device are co-located in an access controlled room, such as a | NOC device are colocated in an access-controlled room, such as a NOC, | |||
NOC, to which attackers cannot gain physical access. | to which attackers cannot gain physical access. | |||
An ACP connect interface provides exclusively access to only the ACP. | An ACP connect interface provides exclusive access to only the ACP. | |||
This is likely insufficient for many NMS hosts. Instead, they would | This is likely insufficient for many NMS hosts. Instead, they would | |||
require a second "Data-Plane" interface outside the ACP for | require a second "data plane" interface outside the ACP for | |||
connections between the NMS host and administrators, or Internet | connections between the NMS host and administrators, or Internet- | |||
based services, or for direct access to the Data-Plane. The document | based services, or for direct access to the data plane. The document | |||
"Using Autonomic Control Plane for Stable Connectivity of Network | "Using Autonomic Control Plane for Stable Connectivity of Network | |||
OAM" [RFC8368] explains in more detail how the ACP can be integrated | OAM" [RFC8368] explains in more detail how the ACP can be integrated | |||
in a mixed NOC environment. | in a mixed NOC environment. | |||
An ACP connect interface SHOULD use an IPv6 address/prefix from the | An ACP connect interface SHOULD use an IPv6 address/prefix from the | |||
ACP Manual Addressing Sub-Scheme (Section 6.11.4), letting the | Manual Addressing Sub-Scheme (Section 6.11.4), letting the operator | |||
operator configure for example only the Subnet-ID and having the node | configure, for example, only the Subnet-ID and having the node | |||
automatically assign the remaining part of the prefix/address. It | automatically assign the remaining part of the prefix/address. It | |||
SHOULD NOT use a prefix that is also routed outside the ACP so that | SHOULD NOT use a prefix that is also routed outside the ACP so that | |||
the addresses clearly indicate whether it is used inside the ACP or | the addresses clearly indicate whether it is used inside the ACP or | |||
not. | not. | |||
The prefix of ACP connect subnets MUST be distributed by the ACP edge | The prefix of ACP connect subnets MUST be distributed by the ACP edge | |||
node into the ACP routing protocol RPL. The NMS hosts MUST connect | node into the ACP routing protocol, RPL. The NMS host MUST connect | |||
to prefixes in the ACP routing table via its ACP connect interface. | to prefixes in the ACP routing table via its ACP connect interface. | |||
In the simple case where the ACP uses only one ULA prefix and all ACP | In the simple case where the ACP uses only one ULA prefix, and all | |||
connect subnets have prefixes covered by that ULA prefix, NMS hosts | ACP connect subnets have prefixes covered by that ULA prefix, NMS | |||
can rely on [RFC6724] to determine longest match prefix routes | hosts can rely on [RFC6724] to determine longest match prefix routes | |||
towards its different interfaces, ACP and Data-Plane. With RFC6724, | towards its different interfaces, ACP and data plane. With | |||
The NMS host will select the ACP connect interface for all addresses | [RFC6724], the NMS host will select the ACP connect interface for all | |||
in the ACP because any ACP destination address is longest matched by | addresses in the ACP because any ACP destination address is longest | |||
the address on the ACP connect interface. If the NMS hosts ACP | matched by the address on the ACP connect interface. If the NMS | |||
connect interface uses another prefix or if the ACP uses multiple ULA | host's ACP connect interface uses another prefix, or if the ACP uses | |||
prefixes, then the NMS hosts require (static) routes towards the ACP | multiple ULA prefixes, then the NMS host requires (static) routes | |||
interface for these prefixes. | towards the ACP interface for these prefixes. | |||
When an ACP Edge node receives a packet from an ACP connect | When an ACP edge node receives a packet from an ACP connect | |||
interface, the ACP Edge node MUST only forward the packet into the | interface, the ACP edge node MUST only forward the packet to the ACP | |||
ACP if the packet has an IPv6 source address from that interface | if the packet has an IPv6 source address from that interface (this is | |||
(this is sometimes called "RPF filtering"). This filtering rule MAY | sometimes called Reverse Path Forwarding (RPF) filtering). This | |||
be changed through administrative measures. The more any such | filtering rule MAY be changed through administrative measures. The | |||
administrative action enable reachability of non ACP nodes to the | more any such administrative action enables reachability of non-ACP | |||
ACP, the more this may cause security issues. | nodes to the ACP, the more this may cause security issues. | |||
To limit the security impact of ACP connect, nodes supporting it | To limit the security impact of ACP connect, nodes supporting it | |||
SHOULD implement a security mechanism to allow configuration/use of | SHOULD implement a security mechanism to allow configuration and/or | |||
ACP connect interfaces only on nodes explicitly targeted to be | use of ACP connect interfaces only on nodes explicitly targeted to be | |||
deployed with it (those in physically secure locations such as a | deployed with it (those in physically secure locations such as a | |||
NOC). For example, the registrar could disable the ability to enable | NOC). For example, the registrar could disable the ability to enable | |||
ACP connect on devices during enrollment and that property could only | ACP connect on devices during enrollment, and that property could | |||
be changed through re-enrollment. See also Appendix A.9.5. | only be changed through reenrollment. See also Appendix A.9.5. | |||
ACP Edge nodes SHOULD have a configurable option to prohibit packets | ACP edge nodes SHOULD have a configurable option to prohibit packets | |||
with RPI headers (see Section 6.12.1.13 across an ACP connect | with RPI headers (see Section 6.12.1.13) across an ACP connect | |||
interface. These headers are outside the scope of the RPL profile in | interface. These headers are outside the scope of the RPL profile in | |||
this specification but may be used in future extensions of this | this specification but may be used in future extensions of this | |||
specification. | specification. | |||
8.1.2. Software Components | 8.1.2. Software Components | |||
The previous section assumed that ACP Edge node and NOC devices are | The previous section assumed that the ACP edge node and NOC devices | |||
separate physical devices and the ACP connect interface is a physical | are separate physical devices and that the ACP connect interface is a | |||
network connection. This section discusses the implication when | physical network connection. This section discusses the implication | |||
these components are instead software components running on a single | when these components are instead software components running on a | |||
physical device. | single physical device. | |||
The ACP connect mechanism cannot only be used to connect physically | The ACP connect mechanism can be used not only to connect physically | |||
external systems (NMS hosts) to the ACP but also other applications, | external systems (NMS hosts) to the ACP but also other applications, | |||
containers or virtual machines. In fact, one possible way to | containers, or virtual machines. In fact, one possible way to | |||
eliminate the security issue of the external ACP connect interface is | eliminate the security issue of the external ACP connect interface is | |||
to collocate an ACP edge node and an NMS host by making one a virtual | to colocate an ACP edge node and an NMS host by making one a virtual | |||
machine or container inside the other; and therefore converting the | machine or container inside the other; therefore converting the | |||
unprotected external ACP subnet into an internal virtual subnet in a | unprotected external ACP subnet into an internal virtual subnet in a | |||
single device. This would ultimately result in a fully ACP enabled | single device. This would ultimately result in a fully ACP-enabled | |||
NMS host with minimum impact to the NMS hosts software architecture. | NMS host with minimum impact to the NMS host's software architecture. | |||
This approach is not limited to NMS hosts but could equally be | This approach is not limited to NMS hosts but could equally be | |||
applied to devices consisting of one or more VNF (virtual network | applied to devices consisting of one or more VNF (virtual network | |||
functions): An internal virtual subnet connecting out-of-band | functions): an internal virtual subnet connecting out-of-band | |||
management interfaces of the VNFs to an ACP edge router VNF. | management interfaces of the VNFs to an ACP edge router VNF. | |||
The core requirement is that the software components need to have a | The core requirement is that the software components need to have a | |||
network stack that permits access to the ACP and optionally also the | network stack that permits access to the ACP and optionally also to | |||
Data-Plane. Like in the physical setup for NMS hosts this can be | the data plane. Like in the physical setup for NMS hosts, this can | |||
realized via two internal virtual subnets. One that is connecting to | be realized via two internal virtual subnets: one that connects to | |||
the ACP (which could be a container or virtual machine by itself), | the ACP (which could be a container or virtual machine by itself), | |||
and one (or more) connecting into the Data-Plane. | and one (or more) connecting to the data plane. | |||
This "internal" use of ACP connect approach should not be considered | This "internal" use of the ACP connect approach should not be | |||
to be a "workaround" because in this case it is possible to build a | considered to be a "workaround" because, in this case, it is possible | |||
correct security model: It is not necessary to rely on unprovable | to build a correct security model: it is not necessary to rely on | |||
external physical security mechanisms as in the case of external NMS | unprovable, external physical security mechanisms as in the case of | |||
hosts. Instead, the orchestration of the ACP, the virtual subnets | external NMS hosts. Instead, the orchestration of the ACP, the | |||
and the software components can be done by trusted software that | virtual subnets, and the software components can be done by trusted | |||
could be considered to be part of the ANI (or even an extended ACP). | software that could be considered to be part of the ANI (or even an | |||
This software component is responsible for ensuring that only trusted | extended ACP). This software component is responsible for ensuring | |||
software components will get access to that virtual subnet and that | that only trusted software components will get access to that virtual | |||
only even more trusted software components will get access to both | subnet and that only even more trusted software components will get | |||
the ACP virtual subnet and the Data-Plane (because those ACP users | access to both the ACP virtual subnet and the data plane (because | |||
could leak traffic between ACP and Data-Plane). This trust could be | those ACP users could leak traffic between ACP and data plane). This | |||
established for example through cryptographic means such as signed | trust could be established, for example, through cryptographic means | |||
software packages. | such as signed software packages. | |||
8.1.3. Auto Configuration | 8.1.3. Autoconfiguration | |||
ACP edge nodes, NMS hosts and software components that as described | ACP edge nodes, NMS hosts, and software components that, as described | |||
in the previous section are meant to be composed via virtual | in the previous section, are meant to be composed via virtual | |||
interfaces SHOULD support on the ACP connect subnet StateLess Address | interfaces SHOULD support SLAAC [RFC4862] on the ACP connect subnet | |||
Autoconfiguration (SLAAC - [RFC4862]) and route auto configuration | and route autoconfiguration according to "Default Router Preferences | |||
according to [RFC4191]. | and More-Specific Routes" [RFC4191]. | |||
The ACP edge node acts as the router towards the ACP on the ACP | The ACP edge node acts as the router towards the ACP on the ACP | |||
connect subnet, providing the (auto-)configured prefix for the ACP | connect subnet, providing the (auto)configured prefix for the ACP | |||
connect subnet and (auto-)configured routes into the ACP to NMS hosts | connect subnet and (auto)configured routes to the ACP to NMS hosts | |||
and/or software components. | and/or software components. | |||
The ACP edge node uses the Route Information Option (RIO) of RFC4191 | The ACP edge node uses the Route Information Option (RIO) of | |||
to announce aggregated prefixes for address prefixes used in the ACP | [RFC4191] to announce aggregated prefixes for address prefixes used | |||
(with normal RIO lifetimes. In addition, the ACP edge node also uses | in the ACP (with normal RIO lifetimes). In addition, the ACP edge | |||
a RIO to announce the default route (::/0) with a lifetime of 0. | node also uses a RIO to announce the default route (::/0) with a | |||
lifetime of 0. | ||||
These RIOs allow to connect Type C hosts to the ACP via an ACP | These RIOs allow the connecting of type C hosts to the ACP via an ACP | |||
connect subnet on one interface and another network (Data Plane / NMS | connect subnet on one interface and another network (Data Plane and/ | |||
network) on the same or another interface of the Type C host, relying | or NMS network) on the same or another interface of the type C host, | |||
on other routers than the ACP edge node. The RIOs ensure that these | relying on routers other than the ACP edge node. The RIOs ensure | |||
hosts will only route the prefixes used in the ACP to the ACP edge | that these hosts will only route the prefixes used in the ACP to the | |||
node. | ACP edge node. | |||
Type A/B host ignore the RIOs and will consider the ACP node to be | Type A and B hosts ignore the RIOs and will consider the ACP node to | |||
their default router for all destination. This is sufficient when | be their default router for all destinations. This is sufficient | |||
type A/B hosts only need to connect to the ACP but not to other | when the type A or type B host only needs to connect to the ACP but | |||
networks. Attaching Type A/B hosts to both the ACP and other | not to other networks. Attaching a type A or type B host to both the | |||
networks, requires either explicit ACP prefix route configuration on | ACP and other networks requires explicit ACP prefix route | |||
the Type A/B hosts or the combined ACP/Data-Plane interface on the | configuration on either the host or the combined ACP and data plane | |||
ACP edge node, see Section 8.1.4. | interface on the ACP edge node, see Section 8.1.4. | |||
Aggregated prefix means that the ACP edge node needs to only announce | Aggregated prefix means that the ACP edge node needs to only announce | |||
the /48 ULA prefixes used in the ACP but none of the actual /64 | the /48 ULA prefixes used in the ACP but none of the actual /64 | |||
(Manual Addressing Sub-Scheme), /127 (ACP Zone Addressing Sub- | (Manual Addressing Sub-Scheme), /127 (Zone Addressing Sub-Scheme), | |||
Scheme), /112 or /120 (Vlong Addressing Sub-Scheme) routes of actual | /112 or /120 (Vlong Addressing Sub-Scheme) routes of actual ACP | |||
ACP nodes. If ACP interfaces are configured with non ULA prefixes, | nodes. If ACP interfaces are configured with non-ULA prefixes, then | |||
then those prefixes cannot be aggregated without further configured | those prefixes cannot be aggregated without further configured policy | |||
policy on the ACP edge node. This explains the above recommendation | on the ACP edge node. This explains the above recommendation to use | |||
to use ACP ULA prefix covered prefixes for ACP connect interfaces: | ACP ULA prefixes for ACP connect interfaces: they allow for a shorter | |||
They allow for a shorter list of prefixes to be signaled via RFC4191 | list of prefixes to be signaled via [RFC4191] to NMS hosts and | |||
to NMS hosts and software components. | software components. | |||
The ACP edge nodes that have a Vlong ACP address MAY allocate a | The ACP edge nodes that have a Vlong ACP address MAY allocate a | |||
subset of their /112 or /120 address prefix to ACP connect | subset of their /112 or /120 address prefix to ACP connect | |||
interface(s) to eliminate the need to non-autonomically configure/ | interface(s) to eliminate the need to non-autonomically configure | |||
provision the address prefixes for such ACP connect interfaces. | and/or provision the address prefixes for such ACP connect | |||
interfaces. | ||||
8.1.4. Combined ACP/Data-Plane Interface (VRF Select) | 8.1.4. Combined ACP and Data Plane Interface (VRF Select) | |||
Combined ACP and Data-Plane interface | Combined ACP and data plane interface | |||
. | . | |||
+--------+ +--------------------+ . +--------------+ | +--------+ +--------------------+ . +--------------+ | |||
| ACP | |ACP Edge No | . | NMS Host(s) | | | ACP | |ACP Edge No | . | NMS Host(s) | | |||
| Node | | | . | / Software | | | Node | | | . | / Software | | |||
| | | [ACP ]. | . | |+ | | | | [ACP ]. | . | |+ | |||
| | | .[VRF ] .[VRF ] | v | "ACP address"|| | | | | .[VRF ] .[VRF ] | v | "ACP Address"|| | |||
| +-------+. .[Select].+--------+ "Date Plane || | | +-------+. .[Select].+--------+ "Data Plane || | |||
| | ^ | .[Data ]. | | Address(es)"|| | | | ^ | .[Data ]. | | Address(es)"|| | |||
| | . | [Plane] | | || | | | . | [Plane] | | || | |||
| | . | [ ] | +--------------+| | | | . | [ ] | +--------------+| | |||
+--------+ . +--------------------+ +--------------+ | +--------+ . +--------------------+ +--------------+ | |||
. | . | |||
Data-Plane "native" and + ACP auto-negotiated/encrypted | Data plane "native" and + ACP auto-negotiated/encrypted | |||
Figure 17: VRF select | Figure 15: VRF Select | |||
Using two physical and/or virtual subnets (and therefore interfaces) | Using two physical and/or virtual subnets (and therefore interfaces) | |||
into NMS Hosts (as per Section 8.1.1) or Software (as per | to NMS hosts (as per Section 8.1.1) or software (as per | |||
Section 8.1.2) may be seen as additional complexity, for example with | Section 8.1.2) may be seen as additional complexity, for example, | |||
legacy NMS Hosts that support only one IP interface, or it may be | with legacy NMS hosts that support only one IP interface, or it may | |||
insufficient to support [RFC4191] Type A or B host (see | be insufficient to support type A or type B hosts [RFC4191] (see | |||
Section 8.1.3). | Section 8.1.3). | |||
To provide a single subnet into both ACP and Data-Plane, the ACP Edge | To provide a single subnet to both the ACP and Data plane, the ACP | |||
node needs to de-multiplex packets from NMS hosts into ACP VRF and | edge node needs to demultiplex packets from NMS hosts into ACP VRF | |||
Data-Plane. This is sometimes called "VRF select". If the ACP VRF | and data plane. This is sometimes called "VRF select". If the ACP | |||
has no overlapping IPv6 addresses with the Data-Plane (it should have | VRF has no overlapping IPv6 addresses with the data plane (it should | |||
no overlapping addresses), then this function can use the IPv6 | have no overlapping addresses), then this function can use the IPv6 | |||
Destination address. The problem is Source Address Selection on the | destination address. The problem is source address selection on the | |||
NMS Host(s) according to RFC6724. | NMS host(s) according to [RFC6724]. | |||
Consider the simple case: The ACP uses only one ULA prefix, the ACP | Consider the simple case: the ACP uses only one ULA prefix, and the | |||
IPv6 prefix for the Combined ACP and Data-Plane interface is covered | ACP IPv6 prefix for the combined ACP and data plane interface is | |||
by that ULA prefix. The ACP edge node announces both the ACP IPv6 | covered by that ULA prefix. The ACP edge node announces both the ACP | |||
prefix and one (or more) prefixes for the Data-Plane. Without | IPv6 prefix and one (or more) prefixes for the data plane. Without | |||
further policy configurations on the NMS Host(s), it may select its | further policy configurations on the NMS host(s), it may select its | |||
ACP address as a source address for Data-Plane ULA destinations | ACP address as a source address for data plane ULA destinations | |||
because of Rule 8 of RFC6724. The ACP edge node can pass on the | because of Rule 8 (Section 5 of [RFC6724]). The ACP edge node can | |||
packet to the Data-Plane, but the ACP source address should not be | pass on the packet to the data plane, but the ACP source address | |||
used for Data-Plane traffic, and return traffic may fail. | should not be used for data plane traffic, and return traffic may | |||
fail. | ||||
If the ACP carries multiple ULA prefixes or non-ULA ACP connect | If the ACP carries multiple ULA prefixes or non-ULA ACP connect | |||
prefixes, then the correct source address selection becomes even more | prefixes, then the correct source address selection becomes even more | |||
problematic. | problematic. | |||
With separate ACP connect and Data-Plane subnets and RFC4191 prefix | With separate ACP connect and data plane subnets and prefix | |||
announcements that are to be routed across the ACP connect interface, | announcements [RFC4191] that are to be routed across the ACP connect | |||
RFC6724 source address selection Rule 5 (use address of outgoing | interface, the source address selection of Rule 5 (use address of | |||
interface) will be used, so that above problems do not occur, even in | outgoing interface) (Section 5 of [RFC6724]) will be used, so that | |||
more complex cases of multiple ULA and non-ULA prefixes in the ACP | above problems do not occur, even in more complex cases of multiple | |||
routing table. | ULA and non-ULA prefixes in the ACP routing table. | |||
To achieve the same behavior with a Combined ACP and Data-Plane | To achieve the same behavior with a combined ACP and data plane | |||
interface, the ACP Edge Node needs to behave as two separate routers | interface, the ACP edge node needs to behave as two separate routers | |||
on the interface: One link-local IPv6 address/router for its ACP | on the interface: one link-local IPv6 address/router for its ACP | |||
reachability, and one link-local IPv6 address/router for its Data- | reachability, and one link-local IPv6 address/router for its data | |||
Plane reachability. The Router Advertisements for both are as | plane reachability. The Router Advertisements for both are as | |||
described above (Section 8.1.3): For the ACP, the ACP prefix is | described in Section 8.1.3: for the ACP, the ACP prefix is announced | |||
announced together with RFC4191 option for the prefixes routed across | together with the prefix option [RFC4191] routed across the ACP, and | |||
the ACP and lifetime=0 to disqualify this next-hop as a default | the lifetime is set to zero to disqualify this next hop as a default | |||
router. For the Data-Plane, the Data-Plane prefix(es) are announced | router. For the data plane, the data plane prefix(es) are announced | |||
together with whatever dafault router parameters are used for the | together with whatever default router parameters are used for the | |||
Data-Plane. | data plane. | |||
In result, RFC6724 source address selection Rule 5.5 may result in | As a result, source address selection Rule 5.5 (Section 5 of | |||
the same correct source address selection behavior of NMS hosts | [RFC6724]) may result in the same correct source address selection | |||
without further configuration on it as the separate ACP connect and | behavior of NMS hosts without further configuration as the separate | |||
Data-Plane interfaces. As described in the text for Rule 5.5, this | ACP connect and data plane interfaces on the host. As described in | |||
is only a MAY, because IPv6 hosts are not required to track next-hop | the text for Rule 5.5 (Section 5 of [RFC6724]), this is only a MAY | |||
information. If an NMS Host does not do this, then separate ACP | because IPv6 hosts are not required to track next-hop information. | |||
connect and Data-Plane interfaces are the preferable method of | If an NMS host does not do this, then separate ACP connect and data | |||
attachment. Hosts implementing [RFC8028] should (instead of may) | plane interfaces are the preferable method of attachment. Hosts | |||
implement [RFC6724] Rule 5.5, so it is preferred for hosts to support | implementing "First-Hop Router Selection by Hosts in a Multi-Prefix | |||
Network" [RFC8028] should (instead of may) implement Rule 5.5 | ||||
(Section 5 of [RFC6724]), so it is preferred for hosts to support | ||||
[RFC8028]. | [RFC8028]. | |||
ACP edge nodes MAY support the Combined ACP and Data-Plane interface. | ACP edge nodes MAY support the combined ACP and data plane interface. | |||
8.1.5. Use of GRASP | 8.1.5. Use of GRASP | |||
GRASP can and should be possible to use across ACP connect | GRASP can and should be possible to use across ACP connect | |||
interfaces, especially in the architectural correct solution when it | interfaces, especially in the architecturally correct solution when | |||
is used as a mechanism to connect Software (e.g., ASA or legacy NMS | it is used as a mechanism to connect software (e.g., ASA or legacy | |||
applications) to the ACP. | NMS applications) to the ACP. | |||
Given how the ACP is the security and transport substrate for GRASP, | Given how the ACP is the security and transport substrate for GRASP, | |||
the requirements for devices connected via ACP connect is that those | the requirements are that those devices connected via ACP connect are | |||
are equivalently (if not better) secured against attacks than ACP | equivalently (if not better) secured against attacks than ACP nodes | |||
nodes that do not use ACP connect and run only software that is | that do not use ACP connect, and they run only software that is | |||
equally (if not better) protected, known (or trusted) not to be | equally (if not better) protected, known (or trusted) not to be | |||
malicious and accordingly designed to isolate access to the ACP | malicious, and accordingly designed to isolate access to the ACP | |||
against external equipment. | against external equipment. | |||
The difference in security is that cryptographic security of the ACP | The difference in security is that cryptographic security of the ACP | |||
secure channel is replaced by required physical security/control of | secure channel is replaced by required physical security and/or | |||
the network connection between an ACP edge node and the NMS or other | control of the network connection between an ACP edge node and the | |||
host reachable via the ACP connect interface. See Section 8.1.1. | NMS or other host reachable via the ACP connect interface. See | |||
Section 8.1.1. | ||||
When using "Combined ACP and Data-Plane Interfaces", care has to be | When using the combined ACP and data plane interface, care has to be | |||
taken that only GRASP messages intended for the ACP GRASP domain | taken that only GRASP messages received from software or NMS hosts | |||
received from Software or NMS Hosts are forwarded by ACP edge nodes. | and intended for the ACP GRASP domain are forwarded by ACP edge | |||
Currently there is no definition for a GRASP security and transport | nodes. Currently there is no definition for a GRASP security and | |||
substrate beside the ACP, so there is no definition how such | transport substrate beside the ACP, so there is no definition how | |||
Software/NMS Host could participate in two separate GRASP Domains | such software/NMS host could participate in two separate GRASP | |||
across the same subnet (ACP and Data-Plane domains). At current it | domains across the same subnet (ACP and data plane domains). | |||
is assumed that all GRASP packets on a Combined ACP and Data-Plane | Currently it is assumed that all GRASP packets on a combined ACP and | |||
interface belong to the GRASP ACP Domain. They SHOULD all use the | data plane interface belong to the GRASP ACP domain. They SHOULD all | |||
ACP IPv6 addresses of the Software/NMS Hosts. The link-local IPv6 | use the ACP IPv6 addresses of the software/NMS hosts. The link-local | |||
addresses of Software/NMS Hosts (used for GRASP M_DISCOVERY and | IPv6 addresses of software/NMS hosts (used for GRASP M_DISCOVERY and | |||
M_FLOOD messages) are also assumed to belong to the ACP address | M_FLOOD messages) are also assumed to belong to the ACP address | |||
space. | space. | |||
8.2. Connecting ACP islands over Non-ACP L3 networks (Remote ACP | 8.2. Connecting ACP Islands over Non-ACP L3 Networks (Remote ACP | |||
neighbors) | Neighbors) | |||
Not all nodes in a network may support the ACP. If non-ACP Layer-2 | Not all nodes in a network may support the ACP. If non-ACP L2 | |||
devices are between ACP nodes, the ACP will work across it since it | devices are between ACP nodes, the ACP will work across them since it | |||
is IP based. However, the autonomic discovery of ACP neighbors via | is IP based. However, the autonomic discovery of ACP neighbors via | |||
DULL GRASP is only intended to work across L2 connections, so it is | DULL GRASP is only intended to work across L2 connections, so it is | |||
not sufficient to autonomically create ACP connections across non-ACP | not sufficient to autonomically create ACP connections across non-ACP | |||
Layer-3 devices. | L3 devices. | |||
8.2.1. Configured Remote ACP neighbor | 8.2.1. Configured Remote ACP Neighbor | |||
On the ACP node, remote ACP neighbors are configured explicitly. The | On the ACP node, remote ACP neighbors are configured explicitly. The | |||
parameters of such a "connection" are described in the following | parameters of such a "connection" are described in the following | |||
ABNF. | ABNF. The syntax shown is non-normative (as there are no standards | |||
for configuration) but only meant to illustrate the parameters and | ||||
which ones can be optional. | ||||
connection = [ method , local-addr, remote-addr, ?pmtu ] | connection = method "," local-addr "," remote-addr [ "," pmtu ] | |||
method = [ "IKEv2", ?port ] | method = "any" | |||
method =/ [ "DTLS", port ] | / ( "IKEv2" [ ":" port ] ) | |||
local-addr = [ address , ?vrf ] | / ( "DTLS" [ ":" port ] ) | |||
remote-addr = [ address ] | port = 1*DIGIT | |||
address = ("any" | ipv4-address | ipv6-address ) | local-addr = [ address [ ":" vrf ] ] | |||
vrf = tstr ; Name of a VRF on this node with local-address | remote-addr = address | |||
address = "any" | ||||
/ IPv4address / IPv6address ; From [RFC5954] | ||||
vrf = system-dependent ; Name of VRF for local-address | ||||
Figure 18: Parameters for remote ACP neighbors | Figure 16: Parameters for Remote ACP Neighbors | |||
Explicit configuration of a remote-peer according to this ABNF | Explicit configuration of a remote peer according to this ABNF | |||
provides all the information to build a secure channel without | provides all the information to build a secure channel without | |||
requiring a tunnel to that peer and running DULL GRASP inside of it. | requiring a tunnel to that peer and running DULL GRASP inside of it. | |||
The configuration includes the parameters otherwise signaled via DULL | The configuration includes the parameters otherwise signaled via DULL | |||
GRASP: local address, remote (peer) locator and method. The | GRASP: local address, remote (peer) locator, and method. The | |||
differences over DULL GRASP local neighbor discovery and secure | differences over DULL GRASP local neighbor discovery and secure | |||
channel creation are as follows: | channel creation are as follows: | |||
* The local and remote address can be IPv4 or IPv6 and are typically | * The local and remote address can be IPv4 or IPv6 and are typically | |||
global scope addresses. | global-scope addresses. | |||
* The VRF across which the connection is built (and in which local- | * The VRF across which the connection is built (and in which local- | |||
addr exists) can to be specified. If vrf is not specified, it is | addr exists) can be specified. If vrf is not specified, it is the | |||
the default VRF on the node. In DULL GRASP the VRF is implied by | default VRF on the node. In DULL GRASP, the VRF is implied by the | |||
the interface across which DULL GRASP operates. | interface across which DULL GRASP operates. | |||
* If local address is "any", the local address used when initiating | * If local address is "any", the local address used when initiating | |||
a secure channel connection is decided by source address selection | a secure channel connection is decided by source address selection | |||
([RFC6724] for IPv6). As a responder, the connection listens on | ([RFC6724] for IPv6). As a responder, the connection listens on | |||
all addresses of the node in the selected VRF. | all addresses of the node in the selected VRF. | |||
* Configuration of port is only required for methods where no | * Configuration of port is only required for methods where no | |||
defaults exist (e.g., "DTLS"). | defaults exist (e.g., "DTLS"). | |||
* If remote address is "any", the connection is only a responder. | * If the remote address is "any", the connection is only a | |||
It is a "hub" that can be used by multiple remote peers to connect | responder. It is a "hub" that can be used by multiple remote | |||
simultaneously - without having to know or configure their | peers to connect simultaneously -- without having to know or | |||
addresses. Example: Hub site for remote "spoke" sites reachable | configure their addresses, for example, a hub site for remote | |||
over the Internet. | "spoke" sites reachable over the Internet. | |||
* Pmtu should be configurable to overcome issues/limitations of Path | ||||
MTU Discovery (PMTUD). | * The pmtu parameter should be configurable to overcome issues or | |||
limitations of Path MTU Discovery (PMTUD). | ||||
* IKEv2/IPsec to remote peers should support the optional NAT | * IKEv2/IPsec to remote peers should support the optional NAT | |||
Traversal (NAT-T) procedures. | Traversal (NAT-T) procedures. | |||
8.2.2. Tunneled Remote ACP Neighbor | 8.2.2. Tunneled Remote ACP Neighbor | |||
An IPinIP, GRE or other form of pre-existing tunnel is configured | An IP-in-IP, GRE, or other form of preexisting tunnel is configured | |||
between two remote ACP peers and the virtual interfaces representing | between two remote ACP peers, and the virtual interfaces representing | |||
the tunnel are configured for "ACP enable". This will enable IPv6 | the tunnel are configured for "ACP enable". This will enable IPv6 | |||
link local addresses and DULL on this tunnel. In result, the tunnel | link-local addresses and DULL on this tunnel. As a result, the | |||
is used for normal "L2 adjacent" candidate ACP neighbor discovery | tunnel is used for normal "L2 adjacent" candidate ACP neighbor | |||
with DULL and secure channel setup procedures described in this | discovery with DULL and secure channel setup procedures described in | |||
document. | this document. | |||
Tunneled Remote ACP Neighbor requires two encapsulations: the | Tunneled Remote ACP Neighbor requires two encapsulations: the | |||
configured tunnel and the secure channel inside of that tunnel. This | configured tunnel and the secure channel inside of that tunnel. This | |||
makes it in general less desirable than Configured Remote ACP | makes it in general less desirable than Configured Remote ACP | |||
Neighbor. Benefits of tunnels are that it may be easier to implement | Neighbor. Benefits of tunnels are that it may be easier to implement | |||
because there is no change to the ACP functionality - just running it | because there is no change to the ACP functionality - just running it | |||
over a virtual (tunnel) interface instead of only native interfaces. | over a virtual (tunnel) interface instead of only native interfaces. | |||
The tunnel itself may also provide PMTUD while the secure channel | The tunnel itself may also provide PMTUD while the secure channel | |||
method may not. Or the tunnel mechanism is permitted/possible | method may not. Or the tunnel mechanism is permitted/possible | |||
through some firewall while the secure channel method may not. | through some firewall while the secure channel method may not. | |||
Tunneling using an insecure tunnel encapsulation increases on average | Tunneling using an insecure tunnel encapsulation increases, on | |||
the risk of a MITM downgrade attack somewhere along the underlay path | average, the risk of a MITM downgrade attack somewhere along the | |||
that blocks all but the most easily attacked ACP secure channel | underlay path. In such an attack, the MITM filters packets for all | |||
option. ACP nodes supporting tunneled remote ACP Neighbors SHOULD | but the most easily attacked ACP secure channel option to force use | |||
support configuration on such tunnel interfaces to restrict or | of that option. ACP nodes supporting Tunneled Remote ACP Neighbors | |||
SHOULD support configuration on such tunnel interfaces to restrict or | ||||
explicitly select the available ACP secure channel protocols (if the | explicitly select the available ACP secure channel protocols (if the | |||
ACP node supports more than one ACP secure channel protocol in the | ACP node supports more than one ACP secure channel protocol in the | |||
first place). | first place). | |||
8.2.3. Summary | 8.2.3. Summary | |||
Configured/Tunneled Remote ACP neighbors are less "indestructible" | Configured and Tunneled Remote ACP Neighbors are less | |||
than L2 adjacent ACP neighbors based on link local addressing, since | "indestructible" than L2 adjacent ACP neighbors based on link-local | |||
they depend on more correct Data-Plane operations, such as routing | addressing, since they depend on more correct data plane operations, | |||
and global addressing. | such as routing and global addressing. | |||
Nevertheless, these options may be crucial to incrementally deploy | Nevertheless, these options may be crucial to incrementally deploying | |||
the ACP, especially if it is meant to connect islands across the | the ACP, especially if it is meant to connect islands across the | |||
Internet. Implementations SHOULD support at least Tunneled Remote | Internet. Implementations SHOULD support at least Tunneled Remote | |||
ACP Neighbors via GRE tunnels - which is likely the most common | ACP Neighbors via GRE tunnels, which is likely the most common | |||
router-to-router tunneling protocol in use today. | router-to-router tunneling protocol in use today. | |||
9. ACP Operations (Informative) | 9. ACP Operations (Informative) | |||
The following sections document important operational aspects of the | The following sections document important operational aspects of the | |||
ACP. They are not normative because they do not impact the | ACP. They are not normative because they do not impact the | |||
interoperability between components of the ACP, but they include | interoperability between components of the ACP, but they include | |||
recommendations/requirements for the internal operational model | recommendations and/or requirements for the internal operational | |||
beneficial or necessary to achieve the desired use-case benefits of | model that are beneficial or necessary to achieve the desired use- | |||
the ACP (see Section 3). | case benefits of the ACP (see Section 3). | |||
* Section 9.1 describes the recommended capabilities of operator | ||||
diagnostics of ACP nodes. | ||||
* Section 9.2 describes at a high level how an ACP registrar needs | ||||
to work, what its configuration parameters are, and specific | ||||
issues impacting the choices of deployment design due to renewal | ||||
and revocation issues. It describes a model where ACP registrars | ||||
have their own sub-CA to provide the most distributed deployment | ||||
option for ACP registrars, and it describes considerations for | ||||
centralized policy control of ACP registrar operations. | ||||
* Section 9.1 describes recommended operator diagnostics | ||||
capabilities of ACP nodes. | ||||
* Section 9.2 describes high level how an ACP registrar needs to | ||||
work, what its configuration parameters are and specific issues | ||||
impacting the choices of deployment design due to renewal and | ||||
revocation issues. It describes a model where ACP Registrars have | ||||
their own sub-CA to provide the most distributed deployment option | ||||
for ACP Registrars, and it describes considerations for | ||||
centralized policy control of ACP Registrar operations. | ||||
* Section 9.3 describes suggested ACP node behavior and operational | * Section 9.3 describes suggested ACP node behavior and operational | |||
interfaces (configuration options) to manage the ACP in so-called | interfaces (configuration options) to manage the ACP in so-called | |||
greenfield devices (previously unconfigured) and brownfield | greenfield devices (previously unconfigured) and brownfield | |||
devices (preconfigured). | devices (preconfigured). | |||
The recommendations and suggestions of this chapter were derived from | The recommendations and suggestions of this chapter were derived from | |||
operational experience gained with a commercially available pre- | operational experience gained with a commercially available pre- | |||
standard ACP implementation. | standard ACP implementation. | |||
9.1. ACP (and BRSKI) Diagnostics | 9.1. ACP (and BRSKI) Diagnostics | |||
Even though ACP and ANI in general are taking out many manual | Even though ACP and ANI in general are removing many manual | |||
configuration mistakes through their automation, it is important to | configuration mistakes through their automation, it is important to | |||
provide good diagnostics for them. | provide good diagnostics for them. | |||
Basic standardized diagnostics would require support for (yang) | Basic standardized diagnostics would require support for (YANG) | |||
models representing the complete (auto-)configuration and operational | models representing the complete (auto)configuration and operational | |||
state of all components: GRASP, ACP and the infrastructure used by | state of all components: GRASP, ACP, and the infrastructure used by | |||
them: TLS/DTLS, IPsec, certificates, TA, time, VRF and so on. While | them, such as TLS/DTLS, IPsec, certificates, TA, time, VRF, and so | |||
necessary, this is not sufficient: | on. While necessary, this is not sufficient. | |||
Simply representing the state of components does not allow operators | Simply representing the state of components does not allow operators | |||
to quickly take action - unless they do understand how to interpret | to quickly take action -- unless they understand how to interpret the | |||
the data, and that can mean a requirement for deep understanding of | data, which can mean a requirement for deep understanding of all | |||
all components and how they interact in the ACP/ANI. | components and how they interact in the ACP/ANI. | |||
Diagnostic supports should help to quickly answer the questions | Diagnostic supports should help to quickly answer the questions | |||
operators are expected to ask, such as "is the ACP working | operators are expected to ask, such as "Is the ACP working | |||
correctly?", or "why is there no ACP connection to a known | correctly?" or "Why is there no ACP connection to a known neighboring | |||
neighboring node?" | node?" | |||
In current network management approaches, the logic to answer these | In current network management approaches, the logic to answer these | |||
questions is most often built as centralized diagnostics software | questions is most often built into centralized diagnostics software | |||
that leverages the above mentioned data models. While this approach | that leverages the above mentioned data models. While this approach | |||
is feasible for components utilizing the ANI, it is not sufficient to | is feasible for components utilizing the ANI, it is not sufficient to | |||
diagnose the ANI itself: | diagnose the ANI itself: | |||
* Developing the logic to identify common issues requires | * Developing the logic to identify common issues requires | |||
operational experience with the components of the ANI. Letting | operational experience with the components of the ANI. Letting | |||
each management system define its own analysis is inefficient. | each management system define its own analysis is inefficient. | |||
* When the ANI is not operating correctly, it may not be possible to | * When the ANI is not operating correctly, it may not be possible to | |||
run diagnostics from remote because of missing connectivity. The | run diagnostics remotely because of missing connectivity. The ANI | |||
ANI should therefore have diagnostic capabilities available | should therefore have diagnostic capabilities available locally on | |||
locally on the nodes themselves. | the nodes themselves. | |||
* Certain operations are difficult or impossible to monitor in real- | ||||
* Certain operations are difficult or impossible to monitor in real | ||||
time, such as initial bootstrap issues in a network location where | time, such as initial bootstrap issues in a network location where | |||
no capabilities exist to attach local diagnostics. Therefore, it | no capabilities exist to attach local diagnostics. Therefore, it | |||
is important to also define means of capturing (logging) | is important to also define how to capture (log) diagnostics | |||
diagnostics locally for later retrieval. Ideally, these captures | locally for later retrieval. Ideally, these captures are also | |||
are also non-volatile so that they can survive extended power-off | nonvolatile so that they can survive extended power-off | |||
conditions - for example when a device that fails to be brought up | conditions, for example, when a device that fails to be brought up | |||
zero-touch is being sent back for diagnostics at a more | zero-touch is sent for diagnostics at a more appropriate location. | |||
appropriate location. | ||||
The simplest form of diagnostics answering questions such as the | The simplest form of diagnostics for answering questions such as the | |||
above is to represent the relevant information sequentially in | above is to represent the relevant information sequentially in | |||
dependency order, so that the first non-expected/non-operational item | dependency order, so that the first unexpected and/or nonoperational | |||
is the most likely root cause. Or just log/highlight that item. For | item is the most likely root cause, or just log and/or highlight that | |||
example: | item. For example: | |||
Q: Is ACP operational to accept neighbor connections: | Question: Is the ACP operational to accept neighbor connections? | |||
* Check if the necessary configurations to make ACP/ANI operational | ||||
are correct (see Section 9.3 for a discussion of such commands). | ||||
* Check if any potentially necessary configuration to make ACP/ANI | ||||
operational are correct (see Section 9.3 for a discussion of such | ||||
commands). | ||||
* Does the system time look reasonable, or could it be the default | * Does the system time look reasonable, or could it be the default | |||
system time after clock chip battery failure (certificate checks | system time after battery failure of the clock chip? Certificate | |||
depend on reasonable notion of time)?. | checks depend on reasonable notion of time. | |||
* Does the node have keying material, such as domain certificate, TA | ||||
certificates, etc.? | ||||
* If there is no keying material and the ANI is supported/enabled, | ||||
check the state of BRSKI (not detailed in this example). | ||||
* Does the node have keying material - domain certificate, TA | ||||
certificates, ...> | ||||
* If no keying material and ANI is supported/enabled, check the | ||||
state of BRSKI (not detailed in this example). | ||||
* Check the validity of the domain certificate: | * Check the validity of the domain certificate: | |||
- Does the certificate validate against the TA? | - Does the certificate validate against the TA? | |||
- Has it been revoked? | - Has it been revoked? | |||
- Was the last scheduled attempt to retrieve a CRL successful | ||||
(e.g., do we know that our CRL information is up to date). | - Was the last scheduled attempt to retrieve a CRL successful? | |||
- Is the certificate valid: validity start time in the past, | (e.g., do we know that our CRL information is up to date?) | |||
expiration time in the future? | ||||
- Is the certificate valid? The validity start time is in the | ||||
past, and the expiration time is in the future? | ||||
- Does the certificate have a correctly formatted acp-node-name | - Does the certificate have a correctly formatted acp-node-name | |||
field? | field? | |||
* Was the ACP VRF successfully created? | * Was the ACP VRF successfully created? | |||
* Is ACP enabled on one or more interfaces that are up and running? | * Is ACP enabled on one or more interfaces that are up and running? | |||
If all this looks good, the ACP should be running locally "fine" - | If all of the above looks good, the ACP should be running "fine" | |||
but we did not check any ACP neighbor relationships. | locally, but we did not check any ACP neighbor relationships. | |||
Question: why does the node not create a working ACP connection to a | Question: Why does the node not create a working ACP connection to a | |||
neighbor on an interface? | neighbor on an interface? | |||
* Is the interface physically up? Does it have an IPv6 link-local | * Is the interface physically up? Does it have an IPv6 link-local | |||
address? | address? | |||
* Is it enabled for ACP? | * Is it enabled for ACP? | |||
* Do we successfully send DULL GRASP messages to the interface (link | ||||
layer errors)? | * Do we successfully send DULL GRASP messages to the interface? | |||
(Are there link-layer errors?) | ||||
* Do we receive DULL GRASP messages on the interface? If not, some | * Do we receive DULL GRASP messages on the interface? If not, some | |||
intervening L2 equipment performing bad MLD snooping could have | intervening L2 equipment performing bad MLD snooping could have | |||
caused problems. Provide e.g., diagnostics of the MLD querier | caused problems. Provide, e.g., diagnostics of the MLD querier | |||
IPv6 and MAC address. | IPv6 and MAC address. | |||
* Do we see the ACP objective in any DULL GRASP message from that | * Do we see the ACP objective in any DULL GRASP message from that | |||
interface? Diagnose the supported secure channel methods. | interface? Diagnose the supported secure channel methods. | |||
* Do we know the MAC address of the neighbor with the ACP objective? | * Do we know the MAC address of the neighbor with the ACP objective? | |||
If not, diagnose SLAAC/ND state. | If not, diagnose SLAAC/ND state. | |||
* When did we last attempt to build an ACP secure channel to the | * When did we last attempt to build an ACP secure channel to the | |||
neighbor? | neighbor? | |||
* If it failed, why: | ||||
- Did the neighbor close the connection on us or did we close the | * If it failed: | |||
connection on it because the domain certificate membership | ||||
- Did the neighbor close the connection on us, or did we close | ||||
the connection on it because the domain certificate membership | ||||
failed? | failed? | |||
- If the neighbor closed the connection on us, provide any error | - If the neighbor closed the connection on us, provide any error | |||
diagnostics from the secure channel protocol. | diagnostics from the secure channel protocol. | |||
- If we failed the attempt, display our local reason: | - If we failed the attempt, display our local reason: | |||
o There was no common secure channel protocol supported by the | o There was no common secure channel protocol supported by the | |||
two neighbors (this could not happen on nodes supporting | two neighbors (this could not happen on nodes supporting | |||
this specification because it mandates common support for | this specification because it mandates common support for | |||
IPsec). | IPsec). | |||
o The ACP certificate membership check (Section 6.2.3) fails: | o Did the ACP certificate membership check (Section 6.2.3) | |||
fail? | ||||
+ The neighbor's certificate is not signed directly or | + The neighbor's certificate is not signed directly or | |||
indirectly by one of the nodes TA. Provide diagnostics | indirectly by one of the node's TA. Provide diagnostics | |||
which TA it has (can identify whom the device belongs | which TA it has (can identify whom the device belongs | |||
to). | to). | |||
+ The neighbor's certificate does not have the same domain | + The neighbor's certificate does not have the same domain | |||
(or no domain at all). Diagnose domain-name and | (or no domain at all). Diagnose acp-domain-name and | |||
potentially other cert info. | potentially other cert info. | |||
+ The neighbor's certificate has been revoked or could not | + The neighbor's certificate has been revoked or could not | |||
be authenticated by OCSP. | be authenticated by OCSP. | |||
+ The neighbor's certificate has expired - or is not yet | ||||
+ The neighbor's certificate has expired, or it is not yet | ||||
valid. | valid. | |||
- Any other connection issues in e.g., IKEv2 / IPsec, DTLS?. | ||||
- Are there any other connection issues, e.g., IKEv2/IPsec, DTLS? | ||||
Question: Is the ACP operating correctly across its secure channels? | Question: Is the ACP operating correctly across its secure channels? | |||
* Are there one or more active ACP neighbors with secure channels? | * Are there one or more active ACP neighbors with secure channels? | |||
* Is the RPL routing protocol for the ACP running? | ||||
* Is RPL for the ACP running? | ||||
* Is there a default route to the root in the ACP routing table? | * Is there a default route to the root in the ACP routing table? | |||
* Is there for each direct ACP neighbor not reachable over the ACP | ||||
virtual interface to the root a route in the ACP routing table? | * Is there, for each direct ACP neighbor not reachable over the ACP | |||
virtual interface to the root, a route in the ACP routing table? | ||||
* Is ACP GRASP running? | * Is ACP GRASP running? | |||
* Is at least one SRV.est objective cached (to support certificate | ||||
* Is at least one "SRV.est" objective cached (to support certificate | ||||
renewal)? | renewal)? | |||
* Is there at least one BRSKI registrar objective cached (in case | ||||
BRSKI is supported) | ||||
* Is BRSKI proxy operating normally on all interfaces where ACP is | ||||
operating? | ||||
* ... | ||||
These lists are not necessarily complete, but illustrate the | * Is there at least one BRSKI registrar objective cached? (If BRSKI | |||
is supported.) | ||||
* Is the BRSKI proxy operating normally on all interfaces where ACP | ||||
is operating? | ||||
These lists are not necessarily complete, but they illustrate the | ||||
principle and show that there are variety of issues ranging from | principle and show that there are variety of issues ranging from | |||
normal operational causes (a neighbor in another ACP domain) over | normal operational causes (a neighbor in another ACP domain) to | |||
problems in the credentials management (certificate lifetimes), | problems in the credentials management (certificate lifetimes), to | |||
explicit security actions (revocation) or unexpected connectivity | explicit security actions (revocation) or unexpected connectivity | |||
issues (intervening L2 equipment). | issues (intervening L2 equipment). | |||
The items so far are illustrating how the ANI operations can be | The items so far illustrate how the ANI operations can be diagnosed | |||
diagnosed with passive observation of the operational state of its | with passive observation of the operational state of its components | |||
components including historic/cached/counted events. This is not | including historic, cached, and/or counted events. This is not | |||
necessary sufficient to provide good enough diagnostics overall: | necessarily sufficient to provide good enough diagnostics overall. | |||
The components of ACP and BRSKI are designed with security in mind | The components of ACP and BRSKI are designed with security in mind, | |||
but they do not attempt to provide diagnostics for building the | but they do not attempt to provide diagnostics for building the | |||
network itself. Consider two examples: | network itself. Consider two examples: | |||
1. BRSKI does not allow for a neighboring device to identify the | 1. BRSKI does not allow for a neighboring device to identify the | |||
pledges IDevID certificate. Only the selected BRSKI registrar | pledge's IDevID certificate. Only the selected BRSKI registrar | |||
can do this, but it may be difficult to disseminate information | can do this, but it may be difficult to disseminate information | |||
about undesired pledges from those BRSKI registrars to locations/ | from those BRSKI registrars about undesired pledges to locations | |||
nodes where information about those pledges is desired. | and/or nodes where information about those pledges is desired. | |||
2. LLDP disseminates information about nodes to their immediate | ||||
neighbors, such as node model/type/software and interface name/ | 2. LLDP disseminates information about nodes, such as node model, | |||
number of the connection. This information is often helpful or | type, and/or software and interface name and/or number of the | |||
even necessary in network diagnostics. It can equally be | connection, to their immediate neighbors. This information is | |||
considered to be too insecure to make this information available | often helpful or even necessary in network diagnostics. It can | |||
unprotected to all possible neighbors. | equally be considered too insecure to make this information | |||
available unprotected to all possible neighbors. | ||||
An "interested adjacent party" can always determine the IDevID | An "interested adjacent party" can always determine the IDevID | |||
certificate of a BRSKI pledge by behaving like a BRSKI proxy/ | certificate of a BRSKI pledge by behaving like a BRSKI proxy/ | |||
registrar. Therefore, the IDevID certificate of a BRSKI pledge is | registrar. Therefore, the IDevID certificate of a BRSKI pledge is | |||
not meant to be protected - it just has to be queried and is not | not meant to be protected -- it just has to be queried and is not | |||
signaled unsolicited (as it would be in LLDP) so that other observers | signaled unsolicited (as it would be in LLDP) so that other observers | |||
on the same subnet can determine who is an "interested adjacent | on the same subnet can determine who is an "interested adjacent | |||
party". | party". | |||
9.1.1. Secure Channel Peer diagnostics | 9.1.1. Secure Channel Peer Diagnostics | |||
When using mutual certificate authentication, the TA certificate is | When using mutual certificate authentication, the TA certificate is | |||
not required to be signaled explicitly because its hash is sufficient | not required to be signaled explicitly because its hash is sufficient | |||
for certificate chain validation. In the case of ACP secure channel | for certificate chain validation. In the case of ACP secure channel | |||
setup this leads to limited diagnostics when authentication fails | setup, this leads to limited diagnostics when authentication fails | |||
because of TA mismatch. For this reason, Section 6.8.2 recommends to | because of TA mismatch. For this reason, Section 6.8.2 recommends | |||
also include the TA certificate in the secure channel signaling. | also including the TA certificate in the secure channel signaling. | |||
This should be possible to do without protocol modifications in the | This should be possible to do without modifying the security | |||
security association protocols used by the ACP. For example, while | association protocols used by the ACP. For example, while [RFC7296] | |||
[RFC7296] does not mention this, it also does not prohibit it. | does not mention this, it also does not prohibit it. | |||
One common deployment use case where the diagnostic through the | One common use case where diagnostics through the signaled TA of a | |||
signaled TA of a candidate peer is very helpful are multi-tenant | candidate peer are very helpful is the multi-tenant environment, such | |||
environments such as office buildings, where different tenants run | as an office building, where different tenants run their own networks | |||
their own networks and ACPs. Each tenant is given supposedly | and ACPs. Each tenant is given supposedly disjoint L2 connectivity | |||
disjoint L2 connectivity through the building infrastructure. In | through the building infrastructure. In these environments, there | |||
these environments there are various common errors through which a | are various common errors through which a device may receive L2 | |||
device may receive L2 connectivity into the wrong tenants network. | connectivity into the wrong tenant's network. | |||
While the ACP itself is not impact by this, the Data-Plane to be | While the ACP itself is not impacted by this, the data plane to be | |||
built later may be impacted. Therefore, it is important to be able | built later may be impacted. Therefore, it is important to be able | |||
to diagnose such undesirable connectivity from the ACP so that any | to diagnose such undesirable connectivity from the ACP so that any | |||
autonomic or non-autonomic mechanisms to configure the Data-Plane can | autonomic or non-autonomic mechanisms to configure the data plane can | |||
accordingly treat such interfaces. The information in the TA of the | treat such interfaces accordingly. The information in the TA of the | |||
peer can then ease troubleshooting of such issues. | peer can then ease troubleshooting of such issues. | |||
Another example case is the intended or accidental re-activation of | Another use case is the intended or accidental reactivation of | |||
equipment whose TA certificate has long expired, such as redundant | equipment, such as redundant gear taken from storage, whose TA | |||
gear taken from storage after years. | certificate has long expired. | |||
A third example case is when in a mergers & acquisition case ACP | A third use case is when, in a merger and acquisition case, ACP nodes | |||
nodes have not been correctly provisioned with the mutual TA of | have not been correctly provisioned with the mutual TA of a | |||
previously disjoint ACP. This is assuming that the ACP domain names | previously disjoint ACP. This assumes that the ACP domain names were | |||
where already aligned so that the ACP domain membership check is only | already aligned so that the ACP domain membership check is only | |||
failing on the TA. | failing on the TA. | |||
A fourth example case is when multiple registrars where set up for | A fourth use case is when multiple registrars are set up for the same | |||
the same ACP but without correctly setting up the same TA. For | ACP but are not correctly set up with the same TA. For example, when | |||
example, when registrars support to also be CA themselves but are | registrars support also being CAs themselves but are misconfigured to | |||
misconfigured to become TA instead of intermediate CA. | become TAs instead of intermediate CAs. | |||
9.2. ACP Registrars | 9.2. ACP Registrars | |||
As described in Section 6.11.7, the ACP addressing mechanism is | As described in Section 6.11.7, the ACP addressing mechanism is | |||
designed to enable lightweight, distributed and uncoordinated ACP | designed to enable lightweight, distributed, and uncoordinated ACP | |||
registrars that are providing ACP address prefixes to candidate ACP | registrars that provide ACP address prefixes to candidate ACP nodes | |||
nodes by enrolling them with an ACP certificate into an ACP domain | by enrolling them with an ACP certificate into an ACP domain via any | |||
via any appropriate mechanism/protocol, automated or not. | appropriate mechanism and/or protocol, automated or not. | |||
This section discusses informatively more details and options for ACP | This section discusses informatively more details and options for ACP | |||
registrars. | registrars. | |||
9.2.1. Registrar interactions | 9.2.1. Registrar Interactions | |||
This section summarizes and discusses the interactions with other | This section summarizes and discusses the interactions with other | |||
entities required by an ACP registrar. | entities required by an ACP registrar. | |||
In a simple instance of an ACP network, no central NOC component | In a simple instance of an ACP network, no central NOC component | |||
beside a TA is required. Typically, this is a root CA. One or more | beside a TA is required. Typically, this is a root CA. One or more | |||
uncoordinated acting ACP registrar can be set up, performing the | uncoordinated acting ACP registrars can be set up, performing the | |||
following interactions: | following interactions. | |||
To orchestrate enrolling a candidate ACP node autonomically, the ACP | To orchestrate enrolling a candidate ACP node autonomically, the ACP | |||
registrar can rely on the ACP and use Proxies to reach the candidate | registrar can rely on the ACP and use proxies to reach the candidate | |||
ACP node, therefore allowing minimum pre-existing (auto-)configured | ACP node, therefore allowing minimal, preexisting (auto)configured | |||
network services on the candidate ACP node. BRSKI defines the BRSKI | network services on the candidate ACP node. BRSKI defines the BRSKI | |||
proxy, a design that can be adopted for various protocols that | proxy, a design that can be adopted for various protocols that | |||
Pledges/candidate ACP nodes could want to use, for example BRSKI over | pledges and/or candidate ACP nodes could want to use, for example, | |||
CoAP (Constrained Application Protocol), or proxying of NETCONF. | BRSKI over CoAP (Constrained Application Protocol) or the proxying of | |||
NETCONF. | ||||
To reach a TA that has no ACP connectivity, the ACP registrar would | To reach a TA that has no ACP connectivity, the ACP registrar uses | |||
use the Data-Plane. ACP and Data-Plane in an ACP registrar could | the data plane. The ACP and data plane in an ACP registrar could | |||
(and by default should be) completely isolated from each other at the | (and by default should) be completely isolated from each other at the | |||
network level. Only applications such as the ACP registrar would | network level. Only applications such as the ACP registrar would | |||
need the ability for their transport stacks to access both. | need the ability for their transport stacks to access both. | |||
In non-autonomic enrollment options, the Data-Plane between a ACP | In non-autonomic enrollment options, the data plane between an ACP | |||
registrar and the candidate ACP node needs to be configured first. | registrar and the candidate ACP node needs to be configured first. | |||
This includes the ACP registrar and the candidate ACP node. Then any | This includes the ACP registrar and the candidate ACP node. Then any | |||
appropriate set of protocols can be used between ACP registrar and | appropriate set of protocols can be used between the ACP registrar | |||
candidate ACP node to discover the other side, and then connect and | and the candidate ACP node to discover the other side, and then | |||
enroll (configure) the candidate ACP node with an ACP certificate. | connect and enroll (configure) the candidate ACP node with an ACP | |||
NETCONF ZeroTouch ([RFC8572]) is an example protocol that could be | certificate. For example, NETCONF Zero Touch ("Secure Zero Touch | |||
used for this. BRSKI using optional discovery mechanisms is equally | Provisioning (SZTP)" [RFC8572]) is a protocol that could be used for | |||
a possibility for candidate ACP nodes attempting to be enrolled | this. BRSKI using optional discovery mechanisms is equally a | |||
across non-ACP networks, such as the Internet. | possibility for candidate ACP nodes attempting to be enrolled across | |||
non-ACP networks, such as the Internet. | ||||
When candidate ACP nodes have secure bootstrap, such as BRSKI | When a candidate ACP node, such as a BRSKI pledge, has secure | |||
Pledges, they will not trust to be configured/enrolled across the | bootstrap, it will not trust being configured and/or enrolled across | |||
network, unless being presented with a voucher (see [RFC8366]) | the network unless it is presented with a voucher (see "A Voucher | |||
authorizing the network to take possession of the node. An ACP | Artifact for Bootstrapping Protocols" [RFC8366]) authorizing the | |||
registrar will then need a method to retrieve such a voucher, either | network to take possession of the node. An ACP registrar will then | |||
offline, or online from a MASA (Manufacturer Authorized Signing | need a method to retrieve such a voucher, either offline or online | |||
Authority). BRSKI and NETCONF ZeroTouch are two protocols that | from a MASA (Manufacturer Authorized Signing Authority). BRSKI and | |||
include capabilities to present the voucher to the candidate ACP | NETCONF Zero Touch are two protocols that include capabilities to | |||
node. | present the voucher to the candidate ACP node. | |||
An ACP registrar could operate EST for ACP certificate renewal and/or | An ACP registrar could operate EST for ACP certificate renewal and/or | |||
act as a CRL Distribution point. A node performing these services | act as a CRL Distribution Point. A node performing these services | |||
does not need to support performing (initial) enrollment, but it does | does not need to support performing (initial) enrollment, but it does | |||
require the same above described connectivity as an ACP registrar: | require the same above described connectivity as an ACP registrar: | |||
via the ACP to ACP nodes and via the Data-Plane to the TA and other | via the ACP to the ACP nodes and via the data plane to the TA and | |||
sources of CRL information. | other sources of CRL information. | |||
9.2.2. Registrar Parameter | 9.2.2. Registrar Parameters | |||
The interactions of an ACP registrar outlined Section 6.11.7 and | The interactions of an ACP registrar outlined in Section 6.11.7 and | |||
Section 9.2.1 above depend on the following parameters: | Section 9.2.1 depend on the following parameters: | |||
* A URL to the TA and credentials so that the ACP registrar can let | * A URL to the TA and credentials so that the ACP registrar can let | |||
the TA sign candidate ACP node certificates. | the TA sign candidate ACP node certificates. | |||
* The ACP domain-name. | ||||
* The ACP domain name. | ||||
* The Registrar-ID to use. This could default to a MAC address of | * The Registrar-ID to use. This could default to a MAC address of | |||
the ACP registrar. | the ACP registrar. | |||
* For recovery, the next-useable Node-IDs for zone (Zone-ID=0) sub- | * For recovery, the next usable Node-IDs for the Zone Addressing | |||
addressing scheme, for Vlong /112 and for Vlong /120 sub- | Sub-Scheme (Zone-ID 0) and for the Vlong Addressing Sub-Scheme | |||
addressing scheme. These IDs would only need to be provisioned | (/112 and /120). These IDs would only need to be provisioned | |||
after recovering from a crash. Some other mechanism would be | after recovering from a crash. Some other mechanism would be | |||
required to remember these IDs in a backup location or to recover | required to remember these IDs in a backup location or to recover | |||
them from the set of currently known ACP nodes. | them from the set of currently known ACP nodes. | |||
* Policies if candidate ACP nodes should receive a domain | ||||
certificate or not, for example based on the devices IDevID | * Policies on whether the candidate ACP nodes should receive a | |||
certificate as in BRSKI. The ACP registrar may have a whitelist | domain certificate or not, for example, based on the device's | |||
or blacklist of devices [X.520] "serialNumbers" attribute in the | IDevID certificate as in BRSKI. The ACP registrar may whitelist | |||
subject field distinguished name encoding from their IDevID | or blacklist based on a device's "serialNumber" attribute [X.520] | |||
in the subject field distinguished name encoding of its IDevID | ||||
certificate. | certificate. | |||
* Policies what type of address prefix to assign to a candidate ACP | ||||
devices, based on likely the same information. | * Policies on what type of address prefix to assign to a candidate | |||
* For BRSKI or other mechanisms using vouchers: Parameters to | ACP device, likely based on the same information. | |||
determine how to retrieve vouchers for specific type of secure | ||||
* For BRSKI or other mechanisms using vouchers: parameters to | ||||
determine how to retrieve vouchers for specific types of secure | ||||
bootstrap candidate ACP nodes (such as MASA URLs), unless this | bootstrap candidate ACP nodes (such as MASA URLs), unless this | |||
information is automatically learned such as from the IDevID | information is automatically learned, such as from the IDevID | |||
certificate of candidate ACP nodes (as defined in BRSKI). | certificate of candidate ACP nodes (as defined in BRSKI). | |||
9.2.3. Certificate renewal and limitations | 9.2.3. Certificate Renewal and Limitations | |||
When an ACP node renews/rekeys its certificate, it may end up doing | When an ACP node renews and/or rekeys its certificate, it may end up | |||
so via a different registrar (e.g., EST server) than the one it | doing so via a different registrar (e.g., EST server) than the one it | |||
originally received its ACP certificate from, for example because | originally received its ACP certificate from, for example, because | |||
that original ACP registrar is gone. The ACP registrar through which | that original ACP registrar is gone. The ACP registrar through which | |||
the renewal/rekeying is performed would by default trust the acp- | the renewal/rekeying is performed would by default trust the acp- | |||
node-name from the ACP nodes current ACP certificate and maintain | node-name from the ACP node's current ACP certificate and maintain | |||
this information so that the ACP node maintains its ACP address | this information so that the ACP node maintains its ACP address | |||
prefix. In EST renewal/rekeying, the ACP nodes current ACP | prefix. In EST renewal/rekeying, the ACP node's current ACP | |||
certificate is signaled during the TLS handshake. | certificate is signaled during the TLS handshake. | |||
This simple scenario has two limitations: | This simple scenario has two limitations: | |||
1. The ACP registrars cannot directly assign certificates to nodes | 1. The ACP registrar cannot directly assign certificates to nodes | |||
and therefore needs an "online" connection to the TA. | and therefore needs an "online" connection to the TA. | |||
2. Recovery from a compromised ACP registrar is difficult. When an | 2. Recovery from a compromised ACP registrar is difficult. When an | |||
ACP registrar is compromised, it can insert for example a | ACP registrar is compromised, it can insert, for example, a | |||
conflicting acp-node-name and create thereby an attack against | conflicting acp-node-name and thereby create an attack against | |||
other ACP nodes through the ACP routing protocol. | other ACP nodes through the ACP routing protocol. | |||
Even when such a malicious ACP registrar is detected, resolving the | Even when such a malicious ACP registrar is detected, resolving the | |||
problem may be difficult because it would require identifying all the | problem may be difficult because it would require identifying all the | |||
wrong ACP certificates assigned via the ACP registrar after it was | wrong ACP certificates assigned via the ACP registrar after it was | |||
compromised. And without additional centralized tracking of assigned | compromised. Without additional centralized tracking of assigned | |||
certificates there is no way to do this. | certificates, there is no way to do this. | |||
9.2.4. ACP Registrars with sub-CA | 9.2.4. ACP Registrars with Sub-CA | |||
In situations, where either of the above two limitations are an | In situations where either of the above two limitations are an issue, | |||
issue, ACP registrars could also be sub-CAs. This removes the need | ACP registrars could also be sub-CAs. This removes the need for | |||
for connectivity to a TA whenever an ACP node is enrolled, and | connectivity to a TA whenever an ACP node is enrolled, and it reduces | |||
reduces the need for connectivity of such an ACP registrar to a TA to | the need for connectivity of such an ACP registrar to a TA to only | |||
only those times when it needs to renew its own certificate. The ACP | those times when it needs to renew its own certificate. The ACP | |||
registrar would also now use its own (sub-CA) certificate to enroll | registrar would also now use its own (sub-CA) certificate to enroll | |||
and sign the ACP nodes certificates, and therefore it is only | and sign the ACP node's certificates, and therefore it is only | |||
necessary to revoke a compromised ACP registrars sub-CA certificate. | necessary to revoke a compromised ACP registrar's sub-CA certificate. | |||
Alternatively one can let it expire and not renew it, when the | Alternatively, one can let it expire and not renew it when the | |||
certificate of the sub-CA is appropriately short-lived. | certificate of the sub-CA is appropriately short-lived. | |||
As the ACP domain membership check verifies a peer ACP node's ACP | As the ACP domain membership check verifies a peer ACP node's ACP | |||
certificate trust chain, it will also verify the signing certificate | certificate trust chain, it will also verify the signing certificate, | |||
which is the compromised/revoked sub-CA certificate. Therefore, ACP | which is the compromised and/or revoked sub-CA certificate. | |||
domain membership for an ACP node enrolled from a compromised and | Therefore, ACP domain membership for an ACP node enrolled by a | |||
discovered ACP registrar will fail. | compromised and discovered ACP registrar will fail. | |||
ACP nodes enrolled by a compromised ACP registrar would automatically | ACP nodes enrolled by a compromised ACP registrar would automatically | |||
fail to establish ACP channels and ACP domain certificate renewal via | fail to establish ACP channels and ACP domain certificate renewal via | |||
EST and therefore revert to their role as a candidate ACP members and | EST and therefore revert to their role as candidate ACP members and | |||
attempt to get a new ACP certificate from an ACP registrar - for | attempt to get a new ACP certificate from an ACP registrar, for | |||
example, via BRSKI. In result, ACP registrars that have an | example, via BRSKI. As a result, ACP registrars that have an | |||
associated sub-CA makes isolating and resolving issues with | associated sub-CA make isolating and resolving issues with | |||
compromised registrars easier. | compromised registrars easier. | |||
Note that ACP registrars with sub-CA functionality also can control | Note that ACP registrars with sub-CA functionality also can control | |||
the lifetime of ACP certificates easier and therefore also be used as | the lifetime of ACP certificates more easily and therefore can be | |||
a tool to introduce short lived certificates and not rely on CRL, | used as a tool to introduce short-lived certificates and to no longer | |||
whereas the certificates for the sub-CAs themselves could be longer | rely on CRL, whereas the certificates for the sub-CAs themselves | |||
lived and subject to CRL. | could be longer lived and subject to CRL. | |||
9.2.5. Centralized Policy Control | 9.2.5. Centralized Policy Control | |||
When using multiple, uncoordinated ACP registrars, several advanced | When using multiple, uncoordinated ACP registrars, several advanced | |||
operations are potentially more complex than with a single, resilient | operations are potentially more complex than with a single, resilient | |||
policy control backend, for example including but not limited to: | policy control backend, for example, including but not limited to the | |||
following: | ||||
* Which candidate ACP node is permitted or not permitted into an ACP | * Deciding which candidate ACP node is permitted or not permitted | |||
domain. This may not be a decision to be taken upfront, so that a | into an ACP domain. This may not be a decision to be made | |||
policy per "serialNumber" attribute in the subject field | upfront, so that a policy per "serialNumber" attribute in the | |||
distinguished name encoding can be loaded into every ACP | subject field distinguished name encoding can be loaded into every | |||
registrar. Instead, it may better be decided in real-time | ACP registrar. Instead, it may better be decided in real time, | |||
including potentially a human decision in a NOC. | potentially including a human decision in a NOC. | |||
* Tracking of all enrolled ACP nodes and their certificate | ||||
information. For example, in support of revoking individual ACP | ||||
nodes certificates. | ||||
* More flexible policies what type of address prefix or even what | * Tracking all enrolled ACP nodes and their certificate information. | |||
specific address prefix to assign to a candidate ACP node. | For example, in support of revoking an individual ACP node's | |||
certificates. | ||||
* Needing more flexible policies as to which type of address prefix | ||||
or even which specific address prefix to assign to a candidate ACP | ||||
node. | ||||
These and other operations could be introduced more easily by | These and other operations could be introduced more easily by | |||
introducing a centralized Policy Management System (PMS) and | introducing a centralized Policy Management System (PMS) and | |||
modifying ACP registrar behavior so that it queries the PMS for any | modifying ACP registrar behavior so that it queries the PMS for any | |||
policy decision occurring during the candidate ACP node enrollment | policy decision occurring during the candidate ACP node enrollment | |||
process and/or the ACP node certificate renewal process. For | process and/or the ACP node certificate renewal process, for example, | |||
example, which ACP address prefix to assign. Likewise the ACP | which ACP address prefix to assign. Likewise, the ACP registrar | |||
registrar would report any relevant state change information to the | would report any relevant state change information to the PMS as | |||
PMS as well, for example when a certificate was successfully enrolled | well, for example, when a certificate was successfully enrolled onto | |||
onto a candidate ACP node. | a candidate ACP node. | |||
9.3. Enabling and disabling ACP/ANI | 9.3. Enabling and Disabling the ACP and/or the ANI | |||
Both ACP and BRSKI require interfaces to be operational enough to | Both ACP and BRSKI require interfaces to be operational enough to | |||
support sending/receiving their packets. In node types where | support the sending and receiving of their packets. In node types | |||
interfaces are by default (e.g., without operator configuration) | where interfaces are enabled by default (e.g., without operator | |||
enabled, such as most L2 switches, this would be less of a change in | configuration), such as most L2 switches, this would be less of a | |||
behavior than in most L3 devices (e.g. routers), where interfaces are | change in behavior than in most L3 devices (e.g., routers), where | |||
by default disabled. In almost all network devices it is common | interfaces are disabled by default. In almost all network devices, | |||
though for configuration to change interfaces to a physically | though, it is common for configuration to change interfaces to a | |||
disabled state and that would break the ACP. | physically disabled state, and this would break the ACP. | |||
In this section, we discuss a suggested operational model to enable/ | In this section, we discuss a suggested operational model to enable | |||
disable interfaces and nodes for ACP/ANI in a way that minimizes the | and disable interfaces and nodes for ACP/ANI in a way that minimizes | |||
risk of operator action to break the ACP in this way, and that also | the risk of breaking the ACP due to operator action and also | |||
minimizes operator surprise when ACP/ANI becomes supported in node | minimizes operator surprise when the ACP/ANI becomes supported in | |||
software. | node software. | |||
9.3.1. Filtering for non-ACP/ANI packets | 9.3.1. Filtering for Non-ACP/ANI Packets | |||
Whenever this document refers to enabling an interface for ACP (or | Whenever this document refers to enabling an interface for ACP (or | |||
BRSKI), it only requires to permit the interface to send/receive | BRSKI), it only requires permitting the interface to send and receive | |||
packets necessary to operate ACP (or BRSKI) - but not any other Data- | packets necessary to operate ACP (or BRSKI) -- but not any other data | |||
Plane packets. Unless the Data-Plane is explicitly configured/ | plane packets. Unless the data plane is explicitly configured and | |||
enabled, all packets not required for ACP/BRSKI should be filtered on | enabled, all packets that are not required for ACP/BRSKI should be | |||
input and output: | filtered on input and output. | |||
Both BRSKI and ACP require link-local only IPv6 operations on | Both BRSKI and ACP require link-local-only IPv6 operations on | |||
interfaces and DULL GRASP. IPv6 link-local operations means the | interfaces and DULL GRASP. IPv6 link-local operations mean the | |||
minimum signaling to auto-assign an IPv6 link-local address and talk | minimum signaling to auto-assign an IPv6 link-local address and talk | |||
to neighbors via their link-local address: SLAAC (Stateless Address | to neighbors via their link-local addresses: SLAAC [RFC4862] and ND | |||
Auto-Configuration - [RFC4862]) and ND (Neighbor Discovery - | [RFC4861]. When the device is a BRSKI pledge, it may also require | |||
[RFC4861]). When the device is a BRSKI pledge, it may also require | ||||
TCP/TLS connections to BRSKI proxies on the interface. When the | TCP/TLS connections to BRSKI proxies on the interface. When the | |||
device has keying material, and the ACP is running, it requires DULL | device has keying material, and the ACP is running, it requires DULL | |||
GRASP packets and packets necessary for the secure-channel mechanism | GRASP packets and packets necessary for the secure channel mechanism | |||
it supports, e.g., IKEv2 and IPsec ESP packets or DTLS packets to the | it supports, e.g., IKEv2 and IPsec ESP packets or DTLS packets to the | |||
IPv6 link-local address of an ACP neighbor on the interface. It also | IPv6 link-local address of an ACP neighbor on the interface. It also | |||
requires TCP/TLS packets for its BRSKI proxy functionality, if it | requires TCP/TLS packets for its BRSKI proxy functionality if it | |||
does support BRSKI. | supports BRSKI. | |||
9.3.2. Admin Down State | 9.3.2. "admin down" State | |||
Interfaces on most network equipment have at least two states: "up" | Interfaces on most network equipment have at least two states: "up" | |||
and "down". These may have product specific names. "down" for | and "down". These may have product-specific names. For example, | |||
example could be called "shutdown" and "up" could be called "no | "down" could be called "shutdown", and "up" could be called "no | |||
shutdown". The "down" state disables all interface operations down | shutdown". The "down" state disables all interface operations down | |||
to the physical level. The "up" state enables the interface enough | to the physical level. The "up" state enables the interface enough | |||
for all possible L2/L3 services to operate on top of it and it may | for all possible L2/L3 services to operate on top of it, and it may | |||
also auto-enable some subset of them. More commonly, the operations | also auto-enable some subset of them. More commonly, the operations | |||
of various L2/L3 services is controlled via additional node-wide or | of various L2/L3 services are controlled via additional node-wide or | |||
interface level options, but they all become only active when the | interface-level options, but they all become active only when the | |||
interface is not "down". Therefore, an easy way to ensure that all | interface is not "down". Therefore, an easy way to ensure that all | |||
L2/L3 operations on an interface are inactive is to put the interface | L2/L3 operations on an interface are inactive is to put the interface | |||
into "down" state. The fact that this also physically shuts down the | into "down" state. The fact that this also physically shuts down the | |||
interface is in many cases just a side effect, but it may be | interface is just a side effect in many cases, but it may be | |||
important in other cases (see below, Section 9.3.2.2). | important in other cases (see Section 9.3.2.2). | |||
One of the common problems of remote management is for the operator | A common problem of remote management is the operator or SDN | |||
or SDN controller to cut its own connectivity to the remote node by a | controller cutting its own connectivity to the remote node via | |||
configuration impacting its own management connection into the node. | configuration, impacting its own management connection to the node. | |||
The ACP itself should have no dedicated configuration other than | The ACP itself should have no dedicated configuration other than the | |||
aforementioned enablement of the ACP on brownfield ACP nodes. This | aforementioned enabling of the ACP on brownfield ACP nodes. This | |||
leaves configuration that cannot distinguish between ACP and Data- | leaves configuration that cannot distinguish between the ACP and data | |||
Plane as sources of configuration mistakes as these commands will | plane as sources of configuration mistakes as these commands will | |||
impact the ACP even though they should only impact the Data-Plane. | impact the ACP even though they should only impact the data plane. | |||
The one ubiquitous type of commands that do this on many type of | The one ubiquitous type of command that does this on many types of | |||
routers are interface "down" commands/configurations. When such a | routers is the interface "down" command/configuration. When such a | |||
command is applied to the interface through which the ACP provides | command is applied to the interface through which the ACP provides | |||
access for remote management it would cut the remote management | access for remote management, it cuts the remote management | |||
connection through the ACP because, as outlined above, the "down" | connection through the ACP because, as outlined above, the "down" | |||
commands typically impact the physical layer too and not only the | command typically impacts the physical layer, too, and not only the | |||
Data-Plane services. | data plane services. | |||
To provide ACP/ANI resilience against such operator misconfiguration, | To provide ACP/ANI resilience against such operator misconfiguration, | |||
this document recommends to separate the "down" state of interfaces | this document recommends separating the "down" state of interfaces | |||
into an "admin down" state where the physical layer is kept running | into an "admin down" state, where the physical layer is kept running | |||
and ACP/ANI can use the interface and a "physical down" state. Any | and the ACP/ANI can use the interface, and a "physical down" state. | |||
existing "down" configurations would map to "admin down". In "admin | Any existing "down" configurations would map to "admin down". In | |||
down", any existing L2/L3 services of the Data-Plane should see no | "admin down", any existing L2/L3 services of the data plane should | |||
difference to "physical down" state. To ensure that no Data-Plane | see no difference to "physical down" state. To ensure that no data | |||
packets could be sent/received, packet filtering could be established | plane packets could be sent or received, packet filtering could be | |||
automatically as described above in Section 9.3.1. | established automatically as described in Section 9.3.1. | |||
An example of non-ACP but ANI traffic that should be permitted to | An example of ANI, but not ACP, traffic that should be permitted to | |||
pass even in "admin-down" state is BRSKI enrollment traffic between | pass even in "admin down" state is BRSKI enrollment traffic between a | |||
BRSKI pledge and a BRSKI proxy. | BRSKI pledge and a BRSKI proxy. | |||
As necessary (see discussion below) new configuration options could | New configuration options could be introduced as necessary (see | |||
be introduced to issue "physical down". The options should be | discussion below) to issue "physical down". The options should be | |||
provided with additional checks to minimize the risk of issuing them | provided with additional checks to minimize the risk of issuing them | |||
in a way that breaks the ACP without automatic restoration. For | in a way that breaks the ACP without automatic restoration. Examples | |||
example, they could be denied to be issued from a control connection | of checks include not allowing the option to be issued from a control | |||
(NETCONF/SSH) that goes across the interface itself ("do not | connection (NETCONF/SSH) that goes across the interface itself ("do | |||
disconnect yourself"). Or they could be performed only temporary and | not disconnect yourself") or only applying the option after | |||
only be made permanent with additional later reconfirmation. | additional reconfirmation. | |||
In the following sub-sections important aspects to the introduction | The following subsections discuss important aspects of the | |||
of "admin down" state are discussed. | introduction of "admin down" state. | |||
9.3.2.1. Security | 9.3.2.1. Security | |||
Interfaces are physically brought down (or left in default down | Interfaces are physically brought down (or left in default "down" | |||
state) as a form of security. "Admin down" state as described above | state) as a form of security. The "admin down" state as described | |||
provides also a high level of security because it only permits ACP/ | above also provides also a high level of security because it only | |||
ANI operations which are both well secured. Ultimately, it is | permits ACP/ANI operations, which are both well secured. Ultimately, | |||
subject to security review for the deployment whether "admin down" is | it is subject to the deployment's security review whether "admin | |||
a feasible replacement for "physical down". | down" is a feasible replacement for "physical down". | |||
The need to trust the security of ACP/ANI operations needs to be | The need to trust the security of ACP/ANI operations needs to be | |||
weighed against the operational benefits of permitting this: Consider | weighed against the operational benefits of permitting the following: | |||
the typical example of a CPE (customer premises equipment) with no | consider the typical example of a CPE (customer premises equipment) | |||
on-site network expert. User ports are in physical down state unless | with no on-site network expert. User ports are in "physical down" | |||
explicitly configured not to be. In a misconfiguration situation, | state unless explicitly configured not to be. In a misconfiguration | |||
the uplink connection is incorrectly plugged into such as user port. | situation, the uplink connection is incorrectly plugged into such a | |||
The device is disconnected from the network and therefore no | user port. The device is disconnected from the network, and | |||
diagnostics from the network side is possible anymore. | therefore diagnostics from the network side are no longer possible. | |||
Alternatively, all ports default to "admin down". The ACP (but not | Alternatively, all ports default to "admin down". The ACP (but not | |||
the Data-Plane) would still automatically form. Diagnostics from the | the data plane) would still automatically form. Diagnostics from the | |||
network side is possible and operator reaction could include to | network side are possible, and operator reaction could include either | |||
either make this port the operational uplink port or to instruct re- | to make this port the operational uplink port or to instruct re- | |||
cabling. Security wise, only ACP/ANI could be attacked, all other | cabling. Security wise, only the ACP/ANI could be attacked, all | |||
functions are filtered on interfaces in "admin down" state. | other functions are filtered on interfaces in "admin down" state. | |||
9.3.2.2. Fast state propagation and Diagnostics | 9.3.2.2. Fast State Propagation and Diagnostics | |||
"Physical down" state propagates on many interface types (e.g., | The "physical down" state propagates on many interface types (e.g., | |||
Ethernet) to the other side. This can trigger fast L2/L3 protocol | Ethernet) to the other side. This can trigger fast L2/L3 protocol | |||
reaction on the other side and "admin down" would not have the same | reaction on the other side, and "admin down" would not have the same | |||
(fast) result. | (fast) result. | |||
Bringing interfaces to "physical down" state is to the best of our | Bringing interfaces to "physical down" state is, to the best of our | |||
knowledge always a result of operator action, but today, never the | knowledge, always a result of operator action and, today, never the | |||
result of autonomic L2/L3 services running on the nodes. Therefore, | result of autonomic L2/L3 services running on the nodes. Therefore, | |||
one option is to change the operator action to not rely on link-state | one option is to end the operator's reliance on interface state | |||
propagation anymore. This may not be possible when both sides are | propagation via the subnet link or physical layer. This may not be | |||
under different operator control, but in that case it is unlikely | possible when both sides are under the control of different | |||
that the ACP is running across the link and actually putting the | operators, but in that case, it is unlikely that the ACP is running | |||
interface into "physical down" state may still be a good option. | across the link, and actually putting the interface into "physical | |||
down" state may still be a good option. | ||||
Ideally, fast physical state propagation is replaced by fast software | Ideally, fast physical state propagation is replaced by fast | |||
driven state propagation. For example, a DULL GRASP "admin-state" | software-driven state propagation. For example, a DULL GRASP "admin- | |||
objective could be used to auto configure a Bidirectional Forwarding | state" objective could be used to autoconfigure a BFD session | |||
Protocol (BFD, [RFC5880]) session between the two sides of the link | ("Bidirectional Forwarding Detection (BFD)" [RFC5880]) between the | |||
that would be used to propagate the "up" vs. admin down state. | two sides of the link that would be used to propagate the "up" vs. | |||
"admin down" state. | ||||
Triggering physical down state may also be used as a mean of | Triggering "physical down" state may also be used as a means of | |||
diagnosing cabling in the absence of easier methods. It is more | diagnosing cabling issues in the absence of easier methods. It is | |||
complex than automated neighbor diagnostics because it requires | more complex than automated neighbor diagnostics because it requires | |||
coordinated remote access to both (likely) sides of a link to | coordinated remote access to (likely) both sides of a link to | |||
determine whether up/down toggling will cause the same reaction on | determine whether up/down toggling will cause the same reaction on | |||
the remote side. | the remote side. | |||
See Section 9.1 for a discussion about how LLDP and/or diagnostics | See Section 9.1 for a discussion about how LLDP and/or diagnostics | |||
via GRASP could be used to provide neighbor diagnostics, and | via GRASP could be used to provide neighbor diagnostics and therefore | |||
therefore hopefully eliminating the need for "physical down" for | hopefully eliminate the need for "physical down" for neighbor | |||
neighbor diagnostics - as long as both neighbors support ACP/ANI. | diagnostics -- as long as both neighbors support ACP/ANI. | |||
9.3.2.3. Low Level Link Diagnostics | 9.3.2.3. Low-Level Link Diagnostics | |||
"Physical down" is performed to diagnose low-level interface behavior | The "physical down" state is used to diagnose low-level interface | |||
when higher layer services (e.g., IPv6) are not working. Especially | behavior when higher-layer services (e.g., IPv6) are not working. | |||
Ethernet links are subject to a wide variety of possible wrong | Ethernet links are especially subject to a wide variety of possible | |||
configuration/cablings if they do not support automatic selection of | incorrect configurations/cablings if they do not support automatic | |||
variable parameters such as speed (10/100/1000 Mbps), crossover | selection of variable parameters such as speed (10/100/1000 Mbps), | |||
(Auto-MDIX) and connector (fiber, copper - when interfaces have | crossover (automatic medium-dependent interface crossover (MDI-X)), | |||
multiple but can only enable one at a time). The need for low level | and connector (fiber, copper -- when interfaces have multiple but can | |||
link diagnostic can therefore be minimized by using fully auto | only enable one at a time). The need for low-level link diagnostics | |||
configuring links. | can therefore be minimized by using fully autoconfiguring links. | |||
In addition to "Physical down", low level diagnostics of Ethernet or | In addition to the "physical down" state, low-level diagnostics of | |||
other interfaces also involve the creation of other states on | Ethernet or other interfaces also involve the creation of other | |||
interfaces, such as physical Loopback (internal and/or external) or | states on interfaces, such as physical loopback (internal and/or | |||
bringing down all packet transmissions for reflection/cable-length | external) or the bringing down of all packet transmissions for | |||
measurements. Any of these options would disrupt ACP as well. | reflection and/or cable-length measurements. Any of these options | |||
would disrupt ACP as well. | ||||
In cases where such low-level diagnostics of an operational link is | In cases where such low-level diagnostics of an operational link are | |||
desired but where the link could be a single point of failure for the | desired but where the link could be a single point of failure for the | |||
ACP, ASA on both nodes of the link could perform a negotiated | ACP, the ASA on both nodes of the link could perform a negotiated | |||
diagnostic that automatically terminates in a predetermined manner | diagnostic that automatically terminates in a predetermined manner | |||
without dependence on external input ensuring the link will become | without dependence on external input, ensuring the link will become | |||
operational again. | operational again. | |||
9.3.2.4. Power Consumption Issues | 9.3.2.4. Power Consumption Issues | |||
Power consumption of "physical down" interfaces, may be significantly | Power consumption of "physical down" interfaces may be significantly | |||
lower than those in "admin down" state, for example on long-range | lower than those in "admin down" state, for example, on long-range | |||
fiber interfaces. Bringing up interfaces, for example to probe | fiber interfaces. Bringing up interfaces, for example, to probe | |||
reachability, may also consume additional power. This can make these | reachability may also consume additional power. This can make these | |||
type of interfaces inappropriate to operate purely for the ACP when | types of interfaces inappropriate to operate purely for the ACP when | |||
they are not currently needed for the Data-Plane. | they are not currently needed for the data plane. | |||
9.3.3. Interface level ACP/ANI enable | 9.3.3. Enabling Interface-Level ACP and ANI | |||
The interface level configuration option "ACP enable" enables ACP | The interface-level configuration option "ACP enable" enables ACP | |||
operations on an interface, starting with ACP neighbor discovery via | operations on an interface, starting with ACP neighbor discovery via | |||
DULL GRAP. The interface level configuration option "ANI enable" on | DULL GRASP. The interface-level configuration option "ANI enable" on | |||
nodes supporting BRSKI and ACP starts with BRSKI pledge operations | nodes supporting BRSKI and ACP starts with BRSKI pledge operations | |||
when there is no domain certificate on the node. On ACP/BRSKI nodes, | when there is no domain certificate on the node. On ACP/BRSKI nodes, | |||
"ACP enable" may not need to be supported, but only "ANI enable". | only "ANI enable" may need to be supported and not "ACP enable". | |||
Unless overridden by global configuration options (see later), "ACP/ | Unless overridden by global configuration options (see | |||
ANI enable" will result in "down" state on an interface to behave as | Section 9.3.4), either "ACP enable" or "ANI enable" (both abbreviated | |||
"admin down". | as "ACP/ANI enable") will result in the "down" state on an interface | |||
behaving as "admin down". | ||||
9.3.4. Which interfaces to auto-enable? | 9.3.4. Which Interfaces to Auto-Enable? | |||
(Section 6.4) requires that "ACP enable" is automatically set on | Section 6.4 requires that "ACP enable" is automatically set on native | |||
native interfaces, but not on non-native interfaces (reminder: a | interfaces, but not on non-native interfaces (reminder: a native | |||
native interface is one that exists without operator configuration | interface is one that exists without operator configuration action, | |||
action such as physical interfaces in physical devices). | such as physical interfaces in physical devices). | |||
Ideally, ACP enable is set automatically on all interfaces that | Ideally, "ACP enable" is set automatically on all interfaces that | |||
provide access to additional connectivity that allows to reach more | provide access to additional connectivity, which allows more nodes of | |||
nodes of the ACP domain. The best set of interfaces necessary to | the ACP domain to be reached. The best set of interfaces necessary | |||
achieve this is not possible to determine automatically. Native | to achieve this is not possible to determine automatically. Native | |||
interfaces are the best automatic approximation. | interfaces are the best automatic approximation. | |||
Consider an ACP domain of ACP nodes transitively connected via native | Consider an ACP domain of ACP nodes transitively connected via native | |||
interfaces. A Data-Plane tunnel between two of these nodes that are | interfaces. A data plane tunnel between two of these nodes that are | |||
non-adjacent is created and "ACP enable" is set for that tunnel. ACP | nonadjacent is created, and "ACP enable" is set for that tunnel. ACP | |||
RPL sees this tunnel as just as a single hop. Routes in the ACP | RPL sees this tunnel as just as a single hop. Routes in the ACP | |||
would use this hop as an attractive path element to connect regions | would use this hop as an attractive path element to connect regions | |||
adjacent to the tunnel nodes. In result, the actual hop-by-hop paths | adjacent to the tunnel nodes. As a result, the actual hop-by-hop | |||
used by traffic in the ACP can become worse. In addition, correct | paths used by traffic in the ACP can become worse. In addition, | |||
forwarding in the ACP now depends on correct Data-Plane forwarding | correct forwarding in the ACP now depends on correct data plane | |||
config including QoS, filtering and other security on the Data-Plane | forwarding configuration including QoS, filtering, and other security | |||
path across which this tunnel runs. This is the main issue why "ACP/ | on the data plane path across which this tunnel runs. This is the | |||
ANI enable" should not be set automatically on non-native interfaces. | main reason why "ACP/ANI enable" should not be set automatically on | |||
non-native interfaces. | ||||
If the tunnel would connect two previously disjoint ACP regions, then | If the tunnel would connect two previously disjoint ACP regions, then | |||
it likely would be useful for the ACP. A Data-Plane tunnel could | it likely would be useful for the ACP. A data plane tunnel could | |||
also run across nodes without ACP and provide additional connectivity | also run across nodes without ACP and provide additional connectivity | |||
for an already connected ACP network. The benefit of this additional | for an already connected ACP network. The benefit of this additional | |||
ACP redundancy has to be weighed against the problems of relying on | ACP redundancy has to be weighed against the problems of relying on | |||
the Data-Plane. If a tunnel connects two separate ACP regions: how | the data plane. If a tunnel connects two separate ACP regions, how | |||
many tunnels should be created to connect these ACP regions reliably | many tunnels should be created to connect these ACP regions reliably | |||
enough? Between which nodes? These are all standard tunneled | enough? Between which nodes? These are all standard tunneled | |||
network design questions not specific to the ACP, and there are no | network design questions not specific to the ACP, and there are no | |||
generic fully automated answers. | generic, fully automated answers. | |||
Instead of automatically setting "ACP enable" on these type of | Instead of automatically setting "ACP enable" on these types of | |||
interfaces, the decision needs to be based on the use purpose of the | interfaces, the decision needs to be based on the use purpose of the | |||
non-native interface and "ACP enable" needs to be set in conjunction | non-native interface, and "ACP enable" needs to be set in conjunction | |||
with the mechanism through which the non-native interface is created/ | with the mechanism through which the non-native interface is created | |||
configured. | and/or configured. | |||
In addition to explicit setting of "ACP/ANI enable", non-native | In addition to the explicit setting of "ACP/ANI enable", non-native | |||
interfaces also need to support configuration of the ACP RPL cost of | interfaces also need to support configuration of the ACP RPL cost of | |||
the link - to avoid the problems of attracting too much traffic to | the link to avoid the problems of attracting too much traffic to the | |||
the link as described above. | link as described above. | |||
Even native interfaces may not be able to automatically perform BRSKI | Even native interfaces may not be able to automatically perform BRSKI | |||
or ACP because they may require additional operator input to become | or ACP because they may require additional operator input to become | |||
operational. Example include DSL interfaces requiring PPPoE | operational. Examples include DSL interfaces requiring Point-to- | |||
credentials or mobile interfaces requiring credentials from a SIM | Point Protocol over Ethernet (PPPoE) credentials or mobile interfaces | |||
card. Whatever mechanism is used to provide the necessary config to | requiring credentials from a SIM card. Whatever mechanism is used to | |||
the device to enable the interface can also be expanded to decide on | provide the necessary configuration to the device to enable the | |||
whether or not to set "ACP/ANI enable". | interface can also be expanded to decide whether or not to set "ACP/ | |||
ANI enable". | ||||
The goal of automatically setting "ACP/ANI enable" on interfaces | The goal of automatically setting "ACP/ANI enable" on interfaces | |||
(native or not) is to eliminate unnecessary "touches" to the node to | (native or not) is to eliminate unnecessary "touches" to the node to | |||
make its operation as much as possible "zero-touch" with respect to | make its operation as much as possible "zero-touch" with respect to | |||
ACP/ANI. If there are "unavoidable touches" such a creating/ | ACP/ANI. If there are "unavoidable touches" such a creating and/or | |||
configuring a non-native interface or provisioning credentials for a | configuring a non-native interface or provisioning credentials for a | |||
native interface, then "ACP/ANI enable" should be added as an option | native interface, then "ACP/ANI enable" should be added as an option | |||
to that "touch". If a wrong "touch" is easily fixed (not creating | to that "touch". If an erroneous "touch" is easily fixed (does not | |||
another high-cost touch), then the default should be not to enable | create another high-cost touch), then the default should be not to | |||
ANI/ACP, and if it is potentially expensive or slow to fix (e.g., | enable ANI/ACP, and if it is potentially expensive or slow to fix | |||
parameters on SIM card shipped to remote location), then the default | (e.g., parameters on SIM card shipped to remote location), then the | |||
should be to enable ACP/ANI. | default should be to enable ACP/ANI. | |||
9.3.5. Node Level ACP/ANI enable | 9.3.5. Enabling Node-Level ACP and ANI | |||
A node level command "ACP/ANI enable [up-if-only]" enables ACP or ANI | A node-level command "ACP/ANI enable [up-if-only]" enables ACP or ANI | |||
on the node (ANI = ACP + BRSKI). Without this command set, any | on the node (ANI = ACP + BRSKI). Without this command set, any | |||
interface level "ACP/ANI enable" is ignored. Once set, ACP/ANI will | interface-level "ACP/ANI enable" is ignored. Once set, ACP/ANI will | |||
operate an interface where "ACP/ANI enable" is set. Setting of | operate an interface where "ACP/ANI enable" is set. Setting of | |||
interface level "ACP/ANI enable" is either automatic (default) or | interface-level "ACP/ANI enable" is either automatic (default) or | |||
explicit through operator action as described in the previous | explicit through operator action as described in Section 9.3.4. | |||
section. | ||||
If the option "up-if-only" is selected, the behavior of "down" | If the option "up-if-only" is selected, the behavior of "down" | |||
interfaces is unchanged, and ACP/ANI will only operate on interfaces | interfaces is unchanged, and ACP/ANI will only operate on interfaces | |||
where "ACP/ANI enable" is set and that are "up". When it is not set, | where "ACP/ANI enable" is set and that are "up". When it is not set, | |||
then "down" state of interfaces with "ACP/ANI enable" is modified to | then "down" state of interfaces with "ACP/ANI enable" is modified to | |||
behave as "admin down". | behave as "admin down". | |||
9.3.5.1. Brownfield nodes | 9.3.5.1. Brownfield Nodes | |||
A "brownfield" node is one that already has a configured Data-Plane. | A "brownfield" node is one that already has a configured data plane. | |||
Executing global "ACP/ANI enable [up-if-only]" on each node is the | Executing global "ACP/ANI enable [up-if-only]" on each node is the | |||
only command necessary to create an ACP across a network of | only command necessary to create an ACP across a network of | |||
brownfield nodes once all the nodes have a domain certificate. When | brownfield nodes once all the nodes have a domain certificate. When | |||
BRSKI is used ("ANI enable"), provisioning of the certificates only | BRSKI is used ("ANI enable"), provisioning of the certificates only | |||
requires set-up of a single BRSKI registrar node which could also | requires the setup of a single BRSKI registrar node, which could also | |||
implement a CA for the network. This is the simplest way to | implement a CA for the network. This is the simplest way to | |||
introduce ACP/ANI into existing (== brownfield) networks. | introduce ACP/ANI into existing (i.e., brownfield) networks. | |||
The need to explicitly enable ACP/ANI is especially important in | The need to explicitly enable ACP/ANI is especially important in | |||
brownfield nodes because otherwise software updates may introduce | brownfield nodes because otherwise software updates may introduce | |||
support for ACP/ANI: Automatic enablement of ACP/ANI in networks | support for ACP/ANI. The automatic enabling of ACP/ANI in networks | |||
where the operator does not only not want ACP/ANI but where the | where the operator does not want ACP/ANI or has likely never even | |||
operator likely never even heard of it could be quite irritating to | heard of it could be quite irritating to the operator, especially | |||
the operator. Especially when "down" behavior is changed to "admin | when "down" behavior is changed to "admin down". | |||
down". | ||||
Automatically setting "ANI enable" on brownfield nodes where the | Automatically setting "ANI enable" on brownfield nodes where the | |||
operator is unaware of BRSKI and MASA operations could also be an | operator is unaware of BRSKI and MASA operations could also be an | |||
unlikely but then critical security issue. If an attacker could | unlikely, but critical, security issue. If an attacker could | |||
impersonate the operator and register as the operator at the MASA or | impersonate the operator by registering as the operator at the MASA | |||
otherwise get hold of vouchers and can get enough physical access to | or otherwise getting hold of vouchers and could get enough physical | |||
the network so pledges would register to an attacking registrar, then | access to the network so pledges would register to an attacking | |||
the attacker could gain access to the ACP, and through the ACP gain | registrar, then the attacker could gain access to the ACP and, | |||
access to the Data-Plane. | through the ACP, gain access to the data plane. | |||
In networks where the operator explicitly wants to enable the ANI | In networks where the operator explicitly enables the ANI, this could | |||
this could not happen, because the operator would create a BRSKI | not happen because the operator would create a BRSKI registrar that | |||
registrar that would discover attack attempts, and the operator would | would discover attack attempts, and the operator would set up his | |||
be setting up his registrar with the MASA. Nodes requiring | registrar with the MASA. Nodes requiring "ownership vouchers" would | |||
"ownership vouchers" would not be subject to that attack. See | not be subject to that attack. See [RFC8995] for more details. Note | |||
[I-D.ietf-anima-bootstrapping-keyinfra] for more details. Note that | that a global "ACP enable" alone is not subject to these types of | |||
a global "ACP enable" alone is not subject to these type of attacks, | attacks because they always depend on some other mechanism first to | |||
because it always depends on some other mechanism first to provision | provision domain certificates into the device. | |||
domain certificates into the device. | ||||
9.3.5.2. Greenfield nodes | 9.3.5.2. Greenfield Nodes | |||
An ACP "greenfield" node is one that does not have any prior | An ACP "greenfield" node is one that does not have any prior | |||
configuration and that can be bootstrapped into the ACP across the | configuration and that can be bootstrapped into the ACP across the | |||
network. To support greenfield nodes, ACP as described in this | network. To support greenfield nodes, ACP as described in this | |||
document needs to be combined with a bootstrap protocol/mechanism | document needs to be combined with a bootstrap protocol and/or | |||
that will enroll the node with the ACP keying material - ACP | mechanism that will enroll the node with the ACP keying material: the | |||
certificate and TA. For ANI nodes, this protocol/mechanism is BRSKI. | ACP certificate and the TA. For ANI nodes, this protocol/mechanism | |||
is BRSKI. | ||||
When such a node is powered on and determines it is in greenfield | When such a node is powered on and determines that it is in | |||
condition, it enables the bootstrap protocol(s)/mechanism(s), and | greenfield condition, it enables the bootstrap protocol(s) and/or | |||
once the ACP keying material is enrolled, greenfield state ends and | mechanism(s). Once the ACP keying material is enrolled, the | |||
the ACP is started. When BRSKI is used, the node's state reflects | greenfield state ends and the ACP is started. When BRSKI is used, | |||
this by setting "ANI enable" upon determination of greenfield state | the node's state reflects this by setting "ANI enable" upon | |||
at power on. | determination of greenfield state when it is powered on. | |||
ACP greenfield nodes that in the absence of ACP would have their | ACP greenfield nodes that, in the absence of ACP, would have their | |||
interfaces in "down" state SHOULD set all native interfaces into | interfaces in "down" state SHOULD set all native interfaces into | |||
"admin down" state and only permit Data-Plane traffic required for | "admin down" state and only permit data plane traffic required for | |||
the bootstrap protocol/mechanisms. | the bootstrap protocol and/or mechanisms. | |||
ACP greenfield state ends either through successful enrolment of ACP | The ACP greenfield state ends either through the successful | |||
keying material (certificate, TA) or detection of a permitted | enrollment of ACP keying material (certificate and TA) or the | |||
termination of ACP greenfield operations. | detection of a permitted termination of ACP greenfield operations. | |||
ACP nodes supporting greenfield operations MAY want to provide | ACP nodes supporting greenfield operations MAY want to provide | |||
backward compatibility with other forms of configuration/ | backward compatibility with other forms of configuration and/or | |||
provisioning, especially when only a subset of nodes are expected to | provisioning, especially when only a subset of nodes are expected to | |||
be deployed with ACP. Such an ACP node SHOULD observe attempts to | be deployed with ACP. Such an ACP node SHOULD observe attempts to | |||
provision/configure the node via interfaces/methods that | provision or configure the node via interfaces and/or methods that | |||
traditionally indicate physical possession of the node, such as a | traditionally indicate physical possession of the node, such as a | |||
serial or USB console port or a USB memory stick with a bootstrap | serial or USB console port or a USB memory stick with a bootstrap | |||
configuration. When such an operation is observed before enrollment | configuration. When such an operation is observed before enrollment | |||
of the ACP keying material has completed, the node SHOULD put itself | of the ACP keying material has completed, the node SHOULD put itself | |||
into the state the node would have been in, if ACP/ANI was disabled | into the state the node would have been in if ACP/ANI was disabled at | |||
at boot (terminate ACP greenfield operations). | boot. This terminates ACP greenfield operations. | |||
When an ACP greenfield node enables multiple automated ACP or non-ACP | When an ACP greenfield node enables multiple, automated ACP or non- | |||
enrollment/bootstrap protocols/mechanisms in parallel, care must be | ACP enrollment and/or bootstrap protocols or mechanisms in parallel, | |||
taken not to terminate any protocol/mechanism before another one has | care must be taken not to terminate any protocol/mechanism before the | |||
succeeded to enroll ACP keying material or has progressed to a point | others either have succeeded in enrolling ACP keying material or have | |||
where it is permitted to be a termination reason for ACP greenfield | progressed to a point of permitted termination for ACP greenfield | |||
operations. | operations. | |||
Highly secure ACP greenfield nodes may not permit any reason to | Highly secure ACP greenfield nodes may not permit any reason to | |||
terminate ACP greenfield operations, including physical access. | terminate ACP greenfield operations, including physical access. | |||
Nodes that claim to support ANI greenfield operations SHOULD NOT | Nodes that claim to support ANI greenfield operations SHOULD NOT | |||
enable in parallel to BRSKI any enrollment/bootstrap protocol/ | enable in parallel to BRSKI any enrollment/bootstrap protocol/ | |||
mechanism that allows Trust On First Use (TOFU, [RFC7435]) over | mechanism that allows Trust On First Use (TOFU, "Opportunistic | |||
Security: Some Protection Most of the Time" [RFC7435]) over | ||||
interfaces other than those traditionally indicating physical | interfaces other than those traditionally indicating physical | |||
possession of the node. Protocols/mechanisms with published default | possession of the node. Protocols/mechanisms with published default | |||
username/password authentication are considered to suffer from TOFU. | username/password authentication are considered to suffer from TOFU. | |||
Securing the bootstrap protocol/mechanism by requiring a voucher | Securing the bootstrap protocol/mechanism by requiring a voucher | |||
([RFC8366]) can be used to avoid TOFU. | [RFC8366] can be used to avoid TOFU. | |||
In summary, the goal of ACP greenfield support is to allow remote | In summary, the goal of ACP greenfield support is to allow remote, | |||
automated enrollment of ACP keying materials, and therefore automated | automated enrollment of ACP keying materials, and therefore automated | |||
bootstrap into the ACP and to prohibit TOFU during bootstrap with the | bootstrap into the ACP and to prohibit TOFU during bootstrap with the | |||
likely exception (for backward compatibility) of bootstrapping via | likely exception (for backward compatibility) of bootstrapping via | |||
interfaces traditionally indicating physical possession of the node. | interfaces traditionally indicating physical possession of the node. | |||
9.3.6. Undoing ANI/ACP enable | 9.3.6. Undoing "ANI/ACP enable" | |||
Disabling ANI/ACP by undoing "ACP/ANI enable" is a risk for the | Disabling ANI/ACP by undoing "ACP/ANI enable" is a risk for the | |||
reliable operations of the ACP if it can be executed by mistake or | reliable operations of the ACP if it can be executed by mistake or | |||
unauthorized. This behavior could be influenced through some | without authorization. This behavior could be influenced through | |||
additional (future) property in the certificate (e.g., in the acp- | some additional (future) property in the certificate (e.g., in the | |||
node-name extension field): In an ANI deployment intended for | acp-node-name extension field): in an ANI deployment intended for | |||
convenience, disabling it could be allowed without further | convenience, disabling it could be allowed without further | |||
constraints. In an ANI deployment considered to be critical more | constraints. In an ANI deployment considered to be critical, more | |||
checks would be required. One very controlled option would be to not | checks would be required. One very controlled option would be to not | |||
permit these commands unless the domain certificate has been revoked | permit these commands unless the domain certificate has been revoked | |||
or is denied renewal. Configuring this option would be a parameter | or is denied renewal. Configuring this option would be a parameter | |||
on the BRSKI registrar(s). As long as the node did not receive a | on the BRSKI registrar(s). As long as the node did not receive a | |||
domain certificate, undoing "ANI/ACP enable" should not have any | domain certificate, undoing "ANI/ACP enable" should not have any | |||
additional constraints. | additional constraints. | |||
9.3.7. Summary | 9.3.7. Summary | |||
Node-wide "ACP/ANI enable [up-if-only]" commands enable the operation | Node-wide "ACP/ANI enable [up-if-only]" commands enable the operation | |||
of ACP/ANI. This is only auto-enabled on ANI greenfield devices, | of ACP/ANI. This is only auto-enabled on ANI greenfield devices, | |||
otherwise it must be configured explicitly. | otherwise it must be configured explicitly. | |||
If the option "up-if-only" is not selected, interfaces enabled for | If the option "up-if-only" is not selected, interfaces enabled for | |||
ACP/ANI interpret "down" state as "admin down" and not "physical | ACP/ANI interpret the "down" state as "admin down" and not "physical | |||
down". In "admin-down" all non-ACP/ANI packets are filtered, but the | down". In the "admin-down" state, all non-ACP/ANI packets are | |||
physical layer is kept running to permit ACP/ANI to operate. | filtered, but the physical layer is kept running to permit ACP/ANI to | |||
operate. | ||||
(New) commands that result in physical interruption ("physical down", | (New) commands that result in physical interruption ("physical down", | |||
"loopback") of ACP/ANI enabled interfaces should be built to protect | "loopback") of ACP/ANI-enabled interfaces should be built to protect | |||
continuance or reestablishment of ACP as much as possible. | continuance or reestablishment of ACP as much as possible. | |||
Interface level "ACP/ANI enable" control per-interface operations. | Interface-level "ACP/ANI enable" commands control per-interface | |||
It is enabled by default on native interfaces and has to be | operations. It is enabled by default on native interfaces and has to | |||
configured explicitly on other interfaces. | be configured explicitly on other interfaces. | |||
Disabling "ACP/ANI enable" global and per-interface should have | Disabling "ACP/ANI enable" globally and per interface should have | |||
additional checks to minimize undesired breakage of ACP. The degree | additional checks to minimize undesired breakage of ACP. The degree | |||
of control could be a domain wide parameter in the domain | of control could be a domain-wide parameter in the domain | |||
certificates. | certificates. | |||
9.4. Partial or Incremental adoption | 9.4. Partial or Incremental Adoption | |||
The ACP Zone Addressing Sub-Scheme (see Section 6.11.3) allows | The Zone Addressing Sub-Scheme (see Section 6.11.3) allows | |||
incremental adoption of the ACP in a network where ACP can be | incremental adoption of the ACP in a network where ACP can be | |||
deployed on edge areas, but not across the core that is connecting | deployed on edge areas, but not across the core that is connecting | |||
those edges. | those edges. | |||
In such a setup, each edge network, such as a branch or campus of an | In such a setup, each edge network, such as a branch or campus of an | |||
enterprise network has a disjoined ACP to which one or more unique | enterprise network, has a disjoint ACP to which one or more unique | |||
Zone-IDs are assigned: ACP nodes registered for a specific ACP zone | Zone-IDs are assigned: ACP nodes registered for a specific ACP zone | |||
have to receive ACP Zone Addressing Sub-scheme addresses, for example | have to receive Zone Addressing Sub-Scheme addresses, for example, by | |||
by virtue of configuring for each such zone one or more ACP | virtue of configuring for each such zone one or more ACP registrars | |||
Registrars with that Zone-ID. All the Registrars for these ACP Zones | with that Zone-ID. All the registrars for these ACP zones need to | |||
need to get ACP certificates from CAs relying on a common set of TA | get ACP certificates from CAs relying on a common set of TAs and of | |||
and of course the same ACP domain name. | course the same ACP domain name. | |||
These ACP zones can first be brought up as separate networks without | These ACP zones can first be brought up as separate networks without | |||
any connection between them and/or they can be connected across a | any connection between them and/or they can be connected across a | |||
non-ACP enabled core network through various non-autonomic | non-ACP enabled core network through various non-autonomic | |||
operational practices. For example, each separate ACP Zone can have | operational practices. For example, each separate ACP zone can have | |||
an edge node that is a layer 3 VPN PE (MPLS or IPv6 layer 3 VPN), | an edge node that is a L3 VPN PE (MPLS or IPv6 L3VPN), where a | |||
where a complete non-autonomic ACP-Core VPN is created by using the | complete non-autonomic ACP-Core VPN is created by using the ACP VRFs | |||
ACP VRFs and exchanging the routes from those ACP VRFs across the | and exchanging the routes from those ACP VRFs across the VPN's non- | |||
VPNs non-autonomic routing protocol(s). | autonomic routing protocol(s). | |||
While such a setup is possible with any ACP addressing sub-scheme, | While such a setup is possible with any ACP addressing sub-scheme, | |||
the ACP-Zone Addressing sub-scheme makes it easy to configure and | the Zone Addressing Sub-Scheme makes it easy to configure and | |||
scalable for any VPN routing protocols because every ACP zone would | scalable for any VPN routing protocols because every ACP zone only | |||
only need to indicate one or more /64 ACP Zone Addressing prefix | needs to indicate one or more /64 ACP zone addressing prefix routes | |||
routes into the ACP-Core VPN as opposed to routes for every | into the ACP-Core VPN as opposed to routes for every individual ACP | |||
individual ACP node as required in the other ACP addressing schemes. | node as required in the other ACP addressing schemes. | |||
Note that the non-autonomous ACP-Core VPN would require additional | Note that the non-autonomous ACP-Core VPN requires additional | |||
extensions to propagate GRASP messages when GRASP discovery is | extensions to propagate GRASP messages when GRASP discovery is | |||
desired across the zones. | desired across the zones. | |||
For example, one could set up on each Zone edge router a remote ACP | For example, one could set up on each zone edge router a remote ACP | |||
tunnel to a GRASP hub. The GRASP hub could be implemented at the | tunnel to a GRASP hub. The GRASP hub could be implemented at the | |||
application level and could run in the NOC of the network. It would | application level and could run in the NOC of the network. It would | |||
serve to propagate GRASP announcements between ACP Zones and/or | serve to propagate GRASP announcements between ACP zones and/or | |||
generate GRASP announcements for NOC services. | generate GRASP announcements for NOC services. | |||
Such a partial deployment may prove to be sufficient or could evolve | Such a partial deployment may prove to be sufficient or could evolve | |||
to become more autonomous through future standardized or non- | to become more autonomous through future standardized or nonstandard | |||
standardized enhancements, for example by allowing GRASP messages to | enhancements, for example, by allowing GRASP messages to be | |||
be propagated across the layer 3 VPN, leveraging for example L3VPN | propagated across the L3VPN, leveraging for example L3VPN multicast | |||
Multicast support. | support. | |||
Finally, these partial deployments can be merged into a single | Finally, these partial deployments can be merged into a single, | |||
contiguous complete autonomous ACP (given appropriate ACP support | contiguous ACP that is completely autonomous (given appropriate ACP | |||
across the core) without changes in the crypto material, because the | support across the core) without changes in the cryptographic | |||
node's ACP certificates are from a single ACP. | material because the node's ACP certificates are from a single ACP. | |||
9.5. Configuration and the ACP (summary) | 9.5. Configuration and the ACP (Summary) | |||
There is no desirable configuration for the ACP. Instead, all | There is no desirable configuration for the ACP. Instead, all | |||
parameters that need to be configured in support of the ACP are | parameters that need to be configured in support of the ACP are | |||
limitations of the solution, but they are only needed in cases where | limitations of the solution, but they are only needed in cases where | |||
not all components are made autonomic. Wherever this is necessary, | not all components are made autonomic. Wherever this is necessary, | |||
it relies on pre-existing mechanisms for configuration such as CLI or | it relies on preexisting mechanisms for configuration such as CLI or | |||
YANG ([RFC7950]) data models. | YANG data models ("The YANG 1.1 Data Modeling Language" [RFC7950]). | |||
The most important examples of such configuration include: | The most important examples of such configuration include: | |||
* When ACP nodes do not support an autonomic way to receive an ACP | * When ACP nodes do not support an autonomic way to receive an ACP | |||
certificate, for example BRSKI, then such certificate needs to be | certificate, for example, BRSKI, then such a certificate needs to | |||
configured via some pre-existing mechanisms outside the scope of | be configured via some preexisting mechanisms outside the scope of | |||
this specification. Today, router have typically a variety of | this specification. Today, routers typically have a variety of | |||
mechanisms to do this. | mechanisms to do this. | |||
* Certificate maintenance requires PKI functions. Discovery of | * Certificate maintenance requires PKI functions. Discovery of | |||
these functions across the ACP is automated (see Section 6.2.5), | these functions across the ACP is automated (see Section 6.2.5), | |||
but their configuration is not. | but their configuration is not. | |||
* When non-ACP capable nodes such as pre-existing NMS need to be | * When non-ACP-capable nodes such as preexisting NMS need to be | |||
physically connected to the ACP, the ACP node to which they attach | physically connected to the ACP, the ACP node to which they attach | |||
needs to be configured with ACP-connect according to Section 8.1. | needs to be configured with ACP connect according to Section 8.1. | |||
It is also possible to use that single physical connection to | It is also possible to use that single physical connection to | |||
connect both to ACP and the Data-Plane of the network as explained | connect both to the ACP and the data plane of the network as | |||
in Section 8.1.4. | explained in Section 8.1.4. | |||
* When devices are not autonomically bootstrapped, explicit | * When devices are not autonomically bootstrapped, explicit | |||
configuration to enable the ACP needs to be applied. See | configuration to enable the ACP needs to be applied. See | |||
Section 9.3. | Section 9.3. | |||
* When the ACP needs to be extended across interfaces other than L2, | * When the ACP needs to be extended across interfaces other than L2, | |||
the ACP as defined in this document cannot autodiscover candidate | the ACP as defined in this document cannot auto-discover candidate | |||
neighbors automatically. Remote neighbors need to be configured, | neighbors automatically. Remote neighbors need to be configured, | |||
see Section 8.2. | see Section 8.2. | |||
Once the ACP is operating, any further configuration for the Data- | Once the ACP is operating, any further configuration for the data | |||
Plane can be configured more reliably across the ACP itself because | plane can be done more reliably across the ACP itself because the ACP | |||
the ACP provides addressing and connectivity (routing) independent of | provides addressing and connectivity (routing) independent of the | |||
the Data-Plane itself. For this, the configuration methods simply | data plane. For this, the configuration methods simply need to allow | |||
need to also allow to operate across the ACP VRF - NETCONF, SSH or | operating across the ACP VRF, for example, with NETCONF, SSH, or any | |||
any other method. | other method. | |||
The ACP also provides additional security through its hop-by-hop | The ACP also provides additional security through its hop-by-hop | |||
encryption for any such configuration operations: Some legacy | encryption for any such configuration operations. Some legacy | |||
configuration methods (SNMP, TFTP, HTTP) may not use end-to-end | configuration methods (for example, SNMP, TFTP, or HTTP) may not use | |||
encryption, and most of the end-to-end secured configuration methods | end-to-end encryption, and most of the end-to-end secured | |||
still allow for easy passive observation along the path about | configuration methods still allow for easy, passive observation along | |||
configuration taking place (transport flows, port numbers, IP | the path of the configuration taking place (for example, transport | |||
addresses). | flows, port numbers, and/or IP addresses). | |||
The ACP can and should equally be used as the transport to configure | The ACP can and should be used equally as the transport to configure | |||
any of the aforementioned non-autonomic components of the ACP, but in | any of the aforementioned non-autonomic components of the ACP, but in | |||
that case, the same caution needs to be exercised as with Data-Plane | that case, the same caution needs to be exercised as with data plane | |||
configuration without ACP: Misconfiguration may cause the configuring | configuration without the ACP. Misconfiguration may cause the | |||
entity to be disconnected from the node it configures - for example | configuring entity to be disconnected from the node it configures, | |||
when incorrectly unconfiguring a remote ACP neighbor through which | for example, when incorrectly unconfiguring a remote ACP neighbor | |||
the configured ACP node is reached. | through which the configured ACP node is reached. | |||
10. Summary: Benefits (Informative) | 10. Summary: Benefits (Informative) | |||
10.1. Self-Healing Properties | 10.1. Self-Healing Properties | |||
The ACP is self-healing: | The ACP is self-healing: | |||
* New neighbors will automatically join the ACP after successful | * New neighbors will automatically join the ACP after successful | |||
validation and will become reachable using their unique ULA | validation and will become reachable using their unique ULA | |||
address across the ACP. | address across the ACP. | |||
skipping to change at page 120, line 8 ¶ | skipping to change at line 5697 ¶ | |||
The ACP is self-healing: | The ACP is self-healing: | |||
* New neighbors will automatically join the ACP after successful | * New neighbors will automatically join the ACP after successful | |||
validation and will become reachable using their unique ULA | validation and will become reachable using their unique ULA | |||
address across the ACP. | address across the ACP. | |||
* When any changes happen in the topology, the routing protocol used | * When any changes happen in the topology, the routing protocol used | |||
in the ACP will automatically adapt to the changes and will | in the ACP will automatically adapt to the changes and will | |||
continue to provide reachability to all nodes. | continue to provide reachability to all nodes. | |||
* The ACP tracks the validity of peer certificates and tears down | * The ACP tracks the validity of peer certificates and tears down | |||
ACP secure channels when a peer certificate has expired. When | ACP secure channels when a peer certificate has expired. When | |||
short-lived certificates with lifetimes in the order of OCSP/CRL | short-lived certificates with lifetimes on the order of OCSP/CRL | |||
refresh times are used, then this allows for removal of invalid | refresh times are used, then this allows for removal of invalid | |||
peers (whose certificate was not renewed) at similar speeds as | peers (whose certificate was not renewed) at similar speeds as | |||
when using OCSP/CRL. The same benefit can be achieved when using | when using OCSP/CRL. The same benefit can be achieved when using | |||
CRL/OCSP, periodically refreshing the revocation information and | CRL/OCSP, periodically refreshing the revocation information and | |||
also tearing down ACP secure channels when the peer's (long-lived) | also tearing down ACP secure channels when the peer's (long-lived) | |||
certificate is revoked. There is no requirement against ACP | certificate is revoked. There is no requirement for ACP | |||
implementations to require this enhancement though to keep the | implementations to require this enhancement, though, in order to | |||
mandatory implementations simpler. | keep the mandatory implementations simpler. | |||
The ACP can also sustain network partitions and mergers. Practically | The ACP can also sustain network partitions and mergers. Practically | |||
all ACP operations are link local, where a network partition has no | all ACP operations are link local, where a network partition has no | |||
impact. Nodes authenticate each other using the domain certificates | impact. Nodes authenticate each other using the domain certificates | |||
to establish the ACP locally. Addressing inside the ACP remains | to establish the ACP locally. Addressing inside the ACP remains | |||
unchanged, and the routing protocol inside both parts of the ACP will | unchanged, and the routing protocol inside both parts of the ACP will | |||
lead to two working (although partitioned) ACPs. | lead to two working (although partitioned) ACPs. | |||
There are few central dependencies: A CRL may not be available during | There are a few central dependencies: a CRL may not be available | |||
a network partition; a suitable policy to not immediately disconnect | during a network partition. This can be addressed by a suitable | |||
neighbors when no CRL is available can address this issue. Also, an | policy to not immediately disconnect neighbors when no CRL is | |||
ACP Registrar or Certification Authority might not be available | available. Also, an ACP registrar or CA might not be available | |||
during a partition. This may delay renewal of certificates that are | during a partition. This may delay renewal of certificates that are | |||
to expire in the future, and it may prevent the enrollment of new | to expire in the future, and it may prevent the enrollment of new | |||
nodes during the partition. | nodes during the partition. | |||
Highly resilient ACP designs can be built by using ACP Registrars | Highly resilient ACP designs can be built by using ACP registrars | |||
with embedded sub-CA, as outlined in Section 9.2.4. As long as a | with embedded sub-CAs, as outlined in Section 9.2.4. As long as a | |||
partition is left with one or more of such ACP Registrars, it can | partition is left with one or more of such ACP registrars, it can | |||
continue to enroll new candidate ACP nodes as long as the ACP | continue to enroll new candidate ACP nodes as long as the ACP | |||
Registrar's sub-CA certificate does not expire. Because the ACP | registrar's sub-CA certificate does not expire. Because the ACP | |||
addressing relies on unique Registrar-IDs, a later re-merge of | addressing relies on unique Registrar-IDs, a later merging of | |||
partitions will also not cause problems with ACP addresses assigned | partitions will not cause problems with ACP addresses assigned during | |||
during partitioning. | partitioning. | |||
After a network partition, a re-merge will just establish the | After a network partition, merging will just establish the previous | |||
previous status, certificates can be renewed, the CRL is available, | status: certificates can be renewed, the CRL is available, and new | |||
and new nodes can be enrolled everywhere. Since all nodes use the | nodes can be enrolled everywhere. Since all nodes use the same TA, | |||
same TA, a re-merge will be smooth. | the merging will be smooth. | |||
Merging two networks with different TA requires the ACP nodes to | Merging two networks with different TAs requires the ACP nodes to | |||
trust the union of TA. As long as the routing-subdomain hashes are | trust the union of TAs. As long as the routing-subdomain hashes are | |||
different, the addressing will not overlap. Accidentally, overlaps | different, the addressing will not overlap. Overlaps will only | |||
will only happen in the unlikely event of a 40-bit hash collision in | happen accidentally in the unlikely event of a 40-bit hash collision | |||
SHA256 (see Section 6.11). Note that the complete mechanisms to | in SHA-256 (see Section 6.11). Note that the complete mechanisms to | |||
merge networks is out of scope of this specification. | merge networks is out of scope of this specification. | |||
It is also highly desirable for implementation of the ACP to be able | It is also highly desirable for an implementation of the ACP to be | |||
to run it over interfaces that are administratively down. If this is | able to run it over interfaces that are administratively down. If | |||
not feasible, then it might instead be possible to request explicit | this is not feasible, then it might instead be possible to request | |||
operator override upon administrative actions that would | explicit operator override upon administrative actions that would | |||
administratively bring down an interface across which the ACP is | administratively bring down an interface across which the ACP is | |||
running. Especially if bringing down the ACP is known to disconnect | running, especially if bringing down the ACP is known to disconnect | |||
the operator from the node. For example, any such down | the operator from the node. For example, any such administrative | |||
administrative action could perform a dependency check to see if the | down action could perform a dependency check to see if the transport | |||
transport connection across which this action is performed is | connection across which this action is performed is affected by the | |||
affected by the down action (with default RPL routing used, packet | down action (with default RPL routing used, packet forwarding will be | |||
forwarding will be symmetric, so this is actually possible to check). | symmetric, so this is actually possible to check). | |||
10.2. Self-Protection Properties | 10.2. Self-Protection Properties | |||
10.2.1. From the outside | 10.2.1. From the Outside | |||
As explained in Section 6, the ACP is based on secure channels built | As explained in Section 6, the ACP is based on secure channels built | |||
between nodes that have mutually authenticated each other with their | between nodes that have mutually authenticated each other with their | |||
domain certificates. The channels themselves are protected using | domain certificates. The channels themselves are protected using | |||
standard encryption technologies such as DTLS or IPsec which provide | standard encryption technologies such as DTLS or IPsec, which provide | |||
additional authentication during channel establishment, data | additional authentication during channel establishment, data | |||
integrity and data confidentiality protection of data inside the ACP | integrity, and data confidentiality protection inside the ACP, and | |||
and in addition, provide replay protection. | also provide replay protection. | |||
Attacker will not be able to join the ACP unless they have a valid | An attacker will not be able to join the ACP unless it has a valid | |||
ACP certificate. On-path attackers without a valid ACP certificate | ACP certificate. An on-path attacker without a valid ACP certificate | |||
cannot inject packets into the ACP due to ACP secure channels. They | cannot inject packets into the ACP due to ACP secure channels. An | |||
can also not decrypt ACP traffic except if they can crack the | attacker also cannot decrypt ACP traffic unless it can crack the | |||
encryption. They can attempt behavioral traffic analysis on the | encryption. It can attempt behavioral traffic analysis on the | |||
encrypted ACP traffic. | encrypted ACP traffic. | |||
The degree to which compromised ACP nodes can impact the ACP depends | The degree to which compromised ACP nodes can impact the ACP depends | |||
on the implementation of the ACP nodes and their impairment. When an | on the implementation of the ACP nodes and their impairment. When an | |||
attacker has only gained administrative privileges to configure ACP | attacker has only gained administrative privileges to configure ACP | |||
nodes remotely, the attacker can disrupt the ACP only through one of | nodes remotely, the attacker can disrupt the ACP only through one of | |||
the few configuration options to disable it, see Section 9.3, or by | the few configuration options to disable it (see Section 9.3) or by | |||
configuring of non-autonomic ACP options if those are supported on | the configuring of non-autonomic ACP options if those are supported | |||
the impaired ACP nodes, see Section 8. Injecting or extracting | on the impaired ACP nodes (see Section 8). Injecting traffic into or | |||
traffic into/from an impaired ACP node is only possible when an | extracting traffic from an impaired ACP node is only possible when an | |||
impaired ACP node supports ACP connect (see Section 8.1) and the | impaired ACP node supports ACP connect (see Section 8.1), and the | |||
attacker can control traffic into/from one of the ACP nodes | attacker can control traffic into/from one of the ACP node's | |||
interfaces, such as by having physical access to the ACP node. | interfaces, such as by having physical access to the ACP node. | |||
The ACP also serves as protection (through authentication and | The ACP also serves as protection (through authentication and | |||
encryption) for protocols relevant to OAM that may not have secured | encryption) for protocols relevant to OAM that may not have secured | |||
protocol stack options or where implementation or deployment of those | protocol stack options or where implementation or deployment of those | |||
options fail on some vendor/product/customer limitations. This | options fail due to some vendor, product, or customer limitations. | |||
includes protocols such as SNMP ([RFC3411]), NTP ([RFC5905]), PTP | This includes protocols such as SNMP ("An Architecture for Describing | |||
([IEEE-1588-2008]), DNS ([RFC3596]), DHCPv6 ([RFC3315]), syslog | Simple Network Management Protocol (SNMP) Management Frameworks" | |||
([RFC3164]), RADIUS ([RFC2865]), Diameter ([RFC6733]), TACACS | [RFC3411]), NTP [RFC5905], PTP (Precision Time Protocol | |||
([RFC1492]), IPFIX ([RFC7011]), Netflow ([RFC3954]) - just to name a | [IEEE-1588-2008]), DNS ("DNS Extensions to Support IP Version 6" | |||
few. Not all of these protocol references are necessarily the latest | [RFC3596]), DHCPv6 ("Dynamic Host Configuration Protocol for IPv6 | |||
version of protocols but versions that are still widely deployed. | (DHCPv6)" [RFC3315]), syslog ("The BSD Syslog Protocol" [RFC3164]), | |||
RADIUS ("Remote Authentication Dial In User Service (RADIUS)" | ||||
[RFC2865]), Diameter ("Diameter Base Protocol" [RFC6733]), TACACS | ||||
("An Access Control Protocol, Sometimes Called TACACS" [RFC1492]), | ||||
IPFIX ("Specification of the IP Flow Information Export (IPFIX) | ||||
Protocol for the Exchange of Flow Information" [RFC7011]), NetFlow | ||||
("Cisco Systems NetFlow Services Export Version 9" [RFC3954]) -- just | ||||
to name a few. Not all of these protocol references are necessarily | ||||
the latest version of protocols, but they are versions that are still | ||||
widely deployed. | ||||
Protection via the ACP secure hop-by-hop channels for these protocols | Protection via the ACP secure hop-by-hop channels for these protocols | |||
is meant to be only a stopgap though: The ultimate goal is for these | is meant to be only a stopgap, though: the ultimate goal is for these | |||
and other protocols to use end-to-end encryption utilizing the domain | and other protocols to use end-to-end encryption utilizing the domain | |||
certificate and rely on the ACP secure channels primarily for zero- | certificate and to rely on the ACP secure channels primarily for | |||
touch reliable connectivity, but not primarily for security. | zero-touch reliable connectivity, but not primarily for security. | |||
The remaining attack vector would be to attack the underlying ACP | The remaining attack vector would be to attack the underlying ACP | |||
protocols themselves, either via directed attacks or by denial-of- | protocols themselves, either via directed attacks or by denial-of- | |||
service attacks. However, as the ACP is built using link-local IPv6 | service attacks. However, as the ACP is built using link-local IPv6 | |||
addresses, remote attacks from the Data-Plane are impossible as long | addresses, remote attacks from the data plane are impossible as long | |||
as the Data-Plane has no facilities to remotely send IPv6 link-local | as the data plane has no facilities to remotely send IPv6 link-local | |||
packets. The only exceptions are ACP connected interfaces which | packets. The only exceptions are ACP-connected interfaces, which | |||
require higher physical protection. The ULA addresses are only | require greater physical protection. The ULA addresses are only | |||
reachable inside the ACP context, therefore, unreachable from the | reachable inside the ACP context and therefore unreachable from the | |||
Data-Plane. Also, the ACP protocols should be implemented to be | data plane. Also, the ACP protocols should be implemented to be | |||
attack resistant and not consume unnecessary resources even while | attack resistant and to not consume unnecessary resources even while | |||
under attack. | under attack. | |||
10.2.2. From the inside | 10.2.2. From the Inside | |||
The security model of the ACP is based on trusting all members of the | The security model of the ACP is based on trusting all members of the | |||
group of nodes that receive an ACP certificate for the same domain. | group of nodes that receive an ACP certificate for the same domain. | |||
Attacks from the inside by a compromised group member are therefore | Attacks from the inside by a compromised group member are therefore | |||
the biggest challenge. | the biggest challenge. | |||
Group members must be protected against attackers so that there is no | Group members must be protected against attackers so that there is no | |||
easy way to compromise them, or use them as a proxy for attacking | easy way to compromise them or use them as a proxy for attacking | |||
other devices across the ACP. For example, management plane | other devices across the ACP. For example, management plane | |||
functions (transport ports) should only be reachable from the ACP but | functions (transport ports) should be reachable only from the ACP and | |||
not the Data-Plane. Especially for those management plane functions | not from the data plane. This applies especially to those management | |||
that have no good protection by themselves because they do not have | plane functions that lack secure end-to-end transport and to which | |||
secure end-to-end transport and to whom ACP not only provides | the ACP provides both automatic, reliable connectivity and protection | |||
automatic reliable connectivity but also protection against attacks. | against attacks. Protection across all potential attack vectors is | |||
Protection across all potential attack vectors is typically easier to | typically easier to do in devices whose software is designed from the | |||
do in devices whose software is designed from the ground up with ACP | beginning with the ACP in mind than in legacy, software-based systems | |||
in mind than with legacy software based systems where the ACP is | where the ACP is added on as another feature. | |||
added on as another feature. | ||||
As explained above, traffic across the ACP should still be end-to-end | As explained above, traffic across the ACP should still be end-to-end | |||
encrypted whenever possible. This includes traffic such as GRASP, | encrypted whenever possible. This includes traffic such as GRASP, | |||
EST and BRSKI inside the ACP. This minimizes man in the middle | EST, and BRSKI inside the ACP. This minimizes man-in-the-middle | |||
attacks by compromised ACP group members. Such attackers cannot | attacks by compromised ACP group members. Such attackers cannot | |||
eavesdrop or modify communications, they can just filter them (which | eavesdrop or modify communications, but they can just filter them | |||
is unavoidable by any means). | (which is unavoidable by any means). | |||
See Appendix A.9.8 for further considerations how to avoid and deal | See Appendix A.9.8 for further considerations on avoiding and dealing | |||
with compromised nodes. | with compromised nodes. | |||
10.3. The Administrator View | 10.3. The Administrator View | |||
An ACP is self-forming, self-managing and self-protecting, therefore | An ACP is self-forming, self-managing, and self-protecting; | |||
has minimal dependencies on the administrator of the network. | therefore, it has minimal dependencies on the administrator of the | |||
Specifically, since it is (intended to be) independent of | network. Specifically, since it is (intended to be) independent of | |||
configuration, there is only limited scope for configuration errors | configuration, there is only limited scope for configuration errors | |||
on the ACP itself. The administrator may have the option to enable | on the ACP itself. The administrator may have the option to enable | |||
or disable the entire approach, but detailed configuration is not | or disable the entire approach, but detailed configuration is not | |||
possible. This means that the ACP must not be reflected in the | possible. This means that the ACP must not be reflected in the | |||
running configuration of nodes, except a possible on/off switch (and | running configuration of nodes, except for a possible on/off switch | |||
even that is undesirable). | (and even that is undesirable). | |||
While configuration (except for Section 8 and Section 9.2) is not | While configuration (except for Section 8 and Section 9.2) is not | |||
possible, an administrator must have full visibility of the ACP and | possible, an administrator must have full visibility into the ACP and | |||
all its parameters, to be able to do trouble-shooting. Therefore, an | all its parameters to be able to troubleshoot. Therefore, an ACP | |||
ACP must support all show and debug options, as for any other network | must support all show and debug options, as with any other network | |||
function. Specifically, a network management system or controller | function. Specifically, an NMS or controller must be able to | |||
must be able to discover the ACP, and monitor its health. This | discover the ACP and monitor its health. This visibility into ACP | |||
visibility of ACP operations must clearly be separated from | operations must clearly be separated from the visibility of the data | |||
visibility of Data-Plane so automated systems will never have to deal | plane so automated systems will never have to deal with ACP aspects | |||
with ACP aspects unless they explicitly desire to do so. | unless they explicitly desire to do so. | |||
Since an ACP is self-protecting, a node not supporting the ACP, or | Since an ACP is self-protecting, a node that does not support the ACP | |||
without a valid domain certificate cannot connect to it. This means | or that does not have a valid domain certificate cannot connect to | |||
that by default a traditional controller or network management system | it. This means that by default a traditional controller or NMS | |||
cannot connect to an ACP. See Section 8.1.1 for more details on how | cannot connect to an ACP. See Section 8.1.1 for details on how to | |||
to connect an NMS host into the ACP. | connect an NMS host to the ACP. | |||
11. Security Considerations | 11. Security Considerations | |||
A set of ACP nodes with ACP certificates for the same ACP domain and | A set of ACP nodes with ACP certificates for the same ACP domain and | |||
with ACP functionality enabled is automatically "self-building": The | with ACP functionality enabled is automatically "self-building": the | |||
ACP is automatically established between neighboring ACP nodes. It | ACP is automatically established between neighboring ACP nodes. It | |||
is also "self-protecting": The ACP secure channels are authenticated | is also self-protecting: the ACP secure channels are authenticated | |||
and encrypted. No configuration is required for this. | and encrypted. No configuration is required for this. | |||
The self-protecting property does not include workarounds for non- | The self-protecting property does not include workarounds for non- | |||
autonomic components as explained in Section 8. See Section 10.2 for | autonomic components as explained in Section 8. See Section 10.2 for | |||
details of how the ACP protects itself against attacks from the | details of how the ACP protects itself against attacks from the | |||
outside and to a more limited degree from the inside as well. | outside and, to a more limited degree, from the inside as well. | |||
However, the security of the ACP depends on a number of other | However, the security of the ACP depends on a number of other | |||
factors: | factors: | |||
* The usage of domain certificates depends on a valid supporting PKI | * The usage of domain certificates depends on a valid supporting PKI | |||
infrastructure. If the chain of trust of this PKI infrastructure | infrastructure. If the chain of trust of this PKI infrastructure | |||
is compromised, the security of the ACP is also compromised. This | is compromised, the security of the ACP is also compromised. This | |||
is typically under the control of the network administrator. | is typically under the control of the network administrator. | |||
* ACP nodes receive their certificates from ACP registrars. These | * ACP nodes receive their certificates from ACP registrars. These | |||
ACP registrars are security critical dependencies of the ACP: | ACP registrars are security-critical dependencies of the ACP. | |||
Procedures and protocols for ACP registrars are outside the scope | Procedures and protocols for ACP registrars are outside the scope | |||
of this specification as explained in Section 6.11.7.1, only | of this specification as explained in Section 6.11.7.1; only the | |||
requirements against the resulting ACP certificates are specified. | requirements for the resulting ACP certificates are specified. | |||
* Every ACP registrar (for enrollment of ACP certificates) and ACP | * Every ACP registrar (for enrollment of ACP certificates) and ACP | |||
EST server (for renewal of ACP certificates) is a security | EST server (for renewal of ACP certificates) is a security- | |||
critical entity and its protocols are security critical protocols. | critical entity and its protocols are security-critical protocols. | |||
Both need to be hardened against attacks, similar to a CA and its | Both need to be hardened against attacks, similar to a CA and its | |||
protocols. A malicious registrar can enroll malicious nodes to an | protocols. A malicious registrar can enroll malicious nodes to an | |||
ACP network (if the CA delegates this policy to the registrar) or | ACP network (if the CA delegates this policy to the registrar) or | |||
break ACP routing for example by assigning duplicate ACP address | break ACP routing, for example, by assigning duplicate ACP | |||
assignment to ACP nodes via their ACP certificates. | addresses to ACP nodes via their ACP certificates. | |||
* ACP nodes that are ANI nodes rely on BRSKI as the protocol for ACP | * ACP nodes that are ANI nodes rely on BRSKI as the protocol for ACP | |||
registrars. For ANI type ACP nodes, the security considerations | registrars. For ANI-type ACP nodes, the security considerations | |||
of BRSKI apply. It enables automated, secure enrollment of ACP | of BRSKI apply. It enables automated, secure enrollment of ACP | |||
certificates. | certificates. | |||
* BRSKI and potentially other ACP registrar protocol options require | * BRSKI and potentially other ACP registrar protocol options require | |||
that nodes have an (X.509v3 based) IDevID. IDevIDs are an option | that nodes have an (X.509 v3 based) IDevID. IDevIDs are an option | |||
for ACP registrars to securely identify candidate ACP nodes that | for ACP registrars to securely identify candidate ACP nodes that | |||
should be enrolled into an ACP domain. | should be enrolled into an ACP domain. | |||
* For IDevIDs to securely identify the node to which it IDevID is | * For IDevIDs to securely identify the node to which its IDevID is | |||
assigned, the node needs to (1) utilize hardware support such as a | assigned, the node needs (1) to utilize hardware support such as a | |||
Trusted Platform Module (TPM) to protect against extraction/ | Trusted Platform Module (TPM) to protect against extraction and/or | |||
cloning of the private key of the IDevID and (2) a hardware/ | cloning of the private key of the IDevID and (2) a hardware/ | |||
software infrastructure to prohibit execution of non-authenticated | software infrastructure to prohibit execution of unauthenticated | |||
software to protect against malicious use of the IDevID. | software to protect against malicious use of the IDevID. | |||
* Like the IDevID, the ACP certificate should equally be protected | * Like the IDevID, the ACP certificate should equally be protected | |||
from extraction or other abuse by the same ACP node | from extraction or other abuse by the same ACP node | |||
infrastructure. This infrastructure for IDevID and ACP | infrastructure. This infrastructure for IDevID and ACP | |||
certificate is beneficial independent of the ACP registrar | certificate is beneficial independent of the ACP registrar | |||
protocol used (BRSKI or other). | protocol used (BRSKI or other). | |||
* Renewal of ACP certificates requires support for EST, therefore | ||||
* Renewal of ACP certificates requires support for EST; therefore, | ||||
the security considerations of [RFC7030] related to certificate | the security considerations of [RFC7030] related to certificate | |||
renewal/rekeying and TP renewal apply to the ACP. EST security | renewal and/or rekeying and TP renewal apply to the ACP. EST | |||
considerations when using other than mutual certificate | security considerations when using other than mutual certificate | |||
authentication do not apply nor do considerations for initial | authentication do not apply, nor do considerations for initial | |||
enrollment via EST apply, except for ANI type ACP nodes because | enrollment via EST apply, except for ANI-type ACP nodes because | |||
BRSKI leverages EST. | BRSKI leverages EST. | |||
* A malicious ACP node could declare itself to be an EST server via | * A malicious ACP node could declare itself to be an EST server via | |||
GRASP across the ACP if malicious software could be executed on | GRASP across the ACP if malicious software could be executed on | |||
it. CA should therefore authenticate only known trustworthy EST | it. The CA should therefore authenticate only known trustworthy | |||
servers, such as nodes with hardware protections against malicious | EST servers, such as nodes with hardware protections against | |||
software. When Registrars use their ACP certificate to | malicious software. When registrars use their ACP certificate to | |||
authenticate towards a CA, the id-kp-cmcRA [RFC6402] extended key | authenticate towards a CA, the id-kp-cmcRA [RFC6402] extended key | |||
usage attribute allows the CA to determine that the ACP node was | usage attribute allows the CA to determine that the ACP node was | |||
permitted during enrollment to act as an ACP registrar. Without | permitted during enrollment to act as an ACP registrar. Without | |||
the ability to talk to the CA, a malicious EST server can still | the ability to talk to the CA, a malicious EST server can still | |||
attract ACP nodes attempting to renew their keying material, but | attract ACP nodes attempting to renew their keying material, but | |||
they will fail to perform successful renewal of a valid ACP | they will fail to perform successful renewal of a valid ACP | |||
certificate. The ACP node attempting to use the malicious EST | certificate. The ACP node attempting to use the malicious EST | |||
server can then continue to use a different EST server, and log a | server can then continue to use a different EST server and log a | |||
failure against a malicious EST server. | failure against a malicious EST server. | |||
* Malicious on-path ACP nodes may filter valid EST server | * Malicious on-path ACP nodes may filter valid EST server | |||
announcements across the ACP, but such malicious ACP nodes could | announcements across the ACP, but such malicious ACP nodes could | |||
equally filter any ACP traffic such as the EST traffic itself. | equally filter any ACP traffic such as the EST traffic itself. | |||
Either attack requires the ability to execute malicious software | Either attack requires the ability to execute malicious software | |||
on an impaired ACP node though. | on an impaired ACP node, though. | |||
* In the absence of malicious software injection, an attacker that | * In the absence of malicious software injection, an attacker that | |||
can misconfigure an ACP node which is supporting EST server | can misconfigure an ACP node that supports EST server | |||
functionality could attempt to configure a malicious CA. This | functionality could attempt to configure a malicious CA. This | |||
would not result in the ability to successfully renew ACP | would not result in the ability to successfully renew ACP | |||
certificates, but it could result in DoS attacks by becoming an | certificates, but it could result in DoS attacks by becoming an | |||
EST server and making ACP nodes attempting their ACP certificate | EST server and by making ACP nodes attempt their ACP certificate | |||
renewal via this impaired ACP node. This problem can be avoided | renewal via this impaired ACP node. This problem can be avoided | |||
when the EST server implementation can verify that the CA | when the EST server implementation can verify that the configured | |||
configured is indeed providing renewal for certificates of the | CA is indeed providing renewal for certificates of the node's ACP. | |||
node's ACP. The ability to do so depends on the EST-Server to CA | The ability to do so depends on the protocol between the EST | |||
protocol, which is outside the scope of this document. | server and the CA, which is outside the scope of this document. | |||
In summary, attacks against the PKI/certificate dependencies of the | In summary, attacks against the PKI/certificate dependencies of the | |||
ACP can be minimized by a variety of hardware/software components | ACP can be minimized by a variety of hardware and/or software | |||
including options such as TPM for IDevID/ACP-certificate, | components, including options such as TPM for IDevID and/or ACP | |||
prohibitions against execution of non-trusted software and design | certificate, prohibitions against the execution of untrusted | |||
aspects of the EST Server functionality for the ACP to eliminate | software, and design aspects of the EST server functionality for the | |||
configuration level impairment. | ACP that eliminate configuration-level impairment. | |||
Because ACP peers select one out of potentially more than one | Because ACP peers select one out of potentially more than one | |||
mutually supported ACP secure channel protocols via the approach | mutually supported ACP secure channel protocols via the approach | |||
described in Section 6.6, ACP secure channel setup is subject to | described in Section 6.6, ACP secure channel setup is subject to | |||
downgrade attacks by MITM attackers. This can be discovered after | downgrade attacks by MITM attackers. This can be discovered after | |||
such an attack by additional mechanisms described in Appendix A.9.9. | such an attack by additional mechanisms described in Appendix A.9.9. | |||
Alternatively, more advanced channel selection mechanisms can be | Alternatively, more advanced channel selection mechanisms can be | |||
devised. [RFC-Editor: Please remove the following sentence]. See | devised. | |||
[ACPDRAFT] Appendix B.1. Both options are out of scope of this | ||||
document. | ||||
The security model of the ACP as defined in this document is tailored | The security model of the ACP as defined in this document is tailored | |||
for use with private PKI. The TA of a private PKI provide the | for use with private PKI. The TA of a private PKI provides the | |||
security against maliciously created ACP certificates to give access | security against maliciously created ACP certificates that give | |||
to an ACP. Such attacks can create fake ACP certificates with | access to an ACP. Such attacks can create fake ACP certificates with | |||
correct looking AcpNodeNames, but those certificates would not pass | correct-looking AcpNodeNames, but those certificates would not pass | |||
the certificate path validation of the ACP domain membership check | the certificate path validation of the ACP domain membership check | |||
(see Section 6.2.3, point 2). | (see Section 6.2.3, point 2). | |||
[RFC-Editor: please remove the following paragraph]. | ||||
Using public CA is out of scope of this document. See [ACPDRAFT], | ||||
Appendix B.3 for further considerations. | ||||
There is no prevention of source-address spoofing inside the ACP. | There is no prevention of source-address spoofing inside the ACP. | |||
This implies that if an attacker gains access to the ACP, it can | This implies that if an attacker gains access to the ACP, it can | |||
spoof all addresses inside the ACP and fake messages from any other | spoof all addresses inside the ACP and fake messages from any other | |||
node. New protocol/services run across the ACP should therefore use | node. New protocols and/or services running across the ACP should | |||
end-to-end authentication inside the ACP. This is already done by | therefore use end-to-end authentication inside the ACP. This is | |||
GRASP as specified in this document. | already done by GRASP as specified in this document. | |||
The ACP is designed to enable automation of current network | The ACP is designed to enable automation of current network | |||
management and future autonomic peer-to-peer/distributed network | management and the management of future autonomic peer-to-peer/ | |||
automation. Any ACP member can send ACP IPv6 packet to other ACP | distributed networks. Any ACP member can send ACP IPv6 packets to | |||
members and announce via ACP GRASP services to all ACP members | other ACP members and announce via ACP GRASP services to all ACP | |||
without dependency against centralized components. | members without depending on centralized components. | |||
The ACP relies on peer-to-peer authentication and authorization using | The ACP relies on peer-to-peer authentication and authorization using | |||
ACP certificates. This security model is necessary to enable the | ACP certificates. This security model is necessary to enable the | |||
autonomic ad-hoc any-to-any connectivity between ACP nodes. It | autonomic ad hoc, any-to-any connectivity between ACP nodes. It | |||
provides infrastructure protection through hop by hop authentication | provides infrastructure protection through hop-by-hop authentication | |||
and encryption - without relying on third parties. For any services | and encryption -- without relying on third parties. For any services | |||
where this complete autonomic peer-to-peer group security model is | where this complete autonomic peer-to-peer group security model is | |||
appropriate, the ACP certificate can also be used unchanged. For | appropriate, the ACP certificate can also be used unchanged, for | |||
example, for any type of Data-Plane routing protocol security. | example, for any type of data plane routing protocol security. | |||
This ACP security model is designed primarily to protect against | This ACP security model is designed primarily to protect against | |||
attack from the outside, but not against attacks from the inside. To | attack from the outside, not against attacks from the inside. To | |||
protect against spoofing attacks from compromised on-path ACP nodes, | protect against spoofing attacks from compromised on-path ACP nodes, | |||
end-to-end encryption inside the ACP is used by new ACP signaling: | end-to-end encryption inside the ACP is used by new ACP signaling: | |||
GRASP across the ACP using TLS. The same is expected from any non- | GRASP across the ACP using TLS. The same is expected from any non- | |||
legacy services/protocols using the ACP. Because no group-keys are | legacy services or protocols using the ACP. Because no group keys | |||
used, there is no risk for impacted nodes to access end-to-end | are used, there is no risk of impacted nodes accessing end-to-end | |||
encrypted traffic from other ACP nodes. | encrypted traffic from other ACP nodes. | |||
Attacks from impacted ACP nodes against the ACP are more difficult | Attacks from impacted ACP nodes against the ACP are more difficult | |||
than against the Data-Plane because of the autoconfiguration of the | than against the data plane because of the autoconfiguration of the | |||
ACP and the absence of configuration options that could be abused | ACP and the absence of configuration options that could be abused to | |||
that allow to change/break ACP behavior. This is excluding | change or break ACP behavior. This is excluding configuration for | |||
configuration for workaround in support of non-autonomic components. | workaround in support of non-autonomic components. | |||
Mitigation against compromised ACP members is possible through | Mitigation against compromised ACP members is possible through | |||
standard automated certificate management mechanisms including | standard automated certificate management mechanisms including | |||
revocation and non-renewal of short-lived certificates. In this | revocation and nonrenewal of short-lived certificates. In this | |||
version of the specification, there are no further optimization of | specification, there are no further optimizations of these mechanisms | |||
these mechanisms defined for the ACP (but see Appendix A.9.8). | defined for the ACP (but see Appendix A.9.8). | |||
Higher layer service built using ACP certificates should not solely | Higher-layer service built using ACP certificates should not solely | |||
rely on undifferentiated group security when another model is more | rely on undifferentiated group security when another model is more | |||
appropriate/more secure. For example, central network configuration | appropriate or more secure. For example, central network | |||
relies on a security model where only few especially trusted nodes | configuration relies on a security model where only a few especially | |||
are allowed to configure the Data-Plane of network nodes (CLI, | trusted nodes are allowed to configure the data plane of network | |||
NETCONF). This can be done through ACP certificates by | nodes (CLI, NETCONF). This can be done through ACP certificates by | |||
differentiating them and introduce roles. See Appendix A.9.5. | differentiating them and introducing roles. See Appendix A.9.5. | |||
Operators and provisioning software developers need to be aware of | Operators and developers of provisioning software need to be aware of | |||
how the provisioning/configuration of network devices impacts the | how the provisioning and configuration of network devices impacts the | |||
ability of the operator / provisioning software to remotely access | ability of the operator and/or provisioning software to remotely | |||
the network nodes. By using the ACP, most of the issues of | access the network nodes. By using the ACP, most of the issues of | |||
configuration/provisioning caused loss of connectivity for remote | provisioning/configuration causing connectivity loss of remote | |||
provisioning/configuration will be eliminated, see Section 6. Only | provisioning and configuration will be eliminated, see Section 6. | |||
few exceptions such as explicit physical interface down configuration | Only a few exceptions, such as explicit physical interface down | |||
will be left Section 9.3.2. | configuration, will be left. See Section 9.3.2. | |||
Many details of ACP are designed with security in mind and discussed | Many details of ACP are designed with security in mind and discussed | |||
elsewhere in the document: | elsewhere in the document. | |||
IPv6 addresses used by nodes in the ACP are covered as part of the | IPv6 addresses used by nodes in the ACP are covered as part of the | |||
node's domain certificate as described in Section 6.2.2. This allows | node's domain certificate as described in Section 6.2.2. This allows | |||
even verification of ownership of a peer's IPv6 address when using a | even verification of ownership of a peer's IPv6 address when using a | |||
connection authenticated with the domain certificate. | connection authenticated with the domain certificate. | |||
The ACP acts as a security (and transport) substrate for GRASP inside | The ACP acts as a security (and transport) substrate for GRASP inside | |||
the ACP such that GRASP is not only protected by attacks from the | the ACP such that GRASP is not only protected by attacks from the | |||
outside, but also by attacks from compromised inside attackers - by | outside, but also by attacks from compromised inside attackers -- by | |||
relying not only on hop-by-hop security of ACP secure channels, but | relying not only on hop-by-hop security of ACP secure channels, but | |||
adding end-to-end security for those GRASP messages. See | also by adding end-to-end security for those GRASP messages. See | |||
Section 6.9.2. | Section 6.9.2. | |||
ACP provides for secure, resilient zero-touch discovery of EST | ACP provides for secure, resilient zero-touch discovery of EST | |||
servers for certificate renewal. See Section 6.2.5. | servers for certificate renewal. See Section 6.2.5. | |||
ACP provides extensible, auto-configuring hop-by-hop protection of | ACP provides extensible, autoconfiguring hop-by-hop protection of the | |||
the ACP infrastructure via the negotiation of hop-by-hop secure | ACP infrastructure via the negotiation of hop-by-hop secure channel | |||
channel protocols. See Section 6.6. | protocols. See Section 6.6. | |||
The ACP is designed to minimize attacks from the outside by | The ACP is designed to minimize attacks from the outside by | |||
minimizing its dependency against any non-ACP (Data-Plane) | minimizing its dependency on any non-ACP (data plane) operations and/ | |||
operations/configuration on a node. See also Section 6.13.2. | or configuration on a node. See also Section 6.13.2. | |||
In combination with BRSKI, ACP enables a resilient, fully zero-touch | In combination with BRSKI, ACP enables a resilient, fully zero-touch | |||
network solution for short-lived certificates that can be renewed or | network solution for short-lived certificates that can be renewed or | |||
re-enrolled even after unintentional expiry (e.g., because of | reenrolled even after unintentional expiry (e.g., due to interrupted | |||
interrupted connectivity). See Appendix A.2. | connectivity). See Appendix A.2. | |||
Because ACP secure channels can be long lived, but certificates used | Because ACP secure channels can be long lived, but certificates used | |||
may be short lived, secure channels, for example built via IPsec need | may be short-lived, secure channels, for example, built via IPsec, | |||
to be terminated when peer certificates expire. See Section 6.8.5. | need to be terminated when peer certificates expire. See | |||
Section 6.8.5. | ||||
Section 7.2 describes how to implement a routed ACP topology | Section 7.2 describes how to implement a routed ACP topology | |||
operating on what effectively is a large bridge-domain when using L3/ | operating on what effectively is a large bridge domain when using L3/ | |||
L2 routers that operate at L2 in the Data-Plane. In this case, the | L2 routers that operate at L2 in the data plane. In this case, the | |||
ACP is subject to much higher likelihood of attacks by other nodes | ACP is subject to a much higher likelihood of attacks by other nodes | |||
"stealing" L2 addresses than in the actual routed case. Especially | "stealing" L2 addresses than in the actual routed case, especially | |||
when the bridged network includes non-trusted devices such as hosts. | when the bridged network includes untrusted devices such as hosts. | |||
This is a generic issue in L2 LANs. L2/L3 devices often already have | This is a generic issue in L2 LANs. L2/L3 devices often already have | |||
some form of "port security" to prohibit this. They rely on NDP or | some form of "port security" to prohibit this. They rely on Neighbor | |||
DHCP learning of which port/MAC-address and IPv6 address belong | Discovery Protocol (NDP) or DHCP learning which port/MAC-address and | |||
together and block MAC/IPv6 source addresses from wrong ports. This | IPv6 address belong together and blocking MAC/IPv6 source addresses | |||
type of function needs to be enabled to prohibit DoS attacks and | from wrong ports. This type of function needs to be enabled to | |||
specifically to protect the ACP. Likewise the GRASP DULL instance | prohibit DoS attacks and specifically to protect the ACP. Likewise, | |||
needs to ensure that the IPv6 address in the locator-option matches | the GRASP DULL instance needs to ensure that the IPv6 address in the | |||
the source IPv6 address of the DULL GRASP packet. | locator-option matches the source IPv6 address of the DULL GRASP | |||
packet. | ||||
12. IANA Considerations | 12. IANA Considerations | |||
This document defines the "Autonomic Control Plane". | This document defines the "Autonomic Control Plane". | |||
For the ANIMA-ACP-2020 ASN.1 module, IANA is asked to register value | For the ANIMA-ACP-2020 ASN.1 module, IANA has assigned value 97 for | |||
IANA1 for "id-mod-anima-acpnodename-2020" in the "SMI Security for | "id-mod-anima-acpnodename-2020" in the "SMI Security for PKIX Module | |||
PKIX Module Identifier" (1.3.6.1.5.5.7.0) registry. | Identifier" (1.3.6.1.5.5.7.0) registry. | |||
For the otherName / AcpNodeName, IANA is asked to register a value | For the otherName / AcpNodeName, IANA has assigned value 10 for id- | |||
for IANA2 for id-on-AcpNodeName in the "SMI Security for PKIX Other | on-AcpNodeName in the "SMI Security for PKIX Other Name Forms" | |||
Name Forms" (1.3.6.1.5.5.7.8) registry. | (1.3.6.1.5.5.7.8) registry. | |||
The IANA is requested to register the value "AN_ACP" (without quotes) | IANA has registered the names in Table 2 in the "GRASP Objective | |||
to the GRASP Objectives Names Table in the GRASP Parameter Registry. | Names" subregistry of the "GeneRic Autonomic Signaling Protocol | |||
The specification for this value is this document, Section 6.4. | (GRASP) Parameters" registry. | |||
The IANA is requested to register the value "SRV.est" (without | +================+==========================+ | |||
quotes) to the GRASP Objectives Names Table in the GRASP Parameter | | Objective Name | Reference | | |||
Registry. The specification for this value is this document, | +================+==========================+ | |||
Section 6.2.5. | | AN_ACP | RFC 8994 (Section 6.4) | | |||
+----------------+--------------------------+ | ||||
| SRV.est | RFC 8994 (Section 6.2.5) | | ||||
+----------------+--------------------------+ | ||||
Explanation: This document chooses the initially strange looking | Table 2: GRASP Objective Names | |||
Explanation: this document chooses the initially strange looking | ||||
format "SRV.<service-name>" because these objective names would be in | format "SRV.<service-name>" because these objective names would be in | |||
line with potential future simplification of the GRASP objective | line with potential future simplification of the GRASP objective | |||
registry. Today, every name in the GRASP objective registry needs to | registry. Today, every name in the GRASP objective registry needs to | |||
be explicitly allocated with IANA. In the future, this type of | be explicitly allocated by IANA. In the future, this type of | |||
objective names could be considered to be automatically registered in | objective names could be considered to be automatically registered in | |||
that registry for the same service for which a <service-nameh> is | that registry for the same service for which a <service-name> is | |||
registered according to [RFC6335]. This explanation is solely | registered according to [RFC6335]. This explanation is solely | |||
informational and has no impact on the requested registration. | informational and has no impact on the requested registration. | |||
The IANA is requested to create an ACP Parameter Registry with | IANA has created an "Autonomic Control Plane (ACP)" registry with the | |||
currently one registry table - the "ACP Address Type" table. | subregistry, "ACP Address Type" (Table 3). | |||
"ACP Address Type" Table. The value in this table are numeric values | ||||
0...3 paired with a name (string). Future values MUST be assigned | ||||
using the Standards Action policy defined by [RFC8126]. The | ||||
following initial values are assigned by this document: | ||||
0: ACP Zone Addressing Sub-Scheme (ACP RFC Section 6.11.3) | ||||
1: ACP Vlong Addressing Sub-Scheme (ACP RFC Section 6.11.5) / ACP | ||||
Manual Addressing Sub-Scheme (ACP RFC Section 6.11.4) | ||||
13. Acknowledgements | ||||
This work originated from an Autonomic Networking project at Cisco | ||||
Systems, which started in early 2010. Many people contributed to | ||||
this project and the idea of the Autonomic Control Plane, amongst | ||||
which (in alphabetical order): Ignas Bagdonas, Parag Bhide, Balaji | ||||
BL, Alex Clemm, Yves Hertoghs, Bruno Klauser, Max Pritikin, Michael | ||||
Richardson, Ravi Kumar Vadapalli. | ||||
Special thanks to Brian Carpenter, Elwyn Davies, Joel Halpern and | ||||
Sheng Jiang for their thorough reviews. | ||||
Many thanks Ben Kaduk, Roman Danyliv and Eric Rescorla for their | ||||
thorough SEC AD reviews, Russ Housley and Erik Kline for their | ||||
reviews and to Valery Smyslov, Tero Kivinen, Paul Wouters and Yoav | ||||
Nir for review of IPsec and IKEv2 parameters and helping to | ||||
understand those and other security protocol details better. Thanks | ||||
for Carsten Borman for CBOR/CDDL help. | ||||
Further input, review or suggestions were received from: Rene Struik, | ||||
Benoit Claise, William Atwood and Yongkang Zhang. | ||||
14. Contributors | ||||
For all things GRASP including validation code, ongoing document text | ||||
support and technical input. | ||||
Brian Carpenter | ||||
School of Computer Science | ||||
University of Auckland | ||||
PB 92019 | ||||
Auckland 1142 | ||||
New Zealand | ||||
Email: brian.e.carpenter@gmail.com | ||||
For RPL contributions and all things BRSKI/bootstrap including | ||||
validation code, ongoing document text support and technical input. | ||||
Michael C. Richardson | ||||
Sandelman Software Works | ||||
Email: mcr+ietf@sandelman.ca | ||||
URI: http://www.sandelman.ca/mcr/ | ||||
For the RPL technology choices and text. | ||||
Pascal Thubert | ||||
Cisco Systems, Inc | ||||
Building D | ||||
45 Allee des Ormes - BP1200 | ||||
06254 MOUGINS - Sophia Antipolis | ||||
France | ||||
Phone: +33 497 23 26 34 | ||||
Email: pthubert@cisco.com | ||||
15. Change log [RFC-Editor: Please remove] | ||||
This document was developed on https://github.com/anima-wg/autonomic- | ||||
control-plane/tree/master/draft-ietf-anima-autonomic-control-plane. | ||||
That github repository also contains the document review/reply | ||||
emails. | ||||
15.1. Summary of changes since entering IESG review | ||||
This text replaces the prior changelog with a summary to provide | ||||
guidance for further IESG review. | ||||
Please see revision -21 for the individual changelogs of prior | ||||
versions . | ||||
15.1.1. Reviews (while in IESG review status) / status | ||||
This document entered IESG review with version -13. It has since | ||||
seen the following reviews: | ||||
IESG: Original owner/Yes: Terry Manderson (INT). | ||||
IESG: No Objection: Deborah Brungard (RTG), Alissa Cooper (GEN), | ||||
Warren Kumari (OPS), Mirja Kuehlewind (TSV), Alexey Melnikov (ART), | ||||
Adam Roach (ART). | ||||
IESG: No Objection, not counted anymore as they have left IESG: Ben | ||||
Campbell (ART), Spencer Dawkins (TSV). | ||||
IESG: Open DISCUSS hopefully resolved by this version: Eric Rescorla | ||||
(SEC, left IESG), Benjamin Kaduk (SEC). | ||||
Other: Michael Richardson (WG), Brian Carpenter (WG), Pascal Thubert | ||||
(WG), Frank Xialiang (WG), Elwyn Davies (GEN), Joel Halpern (RTGdir), | ||||
Yongkang Zhang (WG), William Atwood (WG). | ||||
15.1.2. BRSKI / ACP registrar related enhancements | ||||
Only after ACP entered IESG review did it become clear that the in- | ||||
progress BRSKI document would not provide all the explanations needed | ||||
for ACP registrars as expected earlier by ACP authors. Instead, | ||||
BRSKI will only specify a subset of required ACP behavior related to | ||||
certificate handling and registrar. There, it became clear that the | ||||
ACP draft should specify generic ACP registrar behavior independent | ||||
of BRSKI so ACP could be implemented with or without BRSKI and any | ||||
manual/proprietary or future standardized BRSKI alternatives (for | ||||
example via NETCONF) would understand the requirements for ACP | ||||
registrars and its certificate handling. | ||||
This lead to additional text about ACP registrars in the ACP | ||||
document: | ||||
1. Defined relationship ACP / ANI (ANI = ACP + BRSKI). | ||||
6.1.4 (new) Overview of TA required for ACP. | ||||
6.1.5.5 Added explanations/requirements for Re-enrollment. | ||||
6.10.7 Normative requirements for ACP registrars (BRSKI or not). | ||||
10.2 Operational expectations against ACP registrars (BRSKI or not). | ||||
15.1.3. Normative enhancements since start of IESG review | ||||
In addition to above ACP registrar / BRSKI related enhancements there | ||||
is a range of minor normative (also explanatory) enhancements since | ||||
the start of IESG review: | ||||
6.1.1 Hex digits in ACP domain information field now upper-case (no | ||||
specific reason except that both options are equally good, but | ||||
capitalized ones are used in rfc5234). | ||||
6.1.5.3 Added explanations about CRLs. | ||||
6.1.5.6 Added explanations of behavior under failing certificates. | ||||
6.1.2 Allow ACP address '0' in ACP domain information field: presence | ||||
of address indicates permission to build ACP secure channel to node, | ||||
0 indicates that the address of the node is assigned by (future) | ||||
other means than certificate. Non-autonomic nodes have no address at | ||||
all (that was in -13), and can only connect via ACP connect | ||||
interfaces to ACP. | ||||
6.1.3 Distinction of real ACP nodes (with address) and those with | ||||
domain certificate without address added as a new rule to ACP domain | ||||
membership check. | ||||
6.6 Added throttling of secure-channel setup attempts. | ||||
6.11.1.14 Removed requirement to handle unknown destination ACP | ||||
traffic in low-end nodes that would never be RPL roots. | ||||
6.12.5 Added recommendation to use IPv6 DAD. | ||||
6.1.1, 6.7.1.1, 6.7.2, 6.7.3, 6.8.2 Various refined additional | ||||
certificate, secure channel protocol (IPsec/IKEv2 and DTLS) and ACP | ||||
GRASP TLS protocol parameter requirements to ensure interoperating | ||||
implementations (from SEC-AD review). | ||||
15.1.4. Explanatory enhancements since start of IESG review | ||||
Beyond the functional enhancements from the previous two sections, | ||||
the mayority of changes since -13 are additional explanations from | ||||
review feedback, textual nits and restructuring - with no functional | ||||
requirement additions/changes. | ||||
1.1 Added "applicability and scope" section with summarized | ||||
explanations. | ||||
2.Added in-band vs. out-of-band management definitions. | ||||
6.1.2 (was 6.1.1) expanded explanations of reasoning for elements of | ||||
the ACP domain information field. | ||||
6.1.3 refined explanations of ACP domain membership check and | ||||
justifications for it. | ||||
6.5 Elaborated step-by-step secure channel setup. | ||||
6.10 Additional explanations for addressing modes, additional table | ||||
of addressing formats (thanks MichaelR). | ||||
6.10.5 introduced 'F' bit position as a better visual representation | ||||
in the Vlong address space. | ||||
6.11.1.1 extensive overhaul to improve readability of use of RPL | ||||
(from IESG feedback of non-routing/RPL experts). | ||||
6.12.2 Added caution about unconfiguring Data-Plane IPv6 addresses | ||||
and impact to ACP (limitation of current ACP design, and pointint to | ||||
more details in 10.2). | ||||
10.4 New explanations / summary of configurations for ACP (aka: all | ||||
config is undesirable and only required for integrating with non- | ||||
autonomic components, primarily ACP-connect and Registrars). | ||||
11. Textually enhanced / better structured security considerations | ||||
section after IESG security review. | ||||
A. (new) Moved all explanations and discussions about futures from | ||||
section 10 into this new appendix. This text should not be removed | ||||
because it captures a lot of repeated asked questions in WG and | ||||
during reviews and from users, and also captures ideas for some | ||||
likely important followup work. But none of this is relevant to | ||||
implementing (section 6) and operating (section 10) the ACP. | ||||
15.2. draft-ietf-anima-autonomic-control-plane-30 | ||||
-29 did pass all IESG DISCUSS. This version cleans up reamining | ||||
comments. | ||||
Planned to be removed section Appendix A.6 was moved into new | ||||
Appendix B.1 to be amended by further A.2, A.3 containing text felt | ||||
to be unfit for publication in RFC (see below). Added reference to | ||||
this last draft, and referencing those sections ([ACPDRAFT]). | ||||
Final discussion with responsible AD (Eric Vyncke): marked all | ||||
references to [ACPDRAFT] as to be removed from RFC, as this would be | ||||
too unconventional. Likewise also [ACPDRAFT] reference itself. | ||||
Added explanation to appendix B. | ||||
Comments from Erik Kline: | ||||
2. Fine tuned ULA definition. | ||||
Comments Michael Richardson / Eric Vyncke. | ||||
6.2.4. / 11. Removed text arguing ability how to use public CA (or | ||||
not). Replaced with reference to new [ACPDRAFT] section B.3 (not in | ||||
RFC) that explains current state of understanding (unfinished). | ||||
B.3 New text detailling authors understanding of use of public CA | ||||
(will not be in RFC). | ||||
Comments/proposals from Ben Kaduk: | ||||
Various: Replaced RFC4492 with RFC8422 which is superceeding it. | ||||
6.1 Text fix for hash strength 384 bits (from SHA384); Text fix for | ||||
ec_point_format extension. | ||||
6.2.1 Text fixup. Removed requirements for ECDH support in | ||||
certificate, instead merely explaining the dependencies required IF | ||||
this is desired (educational). | ||||
6.2.5.4. Fine tuning 2 sentences. | ||||
6.3.2. (ACP domain memebership check) Add reference to ACPDRAFT B.2 | ||||
explaining why ACP domain membership does not validate ACP address of | ||||
the connection. | ||||
6.4. Downgraded SHOULD to MAY in new -29 suggestion how to deal with | ||||
DoS attacks with many GRASP announcements. Will also separately ask | ||||
TSV ADs. | ||||
6.4. Fixed extension points in CDDL objective-value definitions | ||||
(with help from Carsten/Brian). | ||||
9.3.5.2. Added explanation when ACP greenfield state ends, and | ||||
refined text explaining how to deal with this. | ||||
11. removed duplicate paragraph (first, kept paragraph was the fixed | ||||
up, improved correct version). | ||||
11. Added references to ACPDRAFT B.1, B.2 as possible future | ||||
solutions for downgrade attacks. | ||||
12. Fixed up text for IANA code point allocation request. | ||||
A.6 - removed. | ||||
A.9.9 - added one explanatory intro paragraph to makes it easier to | ||||
distinguish this option from the B.1 considerations. | ||||
B.1 - new text suggested from Ben, replacing A.6 (will not be in | ||||
RFC). | ||||
B.2 - new text discussing why there is no network layer address | ||||
verification in ACP domain membership check (will not be in RFC). | ||||
B.4 - Text discussing DULL GRASP attacks via port sweeps and what do | ||||
do against it. | ||||
Other. | ||||
1. Added sentence about FCC outage report from June as example for | ||||
in-band management. | ||||
15. added reference to github where document was developed (removed | ||||
in RFC, part of changelog). | ||||
15.3. draft-ietf-anima-autonomic-control-plane-29 | ||||
Comments from Robert Wilton: | ||||
Improved several textual nits. | ||||
Discuss/Comments from Erik Kline: | ||||
Editorial suggestions and nits. Thanks!. | ||||
6.1.3 Added text about how/why rsub is irrelevant for domain | ||||
membership check. | ||||
6.3 Added extension points to AN_ACP DULL GRASP objective because for | ||||
example ACP domain certificate could be a nice optional additional | ||||
parameter and prior syntax would have forced us to encode into | ||||
separate objective unnecessarily. | ||||
6.7 Using RFC8415 terminology for exponential backoff parameters. | ||||
6.11.2 Amended ACP Sub-Addressing table with future code points, | ||||
explanations and prefix announced into RPL. | ||||
6.12.1.11. Reworked text to better explain how black hole route | ||||
works and added expanation for prefix for manual address scheme. | ||||
8.1.3. Reworked explanation of RIOs for ACP connect interfaces for | ||||
Type C vs. Type A/B hosts. | ||||
8.1.4. Added explanation how this "VRF select" option is required | ||||
for auto-attachment of Type A/B hosts to ACP and other networks. | ||||
Discuss/Comments from Barry Leiba: | ||||
Various editorial nits - thanks. | ||||
6.1 New section pulling in TLS requirements, no need anymore to | ||||
duplicat for ACP GRASP, EST, BRSKI (ACP/ANI nodes) and (if desired) | ||||
OCSP/CRLDP. Added rule to start use secure channel only after | ||||
negotiation has finished. Added rules not to optimize negotiation | ||||
across multiple L2 interfaces to the same peer. | ||||
6.6 Changed role names in secure channel negotiation process: Alice/ | ||||
Bob -> Decider/Follower. Explanation enhancements. Added definition | ||||
for ACP nodes with "0" address. | ||||
6.8.3 Improved explanation how IKEv2 forces preference of IPsec over | ||||
GRE due to ACP IPsec profiles being Tunneled vs. Transport. | ||||
6.8.4 Limited mentioning of DTLS version requirements to this | ||||
section. | ||||
6.9.2 Removed TLS requirements, they are now in 6.1. | ||||
6.10.6 Removed explanation of IANA allocation requirement. Redundant | ||||
- already in IANA section, and was seen as confusing. | ||||
8.1.1 Clarified that there can be security impacts when weakening | ||||
directly connected address RPF filtering for ACP connect interfaces. | ||||
Discuss/Comments from Ben Kaduk: | ||||
Many good editorial improvements - thanks!. | ||||
5. added explanation of what to do upon failed secure channel | ||||
establishment. | ||||
6.1.1. refined/extended cert public cey crypto algo and better | ||||
distinguished algo for the keys of the cert and the key of the | ||||
signer. | ||||
6.1.1. and following: explicitly defining "serialNumber" to be the | ||||
X.520 subject name serialNumber, not the certificate serial Number. | ||||
6.1.1. emhasize additional authorization step for EST servers (id-kp- | ||||
cmcRA). | ||||
6.1.2 changed AcpNodeName ABNF to again use 32HEXDIG instead of self- | ||||
defined variation, because authors overlooked that ABNF is case | ||||
agnostic (which is fine). Added recommendation to encode as lower | ||||
case. Added full ABNF encoding for extensions (any characters as in | ||||
"atoms" except the new "+" separator). | ||||
6.1.5.3. New text to explain reason for use of HTTPS (instead of | ||||
HTTP) for CRLDP and when and how to use HTTPS then. | ||||
6.1.5.5. added text explaning why/how and when to maintain TA data | ||||
upon failing cert renewal (one version with BRSKI, one version with | ||||
other, ess secure bootstrap protocols). | ||||
6.3. new text and requirement about the signaling of transport ports | ||||
in DULL GRASP - benefits (no well-known ports required), and problems | ||||
(additional DoS attack vector, albeit not worse than pre-existing | ||||
ones, depending on setup of L2 subnets.). | ||||
6.7.3.1.1. Specified AUTH_HMAC_SHA2_256_128 (as the ESP | ||||
authentication algorithm). | ||||
6.8.2. Added recommendations for TLS_AES_256_GCM_SHA384, | ||||
TLS_CHACHA20_POLY1305_SHA256 when supporting TLS 1.3. | ||||
8.2.2. Added explanation about downgrade attack across configured | ||||
ACP tunnels and what to do against it. | ||||
9.3.5.2. Rewrote most of section as it originally was too centric on | ||||
BRSKI. Should now well describe expectations against automated | ||||
bootstrap. Introduces new requirement not to call node as in support | ||||
of ANI if is ALSO has TOFU bootstrap. | ||||
11. Expanded text about malicious EST servers. Added paragraph | ||||
about ACP secure channel downgrade attacks. Added paragraphs about | ||||
private PKI as a core to allow security against fake certificates, | ||||
added paragraph about considerationsproblems when using public PI. | ||||
A.10.9 New appendix suggesting how to discover ACP secure channel | ||||
negotiation downgrade attacks. | ||||
Discuss from Roman Danyliw: | ||||
6.1.5.1 - Added requirement to only announce SRV.est when a working | ||||
CA connection. | ||||
15 - Amended security considerations with text about registrar | ||||
dependencies, security of IDevID/ACP-certificate, EST-Server and | ||||
GRASP for EST server discovery. | ||||
Other: | ||||
Conversion to XML v3. Solved empty () taxonomy xref problems. | ||||
Various formatting fixes for v3. | ||||
Added contributors section. | ||||
15.4. draft-ietf-anima-autonomic-control-plane-28 | ||||
IESG review Roman Danyliw: | ||||
6. Requested additional text elaborating misconfiguration plus | ||||
attack vectors. | ||||
6.1.3.1 Added paragraph about unsecured NTP as basis for time in the | ||||
absence of other options. | ||||
6.7.2 reworded text about additional secure channel protocol | ||||
reqiurements. | ||||
6.7.3.1.2. Added requirement for ACP nodes supporting IKEv2 to | ||||
support RFC8247 (not sure how that got dropped from prior versions. | ||||
Replaced minimum crypto requirements definition via specific AES | ||||
options with more generic "symmetric key/hash strength" requirements. | ||||
6.10.7.3. Added example how to derive addressing scheme from IDevID | ||||
(PID). Added explanation how to deal with non-persistant registrar | ||||
address database (hint: it sucks or is wasteful, what did you | ||||
expect). | ||||
8.1.1. Added explanation for 'Physical controlled/secured'. | ||||
8.1.5. Removed 'Physical controlled/secured' text, refer back to | ||||
8.1.1. | ||||
8.2.1. Fixed ABNF 'or' syntax line. | ||||
9.3.2. Added explanation of remote management problem with interface | ||||
"down" type commands. | ||||
10.2.1. Added explanations for attacks from impaired ACP nodes. | ||||
11. Rewrote intro paragraph. Removed text referring to enrollment/ | ||||
registrars as they are out of scope of ACP (dependencies only). | ||||
11. Added note about need for new protocols inside ACP to use end- | ||||
to-end authentication. | ||||
11. Rewrote paragraph about operator mistakes so as to be | ||||
actionably. Operators must not make mistakes - but ACP minimizes the | ||||
mistakes they can make. | ||||
ACP domain certificate -> ACP certificate. | ||||
Various other cosmetic edits (thanks!) and typo fixes (sorry for not | ||||
running full spell check for every version. Will definitely do | ||||
before RFC editor). | ||||
Other: | ||||
6.12.5.2.1./6.12.5.2.2. Added text explaining link breakage wrt. | ||||
RTL (came about re-analyzing behavior after question about hop | ||||
count). | ||||
Removed now unnecessary references for earlier rrc822Name otherName | ||||
choice. | ||||
15.5. draft-ietf-anima-autonomic-control-plane-27 | ||||
Too many revisions with too many fixes. Lets do a one-word change | ||||
revision for a change now if it helps to accelerate the review | ||||
process. | ||||
Added "subjectAltName /" to make it unambiguous that AcpNodeName is | ||||
indeed a SAN (from Russ). | ||||
15.6. draft-ietf-anima-autonomic-control-plane-26 | ||||
Russ Housley review of -25. | ||||
1.1 Explicit reference for TLS 1.2 RFC. | ||||
2. Changed term of "ACP Domain Information" to AcpNodeName (ASN.1) / | ||||
acp-node-name (ABNF), also through rest of document. | ||||
2. Improved CA behavior definition. changed IDevID/LDevID to IDevID/ | ||||
LDevID certificate to be more unambiguous. | ||||
2. Changed definition of root CA to just refer to how its used in | ||||
RFC7030 CA root key update, because thats the only thing relevant to | ||||
ACP. | ||||
6.1.1 Moved ECDH requirement to end of text as it was not related to | ||||
the subject of the initial paragraps. Likewise reference to | ||||
CABFORUM. | ||||
6.1.1 Reduced cert key requirements to only be MUST for certs with | ||||
2048 RSA public key and P-256 curves. Reduced longer keys to SHOULD. | ||||
6.1.2 Changed text for conversion from rfc822Name to otherName / | ||||
AcpNode, removed all the explanations of benefits coming with | ||||
rfc822Name *sob* *sob* *sob*. | ||||
6.1.2.1 New ASN.1 definition for otherName / AcpNodeName. | ||||
6.1.3 Fixed up text. re the handling of missing connectivity for | ||||
CRLDP / OCSP. | ||||
6.1.4 Fixed up text re. inability to use public CA to situation with | ||||
otherName / AcpNodeName (no more ACME rfc822Name validation for us | ||||
*sob* *sob* *sob*). | ||||
12. Added ASN.1 registration requests to IANA section. | ||||
Appenices. Minor changes for rfc822Name to otherName change. | ||||
Various minor verbal fixes/enhancements. | ||||
15.7. draft-ietf-anima-autonomic-control-plane-25 | ||||
Crypto parameter discuss from Valery Smyslov and Paul Wouters and | ||||
resulting changes. | ||||
6.7.2 Moved Michael Richardson suggested diagnostic of signaling TA | ||||
from IPsec section to this general requirements section and added | ||||
explanation how this may be inappropriate if TA payload is considered | ||||
secret by TA owner. | ||||
6.7.3.1 Added traffic selectors for native IPsec. Improved text | ||||
explanation. | ||||
6.7.3.1.2 removed misleading text about signaling TA when using | ||||
intermediate certs. | ||||
6.7.3.1.2 Removed requirement for 'PKCS #7 wrapped X.509 certificate' | ||||
requirement on request of Valery Smyslov as it is not defined in | ||||
RFC7296 and there are enough options mandated in RFC7296. Replaced | ||||
with just informative text to educate readers who are not IPsec | ||||
experts what the mandatory option in RFC7296 is that allows to signal | ||||
certificates. | ||||
6.7.3.1.2 Added SHOULD requirement how to deal with CERTREQ so that | ||||
6.7.2 requirement for TA diagnostics will work in IKEv2 (ignoring | ||||
CERTREQ is permitted by IKEv2). Added explanation how this will | ||||
result in TA cert diagnostics. | ||||
6.7.3.1.2 Added requirement for IKEv2 to operate on link-local | ||||
addresses for ACP so at to assume ACT cert as the only possible | ||||
authenticator - to avoid potentialy failing section from multiple | ||||
available certs on a router. | ||||
6.7.3.1.2 fixed PKIX- style OID to ASN.1 object AlgorithmIdentifier | ||||
(Paul). | ||||
6.7.3.2 Added IPsec traffic selectors for IPsec with GRE. | ||||
6.7.5 Added notion that IPsec/GRE MAY be preferred over IPsec/native. | ||||
Luckily IPsec/native uses tunneling, whereas IPsec/GRE uses transport | ||||
mode, and there is a long discuss whether it is permitted to even | ||||
build IPsec connectings that only support transports instead of | ||||
always being able to fall back to tunnel mode. Added explanatory | ||||
paragraph why ACP nodes may prefer GRE over native (wonder how that | ||||
was missing..). | ||||
9.1.1 Added section to explain need for secure channel peer | ||||
diagnostics via signaling of TA. Four examples given. | ||||
Paul Wouters mentioned that ipkcs7 had to be used in some interop | ||||
cases with windows CA, but that is an issue of ACP Registrar having | ||||
to convert into PKCS#7 to talk to a windows CA, and this spec is not | ||||
concerned with that, except to know that it is feasible, so not | ||||
mentioned in text anywhere, just tracking discussion here in | ||||
changelog. | ||||
Michael Richardson: | ||||
3.1.3 Added point in support of rfc822address that CA may not support | ||||
to sign certificates with new attributes (such as new otherName). | ||||
Michael Richardson/Brian Carpenter fix: | ||||
6.1.5.1/6.3 Fixed GRASP examples. | ||||
Joe Halpern review: | ||||
1. Enhanded introduction text for in-band and of out-of-band, | ||||
explaining how ACP is an in-band network aiming to achieve all | ||||
possible benefits of an out-of-band network. | ||||
1. Comprehensive explanation for term Data-Plane as it is only | ||||
logically following pre-established terminology on a fully autonomic | ||||
node, when used for existing nodes augmented with ACP, Data-Plane has | ||||
more functionality than usually associated with the term. | ||||
2. Removed explanatory text for Data-Plane, referring to section 1. | ||||
2. Reduced explanation in definition of in-band (management/ | ||||
signaling), out-of-band-signaling, now pointing to section 1. | ||||
5. Rewrote a lot of the steps (overview) as this text was not | ||||
reviewed for long time. Added references to normative section for | ||||
each step to hopefully avoid feedback of not explaining terms used | ||||
(really not possible to give good summary without using forward | ||||
references). | ||||
2. Separate out-of-band-management definition from virtual out-of- | ||||
band-management definition (later one for ACP). | ||||
2. Added definitions for RPI and RPL. | ||||
6.1.1. added note about end-to-end authentication to distinguish | ||||
channel security from overall ACP security model. | ||||
6.5 Fixed bugs in channel selection signaling step description (Alice | ||||
vs. Bob). | ||||
6.7.1 Removed redundant channel selection explanation. | ||||
6.10.3 remove locator/identifier terminology from zone addressing | ||||
scheme description (unnecessary), removed explanations (now in 9.4), | ||||
simplified text, clarified requirement for Node-ID to be unique, | ||||
recommend to use primarily zone 0. | ||||
6.10.3.1 Removed. Included a lot of insufficient suggestions for | ||||
future stanards extensions, most of it was wrong or would need to be | ||||
revisited by WG anyhow. Idea now (just here for comment): Announce | ||||
via GRASP Zone-ID (e.g. from per-zone edge-node/registrar) into a | ||||
zone of the ACP so all nodes supporting the scheme can automatically | ||||
self-allocate the Zone-ID. | ||||
6.11.1.1 (RPL overview), eliminated redundant text. | ||||
6.11.1.1.1 New subsection to better structure overview. | ||||
6.11.1.1.2 New subsection to better group overview, replaced TTL | ||||
explanation (just the symptom) with hopefully better reconvergence | ||||
text (intent of the profile) for the ACP RPL profile. | ||||
6.11.1.1.6 Added text to explain simple choice for rank_factor. | ||||
6.11.1.13 moved explanation for RPI up into 6.11.1.1. | ||||
6.12.5.1 rewrote section for ACP Loopback Interface. | ||||
9.4 New informative/informational section for partial or incremental | ||||
adoption of ACP to help understand why there is the Zone interface | ||||
sub-scheme, and how to use it. | ||||
Unrelated fixes: | ||||
Ask to RFC editor to add most important abbreviations to RFC editor | ||||
abbreviation list. | ||||
6.10.2 changed names in ACP addressing scheme table to be less | ||||
suggestive of use. | ||||
Russ Hously review: | ||||
2. Fixed definition of "Enrollment", "Trust Anchor", "CA", and "root | ||||
CA". Changed "Certificate Authority" to "Certification Authority" | ||||
throughout the document (correct term according to X.509). | ||||
6.1 Fixed explanation of mutual ACP trust. | ||||
6.1.1 s/X509/X509v3/. | ||||
6.1.2 created bulleted lists for explanations and justifications for | ||||
choices of ACP certificate encoding. No semantic changes, just to | ||||
make it easier to refer to the points in discussions (rfcdiff seems | ||||
to have a bug showing text differences due to formatting changes). | ||||
6.1.3 Moved content of rule #1 into previous rule #2 because | ||||
certification chain validation does imply validation of lifetime. | ||||
numbers of all rules reduced by 1, changed hopefully all references | ||||
to the rule numbers in the document. | ||||
Rule #3, Hopefully fixed linguistic problem self-contradiction of | ||||
MUST by lower casing MUST in the explanation part and rewriting the | ||||
condition when this is not applicable. | ||||
6.1.4 Replaced redundant term "Trust Point" (TP) with Trust Anchor | ||||
(TA"). Replaced throughout document Trust Anchor with abbreviation | ||||
TA. | ||||
Enhanced several sentences/rewrote paragraphs to make explanations | ||||
clearer. | ||||
6.6 Added explanation how ACP nodes must throttle their attempts for | ||||
connection making purely on the result of their own connection | ||||
attempts, not based on those connections where they are responder. | ||||
15.8. draft-ietf-anima-autonomic-control-plane-24 | ||||
Leftover from -23 review by Eric Vyncke: | ||||
Swapping sections 9 and 10, section 9 was meant to be at end of | ||||
document and summarize. Its not meant to be misinterpreted as | ||||
introducing any new information. This did happen because section 10 | ||||
was added after section 9. | ||||
15.9. draft-ietf-anima-autonomic-control-plane-23 | ||||
Note: big rfcdiff of TOC is an rfcdiff bug, changes really minimal. | ||||
Review of IPsec security with Mcr and ipsec mailing list. | ||||
6.7.1 - new section: Moved general considerations for secure channel | ||||
protocols here, refined them. | ||||
6.7.2 - new section: Moved common requirements for secure channel | ||||
protocols here, refined them. | ||||
6.7.3.1.1. - improved requirements text related to RFC8221, better | ||||
explamations re. HW acceleration issues. | ||||
6.7.3.1.2. - improved requirements text related to RFC8247, (some | ||||
requirements still discussed to be redundant, will be finalized in | ||||
next weeks. | ||||
Eric Vyncke review of -21: | ||||
Only noting most important changes, long list of smaller text/ | ||||
readability enhancements. | ||||
2. - New explanation of "normative", "informational" section title | ||||
tags. alphabetic reordering of terms, refined definitions for CA, | ||||
CRL. root CA. | ||||
6.1.1. - explanation when IDevID parameters may be copied into | ||||
LDevID. | ||||
6.1.2. - Fixed hex digits in ACP domain information to lower case. | ||||
6.1.3.1. - New section on Realtime clock and Time Validation. | ||||
6.3 - Added explanation that DTLS means >= version 1.2 (not only | ||||
1.2). | ||||
6.7 - New text in this main section explaing relationship of ACP | ||||
secure channels and ACP virtual interfaces - with forward references | ||||
to virtual interface section. | ||||
6.8.2 - reordered text and picture, no text change. | ||||
6.10.7.2 - describe first how Registrar-ID can be allocted for all | ||||
type of registrars, then refined text for how to potentially use MAC | ||||
addresses on physical registrars. | ||||
6.11.1.1 - Added text how this profile does not use Data-Plane | ||||
artefacts (RPI) because hadware forwarding. This was previously | ||||
hidden only later in the text. | ||||
6.11.1.13. - Rewrote RPL Data-Plane artefact text. Provide decoder | ||||
ring for abbreviations and all relevant RFCs. | ||||
6.12.5.2. - Added more explicit text that secure channels are mapped | ||||
into virtual interfaces, moved different type of interfaces used by | ||||
ACP into separate subsections to be able to refer to them. | ||||
7.2 - Rewrote/refined text for ACP on L2, prior text was confusing | ||||
and did not well explain why ACP for L2/L3 switches can be | ||||
implemented without any L2 (HW) changes. Also missing explanation of | ||||
only running GRASP untagged when VLANs are used. | ||||
8.1.1 - Added requirement for ACP Edge nodes to allow configurable | ||||
filtering of IPv6 RPI headers. | ||||
11. - (security section). Moved explanation of address stealing from | ||||
7.2 to here. | ||||
15.10. draft-ietf-anima-autonomic-control-plane-22 | ||||
Ben Kaduk review of -21: | ||||
RFC822 encoding of ACP domain information: | ||||
6.1.2 rewrote text for explaining / justifying use of rfc822name as | ||||
identifier for node CP in certificate (was discussed in thread, but | ||||
badly written in prior versions). | ||||
6.1.2 Changed EBNF syntax to use "+" after rfcSELF because that is | ||||
the known primary name to extensions separator in many email systems | ||||
("." was wrong in prior versions). | ||||
6.1.2 Rewrote/improved explanations for use of rfc822name field to | ||||
explain better why it is PKIX compliant and the right thing to do. | ||||
Crypto parameters for IPsec: | ||||
6.1 - Added explanation of why manual keying for ACP is not feasible | ||||
for ACP. Surprisingly, that text did not exist. Referred to by | ||||
IPsec text (6.7.1), but here is the right place to describe the | ||||
reasoning. | ||||
6.1.2 - Small textual refinement referring to requirements to | ||||
authenticate peers (for the special cases of empty or '0' ACP address | ||||
in ACP domain information field. | ||||
6.3 - To better justify Bens proposed change of secure channel | ||||
protocol being IPsec vs. GRASP objective being IKEv2, better | ||||
explained how protocol indicated in GRASP objective-value is name of | ||||
protocol used to negotiate secure channel, use example of IKEv2 to | ||||
negotiate IPsec. | ||||
6.7.1 - refinemenet similar to 6.3. | ||||
- moved new paragraph from Bens pull request up from 6.7.1.1 to 6.7.1 | ||||
as it equally applies to GRE encapped IPsec (looks nicer one level | ||||
up). | ||||
- created subsections 6.7.1.1 (IPsec/ESP) / 6.7.1.2 (IKEv2) to | ||||
clearer distinguish between these two requirements blocks. | ||||
- Refined the text in these two sections to hopefully be a good | ||||
answer to Valery's concern of not randomnly mocking with existing | ||||
requirements docs (rfc8247 / rfc8221). | ||||
6.7.1.1.1 - IPsec/ESP requirements section: | ||||
- MUST support rfc8221 mandatory EXCEPT for the superceeding | ||||
requirements in this section. Previously, this was not quite clear | ||||
from the text. | ||||
- Hopefully persuasive explanations about the requirements levels for | ||||
ENCR_AES_GCM_16, ENCR_AES_CBC, ENCR_AES_CCM_8 and | ||||
ENCR_CHACHA20_POLY1305: Restructured text for why not ENCR_AES_CBC | ||||
(was in prior version, just not well structured), added new | ||||
expanations for ENCR_AES_CCM_8 and ENCR_CHACHA20_POLY130. | ||||
- In simple terms, requirements for ENCR_AES_CBC, ENCR_AES_CCM_8, | ||||
ENCR_CHACHACHA are SHOULD when they are implementable with rqual or | ||||
faster performancce than ENCR_AES_GCM_16. | ||||
- Removed text about "additional rfc8221" reqiurements MAY be used. | ||||
Now the logic is that all other requirements apply. Hopefully we | ||||
have written enough so that we prohibited downgrades. | ||||
6.7.1.1.2 - RFC8247 requirements: | ||||
- Added mandate to support rfc8247, added explanation that there is | ||||
no "stripping down" requirement, just additional stronger | ||||
requirements to mandate correct use of ACP certificartes during | ||||
authentication. | ||||
- refined text on identifying ACP by IPv6 address to be clearer: | ||||
Identifying in the context of IKEv2 and cases for '0' in ACP domain | ||||
information. | ||||
- removed last two paragraphs about relationship to rfc8247, as his | ||||
is now written in first paragraph of the section. | ||||
End of Ben Kaduk review related fixes. | ||||
Other: | ||||
Forgot to update example of ACP domain information to use capitalized | ||||
hex-digits as required by HEXDIG used. | ||||
Added reference to RFC8316 (AN use-cases) to beginning of section 3 | +=======+==================================+==================+ | |||
(ACP use cases). | | Value | Description | Reference | | |||
+=======+==================================+==================+ | ||||
| 0 | ACP Zone Addressing Sub-Scheme/ | RFC 8994 | | ||||
| | ACP Manual Addressing Sub-Scheme | (Section 6.11.3, | | ||||
| | | Section 6.11.4) | | ||||
+-------+----------------------------------+------------------+ | ||||
| 1 | ACP Vlong Addressing Sub-Scheme | RFC 8994 | | ||||
| | | (Section 6.11.5) | | ||||
+-------+----------------------------------+------------------+ | ||||
| 2-3 | Unassigned | | | ||||
+-------+----------------------------------+------------------+ | ||||
Small Enhanced IPsec parameters description / requirements fixes | Table 3: Initial Values in the "ACP Address Type" Subregistry | |||
(from Michael Richardson). | ||||
16. Normative References | The values in the "ACP Address Type" subregistry are numeric values | |||
0..3 paired with a name (string). Future values MUST be assigned | ||||
using the Standards Action policy defined by "Guidelines for Writing | ||||
an IANA Considerations Section in RFCs" [RFC8126]. | ||||
[I-D.ietf-anima-bootstrapping-keyinfra] | 13. References | |||
Pritikin, M., Richardson, M., Eckert, T., Behringer, M., | ||||
and K. Watsen, "Bootstrapping Remote Secure Key | ||||
Infrastructures (BRSKI)", Work in Progress, Internet- | ||||
Draft, draft-ietf-anima-bootstrapping-keyinfra-43, 7 | ||||
August 2020, <http://www.ietf.org/internet-drafts/draft- | ||||
ietf-anima-bootstrapping-keyinfra-43.txt>. | ||||
[I-D.ietf-anima-grasp] | 13.1. Normative References | |||
Bormann, C., Carpenter, B., and B. Liu, "A Generic | ||||
Autonomic Signaling Protocol (GRASP)", Work in Progress, | ||||
Internet-Draft, draft-ietf-anima-grasp-15, 13 July 2017, | ||||
<http://www.ietf.org/internet-drafts/draft-ietf-anima- | ||||
grasp-15.txt>. | ||||
[IKEV2IANA] | [IKEV2IANA] | |||
IANA, "Internet Key Exchange Version 2 (IKEv2) | IANA, "Internet Key Exchange Version 2 (IKEv2) | |||
Parameters", <https://www.iana.org/assignments/ikev2- | Parameters", | |||
parameters/ikev2-parameters.xhtml>. | <https://www.iana.org/assignments/ikev2-parameters>. | |||
[RFC1034] Mockapetris, P.V., "Domain names - concepts and | [RFC1034] Mockapetris, P., "Domain names - concepts and facilities", | |||
facilities", STD 13, RFC 1034, DOI 10.17487/RFC1034, | STD 13, RFC 1034, DOI 10.17487/RFC1034, November 1987, | |||
November 1987, <https://www.rfc-editor.org/info/rfc1034>. | <https://www.rfc-editor.org/info/rfc1034>. | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC3810] Vida, R., Ed. and L. Costa, Ed., "Multicast Listener | [RFC3810] Vida, R., Ed. and L. Costa, Ed., "Multicast Listener | |||
Discovery Version 2 (MLDv2) for IPv6", RFC 3810, | Discovery Version 2 (MLDv2) for IPv6", RFC 3810, | |||
DOI 10.17487/RFC3810, June 2004, | DOI 10.17487/RFC3810, June 2004, | |||
<https://www.rfc-editor.org/info/rfc3810>. | <https://www.rfc-editor.org/info/rfc3810>. | |||
skipping to change at page 150, line 16 ¶ | skipping to change at line 6243 ¶ | |||
(TLS) Protocol Version 1.2", RFC 5246, | (TLS) Protocol Version 1.2", RFC 5246, | |||
DOI 10.17487/RFC5246, August 2008, | DOI 10.17487/RFC5246, August 2008, | |||
<https://www.rfc-editor.org/info/rfc5246>. | <https://www.rfc-editor.org/info/rfc5246>. | |||
[RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | |||
Housley, R., and W. Polk, "Internet X.509 Public Key | Housley, R., and W. Polk, "Internet X.509 Public Key | |||
Infrastructure Certificate and Certificate Revocation List | Infrastructure Certificate and Certificate Revocation List | |||
(CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008, | (CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008, | |||
<https://www.rfc-editor.org/info/rfc5280>. | <https://www.rfc-editor.org/info/rfc5280>. | |||
[RFC5954] Gurbani, V., Ed., Carpenter, B., Ed., and B. Tate, Ed., | ||||
"Essential Correction for IPv6 ABNF and URI Comparison in | ||||
RFC 3261", RFC 5954, DOI 10.17487/RFC5954, August 2010, | ||||
<https://www.rfc-editor.org/info/rfc5954>. | ||||
[RFC6347] Rescorla, E. and N. Modadugu, "Datagram Transport Layer | [RFC6347] Rescorla, E. and N. Modadugu, "Datagram Transport Layer | |||
Security Version 1.2", RFC 6347, DOI 10.17487/RFC6347, | Security Version 1.2", RFC 6347, DOI 10.17487/RFC6347, | |||
January 2012, <https://www.rfc-editor.org/info/rfc6347>. | January 2012, <https://www.rfc-editor.org/info/rfc6347>. | |||
[RFC6550] Winter, T., Ed., Thubert, P., Ed., Brandt, A., Hui, J., | [RFC6550] Winter, T., Ed., Thubert, P., Ed., Brandt, A., Hui, J., | |||
Kelsey, R., Levis, P., Pister, K., Struik, R., Vasseur, | Kelsey, R., Levis, P., Pister, K., Struik, R., Vasseur, | |||
JP., and R. Alexander, "RPL: IPv6 Routing Protocol for | JP., and R. Alexander, "RPL: IPv6 Routing Protocol for | |||
Low-Power and Lossy Networks", RFC 6550, | Low-Power and Lossy Networks", RFC 6550, | |||
DOI 10.17487/RFC6550, March 2012, | DOI 10.17487/RFC6550, March 2012, | |||
<https://www.rfc-editor.org/info/rfc6550>. | <https://www.rfc-editor.org/info/rfc6550>. | |||
skipping to change at page 151, line 49 ¶ | skipping to change at line 6330 ¶ | |||
[RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | |||
Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | |||
<https://www.rfc-editor.org/info/rfc8446>. | <https://www.rfc-editor.org/info/rfc8446>. | |||
[RFC8610] Birkholz, H., Vigano, C., and C. Bormann, "Concise Data | [RFC8610] Birkholz, H., Vigano, C., and C. Bormann, "Concise Data | |||
Definition Language (CDDL): A Notational Convention to | Definition Language (CDDL): A Notational Convention to | |||
Express Concise Binary Object Representation (CBOR) and | Express Concise Binary Object Representation (CBOR) and | |||
JSON Data Structures", RFC 8610, DOI 10.17487/RFC8610, | JSON Data Structures", RFC 8610, DOI 10.17487/RFC8610, | |||
June 2019, <https://www.rfc-editor.org/info/rfc8610>. | June 2019, <https://www.rfc-editor.org/info/rfc8610>. | |||
17. Informative References | [RFC8990] Bormann, C., Carpenter, B., Ed., and B. Liu, Ed., "GeneRic | |||
Autonomic Signaling Protocol (GRASP)", RFC 8990, | ||||
DOI 10.17487/RFC8990, May 2021, | ||||
<https://www.rfc-editor.org/info/rfc8990>. | ||||
[ACPDRAFT] Eckert, T., Behringer, M., and S. Bjarnason, "An Autonomic | [RFC8995] Pritikin, M., Richardson, M., Eckert, T., Behringer, M., | |||
Control Plane (ACP)", Work in Progress, Internet-Draft, | and K. Watsen, "Bootstrapping Remote Secure Key | |||
draft-ietf-anima-autonomic-control-plane-30, | Infrastructure (BRSKI)", RFC 8995, DOI 10.17487/RFC8995, | |||
<https://tools.ietf.org/html/draft-ietf-anima-autonomic- | May 2021, <https://www.rfc-editor.org/info/rfc8995>. | |||
control-plane-30.pdf>. [RFC-Editor: Please remove this | ||||
complete reference from the RFC] Refer to the IETF working | ||||
group draft for the few sections removed from this | ||||
document for various reasons. They capture the state of | ||||
discussion about unresolved issues that may need to be | ||||
revisited in future work. | ||||
[AR8021] Group, W. -. H. L. L. P. W., "IEEE Standard for Local and | 13.2. Informative References | |||
metropolitan area networks - Secure Device Identity", | ||||
December 2009, <http://standards.ieee.org/findstds/ | [AR8021] IEEE, "IEEE Standard for Local and metropolitan area | |||
standard/802.1AR-2009.html>. | networks - Secure Device Identity", IEEE 802.1AR, | |||
<https://1.ieee802.org/security/802-1ar>. | ||||
[CABFORUM] CA/Browser Forum, "Certificate Contents for Baseline SSL", | [CABFORUM] CA/Browser Forum, "Certificate Contents for Baseline SSL", | |||
November 2019, <https://cabforum.org/baseline- | November 2019, <https://cabforum.org/baseline- | |||
requirements-certificate-contents/>. | requirements-certificate-contents/>. | |||
[FCC] FCC, "FCC STAFF REPORT ON NATIONWIDE T-MOBILE NETWORK | [FCC] FCC, "June 15, 2020 T-Mobile Network Outage Report", A | |||
OUTAGE ON JUNE 15, 2020 (PS Docket No. 20-183)", 2020, | Report of the Public Safety and Homeland Security Bureau | |||
<https://docs.fcc.gov/public/attachments/DOC- | Federal Communications Commission, PS Docket No. 20-183, | |||
367699A1.docx>. The FCC's Public Safety and Homeland | October 2020, <https://docs.fcc.gov/public/attachments/ | |||
Security Bureau issues a report on a nationwide T-Mobile | DOC-367699A1.docx>. | |||
outage that occurred on June 15, 2020. Action by: Public | ||||
Safety and Homeland Security Bureau. | ||||
[I-D.eckert-anima-noc-autoconfig] | ||||
Eckert, T., "Autoconfiguration of NOC services in ACP | ||||
networks via GRASP", Work in Progress, Internet-Draft, | ||||
draft-eckert-anima-noc-autoconfig-00, 2 July 2018, | ||||
<http://www.ietf.org/internet-drafts/draft-eckert-anima- | ||||
noc-autoconfig-00.txt>. | ||||
[I-D.ietf-acme-star] | ||||
Sheffer, Y., Lopez, D., Dios, O., Pastor, A., and T. | ||||
Fossati, "Support for Short-Term, Automatically-Renewed | ||||
(STAR) Certificates in Automated Certificate Management | ||||
Environment (ACME)", Work in Progress, Internet-Draft, | ||||
draft-ietf-acme-star-11, 24 October 2019, | ||||
<http://www.ietf.org/internet-drafts/draft-ietf-acme-star- | ||||
11.txt>. | ||||
[I-D.ietf-anima-prefix-management] | ||||
Jiang, S., Du, Z., Carpenter, B., and Q. Sun, "Autonomic | ||||
IPv6 Edge Prefix Management in Large-scale Networks", Work | ||||
in Progress, Internet-Draft, draft-ietf-anima-prefix- | ||||
management-07, 18 December 2017, <http://www.ietf.org/ | ||||
internet-drafts/draft-ietf-anima-prefix-management- | ||||
07.txt>. | ||||
[I-D.ietf-anima-reference-model] | ||||
Behringer, M., Carpenter, B., Eckert, T., Ciavaglia, L., | ||||
and J. Nobre, "A Reference Model for Autonomic | ||||
Networking", Work in Progress, Internet-Draft, draft-ietf- | ||||
anima-reference-model-10, 22 November 2018, | ||||
<http://www.ietf.org/internet-drafts/draft-ietf-anima- | ||||
reference-model-10.txt>. | ||||
[I-D.ietf-roll-applicability-template] | ||||
Richardson, M., "ROLL Applicability Statement Template", | ||||
Work in Progress, Internet-Draft, draft-ietf-roll- | ||||
applicability-template-09, 3 May 2016, | ||||
<http://www.ietf.org/internet-drafts/draft-ietf-roll- | ||||
applicability-template-09.txt>. | ||||
[I-D.ietf-tls-dtls13] | ||||
Rescorla, E., Tschofenig, H., and N. Modadugu, "The | ||||
Datagram Transport Layer Security (DTLS) Protocol Version | ||||
1.3", Work in Progress, Internet-Draft, draft-ietf-tls- | ||||
dtls13-38, 29 May 2020, <http://www.ietf.org/internet- | ||||
drafts/draft-ietf-tls-dtls13-38.txt>. | ||||
[IEEE-1588-2008] | [IEEE-1588-2008] | |||
IEEE, "IEEE Standard for a Precision Clock Synchronization | IEEE, "IEEE Standard for a Precision Clock Synchronization | |||
Protocol for Networked Measurement and Control Systems", | Protocol for Networked Measurement and Control Systems", | |||
December 2008, <http://standards.ieee.org/findstds/ | DOI 10.1109/IEEESTD.2008.4579760, IEEE 1588-2008, July | |||
standard/1588-2008.html>. | 2008, | |||
<https://standards.ieee.org/standard/1588-2008.html>. | ||||
[IEEE-802.1X] | [IEEE-802.1X] | |||
Group, W. -. H. L. L. P. W., "IEEE Standard for Local and | IEEE, "IEEE Standard for Local and metropolitan area | |||
Metropolitan Area Networks: Port-Based Network Access | networks--Port-Based Network Access Control", | |||
Control", February 2010, | DOI 10.1109/IEEESTD.2010.5409813, IEEE 802.1X-2010, | |||
<http://standards.ieee.org/findstds/standard/802.1X- | February 2010, | |||
2010.html>. | <https://standards.ieee.org/standard/802_1X-2010.html>. | |||
[LLDP] Group, W. -. H. L. L. P. W., "IEEE Standard for Local and | [LLDP] IEEE, "IEEE Standard for Local and metropolitan area | |||
Metropolitan Area Networks: Station and Media Access | networks: Station and Media Access Control Connectivity | |||
Control Connectivity Discovery", June 2016, | Discovery", DOI 10.1109/IEEESTD.2016.7433915, IEEE | |||
<https://standards.ieee.org/findstds/standard/802.1AB- | 802.1AB-2016, March 2016, | |||
2016.html>. | <https://standards.ieee.org/standard/802_1AB-2016.html>. | |||
[MACSEC] Group, W. -. H. L. L. P. W., "IEEE Standard for Local and | [MACSEC] IEEE, "IEEE Standard for Local and Metropolitan Area | |||
Metropolitan Area Networks: Media Access Control (MAC) | Networks: Media Access Control (MAC) Security", | |||
Security", June 2006, | DOI 10.1109/IEEESTD.2006.245590, IEEE 802.1AE-2006, August | |||
<https://standards.ieee.org/findstds/standard/802.1AE- | 2006, | |||
2006.html>. | <https://standards.ieee.org/standard/802_1AE-2006.html>. | |||
[RFC1112] Deering, S.E., "Host extensions for IP multicasting", | [NOC-AUTOCONFIG] | |||
STD 5, RFC 1112, DOI 10.17487/RFC1112, August 1989, | Eckert, T., Ed., "Autoconfiguration of NOC services in ACP | |||
networks via GRASP", Work in Progress, Internet-Draft, | ||||
draft-eckert-anima-noc-autoconfig-00, 2 July 2018, | ||||
<https://tools.ietf.org/html/draft-eckert-anima-noc- | ||||
autoconfig-00>. | ||||
[OP-TECH] Wikipedia, "Operational technology", October 2020, | ||||
<https://en.wikipedia.org/w/ | ||||
index.php?title=Operational_technology&oldid=986363045>. | ||||
[RFC1112] Deering, S., "Host extensions for IP multicasting", STD 5, | ||||
RFC 1112, DOI 10.17487/RFC1112, August 1989, | ||||
<https://www.rfc-editor.org/info/rfc1112>. | <https://www.rfc-editor.org/info/rfc1112>. | |||
[RFC1492] Finseth, C., "An Access Control Protocol, Sometimes Called | [RFC1492] Finseth, C., "An Access Control Protocol, Sometimes Called | |||
TACACS", RFC 1492, DOI 10.17487/RFC1492, July 1993, | TACACS", RFC 1492, DOI 10.17487/RFC1492, July 1993, | |||
<https://www.rfc-editor.org/info/rfc1492>. | <https://www.rfc-editor.org/info/rfc1492>. | |||
[RFC1654] Rekhter, Y., Ed. and T. Li, Ed., "A Border Gateway | [RFC1654] Rekhter, Y., Ed. and T. Li, Ed., "A Border Gateway | |||
Protocol 4 (BGP-4)", RFC 1654, DOI 10.17487/RFC1654, July | Protocol 4 (BGP-4)", RFC 1654, DOI 10.17487/RFC1654, July | |||
1994, <https://www.rfc-editor.org/info/rfc1654>. | 1994, <https://www.rfc-editor.org/info/rfc1654>. | |||
skipping to change at page 155, line 16 ¶ | skipping to change at line 6443 ¶ | |||
Architecture for Describing Simple Network Management | Architecture for Describing Simple Network Management | |||
Protocol (SNMP) Management Frameworks", STD 62, RFC 3411, | Protocol (SNMP) Management Frameworks", STD 62, RFC 3411, | |||
DOI 10.17487/RFC3411, December 2002, | DOI 10.17487/RFC3411, December 2002, | |||
<https://www.rfc-editor.org/info/rfc3411>. | <https://www.rfc-editor.org/info/rfc3411>. | |||
[RFC3596] Thomson, S., Huitema, C., Ksinant, V., and M. Souissi, | [RFC3596] Thomson, S., Huitema, C., Ksinant, V., and M. Souissi, | |||
"DNS Extensions to Support IP Version 6", STD 88, | "DNS Extensions to Support IP Version 6", STD 88, | |||
RFC 3596, DOI 10.17487/RFC3596, October 2003, | RFC 3596, DOI 10.17487/RFC3596, October 2003, | |||
<https://www.rfc-editor.org/info/rfc3596>. | <https://www.rfc-editor.org/info/rfc3596>. | |||
[RFC3920] Saint-Andre, P., Ed., "Extensible Messaging and Presence | ||||
Protocol (XMPP): Core", RFC 3920, DOI 10.17487/RFC3920, | ||||
October 2004, <https://www.rfc-editor.org/info/rfc3920>. | ||||
[RFC3954] Claise, B., Ed., "Cisco Systems NetFlow Services Export | [RFC3954] Claise, B., Ed., "Cisco Systems NetFlow Services Export | |||
Version 9", RFC 3954, DOI 10.17487/RFC3954, October 2004, | Version 9", RFC 3954, DOI 10.17487/RFC3954, October 2004, | |||
<https://www.rfc-editor.org/info/rfc3954>. | <https://www.rfc-editor.org/info/rfc3954>. | |||
[RFC4007] Deering, S., Haberman, B., Jinmei, T., Nordmark, E., and | [RFC4007] Deering, S., Haberman, B., Jinmei, T., Nordmark, E., and | |||
B. Zill, "IPv6 Scoped Address Architecture", RFC 4007, | B. Zill, "IPv6 Scoped Address Architecture", RFC 4007, | |||
DOI 10.17487/RFC4007, March 2005, | DOI 10.17487/RFC4007, March 2005, | |||
<https://www.rfc-editor.org/info/rfc4007>. | <https://www.rfc-editor.org/info/rfc4007>. | |||
[RFC4210] Adams, C., Farrell, S., Kause, T., and T. Mononen, | [RFC4210] Adams, C., Farrell, S., Kause, T., and T. Mononen, | |||
skipping to change at page 156, line 20 ¶ | skipping to change at line 6487 ¶ | |||
[RFC4607] Holbrook, H. and B. Cain, "Source-Specific Multicast for | [RFC4607] Holbrook, H. and B. Cain, "Source-Specific Multicast for | |||
IP", RFC 4607, DOI 10.17487/RFC4607, August 2006, | IP", RFC 4607, DOI 10.17487/RFC4607, August 2006, | |||
<https://www.rfc-editor.org/info/rfc4607>. | <https://www.rfc-editor.org/info/rfc4607>. | |||
[RFC4610] Farinacci, D. and Y. Cai, "Anycast-RP Using Protocol | [RFC4610] Farinacci, D. and Y. Cai, "Anycast-RP Using Protocol | |||
Independent Multicast (PIM)", RFC 4610, | Independent Multicast (PIM)", RFC 4610, | |||
DOI 10.17487/RFC4610, August 2006, | DOI 10.17487/RFC4610, August 2006, | |||
<https://www.rfc-editor.org/info/rfc4610>. | <https://www.rfc-editor.org/info/rfc4610>. | |||
[RFC4941] Narten, T., Draves, R., and S. Krishnan, "Privacy | ||||
Extensions for Stateless Address Autoconfiguration in | ||||
IPv6", RFC 4941, DOI 10.17487/RFC4941, September 2007, | ||||
<https://www.rfc-editor.org/info/rfc4941>. | ||||
[RFC4985] Santesson, S., "Internet X.509 Public Key Infrastructure | [RFC4985] Santesson, S., "Internet X.509 Public Key Infrastructure | |||
Subject Alternative Name for Expression of Service Name", | Subject Alternative Name for Expression of Service Name", | |||
RFC 4985, DOI 10.17487/RFC4985, August 2007, | RFC 4985, DOI 10.17487/RFC4985, August 2007, | |||
<https://www.rfc-editor.org/info/rfc4985>. | <https://www.rfc-editor.org/info/rfc4985>. | |||
[RFC5790] Liu, H., Cao, W., and H. Asaeda, "Lightweight Internet | [RFC5790] Liu, H., Cao, W., and H. Asaeda, "Lightweight Internet | |||
Group Management Protocol Version 3 (IGMPv3) and Multicast | Group Management Protocol Version 3 (IGMPv3) and Multicast | |||
Listener Discovery Version 2 (MLDv2) Protocols", RFC 5790, | Listener Discovery Version 2 (MLDv2) Protocols", RFC 5790, | |||
DOI 10.17487/RFC5790, February 2010, | DOI 10.17487/RFC5790, February 2010, | |||
<https://www.rfc-editor.org/info/rfc5790>. | <https://www.rfc-editor.org/info/rfc5790>. | |||
skipping to change at page 157, line 5 ¶ | skipping to change at line 6512 ¶ | |||
[RFC5905] Mills, D., Martin, J., Ed., Burbank, J., and W. Kasch, | [RFC5905] Mills, D., Martin, J., Ed., Burbank, J., and W. Kasch, | |||
"Network Time Protocol Version 4: Protocol and Algorithms | "Network Time Protocol Version 4: Protocol and Algorithms | |||
Specification", RFC 5905, DOI 10.17487/RFC5905, June 2010, | Specification", RFC 5905, DOI 10.17487/RFC5905, June 2010, | |||
<https://www.rfc-editor.org/info/rfc5905>. | <https://www.rfc-editor.org/info/rfc5905>. | |||
[RFC5912] Hoffman, P. and J. Schaad, "New ASN.1 Modules for the | [RFC5912] Hoffman, P. and J. Schaad, "New ASN.1 Modules for the | |||
Public Key Infrastructure Using X.509 (PKIX)", RFC 5912, | Public Key Infrastructure Using X.509 (PKIX)", RFC 5912, | |||
DOI 10.17487/RFC5912, June 2010, | DOI 10.17487/RFC5912, June 2010, | |||
<https://www.rfc-editor.org/info/rfc5912>. | <https://www.rfc-editor.org/info/rfc5912>. | |||
[RFC6120] Saint-Andre, P., "Extensible Messaging and Presence | ||||
Protocol (XMPP): Core", RFC 6120, DOI 10.17487/RFC6120, | ||||
March 2011, <https://www.rfc-editor.org/info/rfc6120>. | ||||
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | |||
and A. Bierman, Ed., "Network Configuration Protocol | and A. Bierman, Ed., "Network Configuration Protocol | |||
(NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | |||
<https://www.rfc-editor.org/info/rfc6241>. | <https://www.rfc-editor.org/info/rfc6241>. | |||
[RFC6335] Cotton, M., Eggert, L., Touch, J., Westerlund, M., and S. | [RFC6335] Cotton, M., Eggert, L., Touch, J., Westerlund, M., and S. | |||
Cheshire, "Internet Assigned Numbers Authority (IANA) | Cheshire, "Internet Assigned Numbers Authority (IANA) | |||
Procedures for the Management of the Service Name and | Procedures for the Management of the Service Name and | |||
Transport Protocol Port Number Registry", BCP 165, | Transport Protocol Port Number Registry", BCP 165, | |||
RFC 6335, DOI 10.17487/RFC6335, August 2011, | RFC 6335, DOI 10.17487/RFC6335, August 2011, | |||
skipping to change at page 160, line 10 ¶ | skipping to change at line 6664 ¶ | |||
[RFC8402] Filsfils, C., Ed., Previdi, S., Ed., Ginsberg, L., | [RFC8402] Filsfils, C., Ed., Previdi, S., Ed., Ginsberg, L., | |||
Decraene, B., Litkowski, S., and R. Shakir, "Segment | Decraene, B., Litkowski, S., and R. Shakir, "Segment | |||
Routing Architecture", RFC 8402, DOI 10.17487/RFC8402, | Routing Architecture", RFC 8402, DOI 10.17487/RFC8402, | |||
July 2018, <https://www.rfc-editor.org/info/rfc8402>. | July 2018, <https://www.rfc-editor.org/info/rfc8402>. | |||
[RFC8572] Watsen, K., Farrer, I., and M. Abrahamsson, "Secure Zero | [RFC8572] Watsen, K., Farrer, I., and M. Abrahamsson, "Secure Zero | |||
Touch Provisioning (SZTP)", RFC 8572, | Touch Provisioning (SZTP)", RFC 8572, | |||
DOI 10.17487/RFC8572, April 2019, | DOI 10.17487/RFC8572, April 2019, | |||
<https://www.rfc-editor.org/info/rfc8572>. | <https://www.rfc-editor.org/info/rfc8572>. | |||
[X.509] International Telecommunication Union, "Information | [RFC8684] Ford, A., Raiciu, C., Handley, M., Bonaventure, O., and C. | |||
technology - Open Systems Interconnection - The Directory: | Paasch, "TCP Extensions for Multipath Operation with | |||
Public-key and attribute certificate frameworks", ITU-T | Multiple Addresses", RFC 8684, DOI 10.17487/RFC8684, March | |||
Recommendation X.509, ISO/IEC 9594-8, October 2016, | 2020, <https://www.rfc-editor.org/info/rfc8684>. | |||
<https://www.itu.int/rec/T-REC-X.509>. | ||||
[X.520] International Telecommunication Union, "Information | [RFC8739] Sheffer, Y., Lopez, D., Gonzalez de Dios, O., Pastor | |||
technology - Open Systems Interconnection - The Directory: | Perales, A., and T. Fossati, "Support for Short-Term, | |||
Selected attribute types", ITU-T Recommendation | Automatically Renewed (STAR) Certificates in the Automated | |||
X.520, ISO/IEC 9594-6, October 2016, | Certificate Management Environment (ACME)", RFC 8739, | |||
DOI 10.17487/RFC8739, March 2020, | ||||
<https://www.rfc-editor.org/info/rfc8739>. | ||||
[RFC8981] Gont, F., Krishnan, S., Narten, T., and R. Draves, | ||||
"Temporary Address Extensions for Stateless Address | ||||
Autoconfiguration in IPv6", RFC 8981, | ||||
DOI 10.17487/RFC8981, February 2021, | ||||
<https://www.rfc-editor.org/info/rfc8981>. | ||||
[RFC8992] Jiang, S., Ed., Du, Z., Carpenter, B., and Q. Sun, | ||||
"Autonomic IPv6 Edge Prefix Management in Large-Scale | ||||
Networks", RFC 8992, DOI 10.17487/RFC8992, May 2021, | ||||
<https://www.rfc-editor.org/info/rfc8992>. | ||||
[RFC8993] Behringer, M., Ed., Carpenter, B., Eckert, T., Ciavaglia, | ||||
L., and J. Nobre, "A Reference Model for Autonomic | ||||
Networking", RFC 8993, DOI 10.17487/RFC8993, May 2021, | ||||
<https://www.rfc-editor.org/info/rfc8993>. | ||||
[ROLL-APPLICABILITY] | ||||
Richardson, M., "ROLL Applicability Statement Template", | ||||
Work in Progress, Internet-Draft, draft-ietf-roll- | ||||
applicability-template-09, 3 May 2016, | ||||
<https://tools.ietf.org/html/draft-ietf-roll- | ||||
applicability-template-09>. | ||||
[SR] Wikipedia, "Single-root input/output virtualization", | ||||
September 2020, <https://en.wikipedia.org/w/ | ||||
index.php?title=Single-root_input/ | ||||
output_virtualization&oldid=978867619>. | ||||
[TLS-DTLS13] | ||||
Rescorla, E., Tschofenig, H., and N. Modadugu, "The | ||||
Datagram Transport Layer Security (DTLS) Protocol Version | ||||
1.3", Work in Progress, Internet-Draft, draft-ietf-tls- | ||||
dtls13-43, 30 April 2021, | ||||
<https://tools.ietf.org/html/draft-ietf-tls-dtls13-43>. | ||||
[X.509] ITU-T, "Information technology - Open Systems | ||||
Interconnection - The Directory: Public-key and attribute | ||||
certificate frameworks", ITU-T Recommendation X.509, | ||||
October 2016, <https://www.itu.int/rec/T-REC-X.509>. | ||||
[X.520] ITU-T, "Information technology - Open Systems | ||||
Interconnection - The Directory: Selected attribute | ||||
types", ITU-T Recommendation X.520, October 2016, | ||||
<https://www.itu.int/rec/T-REC-X.520>. | <https://www.itu.int/rec/T-REC-X.520>. | |||
Appendix A. Background and Futures (Informative) | Appendix A. Background and Future (Informative) | |||
The following sections discuss additional background information | The following sections provide background information about aspects | |||
about aspects of the normative parts of this document or associated | of the normative parts of this document or associated mechanisms such | |||
mechanisms such as BRSKI (such as why specific choices were made by | as BRSKI (such as why specific choices were made by the ACP), and | |||
the ACP) and they provide discussion about possible future variations | they discuss possible future variations of the ACP. | |||
of the ACP. | ||||
A.1. ACP Address Space Schemes | A.1. ACP Address Space Schemes | |||
This document defines the Zone, Vlong and Manual sub address schemes | This document defines the Zone, Vlong, and Manual Addressing Sub- | |||
primarily to support address prefix assignment via distributed, | Schemes primarily to support address prefix assignment via | |||
potentially uncoordinated ACP registrars as defined in | distributed, potentially uncoordinated ACP registrars as defined in | |||
Section 6.11.7. This costs 48/46-bit identifier so that these ACP | Section 6.11.7. This costs a 48/46-bit identifier so that these ACP | |||
registrar can assign non-conflicting address prefixes. This design | registrars can assign nonconflicting address prefixes. This design | |||
does not leave enough bits to simultaneously support a large number | does not leave enough bits to simultaneously support a large number | |||
of nodes (Node-ID) plus a large prefix of local addresses for every | of nodes (Node-ID), plus a large prefix of local addresses for every | |||
node plus a large enough set of bits to identify a routing Zone. In | node, plus a large enough set of bits to identify a routing zone. As | |||
result, Zone, Vlong 8/16 attempt to support all features, but via | a result, the Zone and Vlong 8/16 Addressing Sub-Schemes attempt to | |||
separate prefixes. | support all features but via separate prefixes. | |||
In networks that always expect to rely on a centralized PMS as | In networks that expect always to rely on a centralized PMS as | |||
described above (Section 9.2.5), the 48/46-bits for the Registrar-ID | described Section 9.2.5, the 48/46-bits for the Registrar-ID could be | |||
could be saved. Such variations of the ACP addressing mechanisms | saved. Such variations of the ACP addressing mechanisms could be | |||
could be introduced through future work in different ways. If a new | introduced through future work in different ways. If a new otherName | |||
otherName was introduced, incompatible ACP variations could be | was introduced, incompatible ACP variations could be created where | |||
created where every design aspect of the ACP could be changed. | every design aspect of the ACP could be changed, including all | |||
Including all addressing choices. If instead a new addressing sub- | addressing choices. If instead a new addressing sub-scheme would be | |||
type would be defined, it could be a backward compatible extension of | defined, it could be a backward-compatible extension of this ACP | |||
this ACP specification. Information such as the size of a zone- | specification. Information such as the size of a zone prefix and the | |||
prefix and the length of the prefix assigned to the ACP node itself | length of the prefix assigned to the ACP node itself could be encoded | |||
could be encoded via the extension field of the acp-node-name. | via the extension field of the acp-node-name. | |||
Note that an explicitly defined "Manual" addressing sub-scheme is | Note that an explicitly defined Manual Addressing Sub-Scheme is | |||
always beneficial to provide an easy way for ACP nodes to prohibit | always beneficial to provide an easy way for ACP nodes to prohibit | |||
incorrect manual configuration of any non-"Manual" ACP address spaces | incorrect non-autonomic configuration of any non-"Manual" ACP address | |||
and therefore ensure that "Manual" operations will never impact | spaces and therefore ensure that such non-autonomic operations will | |||
correct routing for any non-"Manual" ACP addresses assigned via ACP | never impact correct routing for any non-"Manual" ACP addresses | |||
certificates. | assigned via ACP certificates. | |||
A.2. BRSKI Bootstrap (ANI) | A.2. BRSKI Bootstrap (ANI) | |||
BRSKI describes how nodes with an IDevID certificate can securely and | BRSKI describes how nodes with an IDevID certificate can securely and | |||
zero-touch enroll with an LDevID certificate to support the ACP. | zero-touch enroll with an LDevID certificate to support the ACP. | |||
BRSKI also leverages the ACP to enable zero-touch bootstrap of new | BRSKI also leverages the ACP to enable zero-touch bootstrap of new | |||
nodes across networks without any configuration requirements across | nodes across networks without any configuration requirements across | |||
the transit nodes (e.g., no DHCP/DNS forwarding/server setup). This | the transit nodes (e.g., no DHCP, DNS forwarding, and/or server | |||
includes otherwise not configured networks as described in | setup). This includes otherwise unconfigured networks as described | |||
Section 3.2. Therefore, BRSKI in conjunction with ACP provides for a | in Section 3.2. Therefore, BRSKI in conjunction with ACP provides | |||
secure and zero-touch management solution for complete networks. | for a secure and zero-touch management solution for complete | |||
Nodes supporting such an infrastructure (BRSKI and ACP) are called | networks. Nodes supporting such an infrastructure (BRSKI and ACP) | |||
ANI nodes (Autonomic Networking Infrastructure), see | are called ANI nodes (Autonomic Networking Infrastructure), see | |||
[I-D.ietf-anima-reference-model]. Nodes that do not support an | [RFC8993]. Nodes that do not support an IDevID certificate but only | |||
IDevID certificate but only an (insecure) vendor specific Unique | an (insecure) vendor-specific Unique Device Identifier (UDI) or nodes | |||
Device Identifier (UDI) or nodes whose manufacturer does not support | whose manufacturer does not support a MASA could use some future, | |||
a MASA could use some future security reduced version of BRSKI. | reduced-security version of BRSKI. | |||
When BRSKI is used to provision a domain certificate (which is called | When BRSKI is used to provision a domain certificate (which is called | |||
enrollment), the BRSKI registrar (acting as an enhanced EST server) | enrollment), the BRSKI registrar (acting as an enhanced EST server) | |||
must include the otherName / AcpNodeName encoded ACP address and | must include the otherName / AcpNodeName encoded ACP address and | |||
domain name to the enrolling node (called pledge) via its response to | domain name to the enrolling node (called a pledge) via its response | |||
the pledges EST CSR Attribute request that is mandatory in BRSKI. | to the pledge's EST CSR Attributes Request that is mandatory in | |||
BRSKI. | ||||
The Certification Authority in an ACP network must not change the | The CA in an ACP network must not change the otherName / AcpNodeName | |||
otherName / AcpNodeName in the certificate. The ACP nodes can | in the certificate. The ACP nodes can therefore find their ACP | |||
therefore find their ACP address and domain using this field in the | addresses and domain using this field in the domain certificate, both | |||
domain certificate, both for themselves, as well as for other nodes. | for themselves as well as for other nodes. | |||
The use of BRSKI in conjunction with the ACP can also help to further | The use of BRSKI in conjunction with the ACP can also help to further | |||
simplify maintenance and renewal of domain certificates. Instead of | simplify maintenance and renewal of domain certificates. Instead of | |||
relying on CRL, the lifetime of certificates can be made extremely | relying on CRL, the lifetime of certificates can be made extremely | |||
small, for example in the order of hours. When a node fails to | small, for example, on the order of hours. When a node fails to | |||
connect to the ACP within its certificate lifetime, it cannot connect | connect to the ACP within its certificate lifetime, it cannot connect | |||
to the ACP to renew its certificate across it (using just EST), but | to the ACP to renew its certificate across it (using just EST), but | |||
it can still renew its certificate as an "enrolled/expired pledge" | it can still renew its certificate as an "enrolled/expired pledge" | |||
via the BRSKI bootstrap proxy. This requires only that the BRSKI | via the BRSKI bootstrap proxy. This requires only that the BRSKI | |||
registrar honors expired domain certificates and that the pledge | registrar honors expired domain certificates and that the pledge | |||
attempts to perform TLS authentication for BRSKI bootstrap using its | attempts to perform TLS authentication for BRSKI bootstrap using its | |||
expired domain certificate before falling back to attempting to use | expired domain certificate before falling back to attempting to use | |||
its IDevID certificate for BRSKI. This mechanism could also render | its IDevID certificate for BRSKI. This mechanism could also render | |||
CRLs unnecessary because the BRSKI registrar in conjunction with the | CRLs unnecessary because the BRSKI registrar in conjunction with the | |||
CA would not renew revoked certificates - only a "Do-not-renew" list | CA would not renew revoked certificates -- only a "Do-not-renew" list | |||
would be necessary on BRSKI registrars/CA. | would be necessary on the BRSKI registrar/CA. | |||
In the absence of BRSKI or less secure variants thereof, provisioning | In the absence of BRSKI or less secure variants thereof, the | |||
of certificates may involve one or more touches or non-standardized | provisioning of certificates may involve one or more touches or | |||
automation. Node vendors usually support provisioning of | nonstandardized automation. Node vendors usually support the | |||
certificates into nodes via PKCS#7 (see [RFC2315]) and may support | provisioning of certificates into nodes via PKCS #7 (see "PKCS #7: | |||
this provisioning through vendor specific models via NETCONF | Cryptographic Message Syntax Version 1.5" [RFC2315]) and may support | |||
([RFC6241]). If such nodes also support NETCONF Zero-Touch | this provisioning through vendor-specific models via NETCONF | |||
([RFC8572]) then this can be combined to zero-touch provisioning of | ("Network Configuration Protocol (NETCONF)" [RFC6241]). If such | |||
domain certificates into nodes. Unless there are equivalent | nodes also support NETCONF Zero Touch [RFC8572], then this can be | |||
integration of NETCONF connections across the ACP as there is in | combined with zero-touch provisioning of domain certificates into | |||
BRSKI, this combination would not support zero-touch bootstrap across | nodes. Unless there is the equivalent integration of NETCONF | |||
a not configured network though. | connections across the ACP as there is in BRSKI, this combination | |||
would not support zero-touch bootstrap across an unconfigured | ||||
network, though. | ||||
A.3. ACP Neighbor discovery protocol selection | A.3. ACP Neighbor Discovery Protocol Selection | |||
This section discusses why GRASP DULL was chosen as the discovery | This section discusses why GRASP DULL was chosen as the discovery | |||
protocol for L2 adjacent candidate ACP neighbors. The contenders | protocol for L2-adjacent candidate ACP neighbors. The contenders | |||
considered where GRASP, mDNS or LLDP. | that were considered were GRASP, mDNS, and LLDP. | |||
A.3.1. LLDP | A.3.1. LLDP | |||
LLDP and Cisco's earlier Cisco Discovery Protocol (CDP) are example | LLDP and Cisco's earlier Cisco Discovery Protocol (CDP) are examples | |||
of L2 discovery protocols that terminate their messages on L2 ports. | of L2 discovery protocols that terminate their messages on L2 ports. | |||
If those protocols would be chosen for ACP neighbor discovery, ACP | If those protocols had been chosen for ACP neighbor discovery, ACP | |||
neighbor discovery would therefore also terminate on L2 ports. This | neighbor discovery would also have terminated on L2 ports. This | |||
would prevent ACP construction over non-ACP capable but LLDP or CDP | would have prevented ACP construction over non-ACP-capable, but LLDP- | |||
enabled L2 switches. LLDP has extensions using different MAC | or CDP-enabled L2 switches. LLDP has extensions using different MAC | |||
addresses and this could have been an option for ACP discovery as | addresses, and this could have been an option for ACP discovery as | |||
well, but the additional required IEEE standardization and definition | well, but the additional required IEEE standardization and definition | |||
of a profile for such a modified instance of LLDP seemed to be more | of a profile for such a modified instance of LLDP seemed to be more | |||
work than the benefit of "reusing the existing protocol" LLDP for | work than the benefit of "reusing the existing protocol" LLDP for | |||
this very simple purpose. | this very simple purpose. | |||
A.3.2. mDNS and L2 support | A.3.2. mDNS and L2 Support | |||
Multicast DNNS (mDNS) [RFC6762] with DNS Service Discovery (DNS-SD) | Multicast DNS (mDNS) "Multicast DNS" [RFC6762] with DNS Service | |||
Resource Records (RRs) as defined in [RFC6763] is a key contender as | Discovery (DNS-SD) Resource Records (RRs) as defined in "DNS-Based | |||
an ACP discovery protocol. because it relies on link-local IP | Service Discovery" [RFC6763] was a key contender as an ACP discovery | |||
multicast, it does operates at the subnet level, and is also found in | protocol. Because it relies on link-local IP multicast, it operates | |||
L2 switches. The authors of this document are not aware of mDNS | at the subnet level and is also found in L2 switches. The authors of | |||
implementation that terminate their mDNS messages on L2 ports instead | this document are not aware of an mDNS implementation that terminates | |||
of the subnet level. If mDNS was used as the ACP discovery mechanism | its mDNS messages on L2 ports instead of on the subnet level. If | |||
on an ACP capable (L3)/L2 switch as outlined in Section 7, then this | mDNS was used as the ACP discovery mechanism on an ACP-capable | |||
would be necessary to implement. It is likely that termination of | (L3)/L2 switch as outlined in Section 7, then this would be necessary | |||
mDNS messages could only be applied to all mDNS messages from such a | to implement. It is likely that termination of mDNS messages could | |||
port, which would then make it necessary to software forward any non- | only be applied to all mDNS messages from such a port, which would | |||
ACP related mDNS messages to maintain prior non-ACP mDNS | then make it necessary to software forward any non-ACP-related mDNS | |||
functionality. Adding support for ACP into such L2 switches with | messages to maintain prior non-ACP mDNS functionality. Adding | |||
mDNS could therefore create regression problems for prior mDNS | support for ACP to such L2 switches with mDNS could therefore create | |||
functionality on those nodes. With low performance of software | regression problems for prior mDNS functionality on those nodes. | |||
forwarding in many L2 switches, this could also make the ACP risky to | With low performance of software forwarding in many L2 switches, this | |||
support on such L2 switches. | could also make the ACP risky to support on such L2 switches. | |||
A.3.3. Why DULL GRASP | A.3.3. Why DULL GRASP? | |||
LLDP was not considered because of the above mentioned issues. mDNS | LLDP was not considered because of the above mentioned issues. mDNS | |||
was not selected because of the above L2 mDNS considerations and | was not selected because of the above L2 mDNS considerations and | |||
because of the following additional points: | because of the following additional points. | |||
If mDNS was not already existing in a node, it would be more work to | If mDNS was not already existing in a node, it would be more work to | |||
implement than DULL GRASP, and if an existing implementation of mDNS | implement than DULL GRASP, and if an existing implementation of mDNS | |||
was used, it would likely be more code space than a separate | was used, it would likely be more code space than a separate | |||
implementation of DULL GRASP or a shared implementation of DULL GRASP | implementation of DULL GRASP or a shared implementation of DULL GRASP | |||
and GRASP in the ACP. | and GRASP in the ACP. | |||
A.4. Choice of routing protocol (RPL) | A.4. Choice of Routing Protocol (RPL) | |||
This section motivates why RPL - "IPv6 Routing Protocol for Low-Power | This section motivates why RPL ("IPv6 Routing Protocol for Low-Power | |||
and Lossy Networks ([RFC6550] was chosen as the default (and in this | and Lossy Networks [RFC6550]) was chosen as the default (and in this | |||
specification only) routing protocol for the ACP. The choice and | specification only) routing protocol for the ACP. The choice and | |||
above explained profile was derived from a pre-standard | above explained profile were derived from a pre-standard | |||
implementation of ACP that was successfully deployed in operational | implementation of ACP that was successfully deployed in operational | |||
networks. | networks. | |||
Requirements for routing in the ACP are: | The requirements for routing in the ACP are the following: | |||
* Self-management: The ACP must build automatically, without human | * Self-management: the ACP must build automatically, without human | |||
intervention. Therefore, routing protocol must also work | intervention. Therefore, the routing protocol must also work | |||
completely automatically. RPL is a simple, self-managing | completely automatically. RPL is a simple, self-managing | |||
protocol, which does not require zones or areas; it is also self- | protocol, which does not require zones or areas; it is also self- | |||
configuring, since configuration is carried as part of the | configuring, since configuration is carried as part of the | |||
protocol (see Section 6.7.6 of [RFC6550]). | protocol (see Section 6.7.6 of [RFC6550]). | |||
* Scale: The ACP builds over an entire domain, which could be a | ||||
* Scale: the ACP builds over an entire domain, which could be a | ||||
large enterprise or service provider network. The routing | large enterprise or service provider network. The routing | |||
protocol must therefore support domains of 100,000 nodes or more, | protocol must therefore support domains of 100,000 nodes or more, | |||
ideally without the need for zoning or separation into areas. RPL | ideally without the need for zoning or separation into areas. RPL | |||
has this scale property. This is based on extensive use of | has this scale property. This is based on extensive use of | |||
default routing. | default routing. | |||
* Low resource consumption: The ACP supports traditional network | ||||
* Low resource consumption: the ACP supports traditional network | ||||
infrastructure, thus runs in addition to traditional protocols. | infrastructure, thus runs in addition to traditional protocols. | |||
The ACP, and specifically the routing protocol must have low | The ACP, and specifically the routing protocol, must have low | |||
resource consumption both in terms of memory and CPU requirements. | resource consumption requirements, both in terms of memory and | |||
Specifically, at edge nodes, where memory and CPU are scarce, | CPU. Specifically, at edge nodes, where memory and CPU are | |||
consumption should be minimal. RPL builds a DODAG, where the main | scarce, consumption should be minimal. RPL builds a DODAG, where | |||
resource consumption is at the root of the DODAG. The closer to | the main resource consumption is at the root of the DODAG. The | |||
the edge of the network, the less state needs to be maintained. | closer to the edge of the network, the less state needs to be | |||
This adapts nicely to the typical network design. Also, all | maintained. This adapts nicely to the typical network design. | |||
changes below a common parent node are kept below that parent | Also, all changes below a common parent node are kept below that | |||
node. | parent node. | |||
* Support for unstructured address space: In the Autonomic | ||||
Networking Infrastructure, node addresses are identifiers, and may | * Support for unstructured address space: in the ANI, node addresses | |||
not be assigned in a topological way. Also, nodes may move | are identifiers, they and may not be assigned in a topological | |||
topologically, without changing their address. Therefore, the | way. Also, nodes may move topologically, without changing their | |||
routing protocol must support completely unstructured address | address. Therefore, the routing protocol must support completely | |||
space. RPL is specifically made for mobile ad-hoc networks, with | unstructured address space. RPL is specifically made for mobile, | |||
no assumptions on topologically aligned addressing. | ad hoc networks, with no assumptions on topologically aligned | |||
* Modularity: To keep the initial implementation small, yet allow | addressing. | |||
later for more complex methods, it is highly desirable that the | ||||
* Modularity: to keep the initial implementation small, yet allow | ||||
for more complex methods later, it is highly desirable that the | ||||
routing protocol has a simple base functionality, but can import | routing protocol has a simple base functionality, but can import | |||
new functional modules if needed. RPL has this property with the | new functional modules if needed. RPL has this property with the | |||
concept of "objective function", which is a plugin to modify | concept of "Objective Function", which is a plugin to modify | |||
routing behavior. | routing behavior. | |||
* Extensibility: Since the Autonomic Networking Infrastructure is a | ||||
new concept, it is likely that changes in the way of operation | * Extensibility: since the ANI is a new concept, it is likely that | |||
will happen over time. RPL allows for new objective functions to | changes to the way of operation will happen over time. RPL allows | |||
be introduced later, which allow changes to the way the routing | for new Objective Functions to be introduced later, which allow | |||
protocol creates the DAGs. | changes to the way the routing protocol creates the DAGs. | |||
* Multi-topology support: It may become necessary in the future to | ||||
* Multi-topology support: it may become necessary in the future to | ||||
support more than one DODAG for different purposes, using | support more than one DODAG for different purposes, using | |||
different objective functions. RPL allow for the creation of | different Objective Functions. RPL allow for the creation of | |||
several parallel DODAGs, should this be required. This could be | several parallel DODAGs should this be required. This could be | |||
used to create different topologies to reach different roots. | used to create different topologies to reach different roots. | |||
* No need for path optimization: RPL does not necessarily compute | * No need for path optimization: RPL does not necessarily compute | |||
the optimal path between any two nodes. However, the ACP does not | the optimal path between any two nodes. However, the ACP does not | |||
require this today, since it carries mainly non-delay-sensitive | require this today, since it carries mainly delay-insensitive | |||
feedback loops. It is possible that different optimization | feedback loops. It is possible that different optimization | |||
schemes become necessary in the future, but RPL can be expanded | schemes will become necessary in the future, but RPL can be | |||
(see point "Extensibility" above). | expanded (see "Extensibility" above). | |||
A.5. ACP Information Distribution and multicast | A.5. ACP Information Distribution and Multicast | |||
IP multicast is not used by the ACP because the ANI (Autonomic | IP multicast is not used by the ACP because the ANI itself does not | |||
Networking Infrastructure) itself does not require IP multicast but | require IP multicast but only service announcement/discovery. Using | |||
only service announcement/discovery. Using IP multicast for that | IP multicast for that would have made it necessary to develop a zero- | |||
would have made it necessary to develop a zero-touch auto configuring | touch autoconfiguring solution for ASM (Any Source Multicast - the | |||
solution for ASM (Any Source Multicast - the original form of IP | original form of IP multicast defined in "Host extensions for IP | |||
multicast defined in [RFC1112]), which would be quite complex and | multicasting" [RFC1112]), which would be quite complex and difficult | |||
difficult to justify. One aspect of complexity where no attempt at a | to justify. One aspect of complexity where no attempt at a solution | |||
solution has been described in IETF documents is the automatic- | has been described in IETF documents is the automatic selection of | |||
selection of routers that should be PIM Sparse Mode (PIM-SM) | routers that should be PIM Sparse Mode (PIM-SM) Rendezvous Points | |||
Rendezvous Points (RPs) (see [RFC7761]). The other aspects of | (RPs) (see "Protocol Independent Multicast - Sparse Mode (PIM-SM): | |||
complexity are the implementation of MLD ([RFC4604]), PIM-SM and | Protocol Specification (Revised)" [RFC7761]). The other aspects of | |||
Anycast-RP (see [RFC4610]). If those implementations already exist | complexity are the implementation of MLD ("Using Internet Group | |||
in a product, then they would be very likely tied to accelerated | Management Protocol Version 3 (IGMPv3) and Multicast Listener | |||
forwarding which consumes hardware resources, and that in return is | Discovery Protocol Version 2 (MLDv2) for Source-Specific Multicast" | |||
difficult to justify as a cost of performing only service discovery. | [RFC4604]), PIM-SM, and Anycast-RP (see "Anycast-RP Using Protocol | |||
Independent Multicast (PIM)" [RFC4610]). If those implementations | ||||
already exist in a product, then they would be very likely tied to | ||||
accelerated forwarding, which consumes hardware resources, and that | ||||
in turn is difficult to justify as a cost of performing only service | ||||
discovery. | ||||
Some future ASA may need high performance in-network data | Some future ASA may need high-performance, in-network data | |||
replication. That is the case when the use of IP multicast is | replication. That is the case when the use of IP multicast is | |||
justified. Such an ASA can then use service discovery from ACP | justified. Such an ASA can then use service discovery from ACP | |||
GRASP, and then they do not need ASM but only SSM (Source Specific | GRASP, and then they do not need ASM but only SSM (see | |||
Multicast, see [RFC4607]) for the IP multicast replication. SSM | "Source-Specific Multicast for IP" [RFC4607]) for the IP multicast | |||
itself can simply be enabled in the Data-Plane (or even in an update | replication. SSM itself can simply be enabled in the data plane (or | |||
to the ACP) without any other configuration than just enabling it on | even in an update to the ACP) without any configuration other than | |||
all nodes and only requires a simpler version of MLD (see [RFC5790]). | just enabling it on all nodes, and it only requires a simpler version | |||
of MLD (see "Lightweight Internet Group Management Protocol Version 3 | ||||
(IGMPv3) and Multicast Listener Discovery Version 2 (MLDv2) | ||||
Protocols" [RFC5790]). | ||||
LSP (Link State Protocol) based IGP routing protocols typically have | IGP routing protocols based on LSP (Link State Protocol) typically | |||
a mechanism to flood information, and such a mechanism could be used | have a mechanism to flood information, and such a mechanism could be | |||
to flood GRASP objectives by defining them to be information of that | used to flood GRASP objectives by defining them to be information of | |||
IGP. This would be a possible optimization in future variations of | that IGP. This would be a possible optimization in future variations | |||
the ACP that do use an LSP routing protocol. Note though that such a | of the ACP that do use an LSP-based routing protocol. Note though | |||
mechanism would not work easily for GRASP M_DISCOVERY messages which | that such a mechanism would not work easily for GRASP M_DISCOVERY | |||
are intelligently (constrained) flooded not across the whole ACP, but | messages, which are intelligently (constrained) flooded not across | |||
only up to a node where a responder is found. We do expect that many | the whole ACP, but only up to a node where a responder is found. We | |||
future services in ASA will have only few consuming ASA, and for | expect that many future services in the ASA will have only a few | |||
those cases, M_DISCOVERY is the more efficient method than flooding | consuming ASAs, and for those cases, the M_DISCOVERY method is more | |||
across the whole domain. | efficient than flooding across the whole domain. | |||
Because the ACP uses RPL, one desirable future extension is to use | Because the ACP uses RPL, one desirable future extension is to use | |||
RPLs existing notion of DODAG, which are loop-free distribution | RPL's existing notion of DODAG, which are loop-free distribution | |||
trees, to make GRASP flooding more efficient both for M_FLOOD and | trees, to make GRASP flooding more efficient both for M_FLOOD and | |||
M_DISCOVERY. See Section 6.13.5 how this will be specifically | M_DISCOVERY. See Section 6.13.5 for how this will be specifically | |||
beneficial when using NBMA interfaces. This is not currently | beneficial when using NBMA interfaces. This is not currently | |||
specified in this document because it is not quite clear yet what | specified in this document because it is not quite clear yet what | |||
exactly the implications are to make GRASP flooding depend on RPL | exactly the implications are to make GRASP flooding depend on RPL | |||
DODAG convergence and how difficult it would be to let GRASP flooding | DODAG convergence and how difficult it would be to let GRASP flooding | |||
access the DODAG information. | access the DODAG information. | |||
A.6. CAs, domains and routing subdomains | A.6. CAs, Domains, and Routing Subdomains | |||
There is a wide range of setting up different ACP solution by | There is a wide range of setting up different ACP solutions by | |||
appropriately using CAs and the domain and rsub elements in the acp- | appropriately using CAs and the domain and rsub elements in the acp- | |||
node-name in the domain certificate. We summarize these options here | node-name in the domain certificate. We summarize these options here | |||
as they have been explained in different parts of the document in | as they have been explained in different parts of the document and | |||
before and discuss possible and desirable extensions: | discuss possible and desirable extensions. | |||
An ACP domain is the set of all ACP nodes that can authenticate each | An ACP domain is the set of all ACP nodes that can authenticate each | |||
other as belonging to the same ACP network using the ACP domain | other as belonging to the same ACP network using the ACP domain | |||
membership check (Section 6.2.3). GRASP inside the ACP is run across | membership check (Section 6.2.3). GRASP inside the ACP is run across | |||
all transitively connected ACP nodes in a domain. | all transitively connected ACP nodes in a domain. | |||
The rsub element in the acp-node-name permits the use of addresses | The rsub element in the acp-node-name permits the use of addresses | |||
from different ULA prefixes. One use case is to create multiple | from different ULA prefixes. One use case is the creation of | |||
physical networks that initially may be separated with one ACP domain | multiple physical networks that initially may be separated with one | |||
but different routing subdomains, so that all nodes can mutual trust | ACP domain but different routing subdomains, so that all nodes can | |||
their ACP certificates (not depending on rsub) and so that they could | mutually trust their ACP certificates (not depending on rsub) and so | |||
connect later together into a contiguous ACP network. | that they could connect later together into a contiguous ACP network. | |||
One instance of such a use case is an ACP for regions interconnected | One instance of such a use case is an ACP for regions interconnected | |||
via a non-ACP enabled core, for example due to the absence of product | via a non-ACP enabled core, for example, due to the absence of | |||
support for ACP on the core nodes. ACP connect configurations as | product support for ACP on the core nodes. ACP connect | |||
defined in this document can be used to extend and interconnect those | configurations as defined in this document can be used to extend and | |||
ACP islands to the NOC and merge them into a single ACP when later | interconnect those ACP islands to the NOC and merge them into a | |||
that product support gap is closed. | single ACP when later that product support gap is closed. | |||
Note that RPL scales very well. It is not necessary to use multiple | Note that RPL scales very well. It is not necessary to use multiple | |||
routing subdomains to scale ACP domains in a way that would be | routing subdomains to scale ACP domains in a way that would be | |||
required if other routing protocols where used. They exist only as | required if other routing protocols where used. They exist only as | |||
options for the above mentioned reasons. | options for the above mentioned reasons. | |||
If different ACP domains are to be created that should not allow to | If ACP domains need to be created that are not allowed to connect to | |||
connect to each other by default, these ACP domains simply need to | each other by default, simply use different domain elements in the | |||
have different domain elements in the acp-node-name. These domain | acp-node-name. These domain elements can be arbitrary, including | |||
elements can be arbitrary, including subdomains of one another: | subdomains of one another: domains "example.com" and | |||
Domains "example.com" and "research.example.com" are separate domains | "research.example.com" are separate domains if both are domain | |||
if both are domain elements in the acp-node-name of certificates. | elements in the acp-node-name of certificates. | |||
It is not necessary to have a separate CA for different ACP domains: | It is not necessary to have a separate CA for different ACP domains: | |||
an operator can use a single CA to sign certificates for multiple ACP | an operator can use a single CA to sign certificates for multiple ACP | |||
domains that are not allowed to connect to each other because the | domains that are not allowed to connect to each other because the | |||
checks for ACP adjacencies includes comparison of the domain part. | checks for ACP adjacencies include the comparison of the domain part. | |||
If multiple independent networks choose the same domain name but had | If multiple, independent networks chose the same domain name but had | |||
their own CA, these would not form a single ACP domain because of CA | their own CAs, these would not form a single ACP domain because of CA | |||
mismatch. Therefore, there is no problem in choosing domain names | mismatch. Therefore, there is no problem in choosing domain names | |||
that are potentially also used by others. Nevertheless it is highly | that are potentially also used by others. Nevertheless, it is highly | |||
recommended to use domain names that one can have high probability to | recommended to use domain names that have a high probability of being | |||
be unique. It is recommended to use domain names that start with a | unique. It is recommended to use domain names that start with a DNS | |||
DNS domain names owned by the assigning organization and unique | domain name owned by the assigning organization and unique within it, | |||
within it. For example, "acp.example.com" if you own "example.com". | for example, "acp.example.com" if you own "example.com". | |||
A.7. Intent for the ACP | A.7. Intent for the ACP | |||
Intent is the architecture component of autonomic networks according | Intent is the architecture component of Autonomic Networks according | |||
to [I-D.ietf-anima-reference-model] that allows operators to issue | to [RFC8993] that allows operators to issue policies to the network. | |||
policies to the network. Its applicability for use is quite flexible | Its applicability for use is quite flexible and freeform, with | |||
and freeform, with potential applications including policies flooded | potential applications including policies flooded across ACP GRASP | |||
across ACP GRASP and interpreted on every ACP node. | and interpreted on every ACP node. | |||
One concern for future definitions of Intent solutions is the problem | One concern for future definitions of Intent solutions is the problem | |||
of circular dependencies when expressing Intent policies about the | of circular dependencies when expressing Intent policies about the | |||
ACP itself. | ACP itself. | |||
For example, Intent could indicate the desire to build an ACP across | For example, Intent could indicate the desire to build an ACP across | |||
all domains that have a common parent domain (without relying on the | all domains that have a common parent domain (without relying on the | |||
rsub/routing-subdomain solution defined in this document). For | rsub/routing-subdomain solution defined in this document): ACP nodes | |||
example, ACP nodes with domain "example.com", "access.example.com", | with the domains "example.com", "access.example.com", | |||
"core.example.com" and "city.core.example.com" should all establish | "core.example.com", and "city.core.example.com" should all establish | |||
one single ACP. | one single ACP. | |||
If each domain has its own source of Intent, then the Intent would | If each domain has its own source of Intent, then the Intent would | |||
simply have to allow adding the peer domains TA and domain names to | simply have to allow adding the peer domain's TA and domain names to | |||
the parameters for the ACP domain membership check (Section 6.2.3) so | the parameters for the ACP domain membership check (Section 6.2.3) so | |||
that nodes from those other domains are accepted as ACP peers. | that nodes from those other domains are accepted as ACP peers. | |||
If this Intent was to be originated only from one domain, it could | If this Intent was to be originated only from one domain, it could | |||
likely not be made to work because the other domains will not build | likely not be made to work because the other domains will not build | |||
any ACP connection amongst each other, whether they use the same or | any ACP connections amongst each other, whether they use the same or | |||
different CA due to the ACP domain membership check. | different CA due to the ACP domain membership check. | |||
If the domains use the same CA one could change the ACP setup to | If the domains use the same CA, one could change the ACP setup to | |||
permit for the ACP to be established between two ACP nodes with | permit the ACP to be established between two ACP nodes with different | |||
different acp-domain-names, but only for the purpose of disseminating | acp-domain-names, but only for the purpose of disseminating limited | |||
limited information, such as Intent, but not to set up full ACP | information, such as Intent, but not to set up full ACP connectivity, | |||
connectivity, specifically not RPL routing and passing of arbitrary | specifically not RPL routing and passing of arbitrary GRASP | |||
GRASP information. Unless the Intent policies permit this to happen | information, unless the Intent policies permit this to happen across | |||
across domain boundaries. | domain boundaries. | |||
This type of approach where the ACP first allows Intent to operate | This type of approach, where the ACP first allows Intent to operate | |||
and only then sets up the rest of ACP connectivity based on Intent | and only then sets up the rest of ACP connectivity based on Intent | |||
policy could also be used to enable Intent policies that would limit | policy, could also be used to enable Intent policies that would limit | |||
functionality across the ACP inside a domain, as long as no policy | functionality across the ACP inside a domain, as long as no policy | |||
would disturb the distribution of Intent. For example, to limit | would disturb the distribution of Intent, for example, to limit | |||
reachability across the ACP to certain type of nodes or locations of | reachability across the ACP to certain types of nodes or locations of | |||
nodes. | nodes. | |||
A.8. Adopting ACP concepts for other environments | A.8. Adopting ACP Concepts for Other Environments | |||
The ACP as specified in this document is very explicit about the | The ACP as specified in this document is very explicit about the | |||
choice of options to allow interoperable implementations. The | choice of options to allow interoperable implementations. The | |||
choices made may not be the best for all environments, but the | choices made may not be the best for all environments, but the | |||
concepts used by the ACP can be used to build derived solutions: | concepts used by the ACP can be used to build derived solutions. | |||
The ACP specifies the use of ULA and deriving its prefix from the | The ACP specifies the use of ULA and the derivation of its prefix | |||
domain name so that no address allocation is required to deploy the | from the domain name so that no address allocation is required to | |||
ACP. The ACP will equally work not using ULA but any other /48 IPv6 | deploy the ACP. The ACP will equally work using any other /48 IPv6 | |||
prefix. This prefix could simply be a configuration of the ACP | prefix and not ULA. This prefix could simply be a configuration of | |||
registrars (for example when using BRSKI) to enroll the domain | the ACP registrars (for example, when using BRSKI) to enroll the | |||
certificates - instead of the ACP registrar deriving the /48 ULA | domain certificates, instead of the ACP registrar deriving the /48 | |||
prefix from the AN domain name. | ULA prefix from the AN domain name. | |||
Some solutions may already have an auto-addressing scheme, for | Some solutions may already have an auto-addressing scheme, for | |||
example derived from existing unique device identifiers (e.g., MAC | example, derived from existing, unique device identifiers (e.g., MAC | |||
addresses). In those cases it may not be desirable to assign | addresses). In those cases, it may not be desirable to assign | |||
addresses to devices via the ACP address information field in the way | addresses to devices via the ACP address information field in the way | |||
described in this document. The certificate may simply serve to | described in this document. The certificate may simply serve to | |||
identify the ACP domain, and the address field could be omitted. The | identify the ACP domain, and the address field could be omitted. The | |||
only fix required in the remaining way the ACP operate is to define | only fix required in the remaining way the ACP operates is to define | |||
another element in the domain certificate for the two peers to decide | another element in the domain certificate for the two peers to decide | |||
who is the Decider and who is the Follower during secure channel | who is the Decider and who is the Follower during secure channel | |||
building. Note though that future work may leverage the acp address | building. Note though that future work may leverage the ACP address | |||
to authenticate "ownership" of the address by the device. If the | to authenticate "ownership" of the address by the device. If the ACP | |||
address used by a device is derived from some pre-existing permanent | address used by a device is derived from some preexisting, permanent | |||
local ID (such as MAC address), then it would be useful to store that | local ID (such as MAC address), then it would be useful to store that | |||
address in the certificate using the format of the access address | local ID also in the certificate. | |||
information field or in a similar way. | ||||
The ACP is defined as a separate VRF because it intends to support | The ACP is defined as a separate VRF because it intends to support | |||
well managed networks with a wide variety of configurations. | well-managed networks with a wide variety of configurations. | |||
Therefore, reliable, configuration-indestructible connectivity cannot | Therefore, reliable, configuration-indestructible connectivity cannot | |||
be achieved from the Data-Plane itself. In solutions where all | be achieved from the data plane itself. In solutions where all | |||
transit connectivity impacting functions are fully automated | functions that impact transit connectivity are fully automated | |||
(including security), indestructible and resilient, it would be | (including security), indestructible, and resilient, it would be | |||
possible to eliminate the need for the ACP to be a separate VRF. | possible to eliminate the need for the ACP to be a separate VRF. | |||
Consider the most simple example system in which there is no separate | Consider the most simple example system in which there is no separate | |||
Data-Plane, but the ACP is the Data-Plane. Add BRSKI, and it becomes | data plane, but the ACP is the data plane. Add BRSKI, and it becomes | |||
a fully autonomic network - except that it does not support automatic | a fully Autonomic Network -- except that it does not support | |||
addressing for user equipment. This gap can then be closed for | automatic addressing for user equipment. This gap can then be | |||
example by adding a solution derived from | closed, for example, by adding a solution derived from "Autonomic | |||
[I-D.ietf-anima-prefix-management]. | IPv6 Edge Prefix Management in Large-Scale Networks" [RFC8992]. | |||
TCP/TLS as the protocols to provide reliability and security to GRASP | TCP/TLS as the protocols to provide reliability and security to GRASP | |||
in the ACP may not be the preferred choice in constrained networks. | in the ACP may not be the preferred choice in constrained networks. | |||
For example, CoAP/DTLS (Constrained Application Protocol) may be | For example, CoAP/DTLS (Constrained Application Protocol) may be | |||
preferred where they are already used, allowing to reduce the | preferred where they are already used, which would reduce the | |||
additional code space footprint for the ACP on those devices. Hop- | additional code space footprint for the ACP on those devices. Hop- | |||
by-hop reliability for ACP GRASP messages could be made to support | by-hop reliability for ACP GRASP messages could be made to support | |||
protocols like DTLS by adding the same type of negotiation as defined | protocols like DTLS by adding the same type of negotiation as defined | |||
in this document for ACP secure channel protocol negotiation. End- | in this document for ACP secure channel protocol negotiation. In | |||
to-end GRASP connections can be made to select their transport | future ACP extensions meant to better support constrained devices, | |||
protocol in future extensions of the ACP meant to better support | end-to-end GRASP connections can be made to select their transport | |||
constrained devices by indicating the supported transport protocols | protocol by indicating the supported transport protocols (e.g. TLS/ | |||
(e.g. TLS/DTLS) via GRASP parameters of the GRASP objective through | DTLS) via GRASP parameters of the GRASP objective through which the | |||
which the transport endpoint is discovered. | transport endpoint is discovered. | |||
The routing protocol RPL used for the ACP does explicitly not | RPL, the routing protocol used for the ACP, explicitly does not | |||
optimize for shortest paths and fastest convergence. Variations of | optimize for shortest paths and fastest convergence. Variations of | |||
the ACP may want to use a different routing protocol or introduce | the ACP may want to use a different routing protocol or introduce | |||
more advanced RPL profiles. | more advanced RPL profiles. | |||
Variations such as what routing protocol to use, or whether to | Variations such as which routing protocol to use, or whether to | |||
instantiate an ACP in a VRF or (as suggested above) as the actual | instantiate an ACP in a VRF or (as suggested above) as the actual | |||
Data-Plane, can be automatically chosen in implementations built to | data plane, can be automatically chosen in implementations built to | |||
support multiple options by deriving them from future parameters in | support multiple options by deriving them from future parameters in | |||
the certificate. Parameters in certificates should be limited to | the certificate. Parameters in certificates should be limited to | |||
those that would not need to be changed more often than certificates | those that would not need to be changed more often than that | |||
would need to be updated anyhow; Or by ensuring that these parameters | certificates would need to be updated, or it should be ensured that | |||
can be provisioned before the variation of an ACP is activated in a | these parameters can be provisioned before the variation of an ACP is | |||
node. Using BRSKI, this could be done for example as additional | activated in a node. Using BRSKI, this could be done, for example, | |||
follow-up signaling directly after the certificate enrollment, still | as additional follow-up signaling directly after the certificate | |||
leveraging the BRSKI TLS connection and therefore not introducing any | enrollment, still leveraging the BRSKI TLS connection and therefore | |||
additional connectivity requirements. | not introducing any additional connectivity requirements. | |||
Last but not least, secure channel protocols including their | Last but not least, secure channel protocols including their | |||
encapsulations are easily added to ACP solutions. ACP hop-by-hop | encapsulations are easily added to ACP solutions. ACP hop-by-hop | |||
network layer secure channels could also be replaced by end-to-end | network-layer secure channels could also be replaced by end-to-end | |||
security plus other means for infrastructure protection. Any future | security plus other means for infrastructure protection. Any future | |||
network OAM should always use end-to-end security anyhow and can | network OAM should always use end-to-end security. By leveraging the | |||
leverage the domain certificates and is therefore not dependent on | domain certificates, it would not be dependent on security provided | |||
security to be provided for by ACP secure channels. | by ACP secure channels. | |||
A.9. Further (future) options | A.9. Further (Future) Options | |||
A.9.1. Auto-aggregation of routes | A.9.1. Auto-Aggregation of Routes | |||
Routing in the ACP according to this specification only leverages the | Routing in the ACP according to this specification only leverages the | |||
standard RPL mechanism of route optimization, e.g. keeping only | standard RPL mechanism of route optimization, e.g., keeping only the | |||
routes that are not towards the RPL root. This is known to scale to | routes that are not towards the RPL root. This is known to scale to | |||
networks with 20,000 or more nodes. There is no auto-aggregation of | networks with 20,000 or more nodes. There is no auto-aggregation of | |||
routes for /48 ULA prefixes (when using rsub in the acp-node-name) | routes for /48 ULA prefixes (when using rsub in the acp-node-name) | |||
and/or Zone-ID based prefixes. | and/or Zone-ID based prefixes. | |||
Automatic assignment of Zone-ID and auto-aggregation of routes could | Automatic assignment of Zone-ID and auto-aggregation of routes could | |||
be achieved for example by configuring zone-boundaries, announcing | be achieved, for example, by configuring zone boundaries, announcing | |||
via GRASP into the zones the zone parameters (zone-ID and /48 ULA | via GRASP into the zones the zone parameters (Zone-ID and /48 ULA | |||
prefix) and auto-aggregating routes on the zone-boundaries. Nodes | prefix), and auto-aggregating routes on the zone boundaries. Nodes | |||
would assign their Zone-ID and potentially even /48 prefix based on | would assign their Zone-ID and potentially even the /48 prefix based | |||
the GRASP announcements. | on the GRASP announcements. | |||
A.9.2. More options for avoiding IPv6 Data-Plane dependencies | A.9.2. More Options for Avoiding IPv6 Data Plane Dependencies | |||
As described in Section 6.13.2, the ACP depends on the Data-Plane to | As described in Section 6.13.2, the ACP depends on the data plane to | |||
establish IPv6 link-local addressing on interfaces. Using a separate | establish IPv6 link-local addressing on interfaces. Using a separate | |||
MAC address for the ACP allows to fully isolate the ACP from the | MAC address for the ACP allows the full isolation of the ACP from the | |||
Data-Plane in a way that is compatible with this specification. It | data plane in a way that is compatible with this specification. It | |||
is also an ideal option when using Single-root input/output | is also an ideal option when using single-root input/output | |||
virtualization (SR-IOV - see https://en.wikipedia.org/wiki/Single- | virtualization (SR-IOV, see [SR]) in an implementation to isolate the | |||
root_input/output_virtualization) in an implementation to isolate the | ||||
ACP because different SR-IOV interfaces use different MAC addresses. | ACP because different SR-IOV interfaces use different MAC addresses. | |||
When additional MAC address(es) are not available, separation of the | When additional MAC address(es) are not available, separation of the | |||
ACP could be done at different demux points. The same subnet | ACP could be done at different demux points. The same subnet | |||
interface could have a separate IPv6 interface for the ACP and Data- | interface could have a separate IPv6 interface for the ACP and data | |||
Plane and therefore separate link-local addresses for both, where the | plane and therefore separate link-local addresses for both, where the | |||
ACP interface is non-configurable on the Data-Plane. This too would | ACP interface is not configurable on the data plane. This too would | |||
be compatible with this specification and not impact | be compatible with this specification and not impact | |||
interoperability. | interoperability. | |||
An option that would require additional specification is to use a | An option that would require additional specification is to use a | |||
different Ethertype from 0x86DD (IPv6) to encapsulate IPv6 packets | different Ethertype from 0x86DD (IPv6) to encapsulate IPv6 packets | |||
for the ACP. This would be a similar approach as used for IP | for the ACP. This would be a similar approach as used for IP | |||
authentication packets in [IEEE-802.1X] which use the Extensible | authentication packets in [IEEE-802.1X], which uses the Extensible | |||
Authentication Protocol over Local Area Network (EAPoL) ethertype | Authentication Protocol over Local Area Network (EAPoL) Ethertype | |||
(0x88A2). | (0x88A2). | |||
Note that in the case of ANI nodes, all the above considerations | Note that in the case of ANI nodes, all of the above considerations | |||
equally apply to the encapsulation of BRSKI packets including GRASP | equally apply to the encapsulation of BRSKI packets including GRASP | |||
used for BRSKI. | used for BRSKI. | |||
A.9.3. ACP APIs and operational models (YANG) | A.9.3. ACP APIs and Operational Models (YANG) | |||
Future work should define YANG ([RFC7950]) data model and/or node | Future work should define a YANG data model [RFC7950] and/or node- | |||
internal APIs to monitor and manage the ACP. | internal APIs to monitor and manage the ACP. | |||
Support for the ACP Adjacency Table (Section 6.3) and ACP GRASP need | Support for the ACP adjacency table (Section 6.3) and ACP GRASP needs | |||
to be included into such model/API. | to be included in such model and/or API. | |||
A.9.4. RPL enhancements | A.9.4. RPL Enhancements | |||
..... USA ...... ..... Europe ...... | ..... USA ...... ..... Europe ...... | |||
NOC1 NOC2 | NOC1 NOC2 | |||
| | | | | | |||
| metric 100 | | | metric 100 | | |||
ACP1 --------------------------- ACP2 . | ACP1 --------------------------- ACP2 . | |||
| | . WAN | | | . WAN | |||
| metric 10 metric 20 | . Core | | metric 10 metric 20 | . Core | |||
| | . | | | . | |||
ACP3 --------------------------- ACP4 . | ACP3 --------------------------- ACP4 . | |||
| metric 100 | | | metric 100 | | |||
| | . | | | . | |||
| | . Sites | | | . Sites | |||
ACP10 ACP11 . | ACP10 ACP11 . | |||
Figure 19: Dual NOC | Figure 17: Dual NOC | |||
The profile for RPL specified in this document builds only one | The profile for RPL specified in this document builds only one | |||
spanning-tree path set to a root, typically a registrar in one NOC. | spanning-tree path set to a root, typically a registrar in one NOC. | |||
In the presence of multiple NOCs, routing toward the non-root NOCs | In the presence of multiple NOCs, routing toward the non-root NOCs | |||
may be suboptimal. Figure 19 shows an extreme example. Assuming | may be suboptimal. Figure 17 shows an extreme example. Assuming | |||
that node ACP1 becomes the RPL root, traffic between ACP11 and NOC2 | that node ACP1 becomes the RPL root, traffic between ACP11 and NOC2 | |||
will pass through ACP4-ACP3-ACP1-ACP2 instead of ACP4-ACP2 because | will pass through ACP4-ACP3-ACP1-ACP2 instead of ACP4-ACP2 because | |||
the RPL calculated DODAG/routes are shortest paths towards the RPL | the RPL-calculated DODAG and routes are shortest paths towards the | |||
root. | RPL root. | |||
To overcome these limitations, extensions/modifications to the RPL | To overcome these limitations, extensions and/or modifications to the | |||
profile can provide optimality for multiple NOCs. This requires | RPL profile can optimize for multiple NOCs. This requires utilizing | |||
utilizing Data-Plane artifact including IPinIP encap/decap on ACP | data plane artifacts, including IP-in-IP encapsulation/decapsulation | |||
routers and processing of IPv6 RPI headers. Alternatively, (Src,Dst) | on ACP routers and processing of IPv6 RPI headers. Alternatively, | |||
routing table entries could be used. | (Src,Dst) routing table entries could be used. | |||
Flooding of ACP GRASP messages can be further constrained and | Flooding of ACP GRASP messages can be further constrained and | |||
therefore optimized by flooding only via links that are part of the | therefore optimized by flooding only via links that are part of the | |||
RPL DODAG. | RPL DODAG. | |||
A.9.5. Role assignments | A.9.5. Role Assignments | |||
ACP connect is an explicit mechanism to "leak" ACP traffic explicitly | ACP connect is an explicit mechanism to "leak" ACP traffic explicitly | |||
(for example in a NOC). It is therefore also a possible security gap | (for example, in a NOC). It is therefore also a possible security | |||
when it is easy to enable ACP connect on arbitrary compromised ACP | gap when it is easy to enable ACP connect on arbitrary compromised | |||
nodes. | ACP nodes. | |||
One simple solution is to define an extension in the ACP certificates | One simple solution is to define an extension in the ACP | |||
ACP information field indicating the permission for ACP connect to be | certificate's ACP information field indicating the permission for ACP | |||
configured on that ACP node. This could similarly be done to decide | connect to be configured on that ACP node. This could similarly be | |||
whether a node is permitted to be a registrar or not. | done to decide whether a node is permitted to be a registrar or not. | |||
Tying the permitted "roles" of an ACP node to the ACP certificate | Tying the permitted "roles" of an ACP node to the ACP certificate | |||
provides fairly strong protection against misconfiguration, but is | provides fairly strong protection against misconfiguration, but it is | |||
still subject to code modifications. | still subject to code modifications. | |||
Another interesting role to assign to certificates is that of a NOC | Another interesting role to assign to certificates is that of a NOC | |||
node. This would allow to limit certain type of connections such as | node. This would allow the limiting of certain types of connections, | |||
OAM TLS connections to only NOC initiator or responders. | such as OAM TLS connections to only the NOC initiators or responders. | |||
A.9.6. Autonomic L3 transit | A.9.6. Autonomic L3 Transit | |||
In this specification, the ACP can only establish autonomic | In this specification, the ACP can only establish autonomic | |||
connectivity across L2 hops and only explicitly configured options to | connectivity across L2 hops but requires non-autonomic configuration | |||
tunnel across L3. Future work should specify mechanisms to | to tunnel across L3 paths. Future work should specify mechanisms to | |||
automatically tunnel ACP across L3 networks. A hub&spoke option | automatically tunnel ACP across L3 networks. A hub-and-spoke option | |||
would allow to tunnel across the Internet to a cloud or central | would allow tunneling across the Internet to a cloud or central | |||
instance of the ACP, a peer-to-peer tunneling mechanism could tunnel | instance of the ACP; a peer-to-peer tunneling mechanism could tunnel | |||
ACP islands across an L3VPN infrastructure. | ACP islands across an L3VPN infrastructure. | |||
A.9.7. Diagnostics | A.9.7. Diagnostics | |||
Section 9.1 describes diagnostics options that can be done without | Section 9.1 describes diagnostics options that can be applied without | |||
changing the external, interoperability affecting characteristics of | changing the external, interoperability-affecting characteristics of | |||
ACP implementations. | ACP implementations. | |||
Even better diagnostics of ACP operations is possible with additional | Even better diagnostics of ACP operations are possible with | |||
signaling extensions, such as: | additional signaling extensions, such as the following: | |||
1. Consider if LLDP should be a recommended functionality for ANI | 1. Consider if LLDP should be a recommended functionality for ANI | |||
devices to improve diagnostics, and if so, which information | devices to improve diagnostics, and if so, which information | |||
elements it should signal (noting that such information is | elements it should signal (noting that such information is | |||
conveyed in an insecure manner). Includes potentially new | conveyed in an insecure manner). This includes potentially new | |||
information elements. | information elements. | |||
2. In alternative to LLDP, A DULL GRASP diagnostics objective could | ||||
be defined to carry these information elements. | 2. As an alternative to LLDP, a DULL GRASP diagnostics objective | |||
could be defined to carry these information elements. | ||||
3. The IDevID certificate of BRSKI pledges should be included in the | 3. The IDevID certificate of BRSKI pledges should be included in the | |||
selected insecure diagnostics option. This may be undesirable | selected insecure diagnostics option. This may be undesirable | |||
when exposure of device information is seen as too much of a | when exposure of device information is seen as too much of a | |||
security issue (ability to deduce possible attack vectors from | security issue (the ability to deduce possible attack vectors | |||
device model for example). | from device model, for example). | |||
4. A richer set of diagnostics information should be made available | 4. A richer set of diagnostics information should be made available | |||
via the secured ACP channels, using either single-hop GRASP or | via the secured ACP channels, using either single-hop GRASP or | |||
network wide "topology discovery" mechanisms. | network-wide "topology discovery" mechanisms. | |||
A.9.8. Avoiding and dealing with compromised ACP nodes | A.9.8. Avoiding and Dealing with Compromised ACP Nodes | |||
Compromised ACP nodes pose the biggest risk to the operations of the | Compromised ACP nodes pose the biggest risk to the operations of the | |||
network. The most common type of compromise is leakage of | network. The most common types of compromise are the leakage of | |||
credentials to manage/configure the device and the application of | credentials to manage and/or configure the device and the application | |||
malicious configuration including the change of access credentials, | of malicious configuration, including the change of access | |||
but not the change of software. Most of today's networking equipment | credentials, but not the change of software. Most of today's | |||
should have secure boot/software infrastructure anyhow, so attacks | networking equipment should have secure boot/software infrastructure | |||
that introduce malicious software should be a lot harder. | anyhow, so attacks that introduce malicious software should be a lot | |||
harder. | ||||
The most important aspect of security design against these type of | The most important aspect of security design against these types of | |||
attacks is to eliminate password based configuration access methods | attacks is to eliminate password-based configuration access methods | |||
and instead rely on certificate based credentials handed out only to | and instead rely on certificate-based credentials handed out only to | |||
nodes where it is clear that the private keys cannot leak. This | nodes where it is clear that the private keys cannot leak. This | |||
limits unexpected propagation of credentials. | limits unexpected propagation of credentials. | |||
If password based credentials to configure devices still need to be | If password-based credentials to configure devices still need to be | |||
supported, they must not be locally configurable, but only be | supported, they must not be locally configurable, but only be | |||
remotely provisioned or verified (through protocols like RADIUS or | remotely provisioned or verified (through protocols like RADIUS or | |||
Diameter), and there must be no local configuration permitting to | Diameter), and there must be no local configuration permitting the | |||
change these authentication mechanisms, but ideally they should be | change of these authentication mechanisms, but ideally they should be | |||
autoconfiguring across the ACP. See | autoconfiguring across the ACP. See [NOC-AUTOCONFIG]. | |||
[I-D.eckert-anima-noc-autoconfig]. | ||||
Without physical access to the compromised device, attackers with | Without physical access to the compromised device, attackers with | |||
access to configuration should not be able to break the ACP | access to configuration should not be able to break the ACP | |||
connectivity, even when they can break or otherwise manipulate | connectivity, even when they can break or otherwise manipulate | |||
(spoof) the Data-Plane connectivity through configuration. To | (spoof) the data plane connectivity through configuration. To | |||
achieve this, it is necessary to avoid providing configuration | achieve this, it is necessary to avoid providing configuration | |||
options for the ACP, such as enabling/disabling it on interfaces. | options for the ACP, such as enabling/disabling it on interfaces. | |||
For example, there could be an ACP configuration that locks down the | For example, there could be an ACP configuration that locks down the | |||
current ACP config unless factory reset is done. | current ACP configuration unless factory reset is done. | |||
With such means, the valid administration has the best chances to | With such means, the valid administration has the best chances to | |||
maintain access to ACP nodes, discover malicious configuration though | maintain access to ACP nodes, to discover malicious configuration | |||
ongoing configuration tracking from central locations for example, | though ongoing configuration tracking from central locations, for | |||
and to react accordingly. | example, and to react accordingly. | |||
The primary reaction is withdrawal/change of credentials, terminate | The primary reaction is to withdraw or change credentials, terminate | |||
malicious existing management sessions and fixing the configuration. | malicious existing management sessions, and fix the configuration. | |||
Ensuring that management sessions using invalidated credentials are | Ensuring that management sessions using invalidated credentials are | |||
terminated automatically without recourse will likely require new | terminated automatically without recourse will likely require new | |||
work. | work. | |||
Only when these steps are not feasible would it be necessary to | Only when these steps are infeasible, would it be necessary to revoke | |||
revoke or expire the ACP certificate credentials and consider the | or expire the ACP certificate credentials and consider the node | |||
node kicked off the network - until the situation can be further | kicked off the network until the situation can be further rectified, | |||
rectified, likely requiring direct physical access to the node. | likely requiring direct physical access to the node. | |||
Without extensions, compromised ACP nodes can only be removed from | Without extensions, compromised ACP nodes can only be removed from | |||
the ACP at the speed of CRL/OCSP information refresh or expiry (and | the ACP at the speed of CRL/OCSP information refresh or expiry (and | |||
non-removal) of short lived certificates. Future extensions to the | non-removal) of short-lived certificates. Future extensions to the | |||
ACP could for example use GRASP flooding distribution of triggered | ACP could, for example, use the GRASP flooding distribution of | |||
updates of CRL/OCSP or explicit removal indication of the compromised | triggered updates of CRL/OCSP or the explicit removal indication of | |||
nodes domain certificate. | the compromised node's domain certificate. | |||
A.9.9. Detecting ACP secure channel downgrade attacks | A.9.9. Detecting ACP Secure Channel Downgrade Attacks | |||
The following text proposes a mechanism to protect against downgrade | The following text proposes a mechanism to protect against downgrade | |||
attacks without introducing a new specialized UPFRONT GRASP secure | attacks without introducing a new specialized GRASP secure channel | |||
channel mechanism. Instead, it relies on running GRASP after | mechanism. Instead, it relies on running GRASP after establishing a | |||
establishing a secure channel protocol to verify if the established | secure channel protocol to verify if the established secure channel | |||
secure channel option could have been the result of a MITM downgrade | option could have been the result of a MITM downgrade attack. | |||
attack: | ||||
MITM attackers can force downgrade attacks for ACP secure channel | MITM attackers can force downgrade attacks for ACP secure channel | |||
selection by filtering/modifying DULL GRASP messages and/or actual | selection by filtering and/or modifying DULL GRASP messages and/or | |||
secure channel data packets. For example, if at some point in time | actual secure channel data packets. For example, if at some point in | |||
DTLS traffic could be easier decrypted than traffic of IKEv2, the | time, DTLS traffic could be more easily decrypted than traffic of | |||
MITM could filter all IKEv2 packets to force ACP nodes to use DTLS | IKEv2, the MITM could filter all IKEv2 packets to force ACP nodes to | |||
(assuming the ACP nodes in question supported both DTLS and IKEv2). | use DTLS (assuming that the ACP nodes in question supported both DTLS | |||
and IKEv2). | ||||
For cases where such MITM attacks are not capable to inject malicious | For cases where such MITM attacks are not capable of injecting | |||
traffic (but only to decrypt the traffic), a downgrade attack could | malicious traffic (but only of decrypting the traffic), a downgrade | |||
be discovered after a secure channel connection is established, for | attack could be discovered after a secure channel connection is | |||
example by use of the following type of mechanism: | established, for example, by using the following type of mechanism. | |||
After the secure channel connection is established, the two ACP peers | After the secure channel connection is established, the two ACP peers | |||
negotiate via an appropriate (To Be Defined) GRASP negotiation which | negotiate, via an appropriate (to be defined) GRASP negotiation, | |||
ACP secure channel protocol should have been selected between them | which ACP secure channel protocol should have been selected between | |||
(in the absence of a MITM attacker). This negotiation would have to | them (in the absence of a MITM attacker). This negotiation would | |||
signal the DULL GRASP announced ACP secure channel options by each | signal the ACP secure channel options announced by DULL GRASP by each | |||
peer followed by an announcement of the preferred secure channel | peer followed by an announcement of the preferred secure channel | |||
protocol by the ACP peer that is the Decider in the secure channel | protocol by the ACP peer that is the Decider in the secure channel | |||
setup, e.g. the ACP peer that is deciding which secure channel | setup, i.e., the ACP peer that decides which secure channel protocol | |||
protocol to pick. If that chosen secure channel protocol is | to use. If that chosen secure channel protocol is different from the | |||
different from the one that actually was chosen, then this mismatch | one that actually was chosen, then this mismatch is an indication | |||
is an indication that there is a MITM attacker or other similar issue | that there is a MITM attacker or other similar issue (e.g., a | |||
(firewall prohibiting the use of specific protocols) that caused a | firewall prohibiting the use of specific protocols) that caused a | |||
non-preferred secure channel protocol to be chosen. This discovery | non-preferred secure channel protocol to be chosen. This discovery | |||
could then result in mitigation options such as logging and ensuing | could then result in mitigation options such as logging and ensuing | |||
investigations. | investigations. | |||
Appendix B. Unfinished considerations (To Be Removed From RFC) | Acknowledgements | |||
[RFC-Editor: This whole appendix B. and its subsections to be removed | ||||
for the RFC. | ||||
This appendix contains unfinished considerations that are removed | ||||
from the RFC, they are maintained in this draft as a log of the state | ||||
of discussion and point of reference. Together with this appendix, | ||||
also the references pointing to it are marked to be removed from the | ||||
RFC because no consensus could be reached that a self-reference to a | ||||
draft version of the RFC is an appropriate breadcrumb to point to | ||||
unfinished considerations. | ||||
The authors plan to move these considerations into a new target | ||||
informational draft, please look for draft-eckert-anima-acp- | ||||
considerations. | ||||
B.1. Considerations for improving secure channel negotiation | ||||
Proposed text from Benjamin Kaduk. It is suggested to replace the | ||||
text of appendix A.6 in previous versions of this draft (up to | ||||
version 29). | ||||
The discovery procedure in this specification for low-level ACP | ||||
channel support by layer-2 peers involves DULL GRASP and attempting | ||||
(usually in parallel) to establish all supported channel types, | ||||
learning the peer ACP address and correspondingly the assignment of | ||||
Decider and Follower roles, and tearing down all channels other than | ||||
the one preferred by the Decider. This procedure, in general, | ||||
becomes resource intensive as the number of possible secure channels | ||||
grows; even worse, under some threat models, the security of the | ||||
discovery result is only as strong as the weakest supported secure | ||||
channel protocol. Furthermore, the unilateral determination of | ||||
"best" channel type by the Decider does not result in the optimal | ||||
outcome in all possible scenarios. | ||||
This situation is tolerable at present, with only two secure channels | ||||
(DTLS and IPsec) defined, but long-term agility in the vein of | ||||
[BCP201] will require the introduction of an alternate discovery/ | ||||
negotiation procedure. While IKEv2 is the IETF standard protocol for | ||||
negotiating security associations, it currently does not have a | ||||
defined mechanism flexible enough to negotiate the parameters needed | ||||
for, e.g., an ACP DTLS channel, let alone for allowing ACP peers to | ||||
indicate their preference metrics for channel selection. Such a | ||||
mechanism or mechanisms could be defined, but if ACP agility requires | ||||
introducing a new channel type, for example MacSec, IKEv2 would again | ||||
need to be extended in order to negotiate an ACP MacSec association. | ||||
Making ACP channel agility dependent on updates to IKEv2 is likely to | ||||
result in obstacles due to different timescales of evolution, since | ||||
IKEv2 implementations help form the core of Internet-scale security | ||||
infrastructure and must accordingly be robust and thoroughly tested. | ||||
Accordingly, a dedicated ACP channel negotiation mechanism is | ||||
appropriate as a way to provide long-term algorithm and secure- | ||||
channel protocol agility. Such a mechanism is not currently defined, | ||||
but one possible design is as follows. A new DULL GRASP objective is | ||||
defined to indicate the GRASP-over-TLS channel, which is by | ||||
definition preferred to other channel types (including DTLS and | ||||
IPsec). When both peers advertise support for GRASP-over-TLS, GRASP- | ||||
over-TLS must run to completion before other channel types are | ||||
attempted. The GRASP-over-TLS channel performs the necessary | ||||
negotiation by establishing a TLS connection between the peers and | ||||
using that connection to secure a dedicated GRASP instance for | ||||
negotiating supported channel types and preference metrics. This | ||||
provides a rich language for determining what secure channel protocol | ||||
to use for the ACP link while taking into account the capabilities | ||||
and preferences of the ACP peers, all protected by the security of | ||||
the TLS channel. | ||||
B.2. ACP address verification | ||||
The AcpNodeName of most ACP nodes contains in the acp-address field | ||||
the primary ACP address to be used by the node for end-to-end | ||||
connections across ACP secure channels. Nevertheless, there is no | ||||
verification of an ACP peers address specified in this document. | ||||
This section explains the current understanding as to why this is not | ||||
done. | ||||
Not all ACP nodes will have an actual IPv6 address in the acp-address | ||||
field of their AcpNodeName. Those who do not include nodes that do | ||||
not support ACP secure channels, such as pre-existing NOC equipment | ||||
that only connects to the ACP via ACP connect interfaces. Likewise, | ||||
future ACP node type that may want to have their Node-ID not be | ||||
defined by an ACP registrar, but differently cannot have the ACP | ||||
address be provided in their ACP certificate where it would be | ||||
defined by the registrar. In result, any scheme that would rely on | ||||
verification of the acp-address in the ACP certificate would only | ||||
apply to a subset of ACP nodes. | ||||
The transport stack network layer address used for ACP secure | ||||
channels is not the acp-address. For automatically established ACP | ||||
secure channels, it is a link-local IPv6 address. For explicitly | ||||
configured ACP secure channels (to reach across non ACP L3 network | ||||
segments), the address is any IPv4 or IPv6 address routable to that | ||||
remote destination. | ||||
When the acp-address is actually used across the ACP, it can only be | ||||
verified by a peer when the peer has the certificate of the peer. | ||||
Unless further higher layer mechanisms are developed on top of the | ||||
ACP (for example via ASA), the only mechanism to access a peers ACP | ||||
certificate is for secure connections in which the peers certificates | ||||
are exchanged and cryptographically verified, e.g. TLS and DTLS. | ||||
Initially, it is expected that the ACP will carry many legacy network | ||||
management control connections that unfortunately not end-to-end | ||||
authenticated but that are solely protected by being carried across | ||||
the ACP secure channels. ACP address verification therefore cannot | ||||
be used for such connections without additional higher layer | ||||
components. | ||||
For the remaining (TLS/DTLS) connections for which address | ||||
verification can be used, the main question is: what additional | ||||
benefit would address verification provide? | ||||
The main value that transport stack network layer address | This work originated from an Autonomic Networking project at Cisco | |||
verification could provide for these type of connections would be the | Systems, which started in early 2010. Many people contributed to | |||
discovery of on-path transport proxies. For example, in case of | this project and the idea of the Autonomic Control Plane, amongst | |||
BRSKI, pledges connect to an ACP registrar via an ASA implementing a | whom (in alphabetical order): Ignas Bagdonas, Parag Bhide, Balaji BL, | |||
TCP proxy because the pledge itself has at that point in time no ACP | Alex Clemm, Yves Hertoghs, Bruno Klauser, Max Pritikin, Michael | |||
certificate valid to build ACP secure channels and hence needs to | Richardson, and Ravi Kumar Vadapalli. | |||
rely on such a proxy. This is one example where such a TCP proxy is | ||||
required and not a form of attack. | ||||
In general, on path TCP proxies could be a form of attack, but it | Special thanks to Brian Carpenter, Elwyn Davies, Joel Halpern, and | |||
stands to reason, that an attacker that manages to enable a malicious | Sheng Jiang for their thorough reviews. | |||
TCP proxy could likely equally build a transparent proxy not changing | ||||
the network layer addresses. Only when the attacker operates off- | ||||
path would this option not be possible. Such attacks could indeed be | ||||
possible: An impaired ACP node could announce itself as another | ||||
service instance for a service whose utilization it wants to attack. | ||||
It could then attempt to look like a valid server by simply TCP | ||||
proxying the clients connections to a valid server and then attack | ||||
the connections passing through it (passive decrypting or passive | ||||
fingerprint analysis). But like the BRSKI proxy, this behavior could | ||||
be perfectly legitimate and not an attack. For example, TCP has in | ||||
the past often suffered from performance issues across difficult | ||||
(high capacity, high loss) paths, and TCP proxies where and are being | ||||
used simply as a tool for isolating such path segments (such as a | ||||
WAN), and providing caching and local-retransmit of in-transit | ||||
packets, reducing the effective path segment capacity. | ||||
As explained elsewhere in this document already, considerations for | Many thanks to Ben Kaduk, Roman Danyliw, and Eric Rescorla for their | |||
these type of attack are therefore outside the scope of the ACP but | thorough SEC AD reviews, Russ Housley and Erik Kline for their | |||
fundametal to further design of the ASA infrastructure. Beyond | reviews, and to Valery Smyslov, Tero Kivinen, Paul Wouters, and Yoav | |||
distinguishing whether a TCP proxy would be beneficial or malicious, | Nir for review of IPsec and IKEv2 parameters and helping to | |||
the even more fundamental question is how to determine from a | understand those and other security protocol details better. Thanks | |||
multitude of service announcements which instance is the most | to Carsten Bormann for CBOR/CDDL help. | |||
trustworthy and functionally best. In the Internet/web, this | ||||
question is NOT solved inside the network but through off-net human | ||||
interaction ("trust me, the best search engine is www.<insert-your- | ||||
personal-recommendation>.com"). | ||||
B.3. Public CA considerations | Further input, review, or suggestions were received from Rene Struik, | |||
Benoit Claise, William Atwood, and Yongkang Zhang. | ||||
Public CAs are outside the scope of this document for the following | Contributors | |||
reasons. This appendix describes the current state of understanding | ||||
for those interested to consider utilizing public CA for the ACP in | ||||
the future. | ||||
If public CA where to be used to enroll ACP nodes and act as TA, this | For all things GRASP including validation code, ongoing document text | |||
would require a model in which the public CA would be able to assert | support, and technical input: | |||
the ownership of the information requested in the certificate, | ||||
especially the AcpNodeName, for example mitigated by the domain | ||||
registrar(s). Due to the use of a new, ACP unique encoding of the | ||||
AcpNodeName, there is no mechanism for public CA to do so. More | ||||
importantly though, isolation between ACPs of disjoint operated ACPs | ||||
is achieved in the current ACP design through disjoint TA. A public | ||||
CA is in general based on a single (set of) TA shared across all | ||||
certificates signed by the CA. | ||||
Due to the fact that the ACP domain membership check also validates | Brian Carpenter | |||
that a peers domain name in the AcpNodeName matches that of the ACP | School of Computer Science | |||
node itself, it would be possible to use the same TA across disjoint | University of Auckland | |||
ACP domains, but the security and attack implications of such an | PB 92019 | |||
approach are beyond the scope of this document. | Auckland 1142 | |||
New Zealand | ||||
The use of ULA addresses in the AcpNodeName is another novel aspect | Email: brian.e.carpenter@gmail.com | |||
for certificates from a possible public CA. Typically, ULA addresses | ||||
are not meant to be signed by a public CA when carried in an address | ||||
field, because there is no ownership of a particular ULA address in | ||||
the scope of the Internet, which is what public CA operate on. | ||||
Nevertheless, the ULA addresses used by the ACP are scoped to be | For RPL contributions and all things BRSKI/bootstrap including | |||
valid only within the confines of a specific ACP as defined by the | validation code, ongoing document text support, and technical input: | |||
domain name in the AcpNodeName. However, this understanding has not | ||||
been reviewed or accepted by any bodies responsible for policies of | ||||
public CA. | ||||
Because in this specification, ACPs are isolated from each other | Michael C. Richardson | |||
primarily by their TA, when a public CA would intend to sign ACP | Sandelman Software Works | |||
certificates and using a single TA to sign TA of ACP certificates | ||||
from different operators/domain, it could do so by ensuring that the | ||||
domain name in the AcpNodeName was a globally owned DNS ACP domain | ||||
name of the organization, and beyond that, it would need to validate | ||||
that the ACP registrar of that domain who is mitigating the | ||||
enrollment is authorized to vouch for the ownership of the acp- | ||||
address within the scope of the ACP domain name. | ||||
B.4. Hardening DULL GRASP considerations | Email: mcr+ietf@sandelman.ca | |||
URI: http://www.sandelman.ca/mcr/ | ||||
DULL GRASP suffers from similar type of DoS attacks as many link- | For the RPL technology choices and text: | |||
local multicast discovery protocols, for example mDNS. Attackers on | ||||
a subnet may be able to inject malicious DULL GRASP messages that are | ||||
indistinguishable from non-malicious DULL GRASP messages to create | ||||
Denial-of-Service (DoS) attacks that force ACP nodes to attempt many | ||||
unsuccessful ACP secure channel connections. | ||||
When an ACP node sees multiple AN_ACP objectives for the same secure | Pascal Thubert | |||
channel protocol on different transport addresses, it could prefer | Cisco Systems, Inc | |||
connecting via the well-known transport address if the secure channel | Building D | |||
method has one, such as UDP port 500 for IKEv2. For protocols such | 45 Allee des Ormes - BP1200 | |||
as (ACP secure channel over) DTLS for which there are no well defined | 06254 Mougins - Sophia Antipolis | |||
port number, this heuristic does not provide benefits though. | France | |||
DoS attack with port numbers can also be eliminated by relying on | Phone: +33 497 23 26 34 | |||
well known-port numbers implied by the GRASP method-name. For | Email: pthubert@cisco.com | |||
example, a future service name of "DTLSacp" could be defined to be | ||||
associated only to a newly to be assigned well known UDP port for ACP | ||||
over DTLS, and the port number in the GRASP transport address | ||||
information would be ignored. Note that there is already a variety | ||||
of ports assigned to specific protocols over DTLS by IANA, so | ||||
especially for DTLS this would not be uncommon. | ||||
Authors' Addresses | Authors' Addresses | |||
Toerless Eckert (editor) | Toerless Eckert (editor) | |||
Futurewei Technologies Inc. USA | Futurewei Technologies Inc. USA | |||
2330 Central Expy | 2330 Central Expy | |||
Santa Clara, 95050 | Santa Clara, CA 95050 | |||
United States of America | United States of America | |||
Email: tte+ietf@cs.fau.de | Email: tte+ietf@cs.fau.de | |||
Michael H. Behringer (editor) | Michael H. Behringer (editor) | |||
Email: michael.h.behringer@gmail.com | Email: michael.h.behringer@gmail.com | |||
Steinthor Bjarnason | Steinthor Bjarnason | |||
Arbor Networks | Arbor Networks | |||
2727 South State Street, Suite 200 | 2727 South State Street, Suite 200 | |||
Ann Arbor, MI 48104 | Ann Arbor, MI 48104 | |||
United States | United States of America | |||
Email: sbjarnason@arbor.net | Email: sbjarnason@arbor.net | |||
End of changes. 1195 change blocks. | ||||
4933 lines changed or deleted | 4111 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |