< draft-ietf-anima-autonomic-control-plane-28.txt | draft-ietf-anima-autonomic-control-plane-29.txt > | |||
---|---|---|---|---|
ANIMA WG T. Eckert, Ed. | ANIMA WG T. Eckert, Ed. | |||
Internet-Draft Futurewei USA | Internet-Draft Futurewei USA | |||
Intended status: Standards Track M. Behringer, Ed. | Intended status: Standards Track M. Behringer, Ed. | |||
Expires: January 29, 2021 | Expires: March 14, 2021 | |||
S. Bjarnason | S. Bjarnason | |||
Arbor Networks | Arbor Networks | |||
July 28, 2020 | September 10, 2020 | |||
An Autonomic Control Plane (ACP) | An Autonomic Control Plane (ACP) | |||
draft-ietf-anima-autonomic-control-plane-28 | draft-ietf-anima-autonomic-control-plane-29 | |||
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 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) | |||
skipping to change at page 1, line 43 ¶ | skipping to change at page 1, line 43 ¶ | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on January 29, 2021. | This Internet-Draft will expire on March 14, 2021. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2020 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 | Provisions Relating to IETF Documents (https://trustee.ietf.org/ | |||
(https://trustee.ietf.org/license-info) in effect on the date of | license-info) in effect on the date of publication of this document. | |||
publication of this document. Please review these documents | Please review these documents carefully, as they describe your rights | |||
carefully, as they describe your rights and restrictions with respect | and restrictions with respect to this document. Code Components | |||
to this document. Code Components extracted from this document must | extracted from this document must include Simplified BSD License text | |||
include Simplified BSD License text as described in Section 4.e of | as described in Section 4.e of the Trust Legal Provisions and are | |||
the Trust Legal Provisions and are provided without warranty as | provided without warranty as described in the Simplified BSD License. | |||
described in the Simplified BSD License. | ||||
Table of Contents | Table of Contents | |||
1. Introduction (Informative) . . . . . . . . . . . . . . . . . 6 | 1. Introduction (Informative) . . . . . . . . . . . . . . . . . 6 | |||
1.1. Applicability and Scope . . . . . . . . . . . . . . . . . 9 | 1.1. Applicability and Scope . . . . . . . . . . . . . . . . . 9 | |||
2. Acronyms and Terminology (Informative) . . . . . . . . . . . 10 | 2. Acronyms and Terminology (Informative) . . . . . . . . . . . 10 | |||
3. Use Cases for an Autonomic Control Plane (Informative) . . . 17 | 3. Use Cases for an Autonomic Control Plane (Informative) . . . 16 | |||
3.1. An Infrastructure for Autonomic Functions . . . . . . . . 17 | 3.1. An Infrastructure for Autonomic Functions . . . . . . . . 16 | |||
3.2. Secure Bootstrap over a not configured Network . . . . . 17 | 3.2. Secure Bootstrap over a not configured Network . . . . . 17 | |||
3.3. Data-Plane Independent Permanent Reachability . . . . . . 18 | 3.3. Data-Plane Independent Permanent Reachability . . . . . . 17 | |||
4. Requirements (Informative) . . . . . . . . . . . . . . . . . 19 | 4. Requirements (Informative) . . . . . . . . . . . . . . . . . 19 | |||
5. Overview (Informative) . . . . . . . . . . . . . . . . . . . 20 | 5. Overview (Informative) . . . . . . . . . . . . . . . . . . . 20 | |||
6. Self-Creation of an Autonomic Control Plane (ACP) (Normative) 22 | 6. Self-Creation of an Autonomic Control Plane (ACP) | |||
6.1. ACP Domain, Certificate and Network . . . . . . . . . . . 23 | (Normative) . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
6.1.1. ACP Certificates . . . . . . . . . . . . . . . . . . 24 | 6.1. Requirements for use of Transport Layer Security (TLS) . 22 | |||
6.1.2. ACP Certificate AcpNodeName . . . . . . . . . . . . . 26 | 6.2. ACP Domain, Certificate and Network . . . . . . . . . . . 23 | |||
6.1.2.1. AcpNodeName ASN.1 Module . . . . . . . . . . . . 29 | 6.2.1. ACP Certificates . . . . . . . . . . . . . . . . . . 24 | |||
6.1.3. ACP domain membership check . . . . . . . . . . . . . 30 | 6.2.2. ACP Certificate AcpNodeName . . . . . . . . . . . . . 26 | |||
6.1.3.1. Realtime clock and Time Validation . . . . . . . 32 | 6.2.2.1. AcpNodeName ASN.1 Module . . . . . . . . . . . . 29 | |||
6.1.4. Trust Anchors (TA) . . . . . . . . . . . . . . . . . 33 | 6.2.3. ACP domain membership check . . . . . . . . . . . . . 30 | |||
6.1.5. Certificate and Trust Anchor Maintenance . . . . . . 34 | 6.2.3.1. Realtime clock and Time Validation . . . . . . . 32 | |||
6.1.5.1. GRASP objective for EST server . . . . . . . . . 35 | 6.2.4. Trust Anchors (TA) . . . . . . . . . . . . . . . . . 33 | |||
6.1.5.2. Renewal . . . . . . . . . . . . . . . . . . . . . 36 | 6.2.5. Certificate and Trust Anchor Maintenance . . . . . . 34 | |||
6.1.5.3. Certificate Revocation Lists (CRLs) . . . . . . . 37 | 6.2.5.1. GRASP objective for EST server . . . . . . . . . 35 | |||
6.1.5.4. Lifetimes . . . . . . . . . . . . . . . . . . . . 37 | 6.2.5.2. Renewal . . . . . . . . . . . . . . . . . . . . . 37 | |||
6.1.5.5. Re-enrollment . . . . . . . . . . . . . . . . . . 38 | 6.2.5.3. Certificate Revocation Lists (CRLs) . . . . . . . 37 | |||
6.1.5.6. Failing Certificates . . . . . . . . . . . . . . 39 | 6.2.5.4. Lifetimes . . . . . . . . . . . . . . . . . . . . 38 | |||
6.2. ACP Adjacency Table . . . . . . . . . . . . . . . . . . . 40 | 6.2.5.5. Re-enrollment . . . . . . . . . . . . . . . . . . 38 | |||
6.3. Neighbor Discovery with DULL GRASP . . . . . . . . . . . 40 | 6.2.5.6. Failing Certificates . . . . . . . . . . . . . . 40 | |||
6.4. Candidate ACP Neighbor Selection . . . . . . . . . . . . 44 | 6.3. ACP Adjacency Table . . . . . . . . . . . . . . . . . . . 40 | |||
6.5. Channel Selection . . . . . . . . . . . . . . . . . . . . 44 | 6.4. Neighbor Discovery with DULL GRASP . . . . . . . . . . . 41 | |||
6.6. Candidate ACP Neighbor verification . . . . . . . . . . . 48 | 6.5. Candidate ACP Neighbor Selection . . . . . . . . . . . . 45 | |||
6.7. Security Association (Secure Channel) protocols . . . . . 48 | 6.6. Channel Selection . . . . . . . . . . . . . . . . . . . . 45 | |||
6.7.1. General considerations . . . . . . . . . . . . . . . 49 | 6.7. Candidate ACP Neighbor verification . . . . . . . . . . . 49 | |||
6.7.2. Common requirements . . . . . . . . . . . . . . . . . 49 | 6.8. Security Association (Secure Channel) protocols . . . . . 49 | |||
6.7.3. ACP via IPsec . . . . . . . . . . . . . . . . . . . . 51 | 6.8.1. General considerations . . . . . . . . . . . . . . . 50 | |||
6.7.3.1. Native IPsec . . . . . . . . . . . . . . . . . . 51 | 6.8.2. Common requirements . . . . . . . . . . . . . . . . . 51 | |||
6.7.3.1.1. RFC8221 (IPsec/ESP) . . . . . . . . . . . . . 51 | 6.8.3. ACP via IPsec . . . . . . . . . . . . . . . . . . . . 52 | |||
6.7.3.1.2. RFC8247 (IKEv2) . . . . . . . . . . . . . . . 53 | 6.8.3.1. Native IPsec . . . . . . . . . . . . . . . . . . 52 | |||
6.8.3.1.1. RFC8221 (IPsec/ESP) . . . . . . . . . . . . . 53 | ||||
6.7.3.2. IPsec with GRE encapsulation . . . . . . . . . . 54 | 6.8.3.1.2. RFC8247 (IKEv2) . . . . . . . . . . . . . . . 54 | |||
6.7.4. ACP via DTLS . . . . . . . . . . . . . . . . . . . . 55 | 6.8.3.2. IPsec with GRE encapsulation . . . . . . . . . . 55 | |||
6.7.5. ACP Secure Channel Profiles . . . . . . . . . . . . . 56 | 6.8.4. ACP via DTLS . . . . . . . . . . . . . . . . . . . . 56 | |||
6.8. GRASP in the ACP . . . . . . . . . . . . . . . . . . . . 57 | 6.8.5. ACP Secure Channel Profiles . . . . . . . . . . . . . 58 | |||
6.8.1. GRASP as a core service of the ACP . . . . . . . . . 57 | 6.9. GRASP in the ACP . . . . . . . . . . . . . . . . . . . . 59 | |||
6.8.2. ACP as the Security and Transport substrate for GRASP 58 | 6.9.1. GRASP as a core service of the ACP . . . . . . . . . 59 | |||
6.8.2.1. Discussion . . . . . . . . . . . . . . . . . . . 61 | 6.9.2. ACP as the Security and Transport substrate for | |||
6.9. Context Separation . . . . . . . . . . . . . . . . . . . 62 | GRASP . . . . . . . . . . . . . . . . . . . . . . . . 59 | |||
6.10. Addressing inside the ACP . . . . . . . . . . . . . . . . 62 | 6.9.2.1. Discussion . . . . . . . . . . . . . . . . . . . 62 | |||
6.10.1. Fundamental Concepts of Autonomic Addressing . . . . 62 | 6.10. Context Separation . . . . . . . . . . . . . . . . . . . 63 | |||
6.10.2. The ACP Addressing Base Scheme . . . . . . . . . . . 64 | 6.11. Addressing inside the ACP . . . . . . . . . . . . . . . . 63 | |||
6.10.3. ACP Zone Addressing Sub-Scheme (ACP-Zone) . . . . . 65 | 6.11.1. Fundamental Concepts of Autonomic Addressing . . . . 63 | |||
6.10.4. ACP Manual Addressing Sub-Scheme (ACP-Manual) . . . 67 | 6.11.2. The ACP Addressing Base Scheme . . . . . . . . . . . 65 | |||
6.10.5. ACP Vlong Addressing Sub-Scheme (ACP-VLong-8/ACP- | 6.11.3. ACP Zone Addressing Sub-Scheme (ACP-Zone) . . . . . 67 | |||
VLong-16 . . . . . . . . . . . . . . . . . . . . . . 68 | 6.11.4. ACP Manual Addressing Sub-Scheme (ACP-Manual) . . . 68 | |||
6.10.6. Other ACP Addressing Sub-Schemes . . . . . . . . . . 69 | 6.11.5. ACP Vlong Addressing Sub-Scheme (ACP-VLong-8/ | |||
6.10.7. ACP Registrars . . . . . . . . . . . . . . . . . . . 70 | ACP-VLong-16 . . . . . . . . . . . . . . . . . . . . 69 | |||
6.10.7.1. Use of BRSKI or other Mechanism/Protocols . . . 70 | 6.11.6. Other ACP Addressing Sub-Schemes . . . . . . . . . . 70 | |||
6.10.7.2. Unique Address/Prefix allocation . . . . . . . . 71 | 6.11.7. ACP Registrars . . . . . . . . . . . . . . . . . . . 71 | |||
6.10.7.3. Addressing Sub-Scheme Policies . . . . . . . . . 72 | 6.11.7.1. Use of BRSKI or other Mechanism/Protocols . . . 71 | |||
6.10.7.4. Address/Prefix Persistence . . . . . . . . . . . 73 | 6.11.7.2. Unique Address/Prefix allocation . . . . . . . . 72 | |||
6.10.7.5. Further Details . . . . . . . . . . . . . . . . 73 | 6.11.7.3. Addressing Sub-Scheme Policies . . . . . . . . . 72 | |||
6.11. Routing in the ACP . . . . . . . . . . . . . . . . . . . 73 | 6.11.7.4. Address/Prefix Persistence . . . . . . . . . . . 74 | |||
6.11.1. ACP RPL Profile . . . . . . . . . . . . . . . . . . 74 | 6.11.7.5. Further Details . . . . . . . . . . . . . . . . 74 | |||
6.11.1.1. Overview . . . . . . . . . . . . . . . . . . . . 74 | 6.12. Routing in the ACP . . . . . . . . . . . . . . . . . . . 74 | |||
6.11.1.1.1. Single Instance . . . . . . . . . . . . . . 74 | 6.12.1. ACP RPL Profile . . . . . . . . . . . . . . . . . . 75 | |||
6.11.1.1.2. Reconvergence . . . . . . . . . . . . . . . 75 | 6.12.1.1. Overview . . . . . . . . . . . . . . . . . . . . 75 | |||
6.11.1.2. RPL Instances . . . . . . . . . . . . . . . . . 76 | 6.12.1.1.1. Single Instance . . . . . . . . . . . . . . 75 | |||
6.11.1.3. Storing vs. Non-Storing Mode . . . . . . . . . . 76 | 6.12.1.1.2. Reconvergence . . . . . . . . . . . . . . . 76 | |||
6.11.1.4. DAO Policy . . . . . . . . . . . . . . . . . . . 76 | 6.12.1.2. RPL Instances . . . . . . . . . . . . . . . . . 77 | |||
6.11.1.5. Path Metric . . . . . . . . . . . . . . . . . . 76 | 6.12.1.3. Storing vs. Non-Storing Mode . . . . . . . . . . 77 | |||
6.11.1.6. Objective Function . . . . . . . . . . . . . . . 76 | 6.12.1.4. DAO Policy . . . . . . . . . . . . . . . . . . . 77 | |||
6.11.1.7. DODAG Repair . . . . . . . . . . . . . . . . . . 76 | 6.12.1.5. Path Metric . . . . . . . . . . . . . . . . . . 77 | |||
6.11.1.8. Multicast . . . . . . . . . . . . . . . . . . . 77 | 6.12.1.6. Objective Function . . . . . . . . . . . . . . . 77 | |||
6.11.1.9. Security . . . . . . . . . . . . . . . . . . . . 77 | 6.12.1.7. DODAG Repair . . . . . . . . . . . . . . . . . . 77 | |||
6.11.1.10. P2P communications . . . . . . . . . . . . . . . 77 | 6.12.1.8. Multicast . . . . . . . . . . . . . . . . . . . 78 | |||
6.11.1.11. IPv6 address configuration . . . . . . . . . . . 77 | 6.12.1.9. Security . . . . . . . . . . . . . . . . . . . . 78 | |||
6.11.1.12. Administrative parameters . . . . . . . . . . . 78 | 6.12.1.10. P2P communications . . . . . . . . . . . . . . . 78 | |||
6.11.1.13. RPL Packet Information . . . . . . . . . . . . . 78 | 6.12.1.11. IPv6 address configuration . . . . . . . . . . . 78 | |||
6.11.1.14. Unknown Destinations . . . . . . . . . . . . . . 78 | 6.12.1.12. Administrative parameters . . . . . . . . . . . 79 | |||
6.12. General ACP Considerations . . . . . . . . . . . . . . . 79 | 6.12.1.13. RPL Packet Information . . . . . . . . . . . . . 79 | |||
6.12.1. Performance . . . . . . . . . . . . . . . . . . . . 79 | 6.12.1.14. Unknown Destinations . . . . . . . . . . . . . . 79 | |||
6.12.2. Addressing of Secure Channels . . . . . . . . . . . 79 | 6.13. General ACP Considerations . . . . . . . . . . . . . . . 80 | |||
6.12.3. MTU . . . . . . . . . . . . . . . . . . . . . . . . 80 | 6.13.1. Performance . . . . . . . . . . . . . . . . . . . . 80 | |||
6.12.4. Multiple links between nodes . . . . . . . . . . . . 80 | 6.13.2. Addressing of Secure Channels . . . . . . . . . . . 80 | |||
6.12.5. ACP interfaces . . . . . . . . . . . . . . . . . . . 80 | 6.13.3. MTU . . . . . . . . . . . . . . . . . . . . . . . . 81 | |||
6.12.5.1. ACP loopback interfaces . . . . . . . . . . . . 80 | 6.13.4. Multiple links between nodes . . . . . . . . . . . . 81 | |||
6.12.5.2. ACP virtual interfaces . . . . . . . . . . . . . 83 | 6.13.5. ACP interfaces . . . . . . . . . . . . . . . . . . . 82 | |||
6.12.5.2.1. ACP point-to-point virtual interfaces . . . 83 | 6.13.5.1. ACP loopback interfaces . . . . . . . . . . . . 82 | |||
6.12.5.2.2. ACP multi-access virtual interfaces . . . . 83 | 6.13.5.2. ACP virtual interfaces . . . . . . . . . . . . . 84 | |||
7. ACP support on L2 switches/ports (Normative) . . . . . . . . 85 | 6.13.5.2.1. ACP point-to-point virtual interfaces . . . 84 | |||
7.1. Why (Benefits of ACP on L2 switches) . . . . . . . . . . 86 | 6.13.5.2.2. ACP multi-access virtual interfaces . . . . 84 | |||
7.2. How (per L2 port DULL GRASP) . . . . . . . . . . . . . . 87 | 7. ACP support on L2 switches/ports (Normative) . . . . . . . . 87 | |||
8. Support for Non-ACP Components (Normative) . . . . . . . . . 88 | 7.1. Why (Benefits of ACP on L2 switches) . . . . . . . . . . 87 | |||
8.1. ACP Connect . . . . . . . . . . . . . . . . . . . . . . . 88 | 7.2. How (per L2 port DULL GRASP) . . . . . . . . . . . . . . 88 | |||
8.1.1. Non-ACP Controller / NMS system . . . . . . . . . . . 88 | 8. Support for Non-ACP Components (Normative) . . . . . . . . . 89 | |||
8.1.2. Software Components . . . . . . . . . . . . . . . . . 91 | 8.1. ACP Connect . . . . . . . . . . . . . . . . . . . . . . . 89 | |||
8.1.3. Auto Configuration . . . . . . . . . . . . . . . . . 92 | 8.1.1. Non-ACP Controller / NMS system . . . . . . . . . . . 90 | |||
8.1.4. Combined ACP/Data-Plane Interface (VRF Select) . . . 93 | 8.1.2. Software Components . . . . . . . . . . . . . . . . . 92 | |||
8.1.5. Use of GRASP . . . . . . . . . . . . . . . . . . . . 94 | 8.1.3. Auto Configuration . . . . . . . . . . . . . . . . . 93 | |||
8.2. Connecting ACP islands over Non-ACP L3 networks (Remote | 8.1.4. Combined ACP/Data-Plane Interface (VRF Select) . . . 94 | |||
ACP neighbors) . . . . . . . . . . . . . . . . . . . . . 95 | 8.1.5. Use of GRASP . . . . . . . . . . . . . . . . . . . . 96 | |||
8.2.1. Configured Remote ACP neighbor . . . . . . . . . . . 95 | 8.2. Connecting ACP islands over Non-ACP L3 networks (Remote ACP | |||
8.2.2. Tunneled Remote ACP Neighbor . . . . . . . . . . . . 96 | neighbors) . . . . . . . . . . . . . . . . . . . . . . . 97 | |||
8.2.3. Summary . . . . . . . . . . . . . . . . . . . . . . . 97 | 8.2.1. Configured Remote ACP neighbor . . . . . . . . . . . 97 | |||
9. ACP Operations (Informative) . . . . . . . . . . . . . . . . 97 | 8.2.2. Tunneled Remote ACP Neighbor . . . . . . . . . . . . 98 | |||
9.1. ACP (and BRSKI) Diagnostics . . . . . . . . . . . . . . . 98 | 8.2.3. Summary . . . . . . . . . . . . . . . . . . . . . . . 98 | |||
9.1.1. Secure Channel Peer diagnostics . . . . . . . . . . . 102 | 9. ACP Operations (Informative) . . . . . . . . . . . . . . . . 99 | |||
9.2. ACP Registrars . . . . . . . . . . . . . . . . . . . . . 103 | 9.1. ACP (and BRSKI) Diagnostics . . . . . . . . . . . . . . . 99 | |||
9.2.1. Registrar interactions . . . . . . . . . . . . . . . 103 | 9.1.1. Secure Channel Peer diagnostics . . . . . . . . . . . 103 | |||
9.2.2. Registrar Parameter . . . . . . . . . . . . . . . . . 104 | 9.2. ACP Registrars . . . . . . . . . . . . . . . . . . . . . 104 | |||
9.2.3. Certificate renewal and limitations . . . . . . . . . 105 | 9.2.1. Registrar interactions . . . . . . . . . . . . . . . 104 | |||
9.2.4. ACP Registrars with sub-CA . . . . . . . . . . . . . 106 | 9.2.2. Registrar Parameter . . . . . . . . . . . . . . . . . 105 | |||
9.2.5. Centralized Policy Control . . . . . . . . . . . . . 106 | 9.2.3. Certificate renewal and limitations . . . . . . . . . 106 | |||
9.3. Enabling and disabling ACP/ANI . . . . . . . . . . . . . 107 | 9.2.4. ACP Registrars with sub-CA . . . . . . . . . . . . . 107 | |||
9.3.1. Filtering for non-ACP/ANI packets . . . . . . . . . . 107 | 9.2.5. Centralized Policy Control . . . . . . . . . . . . . 107 | |||
9.3.2. Admin Down State . . . . . . . . . . . . . . . . . . 108 | 9.3. Enabling and disabling ACP/ANI . . . . . . . . . . . . . 108 | |||
9.3.2.1. Security . . . . . . . . . . . . . . . . . . . . 109 | 9.3.1. Filtering for non-ACP/ANI packets . . . . . . . . . . 108 | |||
9.3.2.2. Fast state propagation and Diagnostics . . . . . 109 | 9.3.2. Admin Down State . . . . . . . . . . . . . . . . . . 109 | |||
9.3.2.3. Low Level Link Diagnostics . . . . . . . . . . . 110 | 9.3.2.1. Security . . . . . . . . . . . . . . . . . . . . 110 | |||
9.3.2.4. Power Consumption Issues . . . . . . . . . . . . 111 | 9.3.2.2. Fast state propagation and Diagnostics . . . . . 110 | |||
9.3.3. Interface level ACP/ANI enable . . . . . . . . . . . 111 | 9.3.2.3. Low Level Link Diagnostics . . . . . . . . . . . 111 | |||
9.3.4. Which interfaces to auto-enable? . . . . . . . . . . 111 | 9.3.2.4. Power Consumption Issues . . . . . . . . . . . . 112 | |||
9.3.5. Node Level ACP/ANI enable . . . . . . . . . . . . . . 113 | 9.3.3. Interface level ACP/ANI enable . . . . . . . . . . . 112 | |||
9.3.5.1. Brownfield nodes . . . . . . . . . . . . . . . . 113 | 9.3.4. Which interfaces to auto-enable? . . . . . . . . . . 112 | |||
9.3.5.2. Greenfield nodes . . . . . . . . . . . . . . . . 114 | 9.3.5. Node Level ACP/ANI enable . . . . . . . . . . . . . . 114 | |||
9.3.6. Undoing ANI/ACP enable . . . . . . . . . . . . . . . 114 | 9.3.5.1. Brownfield nodes . . . . . . . . . . . . . . . . 114 | |||
9.3.7. Summary . . . . . . . . . . . . . . . . . . . . . . . 115 | 9.3.5.2. Greenfield nodes . . . . . . . . . . . . . . . . 115 | |||
9.4. Partial or Incremental adoption . . . . . . . . . . . . . 115 | 9.3.6. Undoing ANI/ACP enable . . . . . . . . . . . . . . . 116 | |||
9.5. Configuration and the ACP (summary) . . . . . . . . . . . 116 | 9.3.7. Summary . . . . . . . . . . . . . . . . . . . . . . . 116 | |||
10. Summary: Benefits (Informative) . . . . . . . . . . . . . . . 117 | 9.4. Partial or Incremental adoption . . . . . . . . . . . . . 117 | |||
10.1. Self-Healing Properties . . . . . . . . . . . . . . . . 118 | 9.5. Configuration and the ACP (summary) . . . . . . . . . . . 118 | |||
10.2. Self-Protection Properties . . . . . . . . . . . . . . . 119 | 10. Summary: Benefits (Informative) . . . . . . . . . . . . . . . 119 | |||
10.2.1. From the outside . . . . . . . . . . . . . . . . . . 119 | 10.1. Self-Healing Properties . . . . . . . . . . . . . . . . 119 | |||
10.2.2. From the inside . . . . . . . . . . . . . . . . . . 120 | 10.2. Self-Protection Properties . . . . . . . . . . . . . . . 121 | |||
10.3. The Administrator View . . . . . . . . . . . . . . . . . 121 | 10.2.1. From the outside . . . . . . . . . . . . . . . . . . 121 | |||
10.2.2. From the inside . . . . . . . . . . . . . . . . . . 122 | ||||
11. Security Considerations . . . . . . . . . . . . . . . . . . . 122 | 10.3. The Administrator View . . . . . . . . . . . . . . . . . 123 | |||
12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 125 | 11. Security Considerations . . . . . . . . . . . . . . . . . . . 124 | |||
13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 125 | 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 129 | |||
14. Change log [RFC Editor: Please remove] . . . . . . . . . . . 126 | 13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 130 | |||
14.1. Summary of changes since entering IESG review . . . . . 126 | 14. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 130 | |||
14.1.1. Reviews (while in IESG review status) / status . . . 126 | 15. Change log [RFC Editor: Please remove] . . . . . . . . . . . 131 | |||
14.1.2. BRSKI / ACP registrar related enhancements . . . . . 127 | 15.1. Summary of changes since entering IESG review . . . . . 131 | |||
14.1.3. Normative enhancements since start of IESG review . 127 | 15.1.1. Reviews (while in IESG review status) / status . . . 131 | |||
14.1.4. Explanatory enhancements since start of IESG review 128 | 15.1.2. BRSKI / ACP registrar related enhancements . . . . . 132 | |||
14.2. draft-ietf-anima-autonomic-control-plane-28 . . . . . . 129 | 15.1.3. Normative enhancements since start of IESG review . 132 | |||
14.3. draft-ietf-anima-autonomic-control-plane-27 . . . . . . 130 | 15.1.4. Explanatory enhancements since start of IESG | |||
14.4. draft-ietf-anima-autonomic-control-plane-26 . . . . . . 130 | review . . . . . . . . . . . . . . . . . . . . . . . 133 | |||
14.5. draft-ietf-anima-autonomic-control-plane-25 . . . . . . 131 | 15.2. draft-ietf-anima-autonomic-control-plane-29 . . . . . . 134 | |||
14.6. draft-ietf-anima-autonomic-control-plane-24 . . . . . . 135 | 15.3. draft-ietf-anima-autonomic-control-plane-28 . . . . . . 137 | |||
14.7. draft-ietf-anima-autonomic-control-plane-23 . . . . . . 135 | 15.4. draft-ietf-anima-autonomic-control-plane-27 . . . . . . 138 | |||
14.8. draft-ietf-anima-autonomic-control-plane-22 . . . . . . 136 | 15.5. draft-ietf-anima-autonomic-control-plane-26 . . . . . . 138 | |||
15. References . . . . . . . . . . . . . . . . . . . . . . . . . 138 | 15.6. draft-ietf-anima-autonomic-control-plane-25 . . . . . . 139 | |||
15.1. Normative References . . . . . . . . . . . . . . . . . . 138 | 15.7. draft-ietf-anima-autonomic-control-plane-24 . . . . . . 143 | |||
15.2. Informative References . . . . . . . . . . . . . . . . . 142 | 15.8. draft-ietf-anima-autonomic-control-plane-23 . . . . . . 143 | |||
15.3. URIs . . . . . . . . . . . . . . . . . . . . . . . . . . 149 | 15.9. draft-ietf-anima-autonomic-control-plane-22 . . . . . . 145 | |||
Appendix A. Background and Futures (Informative) . . . . . . . . 150 | 16. Normative References . . . . . . . . . . . . . . . . . . . . 147 | |||
A.1. ACP Address Space Schemes . . . . . . . . . . . . . . . . 150 | 17. Informative References . . . . . . . . . . . . . . . . . . . 150 | |||
A.2. BRSKI Bootstrap (ANI) . . . . . . . . . . . . . . . . . . 150 | Appendix A. Background and Futures (Informative) . . . . . . . . 158 | |||
A.3. ACP Neighbor discovery protocol selection . . . . . . . . 152 | A.1. ACP Address Space Schemes . . . . . . . . . . . . . . . . 158 | |||
A.3.1. LLDP . . . . . . . . . . . . . . . . . . . . . . . . 152 | A.2. BRSKI Bootstrap (ANI) . . . . . . . . . . . . . . . . . . 159 | |||
A.3.2. mDNS and L2 support . . . . . . . . . . . . . . . . . 152 | A.3. ACP Neighbor discovery protocol selection . . . . . . . . 160 | |||
A.3.3. Why DULL GRASP . . . . . . . . . . . . . . . . . . . 152 | A.3.1. LLDP . . . . . . . . . . . . . . . . . . . . . . . . 160 | |||
A.4. Choice of routing protocol (RPL) . . . . . . . . . . . . 153 | A.3.2. mDNS and L2 support . . . . . . . . . . . . . . . . . 161 | |||
A.5. ACP Information Distribution and multicast . . . . . . . 154 | A.3.3. Why DULL GRASP . . . . . . . . . . . . . . . . . . . 161 | |||
A.6. Extending ACP channel negotiation (via GRASP) . . . . . . 155 | A.4. Choice of routing protocol (RPL) . . . . . . . . . . . . 161 | |||
A.7. CAs, domains and routing subdomains . . . . . . . . . . . 157 | A.5. ACP Information Distribution and multicast . . . . . . . 163 | |||
A.8. Intent for the ACP . . . . . . . . . . . . . . . . . . . 158 | A.6. Extending ACP channel negotiation (via GRASP) . . . . . . 164 | |||
A.9. Adopting ACP concepts for other environments . . . . . . 159 | A.7. CAs, domains and routing subdomains . . . . . . . . . . . 166 | |||
A.10. Further (future) options . . . . . . . . . . . . . . . . 161 | A.8. Intent for the ACP . . . . . . . . . . . . . . . . . . . 167 | |||
A.10.1. Auto-aggregation of routes . . . . . . . . . . . . . 161 | A.9. Adopting ACP concepts for other environments . . . . . . 168 | |||
A.10.2. More options for avoiding IPv6 Data-Plane dependency 161 | A.10. Further (future) options . . . . . . . . . . . . . . . . 170 | |||
A.10.3. ACP APIs and operational models (YANG) . . . . . . . 162 | A.10.1. Auto-aggregation of routes . . . . . . . . . . . . . 170 | |||
A.10.4. RPL enhancements . . . . . . . . . . . . . . . . . . 162 | A.10.2. More options for avoiding IPv6 Data-Plane | |||
A.10.5. Role assignments . . . . . . . . . . . . . . . . . . 163 | dependencies . . . . . . . . . . . . . . . . . . . . 170 | |||
A.10.6. Autonomic L3 transit . . . . . . . . . . . . . . . . 163 | A.10.3. ACP APIs and operational models (YANG) . . . . . . . 171 | |||
A.10.7. Diagnostics . . . . . . . . . . . . . . . . . . . . 164 | A.10.4. RPL enhancements . . . . . . . . . . . . . . . . . . 171 | |||
A.10.8. Avoiding and dealing with compromised ACP nodes . . 164 | A.10.5. Role assignments . . . . . . . . . . . . . . . . . . 172 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 165 | A.10.6. Autonomic L3 transit . . . . . . . . . . . . . . . . 172 | |||
A.10.7. Diagnostics . . . . . . . . . . . . . . . . . . . . 172 | ||||
A.10.8. Avoiding and dealing with compromised ACP nodes . . 173 | ||||
A.10.9. Detecting ACP secure channel downgrade attacks . . . 174 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 175 | ||||
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. [RFC7575] defines the fundamental ideas and | |||
design goals of Autonomic Networking. A gap analysis of Autonomic | design goals of Autonomic Networking. A gap analysis of Autonomic | |||
Networking is given in [RFC7576]. The reference architecture for | Networking is given in [RFC7576]. The reference architecture for | |||
Autonomic Networking in the IETF is specified in the document | Autonomic Networking in the IETF is specified in the document | |||
[I-D.ietf-anima-reference-model]. | [I-D.ietf-anima-reference-model]. | |||
skipping to change at page 6, line 50 ¶ | skipping to change at page 6, line 50 ¶ | |||
In increasingly automated networks either centralized management | In increasingly automated networks either centralized management | |||
systems or distributed autonomic service agents in the network | systems or distributed autonomic service agents in the network | |||
require a control plane which is independent of the configuration of | require a control plane which 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 and similar self-dependency problems in | addressing and routing to avoid the self-dependency problems of | |||
current IP networks, but which is 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 good 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 how this is achieved are | |||
described in Section 6. | described in Section 6. | |||
In a fully autonomic network node without legacy control or | In a fully autonomic network node without legacy control or | |||
management functions/protocols, the Data-Plane would be for example | management functions/protocols, the Data-Plane would be for example | |||
just a forwarding plane for "Data" IPv6 packets, aka: packets that | just a forwarding plane for "Data" IPv6 packets, aka: packets other | |||
are not forwarded by the ACP itself such as control or management | than the control and management plane packets that are forwarded by | |||
plane packets. In such networks/nodes, there would be no non- | the ACP itself. In such networks/nodes, there would be no non- | |||
autonomous control or non-autonomous management plane. | autonomous control or non-autonomous management plane. | |||
Routing protocols for example would be built inside the ACP as so- | Routing protocols for example would be built inside the ACP as so- | |||
called autonomous functions via autonomous service agents, leveraging | called autonomous functions via autonomous service agents, leveraging | |||
the ACPs functions instead of implementing them seperately for each | the ACP's functions instead of implementing them seperately for each | |||
protocol: discovery, automatically established authenticated and | protocol: discovery, automatically established authenticated and | |||
encrypted local and distant peer connectivity for control and | encrypted local and distant peer connectivity for control and | |||
management traffic and common control/management protocol session and | management traffic, and common control/management protocol session | |||
presentation functions. | and presentation functions. | |||
When ACP functionality is added to nodes that have non-autonomous | When ACP functionality is added to nodes that have non-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 pre-existing non-autonomous management and/ | |||
or control plane is considered to be part of the Data-Plane to avoid | or control plane is considered to be part of the Data-Plane to avoid | |||
introduction of more complex, new terminology only for this case. | introduction of more complex, new 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 | |||
skipping to change at page 8, line 11 ¶ | skipping to change at page 8, line 11 ¶ | |||
Signaling Protocol (GRASP - [I-D.ietf-anima-grasp]) runs securely | Signaling Protocol (GRASP - [I-D.ietf-anima-grasp]) runs securely | |||
inside the ACP and depends on the ACP as its "security and | inside the ACP 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 it 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 Data-Plane | |||
dependent bootstrap configuration is required. An example of | dependent bootstrap configuration is required. An example of | |||
such a secure bootstrap process is described in | such a secure bootstrap process is described in | |||
[I-D.ietf-anima-bootstrapping-keyinfra]. | [I-D.ietf-anima-bootstrapping-keyinfra]. | |||
3. An operator can use it to access remote devices using protocols | 3. An operator can use it 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) running across the ACP, even if the network is | |||
misconfigured or not configured. | 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, it defines the requirements in Section 4. Section 5 gives | |||
an overview how the ACP is constructed. | 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 L2 | |||
switches (normative). Section 8 explains how non-ACP nodes and | 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 benefits | |||
of the ACP (after all the details have been defined), Section 9 | of the ACP (after all the details have been defined), Section 9 | |||
provides operational recommendations, Appendix A provides additional | provides operational recommendations, Appendix A provides additional | |||
explanations and describes additional details or future standard or | explanations and describes additional details or future standard or | |||
propriety extensions that were considered not to be appropriate for | proprietary extensions that were considered not to be appropriate for | |||
standardization in this document but were considered important to | standardization in this document but were considered important to | |||
document. There are no dependencies against Appendix A to build a | document. There are no dependencies against Appendix A to build 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 | not only as the secure connectivity for self-management as required | |||
for the ACP in [RFC7575], but it can also be used as the secure | for the ACP in [RFC7575], but it can also be used as the secure | |||
connectivity for traditional (centralized) management. The ACP can | connectivity for traditional (centralized) management. The ACP can | |||
be implemented and operated without any other components of autonomic | be implemented and operated without any other components of autonomic | |||
networks, except for the GRASP protocol. ACP relies on per-link DULL | networks, except for the GRASP protocol. ACP relies on per-link DULL | |||
GRASP (see Section 6.3) to autodiscover ACP neighbors, and includes | GRASP (see Section 6.4) to autodiscover ACP neighbors, and includes | |||
the ACP GRASP instance to provide service discovery for clients of | the ACP GRASP instance to provide service discovery for clients of | |||
the ACP (see Section 6.8) including for its own maintenance of ACP | the 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 "Using Autonomic Control Plane for Stable Connectivity | |||
of Network OAM" [RFC8368] describes how the ACP alone can be used 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/nodes. That document also explains how existing | |||
management solutions can leverage the ACP in parallel with | 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. | |||
skipping to change at page 9, line 29 ¶ | skipping to change at page 9, line 27 ¶ | |||
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), Metro(politan networks), Wide | |||
Area Network (WAN), Enterprise Information Technology (IT) and | Area Network (WAN), Enterprise Information Technology (IT) and | |||
->"Operational Technology" () (OT) networks. The ACP can operate | ->"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 equipment and on layer 2 equipment such as bridges | |||
(see Section 7). The hop-by-hop authentication, integrity-protection | (see Section 7). The hop-by-hop authentication, integrity-protection | |||
and confidentiality mechanism used by the ACP is defined to be | and confidentiality mechanism used by the ACP is defined to be | |||
negotiable, therefore it can be extended to environments with | 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 [RFC4301], and Datagram Transport | |||
Layer Security (DTLS) version 1.2, see [RFC6347]). | 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, the GRASP | Infrastructure (PKI) code for the ACP certificate including | |||
protocol, UDP, TCP and TLS 1.2 ([RFC5246], for security and | "Enrollment over Secure Transport (EST, see [RFC7030]), the GRASP | |||
reliability of GRASP), the ACP secure channel protocol used (such as | protocol, UDP, TCP and Transport Layer Security (TLS, see | |||
IPsec or DTLS), and an instance of IPv6 packet forwarding and routing | Section 6.1), for security and reliability of GRASP and for EST, the | |||
via the Routing Protocol for Low-power and Lossy Networks (RPL), see | ACP secure channel protocol used (such as IPsec or DTLS), and an | |||
[RFC6550], that is separate from routing and forwarding for the Data- | instance of IPv6 packet forwarding and routing via the Routing | |||
Plane (user traffic). | Protocol for Low-power and Lossy Networks (RPL), see [RFC6550], that | |||
is separate from routing and forwarding for the Data-Plane (user | ||||
traffic). | ||||
The ACP uses only IPv6 to avoid complexity of dual-stack ACP | The ACP uses only IPv6 to avoid complexity of dual-stack ACP | |||
operations (IPv6/IPv4). Nevertheless, it can without any changes be | operations (IPv6/IPv4). Nevertheless, it can without any changes be | |||
integrated into even otherwise IPv4-only network devices. The Data- | integrated into even otherwise IPv4-only network devices. The Data- | |||
Plane itself would not need to change, it could continue to be IPv4 | Plane itself would not need to change and it could continue to be | |||
only. For such IPv4 only devices, the IPv6 protocol itself would be | IPv4 only. For such IPv4-only devices, the IPv6 protocol itself | |||
additional implementation footprint only used for the ACP. | would be additional implementation footprint that is only required | |||
for the 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 | |||
skipping to change at page 10, line 28 ¶ | skipping to change at page 10, line 28 ¶ | |||
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 suitable protocol | |||
to provide the necessary functions to the ACP, so GRASP was developed | to provide the necessary functions to the ACP, so GRASP was developed | |||
to fill that gap. | to fill that gap. | |||
The ACP design can be applicable to (cpu, memory) constrained devices | The ACP design can be applicable to devices constrained with respect | |||
and (bitrate, reliability) constrained networks, but this document | to cpu and memory, and to networks constrained with respect to | |||
does not attempt to define the most constrained type of devices or | bitrate and reliability, but this document does not attempt to define | |||
networks to which the ACP is applicable. RPL and DTLS for ACP secure | the most constrained type of devices or networks to which the ACP is | |||
channels are two protocol choices already making ACP more applicable | applicable. RPL and DTLS for ACP secure channels are two protocol | |||
to constrained environments. Support for constrained devices in this | choices already making ACP more applicable to constrained | |||
specification is opportunistic, but not complete, because the | environments. Support for constrained devices in this specification | |||
reliable transport for GRASP (see Section 6.8.2) only specifies TCP/ | is opportunistic, but not complete, because the reliable transport | |||
TLS). See Appendix A.9 for discussions about how future standards or | for GRASP (see Section 6.9.2) only specifies TCP/TLS. See | |||
Appendix A.9 for discussions about how future standards or | ||||
proprietary extensions/variations of the ACP could better meet | proprietary extensions/variations of the ACP could better meet | |||
different expectations from those on which the current design is | different expectations from those on which the current design is | |||
based including supporting constrained devices better. | 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- | [RFC Editor: Please add ACP, BRSKI, GRASP, MASA to https://www.rfc- | |||
editor.org/materials/abbrev.expansion.txt.] | editor.org/materials/abbrev.expansion.txt.] | |||
[RFC Editor: WG/IETF/IESG review of the terms below asked for | [RFC Editor: What is the recommended way to reference a hanging text, | |||
references between these terms when they refer to each other. The | e.g.: to a definition in the list of definitions ? Up to -28, this | |||
only option I could find for RFC/XML to point to a hanging text | document was using XMLv2 and the only option I could find for RFC/XML | |||
acronym definition that also displays the actual term is the | to point to a hanging text was format="title" , which leads to | |||
format="title" version, which leads to references such as '->"ACP | references such as '->"ACP certificate" ()', aka: redundant empty | |||
certificate" ()'. I found no reasonable way to eliminate the | parenthsis. Many reviewer where concerned about this. I created a | |||
trailing '()' generated by this type of cross references. Can you | ticket to ask for an xml2rfc enhancement to avoid this in the future: | |||
please take care of removing these artefacts during editing (after | https://trac.tools.ietf.org/tools/xml2rfc/trac/ticket/347. When i | |||
conversion to nroff ?). I also created a ticket to ask for an | changed to XMLv3 in version -29, i could get rid of the unnecessary | |||
xml2rfc enhancement to avoid this in the future: | () by using format="none", but that format is declared to be | |||
https://trac.tools.ietf.org/tools/xml2rfc/trac/ticket/347.] | 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 | [RFC Editor: Question: Is it possible to change the first occurrences | |||
of [RFCxxxx] references to "rfcxxx title" [RFCxxxx]? the XML2RFC | of [RFCxxxx] references to "rfcxxx title" [RFCxxxx]? the XML2RFC | |||
format does not seem to offer such a format, but I did not want to | format does not seem to offer such a format, but I did not want to | |||
duplicate 50 first references - one reference for title mentioning | duplicate 50 first references - one reference for title mentioning | |||
and one for RFC number.] | and one for RFC number.] | |||
This document serves both as a normative specification for how ACP | This document serves both as a normative specification for how ACP | |||
nodes have to behave as well as describing requirements, benefits, | nodes have to behave as well as describing requirements, benefits, | |||
architecture and operational aspects to explain the context. | architecture and operational aspects to explain the context. | |||
Normative sections are labelled "(Normative)" and use | Normative sections are labelled "(Normative)" and use BCP 14 | |||
[RFC2119]/[RFC8174] keywords. Other sections are labelled | keywords. Other sections are labelled "(Informative)" and do not use | |||
"(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 using the ACP as | |||
"nodes". Typically such a node is a physical (network equipment) | "nodes". Typically such a node is a physical (network equipment) | |||
device, but it can equally be some virtualized system. Therefore, we | device, but it can equally be some virtualized system. Therefore, we | |||
do not refer to them as devices unless the context specifically calls | do not refer to them as devices unless the context specifically calls | |||
for a physical system. | 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). Terms introduced are explained on first use, so | |||
this list is for reference only. | this list is for reference only. | |||
skipping to change at page 11, line 41 ¶ | skipping to change at page 11, line 43 ¶ | |||
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 this document. It provides secure zero-touch (automated) | in 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 | ACP address range/set: The ACP address may imply a range or set of | |||
addresses that the node can assign for different purposes. This | addresses that the node can assign for different purposes. This | |||
address range/set is derived by the node from the format of the | address range/set is derived by the node from the format of the | |||
ACP address called the "addressing sub-scheme". | ACP address called the "addressing sub-scheme". | |||
ACP connect interface: An interface on an ACP node providing access | ACP connect interface: An interface on an ACP node providing access | |||
to the ACP for non ACP capable nodes without using an ACP secure | to the ACP for non ACP capable nodes without using an ACP secure | |||
channel. See Section 8.1.1. | channel. See Section 8.1.1. | |||
ACP domain: The ACP domain is the set of nodes with ->"ACP | ACP domain: The ACP domain is the set of nodes with ->"ACP | |||
certificates" that allow them to authenticate each other as | certificates" that allow them to authenticate each other as | |||
members of the ACP domain. See also Section 6.1.3. | members of the ACP domain. See also Section 6.2.3. | |||
ACP (ANI/AN) certificate: A [RFC5280] certificate (LDevID) carrying | ||||
ACP (ANI/AN) Domain Certificate: A [RFC5280] certificate (LDevID) | the acp-node-name which is used by the ACP to learn its address in | |||
carrying the acp-node-name which is used by the ACP to learn its | the ACP and to derive and cryptographically assert its membership | |||
address in the ACP and to derive and cryptographically assert its | in the ACP domain. | |||
membership in the ACP domain. | ||||
ACP acp-node-name field: An information field in the ACP certificate | ACP acp-node-name field: An information field in the ACP certificate | |||
in which the ACP relevant information is encoded: the ACP domain | in which the ACP relevant information is encoded: the ACP domain | |||
name, the ACP IPv6 address of the node and optional additional | name, the ACP IPv6 address of the node and optional additional | |||
role attributes about the node. | role attributes about the node. | |||
ACP Loopback interface: The Loopback interface in the ACP Virtual | ACP Loopback interface: The Loopback interface in the ACP Virtual | |||
Routing and Forwarding (VRF) that has the ACP address assigned to | Routing and Forwarding (VRF) that has the ACP address assigned to | |||
it. See Section 6.12.5.1. | it. See Section 6.13.5.1. | |||
ACP network: The ACP network constitutes all the nodes that have | ACP network: The ACP network constitutes 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/simple case, the ACP has one ULA prefix, see | |||
Section 6.10. The ACP routing table may include multiple ULA | Section 6.11. The ACP routing table may include multiple ULA | |||
prefixes if the "rsub" option is used to create addresses from | prefixes if the "rsub" option is used to create addresses from | |||
more than one ULA prefix. See Section 6.1.2. The ACP may also | more than one ULA prefix. See Section 6.2.2. The ACP may also | |||
include non-ULA prefixes if those are configured on ACP connect | include non-ULA prefixes if those are configured on ACP connect | |||
interfaces. See Section 8.1.1. | 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 are established between (normally) adjacent ACP | |||
nodes to carry traffic of the ACP VRF securely and isolated from | nodes to carry traffic of the ACP VRF securely and isolated from | |||
Data-Plane traffic in-band over the same link/path as the Data- | Data-Plane traffic in-band over the same link/path as the Data- | |||
Plane. | Plane. | |||
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 Datagram Transport Layer Security (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.12.5. | more ACP secure channels. See Section 6.13.5. | |||
AN "Autonomic Network": A network according to | ||||
AN "Autonomic Network": A network according to | ||||
[I-D.ietf-anima-reference-model]. Its main components are ANI, | [I-D.ietf-anima-reference-model]. Its main components are ANI, | |||
Autonomic Functions and Intent. | 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.1.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 | ASA: "Autonomic Service Agent". Autonomic software modules running | |||
on an ANI device. The components making up the ANI (BRSKI, ACP, | on an ANI device. The components making up the ANI (BRSKI, ACP, | |||
GRASP) are also described as ASAs. | GRASP) are also described as ASAs. | |||
Autonomic Function: A function/service in an Autonomic Network (AN) | Autonomic Function: A function/service in an Autonomic Network (AN) | |||
composed of one or more ASA across one or more ANI nodes. | composed of one or more ASA across one or more ANI nodes. | |||
BRSKI: "Bootstrapping Remote Secure Key Infrastructures" | BRSKI: "Bootstrapping Remote Secure Key Infrastructures" | |||
([I-D.ietf-anima-bootstrapping-keyinfra]. A protocol extending | ([I-D.ietf-anima-bootstrapping-keyinfra]. A protocol extending | |||
EST to enable secure zero-touch bootstrap in conjunction with ACP. | EST to enable secure zero-touch bootstrap in conjunction with ACP. | |||
ANI nodes use ACP, BRSKI and GRASP. | ANI nodes use ACP, BRSKI and GRASP. | |||
CA: "Certification Authority". An entity that issues digital | 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. This signing certificate | certificate to validate the signature. | |||
can be considered to be an identifier of the CA, so the term CA is | ||||
also loosely used to refer to the certificate used by the CA for | ||||
signing. | ||||
CRL: "Certificate Revocation List". A list of revoked certificates. | CRL: "Certificate Revocation List". A list of revoked certificates. | |||
Required to revoke certificates before their lifetime expires. | Required to revoke certificates before their lifetime expires. | |||
Data-Plane: The counterpoint to the ACP VRF in an ACP node: | Data-Plane: The counterpoint to the ACP VRF in an ACP node: | |||
forwarding of user traffic and in non-autonomous nodes/networks | forwarding of user traffic and in non-autonomous nodes/networks | |||
also any non-autonomous control and/or management plane functions. | also any non-autonomous control and/or management plane functions. | |||
In a fully Autonomic Network node, the Data-Plane is managed | In a fully Autonomic Network node, the Data-Plane is managed | |||
autonomically via Autonomic Functions and Intent. See Section 1 | autonomically via Autonomic Functions and Intent. See Section 1 | |||
for more detailed explanations. | for more detailed explanations. | |||
device: A physical system, or physical node. | device: A physical system, or physical node. | |||
Enrollment: The process through which a node authenticates itself to | Enrollment: The process through which a node authenticates itself to | |||
a network with an initial identity, which is often called IDevID | a network with an initial identity, which is often called IDevID | |||
certificate, and acquires from the network a network specific | certificate, and acquires from the network a network specific | |||
identity, which is often called LDevID certificate, and | identity, which is often called LDevID certificate, and | |||
certificates of one or more Trust Anchor(s). In the ACP, the | certificates of one or more Trust Anchor(s). In the ACP, the | |||
LDevID certificate is called the ACP certificate. | LDevID certificate is called the ACP certificate. | |||
EST: "Enrollment over Secure Transport" ([RFC7030]). IETF standard- | EST: "Enrollment over Secure Transport" ([RFC7030]). IETF standard- | |||
track protocol for enrollment of a node with an LDevID | 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/OAM or | |||
Autonomic Functions. See [I-D.ietf-anima-grasp]. | Autonomic Functions. See [I-D.ietf-anima-grasp]. | |||
IDevID: An "Initial Device IDentity" X.509 certificate installed by | IDevID: An "Initial Device IDentity" X.509 certificate installed by | |||
the vendor on new equipment. Contains information that | the vendor on new equipment. Contains information that | |||
establishes the identity of the node in the context of its vendor/ | establishes the identity of the node in the context of its vendor/ | |||
manufacturer such as device model/type and serial number. See | manufacturer such as device model/type and serial number. See | |||
[AR8021]. The IDevID certificate cannot be used as a node | [AR8021]. The IDevID certificate cannot be used as a node | |||
identifier for the ACP because they are not provisioned by the | identifier for the ACP because they are not provisioned by the | |||
owner of the network, so they can not directly indicate an ACP | owner of the network, so they can not directly indicate an ACP | |||
domain they belong to. | domain they belong to. | |||
in-band (management/signaling): In-band management traffic and/or | in-band (management/signaling): In-band management traffic and/or | |||
control plane signaling uses the same network resources such as | control plane signaling uses the same network resources such as | |||
routers/switches and network links that it manages/controls. In- | routers/switches and network links that it manages/controls. In- | |||
band is the standard management and signaling mechanism in IP | band is the standard management and signaling mechanism in IP | |||
networks. Compared to ->"out-of-band" () it requires no | networks. Compared to ->"out-of-band" it requires no additional | |||
additional physical resources, but introduces potentially circular | physical resources, but introduces potentially circular | |||
dependencies for its correct operations. See ->"introduction" | dependencies for its correct operations. See ->"introduction". | |||
(Introduction (Informative)). | ||||
Intent: Policy language of an autonomic network according to | Intent: Policy language of an autonomic network according to | |||
[I-D.ietf-anima-reference-model]. | [I-D.ietf-anima-reference-model]. | |||
Loopback interface: See ->"ACP Loopback interface". | ||||
Loopback interface: See ->"ACP Loopback interface" (). | ||||
LDevID: A "Local Device IDentity" is an X.509 certificate installed | LDevID: A "Local Device IDentity" is an X.509 certificate installed | |||
during "enrollment". The Domain Certificate used by the ACP is an | 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". | ||||
Management: Used in this document as another word for ->"OAM" (). | ||||
MASA (service): "Manufacturer Authorized Signing Authority". A | MASA (service): "Manufacturer Authorized Signing Authority". A | |||
vendor/manufacturer or delegated cloud service on the Internet | vendor/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 | MIC: "Manufacturer Installed Certificate". This is another word to | |||
describe an IDevID in referenced materials. This term is not used | describe an IDevID in referenced materials. This term is not used | |||
in this document. | 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. Can | |||
be virtual or physical. Physical nodes are called devices. | be virtual or physical. Physical nodes are called devices. | |||
Node-ID: The identifier of an ACP node inside that ACP. It is the | Node-ID: The identifier of an ACP node inside that ACP. It is the | |||
last 64 (see Section 6.10.3) or 78-bits (see Section 6.10.5) of | last 64 (see Section 6.11.3) or 78-bits (see Section 6.11.5) of | |||
the ACP address. | the ACP address. | |||
OAM: Operations, Administration and Management. Includes Network | OAM: Operations, Administration and Management. Includes Network | |||
Monitoring. | Monitoring. | |||
Operational Technology (OT): https://en.wikipedia.org/wiki/ | ||||
Operational Technology (OT): "https://en.wikipedia.org/wiki/ | Operational_Technology: "The hardware and software dedicated to | |||
Operational_Technology" [1]: "The hardware and software dedicated | detecting or causing changes in physical processes through direct | |||
to detecting or causing changes in physical processes through | monitoring and/or control of physical devices such as valves, | |||
direct monitoring and/or control of physical devices such as | pumps, etc.". OT networks are today in most cases well separated | |||
valves, pumps, etc.". OT networks are today in most cases well | from Information Technology (IT) networks. | |||
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 | higher end network equipment now also has ethernet ports dedicated | |||
only for management. An out-of-band network provides management | only for management. An out-of-band network provides management | |||
access to the primary network independent of the configuration | access to the primary network independent of the configuration | |||
state of the primary network. See ->"introduction" | state of the primary network. See ->"Introduction" | |||
(Introduction (Informative)) | ||||
(virtual) out-of-band network: The ACP can be called a virtual out- | (virtual) out-of-band network: 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" () | provide the benefits of a (physical) ->"out-of-band network" even | |||
even though it is physically carried ->"in-band" (). See | though it is physically carried ->"in-band". See | |||
->"introduction" (Introduction (Informative)). | ->"introduction". | |||
root CA: "root Certification Authority". A ->"CA" for which the | ||||
root CA: "root Certification Authority". A ->"CA" () for which the | ||||
root CA Key update procedures of [RFC7030], Section 4.4 can be | root CA 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 | (ACP/ANI/BRSKI) Registrar: An ACP registrar is an entity (software | |||
and/or person) that is orchestrating the enrollment of ACP nodes | and/or person) that is orchestrating the enrollment of ACP nodes | |||
with the ACP certificate. ANI nodes use BRSKI, so ANI registrars | with the ACP certificate. ANI nodes use BRSKI, so ANI registrars | |||
are also called BRSKI registrars. For non-ANI ACP nodes, the | are also called BRSKI registrars. For non-ANI ACP nodes, the | |||
registrar mechanisms are undefined by this document. See | registrar mechanisms are undefined by this document. See | |||
Section 6.10.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 other entities | |||
than registrars. EST must be supported for ACP certificate | than registrars. EST must be supported for ACP certificate | |||
renewal (see Section 6.1.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 | RPI: "RPL Packet Information". Network extension headers for use | |||
with the ->"RPL" () routing protocols. Not used with RPL in the | with the ->"RPL" routing protocols. Not used with RPL in the ACP. | |||
ACP. See Section 6.11.1.13. | See Section 6.12.1.13. | |||
RPL: "Routing Protocol for Low-Power and Lossy Networks". The | RPL: "Routing Protocol for Low-Power and Lossy Networks". The | |||
routing protocol used in the ACP. See Section 6.11. | routing protocol used in the ACP. See Section 6.12. | |||
sUDI: "secured Unique Device Identifier". This is another word to | sUDI: "secured Unique Device Identifier". This is another word to | |||
describe an IDevID in referenced material. This term is not used | describe an IDevID in referenced material. This term is not used | |||
in this document. | in this document. | |||
TA: "Trust Anchor". A Trust Anchor is an entity that is trusted for | TA: "Trust Anchor". A Trust Anchor is an entity that is trusted for | |||
the purpose of certificate validation. Trust Anchor Information | the purpose of certificate validation. Trust Anchor Information | |||
such as self-signed certificate(s) of the Trust Anchor is | such as self-signed certificate(s) of the Trust Anchor is | |||
configured into the ACP node as part of Enrollment. See | configured into the ACP node as part of Enrollment. See | |||
[RFC5280], Section 6.1.1. | [RFC5280], Section 6.1.1. | |||
UDI: "Unique Device Identifier". In the context of this document | UDI: "Unique Device Identifier". In the context of this document | |||
unsecured identity information of a node typically consisting of | unsecured identity information of a node typically consisting of | |||
at least device model/type and serial number, often in a vendor | at least device model/type and serial number, often in a vendor | |||
specific format. See sUDI and LDevID. | specific format. See sUDI and LDevID. | |||
ULA: (Global ID prefix) A "Unique Local Address" (ULA) is an IPv6 | ULA: (Global ID prefix) A "Unique Local Address" (ULA) is an IPv6 | |||
address in the block fc00::/7, defined in [RFC4193]. It is the | address in the block fc00::/7, defined in [RFC4193]. It is often | |||
approximate IPv6 counterpart of the IPv4 private address | thought of as the approximate IPv6 counterpart of the IPv4 private | |||
([RFC1918]). The ULA Global ID prefix are the first 48-bits of a | address ([RFC1918]). There are important differences though that | |||
ULA address. In this document it is abbreviated as "ULA prefix". | are beneficial for and exploited by the ACP, such as the ULA | |||
Global ID prefix, which are the first 48-bits of a ULA address. | ||||
In this document it is abbreviated as "ULA prefix". | ||||
(ACP) VRF: The ACP is modeled in this document as a "Virtual Routing | (ACP) VRF: The ACP is modeled in this document as a "Virtual Routing | |||
and Forwarding" instance (VRF). This means that it is based on a | and Forwarding" instance (VRF). 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-PE ([RFC4364]) or LISP XTR ([RFC6830]), the ACP VRF | |||
does not have any special "core facing" functionality or routing/ | does not have any special "core facing" functionality or routing/ | |||
mapping protocols shared across multiple VRFs. In vendor products | mapping protocols shared across multiple VRFs. In vendor products | |||
a VRF such as the ACP-VRF may also be referred to as a so called | a VRF such as the ACP-VRF may also be referred to as a so called | |||
VRF-lite. | VRF-lite. | |||
skipping to change at page 17, line 21 ¶ | skipping to change at page 16, line 20 ¶ | |||
(ACP) VRF: The ACP is modeled in this document as a "Virtual Routing | (ACP) VRF: The ACP is modeled in this document as a "Virtual Routing | |||
and Forwarding" instance (VRF). This means that it is based on a | and Forwarding" instance (VRF). 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-PE ([RFC4364]) or LISP XTR ([RFC6830]), the ACP VRF | |||
does not have any special "core facing" functionality or routing/ | does not have any special "core facing" functionality or routing/ | |||
mapping protocols shared across multiple VRFs. In vendor products | mapping protocols shared across multiple VRFs. In vendor products | |||
a VRF such as the ACP-VRF may also be referred to as a so called | a VRF such as the ACP-VRF may also be referred to as a so called | |||
VRF-lite. | 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.10.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-bit 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 BCP | |||
14 [RFC2119],[RFC8174] when, and only when, they appear in all | 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) | |||
skipping to change at page 19, line 15 ¶ | skipping to change at page 18, line 29 ¶ | |||
or mask changes, routing changes, or security policies. Today such | or mask changes, routing changes, or security policies. Today such | |||
changes require precise hop-by-hop planning. | changes require precise 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: | want to depend on forwarding of their packets via the Data-Plane: | |||
Aliveness and routing protocol signaling packets across the Data- | Aliveness and routing protocol signaling packets across the Data- | |||
Plane to verify reachability across the Data-Plane, using IPv4 | Plane to verify reachability across the Data-Plane, using IPv4 | |||
signaling packets for IPv4 routing vs. IPv6 signaling packets for | signaling packets for IPv4 routing vs. IPv6 signaling packets for | |||
IPv6 routing. | IPv6 routing. | |||
Assuming appropriate implementation (see Section 6.12.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: | |||
o 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, routing | |||
and forwarding tables. | and forwarding tables. | |||
* For control plane protocols, the ACP allows their operation even | ||||
o 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. | |||
skipping to change at page 19, line 48 ¶ | skipping to change at page 19, line 16 ¶ | |||
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 addressing, | |||
configuration and routing. Requirements 2 and 3 build on this | configuration and routing. Requirements 2 and 3 build on this | |||
requirement, but also have value on their own. | requirement, but also have value on their own. | |||
ACP2: The ACP must have a separate address space from the Data- | ACP2: The ACP must have a separate address space from the Data- | |||
Plane. Reason: traceability, debug-ability, separation from | Plane. Reason: traceability, debug-ability, separation from | |||
Data-Plane, infrastructure security (filtering based on known | Data-Plane, infrastructure security (filtering based on known | |||
address space). | address space). | |||
ACP3: The ACP must use autonomically managed address space. Reason: | ACP3: The ACP must use autonomically managed address space. Reason: | |||
easy bootstrap and setup ("autonomic"); robustness (admin | easy bootstrap and setup ("autonomic"); robustness (admin | |||
cannot break network easily). This document uses Unique Local | cannot break network easily). This document uses Unique Local | |||
Addresses (ULA) for this purpose, see [RFC4193]. | Addresses (ULA) for this purpose, see [RFC4193]. | |||
ACP4: The ACP must be generic, that is it must be usable by all the | 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 | functions and protocols of the ANI. Clients of the ACP must | |||
not be tied to a particular application or transport protocol. | not be tied to a particular application or transport protocol. | |||
ACP5: The ACP must provide security: Messages coming through the ACP | ACP5: The ACP must provide security: Messages coming through the ACP | |||
must be authenticated to be from a trusted node, and should | must be authenticated to be from a trusted node, and it is | |||
(very strong should) be encrypted. | very strongly > recommended that they be encrypted. | |||
Explanation for ACP4: In a fully autonomic network (AN), newly | Explanation for ACP4: In a fully autonomic network (AN), newly | |||
written ASA could potentially all communicate exclusively via GRASP | written ASAs could potentially all communicate exclusively via GRASP | |||
with each other, and if that was assumed to be the only requirement | with each other, and if that was assumed to be the only requirement | |||
against the ACP, it would not need to provide IPv6 layer connectivity | against 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-AN networks, it is crucial to support | |||
IPv6 layer connectivity across the ACP to support any transport and | IPv6 layer connectivity across the ACP to support any transport and | |||
application layer protocols. | 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 1). 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 over | |||
the general Internet. This is possible, but introduces a dependency | the general Internet. This is possible, but introduces a dependency | |||
against stable/resilient routing over the non-ACP hops (see | against stable/resilient routing over the non-ACP hops (see | |||
Section 8.2). | Section 8.2). | |||
5. Overview (Informative) | 5. Overview (Informative) | |||
When a node has an ACP certificate (see Section 6.1.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: | further 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 | ||||
2. The node assigns its ULA IPv6 address (prefix) (see Section 6.10 | which is learned from the acp-node-name (see Section 6.2.2) of | |||
which is learned from the acp-node-name (see Section 6.1.2) of | its ACP certificate (see Section 6.2.1) to an ACP loopback | |||
its ACP certificate (see Section 6.1.1) to an ACP loopback | interface (see Section 6.11) and connects this interface into the | |||
interface (see Section 6.10) and connects this interface into the | ||||
ACP VRF. | 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.3 across all native interfaces (see Section 9.3.4). If | Section 6.4 across all native interfaces (see Section 9.3.4). If | |||
a candidate peer is discovered via multiple interfaces, this will | a candidate peer is discovered via multiple interfaces, this will | |||
result in one adjacency per interface. If the ACP node has | 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.5. | 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.1.3. | Section 6.2.3. | |||
6. Unsuccessful authentication of a candidate peer results in | ||||
6. Each successfully established secure channel is mapped into an | throttled connection retries for as long as the candidate peer is | |||
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 | ACP virtual interface, which is placed into the ACP VRF. See | |||
Section 6.12.5.2. | Section 6.13.5.2. | |||
8. Each node runs a lightweight routing protocol, see Section 6.12, | ||||
7. Each node runs a lightweight routing protocol, see Section 6.11, | ||||
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 | ||||
8. 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: | |||
o None of the above operations (except the following explicit | * None of the above operations (except the following explicit | |||
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 | ||||
o Non-ACP NMS ("Network Management Systems") or SDN controllers have | ||||
to be explicitly configured for connection into the ACP. | to be explicitly configured for connection into the ACP. | |||
o 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. | The following figure 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 |---------.. | |||
skipping to change at page 22, line 37 ¶ | skipping to change at page 21, line 43 ¶ | |||
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 inadvertently or otherwise unavoidably | |||
would also impact the management plane traffic, such as the actual | would also impact the management plane traffic, such as the actual | |||
operator CLI session or controller NetConf session through which the | operator CLI session or controller NETCONF session through which the | |||
configuration changes to the Data-Plane are executed. | 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 between | |||
ACP nodes, the ACP should be able to recover given that it | 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 pending on | |||
their specific designs these type of attacks could also be | their specific designs these type 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.2). 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. ACP Domain, Certificate and Network | 6.1. Requirements for use of Transport Layer Security (TLS) | |||
The following requirements apply to TLS required or used by ACP | ||||
components. Applicable ACP components include ACP certificate | ||||
maintenance via EST, see Section 6.2.5, TLS connections for | ||||
Certificate Revocation List (CRL) Distribution Point (CRLDP) or | ||||
Online Certificate Status Protocol (OCSP) responder (if used, see | ||||
Section 6.2.3) and ACP GRASP (see Section 6.9.2). On ANI nodes these | ||||
requirements also apply to BRSKI. | ||||
TLS MUST comply with [RFC7525] except that TLS 1.2 ([RFC5246]) is | ||||
REQUIRED and that older versions of TLS MUST NOT be used. TLS 1.3 | ||||
([RFC8446]) SHOULD be supported. The choice for TLS 1.2 as the | ||||
lowest common denominator for the ACP is based on current expected | ||||
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_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 and MUST NOT offer options | ||||
with less than 256 bit symmetric key strength or hash strength of | ||||
less than SHA384. When TLS 1.3 is supported, TLS_AES_256_GCM_SHA384 | ||||
MUST be offered and TLS_CHACHA20_POLY1305_SHA256 MAY be offered. | ||||
TLS MUST also include the "Supported Elliptic Curves" extension, it | ||||
MUST support the NIST P-256 (secp256r1(22)) and P-384 (secp384r1(24)) | ||||
curves [RFC4492]. In addition, TLS clients SHOULD send an | ||||
ec_point_formats extension with a single element, "uncompressed". | ||||
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 a Local Device IDentity (LDevID) certificate, henceforth | |||
called the ACP certificate and information about one or more Trust | called the ACP certificate and information about one or more Trust | |||
Anchor (TA) as required for the ACP domain membership check | Anchor (TA) as required for the ACP domain membership check | |||
(Section 6.1.3). | (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 inacceptable | |||
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 mechanisms 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 called the ACP certificate. The TA is the | |||
Certification Authority (CA) root certificate of the ACP domain. | Certification Authority (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 the | |||
certificate to comply with Section 6.1.1, specifically to have the | certificate to comply with Section 6.2.1, specifically to have the | |||
acp-node-name as specified in Section 6.1.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 | |||
[I-D.ietf-anima-reference-model] use the word autonomic. This is | [I-D.ietf-anima-reference-model] use the word autonomic. This is | |||
done because those reference documents consider (only) fully | done because those reference documents consider (only) fully | |||
autonomic networks and nodes, but support of ACP does not require | autonomic networks and nodes, but support of ACP does not require | |||
support for other components of autonomic networks except for relying | support for other components of autonomic networks except for relying | |||
on GRASP and providing security and transport for GRASP. Therefore | on GRASP and providing security and transport for GRASP. Therefore | |||
skipping to change at page 24, line 16 ¶ | skipping to change at page 24, line 10 ¶ | |||
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 | [I-D.ietf-anima-reference-model] defines the term "Domain | |||
Certificate" as the certificate used in an autonomic domain. The ACP | Certificate" as the certificate used in an autonomic domain. The ACP | |||
certificate is that domain certificate when ACP nodes are (fully) | certificate is that domain certificate when ACP nodes are (fully) | |||
autonomic nodes. Finally, this document uses the term ACP network to | autonomic nodes. Finally, this document uses the term ACP network to | |||
refer to the network created by active ACP nodes in an ACP domain. | refer to the network created by active ACP nodes in an ACP domain. | |||
The ACP network itself can extend beyond ACP nodes through the | The ACP network itself can extend beyond ACP nodes through the | |||
mechanisms described in Section 8.1. | mechanisms described in Section 8.1. | |||
6.1.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 and | |||
certificate chain certificates (henceforth just called certificates | certificate chain certificates (henceforth just called certificates | |||
in this section) with RSA public keys and certificates with Elliptic | in this section) with RSA public keys and certificates with Elliptic | |||
Curve (ECC) public keys. | Curve (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 256 | than 2048 bit modulus or curves with group order of less than 256 | |||
bit. They MUST support certificates with RSA public keys with 2048 | bit. They MUST support certificates with RSA public keys with 2048 | |||
bit modulus and MAY support longer RSA keys. They MUST support | 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 support SHA-256 and SHOULD support SHA-384, SHA-512 | ACP nodes MUST NOT support certificates with RSA public keys whose | |||
signatures for certificates with RSA key and the same RSA signatures | modulus is less than 2048 bits, or certificates whose ECC public keys | |||
plus ECDSA signatures for certificates with ECC key. | 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 longer public keys MAY be supported. ECDSA | ||||
certificates using the NIST P-256 curve MUST be supported, and such | ||||
certificates using the P-384 and P-521 curves SHOULD be supported. | ||||
ACP nodes MUST support RSA certificates that are signed by RSA | ||||
signatures over the SHA-256 digest of the contents, and SHOULD | ||||
additionally support SHA-384 and SHA-512 digests in such signatures. | ||||
The same requirements for certificate signatures apply to ECDSA | ||||
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 type of | |||
skipping to change at page 25, line 4 ¶ | skipping to change at page 25, line 10 ¶ | |||
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 type of | |||
certificates. See [RFC4492] for more information. | certificates. See [RFC4492] 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 for RSA. ECC offers | |||
equivalent security at (logarithmically) shorter key lengths (see | equivalent security at (logarithmically) shorter key lengths (see | |||
[RFC4492]). This can be beneficial especially in the presence of | [RFC4492]). This can be beneficial especially in the presence of | |||
constrained bandwidth or constrained nodes in an ACP/ANI network. | constrained bandwidth or constrained nodes in an ACP/ANI network. | |||
Some ACP functions such as GRASP peer-2-peer across the ACP require | Some ACP functions such as GRASP peer-2-peer across the ACP require | |||
end-to-end/any-to-any authentication/authorization, therefore ECC can | end-to-end/any-to-any authentication/authorization, therefore ECC can | |||
only reliably be used in the ACP when it MUST be supported on all ACP | only reliably be used in the ACP when it MUST be supported on all ACP | |||
nodes. RSA signatures are mandatory to be supported also for ECC | nodes. RSA signatures are mandatory to be supported also for ECC | |||
certificates because CAs themselves may not support ECC yet. | certificates because 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 | nodes with ACP domain certificates (ACP nodes and NOC nodes) where a | |||
the required authorization condition is ACP domain membership, such | required authorization condition is ACP domain membership, such as | |||
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.1.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.6) and | the establishment of hop-by-hop ACP secure channels (Section 6.7) and | |||
for ACP GRASP (Section 6.8.2) end-to-end via TLS 1.2 ([RFC5246]). | 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 amount of elements | |||
in a certificate as described in Section 6.1.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.1.2. | Section 6.2.2. | |||
In support of ECDH key establishment, ACP certificates with ECC keys | In support of ECDH key establishment, ACP certificates with ECC keys | |||
MUST indicate to be Elliptic Curve Diffie-Hellman capable (ECDH) if | MUST indicate to be Elliptic Curve Diffie-Hellman capable (ECDH): If | |||
X.509 v3 keyUsage and extendedKeyUsage are included in the | the X.509v3 keyUsage extension is present, the keyAgreement bit MUST | |||
certificate. | be set. | |||
Any other field of the ACP certificate is to be populated as required | Any other fields of the ACP certificate are to be populated as | |||
by [RFC5280] or desired by the operator of the ACP domain ACP | required by [RFC5280]: As long as they are compliant with [RFC5280], | |||
registrars/CA and required by other purposes that the ACP certificate | any other field of an ACP certificate can be set as desired by the | |||
is intended to be used for. | operator of the ACP domain through appropriate ACP registrar/ACP CA | |||
procedures. For example, other fields may be required for other | ||||
purposes that the ACP certificate is intended to be 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 "serialNumber" (see | into the ACP certificate, such as the [X.520], section 6.2.9 | |||
[I-D.ietf-anima-bootstrapping-keyinfra] section 2.3.1). This can be | "serialNumber" attribute in the subjects field distinguished name | |||
done for example if it would be acceptable for the devices | encoding. Note that this is not the certificate serial number. See | |||
also [I-D.ietf-anima-bootstrapping-keyinfra] section 2.3.1. This can | ||||
be done for example if it would be acceptable for the device's | ||||
"serialNumber" to be signalled via the Link Layer Discovery Protocol | "serialNumber" to be signalled via the Link Layer Discovery Protocol | |||
(LLDP, [LLDP]) because like LLDP signalled information, the ACP | (LLDP, [LLDP]) because like LLDP signalled information, the ACP | |||
certificate information can be retrieved by neighboring nodes without | certificate information can be retrieved by neighboring nodes without | |||
further authentication and be used either for beneficial diagnostics | further authentication and be used either for beneficial diagnostics | |||
or for malicious attacks. Retrieval of the ACP certificate is | or for malicious attacks. Retrieval of the ACP certificate is | |||
possible via a (failing) attempt to set up an ACP secure channel, and | possible via a (failing) attempt to set up an ACP secure channel, and | |||
the "serialNumber" contains usually device type information that may | the "serialNumber" usually contains device type information that may | |||
help to faster determine working exploits/attacks against the device. | help to faster 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 future requirements. Such future authorizations can | modified with additional requirements. Such future authorizations | |||
use and require additional elements in certificates or policies or | can use and require additional elements in certificates or policies | |||
even additional certificates. For an example, see Appendix A.10.5. | or even additional certificates. See the additional check agagainst | |||
the id-kp-cmcRA [RFC6402] extended key usage attribute | ||||
(Section 6.2.5) and for possible future extensions, see | ||||
Appendix A.10.5. | ||||
6.1.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 ] | |||
HEXLC = DIGIT / "a" / "b" / "c" / "d" / "e" / "f" | acp-address = 32HEXDIG | "0" ; HEXDIG as of RFC5234 section B.1 | |||
; DIGIT as of RFC5234 section B.1 | ||||
acp-address = 32HEXLC | "0" | ||||
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 RFC 1034, section 3.5 | |||
extensions = *( "+" extension ) | extensions = *( "+" extension ) | |||
extension = ; future standard definition. | extension = 1*etext ; future standard definition. | |||
; Must fit RFC5322 simple dot-atom format. | etext = ALPHA / DIGIT / ; Printable US-ASCII | |||
"!" / "#" / "$" / "%" / "&" / "'" / | ||||
"*" / "-" / "/" / "=" / "?" / "^" / | ||||
"_" / "`" / "{" / "|" / "}" / "~" | ||||
routing-subdomain = [ rsub "." ] acp-domain-name | routing-subdomain = [ rsub "." ] acp-domain-name | |||
Example: | Example: | |||
given an ACP address of fd89:b714:f3db:0:200:0:6400:0000 | given an ACP address of fd89:b714:f3db:0:200:0:6400:0000 | |||
and an ACP domain-name of acp.example.com | and an ACP domain-name of acp.example.com | |||
and an rsub extenstion of area51.research | and an rsub extenstion of area51.research | |||
then this results in: | 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 | Figure 2: ACP Node Name ABNF | |||
acp-node-name in above Figure 2 is the ABNF ([RFC5234]) definition of | acp-node-name in above Figure 2 is the ABNF ([RFC5234]) definition of | |||
the ACP Node Name. An ACP certificate MUST carry this information. | the ACP Node Name. An ACP certificate MUST carry this information. | |||
It MUST be encoded as a subjectAltName / otherName / AcpNodeName as | It MUST be encoded as a subjectAltName / otherName / AcpNodeName as | |||
described in Section 6.1.2.1. | described in Section 6.2.2.1. | |||
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 32HEXLC "acp-address" field. Nodes | ACP certificate MUST have a 32HEXDIG acp-address field. Acp-address | |||
complying with this specification MUST also be able to authenticate | is case insensitive because ABNF HEXDIG is. It is recommended to | |||
nodes as ACP domain members or ACP secure channel peers when they | encode acp-address with lower case letters. Nodes complying with | |||
have a 0-value acp-address field and as ACP domain members (but not | this specification MUST also be able to authenticate nodes as ACP | |||
as ACP secure channel peers) when they have an empty acp-address | domain members or ACP secure channel peers when they have a 0-value | |||
field. See Section 6.1.3. | acp-address field and as ACP domain members (but not as ACP secure | |||
channel peers) when the acp-address field is omitted from their | ||||
AcpNodeName. See Section 6.2.3. | ||||
acp-domain-name is used to indicate the ACP Domain across which ACP | acp-domain-name is used to indicate the ACP Domain across which ACP | |||
nodes authenticate and authorize each other, for example to build ACP | nodes authenticate and authorize each other, for example to build ACP | |||
secure channels to each other, see Section 6.1.3. acp-domain-name | secure channels to each other, see Section 6.2.3. acp-domain-name | |||
SHOULD be the FQDN of an Internet domain owned by the network | SHOULD be the FQDN of an Internet domain owned by the network | |||
administration of the ACP and ideally reserved to only be used for | administration of the ACP and ideally reserved to only be used for | |||
the ACP. In this specification it serves to be a name for the ACP | the ACP. In this specification it serves to be a name for the ACP | |||
that ideally is globally unique. When acp-domain-name is a globally | that ideally is globally unique. When acp-domain-name is a globally | |||
unique name, collision of ACP addresses across different ACP domains | unique name, collision of ACP addresses across different ACP domains | |||
can only happen due to ULA hash collisions (see Section 6.10.2). | can only happen due to ULA hash collisions (see Section 6.11.2). | |||
Using different acp-domain-names, operators can distinguish multiple | Using different acp-domain-names, operators can distinguish multiple | |||
ACP even when using the same TA. | ACP 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, and there is no protection against | intended for end user consumption. There is no protection against an | |||
someone not owning a domain name to simply choose it. Instead, it | operator to pick any domain name for an ACP whether or not the | |||
serves as a hash seed for the ULA and for diagnostics to the | 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 | ||||
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- | "routing-subdomain" is a string that can be constructed from the acp- | |||
node-name, and it is used in the hash-creation of the ULA (see | 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 | below). The presence of the "rsub" component allows a single ACP | |||
domain to employ multiple /48 ULA prefixes. See Appendix A.7 for | domain to employ multiple /48 ULA prefixes. See Appendix A.7 for | |||
example use-cases. | example use-cases. | |||
skipping to change at page 27, line 41 ¶ | skipping to change at page 28, line 9 ¶ | |||
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 | 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- | had routing-subdomain as the domain part of the acp-node- | |||
name, rsub and acp-domain-name could not be separated from | name, rsub and acp-domain-name could not be separated from | |||
each other to determine in the ACP domain membership check | each other to determine in the ACP domain membership check | |||
which part is the acp-domain-name and which is solely for | which part is the acp-domain-name and which is solely for | |||
creating a different ULA prefix. | creating a different ULA prefix. | |||
1.2 If both "acp-address" and "rsub" are omitted from | ||||
1.2 If "acp-address" is empty, and "rsub" is empty too, the | AcpNodeName, the "local-part" will have the format | |||
"local-part" will have the format ":++extension(s)". The | "++extension(s)". The two plus characters are necessary so | |||
two plus characters are necessary so the node can | the node can unambiguously parse that both "acp-address" and | |||
unambiguously parse that both "acp-address" and "rsub" are | "rsub" are omitted. | |||
empty. | ||||
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 nodes 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 parsed 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 was no single string representation. | |||
2.3 If the encoding was not that of such a string, it would be | 2.3 If the encoding was not that of such a string, it would be | |||
necessary to define a second standard encoding to provide | necessary to define a second standard encoding to provide | |||
this format (standard string encoding) for operator | this format (standard string encoding) for operator | |||
consumption. | 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 identification in | |||
web or mobile applications such as multi-domain single-sign- | web or mobile applications such as multi-domain single-sign- | |||
on systems. | on 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 other uses beside the | |||
ACP. Therefore, the information element required for the | ACP. Therefore, the information element required for the | |||
ACP should be encoded so that it minimizes the possibility | ACP should be encoded so that it minimizes the possibility | |||
of creating incompatibilities with such other uses. The | of creating incompatibilities with such other uses. The | |||
subjectName is for example often used as an entity | attributes of the subject field for example are often used | |||
identifier in non-ACP uses of a the ACP certificate. | in non-ACP applications and should therefore not be occupied | |||
by new ACP values. | ||||
3.2 The element should not require additional ASN.1 en/decoding, | 3.2 The element should not require additional ASN.1 en/decoding, | |||
because libraries to access certificate information | because libraries to access certificate information | |||
especially for embedded devices may not support extended | especially for embedded devices may not support extended | |||
ASN.1 decoding beyond predefined, mandatory fields. | ASN.1 decoding beyond predefined, mandatory fields. | |||
subjectAltName / otherName is already used with a single | subjectAltName / otherName is already used with a single | |||
string parameter for several otherNames (see [RFC3920], | string parameter for several otherNames (see [RFC3920], | |||
[RFC7585], [RFC4985], [RFC8398]). | [RFC7585], [RFC4985], [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 to actually | |||
be an email address, hence the use of the otherName / | be an email address, hence the use of the otherName / | |||
rfc822Name option in the certificate would be inappropriate. | rfc822Name option 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.1.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 | |||
[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(IANA1) } | |||
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) security(5) | { iso(1) identified-organization(3) dod(6) internet(1) | |||
mechanisms(5) pkix(7) id-mod(0) id-mod-pkix1-implicit-02(59) } | security(5) mechanisms(5) pkix(7) id-mod(0) | |||
id-mod-pkix1-implicit-02(59) } | ||||
id-pkix | id-pkix | |||
FROM PKIX1Explicit-2009 | FROM PKIX1Explicit-2009 | |||
{ iso(1) identified-organization(3) dod(6) internet(1) security(5) | { iso(1) identified-organization(3) dod(6) internet(1) | |||
mechanisms(5) pkix(7) id-mod(0) id-mod-pkix1-explicit-02(51) } ; | security(5) mechanisms(5) pkix(7) id-mod(0) | |||
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 IANA2 } | |||
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.1.2 | |||
END | END | |||
6.1.3. ACP domain membership check | Figure 3 | |||
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 [RFC7296], section | |||
2.15. | 2.15. | |||
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 TA associated | |||
with the ACP node's ACP certificate (see Section 6.1.4 below). | with the ACP node's ACP certificate (see Section 6.2.4 below). | |||
This includes verification of the validity (lifetime) of the | This includes verification of the validity (lifetime) of the | |||
certificates in the path. | certificates in the path. | |||
3: If the peer's certificate indicates a Certificate Revocation List | ||||
3: If the node certificate indicates a Certificate Revocation List | ||||
(CRL) Distribution Point (CRLDP) ([RFC5280], section 4.2.1.13) or | (CRL) Distribution Point (CRLDP) ([RFC5280], section 4.2.1.13) or | |||
Online Certificate Status Protocol (OCSP) responder ([RFC5280], | Online Certificate Status Protocol (OCSP) responder ([RFC5280], | |||
section 4.2.2.1), then the peer's certificate MUST be valid | section 4.2.2.1), then the peer's certificate MUST be valid | |||
according to those mechanisms when they are available: An OCSP | according to those mechanisms when they are available: An OCSP | |||
check for the peer's certificate across the ACP must succeed or | check for the peer's certificate across the ACP must succeed or | |||
the peer certificate must not be listed in the CRL retrieved from | the peer certificate must not be listed in the CRL retrieved from | |||
the CRLDP. These mechanisms are not available when the node has | the CRLDP. These mechanisms are not available when the ACP node | |||
no ACP or non-ACP connectivity to retrieve a current CRL or access | has no ACP or non-ACP connectivity to retrieve a current CRL or | |||
an OCSP responder and the security association protocol itself has | access an OCSP responder and the security association protocol | |||
also no way to communicate CRL or OCSP check. | itself has also no way to communicate CRL or OCSP check. | |||
Retries to learn revocation via OCSP/CRL SHOULD be made using the | ||||
Retries to learn revocation via OCSP/CRL SHOULD be made using | same backoff as described in Section 6.7. If and when the ACP | |||
the same backoff as described in Section 6.6. If and when the ACP | ||||
node then learns that an ACP peer's certificate is invalid for | node then learns that an ACP peer's certificate is invalid for | |||
which rule 3 had to be skipped during ACP secure channel | which rule 3 had to be skipped during ACP secure channel | |||
establishment, then the ACP secure channel to that peer MUST be | establishment, then the ACP secure channel to that peer MUST be | |||
closed even if this peer is the only connectivity to access CRL/ | closed even if this peer is the only connectivity to access CRL/ | |||
OCSP. This applies (of course) to all ACP secure channels to this | OCSP. This applies (of course) to all ACP secure channels to this | |||
peer if there are multiple. The ACP secure channel connection | peer if there are multiple. The ACP secure channel connection | |||
MUST be retried periodically to support the case that the neighbor | MUST be retried periodically to support the case that the neighbor | |||
acquires a new, valid certificate. | acquires a new, valid certificate. | |||
4: The peer's certificate has a syntactically valid acp-node-name | ||||
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 | 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). | 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 candidate peer certificate's acp-node-name has a non-empty | 5: The acp-address field of the candidate peer certificate's | |||
acp-address field (either 32HEXLC or 0, according to Figure 2). | AcpNodeName is not omitted but either 32HEXDIG or 0, according 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 empty 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 the | |||
ACP via ACP connect (Section 8.1) | ACP via ACP connect (Section 8.1) | |||
The special value 0 in an ACP certificates acp-address field is used | The special value 0 in an ACP certificates acp-address field is used | |||
for nodes that can and should determine their ACP address through | for nodes that can and should determine their ACP address through | |||
other mechanisms than learning it through the acp-address field in | other mechanisms than learning it through the acp-address field in | |||
their ACP certificate. These ACP nodes are permitted to establish | their ACP certificate. These ACP nodes are permitted to establish | |||
ACP secure channels. Mechanisms for those nodes to determine their | ACP secure channels. Mechanisms for those nodes to determine their | |||
ACP address are outside the scope of this specification, but this | ACP address are outside the scope of this specification, but this | |||
option is defined here so that any ACP nodes can build ACP secure | option is defined here so that any ACP nodes can build ACP secure | |||
channels to them according to Rule 5. | channels to them according to Rule 5. | |||
The optional rsub field of the AcpNodeName is not relevant to the ACP | ||||
domain membership check because it only serves to structure routing | ||||
and addressing within an ACP but not to segment mutual | ||||
authentication/authorization (hence the name "routing subdomain"). | ||||
In summary: | In summary: | |||
Steps 1...4 constitute standard certificate validity verification | * Steps 1...4 constitute standard certificate validity verification | |||
and private key authentication as defined by [RFC5280] and | and private key authentication as defined by [RFC5280] and | |||
security association protocols (such as Internet Key Exchange | security association protocols (such as Internet Key Exchange | |||
Protocol version 2 IKEv2 [RFC7296] when leveraging certificates. | Protocol version 2 IKEv2 [RFC7296] when leveraging certificates. | |||
* Steps 1...4 do not include verification of any pre-existing form | ||||
Steps 1...4 do not include verification of any pre-existing form | ||||
of non-public-key-only based identity elements of a certificate | of non-public-key-only based identity elements of a certificate | |||
such as a web servers domain name prefix often encoded in | such as a web servers domain name prefix often encoded in | |||
certificate common name. Steps 5 and 6 are the equivalent steps. | certificate common name. Step 5 is an equivalent step for the | |||
AcpNodeName. | ||||
Step 4 Constitutes standard CRL/OCSP checks refined for the case | * Step 4 constitutes standard CRL/OCSP checks refined for the case | |||
of missing connectivity and limited functionality security | of missing connectivity and limited functionality security | |||
association protocols. | association protocols. | |||
* Steps 1...4 authorize to build any secure connection between | ||||
Step 5 Checks for the presence of an ACP identity for the peer. | ||||
Steps 1...5 authorize to build any secure connection between | ||||
members of the same ACP domain except for ACP secure channels. | members of the same ACP domain except for ACP secure channels. | |||
* Step 5 is the additional verification of the presence of an ACP | ||||
Step 6 is the additional verification of the presence of an ACP | address as necessary for ACP secure channels. | |||
address. | * Steps 1...5 therefore authorize to build an ACP secure channel. | |||
Steps 1...6 authorize to build 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. | |||
6.1.3.1. Realtime clock and Time Validation | 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 time stamps when performing ACP domain membership check | |||
such as as the certificate validity period in step 1. and the | such as as the certificate validity period in step 1. and the | |||
respective times in step 4 for revocation information (e.g., | respective times in step 4 for revocation information (e.g., | |||
signingTimes in CMS signatures). | signingTimes in 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 time stamp | |||
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 | |||
skipping to change at page 33, line 23 ¶ | skipping to change at page 33, line 27 ¶ | |||
their link-local addresses SHOULD primarily run NTP across the ACP | their link-local addresses SHOULD primarily run NTP across the ACP | |||
and provide NTP time across the ACP only when they have a trusted | and provide NTP time across the ACP only when they have a trusted | |||
time source. Details for such NTP procedures are beyond the scope of | time source. Details for such NTP procedures are beyond the scope of | |||
this specification. | this specification. | |||
Beside ACP domain membership check, the ACP itself has no dependency | Beside ACP domain membership check, the ACP itself has no dependency | |||
against knowledge of the current time, but protocols and services | against knowledge of the current time, but protocols and services | |||
using the ACP will likeley have the need to know the current time. | using the ACP will likeley have the need to know the current time. | |||
For example event logging. | For example event logging. | |||
6.1.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 certificate of the TA to | |||
perform certificate path validation as required by Section 6.1.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 | |||
enrolment of a candidate ACP node. ACP nodes MUST also support | enrollment of a candidate ACP node. ACP nodes MUST also support | |||
renewal of TA information via Enrollment over Secure Transport (EST, | renewal of TA information via EST as described below in | |||
see [RFC7030]), as described below in Section 6.1.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 not only a single, | |||
but multiple certificates as required for dealing with CA certificate | but multiple certificates as required for dealing with CA certificate | |||
renewals as explained in Section 4.4 of CMP ([RFC4210]). | renewals as explained in Section 4.4 of 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 (leaf/end-entity) followed by zero or more intermediate | |||
CA certificates and ending with the TA information, which are | CA certificates and ending with the TA information, which are | |||
typically one or two the self-signed certificates of the TA. The CA | typically one or two the self-signed certificates of the TA. The CA | |||
that signs the ACP certificate is called the assigning CA. If there | that signs the ACP certificate is called the assigning CA. If there | |||
skipping to change at page 34, line 32 ¶ | skipping to change at page 34, line 37 ¶ | |||
requirements typically exclude public CA, because they in general do | requirements typically exclude public CA, because they in general do | |||
not support the notion of trusted registrars vouching for the | not support the notion of trusted registrars vouching for the | |||
correctness of the fields of a requested certificate or would by | correctness of the fields of a requested certificate or would by | |||
themselves not be capable to validate the correctness of otherName / | themselves not be capable to validate the correctness of otherName / | |||
AcpNodeName. | AcpNodeName. | |||
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 TA. Registrars must then know which ACP a node needs to | |||
be enrolled into. | be enrolled into. | |||
6.1.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 ("Enrollment over Secure Transport", see | information via EST and MAY support other mechanisms. See | |||
[RFC7030]) and MAY support other mechanisms. An ACP network MUST | Section 6.1 for TLS requirements. An ACP network MUST have at least | |||
have at least one ACP node supporting EST server functionality across | one ACP node supporting EST server functionality across the ACP so | |||
the ACP so that EST renewal is useable. | that EST renewal is useable. | |||
ACP nodes SHOULD be able to remember the IPv6 locator parameters of | ACP nodes SHOULD be able to remember the IPv6 locator parameters of | |||
the O_IPv6_LOCATOR in GRASP of the EST server from which they last | the O_IPv6_LOCATOR in GRASP of the EST server from which they last | |||
renewed their ACP certificate. They SHOULD provide the ability for | renewed their ACP certificate. They SHOULD provide the ability for | |||
these EST server parameters to also be set by the ACP Registrar (see | these EST server parameters to also be set by the ACP Registrar (see | |||
Section 6.10.7) that initially enrolled the ACP device with its ACP | Section 6.11.7) that initially enrolled the ACP device with its ACP | |||
certificate. When BRSKI (see | certificate. When BRSKI (see | |||
[I-D.ietf-anima-bootstrapping-keyinfra]) is used, the IPv6 locator of | [I-D.ietf-anima-bootstrapping-keyinfra]) is used, the IPv6 locator of | |||
the BRSKI registrar from the BRSKI TLS connection SHOULD be | the BRSKI registrar from the BRSKI TLS connection SHOULD be | |||
remembered and used for the next renewal via EST if that registrar | remembered and used for the next renewal via EST if that registrar | |||
also announces itself as an EST server via GRASP (see next section) | also announces itself as an EST server via GRASP (see next section) | |||
on its ACP address. | on its ACP address. | |||
The EST server MUST present a certificate that is passing ACP domain | The EST server MUST present a certificate that is passing ACP domain | |||
membership check in its TLS connection setup (Section 6.1.3, rules | membership check in its TLS connection setup (Section 6.2.3, rules | |||
1..4, not rule 5 as this is not for an ACP secure channel setup). | 1..4, not rule 5 as this is not for an ACP secure channel setup). | |||
The EST server certificate MUST also contain the id-kp-cmcRA | The EST server certificate MUST also contain the id-kp-cmcRA | |||
[RFC6402] extended key usage extension and the EST client MUST check | [RFC6402] extended key usage attribute 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 for each of these ACP domains a separate certificate 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), but | |||
this is easily automated on the EST server as long as the CA does not | this is easily automated on the EST server as long as the CA does not | |||
restrict registrars to request certificates with the id-kp-cmcRA | restrict registrars to request certificates with the id-kp-cmcRA | |||
extended usage extension for themselves. | extended usage extension for themselves. | |||
6.1.5.1. GRASP objective for EST server | 6.2.5.1. GRASP objective for EST server | |||
ACP nodes that are EST servers MUST announce their service via GRASP | ACP nodes that are EST servers MUST announce their service via GRASP | |||
in the ACP through M_FLOOD messages. See [I-D.ietf-anima-grasp], | in the ACP through M_FLOOD messages. See [I-D.ietf-anima-grasp], | |||
section 2.8.11 for the definition of this message type: | section 2.8.11 for the definition of this message type: | |||
Example: | 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 3: GRASP SRV.est example | Figure 4: GRASP SRV.est example | |||
The formal definition of the objective in Concise data definition | The formal definition of the objective in Concise data definition | |||
language (CDDL) (see [RFC8610]) is as follows: | language (CDDL) (see [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 GRASP spec | |||
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 4: 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 | |||
[RFC7030] compliant EST server because "est" is an [RFC6335] | [RFC7030] compliant EST server because "est" is an [RFC6335] | |||
registered service name for [RFC7030]. Objective-value MUST be | registered service name for [RFC7030]. Objective-value MUST be | |||
ignored if present. Backward compatible extensions to [RFC7030] MAY | ignored if present. Backward compatible extensions to [RFC7030] MAY | |||
be indicated through objective-value. Non [RFC7030] compatible | be indicated through objective-value. Non [RFC7030] compatible | |||
certificate renewal options MUST use a different objective-name. | certificate renewal options MUST use a different objective-name. | |||
Non-recognized objective-values (or parts thereof if it is a | Non-recognized objective-values (or parts thereof if it is a | |||
structure partially understood) MUST be ignored. | structure partially understood) MUST be ignored. | |||
skipping to change at page 36, line 46 ¶ | skipping to change at page 36, line 46 ¶ | |||
three consecutive messages can be dropped before considering an | three consecutive messages can be dropped before considering an | |||
announcement expired. In the example above, the ttl is 210000 msec, | announcement expired. In the example above, the ttl is 210000 msec, | |||
3.5 times 60 seconds. When a service announcer using these | 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). | |||
6.1.5.2. Renewal | 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 | ||||
EST renewal/rekeying operations for the ACP domain. See also | ||||
Section 11. | ||||
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 which 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 has ample time | |||
to investigate and resolve any problems that causes a node to not | to investigate and resolve any problems that causes 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.1.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). The CRLDP SHOULD use an ACP certificate for its | (see Section 8.1). | |||
HTTPs connections. The connecting ACP node SHOULD verify that the | ||||
CRLDP certificate used during the HTTPs connection has the same ACP | ||||
address as indicated in the CRLDP URL of the node's ACP certificate | ||||
if the CRLDP URL uses an IPv6 address. | ||||
6.1.5.4. Lifetimes | When using a private PKI for ACP certificates, the CRL may be need- | |||
to-know, for example to prohibit insight into the operational | ||||
practices of the domain by tracking the growth of the CRL. In this | ||||
case, HTTPS may be chosen to provide confidentiality, especially when | ||||
making the CRL available via the Data-Plane. Authentication and | ||||
authorization SHOULD use ACP certificates and ACP domain membership | ||||
check. The CRLDP MAY omit the CRL verification during authentication | ||||
of the peer to permit retrieval of the CRL by an ACP node with | ||||
revoked ACP certificate. This can allow for that (ex) ACP node to | ||||
quickly discover its ACP certificate revocation. This may violate | ||||
the desired need-to-know requirement though. ACP nodes MAY support | ||||
CRLDP operations via HTTPS. | ||||
6.2.5.4. Lifetimes | ||||
Certificate lifetime may be set to shorter lifetimes than customary | Certificate lifetime may be set to shorter lifetimes than customary | |||
(1 year) because certificate renewal is fully automated via ACP and | (1 year) because certificate renewal is fully automated via ACP and | |||
EST. The primary limiting factor for shorter certificate lifetimes | EST. The primary limiting factor for shorter certificate lifetimes | |||
is load on the EST server(s) and CA. It is therefore recommended | is load on the EST server(s) and CA. It is therefore recommended | |||
that ACP certificates are managed via a CA chain where the assigning | that ACP certificates are managed via a CA chain where the assigning | |||
CA has enough performance to manage short lived certificates. See | CA has enough performance to manage short lived certificates. See | |||
also Section 9.2.4 for discussion about an example setup achieving | also Section 9.2.4 for discussion about an example setup achieving | |||
this. See also [I-D.ietf-acme-star]. | this. See also [I-D.ietf-acme-star]. | |||
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 to simplify the | |||
overall certificate maintenance infrastructure. | 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 ("Bootstrapping Remote Secure Key | |||
Infrastructures", see [I-D.ietf-anima-bootstrapping-keyinfra]). | Infrastructures", see [I-D.ietf-anima-bootstrapping-keyinfra]). | |||
6.1.5.5. Re-enrollment | 6.2.5.5. Re-enrollment | |||
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 re-enrolling candidate ACP node. | |||
In this role, the node does maintain the TA and certificate chain | In this role, the node does maintain 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 | re-enrollment, and attempts (or waits) to get re-enrolled with a new | |||
ACP certificate. The details depend on the mechanisms/protocols used | ACP certificate. The details depend on the mechanisms/protocols used | |||
by the ACP Registrars. | by the ACP Registrars. | |||
Please refer to Section 6.10.7 and | Please refer to Section 6.11.7 and | |||
[I-D.ietf-anima-bootstrapping-keyinfra] for explanations about ACP | [I-D.ietf-anima-bootstrapping-keyinfra] for explanations about ACP | |||
Registrars and vouchers as used in the following text. When ACP is | Registrars and vouchers as used in the following text. When ACP 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 re- | |||
enrolling candidate ACP node would attempt to enroll like a candidate | enrolling candidate ACP node would attempt 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 nodes 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 | |||
skipping to change at page 39, line 9 ¶ | skipping to change at page 39, line 23 ¶ | |||
its IDevID certificate as defined in BRSKI during the TLS connection | its IDevID certificate as defined in BRSKI during the TLS connection | |||
setup. | setup. | |||
Both when the BRSKI connection is attempted with the old ACP | Both when the BRSKI connection is attempted with the old ACP | |||
certificate or the IDevID certificate, the re-enrolling candidate ACP | certificate or the IDevID certificate, the re-enrolling 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 re-enrolling 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. | |||
To prohibit attacks that attempt to force the ACP node to forget its | ||||
prior (expired) certificate and TA, the ACP node should alternate | ||||
between attempting to re-enroll using its old keying material and | ||||
attempting to re-enroll with its IDevID and requesting a voucher. | ||||
When other mechanisms than BRSKI are used for ACP certificate | When other mechanisms than BRSKI are used for ACP certificate | |||
enrollment, the principles of the re-enrolling candidate ACP node are | enrollment, the principles of the re-enrolling candidate ACP node are | |||
the same. The re-enrolling candidate ACP node attempts to | the same. The re-enrolling candidate ACP node attempts to | |||
authenticate any ACP Registrar peers during re-enrollment protocol/ | authenticate any ACP Registrar peers during re-enrollment protocol/ | |||
mechanisms via its existing certificate chain/TA information and | mechanisms via its existing certificate chain/TA information and | |||
provides its existing ACP certificate and other identification (such | provides its existing ACP certificate and other identification (such | |||
as the IDevID certificate) as necessary to the registrar. | 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 | enrollment mechanisms are used that unlike BRSKI do not leverage a | |||
voucher mechanism to authenticate the ACP registrar and where | mechanism (such as the voucher in BRSKI) to authenticate the ACP | |||
therefore the injection of certificate failures could otherwise make | registrar and where therefore the injection of certificate failures | |||
the ACP node easily attackable remotely. | could otherwise make the ACP node easily attackable remotely by | |||
returning the ACP node to a "duckling" state in which it accepts to | ||||
be enrolled by any network it connects to. The (expired) ACP | ||||
certificate and ACP TA SHOULD therefore be maintained and used for | ||||
re-enrollment until new keying material is enrolled. | ||||
When using BRSKI or other protocol/mechanisms supporting vouchers, | When using BRSKI or other protocol/mechanisms supporting vouchers, | |||
maintaining existing TA information allows for re-enrollment of | maintaining existing TA information allows for re-enrollment of | |||
expired ACP certificates to be more lightweight, especially in | expired ACP certificates to be more lightweight, 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.1.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/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. | |||
For connection failures to determine the ACP certificate as the | For connection failures to determine the ACP certificate as the | |||
culprit, the peer should pass the domain membership check | culprit, the peer should pass the domain membership check | |||
(Section 6.1.3) and other reasons for the connection failure can be | (Section 6.2.3) and other reasons for the connection failure can be | |||
excluded because of the connection error diagnostics. | excluded because of the connection error diagnostics. | |||
This type of failure can happen during setup/refresh of a secure ACP | This type of failure can happen during setup/refresh of a secure ACP | |||
channel connections or any other use of the ACP certificate, such as | channel connections or any other use of the ACP certificate, such as | |||
for the TLS connection to an EST server for the renewal of the ACP | for the TLS connection to an EST server for the renewal of the ACP | |||
domain certificate. | domain certificate. | |||
Example reasons for failing certificates that the ACP node can only | Example reasons for failing certificates that the ACP node can only | |||
discover through connection failure are that the domain certificate | discover through connection failure are that 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 self-diagnose this condition | |||
directly. Revocation information or clock synchronization may only | directly. Revocation information or clock synchronization may only | |||
be available across the ACP, but the ACP node cannot build ACP secure | be available across the ACP, but the ACP node cannot build ACP secure | |||
channels because ACP peers reject the ACP node's domain certificate. | channels because ACP peers reject the ACP node's domain certificate. | |||
ACP nodes SHOULD support the option to determines whether its ACP | ACP nodes SHOULD support the option to determines 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 re-enrolling candidate ACP node as explained above | |||
(Section 6.1.5.5). | (Section 6.2.5.5). | |||
6.2. 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 | |||
(identifier of the node inside the ACP, see Section 6.10.3 and | (identifier of the node inside the ACP, see Section 6.11.3 and | |||
Section 6.10.5), interface on which neighbor was discovered (by GRASP | Section 6.11.5), interface on which neighbor was discovered (by GRASP | |||
as explained below), link-local IPv6 address of neighbor on that | as explained below), link-local IPv6 address of neighbor on that | |||
interface, certificate (including acp-node-name). An ACP node MUST | interface, certificate (including acp-node-name). An ACP node MUST | |||
maintain this adjacency table. This table is used to determine to | maintain this adjacency table. This table is used to determine to | |||
which neighbor an ACP connection is established. | which neighbor an ACP connection is established. | |||
Where the next ACP node is not directly adjacent (i.e., not on a link | Where 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.1.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, independently of their domain and trust status. The next | |||
step determines to which of those ACP nodes an ACP connection should | step determines to which of those ACP nodes an ACP connection should | |||
be established. | be established. | |||
6.3. Neighbor Discovery with DULL GRASP | 6.4. Neighbor Discovery with DULL GRASP | |||
[RFC Editor: GRASP draft is in RFC editor queue, waiting for | [RFC Editor: GRASP draft is in RFC editor queue, waiting for | |||
dependencies, including ACP. Please ensure that references to I- | dependencies, including ACP. Please ensure that references to I- | |||
D.ietf-anima-grasp that include section number references (throughout | D.ietf-anima-grasp that include section number references (throughout | |||
this document) will be updated in case any last-minute changes in | this document) will be updated in case any last-minute changes in | |||
GRASP would make those section references change. | 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 [I-D.ietf-anima-grasp] for its formal definition. | |||
skipping to change at page 41, line 21 ¶ | skipping to change at page 41, line 44 ¶ | |||
interfaces MUST be limited so that at first only IPv6 StateLess | interfaces MUST be limited so that at first only IPv6 StateLess | |||
Address Auto Configuration (SLAAC - [RFC4862]) and DULL GRASP work | Address Auto Configuration (SLAAC - [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 - but | |||
not any other unnecessary traffic (e.g., no other link-local IPv6 | 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 Multicast Listener | |||
Discovery Version 2 (MLDv2, see [RFC3810]) to announce the desire to | Discovery Version 2 (MLDv2, see [RFC3810]) to announce the desire to | |||
receive packets for that address. Otherwise DULL GRASP could fail to | receive packets for that address. Otherwise DULL GRASP could fail to | |||
operate correctly in the presence of MLD snooping, non-ACP enabled L2 | operate correctly in the presence of MLD snooping ([RFC4541]) | |||
switches ([RFC4541]) - because those would stop forwarding DULL GRASP | switches that are not ACP supporting/enabled - because those switches | |||
packets. Switches not supporting MLD snooping simply need to operate | would stop forwarding DULL GRASP packets. Switches not supporting | |||
as pure L2 bridges for IPv6 multicast packets for DULL GRASP to work. | 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/disable ACP at node and | |||
interface level. See Section 8.2.2 for more details about tunnels | interface level. See Section 8.2.2 for more details about tunnels | |||
(typical non-native interfaces). See Section 7 for how ACP should be | (typical non-native interfaces). See Section 7 for how ACP should be | |||
extended on devices operating (also) as L2 bridges. | extended 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 | |||
skipping to change at page 42, line 5 ¶ | skipping to change at page 42, line 26 ¶ | |||
discover both a bootstrap proxy and ACP neighbor at the same time. | discover both a bootstrap proxy and 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 | message, a locator consisting of a specific link-local IP address, IP | |||
protocol number and port number will be distributed with the flooded | protocol number and port number will be distributed with the flooded | |||
objective. An example of the message is informally: | 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 5: GRASP AN_ACP example | Figure 6: GRASP AN_ACP 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 the GRASP specification | |||
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 | objective-value = method / [ method, extensions ] | |||
method = "IKEv2" / "DTLS" ; or future standard methods | extensions = 1*any | |||
method = method-name / [ method-name, method-params] | ||||
method-name = "IKEv2" / "DTLS" | any | ||||
method-params = 1*any | ||||
Figure 6: 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 that | |||
the objective would be cached by ACP nodes even when two out of three | the objective would be cached by ACP nodes even when two out of three | |||
messages are dropped in transit. | 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 'objective-value' parameter is a string indicating the protocol | The method-name in the 'objective-value' parameter is a string | |||
available at the specified or implied locator. It is a protocol | indicating the protocol available at the specified or implied | |||
supported by the node to negotiate a secure channel. IKEv2 as shown | locator. It is a protocol supported by the node to negotiate a | |||
above is the protocol used to negotiate an IPsec secure channel. | secure channel. IKEv2 as shown above is the protocol used to | |||
negotiate an IPsec secure channel. | ||||
Method-params allows to carry method specific parameters. This | ||||
specification does not define any method-params for "IKEv2" or | ||||
"DTLS". Method-params for these two methods that are not understood | ||||
by an ACP node MUST be ignored by it. | ||||
extensions allows to define method independent parameters. This | ||||
specification does not define any extensions. 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 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 Internet Protocol | |||
security architecture (IPsec) connection. GRASP therefore indicates | security architecture (IPsec) connection. GRASP therefore indicates | |||
"IKEv2" and not "IPsec". If "IPsec" was used, this too could mean | "IKEv2" and not "IPsec". If "IPsec" was used, this too could mean | |||
use of the obsolete older version IKE (v1) ([RFC2409]). IKEv2 has an | use of the obsolete older version IKE (v1) ([RFC2409]). IKEv2 has an | |||
IANA assigned port number 500, but in the above example, the | IANA assigned port number 500, but in the above example, the | |||
candidate ACP neighbor is offering ACP secure channel negotiation via | candidate ACP neighbor is offering ACP secure channel negotiation via | |||
IKEv2 on port 15000 (purely to show through the example that GRASP | IKEv2 on port 15000 (purely to show through the example that GRASP | |||
allows to indicate the port number and it does not have to be the | allows to indicate the port number and it does not have to be the | |||
IANA assigned one). | IANA assigned one). | |||
"DTLS" indicates DTLS 1.2. This can also be a newer version of the | There is no default UDP port for DTLS, it is always locally assigned | |||
protocol as long as it can negotiate down to version 1.2 in the | by the node. For further details about the "DTLS" secure channel | |||
presence of a peer only speaking DTLS 1.2. There is no default UDP | protocol, see Section 6.8.4. | |||
port for DTLS, it is always locally assigned by the node. For | ||||
details, see Section 6.7.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 the | |||
objective-values of "IKEv2" and "DTLS". There is no distinction | objective-values of "IKEv2" and "DTLS". There is no distinction | |||
between IKEv2 native and GRE-IKEv2 because this is purely negotiated | between IKEv2 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 5. | use a single GRASP M_FLOOD message as shown in Figure 6. | |||
The use of DULL GRASP primarily serves to discover the link-local | ||||
IPv6 address of candidate ACP peers on subnets. The signaling of the | ||||
supported secure channel option is primarily for diagnostic purposes, | ||||
but it is also necessary for discovery when the protocol has no well- | ||||
known transport address, such as in the case of DTLS. | ||||
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 | ||||
channel protocol on different transport addresses, it SHOULD prefer | ||||
connecting via the well-known transport address if the secure channel | ||||
method has one (such as UDP port 500 for IKEv2). | ||||
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 / 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 non- | |||
standard port they are running on). It is stored in the ACP | standard port they are running on). It is stored in the ACP | |||
Adjacency Table (see Section 6.2), 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 DULL GRASP objective described intentionally does not | |||
include ACP nodes ACP certificate even though this would be useful | include the ACP node's ACP certificate even though this would be | |||
for diagnostics and to simplify the security exchange in ACP secure | useful for diagnostics and to simplify the security exchange in ACP | |||
channel security association protocols (see Section 6.7). The reason | secure channel security association protocols (see Section 6.8). The | |||
is that DULL GRASP messages are periodically multicasted across IPv6 | reason is that DULL GRASP messages are periodically multicasted | |||
subnets and full certificates could easily lead to fragmented IPv6 | across IPv6 subnets and full certificates could easily lead to | |||
DULL GRASP multicast packets due to the size of a certificate. This | fragmented IPv6 DULL GRASP multicast packets due to the size of a | |||
would be highly undesirable. | certificate. This would be highly undesirable. | |||
6.4. 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.7 explains how ACP | This includes all routing subdomains. Appendix A.7 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.5. Channel Selection | 6.6. Channel Selection | |||
To avoid attacks, initial discovery of candidate ACP peers cannot | To avoid attacks, initial discovery of candidate ACP peers cannot | |||
include any non-protected negotiation. To avoid re-inventing and | include any non-protected negotiation. To avoid re-inventing 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 can only be to try | |||
first to establish a security association with that neighbor using a | first to establish a security association with that neighbor using a | |||
well-known security association method. | well-known security association method. | |||
From the use-cases it seems clear that not all type of ACP nodes can | From the use-cases it seems clear that not all type 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 or are able to support or | |||
skipping to change at page 45, line 16 ¶ | skipping to change at page 46, line 28 ¶ | |||
single common mandatory to implement (MTI) protocol, ACP nodes MUST | single common mandatory to implement (MTI) protocol, ACP nodes MUST | |||
try all the ACP secure channel protocols it supports and that are | try all the ACP secure channel protocols it supports and that are | |||
feasible because the candidate ACP neighbor also announced them via | feasible because the candidate ACP neighbor also announced them via | |||
its AN_ACP GRASP parameters (these are called the "feasible" ACP | its AN_ACP GRASP parameters (these are called the "feasible" ACP | |||
secure channel protocols). | secure 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: | |||
o 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 | ||||
specific peer IPv6 address passes peer authentication, the two | ||||
peers know each other's certificate because those ACP certificates | ||||
are used by all secure channel protocols for mutual | ||||
authentication. The peer with the higher Node-ID in 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 | ||||
Follower. The Decider selects which secure channel protocol to | ||||
ultimately use. | ||||
* The Follower becomes passive: it does not attempt to further | ||||
initiate ACP secure channel protocol connections with the Decider | ||||
and does not consider it to be an error when the Decider closes | ||||
secure channels. The Decider becomes the active party, continues | ||||
to attempt setting up secure channel protocols with the Follower. | ||||
This process terminates when the Decider arrives at the "best" ACP | ||||
secure channel connection option that also works with the Follower | ||||
("best" from the Deciders point of view). | ||||
* 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- | ||||
address (note that this specification does not fully define the | ||||
behavior of ACP secure channel negitation for nodes with a "0" ACP | ||||
address field, it only defines interoperability with such ACP | ||||
nodes). | ||||
o Once the first secure channel protocol succeeds, the two peers | In a simple example, ACP peer Node 1 attempts to initiate an IPsec | |||
know each other's certificates because they are used by all secure | via IKEv2 connection to peer Node 2. The IKEv2 authentication | |||
channel protocols for mutual authentication. The node with the | succeeds. Node 1 has the lower ACP address and becomes the Follower. | |||
lower Node-ID in the ACP address of its ACP certificate becomes | Node 2 becomes the Decider. IKEv2 might not be the preferred ACP | |||
Bob, the one with the higher Node-ID in the certificate Alice. A | secure channel protocol for the Decider Node 2. Node 2 would | |||
peer with an empty ACP address field in its ACP certificate | therefore proceed to attempt secure channel setups with (in its view) | |||
becomes Bob (this specification does not define such peers, only | more preferred protocol options (e.g., DTLS/UDP). If any such | |||
the interoperability with them). | preferred ACP secure channel connection of the Decider succeeds, it | |||
would close the IPsec connection. If Node 2 has no preferred | ||||
o Bob becomes passive, he does not attempt to further initiate ACP | protocol option over IPsec, or no such connection attempt from Node 2 | |||
secure channel protocols with Alice and does not consider it to be | to Node 1 succeeds, Node 2 would keep the IPsec connection and use | |||
an error when Alice closes secure channels. Alice becomes the | it. | |||
active party, continues to attempt setting up secure channel | ||||
protocols with Bob until she arrives at the best one from her view | ||||
that also works with Bob. | ||||
For example, originally Bob could have been the initiator of one ACP | The Decider SHOULD NOT send actual payload packets across a secure | |||
secure channel protocol that Bob prefers and the security association | channel until it has decided to use it. The Follower MAY delay | |||
succeeded. The roles of Bob and Alice are then assigned and the | linking the ACP secure channel into the ACP virtual interface until | |||
connection setup is completed. The protocol could for example be | it sees the first payload packet from the Decider up to a maximum of | |||
IPsec via IKEv2 ("IP security", see [RFC4301] and "Internet Key | 5 seconds to avoid unnecessarily linking a secure channel that will | |||
Exchange protocol version 2", see [RFC7296]. It is now up to Alice | be terminated as undesired by the Decider shortly afterwards. | |||
to decide how to proceed. Even if the IPsec connection from Bob | ||||
succeeded, Alice might prefer another secure protocol over IPsec | ||||
(e.g., FOOBAR), and try to set that up with Bob. If that preference | ||||
of Alice succeeds, she would close the IPsec connection. If no | ||||
better protocol attempt succeeds, she would keep the IPsec | ||||
connection. | ||||
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 easier distinguish which of the two competing connections | included to more easily distinguish which of the two competing | |||
the step belong to, one initiated by Node 1, one initiated by Node 2. | connections the step belong to, one initiated by Node 1, one | |||
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 | [2] Node 2 sends GRASP AN_ACP message to announce itself | |||
[3] Node 2 receives [1] from Node 1 | [3] Node 2 receives [1] from Node 1 | |||
[4:C1] Because of [3], Node 2 starts as initiator on its | [4:C1] Because of [3], Node 2 starts as initiator on its | |||
preferred secure channel protocol towards Node 1. | preferred secure channel protocol towards Node 1. | |||
Connection C1. | Connection C1. | |||
[5] Node 1 receives [2] from Node 2 | [5] Node 1 receives [2] from Node 2 | |||
[6:C2] Because of [5], Node 1 starts as initiator on its | [6:C2] Because of [5], Node 1 starts as initiator on its | |||
preferred secure channel protocol towards Node 2. | preferred secure channel protocol towards Node 2. | |||
Connection C2. | Connection C2. | |||
[7:C1] Node1 and Node2 have authenticated each others | [7:C1] Node1 and Node2 have authenticated each others | |||
certificate on connection C1 as valid ACP peers. | certificate on connection C1 as valid ACP peers. | |||
[8:C1] Node 1 certificate has lower ACP Node-ID than Node2, | [8:C1] Node 1 certificate has lower ACP Node-ID than Node2, therefore | |||
therefore Node 1 considers itself Bob and Node 2 Alice | Node 1 considers itself the Follower and Node 2 the Decider | |||
on connection C1. Connection setup C1 is completed. | on connection C1. Connection setup C1 is completed. | |||
[9] Node 1 (Bob)) refrains from attempting any further secure | [9] Node 1 refrains from attempting any further secure channel | |||
channel connections to Node 2 (Alice) as learned from [2] | connections to Node 2 (the Decider) as learned from [2] | |||
because it knows from [8:C1] that it is Bob relative | because it knows from [8:C1] that it is the Follower | |||
to Node 1. | relative to Node 1. | |||
[10:C2] Node1 and Node2 have authenticated each others | [10:C2] Node1 and Node2 have authenticated each others | |||
certificate on connection C2 (like [7:C1]). | certificate on connection C2 (like [7:C1]). | |||
[11:C2] Node 1 certificate has lower ACP Node-ID than Node2, | [11:C2] Node 1 certificate has lower ACP Node-ID than Node2, | |||
therefore Node 1 considers itself Bob and Node 2 Alice | therefore Node 1 considers itself the Follower and Node 2 the | |||
on connection C2, but they also identify that C2 is to the | Decider on connection C2, but they also identify that C2 is | |||
same mutual peer as their C1, so this has no further impact: | to the same mutual peer as their C1, so this has no further | |||
the roles Alice and Bob where already assigned between these | impact: the roles Decider and Follower where already assigned | |||
two peers by [8:C1]. | between these two peers by [8:C1]. | |||
[12:C2] Node 2 (Alice) closes C1. Node 1 (Bob) is fine with this, | [12:C2] Node 2 (the Decider) closes C1. Node 1 is fine with this, | |||
because of his role as Bob (since [8:C1]). | because of its role as the Follower (from [8:C1]). | |||
[13] Node 2 (Alice) and Node 1 (Bob) start data transfer across | [13] Node 2 (the Decider) and Node 1 (the Follower) start data | |||
C2, which makes it become a secure channel for the ACP. | transfer across C2, which makes it become a secure channel | |||
for the ACP. | ||||
Figure 7: Secure Channel sequence of steps | Figure 8: Secure Channel sequence of steps | |||
All this negotiation is in the context of an "L2 interface". Alice | All this negotiation is in the context of an "L2 interface". The | |||
and Bob will build ACP connections to each other on every "L2 | Decider and Follower will build ACP connections to each other on | |||
interface" that they both connect to. An autonomic node MUST NOT | every "L2 interface" that they both connect to. An autonomic node | |||
assume that neighbors with the same L2 or link-local IPv6 addresses | MUST NOT assume that neighbors with the same L2 or link-local IPv6 | |||
on different L2 interfaces are the same node. This can only be | addresses on different L2 interfaces are the same node. This can | |||
determined after examining the certificate after a successful | only be determined after examining the certificate after a successful | |||
security association attempt. | security association attempt. | |||
6.6. Candidate ACP Neighbor verification | The Decider SHOULD NOT suppress attempting a particular ACP secure | |||
channel protocol connection on one L2 interface because this type of | ||||
ACP secure channel connection has failed to the peer with the same | ||||
ACP certificate on another L2 interface: Not only the supported ACP | ||||
secure channel protocol options may be different on the same ACP peer | ||||
across different L2 interfaces, but also error conditions may cause | ||||
inconsistent failures across different L2 interfaces. Avoiding such | ||||
connection attempt optimizations can therefore help to increase | ||||
robustness in the case of errors. | ||||
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.1.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 a minimum delay of 10 seconds and a maximum delay | base 2 backoff with an initial retransmission time (IRT) of 10 | |||
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.5 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.7. 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.3 above described how IPv6 subnet adjacent peers are | ACP. Section 6.4 above described how IPv6 subnet adjacent peers are | |||
discovered automatically. Section 8.2 describes how non IPv6 subnet | discovered automatically. Section 8.2 describes how non IPv6 subnet | |||
adjacent peers can be configured. | adjacent peers can be configured. | |||
Section 6.12.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 into a separate ACP point-to-point virtual | |||
interface Section 6.12.5.2.1. When a single subnet has multiple ACP | interface Section 6.13.5.2.1. When a single subnet has multiple ACP | |||
peers this results in multiple ACP point-to-point virtual interfaces | peers this results in multiple ACP point-to-point virtual interfaces | |||
across that underlying multi-party IPv6 subnet. This can be | across that underlying multi-party IPv6 subnet. This can be | |||
optimized with ACP multi-access virtual interfaces Section 6.12.5.2.2 | optimized with ACP multi-access virtual interfaces | |||
but the benefits of that optimization may not justify the complexity | (Section 6.13.5.2.2) but the benefits of that optimization may not | |||
of that option. | justify the complexity of that option. | |||
6.7.1. General considerations | 6.8.1. General considerations | |||
Due to Channel Selection (Section 6.5), 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.7.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/receive | |||
packets across the whole ACP network. Therefore, even though the | packets across the whole ACP network. Therefore, even though the | |||
security association protocols can be different, their minimum degree | security association protocols can be different, their minimum degree | |||
of security should be comparable. | of security should be comparable. | |||
skipping to change at page 49, line 47 ¶ | skipping to change at page 51, line 8 ¶ | |||
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 only specifies with ACP connect (Section 8.1) 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.7.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.1.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.3) 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 neighbors 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). | |||
skipping to change at page 51, line 10 ¶ | skipping to change at page 52, line 20 ¶ | |||
options SHOULD be eliminated that are not necessary to support | options SHOULD be eliminated that are not necessary to support | |||
devices that are expected to be able to support the ACP to minimize | devices that are expected to be able to support the ACP to minimize | |||
implementation complexity. For example, definitions for security | implementation complexity. For example, definitions for security | |||
protocols often include old/inferior security options required only | protocols often include old/inferior security options required only | |||
to interoperate with existing devices that will not be a able to | to interoperate with existing devices that will not be a able to | |||
update to the currently preferred security options. Such old/ | update to the currently preferred security options. Such old/ | |||
inferior 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, strengthening | |||
the "weakest link" and simplifying ACP implementation overhead. | the "weakest link" and simplifying ACP implementation overhead. | |||
6.7.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 | [RFC8221] and IKEv2 [RFC8247]. These option result in stringent | |||
security properties and can exclude deprecated/legacy algorithms | security properties and can exclude deprecated/legacy algorithms | |||
because there is no need for interoperability with legacy equipment | because there is no need for interoperability with legacy equipment | |||
for ACP secure channels. Any such backward compatibility would lead | for ACP secure channels. Any such backward compatibility would lead | |||
only to increased attack surface and implementation complexity, for | only to increased attack surface and implementation complexity, for | |||
no benefit. | no benefit. | |||
6.7.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.1. | 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 | IPsec tunnel mode is required because the ACP will route/forward | |||
packets received from any other ACP node across the ACP secure | packets received from any other ACP node across the ACP secure | |||
channels, and not only its own generated ACP packets. With IPsec | channels, and not only its own generated ACP packets. With IPsec | |||
transport mode (and no additional encapsulation header in the ESP | transport mode (and no additional encapsulation header in the ESP | |||
payload), it would only be possible to send packets originated by the | 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 | 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.7.3.1.1. RFC8221 (IPsec/ESP) | 6.8.3.1.1. RFC8221 (IPsec/ESP) | |||
ACP IPsec implementations MUST comply with [RFC8221] (and its | ACP IPsec implementations MUST comply with [RFC8221] (and its | |||
updates). The requirements from above and this section amend and | updates). The requirements from above and this section amend and | |||
superseded its requirements. | superseded its requirements. | |||
AH MUST NOT be used (because it does not provide confidentiality). | The IP Authentication Header (AH) MUST NOT be used (because it does | |||
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: | |||
o 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 | ||||
o 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 | ||||
o ENCR_AES_CBC and ENCR_AES_CCM_8 MAY be supported. If either | authentication algorithm) and ENCR_AES_CCM_8 MAY be supported. If | |||
provides higher performance than ENCR_AES_GCM_16 it SHOULD be | either provides higher performance than ENCR_AES_GCM_16 it SHOULD | |||
supported. | be supported. | |||
* ENCR_CHACHA20_POLY1305 SHOULD be supported at equal or higher | ||||
o 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 choosen. | both sides is generally choosen. | |||
Explanations: | Explanations: | |||
o 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 | ||||
o ENCR_AES_GCM_16 is an authenticated encryption with associated | ||||
data (AEAD) cipher mode, so no additional ESP authentication | 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. | |||
o There is no MTI requirement against 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 | 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 | ||||
o 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 | |||
uncoverered. Unfortunately, there is currently no way to | uncoverered. 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 can not fully be adopted yet for the ACP. | ENCR_CHACHA20_POLY1305 can not 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 at potentially big drop in performance could | |||
also render the ACP inoperable. Therefore the performance | also render the ACP inoperable. Therefore the 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, and the IPsec WG has generally done a very | |||
good job of taking that into account in its recommendations. | good job of taking that into account in its recommendations. | |||
6.7.3.1.2. RFC8247 (IKEv2) | 6.8.3.1.2. RFC8247 (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, pseudo-random-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 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 ASIC hardware, and ACP | |||
nodes supporting IKEv2 are not assumed to be code-space constrained, | nodes supporting IKEv2 are not assumed to be code-space constrained, | |||
and because existing IKEv2 implementations are expected to support | and because existing IKEv2 implementations are expected to support | |||
[RFC8247] recommendations, this documents makes no attempt to | [RFC8247] recommendations, this documents makes no attempt to | |||
simplify its recommendations for use with the ACP. | 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.7.2, "X.509 Certificate - Signature" payload in IKEv2 can | Section 6.8.2, "X.509 Certificate - Signature" payload in IKEv2 can | |||
be used. It is mandatory according to [RFC7296] section 3.6. | 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.3). | Section 6.4). | |||
When CERTREQ is received from a peer, and does not indicate any of | When CERTREQ is received from a peer, and does not indicate any of | |||
this ACP nodes TA certificates, the ACP node SHOULD ignore the | this ACP nodes 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.7.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.6), 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 to obtain the diagnostic | |||
information about the neighbors certificate. | information about the neighbors certificate. | |||
In IKEv2, ACP nodes are identified by their ACP address. The | In IKEv2, ACP nodes are identified by their ACP address. 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 | |||
32HEXLC ACP address in the acp-node-name (not "0" or empty), 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.1.3 for more information about "0" or empty 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), | |||
listed as a SHOULD, is to be configured, along with the 2048-bit MODP | MUST be support. Reason: ECC provides a similar security level to | |||
(group 14). ECC provides a similar security level to finite-field | finite-field (MODP) key exchange with a shorter key length, so is | |||
(MODP) key exchange with a shorter key length, so is generally | generally preferred absent other considerations. | |||
preferred absent other considerations. | ||||
6.7.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.7.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-ACP-LL-addr) | TSi = (47, 0-65535, Initiator-IPv6-LL-addr ... Initiator-IPv6-LL- | |||
addr) | ||||
TSr = (47, 0-65535, Responder-IPv6-LL-addr ... Responder-IPv6-LL- | TSr = (47, 0-65535, Responder-IPv6-LL-addr ... Responder-IPv6-LL- | |||
addr) | addr) | |||
If IKEv2 initiator and responder support IPsec over GRE, it has to be | If IKEv2 initiator and responder support IPsec over GRE, it will be | |||
preferred over native IPsec. The ACP IPv6 traffic has to be carried | preferred over native IPsec because of the way how IKEv2 negotiates | |||
across GRE according to [RFC7676]. | 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 | ||||
IPv6 traffic has to be carried across GRE according to [RFC7676]. | ||||
6.7.4. ACP via DTLS | 6.8.4. ACP via DTLS | |||
We define the use of ACP via DTLS in the assumption that it is likely | This document defines the use of ACP via DTLS, on the assumption that | |||
the first transport encryption supported in some classes of | it is likely the first transport encryption supported in some classes | |||
constrained devices because DTLS is already used in those devices but | of constrained devices: DTLS is commonly used in constrained devices | |||
IPsec is not, and code-space may be limited. | when IPsec is not. Code-space on those devices may be also be too | |||
limited to support more than the minimum number of required | ||||
protocols. | ||||
An ACP node announces its ability to support DTLS v1.2 compliant with | An ACP node announces its ability to support DTLS version 1.2 | |||
the requirements defined in this document as an ACP secure channel | ([RFC6347]) compliant with the requirements defined in this document | |||
protocol in GRASP through the "DTLS" objective-value in the "AN_ACP" | as an ACP secure channel protocol in GRASP through the "DTLS" | |||
objective. | objective-value in the "AN_ACP" objective (see Section 6.4). | |||
To run ACP via UDP and DTLS v1.2 [RFC6347], a locally assigned UDP | To run ACP via UDP and DTLS, a locally assigned UDP port is used that | |||
port is used that is announced as a parameter in the GRASP AN_ACP | is announced as a parameter in the GRASP AN_ACP objective to | |||
objective to candidate neighbors. This port can also be any newer | candidate neighbors. This port can also be any newer version of DTLS | |||
version of DTLS as long as that version can negotiate a DTLS v1.2 | as long as that version can negotiate a DTLS v1.2 connection in the | |||
connection in the presence of an DTLS v1.2 only peer. | presence of an DTLS v1.2 only peer. | |||
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 [RFC7525] except with respect to the DTLS | considerations of BCP 195, BCP 195 [RFC7525] except with respect to | |||
version. ACP nodes supporting DTLS MUST support DTLS 1.2. They MUST | the DTLS version. ACP nodes supporting DTLS MUST support DTLS 1.2. | |||
NOT support older versions of DTLS. Implementation MUST comply with | They MUST NOT support older versions of DTLS. | |||
BCP 195, [RFC7525]. | ||||
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 BCP 195 recommendations because the expectation is that DTLS | |||
would be using software-only implementations where the ability to | would be using software-only implementations where the ability to | |||
reuse of widely adopted implementations is more important than | reuse of widely adopted implementations is more important than | |||
minizing the complexity of a hardware accelerated implementation | minizing the complexity of a hardware accelerated implementation | |||
which is known to be important for IPsec. | which is known to be important for IPsec. | |||
DTLS v1.3 ([I-D.ietf-tls-dtls13]) is "backward compatible" with DTLS | DTLS v1.3 ([I-D.ietf-tls-dtls13]) is "backward compatible" with DTLS | |||
v1.2 (see section 1. of DTLS v1.3): A DTLS implementation supporting | v1.2 (see section 1. of DTLS v1.3). A DTLS implementation supporting | |||
both DTLS v1.2 and DTLS v1.3 does comply with the above requirements | both DTLS v1.2 and DTLS v1.3 does comply with the above requirements | |||
of negoting to DTLS v1.2 in the presence of a DTLS v1.2 only peer, | of negotiating to DTLS v1.2 in the presence of a DTLS v1.2 only peer, | |||
but using DTLS v1.3 when booth peers support it. | but using DTLS v1.3 when booth peers support it. | |||
Version v1.2 is the MTI version of DTLS in this specification because | Version v1.2 is the MTI version of DTLS in this specification because | |||
o There is more experience with DTLS v1.2 across the spectrum of | * There is more experience with DTLS v1.2 across the spectrum of | |||
target ACP nodes. | target ACP nodes. | |||
* Firmware of lower end, embedded ACP nodes may not support a newer | ||||
o 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 | ||||
o There are significant changes of DTLS v1.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, code space limited devices. | |||
* The existing BCP [RFC7525] for DTLS v1.2 may equally take longer | ||||
o The existing BCP [RFC7525] for DTLS v1.2 may equally take 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 | ||||
o 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 | over DTLS v1.2 in the context of the ACP options for DTLS. For | |||
example, signaling performance improvements for session setup in | example, signaling performance improvements for session setup in | |||
DTLS v1.3 is not important for the ACP given the long-lived nature | DTLS v1.3 is not important for the ACP given the long-lived nature | |||
of ACP secure channel connections and the fact that DTLS | of ACP secure channel connections and the fact that DTLS | |||
connections are mostly link-local (short RTT). | connections are mostly link-local (short RTT). | |||
Nevertheless, newer versions of DTLS, such as DTLS v1.3 have more | Nevertheless, newer versions of DTLS, such as DTLS v1.3 have more | |||
strict security requirements and use of the latest standard protocol | strict security requirements and use of the latest standard protocol | |||
version is for IETF security standards in general recommended. | version is for IETF security standards in general recommended. | |||
Therefore, ACP implementations are advised to support all the newer | Therefore, ACP implementations are advised to support all the newer | |||
skipping to change at page 56, line 34 ¶ | skipping to change at page 58, line 4 ¶ | |||
[RFC-editor: if by the time of AUTH48, DTLS 1.3 would have evolved to | [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 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 | 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 | into the normative list of references and the above paragraph is | |||
going to be amended to say: Implementations SHOULD support | going to be amended to say: Implementations SHOULD support | |||
[DTLSv1.3-RFC]. This is not done right now, because there is no | [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 | benefit in potentially waiting in RFC-editor queue for that RFC given | |||
how the text alreayd lays out a non-nrmative desire to support | how the text alreayd lays out a non-nrmative desire to support | |||
DTLSv1.3.] | 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. Any 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 re-keying are used as they would be | |||
for any transport application relying solely on DTLS. | for any transport application relying solely on DTLS. | |||
6.7.5. ACP Secure Channel Profiles | 6.8.5. ACP Secure Channel Profiles | |||
As explained in the beginning of Section 6.5, 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 ACP | |||
nodes that do introduce such requirements. | nodes that do introduce such requirements. | |||
A baseline ACP node MUST support IPsec natively and MAY support IPsec | An ACP node supporting the "baseline" profile MUST support IPsec | |||
via GRE. If GRE is supported, it MAY be preferred over native IPec. | natively and MAY support IPsec via GRE. An ACP node supporting the | |||
A constrained ACP node that cannot support IPsec MUST support DTLS. | "constrained" profile node that cannot support IPsec MUST support | |||
An ACP node connecting an area of constrained ACP nodes with an area | DTLS. An ACP node connecting an area of constrained ACP nodes with | |||
of baseline ACP nodes needs to support IPsec and DTLS and supports | an area of baseline ACP nodes needs to support IPsec and DTLS and | |||
therefore the baseline and constrained profile. | supports therefore the baseline and constrained profile. | |||
Explanation: Not all type of ACP nodes can or need to connect | Explanation: Not all type of ACP nodes can or need to connect | |||
directly to each other or are able to support or prefer all possible | directly to each other or are able to support or prefer all possible | |||
secure channel mechanisms. For example, code space limited IoT | secure channel mechanisms. For example, code space limited IoT | |||
devices may only support DTLS because that code exists already on | devices may only support DTLS because that code exists already on | |||
them for end-to-end security, but high-end core routers may not want | them for end-to-end security, but high-end core routers may not want | |||
to support DTLS because they can perform IPsec in accelerated | to support DTLS because they can perform IPsec in accelerated | |||
hardware but would need to support DTLS in an underpowered CPU | hardware but would need to support DTLS in an underpowered CPU | |||
forwarding path shared with critical control plane operations. This | forwarding path shared with critical control plane operations. This | |||
is not a deployment issue for a single ACP across these type of nodes | is not a deployment issue for a single ACP across these type of nodes | |||
skipping to change at page 57, line 33 ¶ | skipping to change at page 59, line 5 ¶ | |||
IPsec natively with tunnel mode provides the shortest encapsulation | IPsec natively 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 the | |||
virtual interfaces required by ACP design in conjunction with secure | virtual interfaces required by ACP design in conjunction with secure | |||
channels have in the past more often been implemented for GRE than | channels have in the past more often been implemented for GRE than | |||
purely for native IPsec. | purely for native IPsec. | |||
ACP nodes need to specify in documentation the set of secure ACP | ACP nodes need to specify in documentation the set of secure ACP | |||
mechanisms they support and should declare which profile they support | mechanisms they support and should declare which profile they support | |||
according to above requirements. | according to above requirements. | |||
6.8. GRASP in the ACP | 6.9. GRASP in the ACP | |||
6.8.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 the RPL routing protocol (see | |||
Section 6.11). | 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.8.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.8.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 ([I-D.ietf-anima-grasp]), the ACP is the | |||
security and transport substrate for the GRASP instance run inside | security and transport substrate for the GRASP instance run inside | |||
the ACP ("ACP GRASP"). | the ACP ("ACP 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 | |||
skipping to change at page 58, line 32 ¶ | skipping to change at page 59, line 51 ¶ | |||
of its neighbors cease operation. | 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 would still | |||
need to be able to discover each other's objectives. When the ACP | need to be able to discover each other's objectives. When the ACP | |||
does not exist, ASAs leveraging the ACP instance of GRASP via APIs | does not exist, ASAs leveraging the ACP instance of GRASP via APIs | |||
MUST still be able to operate, and MUST be able to understand that | MUST still be able to operate, and MUST be able to understand that | |||
there is no ACP and that therefore the ACP instance of GRASP cannot | there is no ACP and that therefore the ACP instance of GRASP cannot | |||
operate. | operate. | |||
The following explanation how ACP acts as the security and transport | The following explanation how ACP acts as the security and transport | |||
substrate for GRASP is visualized in Figure 8 below. | substrate for GRASP is visualized in Figure 9 below. | |||
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 which MUST comply with [RFC7525] execept that only TLS 1.2 | via TLS. See Section 6.1 for TLS requirements. TLS mutual | |||
([RFC5246]) is REQUIRED and TLS 1.3 ([RFC8446] is RECOMMENDED. There | authentication MUST use the ACP domain membership check defined in | |||
is no need for older version backward compatibility in the new use- | (Section 6.2.3). | |||
case of ACP. Mutual authentication MUST use the ACP domain | ||||
membership check defined in (Section 6.1.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.12.5) but are sent by the ACP | virtual interface (as defined Section 6.13.5) but are sent by the ACP | |||
into an ACP GRASP virtual interface that is constructed from the TCP | into an ACP GRASP virtual interface that is constructed from the TCP | |||
connection(s) to the IPv6 link-local neighbor address(es) on the | connection(s) to the IPv6 link-local neighbor address(es) on the | |||
underlying ACP virtual interface. If the ACP GRASP virtual interface | underlying ACP virtual interface. If the ACP GRASP virtual interface | |||
has two or more neighbors, the GRASP link-local multicast messages | has two or more neighbors, the GRASP link-local multicast messages | |||
are replicated to all neighbor TCP connections. | are replicated to all neighbor TCP connections. | |||
TLS for GRASP MUST offer TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 and | ||||
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 | ||||
less han SHA384. TLS for GRASP MUST also include the "Supported | ||||
Elliptic Curves" extension, it MUST support support the NIST P-256 | ||||
(secp256r1) and P-384 (secp384r1(24)) curves [RFC4492]. In addition, | ||||
GRASP TLS clients SHOULD send an ec_point_formats extension with a | ||||
single element, "uncompressed". For further interoperability | ||||
recommendations, GRASP TLS implementations SHOULD follow [RFC7525]. | ||||
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 (7107). Effectively the transport stack is | |||
expected to be TLS for connections from/to the ACP address (e.g., | expected to be TLS for connections from/to 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 from/to link-local | |||
addresses on the ACP virtual interfaces. The latter ones are only | addresses on the ACP virtual interfaces. The latter ones are only | |||
used for flooding of GRASP messages. | used for flooding of GRASP messages. | |||
..............................ACP.............................. | ..............................ACP.............................. | |||
. . | . . | |||
. /-GRASP-flooding-\ ACP GRASP instance . | . /-GRASP-flooding-\ ACP GRASP instance . | |||
skipping to change at page 60, line 52 ¶ | skipping to change at page 61, line 52 ¶ | |||
. 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 8: ACP as security and transport substrate for GRASP | Figure 9: ACP as security and transport substrate for GRASP | |||
6.8.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., WiFi/Powerline link) can reduce | |||
the probability for loss free transmission so much that applications | the probability for loss free transmission so much that applications | |||
would want to increase the frequency with which they send these | would want to increase the frequency with which they send these | |||
messages. Such shorter periodic retransmission of datagrams would | messages. Such shorter periodic retransmission of datagrams would | |||
result in more traffic and processing overhead in the ACP than the | result in more traffic and processing overhead in the ACP than the | |||
hop-by-hop reliable retransmission mechanism by TCP and duplicate | hop-by-hop reliable retransmission mechanism by TCP and duplicate | |||
elimination by GRASP. | 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 / 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 whom they are on-path ("man in the middle" - MITM) or intercept | |||
and modify them. With TLS, it is not possible to completely | and modify them. 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/spoofing by a compromised ACP node is still possible | |||
because in the model of the ACP and GRASP, the provider and consumer | because in the model of the ACP and GRASP, the provider and consumer | |||
of an objective have initially no unique information (such as an | of an objective have initially no unique information (such as an | |||
identity) about the other side which would allow them to distinguish | identity) about the other side which would allow them to distinguish | |||
a benevolent from a compromised peer. The compromised ACP node would | a benevolent from a compromised peer. The compromised ACP node would | |||
simply announce the objective as well, potentially filter the | simply announce the objective as well, potentially filter the | |||
skipping to change at page 61, line 48 ¶ | skipping to change at page 62, line 48 ¶ | |||
application level proxy. This of course requires that the | 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 it to proxy it without being | |||
detected, but in an ACP environment this is quite likely public | detected, but in an ACP environment this is quite likely public | |||
knowledge or even standardized. | 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/encryption, which has the following benefits: | authentication/encryption, which has the following benefits: | |||
o 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 | ||||
o 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. | |||
o There is no different security model for ACP GRASP from other ACP | * There is no different security model for ACP GRASP from 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.9. 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 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 possible by the systems | |||
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 are preferred, such as a logical container or virtual | |||
machine instance. The context for the ACP needs to be established | machine instance. The context for the ACP needs to be established | |||
automatically during bootstrap of a node. As much as possible it | automatically during bootstrap of a node. As much as possible it | |||
should be protected from being modified unintentionally by ("Data- | 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 from the Data-Plane routing or forwarding table(s). Also, | reachable 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.10. 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.9). This | inside the ACP context (as explained in in Section 6.10). This | |||
address may be used also in other virtual contexts. | address 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.10.1. Fundamental Concepts of Autonomic Addressing | 6.11.1. Fundamental Concepts of Autonomic Addressing | |||
o 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 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 | ||||
o 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 | ||||
o Loopback-only: Only ACP Loopback interfaces (and potentially those | ||||
configured for "ACP connect", see Section 8.1) carry routable | 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 [RFC7404]. | |||
* Use-ULA: For Loopback interfaces of ACP nodes, we use ULA with L=1 | ||||
o Use-ULA: For Loopback interfaces of ACP nodes, we use ULA with L=1 | ||||
(as defined in section 3.1 of [RFC4193]). Note that the random | (as defined in section 3.1 of [RFC4193]). Note that the random | |||
hash for ACP Loopback addresses uses the definition in | hash for ACP Loopback addresses uses the definition in | |||
Section 6.10.2 and not the one of [RFC4193] section 3.2.2. | Section 6.11.2 and not the one of [RFC4193] section 3.2.2. | |||
* No external connectivity: They do not provide access to the | ||||
o No external connectivity: They do not provide access to the | ||||
Internet. If a node requires further reaching connectivity, it | Internet. If a node requires further reaching connectivity, it | |||
should use another, traditionally managed address scheme in | should use another, traditionally managed address scheme in | |||
parallel. | parallel. | |||
* Addresses in the ACP are permanent, and do not support temporary | ||||
o Addresses in the ACP are permanent, and do not support temporary | ||||
addresses as defined in [RFC4941]. | addresses as defined in [RFC4941]. | |||
* Addresses in the ACP are not considered sensitive on privacy | ||||
o 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 host. | and ACP addresses do therefore not represent end-users or groups | |||
All ACP nodes are in one (potentially federated) administrative | of end-users. All ACP nodes are in one (potentially federated) | |||
domain. They are assumed to be to be candidate hosts of ACP | administrative domain. They are assumed to be to be candidate | |||
traffic amongst each other or transit thereof. There are no | hosts of ACP traffic amongst each other or transit thereof. There | |||
transit nodes less privileged to know about the identity of other | are no transit nodes less privileged to know about the identity of | |||
hosts in the ACP. Therefore, ACP addresses do not need to be | other hosts in the ACP. Therefore, ACP addresses do not need to | |||
pseudo-random as discussed in [RFC7721]. Because they are not | be pseudo-random as discussed in [RFC7721]. Because they are not | |||
propagated to untrusted (non ACP) nodes and stay within a domain | propagated to untrusted (non ACP) nodes and stay within a domain | |||
(of trust), we also consider them not to be subject to scanning | (of trust), we also consider them not 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: | |||
o 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 | ||||
o 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 | ||||
o 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, ...) are available in IPv6. See also [RFC8368] for how | for how ACP could be made to interoperate with IPv4 only OAM. | |||
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.12.5.1. | Section 6.13.5.1. | |||
6.10.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 Base ULA addressing 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 9: ACP Addressing Base Scheme | Figure 10: 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: | |||
o "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 | ||||
o The 40-bits ULA "global ID" (term from [RFC4193]) for ACP | ||||
addresses carried in the acp-node-name in the ACP certificates are | addresses carried in the acp-node-name in the ACP certificates are | |||
the first 40-bits of the SHA256 hash of the routing subdomain from | the first 40-bits of the SHA256 hash of the routing subdomain from | |||
the same acp-node-name. In the example of Section 6.1.2, the | the same acp-node-name. In the example of Section 6.2.2, the | |||
routing subdomain is "area51.research.acp.example.com" and the | routing subdomain is "area51.research.acp.example.com" and the | |||
40-bits ULA "global ID" 89b714f3db. | 40-bits ULA "global ID" 89b714f3db. | |||
* When creating a new routing-subdomain for an existing autonomic | ||||
o When creating a new routing-subdomain for an existing autonomic | ||||
network, it MUST be ensured, that rsub is selected so the | network, it MUST be ensured, that rsub is selected so the | |||
resulting hash of the routing-subdomain does not collide with the | resulting hash of the routing-subdomain does not collide with the | |||
hash of any pre-existing routing-subdomains of the autonomic | hash of any pre-existing routing-subdomains of the autonomic | |||
network. This ensures that ACP addresses created by registrars | network. This ensures that ACP addresses created by registrars | |||
for different routing subdomains do not collide with each others. | for different routing subdomains do not collide with each others. | |||
* To allow for extensibility, the fact that the ULA "global ID" is a | ||||
o 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 | 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 the | 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 message by | EST Certificate Signing Request (CSR) Attribute Request message by | |||
the pledge. | the pledge. | |||
o Establishing connectivity between different ACP (different acp- | * Establishing connectivity between different ACP (different acp- | |||
domain-name) is outside the scope of this specification. If it is | domain-name) is outside the scope of this specification. If it is | |||
being done through future extensions, then the rsub of all | 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 need to be | |||
selected so the resulting routing-subdomain hashes do not collide. | selected so the resulting routing-subdomain hashes do not collide. | |||
For example a large cooperation with its own private TA may want | For example a large cooperation with its own private TA may want | |||
to create different autonomic networks that initially should not | to create different autonomic networks that initially should not | |||
be able to connect but where the option to do so should be kept | be able to connect but where the option to do so should be kept | |||
open. When taking this future possibility into account, it is | open. When taking this future possibility into account, it is | |||
easy to always select rsub so that no collisions happen. | easy to always select rsub so that no collisions happen. | |||
* Type: This field allows different address sub-schemes. This | ||||
o Type: This field allows different address 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 | The sub-scheme may imply a range or set of addresses assigned to the | |||
node, this is called the ACP address range/set and explained in each | node, this is called the ACP address range/set and explained in each | |||
sub-scheme. | sub-scheme. | |||
Please refer to Section 6.10.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 why the following Sub-Addressing schemes are used and | |||
why multiple are necessary. | why multiple are necessary. | |||
The following summarizes the addressing Sub-Schemes: | The following summarizes the addressing Sub-Schemes: | |||
+------+-----+-----------------+-------+------------+ | +------+-----------------+-----------+-------------------+ | |||
| Type | Z | name | F-bit | V-bit size | | | Type | Name |F-bit| Z | V-bits | Prefix | | |||
+------+-----+-----------------+-------+------------+ | +------+-----------------+-----+-----+----------+--------+ | |||
| 0x00 | 0 | ACP-Zone | N/A | 1 bit | | | 0x00 | ACP-Zone | N/A | 0 | 1 bit | /127 | | |||
+------+-----+-----------------+-------+------------+ | +------+-----------------+-----+-----+----------+--------+ | |||
| 0x00 | 1 | ACP-Manual | N/A | 1 bit | | | 0x00 | ACP-Manual | N/A | 1 | N/A | /64 | | |||
+------+-----+-----------------+-------+------------+ | +------+-----------------+-----+-----+----------+--------+ | |||
| 0x01 | N/A | ACP-VLong-8 | 0 | 8 bits | | | 0x01 | ACP-VLong-8 | 0 | N/A | 8 bits | /120 | | |||
+------+-----+-----------------+-------+------------+ | +------+-----------------+-----+-----+----------+--------+ | |||
| 0x01 | N/A | ACP-VLong-16 | 1 | 16 bits | | | 0x01 | ACP-VLong-16 | 1 | N/A | 16 bits | /112 | | |||
+------+-----+-----------------+-------+------------+ | +------+-----------------+-----+-----+----------+--------+ | |||
| 0x10 | Reserved / For future definition/allocation | | ||||
+------+-----------------+-----+-----+----------+--------+ | ||||
| 0x11 | Reserved / For future definition/allocation | | ||||
+------+-----------------+-----+-----+----------+--------+ | ||||
Figure 10: Addressing schemes | Figure 11: Addressing Sub-Schemes | |||
6.10.3. ACP Zone Addressing Sub-Scheme (ACP-Zone) | F-Bit and Z are two encoding fields explained below for the Sub- | |||
Schemes that introduce/use them. V-bits is the number of bits of | ||||
addresses allocated to the ACP node. Prefix is the prefix the ACP | ||||
node is announcing into the RPL routing protocol. | ||||
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 | |||
0x00 and the Z bit is 0x0. | 0x00 and the Z bit is 0x0. | |||
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 11: ACP Zone Addressing Sub-Scheme | Figure 12: ACP Zone Addressing Sub-Scheme | |||
The fields are defined as follows: | The fields are defined as follows: | |||
o Type: MUST be 0x0. | * Type: MUST be 0x0. | |||
* Z: MUST be 0x0. | ||||
o Z: MUST be 0x0. | * Zone-ID: A value for a network zone. | |||
* Node-ID: A unique value for each node. | ||||
o Zone-ID: A value for a network zone. | ||||
o Node-ID: A unique value for each node. | ||||
The 64-bit Node-ID must be unique across the ACP domain for each | The 64-bit Node-ID must be unique across the ACP domain for each | |||
node. It is derived and composed as follows: | node. It is derived and composed as follows: | |||
o Registrar-ID (48-bit): A number unique inside the domain that | * Registrar-ID (48-bit): A number unique inside the domain that | |||
identifies the ACP registrar which assigned the Node-ID to the | identifies the ACP registrar which assigned the Node-ID to the | |||
node. One or more domain-wide unique identifiers of the ACP | node. One or more domain-wide unique identifiers of the ACP | |||
registrar can be used for this purpose. See Section 6.10.7.2. | 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 | ||||
o Node-Number: Number to make the Node-ID unique. This can be | ||||
sequentially assigned by the ACP Registrar owning the Registrar- | sequentially assigned by the ACP Registrar owning the Registrar- | |||
ID. | ID. | |||
* V (1-bit): Virtualization bit: 0: Indicates the ACP itself ("ACP | ||||
o V (1-bit): Virtualization bit: 0: Indicates the ACP itself ("ACP | ||||
node base system); 1: Indicates the optional "host" context on the | node base system); 1: Indicates the optional "host" context on the | |||
ACP node (see below). | ACP node (see below). | |||
In the ACP Zone Addressing Sub-Scheme, the ACP address in the | In the ACP Zone Addressing Sub-Scheme, the ACP address in the | |||
certificate has V field as all zero bits. | 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. No two nodes in the same ACP can have the | |||
same Node-ID, but differerent Zone-IDs. | same Node-ID, but differerent Zone-IDs. | |||
skipping to change at page 67, line 26 ¶ | skipping to change at page 68, line 26 ¶ | |||
be used in conjunction with operational practices for partial/ | be used in conjunction with operational practices for partial/ | |||
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 [RFC4007] | |||
zones or zone_id. ACP zone addresses are not scoped (reachable only | zones or zone_id. ACP zone addresses are not scoped (reachable only | |||
from within an RFC4007 zone) but reachable across the whole ACP. An | from within an RFC4007 zone) but reachable across the whole ACP. An | |||
RFC4007 zone_id is a zone index that has only local significance on a | RFC4007 zone_id is a zone index that has only local significance on a | |||
node, whereas an ACP Zone-ID is an identifier for an ACP zone that is | node, whereas an ACP Zone-ID is an identifier for an ACP zone that is | |||
unique across that ACP. | unique across that ACP. | |||
6.10.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 | |||
0x00 and the Z bit is 0x1. | 0x00 and the Z bit is 0x1. | |||
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 12: ACP Manual Addressing Sub-Scheme | Figure 13: ACP Manual Addressing Sub-Scheme | |||
The fields are defined as follows: | The fields are defined as follows: | |||
o Type: MUST be 0x0. | * Type: MUST be 0x0. | |||
* Z: MUST be 0x1. | ||||
o Z: MUST be 0x1. | * Subnet-ID: Configured subnet identifier. | |||
* Interface Identifier. | ||||
o Subnet-ID: Configured subnet identifier. | ||||
o Interface Identifier. | ||||
This sub-scheme is meant for "manual" allocation to subnets where the | This sub-scheme is meant for "manual" allocation to subnets where the | |||
other addressing schemes cannot be used. The primary use case is for | other addressing schemes cannot be used. The primary use case is for | |||
assignment to ACP connect subnets (see Section 8.1.1). | assignment to ACP connect subnets (see Section 8.1.1). | |||
"Manual" means that allocations of the Subnet-ID need to be done | "Manual" means that allocations of the Subnet-ID need to be done | |||
today with pre-existing, non-autonomic mechanisms. Every subnet that | today with pre-existing, non-autonomic mechanisms. Every subnet that | |||
uses this addressing sub-scheme needs to use a unique Subnet-ID | uses this addressing sub-scheme needs to use a unique Subnet-ID | |||
(unless some anycast setup is done). | (unless some anycast setup is done). | |||
skipping to change at page 68, line 26 ¶ | skipping to change at page 69, line 22 ¶ | |||
scheme and therefore allowing for the Vlong scheme (described below) | scheme and therefore allowing for the Vlong scheme (described below) | |||
to have one more bit available. | to have one more bit available. | |||
Manual addressing sub-scheme addresses SHOULD NOT be used in ACP | Manual addressing sub-scheme addresses SHOULD NOT be used in ACP | |||
certificates. Any node capable to build ACP secure channels and | certificates. Any node capable to build ACP secure channels and | |||
permitted by Registrar policy to participate in building ACP secure | permitted by Registrar policy to participate in building ACP secure | |||
channels SHOULD receive an ACP address (prefix) from one of the other | channels SHOULD receive an ACP address (prefix) from one of the other | |||
ACP addressing sub-schemes. Nodes not capable (or permitted) to | ACP addressing sub-schemes. Nodes not capable (or permitted) to | |||
participate in ACP secure channels can connect to the ACP via ACP | participate in ACP secure channels can connect to the ACP via ACP | |||
connect interfaces of ACP edge nodes (see Section 8.1), without | connect interfaces of ACP edge nodes (see Section 8.1), without | |||
setting up an ACP secure channel. Their ACP certificate MUST include | setting up an ACP secure channel. Their ACP certificate MUST omit | |||
an empty acp-address to indicate that their ACP certificate is only | the acp-address field to indicate that their ACP certificate is only | |||
usable for non- ACP secure channel authentication, such as end-to-end | usable for non- ACP secure channel authentication, such as end-to-end | |||
transport connections across the ACP or Data-Plane. | 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. | for details. Therefore the notion of V-bit many addresses assigned | |||
to the ACP nodes does not apply to this Sub-Scheme. | ||||
6.10.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 sub-scheme is used when the Type field of the base scheme is | |||
0x01. | 0x01. | |||
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 13: ACP Vlong Addressing Sub-Scheme | Figure 14: ACP Vlong Addressing Sub-Scheme | |||
This addressing scheme foregoes the Zone-ID field to allow for | This addressing scheme foregoes the Zone-ID field to allow for | |||
larger, flatter routed networks (e.g., as in IoT) with 8421376 Node- | larger, flatter routed networks (e.g., as in IoT) with 8421376 Node- | |||
Numbers (2^23+2^15). It also allows for up to 2^16 (i.e. 65536) | Numbers (2^23+2^15). It also allows for up to 2^16 (i.e. 65536) | |||
different virtualized addresses within a node, which could be used to | different virtualized addresses within a node, which could be used to | |||
address individual software components in an ACP node. | 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-ID sub-scheme with the | |||
following refinements: | following refinements: | |||
o 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 | ||||
o 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 | bits. For F=0, it is 8 bits, for F=1 it is 16 bits. The V bits | |||
are assigned by the ACP node. In the ACP certificate's ACP | are assigned by the ACP node. In the ACP certificate's ACP | |||
address Section 6.1.2, the V-bits are always set to 0. | address Section 6.2.2, the V-bits are always set to 0. | |||
* Registrar-ID: To maximize Node-Number and V, the Registrar-ID is | ||||
o Registrar-ID: To maximize Node-Number and V, the Registrar-ID is | ||||
reduced to 46-bits. One or more domain-wide unique identifiers of | 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.10.7.2. | Section 6.11.7.2. | |||
* The Node-Number is unique to each ACP node. There are two formats | ||||
o 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 | for the Node-Number. When F=0, the node-number is 23 bits, for | |||
F=1 it is 15 bits. Each format of node-number is considered to be | F=1 it is 15 bits. Each format of node-number is considered to be | |||
in a unique number space. | 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 (< | |||
256) of clients (ASA/Autonomic Functions or legacy services) of the | 256) of clients (ASA/Autonomic Functions or legacy services) of the | |||
ACP that require separate V(irtual) addresses. | 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.10.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 sufficiently | |||
flexible setup of ACPs for a variety of situation. These reasons | flexible setup of ACPs for a variety of situation. 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-ID's. 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. | |||
IANA is asked need to assign a new "type" for each new addressing | 6.11.7. ACP Registrars | |||
sub-scheme. With the current allocations, only 2 more schemes are | ||||
possible, so the last addressing scheme MUST provide further | ||||
extensions (e.g., by reserving bits from it for further extensions). | ||||
6.10.7. ACP Registrars | ||||
ACP registrars are responsible to enroll candidate ACP nodes with ACP | ACP registrars are responsible to enroll candidate ACP nodes with ACP | |||
certificates and associated trust anchor(s). They are also | certificates and associated trust anchor(s). They are also | |||
responsible that an acp-node-name field is included in the ACP | responsible that an acp-node-name field is included in the ACP | |||
certificate carrying the ACP domain name and the ACP nodes ACP | certificate carrying the ACP domain name and the ACP nodes ACP | |||
address prefix. This address prefix is intended to persist unchanged | address prefix. This address prefix is intended to persist unchanged | |||
through the lifetime of the ACP node. | 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 | |||
skipping to change at page 70, line 40 ¶ | skipping to change at page 71, line 31 ¶ | |||
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 Certification Authority through any | |||
appropriate mechanism (out of scope in this document, but required to | appropriate mechanism (out of scope in this document, but required to | |||
be BRSKI for ANI registrars). Only nodes that are trusted to be | be BRSKI for ANI registrars). Only nodes that are trusted to be | |||
compliant with the requirements against registrar described in this | compliant with the requirements against registrar described in this | |||
section can be given the necessary credentials to perform this RA | section can be given the necessary credentials to perform this RA | |||
function, such as credentials for the BRSKI connection to the CA for | function, such as credentials for the BRSKI connection to the CA for | |||
ANI registrars. | ANI registrars. | |||
6.10.7.1. Use of BRSKI or other Mechanism/Protocols | 6.11.7.1. Use of BRSKI or other Mechanism/Protocols | |||
Any protocols or mechanisms may be used as 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) allow to perform | |||
the ACP domain membership described in Section 6.1.3 with other ACP | the ACP domain membership described in Section 6.2.3 with other ACP | |||
domain members, and meet the ACP addressing requirements for its acp- | domain members, and meet the ACP addressing requirements for its acp- | |||
node-name as described further below in this section. | node-name as described further below in this section. | |||
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 | ([I-D.ietf-anima-bootstrapping-keyinfra]). When BRSKI is used, the | |||
ACP nodes are called ANI nodes, and the ACP registrars are called | ACP nodes are called ANI nodes, and the ACP registrars are called | |||
BRSKI or ANI registrars. The BRSKI specification does not define the | BRSKI or ANI registrars. The BRSKI specification does not define the | |||
handling of the acp-node-name field because the rules do not depend | handling of the acp-node-name field because the rules do not depend | |||
on BRSKI but apply equally to any protocols/mechanisms an ACP | on BRSKI but apply equally to any protocols/mechanisms an ACP | |||
registrar may use. | registrar may use. | |||
6.10.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 unique across the ACP domain which is | |||
skipping to change at page 71, line 45 ¶ | skipping to change at page 72, line 35 ¶ | |||
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/MIC-chip is | |||
guaranteed to use globally unique assigned EUI-48 MAC address(es). | 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.1.2) with the appropriate | gets a 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 the EST /csrattrs command (see | |||
[I-D.ietf-anima-bootstrapping-keyinfra], 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 | [RFC Editor: please update reference to section 5.9.2 accordingly | |||
with latest BRSKI draft at time of publishing, or RFC] | with latest BRSKI draft at time of publishing, or RFC] | |||
6.10.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.10.3), or a Vlong | addressing sub-scheme prefix (see Section 6.11.3), or a Vlong | |||
addressing sub-scheme prefix (see Section 6.10.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 sub-addressing scheme indicates the prefix length: /127 for zone | The sub-addressing scheme indicates the prefix length: /127 for zone | |||
address sub-scheme, /120 or /112 for Vlong address sub-scheme. The | address sub-scheme, /120 or /112 for Vlong address sub-scheme. The | |||
first address of the prefix is the ACP address. All other addresses | 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 | 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 | zone and Vlong addressing sub scheme sections. The ACP address | |||
prefix itself is then signaled by the ACP node into the ACP routing | prefix itself is then signaled by the ACP node into the ACP routing | |||
protocol (see Section 6.11) to establish IPv6 reachability across the | protocol (see Section 6.12) to establish IPv6 reachability across the | |||
ACP. | ACP. | |||
The choice of addressing sub-scheme and prefix-length in the Vlong | The choice of addressing sub-scheme and prefix-length in the Vlong | |||
address sub-scheme is subject to ACP registrar policy. It could be | 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 | 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 contains a | IDevID certificate of the candidate ACP node, which typically | |||
"serialNnumber" that is typically indicating the node's vendor and | contains a "serialNumber" attribute in the subjects field | |||
device type and can be used to drive a policy selecting an | distinguished name encoding that is often indicating the node's | |||
vendor and device type and can be used to drive a policy selecting an | ||||
appropriate addressing sub-scheme for the (class of) node(s). | 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 allocate ACP zone sub-address scheme | |||
addresses with Zone-ID 0. | 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 sub- | |||
address scheme for ACP nodes based on the "serialNumber" of the | address scheme for ACP nodes based on the [X.520] "serialNumber" | |||
attribute in the subjects field distinguished name encoding of the | ||||
IDevID certificate, for example by the PID (Product Identifier) part | IDevID certificate, for example by the PID (Product Identifier) part | |||
which identifies the product type, or the complete "serialNumber". | which identifies the product type, or the complete "serialNumber". | |||
The PID for example could identify nodes that allow for specialized | The PID for example could identify nodes that allow for specialized | |||
ASA requiring multiple addresses or non-autonomic VMs for services | ASA requiring multiple addresses or non-autonomic VMs for services | |||
and those nodes could receive Vlong sub-address scheme ACP addresses. | and those nodes could receive Vlong sub-address 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 | |||
skipping to change at page 73, line 15 ¶ | skipping to change at page 74, line 15 ¶ | |||
If allocated addresses can not be remembered by registrars, then it | If allocated addresses can not be remembered by registrars, then it | |||
is necessary to either use a new value for the Register-ID field in | is necessary to either use a new value for the Register-ID field in | |||
the ACP addresses, or determine allocated ACP addresses from | the ACP addresses, or determine allocated ACP addresses from | |||
determining the addresses of reachable ACP nodes, which is not | determining the addresses of reachable ACP nodes, which is not | |||
necessarily the set of all ACP nodes. Non-tracked ACP addresses can | necessarily the set of all ACP nodes. Non-tracked ACP addresses can | |||
be reclaimed by revoking or not renewing their certificates and | be reclaimed by revoking or not renewing their certificates and | |||
instead handing out new certificate with new addresses (for example | instead handing out new certificate with new addresses (for example | |||
with a new Registrar-ID value). Note that such strategies may | with a new Registrar-ID value). Note that such strategies may | |||
require coordination amongst registrars. | require coordination amongst registrars. | |||
6.10.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 | rekeying ACP registrar is not the same as the one that enrolled the | |||
prior ACP certificate. See Section 9.2.4 for an example. | 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.1.5.5 and | certificate did expire or failed. See Section 6.2.5.5 and | |||
Section 6.1.5.6. | Section 6.2.5.6. | |||
6.10.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, | What interactions registrars need, what parameters they require, | |||
certificate renewal and limitations, use of sub-CAs on registrars and | certificate renewal and limitations, use of sub-CAs on registrars and | |||
centralized policy control. | centralized policy control. | |||
6.11. Routing in the ACP | 6.12. Routing in the ACP | |||
Once ULA address are set up all autonomic entities should run a | Once ULA address are set up all autonomic entities should run a | |||
routing protocol within the autonomic control plane context. This | routing protocol within the autonomic control plane context. This | |||
routing protocol distributes the ULA created in the previous section | routing protocol distributes the ULA created in the previous section | |||
for reachability. The use of the autonomic control plane specific | for reachability. The use of the autonomic control plane specific | |||
context eliminates the probable clash with Data-Plane routing tables | context eliminates the probable clash with Data-Plane routing tables | |||
and also secures the ACP from interference from the configuration | and also secures the ACP from interference from the configuration | |||
mismatch or incorrect routing updates. | mismatch or incorrect routing updates. | |||
The establishment of the routing plane and its parameters are | The establishment of the routing plane and its parameters are | |||
skipping to change at page 74, line 16 ¶ | skipping to change at page 75, line 16 ¶ | |||
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.7 for more | including all its routing subdomains. See Appendix A.7 for more | |||
details. | details. | |||
6.11.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]. | [I-D.ietf-roll-applicability-template]. | |||
6.11.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 artefacts required or beneficial in | |||
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 does not support the Hop-by-Hop headers used for | |||
RPI, but also to avoid the overhead of the RPI header on the wire and | RPI, but also to avoid the overhead of the RPI header on the wire and | |||
cost of adding/removing them. | cost of adding/removing them. | |||
6.11.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 | |||
destination prefix based routing/forwarding table. To achieve this, | destination prefix based routing/forwarding table. To achieve this, | |||
the profiles uses only one RPL instanceID. This single instanceID | the profiles uses only one RPL instanceID. This single instanceID | |||
can contain only one Destination Oriented Directed Acyclic Graph | can contain only one Destination Oriented Directed Acyclic Graph | |||
(DODAG), and the routing/forwarding table can therefore only | (DODAG), and the routing/forwarding table can therefore only | |||
calculate a single class of service ("best effort towards the primary | calculate a single class of service ("best effort towards the primary | |||
NOC/root") and cannot create optimized routing paths to accomplish | NOC/root") and cannot create optimized routing paths to accomplish | |||
latency or energy goals between any two nodes. | latency or energy goals between any two nodes. | |||
skipping to change at page 75, line 17 ¶ | skipping to change at page 76, line 17 ¶ | |||
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 node reachable through the same | |||
interface as the DODAG root. This RPL profile can therefore scale to | interface as the DODAG root. This RPL profile can therefore scale to | |||
much larger number of ACP nodes in the same amount of compute and | much larger number of ACP nodes in the same amount of compute and | |||
memory than other routing protocols. Especially on nodes that are | memory than other routing protocols. Especially on nodes that are | |||
leafs of the topology or those close to those leafs. | leafs of the topology or those close to those leafs. | |||
6.11.1.1.2. Reconvergence | 6.12.1.1.2. Reconvergence | |||
In RPL profiles where RPL Packet Information (RPI, see | In RPL profiles where RPL Packet Information (RPI, see | |||
Section 6.11.1.13) is present, it is also used to trigger | Section 6.12.1.13) is present, it is also used to trigger | |||
reconvergence when misrouted, for example looping, packets are | reconvergence when misrouted, for example looping, packets are | |||
recognized because of their RPI data. This helps to minimize RPL | recognized because of their RPI data. This helps to minimize RPL | |||
signaling traffic especially in networks without stable topology and | signaling traffic especially in networks 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 quick reconverging the DODAG by | |||
recognizing link state change (down/up) and triggering reconvergence | recognizing link state change (down/up) and triggering reconvergence | |||
signaling as described in Section 6.11.1.7. Since links in the ACP | signaling as described in Section 6.12.1.7. Since links in the ACP | |||
are assumed to be mostly reliable (or have link layer protection | are assumed to be mostly reliable (or have link layer protection | |||
against loss) and because there is no stretch according to | against loss) and because there is no stretch according to | |||
Section 6.11.1.7, loops caused by loss of RPL routing protocol | Section 6.12.1.7, loops caused by loss of RPL routing protocol | |||
signaling packets should be exceedingly rare. | signaling 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 RECOMMENDED to be used for the ACPL RPL | |||
profile: DODAG Information Objects (DIOs) SHOULD be sent 2 or 3 times | profile: DODAG Information Objects (DIOs) SHOULD be sent 2 or 3 times | |||
to inform children when losing the last parent. The technique in | to inform children when losing the last parent. The technique in | |||
[RFC6550] section 8.2.2.6. (Detaching) SHOULD be favored over that | [RFC6550] section 8.2.2.6. (Detaching) SHOULD be favored over that | |||
in section 8.2.2.5., (Poisoning) because it allows local | 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 3 | |||
if possible, and send Destination Advertisement Objects (DAO)s to all | if possible, and send Destination Advertisement Objects (DAO)s to all | |||
of them in parallel. | of them in parallel. | |||
Additionally, failed ACP tunnels can be quickly discovered trough the | Additionally, failed ACP tunnels can be quickly discovered trough the | |||
secure channel protocol mechanisms such as IKEv2 Dead Peer Detection. | secure channel protocol mechanisms such as IKEv2 Dead Peer Detection. | |||
This can function as a replacement for a Low-power and Lossy | This can function as a replacement for a Low-power and Lossy | |||
Networks' (LLN's) Expected Transmission Count (ETX) feature that is | Networks' (LLN's) Expected Transmission Count (ETX) feature that is | |||
not used in this profile. A failure of an ACP tunnel should | not used in this profile. A failure of an ACP tunnel should | |||
imediately signal the RPL control plane to pick a different parent. | imediately signal the RPL control plane to pick a different parent. | |||
6.11.1.2. RPL Instances | 6.12.1.2. RPL Instances | |||
Single RPL instance. Default RPLInstanceID = 0. | Single RPL instance. Default RPLInstanceID = 0. | |||
6.11.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 | RPL Mode of Operations (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.11.1.4. DAO Policy | 6.12.1.4. DAO Policy | |||
Proactive, aggressive DAO state maintenance: | Proactive, aggressive DAO state maintenance: | |||
o Use K-flag in unsolicited DAO indicating change from previous | * Use K-flag in unsolicited DAO indicating change from previous | |||
information (to require DAO-ACK). | information (to require DAO-ACK). | |||
* Retry such DAO DAO-RETRIES(3) times with DAO- ACK_TIME_OUT(256ms) | ||||
o Retry such DAO DAO-RETRIES(3) times with DAO- ACK_TIME_OUT(256ms) | ||||
in between. | in between. | |||
6.11.1.5. Path Metric | 6.12.1.5. Path Metric | |||
Use Hopcount according to [RFC6551]. Note that this is solely for | Use Hopcount according to [RFC6551]. Note that this is solely for | |||
diagnostic purposes as it is not used by the objective function. | diagnostic purposes as it is not used by the objective function. | |||
6.11.1.6. Objective Function | 6.12.1.6. Objective Function | |||
Objective Function (OF): Use OF0 [RFC6552]. No use of metric | Objective Function (OF): Use OF0 [RFC6552]. No use of metric | |||
containers. | containers. | |||
rank_factor: Derived from link speed: <= 100Mbps: | rank_factor: Derived from link speed: <= 100Mbps: | |||
LOW_SPEED_FACTOR(5), else HIGH_SPEED_FACTOR(1) | 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" or | |||
"IoT" links that commonly max out at 100 Mbps and typical | "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 the | |||
path selection for the ACP focusses only on reachability but not on | path selection for the ACP focusses only on reachability but not on | |||
path cost optimization, no attempts at finer grained path | path cost optimization, no attempts at finer grained path | |||
optimization are made. | optimization are made. | |||
6.11.1.7. DODAG Repair | 6.12.1.7. DODAG Repair | |||
Global Repair: we assume stable links and ranks (metrics), so no need | Global Repair: we assume stable links and ranks (metrics), so there | |||
to periodically rebuild DODAG. DODAG version only incremented under | is no need to periodically rebuild the DODAG. The DODAG version is | |||
catastrophic events (e.g., administrative action). | only incremented under catastrophic events (e.g., administrative | |||
action). | ||||
Local Repair: As soon as link breakage is detected, send No-Path DAO | Local Repair: As soon as link breakage is detected, the ACP node send | |||
for all the targets that were reachable only via this link. As soon | No-Path DAO for all the targets that were reachable only via this | |||
as link repair is detected, validate if this link provides you a | link. As soon as link repair is detected, the ACP node validates if | |||
better parent. If so, compute your new rank, and send new DIO that | this link provides a better parent. If so, a new rank is computed by | |||
advertises your new rank. Then send a DAO with a new path sequence | the ACP node and it sends new DIO that advertise the new rank. Then | |||
about yourself. | 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 be | |||
directly by peer breakage, see Section 6.12.5.2.2. | 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.11.1.8. Multicast | 6.12.1.8. Multicast | |||
Not used yet but possible because of the selected mode of operations. | Not used yet but possible because of the selected mode of operations. | |||
6.11.1.9. Security | 6.12.1.9. Security | |||
[RFC6550] security not used, substituted by ACP security. | [RFC6550] security not used, substituted by ACP security. | |||
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.11.1.10. P2P communications | 6.12.1.10. P2P communications | |||
Not used. | Not used. | |||
6.11.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 | |||
address(es) used in the ACP node. The prefix length depends on the | addresses assigned to the ACP node via the AcpNodeName. The prefix | |||
chosen addressing sub-scheme of the ACP address provisioned into the | length depends on the addressing sub-scheme of the acp-address, /127 | |||
certificate of the ACP node, e.g., /127 for Zone Addressing Sub- | for Zone Addressing Sub-Scheme and /112 or /120 for Vlong addressing | |||
Scheme or /112 or /120 for Vlong addressing sub-scheme. See | sub-scheme. See Section 6.11 for more details. | |||
Section 6.10 for more details. | ||||
Every ACP node MUST install a black hole (aka null) route for | Every ACP node MUST install a black hole (aka null) route if there | |||
whatever ACP address space that it advertises (i.e.: the /96 or | are unused parts of the ACP address space assigned to the ACP node | |||
/127). This is avoid routing loops for addresses that an ACP node | via its AcpNodeName. This is superceeded by longer prefixes assigned | |||
has not (yet) used. | to interfaces for the address space actually used by the node. For | |||
example, when the node has an ACP-VLong-8 address space, it installs | ||||
a /120 black hole route. If it then for example only uses the ACP | ||||
address (first address from the space), it would assign that address | ||||
via a /128 address prefix to the ACP loopback interface (see | ||||
Section 6.13.5.1). None of those longer prefixes are announced into | ||||
RPL. | ||||
6.11.1.12. Administrative parameters | For ACP-Manual address prefixes configured on an ACP node, for | |||
example for ACP connect subnets (see Section 8.1.1), the node | ||||
announces the /64 subnet prefix. | ||||
6.12.1.12. Administrative parameters | ||||
Administrative Preference ([RFC6550], 3.2.6 - to become root): | Administrative Preference ([RFC6550], 3.2.6 - to become root): | |||
Indicated in DODAGPreference field of DIO message. | Indicated in DODAGPreference field of DIO message. | |||
o Explicit configured "root": 0b100 | * Explicit configured "root": 0b100 | |||
* ACP registrar (Default): 0b011 | ||||
o ACP registrar (Default): 0b011 | * ACP-connect (non-registrar): 0b010 | |||
* Default: 0b001. | ||||
o ACP-connect (non-registrar): 0b010 | ||||
o Default: 0b001. | ||||
6.11.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) [RFC6554] which | |||
is not necessary because the ACP RPL profile uses storing mode where | is not necessary because the ACP RPL profile uses storing mode where | |||
each hop has the necessary next-hop forwarding information. | 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 [RFC6553] is also not necessary in this | |||
profile, because it uses a single RPL instance and data path | profile, because it uses a single RPL instance and data path | |||
validation is also not used. | validation is also not used. | |||
6.11.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 raises additional Data-Plane, it does not apply | As this requirement places additional constraints on the Data-Plane | |||
to nodes where the administrative parameter to become root | functionality of the RPL root, it does not apply to "normal" nodes | |||
(Section 6.11.1.12) can always only be 0b001, e.g.: the node does not | that are not configured to have special functionality (i.e., the | |||
support explicit configuration to be root, or to be ACP registrar or | adminstrative parameter from Section 6.12.1.12 has value 0b001). If | |||
to have ACP-connect functionality. If an ACP network is degraded to | the ACP network is degraded to the point where there are no nodes | |||
the point where there are no nodes that could be configured roots, | that could be configured as root, registrar, or ACP-connect nodes, it | |||
ACP registrars or ACP-connect nodes, traffic to unknown destinations | is possible that the RPL root ( and thus the ACP as a whole) would be | |||
could not be diagnosed, but in the absence of any intelligent nodes | unable to detect traffic to unknown destinations. However, in the | |||
supporting other than 0b001 administrative preference, there is | absence of nodes with administrative preference other than 0b001, | |||
likely also no diagnostic function possible. | 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 | ||||
be actionable anyway. | ||||
6.12. General ACP Considerations | 6.13. General ACP Considerations | |||
Since channels are by default established between adjacent neighbors, | Since channels are by default established between adjacent neighbors, | |||
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.11. | to its neighbors in the ACP. Routing is discussed in Section 6.12. | |||
6.12.1. Performance | 6.13.1. Performance | |||
There are no performance requirements against ACP implementations | There are no performance requirements against ACP implementations | |||
defined in this document because the performance requirements depend | defined in this document because the performance requirements depend | |||
on the intended use case. It is expected that full autonomic node | on the intended use case. It is expected that full autonomic node | |||
with a wide range of ASA can require high forwarding plane | with a wide range of ASA can require high forwarding plane | |||
performance in the ACP, for example for telemetry. Implementations | performance in the ACP, for example for telemetry. Implementations | |||
of ACP to solely support traditional/SDN style use cases can benefit | of ACP to solely support traditional/SDN style use cases can benefit | |||
from ACP at lower performance, especially if the ACP is used only for | from 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 can | |||
also support high performance options. See [RFC8368] for more | also support high performance options. See [RFC8368] for more | |||
details. | details. | |||
6.12.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 GRASP discovered ACP secure channels 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 that Data-Plane configuration can impact the operations of | |||
the IPv6 (link-local) interface/address used for ACP channels, | the IPv6 (link-local) interface/address used for ACP channels, | |||
skipping to change at page 80, line 5 ¶ | skipping to change at page 81, line 17 ¶ | |||
(virtual) interface with a separate IPv6 link-local address can be | (virtual) interface with a separate IPv6 link-local address can be | |||
used. For example, the ACP interface could be run over a separate | used. For example, the ACP interface could be run over a separate | |||
MAC address of an underlying L2 (Ethernet) interface. For more | MAC address of an underlying L2 (Ethernet) interface. For more | |||
details and options, see Appendix A.10.2. | details and options, see Appendix A.10.2. | |||
Note that other (non-ideal) implementation choices may introduce | Note that other (non-ideal) 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 protocols | example shared code and configuration of the secure channel protocols | |||
(IPsec / DTLS). | (IPsec / DTLS). | |||
6.12.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 MTU 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 be prioritize reliability | Discovery). Because the ACP is meant to prioritize reliability over | |||
over performance, they MAY opt to only expect IPv6 minimum MTU (1280) | performance, they MAY opt to only expect IPv6 minimum MTU (1280) to | |||
to avoid running into PMTUD implementation bugs or underlying link | avoid running into PMTUD implementation bugs or underlying link MTU | |||
MTU mismatch problems. | mismatch problems. | |||
6.12.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 sub-set 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.5 allows Alice (the node with the higher ACP address) to | in Section 6.6 allows the Decider (the node with the higher ACP | |||
drop all but the desired ACP channels to Bob - and Bob will not re- | address) to drop all but the desired ACP channels to the Follower - | |||
try to build these secure channels from his side unless Alice shows | and the Follower will not re-try to build these secure channels from | |||
up with a previously unknown GRASP announcement (e.g., on a different | its side unless the Decider shows up with a previously unknown GRASP | |||
link or with a different address announced in GRASP). | announcement (e.g., on a different link or with a different address | |||
announced in GRASP). | ||||
6.12.5. ACP interfaces | 6.13.5. ACP interfaces | |||
The ACP VRF has conceptually two type of interfaces: The "ACP | The ACP VRF has conceptually two type 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.12.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 (N = 128 - number of Vbits of the ACP address) assigned to the | |||
node. This address is assigned with an adddress prefix of N or | node. This address is assigned with an address prefix of N or larger | |||
larger to a loopback interface. | 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 does 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. Non fully autonomic components of | |||
the ACP such as ACP connect interfaces (see Figure 15 may also | the ACP such as ACP connect interfaces (see Figure 16) may also | |||
introduce additional global scope IPv6 addresses on other type of | introduce additional global scope IPv6 addresses on other types of | |||
interfaces into the ACP. | interfaces into the ACP. | |||
[RFC Editor: please remove this paragraph: Note to reviewers: Please | [RFC Editor: please remove this paragraph: Note to reviewers: Please | |||
do not complain again about an obsolete RFC number in the following | do not complain again about an obsolete RFC number in the following | |||
paragraph. The text should make it clear that the reference was | paragraph. The text should make it clear that the reference was | |||
choosen to indicate a particular point in time, but not to recommend/ | choosen to indicate a particular point in time, but not to recommend/ | |||
use a particularily obsolete protocol spec.] | use a particularily 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 IBGP | |||
skipping to change at page 81, line 47 ¶ | skipping to change at page 83, line 15 ¶ | |||
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 reviews the reasons for the choice of loopback | |||
addresses for ACP addresses is based on the IPv6 address architecture | addresses for ACP addresses is based on the IPv6 address architecture | |||
and common challenges: | 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 [RFC4291], Section 2.1. | |||
2. IPv6 implementations commonly do not allow assignment of the same | ||||
2. IPv6 implementations do commonly not allow to assign 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 | 3. Global scope addresses assigned to interfaces that are connecting | |||
to other nodes (external interfaces) may not be stable addresses | to other nodes (external interfaces) may not be stable addresses | |||
for communications because any such interface could fail due to | 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 | 4. If failure of the subnet does not result in bringing down the | |||
interface and making the addresses unusable, it could result in | interface and making the addresses unusable, it could result in | |||
unreachability of the address because the shortest path to the | unreachability of the address because the shortest path to the | |||
node might go through one of the other nodes on the same subnet | node might go through one of the other nodes on the same subnet | |||
which could equally consider the subnet to be operational even | which could equally consider the subnet to be operational even | |||
though it is not. | though it is not. | |||
5. Many OAM service implementations on routers can not deal with | 5. Many OAM service implementations on routers can not deal with | |||
more than one peer address, often because they do already expect | more than one peer address, often because they do already expect | |||
that a single loopback address can be used, especially to provide | that a single loopback address can be used, especially to provide | |||
a stable address under failure of external interfaces or links. | a 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 adddress for a connection at a time with the | it can only use one address for a connection at a time 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 | [RFC6824] solves this problem, it is not widely adopted for | |||
router OAM services implementations. | router OAM services implementations. | |||
7. To completely autonomously assign global scope addresses to | 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 in 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 subnet whose address space to use for each subnet. | across those subnet whose 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 extern subnets is therefore wasteful for the | |||
address space and also unnecessarily increasing the size of | address space and also unnecessarily increasing the size of | |||
routing and forwarding tables, which especially for the ACP is | routing and forwarding tables, which especially for the ACP is | |||
highly undesirable because it should attempt to minimize the per- | highly undesirable because it should attempt to minimize the per- | |||
node overhead of the ACP VRF. | 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 schemes do not consider | |||
ACP addresses for subnets connecting ACP nodes. | ACP addresses for subnets connecting ACP nodes. | |||
Note that [RFC8402] introduces the term Node-SID to refer to IGP | Note that [RFC8402] introduces the term Node-SID to refer to IGP | |||
prefix segments that identify a specific rouer, for example on a | prefix segments that identify a specific rouer, for example on a | |||
loopback interface. An ACP loopback address prefix may similarily be | loopback interface. An ACP loopback address prefix may similarily be | |||
called an ACP Node Identifier. | called an ACP Node Identifier. | |||
6.12.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 protocol | |||
- standards or non-standards). | - standards or non-standards). | |||
Note that all the considerations described here are assuming point- | Note that all the considerations described here are assuming point- | |||
to-point secure channel associations. Mapping multi-party secure | to-point secure channel associations. Mapping multi-party secure | |||
channel associations such as [RFC6407] is out of scope (but would be | channel associations such as [RFC6407] is out of scope. | |||
easy to add). | ||||
6.12.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 into 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.11.1.7. | repair, see Section 6.12.1.7. | |||
6.12.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 into 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 into the ACP multicast-access virtual interface. IPv6 unicast | |||
packets sent into an ACP multi-access virtual interface are sent to | packets sent into an ACP multi-access virtual interface are sent to | |||
the ACP secure channel that belongs to the ACP neighbor that is the | the ACP secure channel that belongs to the ACP neighbor that is the | |||
next-hop in the ACP forwarding table entry used to reach the packets | next-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 a peer to be dead for a | |||
secure channel mapped into an ACP multi-access virtual interface, | secure channel mapped into an ACP multi-access virtual interface, | |||
this SHOULD result in signaling breakage of that peer to RPL, so it | this SHOULD result in signaling breakage of that peer to RPL, so it | |||
can trigger RPL DODAG repair, see Section 6.11.1.7. | can 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 (Stateless Address Auto-Configuration) - | |||
[RFC4862]) to assign their IPv6 link local address on the ACP virtual | [RFC4862]) to assign their IPv6 link local address on the ACP virtual | |||
interface and ND (Neighbor Discovery - [RFC4861]) to discover which | interface and ND (Neighbor Discovery - [RFC4861]) to discover which | |||
IPv6 link-local neighbor address belongs to which ACP secure channel | IPv6 link-local neighbor address belongs to which ACP secure channel | |||
mapped to the ACP virtual interface. This is independent of whether | mapped to the ACP virtual interface. This is independent of whether | |||
the ACP virtual interface is point-to-point or multi-access. | the ACP virtual interface is point-to-point or multi-access. | |||
"Optimistic Duplicate Address Detection (DAD)" according to [RFC4429] | "Optimistic Duplicate Address Detection (DAD)" according to [RFC4429] | |||
is RECOMMENDED because the likelihood for duplicates between ACP | is RECOMMENDED because the likelihood for duplicates between ACP | |||
nodes is highly improbable as long as the address can be formed from | nodes is highly improbable as long as the address can be formed from | |||
a globally unique local assigned identifier (e.g., EUI-48/EUI-64, see | a globally unique local assigned identifier (e.g., EUI-48/EUI-64, see | |||
skipping to change at page 85, line 7 ¶ | skipping to change at page 86, line 11 ¶ | |||
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 | interface on the efficiency of flooding via link local multicasted | |||
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. Alice's | |||
ACP GRASP wants to send a link-local GRASP multicast message to Bob | ACP GRASP wants to send a link-local GRASP multicast message to Bob | |||
and Carol. If Alice's ACP emulates the LAN as one point-to-point | and Carol. If Alice's ACP emulates the LAN as per-peer, point-to- | |||
virtual interface to Bob and one to Carol, The sending applications | point virtual interfaces, one to Bob and one to Carol, Alice's ACP | |||
itself will send two copies, if Alice's ACP emulates a LAN, GRASP | GRASP will send two copies of multicast GRASP messages: One to Bob | |||
will send one packet and the ACP will replicate it. The result is | and one to Carol. If Alice's ACP emulates a LAN via a multipoint | |||
the same. The difference happens when Bob and Carol receive their | virtual interface, Alice's ACP GRASP will send one packet to that | |||
interface and the ACP multipoint virtual interface will replicate the | ||||
packet to each secure channel, one to Bob, one to Carol. The result | ||||
is the same. The difference happens when Bob and Carol receive their | ||||
packet. If they use ACP point-to-point virtual interfaces, their | packet. If they use ACP point-to-point virtual interfaces, their | |||
GRASP instance would forward the packet from Alice to each other as | GRASP instance would forward the packet from Alice to each other as | |||
part of the GRASP flooding procedure. These packets are unnecessary | part of the GRASP flooding procedure. These packets are unnecessary | |||
and would be discarded by GRASP on receipt as duplicates (by use of | and would be discarded by GRASP on receipt as duplicates (by use of | |||
the GRASP Session ID). If Bob and Carol's ACP would emulate a multi- | the GRASP Session ID). If Bob and Carol's ACP would emulate a multi- | |||
access virtual interface, then this would not happen, because GRASPs | access virtual interface, then this would not happen, because GRASPs | |||
flooding procedure does not replicate back packets to the interface | flooding procedure does not replicate back packets to the interface | |||
that they were received from. | that they were received from. | |||
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 into ACP virtual | |||
interfaces, but instead into ACP GRASP virtual interfaces, that are | interfaces, but instead into ACP GRASP virtual interfaces, that are | |||
layered on top of ACP virtual interfaces to add TCP reliability to | layered on top of ACP virtual interfaces to add TCP reliability to | |||
link-local multicast GRASP messages. Nevertheless, these ACP GRASP | link-local multicast GRASP messages. Nevertheless, these ACP GRASP | |||
virtual interfaces perform the same replication of message and, | virtual interfaces perform the same replication of message and, | |||
therefore, result in the same impact on flooding. See Section 6.8.2 | therefore, result in the same impact on flooding. See Section 6.9.2 | |||
for more details. | for more 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. In 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 a ACP point-to-point virtual | |||
skipping to change at page 86, line 4 ¶ | skipping to change at page 87, line 6 ¶ | |||
interface. See also Appendix A.10.4. | interface. See also Appendix A.10.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 14: Topology with L2 ACP switches | Figure 15: Topology with L2 ACP switches | |||
Consider a large L2 LAN with ANrtr1...ANrtrN connected via some | Consider a large L2 LAN with ANrtr1...ANrtrN connected via some | |||
topology of L2 switches. Examples include large enterprise campus | topology of L2 switches. Examples include large enterprise campus | |||
networks with an L2 core, IoT networks or broadband aggregation | networks with an L2 core, IoT networks or broadband aggregation | |||
networks which often have even a multi-level L2 switched topology. | networks which often have even a multi-level L2 switched topology. | |||
If the discovery protocol used for the ACP is operating at the subnet | If the discovery protocol used for the ACP is operating 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 | |||
skipping to change at page 87, line 39 ¶ | skipping to change at page 88, line 40 ¶ | |||
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.12.5.2.2), it is REQIURED not to | virtual interfaces (see Section 6.13.5.2.2), it is REQIURED 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 all the above described logic only | |||
applies to untagged GRASP packets. For the purpose of ACP neighbor | applies to untagged GRASP packets. For the purpose of ACP neighbor | |||
discovery via GRASP, no VLAN tagged packets SHOULD be sent or | discovery via GRASP, no VLAN tagged packets SHOULD be sent or | |||
received. In a hybrid L2/L3 switch, each VLAN would therefore only | received. In a hybrid L2/L3 switch, each VLAN would therefore only | |||
create ACP adjacencies across those ports where the VLAN is carried | create ACP adjacencies across those ports where the VLAN is carried | |||
untagged. | untagged. | |||
skipping to change at page 89, line 23 ¶ | skipping to change at page 90, line 28 ¶ | |||
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 | interface looks like a normal network interface without any ACP | |||
encryption/novel-signaling). | 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 15: ACP connect | Figure 16: 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 NOC systems connected to it needs to be physically controlled/ | |||
secured. For this reason the mechanisms described here do explicitly | secured. For this reason the mechanisms described here do explicitly | |||
not include options to allow for a non-ACP router to be connected | not include options to allow for a non-ACP router to be connected | |||
across an ACP connect interface and addresses behind such a router | across an ACP connect interface and addresses behind such a router | |||
routed inside the ACP. | routed inside the ACP. | |||
skipping to change at page 90, line 26 ¶ | skipping to change at page 91, line 31 ¶ | |||
An ACP connect interface provides exclusively access to only the ACP. | An ACP connect interface provides exclusively 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.10.4), letting the | ACP Manual Addressing Sub-Scheme (Section 6.11.4), letting the | |||
operator configure for example only the Subnet-ID and having the node | operator 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 hosts 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 ACP | |||
skipping to change at page 90, line 49 ¶ | skipping to change at page 92, line 7 ¶ | |||
towards its different interfaces, ACP and Data-Plane. With RFC6724, | towards its different interfaces, ACP and Data-Plane. With RFC6724, | |||
The NMS host will select the ACP connect interface for all addresses | The NMS host will select the ACP connect interface for all addresses | |||
in the ACP because any ACP destination address is longest matched by | in the ACP because any ACP destination address is longest matched by | |||
the address on the ACP connect interface. If the NMS hosts ACP | the address on the ACP connect interface. If the NMS hosts ACP | |||
connect interface uses another prefix or if the ACP uses multiple ULA | connect interface uses another prefix or if the ACP uses multiple ULA | |||
prefixes, then the NMS hosts require (static) routes towards the ACP | prefixes, then the NMS hosts require (static) routes towards the ACP | |||
interface for these prefixes. | 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 into the | |||
ACP if the packet has an IPv6 source address from that interface. | ACP if the packet has an IPv6 source address from that interface | |||
This is sometimes called "RPF filtering". This MAY be changed | (this is sometimes called "RPF filtering"). This filtering rule MAY | |||
through administrative measures. | be changed through administrative measures. The more any such | |||
administrative action enable reachability of non ACP 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/use of | |||
ACP connect interfaces only on nodes explicitly targeted to be | 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 only | |||
be changed through re-enrollment. See also Appendix A.10.5. | be changed through re-enrollment. See also Appendix A.10.5. | |||
ACP Edge nodes SHOULD have a configurable option to filter packets | ACP Edge nodes SHOULD have a configurable option to prohibit packets | |||
with RPI headers (xsee Section 6.11.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 ACP Edge node and NOC devices are | |||
separate physical devices and the ACP connect interface is a physical | separate physical devices and the ACP connect interface is a physical | |||
network connection. This section discusses the implication when | network connection. This section discusses the implication when | |||
these components are instead software components running on a single | these components are instead software components running on a single | |||
skipping to change at page 92, line 22 ¶ | skipping to change at page 93, line 35 ¶ | |||
software packages. | software packages. | |||
8.1.3. Auto Configuration | 8.1.3. Auto Configuration | |||
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 on the ACP connect subnet StateLess Address | |||
Autoconfiguration (SLAAC - [RFC4862]) and route auto configuration | Autoconfiguration (SLAAC - [RFC4862]) and route auto configuration | |||
according to [RFC4191]. | according to [RFC4191]. | |||
The ACP edge node acts as the router on the ACP connect subnet, | The ACP edge node acts as the router towards the ACP on the ACP | |||
providing the (auto-)configured prefix for the ACP connect subnet to | connect subnet, providing the (auto-)configured prefix for the ACP | |||
NMS hosts and/or software components. The ACP edge node uses route | connect subnet and (auto-)configured routes into the ACP to NMS hosts | |||
prefix option of RFC4191 to announce the default route (::/) with a | and/or software components. | |||
lifetime of 0 and aggregated prefixes for routes in the ACP routing | ||||
table with normal lifetimes. This will ensure that the ACP edge node | The ACP edge node uses the Route Information Option (RIO) of RFC4191 | |||
does not become a default router, but that the NMS hosts and software | to announce aggregated prefixes for address prefixes used in the ACP | |||
components will route the prefixes used in the ACP to the ACP edge | (with normal RIO lifetimes. In addition, the ACP edge 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 | ||||
connect subnet on one interface and another network (Data Plane / NMS | ||||
network) on the same or another interface of the Type C host, relying | ||||
on other routers than the ACP edge node. The RIOs ensure that these | ||||
hosts will only route the prefixes used in the ACP to the ACP edge | ||||
node. | node. | |||
Type A/B host ignore the RIOs and will consider the ACP node to be | ||||
their default router for all destination. This is sufficient when | ||||
type A/B hosts only need to connect to the ACP but not other | ||||
networks. Attaching Type A/B hosts to both the ACP and other | ||||
networks, requires either explicit ACP prefix route configuration on | ||||
the Type A/B hosts or the combined ACP/Data-Plane 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 (ACP Zone Addressing Sub- | |||
Scheme), /112 or /120 (Vlong Addressing Sub-Scheme) routes of actual | Scheme), /112 or /120 (Vlong Addressing Sub-Scheme) routes of actual | |||
ACP nodes. If ACP interfaces are configured with non ULA prefixes, | ACP nodes. If ACP interfaces are configured with non ULA prefixes, | |||
then those prefixes cannot be aggregated without further configured | then those prefixes cannot be aggregated without further configured | |||
policy on the ACP edge node. This explains the above recommendation | policy on the ACP edge node. This explains the above recommendation | |||
to use ACP ULA prefix covered prefixes for ACP connect interfaces: | to use ACP ULA prefix covered prefixes for ACP connect interfaces: | |||
They allow for a shorter list of prefixes to be signaled via RFC4191 | They allow for a shorter list of prefixes to be signaled via RFC4191 | |||
to NMS hosts and software components. | to NMS hosts and software components. | |||
skipping to change at page 93, line 22 ¶ | skipping to change at page 94, line 46 ¶ | |||
| | | [ACP ]. | . | |+ | | | | [ACP ]. | . | |+ | |||
| | | .[VRF ] .[VRF ] | v | "ACP address"|| | | | | .[VRF ] .[VRF ] | v | "ACP address"|| | |||
| +-------+. .[Select].+--------+ "Date Plane || | | +-------+. .[Select].+--------+ "Date 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 16: VRF select | Figure 17: 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 | into 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 with | |||
legacy NMS Hosts that support only one IP interface. | legacy NMS Hosts that support only one IP interface, or it may be | |||
insufficient to support [RFC4191] Type A or B host (see | ||||
Section 8.1.3). | ||||
To provide a single subnet into both ACP and Data-Plane, the ACP Edge | To provide a single subnet into both ACP and Data-Plane, the ACP Edge | |||
node needs to de-multiplex packets from NMS hosts into ACP VRF and | node needs to de-multiplex packets from NMS hosts into ACP VRF and | |||
Data-Plane. This is sometimes called "VRF select". If the ACP VRF | Data-Plane. This is sometimes called "VRF select". If the ACP VRF | |||
has no overlapping IPv6 addresses with the Data-Plane (it should have | has no overlapping IPv6 addresses with the Data-Plane (it should have | |||
no overlapping addresses), then this function can use the IPv6 | 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, the ACP | |||
skipping to change at page 95, line 48 ¶ | skipping to change at page 97, line 29 ¶ | |||
ABNF. | ABNF. | |||
connection = [ method , local-addr, remote-addr, ?pmtu ] | connection = [ method , local-addr, remote-addr, ?pmtu ] | |||
method = [ "IKEv2" , ?port ] | method = [ "IKEv2" , ?port ] | |||
method =/ [ "DTLS", port ] | method =/ [ "DTLS", port ] | |||
local-addr = [ address , ?vrf ] | local-addr = [ address , ?vrf ] | |||
remote-addr = [ address ] | remote-addr = [ address ] | |||
address = ("any" | ipv4-address | ipv6-address ) | address = ("any" | ipv4-address | ipv6-address ) | |||
vrf = tstr ; Name of a VRF on this node with local-address | vrf = tstr ; Name of a VRF on this node with local-address | |||
Figure 17: Parameters for remote ACP neighbors | Figure 18: 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: | |||
o 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- | ||||
o 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 to be specified. If vrf is not specified, it is | |||
the default VRF on the node. In DULL GRASP the VRF is implied by | the default VRF on the node. In DULL GRASP the VRF is implied by | |||
the interface across which DULL GRASP operates. | the interface across which DULL GRASP operates. | |||
* If local address is "any", the local address used when initiating | ||||
o 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 | ||||
o Configuration of port is only required for methods where no | ||||
defaults exist (e.g., "DTLS"). | defaults exist (e.g., "DTLS"). | |||
o If remote address is "any", the connection is only a responder. | * If remote address is "any", the connection is only a responder. | |||
It is a "hub" that can be used by multiple remote peers to connect | It is a "hub" that can be used by multiple remote peers to connect | |||
simultaneously - without having to know or configure their | simultaneously - without having to know or configure their | |||
addresses. Example: Hub site for remote "spoke" sites reachable | addresses. Example: Hub site for remote "spoke" sites reachable | |||
over the Internet. | over the Internet. | |||
* Pmtu should be configurable to overcome issues/limitations of Path | ||||
o Pmtu should be configurable to overcome issues/limitations of Path | ||||
MTU Discovery (PMTUD). | MTU Discovery (PMTUD). | |||
* IKEv2/IPsec to remote peers should support the optional NAT | ||||
o 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 IPinIP, GRE or other form of pre-existing 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. In result, the tunnel | |||
is used for normal "L2 adjacent" candidate ACP neighbor discovery | is used for normal "L2 adjacent" candidate ACP neighbor discovery | |||
with DULL and secure channel setup procedures described in this | with DULL and secure channel setup procedures described in this | |||
skipping to change at page 97, line 9 ¶ | skipping to change at page 98, line 35 ¶ | |||
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 | ||||
the risk of a MITM downgrade attack somewhere along the underlay path | ||||
that blocks all but the most easily attacked ACP secure channel | ||||
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 | ||||
ACP node supports more than one ACP secure channel protocol in the | ||||
first place). | ||||
8.2.3. Summary | 8.2.3. Summary | |||
Configured/Tunneled Remote ACP neighbors are less "indestructible" | Configured/Tunneled Remote ACP neighbors are less "indestructible" | |||
than L2 adjacent ACP neighbors based on link local addressing, since | than L2 adjacent ACP neighbors based on link local addressing, since | |||
they depend on more correct Data-Plane operations, such as routing | they depend on more correct Data-Plane operations, such as routing | |||
and global addressing. | and global addressing. | |||
Nevertheless, these options may be crucial to incrementally deploy | Nevertheless, these options may be crucial to incrementally deploy | |||
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 | |||
skipping to change at page 97, line 31 ¶ | skipping to change at page 99, line 20 ¶ | |||
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/requirements for the internal operational model | |||
beneficial or necessary to achieve the desired use-case benefits of | beneficial or necessary to achieve the desired use-case benefits of | |||
the ACP (see Section 3). | the ACP (see Section 3). | |||
o Section 9.1 describes recommended operator diagnostics | * Section 9.1 describes recommended operator diagnostics | |||
capabilities of ACP nodes. | capabilities of ACP nodes. | |||
* Section 9.2 describes high level how an ACP registrar needs to | ||||
o Section 9.2 describes high level how an ACP registrar needs to | ||||
work, what its configuration parameters are and specific issues | work, what its configuration parameters are and specific issues | |||
impacting the choices of deployment design due to renewal and | impacting the choices of deployment design due to renewal and | |||
revocation issues. It describes a model where ACP Registrars have | revocation issues. It describes a model where ACP Registrars have | |||
their own sub-CA to provide the most distributed deployment option | their own sub-CA to provide the most distributed deployment option | |||
for ACP Registrars, and it describes considerations for | for ACP Registrars, and it describes considerations for | |||
centralized policy control of ACP Registrar operations. | centralized policy control of ACP Registrar operations. | |||
* Section 9.3 describes suggested ACP node behavior and operational | ||||
o 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 | |||
skipping to change at page 98, line 33 ¶ | skipping to change at page 100, line 21 ¶ | |||
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 node?" | neighboring 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 as 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: | |||
o 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 | ||||
o When the ANI is not operating correctly, it may not be possible to | ||||
run diagnostics from remote because of missing connectivity. The | run diagnostics from remote because of missing connectivity. The | |||
ANI should therefore have diagnostic capabilities available | ANI should therefore have diagnostic capabilities available | |||
locally on the nodes themselves. | locally on the nodes themselves. | |||
* Certain operations are difficult or impossible to monitor in real- | ||||
o 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 means of capturing (logging) | |||
diagnostics locally for later retrieval. Ideally, these captures | diagnostics locally for later retrieval. Ideally, these captures | |||
are also non-volatile so that they can survive extended power-off | are also non-volatile 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 being sent back for diagnostics at a more | |||
appropriate location. | appropriate location. | |||
The most simple form of diagnostics answering questions such as the | The most simple form of diagnostics 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 non-expected/non-operational item | |||
is the most likely root cause. Or just log/highlight that item. For | is the most likely root cause. Or just log/highlight that item. For | |||
example: | example: | |||
Q: Is ACP operational to accept neighbor connections: | Q: Is ACP operational to accept neighbor connections: | |||
o Check if any potentially necessary configuration to make ACP/ANI | * Check if any potentially necessary configuration to make ACP/ANI | |||
operational are correct (see Section 9.3 for a discussion of such | operational are correct (see Section 9.3 for a discussion of such | |||
commands). | commands). | |||
* Does the system time look reasonable, or could it be the default | ||||
o Does the system time look reasonable, or could it be the default | ||||
system time after clock chip battery failure (certificate checks | system time after clock chip battery failure (certificate checks | |||
depend on reasonable notion of time). | depend on reasonable notion of time). | |||
o Does the node have keying material - domain certificate, TA | * Does the node have keying material - domain certificate, TA | |||
certificates, .... | certificates, .... | |||
* If no keying material and ANI is supported/enabled, check the | ||||
o If no keying material and ANI is supported/enabled, check the | ||||
state of BRSKI (not detailed in this example). | state of BRSKI (not detailed in this example). | |||
* Check the validity of the domain certificate: | ||||
o Check the validity of the domain certificate: | - Does the certificate validate against the TA? | |||
- Has it been revoked? | ||||
* Does the certificate validate against the TA? | - Was the last scheduled attempt to retrieve a CRL successful | |||
* 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). | (e.g., do we know that our CRL information is up to date). | |||
- Is the certificate valid: validity start time in the past, | ||||
* Is the certificate valid: validity start time in the past, | ||||
expiration time in the future? | expiration time 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? | ||||
o Was the ACP VRF successfully created? | * Is ACP enabled on one or more interfaces that are up and running? | |||
o 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 this looks good, the ACP should be running locally "fine" - | |||
but we did not check any ACP neighbor relationships. | 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? | |||
o Is the interface physically up? Does it have an IPv6 link-local | ||||
address? | ||||
o Is it enabled for ACP? | * Is the interface physically up? Does it have an IPv6 link-local | |||
address? | ||||
o Do we successfully send DULL GRASP messages to the interface (link | * Is it enabled for ACP? | |||
* Do we successfully send DULL GRASP messages to the interface (link | ||||
layer errors)? | layer errors)? | |||
* Do we receive DULL GRASP messages on the interface? If not, some | ||||
o 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 | ||||
o 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? | ||||
o 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 | ||||
o When did we last attempt to build an ACP secure channel to the | ||||
neighbor? | neighbor? | |||
* If it failed, why: | ||||
o If it failed, why: | - Did the neighbor close the connection on us or did we close the | |||
* Did the neighbor close the connection on us or did we close the | ||||
connection on it because the domain certificate membership | 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 | |||
+ 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). | |||
+ The ACP certificate membership check (Section 6.1.3) fails: | o The ACP certificate membership check (Section 6.2.3) fails: | |||
+ 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 nodes 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 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 is not yet | ||||
valid. | valid. | |||
- Any other connection issues in e.g., IKEv2 / IPsec, DTLS?. | ||||
* Any other connection issues in 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? | |||
o 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? | ||||
o Is the RPL routing protocol for the ACP running? | * 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 | ||||
o Is there a default route to the root in the ACP routing table? | ||||
o Is there for each direct ACP neighbor not reachable over the ACP | ||||
virtual interface to the root a route in the ACP routing table? | virtual interface to the root a route in the ACP routing table? | |||
* Is ACP GRASP running? | ||||
o Is ACP GRASP running? | * Is at least one SRV.est objective cached (to support certificate | |||
o Is at least one SRV.est objective cached (to support certificate | ||||
renewal)? | renewal)? | |||
* Is there at least one BRSKI registrar objective cached (in case | ||||
o Is there at least one BRSKI registrar objective cached (in case | ||||
BRSKI is supported) | BRSKI is supported) | |||
* Is BRSKI proxy operating normally on all interfaces where ACP is | ||||
o Is BRSKI proxy operating normally on all interfaces where ACP is | ||||
operating? | operating? | |||
* ... | ||||
o ... | ||||
These lists are not necessarily complete, but illustrate the | These lists are not necessarily complete, but 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) over | |||
problems in the credentials management (certificate lifetimes), | problems in the credentials management (certificate lifetimes), | |||
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 are illustrating how the ANI operations can be | |||
diagnosed with passive observation of the operational state of its | diagnosed with passive observation of the operational state of its | |||
skipping to change at page 102, line 32 ¶ | skipping to change at page 103, line 31 ¶ | |||
unsolicited (as it would be in LLDP) so that other observers on the | unsolicited (as it would be in LLDP) so that other observers on the | |||
same subnet can determine who is an "interested adjacent party". | same subnet can determine who is an "interested adjacent 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 signalled explicitly because its hash is | not required to be signalled explicitly because its hash is | |||
sufficient for certificate chain validation. In the case of ACP | sufficient for certificate chain validation. In the case of ACP | |||
secure channel setup this leads to limited diagnostics when | secure channel setup this leads to limited diagnostics when | |||
authentication fails because of TA mismatch. For this reason, | authentication fails because of TA mismatch. For this reason, | |||
Section 6.7.2 recommends to also include the TA certificate in the | Section 6.8.2 recommends to also include the TA certificate in the | |||
secure channel signalling. This should be possible to do without | secure channel signalling. This should be possible to do without | |||
protocol modifications in the security association protocols used by | protocol modifications in the security association protocols used by | |||
the ACP. For example, while [RFC7296] does not mention this, it also | the ACP. For example, while [RFC7296] does not mention this, it also | |||
does not prohibit it. | does not prohibit it. | |||
One common deployment use case where the diagnostic through the | One common deployment use case where the diagnostic through the | |||
signalled TA of a candidate peer is very helpfull are multi-tenant | signalled TA of a candidate peer is very helpfull are multi-tenant | |||
environments such as office buildings, where different tenants run | environments such as office buildings, where different tenants run | |||
their own networks and ACPs. Each tenant is given supposedly | their own networks and ACPs. Each tenant is given supposedly | |||
disjoint L2 connectivity through the building infrastructure. In | disjoint L2 connectivity through the building infrastructure. In | |||
skipping to change at page 103, line 7 ¶ | skipping to change at page 104, line 7 ¶ | |||
While the ACP itself is not impact by this, the Data-Plane to be | While the ACP itself is not impact by this, the Data-Plane to be | |||
built later may be impacted. Therefore it is important to be able to | built later may be impacted. Therefore it is important to be able to | |||
diagnose such undesirable connectivity from the ACP so that any | 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 | accordingly treat such interfaces. 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 example case is the intended or accidental re-activation of | |||
equipment whose TA certificate has long expired, such as redundant | equipment whose TA certificate has long expired, such as redundant | |||
gear taken from storage after years. Potentially without following | gear taken from storage after years. | |||
the correct process set up for such cases. | ||||
A third example case is when in a mergers&aquisition case ACP nodes | A third example case is when in a mergers&aquisition case ACP nodes | |||
have not been correctly provisioned with the mutual TA of previously | have not been correctly provisioned with the mutual TA of previously | |||
disjoint ACP. This is assuming that the ACP domain names where | disjoint ACP. This is assuming that the ACP domain names 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 example case is when multiple registrars where set up for | |||
the same ACP but without correctly setting up the same TA. For | the same ACP but without correctly setting up the same TA. For | |||
example when registrars support to also be CA themselves but are | example when registrars support to also be CA themselves but are | |||
misconfigured to become TA instead of intermediate CA. | misconfigured to become TA instead of intermediate CA. | |||
9.2. ACP Registrars | 9.2. ACP Registrars | |||
As described in Section 6.10.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 are providing ACP address prefixes to candidate ACP | |||
nodes by enrolling them with an ACP certificate into an ACP domain | nodes by enrolling them with an ACP certificate into an ACP domain | |||
via any appropriate mechanism/protocol, automated or not. | via any appropriate mechanism/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 | |||
skipping to change at page 103, line 48 ¶ | skipping to change at page 104, line 47 ¶ | |||
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 registrar 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 minimum pre-existing (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/candidate ACP nodes could want to use, for example BRSKI over | |||
CoAP (Constrained Application Protocol), or proxying of Netconf. | CoAP (Constrained Application Protocol), or 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 would | |||
use the Data-Plane. ACP and Data-Plane in an ACP registrar could | use the Data-Plane. 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 a 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 ACP registrar and | |||