| 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/ | ||||