| < draft-ietf-anima-grasp-07.txt | draft-ietf-anima-grasp-08A.txt > | |||
|---|---|---|---|---|
| Network Working Group C. Bormann | Network Working Group C. Bormann | |||
| Internet-Draft Universitaet Bremen TZI | Internet-Draft Universitaet Bremen TZI | |||
| Intended status: Standards Track B. Carpenter, Ed. | Intended status: Standards Track B. Carpenter, Ed. | |||
| Expires: March 17, 2017 Univ. of Auckland | Expires: April 20, 2017 Univ. of Auckland | |||
| B. Liu, Ed. | B. Liu, Ed. | |||
| Huawei Technologies Co., Ltd | Huawei Technologies Co., Ltd | |||
| September 13, 2016 | October 17, 2016 | |||
| A Generic Autonomic Signaling Protocol (GRASP) | A Generic Autonomic Signaling Protocol (GRASP) | |||
| draft-ietf-anima-grasp-07 | draft-ietf-anima-grasp-08 | |||
| Abstract | Abstract | |||
| This document establishes requirements for a signaling protocol that | This document establishes requirements for a signaling protocol that | |||
| enables autonomic devices and autonomic service agents to dynamically | enables autonomic devices and autonomic service agents to dynamically | |||
| discover peers, to synchronize state with them, and to negotiate | discover peers, to synchronize state with them, and to negotiate | |||
| parameter settings mutually with them. The document then defines a | parameter settings mutually with them. The document then defines a | |||
| general protocol for discovery, synchronization and negotiation, | general protocol for discovery, synchronization and negotiation, | |||
| while the technical objectives for specific scenarios are to be | while the technical objectives for specific scenarios are to be | |||
| described in separate documents. An Appendix briefly discusses | described in separate documents. An Appendix briefly discusses | |||
| skipping to change at page 1, line 40 | skipping to change at page 1, line 40 | |||
| 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 http://datatracker.ietf.org/drafts/current/. | Drafts is at http://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 March 17, 2017. | This Internet-Draft will expire on April 20, 2017. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2016 IETF Trust and the persons identified as the | Copyright (c) 2016 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 | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| skipping to change at page 2, line 22 | skipping to change at page 2, line 22 | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Requirement Analysis of Discovery, Synchronization and | 2. Requirement Analysis of Discovery, Synchronization and | |||
| Negotiation . . . . . . . . . . . . . . . . . . . . . . . . . 4 | Negotiation . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2.1. Requirements for Discovery . . . . . . . . . . . . . . . 5 | 2.1. Requirements for Discovery . . . . . . . . . . . . . . . 5 | |||
| 2.2. Requirements for Synchronization and Negotiation | 2.2. Requirements for Synchronization and Negotiation | |||
| Capability . . . . . . . . . . . . . . . . . . . . . . . 6 | Capability . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 2.3. Specific Technical Requirements . . . . . . . . . . . . . 8 | 2.3. Specific Technical Requirements . . . . . . . . . . . . . 8 | |||
| 3. GRASP Protocol Overview . . . . . . . . . . . . . . . . . . . 10 | 3. GRASP Protocol Overview . . . . . . . . . . . . . . . . . . . 10 | |||
| 3.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 10 | 3.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 3.2. High-Level Design Choices . . . . . . . . . . . . . . . . 11 | 3.2. High Level Deployment Model . . . . . . . . . . . . . . . 11 | |||
| 3.3. GRASP Protocol Basic Properties and Mechanisms . . . . . 15 | 3.3. High Level Design Choices . . . . . . . . . . . . . . . . 12 | |||
| 3.3.1. Required External Security Mechanism . . . . . . . . 15 | 3.4. GRASP Protocol Basic Properties and Mechanisms . . . . . 16 | |||
| 3.3.2. Limited Security Instances . . . . . . . . . . . . . 15 | 3.4.1. Required External Security Mechanism . . . . . . . . 16 | |||
| 3.3.3. Transport Layer Usage . . . . . . . . . . . . . . . . 17 | 3.4.2. Limited Security Instances . . . . . . . . . . . . . 16 | |||
| 3.3.4. Discovery Mechanism and Procedures . . . . . . . . . 18 | 3.4.3. Transport Layer Usage . . . . . . . . . . . . . . . . 18 | |||
| 3.3.5. Negotiation Procedures . . . . . . . . . . . . . . . 21 | 3.4.4. Discovery Mechanism and Procedures . . . . . . . . . 19 | |||
| 3.3.6. Synchronization and Flooding Procedure . . . . . . . 22 | 3.4.5. Negotiation Procedures . . . . . . . . . . . . . . . 22 | |||
| 3.4. High Level Deployment Model . . . . . . . . . . . . . . . 24 | 3.4.6. Synchronization and Flooding Procedure . . . . . . . 23 | |||
| 3.5. GRASP Constants . . . . . . . . . . . . . . . . . . . . . 25 | 3.5. GRASP Constants . . . . . . . . . . . . . . . . . . . . . 25 | |||
| 3.6. Session Identifier (Session ID) . . . . . . . . . . . . . 26 | 3.6. Session Identifier (Session ID) . . . . . . . . . . . . . 26 | |||
| 3.7. GRASP Messages . . . . . . . . . . . . . . . . . . . . . 26 | 3.7. GRASP Messages . . . . . . . . . . . . . . . . . . . . . 26 | |||
| 3.7.1. Message Overview . . . . . . . . . . . . . . . . . . 26 | 3.7.1. Message Overview . . . . . . . . . . . . . . . . . . 27 | |||
| 3.7.2. GRASP Message Format . . . . . . . . . . . . . . . . 27 | 3.7.2. GRASP Message Format . . . . . . . . . . . . . . . . 27 | |||
| 3.7.3. Discovery Message . . . . . . . . . . . . . . . . . . 27 | 3.7.3. Discovery Message . . . . . . . . . . . . . . . . . . 28 | |||
| 3.7.4. Discovery Response Message . . . . . . . . . . . . . 28 | 3.7.4. Discovery Response Message . . . . . . . . . . . . . 29 | |||
| 3.7.5. Request Messages . . . . . . . . . . . . . . . . . . 29 | 3.7.5. Request Messages . . . . . . . . . . . . . . . . . . 30 | |||
| 3.7.6. Negotiation Message . . . . . . . . . . . . . . . . . 30 | 3.7.6. Negotiation Message . . . . . . . . . . . . . . . . . 31 | |||
| 3.7.7. Negotiation End Message . . . . . . . . . . . . . . . 30 | 3.7.7. Negotiation End Message . . . . . . . . . . . . . . . 31 | |||
| 3.7.8. Confirm Waiting Message . . . . . . . . . . . . . 31 | 3.7.8. Confirm Waiting Message . . . . . . . . . . . . . 31 | |||
| 3.7.9. Synchronization Message . . . . . . . . . . . . . . . 31 | 3.7.9. Synchronization Message . . . . . . . . . . . . . . . 32 | |||
| 3.7.10. Flood Synchronization Message . . . . . . . . . . . . 31 | 3.7.10. Flood Synchronization Message . . . . . . . . . . . . 32 | |||
| 3.7.11. No Operation Message . . . . . . . . . . . . . . . . 32 | 3.7.11. No Operation Message . . . . . . . . . . . . . . . . 33 | |||
| 3.8. GRASP Options . . . . . . . . . . . . . . . . . . . . . . 33 | 3.8. GRASP Options . . . . . . . . . . . . . . . . . . . . . . 33 | |||
| 3.8.1. Format of GRASP Options . . . . . . . . . . . . . . . 33 | 3.8.1. Format of GRASP Options . . . . . . . . . . . . . . . 33 | |||
| 3.8.2. Divert Option . . . . . . . . . . . . . . . . . . . . 33 | 3.8.2. Divert Option . . . . . . . . . . . . . . . . . . . . 33 | |||
| 3.8.3. Accept Option . . . . . . . . . . . . . . . . . . . . 33 | 3.8.3. Accept Option . . . . . . . . . . . . . . . . . . . . 34 | |||
| 3.8.4. Decline Option . . . . . . . . . . . . . . . . . . . 34 | 3.8.4. Decline Option . . . . . . . . . . . . . . . . . . . 34 | |||
| 3.8.5. Locator Options . . . . . . . . . . . . . . . . . . . 34 | 3.8.5. Locator Options . . . . . . . . . . . . . . . . . . . 35 | |||
| 3.9. Objective Options . . . . . . . . . . . . . . . . . . . . 36 | 3.9. Objective Options . . . . . . . . . . . . . . . . . . . . 36 | |||
| 3.9.1. Format of Objective Options . . . . . . . . . . . . . 36 | 3.9.1. Format of Objective Options . . . . . . . . . . . . . 36 | |||
| 3.9.2. Objective flags . . . . . . . . . . . . . . . . . . . 37 | 3.9.2. Objective flags . . . . . . . . . . . . . . . . . . . 38 | |||
| 3.9.3. General Considerations for Objective Options . . . . 37 | 3.9.3. General Considerations for Objective Options . . . . 38 | |||
| 3.9.4. Organizing of Objective Options . . . . . . . . . . . 38 | 3.9.4. Organizing of Objective Options . . . . . . . . . . . 39 | |||
| 3.9.5. Experimental and Example Objective Options . . . . . 39 | 3.9.5. Experimental and Example Objective Options . . . . . 40 | |||
| 4. Implementation Status [RFC Editor: please remove] . . . . . . 40 | 4. Implementation Status [RFC Editor: please remove] . . . . . . 40 | |||
| 4.1. BUPT C++ Implementation . . . . . . . . . . . . . . . . . 40 | 4.1. BUPT C++ Implementation . . . . . . . . . . . . . . . . . 40 | |||
| 4.2. Python Implementation . . . . . . . . . . . . . . . . . . 40 | 4.2. Python Implementation . . . . . . . . . . . . . . . . . . 41 | |||
| 5. Security Considerations . . . . . . . . . . . . . . . . . . . 41 | 5. Security Considerations . . . . . . . . . . . . . . . . . . . 42 | |||
| 6. CDDL Specification of GRASP . . . . . . . . . . . . . . . . . 43 | 6. CDDL Specification of GRASP . . . . . . . . . . . . . . . . . 44 | |||
| 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 45 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 46 | |||
| 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 47 | 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 47 | |||
| 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 47 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 48 | |||
| 9.1. Normative References . . . . . . . . . . . . . . . . . . 47 | 9.1. Normative References . . . . . . . . . . . . . . . . . . 48 | |||
| 9.2. Informative References . . . . . . . . . . . . . . . . . 48 | 9.2. Informative References . . . . . . . . . . . . . . . . . 49 | |||
| Appendix A. Open Issues . . . . . . . . . . . . . . . . . . . . 51 | Appendix A. Open Issues . . . . . . . . . . . . . . . . . . . . 52 | |||
| Appendix B. Closed Issues [RFC Editor: Please remove] . . . . . 52 | Appendix B. Closed Issues [RFC Editor: Please remove] . . . . . 52 | |||
| Appendix C. Change log [RFC Editor: Please remove] . . . . . . . 59 | Appendix C. Change log [RFC Editor: Please remove] . . . . . . . 59 | |||
| Appendix D. Capability Analysis of Current Protocols . . . . . . 63 | Appendix D. Example Message Formats . . . . . . . . . . . . . . 64 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 66 | Appendix E. Capability Analysis of Current Protocols . . . . . . 64 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 67 | ||||
| 1. Introduction | 1. Introduction | |||
| The success of the Internet has made IP-based networks bigger and | The success of the Internet has made IP-based networks bigger and | |||
| more complicated. Large-scale ISP and enterprise networks have | more complicated. Large-scale ISP and enterprise networks have | |||
| become more and more problematic for human based management. Also, | become more and more problematic for human based management. Also, | |||
| operational costs are growing quickly. Consequently, there are | operational costs are growing quickly. Consequently, there are | |||
| increased requirements for autonomic behavior in the networks. | increased requirements for autonomic behavior in the networks. | |||
| General aspects of autonomic networks are discussed in [RFC7575] and | General aspects of autonomic networks are discussed in [RFC7575] and | |||
| [RFC7576]. | [RFC7576]. | |||
| skipping to change at page 4, line 11 | skipping to change at page 4, line 11 | |||
| atomic unit of discovery, synchronization or negotiation is referred | atomic unit of discovery, synchronization or negotiation is referred | |||
| to as a technical objective, i.e, a configurable parameter or set of | to as a technical objective, i.e, a configurable parameter or set of | |||
| parameters (defined more precisely in Section 3.1). | parameters (defined more precisely in Section 3.1). | |||
| Following this Introduction, Section 2 describes the requirements for | Following this Introduction, Section 2 describes the requirements for | |||
| discovery, synchronization and negotiation. Negotiation is an | discovery, synchronization and negotiation. Negotiation is an | |||
| iterative process, requiring multiple message exchanges forming a | iterative process, requiring multiple message exchanges forming a | |||
| closed loop between the negotiating entities. In fact, these | closed loop between the negotiating entities. In fact, these | |||
| entities are ASAs, normally but not necessarily in different network | entities are ASAs, normally but not necessarily in different network | |||
| devices. State synchronization, when needed, can be regarded as a | devices. State synchronization, when needed, can be regarded as a | |||
| special case of negotiation, without iteration. Section 3.2 | special case of negotiation, without iteration. Section 3.3 | |||
| describes a behavior model for a protocol intended to support | describes a behavior model for a protocol intended to support | |||
| discovery, synchronization and negotiation. The design of GeneRic | discovery, synchronization and negotiation. The design of GeneRic | |||
| Autonomic Signaling Protocol (GRASP) in Section 3 of this document is | Autonomic Signaling Protocol (GRASP) in Section 3 of this document is | |||
| mainly based on this behavior model. The relevant capabilities of | mainly based on this behavior model. The relevant capabilities of | |||
| various existing protocols are reviewed in Appendix D. | various existing protocols are reviewed in Appendix E. | |||
| The proposed discovery mechanism is oriented towards synchronization | The proposed discovery mechanism is oriented towards synchronization | |||
| and negotiation objectives. It is based on a neighbor discovery | and negotiation objectives. It is based on a neighbor discovery | |||
| process, but also supports diversion to off-link peers. There is no | process, but also supports diversion to off-link peers. There is no | |||
| assumption of any particular form of network topology. When a device | assumption of any particular form of network topology. When a device | |||
| starts up with no pre-configuration, it has no knowledge of the | starts up with no pre-configuration, it has no knowledge of the | |||
| topology. The protocol itself is capable of being used in a small | topology. The protocol itself is capable of being used in a small | |||
| and/or flat network structure such as a small office or home network | and/or flat network structure such as a small office or home network | |||
| as well as a professionally managed network. Therefore, the | as well as a professionally managed network. Therefore, the | |||
| discovery mechanism needs to be able to allow a device to bootstrap | discovery mechanism needs to be able to allow a device to bootstrap | |||
| skipping to change at page 11, line 44 | skipping to change at page 11, line 44 | |||
| o Synchronization Responder: a peer ASA which responds with the | o Synchronization Responder: a peer ASA which responds with the | |||
| value of a synchronization objective. | value of a synchronization objective. | |||
| o Negotiation Initiator: an ASA that spontaneously starts | o Negotiation Initiator: an ASA that spontaneously starts | |||
| negotiation by sending a request message referring to a specific | negotiation by sending a request message referring to a specific | |||
| negotiation objective. | negotiation objective. | |||
| o Negotiation Counterpart: a peer with which the Negotiation | o Negotiation Counterpart: a peer with which the Negotiation | |||
| Initiator negotiates a specific negotiation objective. | Initiator negotiates a specific negotiation objective. | |||
| 3.2. High-Level Design Choices | 3.2. High Level Deployment Model | |||
| This section describes a behavior model and some considerations for | It is expected that a GRASP implementation will reside in an | |||
| designing a generic signaling protocol initially supporting | autonomic node that also contains both the appropriate security | |||
| discovery, synchronization and negotiation, which can act as a | environment, preferably the Autonomic Control Plane (ACP) | |||
| platform for different technical objectives. | [I-D.ietf-anima-autonomic-control-plane], and one or more Autonomic | |||
| Service Agents (ASAs). In the minimal case of a single-purpose | ||||
| device, these three components might be fully integrated. A more | ||||
| common model is expected to be a multi-purpose device capable of | ||||
| containing several ASAs. In this case it is expected that the ACP, | ||||
| GRASP and the ASAs will be implemented as separate processes, which | ||||
| are probably multi-threaded to support asynchronous and simultaneous | ||||
| operations. It is expected that GRASP will access the ACP by using a | ||||
| typical socket interface. A well defined Application Programming | ||||
| Interface (API) will be needed between GRASP and the ASAs. In some | ||||
| implementations, ASAs would run in user space with a GRASP library | ||||
| providing the API, and this library would in turn communicate via | ||||
| system calls with core GRASP functions running in kernel mode. For | ||||
| further details of possible deployment models, see | ||||
| [I-D.ietf-anima-reference-model]. | ||||
| Because GRASP needs to work whatever happens, especially during | ||||
| bootstrapping and during fault conditions, it is essential that every | ||||
| implementation is as robust as possible. For example, discovery | ||||
| failures, or any kind of socket error at any time, must not cause | ||||
| irrecoverable failures in GRASP itself, and must return suitable | ||||
| error codes through the API so that ASAs can also recover. | ||||
| GRASP must always start up correctly after a system restart. All run | ||||
| time error conditions, and events such as address renumbering, | ||||
| network interface failures, and CPU sleep/wake cycles, must be | ||||
| handled in such a way that GRASP will still operate correctly and | ||||
| securely (Section 3.4.1) afterwards. | ||||
| An autonomic node will normally run a single instance of GRASP, used | ||||
| by multiple ASAs. However, scenarios where multiple instances of | ||||
| GRASP run in a single node, perhaps with different security | ||||
| properties, are not excluded. In this case, each instance MUST | ||||
| listen independently for GRASP link-local multicasts in order for | ||||
| discovery and flooding to work correctly. | ||||
| 3.3. High Level Design Choices | ||||
| This section describes a behavior model and design considerations for | ||||
| GRASP, supporting discovery, synchronization and negotiation, to act | ||||
| as a platform for different technical objectives. | ||||
| o A generic platform | o A generic platform | |||
| The protocol is designed as a generic platform, which is | The protocol is designed as a generic platform, which is | |||
| independent from the synchronization or negotiation contents. It | independent from the synchronization or negotiation contents. It | |||
| takes care of the general intercommunication between counterparts. | takes care of the general intercommunication between counterparts. | |||
| The technical contents will vary according to the various | The technical contents will vary according to the various | |||
| technical objectives and the different pairs of counterparts. | technical objectives and the different pairs of counterparts. | |||
| o The protocol is expected to form part of an Autonomic Networking | o The protocol is expected to form part of an Autonomic Networking | |||
| Infrastructure [I-D.ietf-anima-reference-model]. It will provide | Infrastructure [I-D.ietf-anima-reference-model]. It will provide | |||
| services to ASAs via a suitable application programming interface | services to ASAs via a suitable application programming interface | |||
| (API), which will reflect the protocol elements but will not | (API), which will reflect the protocol elements but will not | |||
| skipping to change at page 12, line 21 | skipping to change at page 13, line 16 | |||
| Infrastructure [I-D.ietf-anima-reference-model]. It will provide | Infrastructure [I-D.ietf-anima-reference-model]. It will provide | |||
| services to ASAs via a suitable application programming interface | services to ASAs via a suitable application programming interface | |||
| (API), which will reflect the protocol elements but will not | (API), which will reflect the protocol elements but will not | |||
| necessarily be in one-to-one correspondence to them. This API is | necessarily be in one-to-one correspondence to them. This API is | |||
| out of scope for the present document. | out of scope for the present document. | |||
| o It is normally expected that a single main instance of GRASP will | o It is normally expected that a single main instance of GRASP will | |||
| exist in an autonomic node, and that the protocol engine and each | exist in an autonomic node, and that the protocol engine and each | |||
| ASA will run as independent asynchronous processes. However, | ASA will run as independent asynchronous processes. However, | |||
| separate GRASP instances may exist for security reasons | separate GRASP instances may exist for security reasons | |||
| (Section 3.3.2). | (Section 3.4.2). | |||
| o Security infrastructure and trust relationship | o Security infrastructure and trust relationship | |||
| Because this negotiation protocol may directly cause changes to | Because this negotiation protocol may directly cause changes to | |||
| device configurations and bring significant impacts to a running | device configurations and bring significant impacts to a running | |||
| network, this protocol is assumed to run within an existing secure | network, this protocol is assumed to run within an existing secure | |||
| environment with strong authentication. As a design choice, the | environment with strong authentication. As a design choice, the | |||
| protocol itself is not provided with built-in security | protocol itself is not provided with built-in security | |||
| functionality. | functionality. | |||
| skipping to change at page 12, line 47 | skipping to change at page 13, line 42 | |||
| o Discovery, synchronization and negotiation are designed together. | o Discovery, synchronization and negotiation are designed together. | |||
| The discovery method and the synchronization and negotiation | The discovery method and the synchronization and negotiation | |||
| methods are designed in the same way and can be combined when this | methods are designed in the same way and can be combined when this | |||
| is useful. These processes can also be performed independently | is useful. These processes can also be performed independently | |||
| when appropriate. | when appropriate. | |||
| * GRASP discovery is always available for efficient discovery of | * GRASP discovery is always available for efficient discovery of | |||
| GRASP peers and allows a rapid mode of operation described in | GRASP peers and allows a rapid mode of operation described in | |||
| Section 3.3.4. For some objectives, especially those concerned | Section 3.4.4. For some objectives, especially those concerned | |||
| with application layer services, another discovery mechanism | with application layer services, another discovery mechanism | |||
| such as the future DNS Service Discovery [RFC7558] or Service | such as the future DNS Service Discovery [RFC7558] or Service | |||
| Location Protocol [RFC2608] MAY be used. The choice is left to | Location Protocol [RFC2608] MAY be used. The choice is left to | |||
| the designers of individual ASAs. | the designers of individual ASAs. | |||
| o A uniform pattern for technical contents | o A uniform pattern for technical contents | |||
| The synchronization and negotiation contents are defined according | The synchronization and negotiation contents are defined according | |||
| to a uniform pattern. They could be carried either in simple | to a uniform pattern. They could be carried either in simple | |||
| binary format or in payloads described by a flexible language. | binary format or in payloads described by a flexible language. | |||
| The basic protocol design uses the Concise Binary Object | The basic protocol design uses the Concise Binary Object | |||
| Representation (CBOR) [RFC7049]. The format is extensible for | Representation (CBOR) [RFC7049]. The format is extensible for | |||
| unknown future requirements. | unknown future requirements. | |||
| o A flexible model for synchronization | o A flexible model for synchronization | |||
| GRASP supports bilateral synchronization, which could be used to | GRASP supports bilateral synchronization, which could be used to | |||
| skipping to change at page 15, line 4 | skipping to change at page 15, line 38 | |||
| A limited number of rounds, for example three, or a timeout, is | A limited number of rounds, for example three, or a timeout, is | |||
| needed on each ASA for each negotiation objective. It may be | needed on each ASA for each negotiation objective. It may be | |||
| an implementation choice, a pre-configurable parameter, or | an implementation choice, a pre-configurable parameter, or | |||
| network Intent. These choices might vary between different | network Intent. These choices might vary between different | |||
| types of ASA. Therefore, the definition of each negotiation | types of ASA. Therefore, the definition of each negotiation | |||
| objective MUST clearly specify this, so that the negotiation | objective MUST clearly specify this, so that the negotiation | |||
| can always be terminated properly. | can always be terminated properly. | |||
| * Failed negotiation | * Failed negotiation | |||
| There must be a well-defined procedure for concluding that a | There must be a well-defined procedure for concluding that a | |||
| negotiation cannot succeed, and if so deciding what happens | negotiation cannot succeed, and if so deciding what happens | |||
| next (deadlock resolution, tie-breaking, or revert to best- | next (deadlock resolution, tie-breaking, or revert to best- | |||
| effort service). Again, this MUST be specified for individual | effort service). Again, this MUST be specified for individual | |||
| negotiation objectives, as an implementation choice, a pre- | negotiation objectives, as an implementation choice, a pre- | |||
| configurable parameter, or network Intent. | configurable parameter, or network Intent. | |||
| 3.3. GRASP Protocol Basic Properties and Mechanisms | o Extensibility | |||
| GRASP does not have a version number. In most cases new semantics | ||||
| will be added by defining new synchronization or negotiation | ||||
| objectives. However, the protocol could be extended by adding new | ||||
| message types and options in future. | ||||
| 3.3.1. Required External Security Mechanism | 3.4. GRASP Protocol Basic Properties and Mechanisms | |||
| 3.4.1. Required External Security Mechanism | ||||
| The protocol SHOULD run within a secure Autonomic Control Plane (ACP) | The protocol SHOULD run within a secure Autonomic Control Plane (ACP) | |||
| [I-D.ietf-anima-autonomic-control-plane]. The ACP is assumed to | [I-D.ietf-anima-autonomic-control-plane]. The ACP is assumed to | |||
| carry all messages securely, including link-local multicast if | carry all messages securely, including link-local multicast if | |||
| possible. A GRASP implementation MUST verify whether the ACP is | possible. A GRASP implementation MUST verify whether the ACP is | |||
| operational. | operational. | |||
| If there is no ACP, the protocol MUST use another form of strong | If there is no ACP, the protocol MUST use another form of strong | |||
| authentication and SHOULD use a form of strong encryption. TLS | authentication and SHOULD use a form of strong encryption. TLS | |||
| [RFC5246] is RECOMMENDED for this purpose, based on a local Public | [RFC5246] is RECOMMENDED for this purpose, based on a local Public | |||
| skipping to change at page 15, line 40 | skipping to change at page 16, line 38 | |||
| The ACP, or in its absence the local PKI, sets the boundary within | The ACP, or in its absence the local PKI, sets the boundary within | |||
| which nodes are trusted as GRASP peers. A GRASP implementation MUST | which nodes are trusted as GRASP peers. A GRASP implementation MUST | |||
| refuse to execute GRASP synchronization and negotiation functions if | refuse to execute GRASP synchronization and negotiation functions if | |||
| there is neither an operational ACP nor an operational TLS or DTLS | there is neither an operational ACP nor an operational TLS or DTLS | |||
| environment. | environment. | |||
| Link-local multicast is used for discovery messages. Responses to | Link-local multicast is used for discovery messages. Responses to | |||
| discovery messages MUST be secured, with one exception mentioned in | discovery messages MUST be secured, with one exception mentioned in | |||
| the next section. | the next section. | |||
| 3.3.2. Limited Security Instances | 3.4.2. Limited Security Instances | |||
| This section describes three cases where additional instances of | This section describes three cases where additional instances of | |||
| GRASP are appropriate. | GRASP are appropriate. | |||
| 1) As mentioned in Section 3.2, some GRASP operations might be | 1) As mentioned in Section 3.3, some GRASP operations might be | |||
| performed across an administrative domain boundary by mutual | performed across an administrative domain boundary by mutual | |||
| agreement. Such operations MUST be confined to a separate instance | agreement. Such operations MUST be confined to a separate instance | |||
| of GRASP with its own copy of all GRASP data structures. Messages | of GRASP with its own copy of all GRASP data structures. Messages | |||
| MUST be authenticated and SHOULD be encrypted. TLS is RECOMMENDED | MUST be authenticated and SHOULD be encrypted. TLS is RECOMMENDED | |||
| for this purpose. | for this purpose. | |||
| 2) During initialisation, before a node has joined the applicable | 2) During initialisation, before a node has joined the applicable | |||
| trust infrastructure, [I-D.ietf-anima-bootstrapping-keyinfra], it is | trust infrastructure, [I-D.ietf-anima-bootstrapping-keyinfra], it is | |||
| impossible to secure messages. Thus, the security bootstrap process | impossible to secure messages. Thus, the security bootstrap process | |||
| needs to use insecure GRASP discovery, response and flood messages. | needs to use insecure GRASP discovery, response and flood messages. | |||
| skipping to change at page 17, line 17 | skipping to change at page 18, line 14 | |||
| o A responder MUST NOT relay any multicast messages. | o A responder MUST NOT relay any multicast messages. | |||
| o A Discovery Response MUST indicate a link-local address. | o A Discovery Response MUST indicate a link-local address. | |||
| o A Discovery Response MUST NOT include a Divert option. | o A Discovery Response MUST NOT include a Divert option. | |||
| o A node MUST silently discard any message whose source address is | o A node MUST silently discard any message whose source address is | |||
| not link-local. | not link-local. | |||
| 3.3.3. Transport Layer Usage | 3.4.3. Transport Layer Usage | |||
| GRASP discovery and flooding messages are designed for use over link- | GRASP discovery and flooding messages are designed for use over link- | |||
| local multicast UDP. They MUST NOT be fragmented, and therefore MUST | local multicast UDP. They MUST NOT be fragmented, and therefore MUST | |||
| NOT exceed the link MTU size. Nothing in principle prevents them | NOT exceed the link MTU size. Nothing in principle prevents them | |||
| from working over some other method of sending packets to all on-link | from working over some other method of sending packets to all on-link | |||
| neighbors, but this is out of scope for the present specification. | neighbors, but this is out of scope for the present specification. | |||
| All other GRASP messages are unicast and could in principle run over | All other GRASP messages are unicast and could in principle run over | |||
| any transport protocol. An implementation MUST support use of TCP. | any transport protocol. An implementation MUST support use of TCP. | |||
| It MAY support use of another transport protocol. However, GRASP | It MAY support use of another transport protocol. However, GRASP | |||
| skipping to change at page 18, line 9 | skipping to change at page 19, line 7 | |||
| scope for this document. | scope for this document. | |||
| For link-local multicast, the GRASP protocol listens to the well- | For link-local multicast, the GRASP protocol listens to the well- | |||
| known GRASP Listen Port (Section 3.5). For unicast transport | known GRASP Listen Port (Section 3.5). For unicast transport | |||
| sessions used for discovery responses, synchronization and | sessions used for discovery responses, synchronization and | |||
| negotiation, the ASA concerned normally listens on its own | negotiation, the ASA concerned normally listens on its own | |||
| dynamically assigned ports, which are communicated to its peers | dynamically assigned ports, which are communicated to its peers | |||
| during discovery. However, a minimal implementation MAY use the | during discovery. However, a minimal implementation MAY use the | |||
| GRASP Listen Port for this purpose. | GRASP Listen Port for this purpose. | |||
| 3.3.4. Discovery Mechanism and Procedures | 3.4.4. Discovery Mechanism and Procedures | |||
| o Separated discovery and negotiation mechanisms | 3.4.4.1. Separated discovery and negotiation mechanisms | |||
| Although discovery and negotiation or synchronization are | Although discovery and negotiation or synchronization are defined | |||
| defined together in the GRASP, they are separated mechanisms. | together in GRASP, they are separate mechanisms. The discovery | |||
| The discovery process could run independently from the | process could run independently from the negotiation or | |||
| negotiation or synchronization process. Upon receiving a | synchronization process. Upon receiving a Discovery (Section 3.7.3) | |||
| Discovery (Section 3.7.3) message, the recipient node should | message, the recipient node should return a response message in which | |||
| return a response message in which it either indicates itself | it either indicates itself as a discovery responder or diverts the | |||
| as a discovery responder or diverts the initiator towards | initiator towards another more suitable ASA. | |||
| another more suitable ASA. | ||||
| The discovery action will normally be followed by a negotiation | The discovery action will normally be followed by a negotiation or | |||
| or synchronization action. The discovery results could be | synchronization action. The discovery results could be utilized by | |||
| utilized by the negotiation protocol to decide which ASA the | the negotiation protocol to decide which ASA the initiator will | |||
| initiator will negotiate with. | negotiate with. | |||
| The initiator of a discovery action for a given objective need | The initiator of a discovery action for a given objective need not be | |||
| not be capable of responding to that objective as a Negotiation | capable of responding to that objective as a Negotiation Counterpart, | |||
| Counterpart, as a Synchronization Responder or as source for | as a Synchronization Responder or as source for flooding. For | |||
| flooding. For example, an ASA might perform discovery even if | example, an ASA might perform discovery even if it only wishes to act | |||
| it only wishes to act a Synchronization Initiator or | a Synchronization Initiator or Negotiation Initiator. Such an ASA | |||
| Negotiation Initiator. Such an ASA does not itself need to | does not itself need to respond to discovery messages. | |||
| respond to discovery messages. | ||||
| It is also entirely possible to use GRASP discovery without any | It is also entirely possible to use GRASP discovery without any | |||
| subsequent negotiation or synchronization action. In this | subsequent negotiation or synchronization action. In this case, the | |||
| case, the discovered objective is simply used as a name during | discovered objective is simply used as a name during the discovery | |||
| the discovery process and any subsequent operations between the | process and any subsequent operations between the peers are outside | |||
| peers are outside the scope of GRASP. | the scope of GRASP. | |||
| o Discovery Procedures | 3.4.4.2. Discovery Overview | |||
| Discovery starts as an on-link operation. The Divert option | A complete discovery process will start with a multicast on the local | |||
| can tell the discovery initiator to contact an off-link ASA for | link. On-link neighbors supporting the discovery objective will | |||
| that discovery objective. Every Discovery message is sent by a | respond directly. A neighbor with multiple interfaces will respond | |||
| discovery initiator via UDP to the ALL_GRASP_NEIGHBOR link- | with a cached discovery response if any. If not, it will relay the | |||
| local multicast address (Section 3.5). Every network device | discovery on its other interfaces, for example reaching a higher- | |||
| that supports GRASP always listens to a well-known UDP port to | level gateway in a hierarchical network. If a node receiving the | |||
| capture the discovery messages. Because this port is unique in | relayed discovery supports the discovery objective, it will respond | |||
| a device, this is a function of the GRASP kernel and not of an | to the relayed discovery. If it has a cached response, it will | |||
| individual ASA. As a result, each ASA will need to register | respond with that. If not, it will repeat the discovery process, | |||
| the objectives that it supports with the GRASP kernel. | which thereby becomes recursive. The loop count and timeout will | |||
| ensure that the process ends. | ||||
| If an ASA in a neighbor device supports the requested discovery | 3.4.4.3. Discovery Procedures | |||
| objective, the device SHOULD respond to the link-local | ||||
| multicast with a unicast Discovery Response message | ||||
| (Section 3.7.4) with locator option(s), unless it is | ||||
| temporarily unavailable. Otherwise, if the neighbor has cached | ||||
| information about an ASA that supports the requested discovery | ||||
| objective (usually because it discovered the same objective | ||||
| before), it SHOULD respond with a Discovery Response message | ||||
| with a Divert option pointing to the appropriate Discovery | ||||
| Responder. | ||||
| If a device has no information about the requested discovery | Discovery starts as an on-link operation. The Divert option can tell | |||
| objective, and is not acting as a discovery relay (see below) | the discovery initiator to contact an off-link ASA for that discovery | |||
| it MUST silently discard the Discovery message. | objective. Every Discovery message is sent by a discovery initiator | |||
| via UDP to the ALL_GRASP_NEIGHBOR link-local multicast address | ||||
| (Section 3.5). Every network device that supports GRASP always | ||||
| listens to a well-known UDP port to capture the discovery messages. | ||||
| Because this port is unique in a device, this is a function of the | ||||
| GRASP kernel and not of an individual ASA. As a result, each ASA | ||||
| will need to register the objectives that it supports with the GRASP | ||||
| kernel. | ||||
| If no discovery response is received within a reasonable | If an ASA in a neighbor device supports the requested discovery | |||
| timeout (default GRASP_DEF_TIMEOUT milliseconds, Section 3.5), | objective, the device SHOULD respond to the link-local multicast with | |||
| the Discovery message MAY be repeated, with a newly generated | a unicast Discovery Response message (Section 3.7.4) with locator | |||
| Session ID (Section 3.6). An exponential backoff SHOULD be | option(s), unless it is temporarily unavailable. Otherwise, if the | |||
| used for subsequent repetitions, in order to mitigate possible | neighbor has cached information about an ASA that supports the | |||
| denial of service attacks. | requested discovery objective (usually because it discovered the same | |||
| objective before), it SHOULD respond with a Discovery Response | ||||
| message with a Divert option pointing to the appropriate Discovery | ||||
| Responder. | ||||
| After a GRASP device successfully discovers a locator for a | If a device has no information about the requested discovery | |||
| Discovery Responder supporting a specific objective, it MUST | objective, and is not acting as a discovery relay (see below) it MUST | |||
| cache this information, including the interface identifier via | silently discard the Discovery message. | |||
| which it was discovered. This cache record MAY be used for | ||||
| future negotiation or synchronization, and the locator SHOULD | ||||
| be passed on when appropriate as a Divert option to another | ||||
| Discovery Initiator. | ||||
| The cache mechanism MUST include a lifetime for each entry. | If no discovery response is received within a reasonable timeout | |||
| The lifetime is derived from a time-to-live (ttl) parameter in | (default GRASP_DEF_TIMEOUT milliseconds, Section 3.5), the Discovery | |||
| each Discovery Response message. Cached entries MUST be | message MAY be repeated, with a newly generated Session ID | |||
| ignored or deleted after their lifetime expires. In some | (Section 3.6). An exponential backoff SHOULD be used for subsequent | |||
| environments, unplanned address renumbering might occur. In | repetitions, to limit the load during busy periods. Frequent | |||
| such cases, the lifetime SHOULD be short compared to the | repetition might be symptomatic of a denial of service attack. | |||
| typical address lifetime and a mechanism to flush the discovery | ||||
| cache SHOULD be implemented. The discovery mechanism needs to | ||||
| track the node's current address to ensure that Discovery | ||||
| Responses always indicate the correct address. | ||||
| If multiple Discovery Responders are found for the same | After a GRASP device successfully discovers a locator for a Discovery | |||
| objective, they SHOULD all be cached, unless this creates a | Responder supporting a specific objective, it MUST cache this | |||
| resource shortage. The method of choosing between multiple | information, including the interface identifier via which it was | |||
| responders is an implementation choice. This choice MUST be | discovered. This cache record MAY be used for future negotiation or | |||
| available to each ASA but the GRASP implementation SHOULD | synchronization, and the locator SHOULD be passed on when appropriate | |||
| provide a default choice. | as a Divert option to another Discovery Initiator. | |||
| Because Discovery Responders will be cached in a finite cache, | The cache mechanism MUST include a lifetime for each entry. The | |||
| they might be deleted at any time. In this case, discovery | lifetime is derived from a time-to-live (ttl) parameter in each | |||
| will need to be repeated. If an ASA exits for any reason, its | Discovery Response message. Cached entries MUST be ignored or | |||
| locator might still be cached for some time, and attempts to | deleted after their lifetime expires. In some environments, | |||
| connect to it will fail. ASAs need to be robust in these | unplanned address renumbering might occur. In such cases, the | |||
| circumstances. | lifetime SHOULD be short compared to the typical address lifetime and | |||
| a mechanism to flush the discovery cache SHOULD be implemented. The | ||||
| discovery mechanism needs to track the node's current address to | ||||
| ensure that Discovery Responses always indicate the correct address. | ||||
| A GRASP device with multiple link-layer interfaces (typically a | If multiple Discovery Responders are found for the same objective, | |||
| router) MUST support discovery on all interfaces. If it | they SHOULD all be cached, unless this creates a resource shortage. | |||
| receives a Discovery message on a given interface for a | The method of choosing between multiple responders is an | |||
| specific objective that it does not support and for which it | implementation choice. This choice MUST be available to each ASA but | |||
| has not previously cached a Discovery Responder, it MUST relay | the GRASP implementation SHOULD provide a default choice. | |||
| the query by re-issuing a Discovery message as a link-local | ||||
| multicast on its other interfaces. The relayed discovery | ||||
| message MUST have the same Session ID as the incoming discovery | ||||
| message and MUST be tagged with the IP address of its original | ||||
| initiator. Since the relay device is unaware of the timeout | ||||
| set by the original initiator it SHOULD set a timeout at least | ||||
| equal to GRASP_DEF_TIMEOUT milliseconds. | ||||
| The relaying device MUST decrement the loop count within the | Because Discovery Responders will be cached in a finite cache, they | |||
| objective, and MUST NOT relay the Discovery message if the | might be deleted at any time. In this case, discovery will need to | |||
| result is zero. Also, it MUST limit the total rate at which it | be repeated. If an ASA exits for any reason, its locator might still | |||
| relays discovery messages to a reasonable value, in order to | be cached for some time, and attempts to connect to it will fail. | |||
| mitigate possible denial of service attacks. It MUST cache the | ASAs need to be robust in these circumstances. | |||
| Session ID value and initiator address of each relayed | ||||
| Discovery message until any Discovery Responses have arrived or | ||||
| the discovery process has timed out. To prevent loops, it MUST | ||||
| NOT relay a Discovery message which carries a given cached | ||||
| Session ID and initiator address more than once. These | ||||
| precautions avoid discovery loops and mitigate potential | ||||
| overload. | ||||
| The discovery results received by the relaying device MUST in | 3.4.4.4. Discovery Relaying | |||
| turn be sent as a Discovery Response message to the Discovery | ||||
| message that caused the relay action. | ||||
| This relayed discovery mechanism, with caching of the results, | A GRASP instance with multiple link-layer interfaces (typically | |||
| should be sufficient to support most network bootstrapping | running in a router) MUST support discovery on all interfaces. We | |||
| scenarios. | refer to this as a 'relaying instance'. | |||
| o A complete discovery process will start with a multicast on the | However, different interfaces can be at different security levels: | |||
| local link. On-link neighbors supporting the discovery objective | each group of interfaces with the same security level SHOULD be | |||
| will respond directly. A neighbor with multiple interfaces will | serviced by the same GRASP process, except for Limited Security | |||
| respond with a cached discovery response if any. If not, it will | Instances Section 3.4.2 which are always single-interface instances | |||
| relay the discovery on its other interfaces, for example reaching | and MUST NOT perform discovery relaying. | |||
| a higher-level gateway in a hierarchical network. If a node | ||||
| receiving the relayed discovery supports the discovery objective, | ||||
| it will respond to the relayed discovery. If it has a cached | ||||
| response, it will respond with that. If not, it will repeat the | ||||
| discovery process, which thereby becomes recursive. The loop | ||||
| count and timeout will ensure that the process ends. | ||||
| o Rapid Mode (Discovery/Negotiation binding) | If a relaying instance receives a Discovery message on a given | |||
| interface for a specific objective that it does not support and for | ||||
| which it has not previously cached a Discovery Responder, it MUST | ||||
| relay the query by re-issuing a Discovery message as a link-local | ||||
| multicast on its other interfaces. | ||||
| A Discovery message MAY include a Negotiation Objective option. | The relayed discovery message MUST have the same Session ID as the | |||
| This allows a rapid mode of negotiation described in | incoming discovery message and MUST be tagged with the IP address of | |||
| Section 3.3.5. A similar mechanism is defined for | its original initiator (see Section 3.7.3). Since the relay device | |||
| synchronization in Section 3.3.6. | is unaware of the timeout set by the original initiator it SHOULD set | |||
| a timeout at least equal to GRASP_DEF_TIMEOUT milliseconds. | ||||
| Note that rapid mode is currently limited to a single objective | The relaying instance MUST decrement the loop count within the | |||
| for simplicity of design and implementation. A possible future | objective, and MUST NOT relay the Discovery message if the result is | |||
| extension is to allow multiple objectives in rapid mode for | zero. Also, it MUST limit the total rate at which it relays | |||
| greater efficiency. | discovery messages to a reasonable value, in order to mitigate | |||
| possible denial of service attacks. It MUST cache the Session ID | ||||
| value and initiator address of each relayed Discovery message until | ||||
| any Discovery Responses have arrived or the discovery process has | ||||
| timed out. To prevent loops, it MUST NOT relay a Discovery message | ||||
| which carries a given cached Session ID and initiator address more | ||||
| than once. These precautions avoid discovery loops and mitigate | ||||
| potential overload. | ||||
| 3.3.5. Negotiation Procedures | The discovery results received by the relaying instance MUST in turn | |||
| be sent as a Discovery Response message to the Discovery message that | ||||
| caused the relay action. | ||||
| This relayed discovery mechanism, with caching of the results, should | ||||
| be sufficient to support most network bootstrapping scenarios. | ||||
| 3.4.4.5. Rapid Mode (Discovery/Negotiation binding) | ||||
| A Discovery message MAY include a Negotiation Objective option. This | ||||
| allows a rapid mode of negotiation described in Section 3.4.5. A | ||||
| similar mechanism is defined for synchronization in Section 3.4.6. | ||||
| Note that rapid mode is currently limited to a single objective for | ||||
| simplicity of design and implementation. A possible future extension | ||||
| is to allow multiple objectives in rapid mode for greater efficiency. | ||||
| 3.4.5. Negotiation Procedures | ||||
| A negotiation initiator sends a negotiation request to a counterpart | A negotiation initiator sends a negotiation request to a counterpart | |||
| ASA, including a specific negotiation objective. It may request the | ASA, including a specific negotiation objective. It may request the | |||
| negotiation counterpart to make a specific configuration. | negotiation counterpart to make a specific configuration. | |||
| Alternatively, it may request a certain simulation or forecast result | Alternatively, it may request a certain simulation or forecast result | |||
| by sending a dry run configuration. The details, including the | by sending a dry run configuration. The details, including the | |||
| distinction between dry run and an actual configuration change, will | distinction between dry run and an actual configuration change, will | |||
| be defined separately for each type of negotiation objective. | be defined separately for each type of negotiation objective. | |||
| If no reply message of any kind is received within a reasonable | If no reply message of any kind is received within a reasonable | |||
| skipping to change at page 22, line 21 | skipping to change at page 23, line 21 | |||
| multi-threaded mode. Certain negotiation objectives may have | multi-threaded mode. Certain negotiation objectives may have | |||
| restrictions on multi-threading, for example to avoid over-allocating | restrictions on multi-threading, for example to avoid over-allocating | |||
| resources. | resources. | |||
| Some configuration actions, for example wavelength switching in | Some configuration actions, for example wavelength switching in | |||
| optical networks, might take considerable time to execute. The ASA | optical networks, might take considerable time to execute. The ASA | |||
| concerned needs to allow for this by design, but GRASP does allow for | concerned needs to allow for this by design, but GRASP does allow for | |||
| a peer to insert latency in a negotiation process if necessary | a peer to insert latency in a negotiation process if necessary | |||
| (Section 3.7.8). | (Section 3.7.8). | |||
| 3.3.5.1. Rapid Mode (Discovery/Negotiation Linkage) | 3.4.5.1. Rapid Mode (Discovery/Negotiation Linkage) | |||
| A Discovery message MAY include a Negotiation Objective option. In | A Discovery message MAY include a Negotiation Objective option. In | |||
| this case the Discovery message also acts as a Request Negotiation | this case the Discovery message also acts as a Request Negotiation | |||
| message to indicate to the Discovery Responder that it could directly | message to indicate to the Discovery Responder that it could directly | |||
| reply to the Discovery Initiator with a Negotiation message for rapid | reply to the Discovery Initiator with a Negotiation message for rapid | |||
| processing, if it could act as the corresponding negotiation | processing, if it could act as the corresponding negotiation | |||
| counterpart. However, the indication is only advisory not | counterpart. However, the indication is only advisory not | |||
| prescriptive. | prescriptive. | |||
| It is possible that a Discovery Response will arrive from a responder | It is possible that a Discovery Response will arrive from a responder | |||
| that does not support rapid mode, before such a Negotiation message | that does not support rapid mode, before such a Negotiation message | |||
| arrives. In this case, rapid mode will not occur. | arrives. In this case, rapid mode will not occur. | |||
| This rapid mode could reduce the interactions between nodes so that a | This rapid mode could reduce the interactions between nodes so that a | |||
| higher efficiency could be achieved. However, a network in which | higher efficiency could be achieved. However, a network in which | |||
| some nodes support rapid mode and others do not will have complex | some nodes support rapid mode and others do not will have complex | |||
| timing-dependent behaviors. Therefore, the rapid negotiation | timing-dependent behaviors. Therefore, the rapid negotiation | |||
| function SHOULD be configured off by default and MAY be configured on | function SHOULD be configured off by default and MAY be configured on | |||
| or off by Intent. | or off by Intent. | |||
| 3.3.6. Synchronization and Flooding Procedure | 3.4.6. Synchronization and Flooding Procedure | |||
| A synchronization initiator sends a synchronization request to a | A synchronization initiator sends a synchronization request to a | |||
| counterpart, including a specific synchronization objective. The | counterpart, including a specific synchronization objective. The | |||
| counterpart responds with a Synchronization message (Section 3.7.9) | counterpart responds with a Synchronization message (Section 3.7.9) | |||
| containing the current value of the requested synchronization | containing the current value of the requested synchronization | |||
| objective. No further messages are needed. | objective. No further messages are needed. | |||
| If no reply message of any kind is received within a reasonable | If no reply message of any kind is received within a reasonable | |||
| timeout (default GRASP_DEF_TIMEOUT milliseconds, Section 3.5), the | timeout (default GRASP_DEF_TIMEOUT milliseconds, Section 3.5), the | |||
| synchronization request MAY be repeated, with a newly generated | synchronization request MAY be repeated, with a newly generated | |||
| Session ID (Section 3.6). An exponential backoff SHOULD be used for | Session ID (Section 3.6). An exponential backoff SHOULD be used for | |||
| subsequent repetitions. | subsequent repetitions. | |||
| 3.3.6.1. Flooding | 3.4.6.1. Flooding | |||
| In the case just described, the message exchange is unicast and | In the case just described, the message exchange is unicast and | |||
| concerns only one synchronization objective. For large groups of | concerns only one synchronization objective. For large groups of | |||
| nodes requiring the same data, synchronization flooding is available. | nodes requiring the same data, synchronization flooding is available. | |||
| For this, a flooding initiator MAY send an unsolicited Flood | For this, a flooding initiator MAY send an unsolicited Flood | |||
| Synchronization message containing one or more Synchronization | Synchronization message containing one or more Synchronization | |||
| Objective option(s), if and only if the specification of those | Objective option(s), if and only if the specification of those | |||
| objectives permits it. This is sent as a multicast message to the | objectives permits it. This is sent as a multicast message to the | |||
| ALL_GRASP_NEIGHBOR multicast address (Section 3.5). | ALL_GRASP_NEIGHBOR multicast address (Section 3.5). | |||
| skipping to change at page 24, line 14 | skipping to change at page 25, line 14 | |||
| Note that this mechanism is unreliable in the case of sleeping nodes, | Note that this mechanism is unreliable in the case of sleeping nodes, | |||
| or new nodes that join the network, or nodes that rejoin the network | or new nodes that join the network, or nodes that rejoin the network | |||
| after a fault. An ASA that initiates a flood SHOULD repeat the flood | after a fault. An ASA that initiates a flood SHOULD repeat the flood | |||
| at a suitable frequency and SHOULD also act as a synchronization | at a suitable frequency and SHOULD also act as a synchronization | |||
| responder for the objective(s) concerned. Thus nodes that require an | responder for the objective(s) concerned. Thus nodes that require an | |||
| objective subject to flooding can either wait for the next flood or | objective subject to flooding can either wait for the next flood or | |||
| request unicast synchronization for that objective. | request unicast synchronization for that objective. | |||
| The multicast messages for synchronization flooding are subject to | The multicast messages for synchronization flooding are subject to | |||
| the security rules in Section 3.3.1. In practice this means that | the security rules in Section 3.4.1. In practice this means that | |||
| they MUST NOT be transmitted and MUST be ignored on receipt unless | they MUST NOT be transmitted and MUST be ignored on receipt unless | |||
| there is an operational ACP or equivalent strong security in place. | there is an operational ACP or equivalent strong security in place. | |||
| However, because of the security weakness of link-local multicast | However, because of the security weakness of link-local multicast | |||
| (Section 5), synchronization objectives that are flooded SHOULD NOT | (Section 5), synchronization objectives that are flooded SHOULD NOT | |||
| contain unencrypted private information and SHOULD be validated by | contain unencrypted private information and SHOULD be validated by | |||
| the recipient ASA. | the recipient ASA. | |||
| 3.3.6.2. Rapid Mode (Discovery/Synchronization Linkage) | 3.4.6.2. Rapid Mode (Discovery/Synchronization Linkage) | |||
| A Discovery message MAY include a Synchronization Objective option. | A Discovery message MAY include a Synchronization Objective option. | |||
| In this case the Discovery message also acts as a Request | In this case the Discovery message also acts as a Request | |||
| Synchronization message to indicate to the Discovery Responder that | Synchronization message to indicate to the Discovery Responder that | |||
| it could directly reply to the Discovery Initiator with a | it could directly reply to the Discovery Initiator with a | |||
| Synchronization message Section 3.7.9 with synchronization data for | Synchronization message Section 3.7.9 with synchronization data for | |||
| rapid processing, if the discovery target supports the corresponding | rapid processing, if the discovery target supports the corresponding | |||
| synchronization objective. However, the indication is only advisory | synchronization objective. However, the indication is only advisory | |||
| not prescriptive. | not prescriptive. | |||
| skipping to change at page 24, line 44 | skipping to change at page 25, line 44 | |||
| that does not support rapid mode, before such a Synchronization | that does not support rapid mode, before such a Synchronization | |||
| message arrives. In this case, rapid mode will not occur. | message arrives. In this case, rapid mode will not occur. | |||
| This rapid mode could reduce the interactions between nodes so that a | This rapid mode could reduce the interactions between nodes so that a | |||
| higher efficiency could be achieved. However, a network in which | higher efficiency could be achieved. However, a network in which | |||
| some nodes support rapid mode and others do not will have complex | some nodes support rapid mode and others do not will have complex | |||
| timing-dependent behaviors. Therefore, the rapid synchronization | timing-dependent behaviors. Therefore, the rapid synchronization | |||
| function SHOULD be configured off by default and MAY be configured on | function SHOULD be configured off by default and MAY be configured on | |||
| or off by Intent. | or off by Intent. | |||
| 3.4. High Level Deployment Model | ||||
| It is expected that a GRASP implementation will reside in an | ||||
| autonomic node that also contains both the appropriate security | ||||
| environment (preferably the ACP) and one or more Autonomic Service | ||||
| Agents (ASAs). In the minimal case of a single-purpose device, these | ||||
| three components might be fully integrated. A more common model is | ||||
| expected to be a multi-purpose device capable of containing several | ||||
| ASAs. In this case it is expected that the ACP, GRASP and the ASAs | ||||
| will be implemented as separate processes, which are probably multi- | ||||
| threaded to support asynchronous and simultaneous operations. It is | ||||
| expected that GRASP will access the ACP by using a typical socket | ||||
| interface. A well defined Application Programming Interface (API) | ||||
| will be needed between GRASP and the ASAs. In some implementations, | ||||
| ASAs would run in user space with a GRASP library providing the API, | ||||
| and this library would in turn communicate via system calls with core | ||||
| GRASP functions running in kernel mode. For further details of | ||||
| possible deployment models, see [I-D.ietf-anima-reference-model]. | ||||
| Because GRASP needs to work whatever happens, especially during | ||||
| bootstrapping and during fault conditions, it is essential that every | ||||
| implementation is as robust as possible. For example, discovery | ||||
| failures, or any kind of socket error at any time, must not cause | ||||
| irrecoverable failures in GRASP itself, and must return suitable | ||||
| error codes through the API so that ASAs can also recover. | ||||
| GRASP must always start up correctly after a system restart. All run | ||||
| time error conditions, and events such as address renumbering, | ||||
| network interface failures, and CPU sleep/wake cycles, must be | ||||
| handled in such a way that GRASP will still operate correctly and | ||||
| securely (Section 3.3.1) afterwards. | ||||
| An autonomic node will normally run a single instance of GRASP, used | ||||
| by multiple ASAs. However, scenarios where multiple instances of | ||||
| GRASP run in a single node, perhaps with different security | ||||
| properties, are not excluded. In this case, each instance MUST | ||||
| listen independently for GRASP link-local muticasts in order for | ||||
| discovery and flooding to work correctly. | ||||
| 3.5. GRASP Constants | 3.5. GRASP Constants | |||
| o ALL_GRASP_NEIGHBOR | o ALL_GRASP_NEIGHBOR | |||
| A link-local scope multicast address used by a GRASP-enabled | A link-local scope multicast address used by a GRASP-enabled | |||
| device to discover GRASP-enabled neighbor (i.e., on-link) devices | device to discover GRASP-enabled neighbor (i.e., on-link) devices | |||
| . All devices that support GRASP are members of this multicast | . All devices that support GRASP are members of this multicast | |||
| group. | group. | |||
| * IPv6 multicast address: TBD1 | * IPv6 multicast address: TBD1 | |||
| * IPv4 multicast address: TBD2 | * IPv4 multicast address: TBD2 | |||
| o GRASP_LISTEN_PORT (TBD3) | o GRASP_LISTEN_PORT (TBD3) | |||
| A well-known UDP user port that every GRASP-enabled network device | A well-known UDP user port that every GRASP-enabled network device | |||
| MUST always listen to for link-local multicasts. Additionally, | MUST always listen to for link-local multicasts. Additionally, | |||
| this user port MAY be used to listen for TCP or UDP unicast | this user port MAY be used to listen for TCP or UDP unicast | |||
| messages in a simple implementation of GRASP (Section 3.3.3). | messages in a simple implementation of GRASP (Section 3.4.3). | |||
| o GRASP_DEF_TIMEOUT (60000 milliseconds) | o GRASP_DEF_TIMEOUT (60000 milliseconds) | |||
| The default timeout used to determine that a discovery etc. has | The default timeout used to determine that a discovery etc. has | |||
| failed to complete. | failed to complete. | |||
| o GRASP_DEF_LOOPCT (6) | o GRASP_DEF_LOOPCT (6) | |||
| The default loop count used to determine that a negotiation has | The default loop count used to determine that a negotiation has | |||
| failed to complete, and to avoid looping messages. | failed to complete, and to avoid looping messages. | |||
| skipping to change at page 28, line 8 | skipping to change at page 28, line 19 | |||
| 3.7.3. Discovery Message | 3.7.3. Discovery Message | |||
| In fragmentary CDDL, a Discovery message follows the pattern: | In fragmentary CDDL, a Discovery message follows the pattern: | |||
| discovery-message = [M_DISCOVERY, session-id, initiator, objective] | discovery-message = [M_DISCOVERY, session-id, initiator, objective] | |||
| A discovery initiator sends a Discovery message to initiate a | A discovery initiator sends a Discovery message to initiate a | |||
| discovery process for a particular objective option. | discovery process for a particular objective option. | |||
| The discovery initiator sends the Discovery messages via UDP to port | The discovery initiator sends all Discovery messages via UDP to port | |||
| GRASP_LISTEN_PORT at the link-local ALL_GRASP_NEIGHBOR multicast | GRASP_LISTEN_PORT at the link-local ALL_GRASP_NEIGHBOR multicast | |||
| address. It then listens for unicast TCP responses on the same port, | address on each link-layer interface in use by GRASP. It then | |||
| and stores the discovery results (including responding discovery | listens for unicast TCP responses on a given port, and stores the | |||
| objectives and corresponding unicast locators). | discovery results (including responding discovery objectives and | |||
| corresponding unicast locators). | ||||
| The listening port used for TCP MUST be the same port as used for | ||||
| sending the Discovery UDP multicast, on a given interface. In a low- | ||||
| end implementation this MAY be GRASP_LISTEN_PORT. In a more complex | ||||
| implementation, the GRASP discovery mechanism will find, for each | ||||
| interface, a dynamic port that it can bind to for both UDP and TCP | ||||
| before initiating any discovery. | ||||
| The 'initiator' field in the message is a globally unique IP address | The 'initiator' field in the message is a globally unique IP address | |||
| of the initiator, for the sole purpose of disambiguating the Session | of the initiator, for the sole purpose of disambiguating the Session | |||
| ID in other nodes. If for some reason the initiator does not have a | ID in other nodes. If for some reason the initiator does not have a | |||
| globally unique IP address, it MUST use a link-local address for this | globally unique IP address, it MUST use a link-local address for this | |||
| purpose that is highly likely to be unique, for example using | purpose that is highly likely to be unique, for example using | |||
| [RFC7217]. | [RFC7217]. | |||
| A Discovery message MUST include exactly one of the following: | A Discovery message MUST include exactly one of the following: | |||
| skipping to change at page 29, line 24 | skipping to change at page 29, line 39 | |||
| message. | message. | |||
| It MUST contain a time-to-live (ttl) for the validity of the | It MUST contain a time-to-live (ttl) for the validity of the | |||
| response, given as a positive integer value in milliseconds. Zero | response, given as a positive integer value in milliseconds. Zero | |||
| is treated as the default value GRASP_DEF_TIMEOUT (Section 3.5). | is treated as the default value GRASP_DEF_TIMEOUT (Section 3.5). | |||
| It MAY include a copy of the discovery objective from the | It MAY include a copy of the discovery objective from the | |||
| Discovery message. | Discovery message. | |||
| It is sent to the sender of the Discovery message via TCP at the port | It is sent to the sender of the Discovery message via TCP at the port | |||
| used to send the Discovery message. | used to send the Discovery message (as explained in Section 3.7.3). | |||
| If the responding node supports the discovery objective of the | If the responding node supports the discovery objective of the | |||
| discovery, it MUST include at least one kind of locator option | discovery, it MUST include at least one kind of locator option | |||
| (Section 3.8.5) to indicate its own location. A sequence of multiple | (Section 3.8.5) to indicate its own location. A sequence of multiple | |||
| kinds of locator options (e.g. IP address option and FQDN option) is | kinds of locator options (e.g. IP address option and FQDN option) is | |||
| also valid. | also valid. | |||
| If the responding node itself does not support the discovery | If the responding node itself does not support the discovery | |||
| objective, but it knows the locator of the discovery objective, then | objective, but it knows the locator of the discovery objective, then | |||
| it SHOULD respond to the discovery message with a divert option | it SHOULD respond to the discovery message with a divert option | |||
| (Section 3.8.2) embedding a locator option or a combination of | (Section 3.8.2) embedding a locator option or a combination of | |||
| multiple kinds of locator options which indicate the locator(s) of | multiple kinds of locator options which indicate the locator(s) of | |||
| the discovery objective. | the discovery objective. | |||
| More details on the processing of Discovery Responses are given in | More details on the processing of Discovery Responses are given in | |||
| Section 3.3.4. | Section 3.4.4. | |||
| 3.7.5. Request Messages | 3.7.5. Request Messages | |||
| In fragmentary CDDL, Request Negotiation and Request Synchronization | In fragmentary CDDL, Request Negotiation and Request Synchronization | |||
| messages follow the patterns: | messages follow the patterns: | |||
| request-negotiation-message = [M_REQ_NEG, session-id, objective] | request-negotiation-message = [M_REQ_NEG, session-id, objective] | |||
| request-synchronization-message = [M_REQ_SYN, session-id, objective] | request-synchronization-message = [M_REQ_SYN, session-id, objective] | |||
| A negotiation or synchronization requesting node sends the | A negotiation or synchronization requesting node sends the | |||
| appropriate Request message to the unicast address (directly stored | appropriate Request message to the unicast address (directly stored | |||
| or resolved from an FQDN or URI) of the negotiation or | or resolved from an FQDN or URI) of the negotiation or | |||
| synchronization counterpart, using the appropriate protocol and port | synchronization counterpart, using the appropriate protocol and port | |||
| numbers (selected from the discovery results). | numbers (selected from the discovery results). | |||
| A Request message MUST include the relevant objective option. In the | A Request message MUST include the relevant objective option. In the | |||
| case of Request Negotiation, the objective option MUST include the | case of Request Negotiation, the objective option MUST include the | |||
| requested value. | requested value. | |||
| skipping to change at page 30, line 15 | skipping to change at page 30, line 30 | |||
| appropriate Request message to the unicast address (directly stored | appropriate Request message to the unicast address (directly stored | |||
| or resolved from an FQDN or URI) of the negotiation or | or resolved from an FQDN or URI) of the negotiation or | |||
| synchronization counterpart, using the appropriate protocol and port | synchronization counterpart, using the appropriate protocol and port | |||
| numbers (selected from the discovery results). | numbers (selected from the discovery results). | |||
| A Request message MUST include the relevant objective option. In the | A Request message MUST include the relevant objective option. In the | |||
| case of Request Negotiation, the objective option MUST include the | case of Request Negotiation, the objective option MUST include the | |||
| requested value. | requested value. | |||
| When an initiator sends a Request Negotiation message, it MUST | When an initiator sends a Request Negotiation message, it MUST | |||
| initialize a negotiation timer for the new negotiation thread with | initialize a negotiation timer for the new negotiation thread. The | |||
| the value GRASP_DEF_TIMEOUT milliseconds. Unless this timeout is | default is GRASP_DEF_TIMEOUT milliseconds. Unless this timeout is | |||
| modified by a Confirm Waiting message (Section 3.7.8), the initiator | modified by a Confirm Waiting message (Section 3.7.8), the initiator | |||
| will consider that the negotiation has failed when the timer expires. | will consider that the negotiation has failed when the timer expires. | |||
| Similarly, when an initiator sends a Request Synchronization, it | ||||
| SHOULD initialize a synchronization timer. The default is | ||||
| GRASP_DEF_TIMEOUT milliseconds. The initiator will consider that | ||||
| synchronization has failed if there is no response before the timer | ||||
| expires. | ||||
| When an initiator sends a Request message, it MUST initialize the | When an initiator sends a Request message, it MUST initialize the | |||
| loop count of the objective option with a value defined in the | loop count of the objective option with a value defined in the | |||
| specification of the option or, if no such value is specified, with | specification of the option or, if no such value is specified, with | |||
| GRASP_DEF_LOOPCT. | GRASP_DEF_LOOPCT. | |||
| If a node receives a Request message for an objective for which no | If a node receives a Request message for an objective for which no | |||
| ASA is currently listening, it MUST immediately close the relevant | ASA is currently listening, it MUST immediately close the relevant | |||
| socket to indicate this to the initiator. | socket to indicate this to the initiator. | |||
| 3.7.6. Negotiation Message | 3.7.6. Negotiation Message | |||
| In fragmentary CDDL, a Negotiation message follows the pattern: | In fragmentary CDDL, a Negotiation message follows the pattern: | |||
| discovery-message = [M_NEGOTIATE, session-id, objective] | negotiate-message = [M_NEGOTIATE, session-id, objective] | |||
| A negotiation counterpart sends a Negotiation message in response to | A negotiation counterpart sends a Negotiation message in response to | |||
| a Request Negotiation message, a Negotiation message, or a Discovery | a Request Negotiation message, a Negotiation message, or a Discovery | |||
| message in Rapid Mode. A negotiation process MAY include multiple | message in Rapid Mode. A negotiation process MAY include multiple | |||
| steps. | steps. | |||
| The Negotiation message MUST include the relevant Negotiation | The Negotiation message MUST include the relevant Negotiation | |||
| Objective option, with its value updated according to progress in the | Objective option, with its value updated according to progress in the | |||
| negotiation. The sender MUST decrement the loop count by 1. If the | negotiation. The sender MUST decrement the loop count by 1. If the | |||
| loop count becomes zero the message MUST NOT be sent. In this case | loop count becomes zero the message MUST NOT be sent. In this case | |||
| skipping to change at page 32, line 8 | skipping to change at page 32, line 30 | |||
| pattern: | pattern: | |||
| flood-message = [M_FLOOD, session-id, initiator, ttl, | flood-message = [M_FLOOD, session-id, initiator, ttl, | |||
| (locator-option / []), +objective] | (locator-option / []), +objective] | |||
| ttl = 0..4294967295 ; in milliseconds | ttl = 0..4294967295 ; in milliseconds | |||
| A node MAY initiate flooding by sending an unsolicited Flood | A node MAY initiate flooding by sending an unsolicited Flood | |||
| Synchronization Message with synchronization data. This MAY be sent | Synchronization Message with synchronization data. This MAY be sent | |||
| to the link-local ALL_GRASP_NEIGHBOR multicast address, in accordance | to the link-local ALL_GRASP_NEIGHBOR multicast address, in accordance | |||
| with the rules in Section 3.3.6. | with the rules in Section 3.4.6. | |||
| The initiator address is provided as described for Discovery | The initiator address is provided as described for Discovery | |||
| messages. | messages. | |||
| The message MUST contain a time-to-live (ttl) for the validity of | The message MUST contain a time-to-live (ttl) for the validity of | |||
| the response, given as a positive integer value in milliseconds. | the response, given as a positive integer value in milliseconds. | |||
| There is no default; zero indicates an indefinite lifetime. | There is no default; zero indicates an indefinite lifetime. | |||
| The message MAY contain a locator option indicating the ASA that | The message MAY contain a locator option indicating the ASA that | |||
| initiated the flooded data. In its absence, an empty option MUST | initiated the flooded data. In its absence, an empty option MUST | |||
| skipping to change at page 37, line 25 | skipping to change at page 37, line 40 | |||
| the entity or person defining the objective. | the entity or person defining the objective. | |||
| The GRASP protocol treats the objective name as an opaque string. | The GRASP protocol treats the objective name as an opaque string. | |||
| For example, "EX1", "411:EX1", "example.com:EX1", "example.org:EX1 | For example, "EX1", "411:EX1", "example.com:EX1", "example.org:EX1 | |||
| and "user@example.org:EX1" would be five different objectives. | and "user@example.org:EX1" would be five different objectives. | |||
| The 'objective-flags' field is described below. | The 'objective-flags' field is described below. | |||
| The 'loop-count' field is used for terminating negotiation as | The 'loop-count' field is used for terminating negotiation as | |||
| described in Section 3.7.6. It is also used for terminating | described in Section 3.7.6. It is also used for terminating | |||
| discovery as described in Section 3.3.4, and for terminating flooding | discovery as described in Section 3.4.4, and for terminating flooding | |||
| as described in Section 3.3.6.1. | as described in Section 3.4.6.1. | |||
| The 'any' field is to express the actual value of a negotiation or | The 'any' field is to express the actual value of a negotiation or | |||
| synchronization objective. Its format is defined in the | synchronization objective. Its format is defined in the | |||
| specification of the objective and may be a single value or a data | specification of the objective and may be a single value or a data | |||
| structure of any kind. It is optional because it is optional in a | structure of any kind. It is optional because it is optional in a | |||
| Discovery or Discovery Response message. | Discovery or Discovery Response message. | |||
| 3.9.2. Objective flags | 3.9.2. Objective flags | |||
| An objective may be relevant for discovery only, for discovery and | An objective may be relevant for discovery only, for discovery and | |||
| skipping to change at page 39, line 35 | skipping to change at page 40, line 6 | |||
| for the specifications of individual objectives. There are many | for the specifications of individual objectives. There are many | |||
| candidates, according to the context, such as ABNF, RBNF, XML Schema, | candidates, according to the context, such as ABNF, RBNF, XML Schema, | |||
| possibly YANG, etc. The GRASP protocol itself is agnostic on these | possibly YANG, etc. The GRASP protocol itself is agnostic on these | |||
| questions. | questions. | |||
| It is NOT RECOMMENDED to split parameters in a single objective into | It is NOT RECOMMENDED to split parameters in a single objective into | |||
| multiple options, unless they have different response periods. An | multiple options, unless they have different response periods. An | |||
| exception scenario may also be described by split objectives. | exception scenario may also be described by split objectives. | |||
| All objectives MUST support GRASP discovery. However, as mentioned | All objectives MUST support GRASP discovery. However, as mentioned | |||
| in Section 3.2, it is acceptable for an ASA to use an alternative | in Section 3.3, it is acceptable for an ASA to use an alternative | |||
| method of discovery. | method of discovery. | |||
| Normally, a GRASP objective will refer to specific technical | Normally, a GRASP objective will refer to specific technical | |||
| parameters as explained in Section 3.1. However, it is acceptable to | parameters as explained in Section 3.1. However, it is acceptable to | |||
| define an abstract objective for the purpose of managing or | define an abstract objective for the purpose of managing or | |||
| coordinating ASAs. It is also acceptable to define a special-purpose | coordinating ASAs. It is also acceptable to define a special-purpose | |||
| objective for purposes such as trust bootstrapping or formation of | objective for purposes such as trust bootstrapping or formation of | |||
| the ACP. | the ACP. | |||
| 3.9.5. Experimental and Example Objective Options | 3.9.5. Experimental and Example Objective Options | |||
| skipping to change at page 40, line 49 | skipping to change at page 41, line 20 | |||
| o Contact: https://github.com/liubingpang/IETF-Anima-Signaling- | o Contact: https://github.com/liubingpang/IETF-Anima-Signaling- | |||
| Protocol | Protocol | |||
| 4.2. Python Implementation | 4.2. Python Implementation | |||
| o Name: graspy | o Name: graspy | |||
| o Description: Python 3 implementation of GRASP kernel and API. | o Description: Python 3 implementation of GRASP kernel and API. | |||
| o Maturity: Prototype code, interoperable between Windows 7 and | o Maturity: Prototype code, interoperable between Windows 7 and | |||
| Debian. | Linux. | |||
| o Coverage: Corresponds to draft-ietf-anima-grasp-07. Limitations | o Coverage: Corresponds to draft-ietf-anima-grasp-07. Limitations | |||
| include: | include: | |||
| * insecure: uses a dummy ACP module and does not implement TLS | * insecure: uses a dummy ACP module and does not implement TLS | |||
| * only coded for IPv6, any IPv4 is accidental | * only coded for IPv6, any IPv4 is accidental | |||
| * FQDN and URI locators incompletely supported | * FQDN and URI locators incompletely supported | |||
| skipping to change at page 42, line 11 | skipping to change at page 42, line 30 | |||
| GRASP relies on a separate external certificate-based security | GRASP relies on a separate external certificate-based security | |||
| mechanism to support authentication, data integrity protection, | mechanism to support authentication, data integrity protection, | |||
| and anti-replay protection. | and anti-replay protection. | |||
| Since GRASP is intended to be deployed in a single administrative | Since GRASP is intended to be deployed in a single administrative | |||
| domain operating its own trust anchor and CA, there is no need for | domain operating its own trust anchor and CA, there is no need for | |||
| a trusted public third party. In a network requiring "air gap" | a trusted public third party. In a network requiring "air gap" | |||
| security, such a dependency would be unacceptable. | security, such a dependency would be unacceptable. | |||
| If GRASP is used temporarily without an external security | If GRASP is used temporarily without an external security | |||
| mechanism, for example during system bootstrap (Section 3.3.1), | mechanism, for example during system bootstrap (Section 3.4.1), | |||
| the Session ID (Section 3.6) will act as a nonce to provide | the Session ID (Section 3.6) will act as a nonce to provide | |||
| limited protection against third parties injecting responses. A | limited protection against third parties injecting responses. A | |||
| full analysis of the secure bootstrap process is out of scope for | full analysis of the secure bootstrap process is out of scope for | |||
| the present document. | the present document. | |||
| - Authorization and Roles | - Authorization and Roles | |||
| The GRASP protocol is agnostic about the role of individual ASAs | The GRASP protocol is agnostic about the role of individual ASAs | |||
| and about which objectives a particular ASA is authorized to | and about which objectives a particular ASA is authorized to | |||
| support. An implementation might support precautions such as | support. An implementation might support precautions such as | |||
| skipping to change at page 42, line 38 | skipping to change at page 43, line 8 | |||
| - Privacy and confidentiality | - Privacy and confidentiality | |||
| Generally speaking, no personal information is expected to be | Generally speaking, no personal information is expected to be | |||
| involved in the signaling protocol, so there should be no direct | involved in the signaling protocol, so there should be no direct | |||
| impact on personal privacy. Nevertheless, traffic flow paths, | impact on personal privacy. Nevertheless, traffic flow paths, | |||
| VPNs, etc. could be negotiated, which could be of interest for | VPNs, etc. could be negotiated, which could be of interest for | |||
| traffic analysis. Also, operators generally want to conceal | traffic analysis. Also, operators generally want to conceal | |||
| details of their network topology and traffic density from | details of their network topology and traffic density from | |||
| outsiders. Therefore, since insider attacks cannot be excluded in | outsiders. Therefore, since insider attacks cannot be excluded in | |||
| a large network, the security mechanism for the protocol MUST | a large network, the security mechanism for the protocol MUST | |||
| provide message confidentiality. This is why Section 3.3.1 | provide message confidentiality. This is why Section 3.4.1 | |||
| requires either an ACP or the use of TLS. | requires either an ACP or the use of TLS. | |||
| - Link-local multicast security | - Link-local multicast security | |||
| GRASP has no reasonable alternative to using link-local multicast | GRASP has no reasonable alternative to using link-local multicast | |||
| for Discovery or Flood Synchronization messages and these messages | for Discovery or Flood Synchronization messages and these messages | |||
| are sent in clear and with no authentication. They are therefore | are sent in clear and with no authentication. They are therefore | |||
| available to on-link eavesdroppers, and could be forged by on-link | available to on-link eavesdroppers, and could be forged by on-link | |||
| attackers. In the case of Discovery, the Discovery Responses are | attackers. In the case of Discovery, the Discovery Responses are | |||
| unicast and will therefore be protected (Section 3.3.1), and an | unicast and will therefore be protected (Section 3.4.1), and an | |||
| untrusted forger will not be able to receive responses. In the | untrusted forger will not be able to receive responses. In the | |||
| case of Flood Synchronization, an on-link eavesdropper will be | case of Flood Synchronization, an on-link eavesdropper will be | |||
| able to receive the flooded objectives but there is no response | able to receive the flooded objectives but there is no response | |||
| message to consider. Some precautions for Flood Synchronization | message to consider. Some precautions for Flood Synchronization | |||
| messages are suggested in Section 3.3.6.1. | messages are suggested in Section 3.4.6.1. | |||
| - DoS Attack Protection | - DoS Attack Protection | |||
| GRASP discovery partly relies on insecure link-local multicast. | GRASP discovery partly relies on insecure link-local multicast. | |||
| Since routers participating in GRASP sometimes relay discovery | Since routers participating in GRASP sometimes relay discovery | |||
| messages from one link to another, this could be a vector for | messages from one link to another, this could be a vector for | |||
| denial of service attacks. Relevant mitigations are specified in | denial of service attacks. Some mitigations are specified in | |||
| Section 3.3.4. Additionally, it is of great importance that | Section 3.4.4. However, malicious code installed inside the | |||
| firewalls prevent any GRASP messages from entering the domain from | Autonomic Control Plane could always launch Dos attacks consisting | |||
| an untrusted source. | of spurious discovery messages, or of spurious discovery | |||
| responses. Additionally, it is of great importance that firewalls | ||||
| prevent any GRASP messages from entering the domain from an | ||||
| untrusted source. | ||||
| - Security during bootstrap and discovery | - Security during bootstrap and discovery | |||
| A node cannot authenticate GRASP traffic from other nodes until it | A node cannot authenticate GRASP traffic from other nodes until it | |||
| has identified the trust anchor and can validate certificates for | has identified the trust anchor and can validate certificates for | |||
| other nodes. Also, until it has succesfully enrolled | other nodes. Also, until it has succesfully enrolled | |||
| [I-D.ietf-anima-bootstrapping-keyinfra] it cannot assume that | [I-D.ietf-anima-bootstrapping-keyinfra] it cannot assume that | |||
| other nodes are able to authenticate its own traffic. Therefore, | other nodes are able to authenticate its own traffic. Therefore, | |||
| GRASP discovery during the bootstrap phase for a new device will | GRASP discovery during the bootstrap phase for a new device will | |||
| inevitably be insecure and GRASP synchronization and negotiation | inevitably be insecure and GRASP synchronization and negotiation | |||
| will be impossible until enrollment is complete. Further details | will be impossible until enrollment is complete. Further details | |||
| are given in Section 3.3.2. | are given in Section 3.4.2. | |||
| - Security of discovered locators | - Security of discovered locators | |||
| When GRASP discovery returns an IP address, it MUST be that of a | When GRASP discovery returns an IP address, it MUST be that of a | |||
| node within the secure environment (Section 3.3.1). If it returns | node within the secure environment (Section 3.4.1). If it returns | |||
| an FQDN or a URI, the ASA that receives it MUST NOT assume that | an FQDN or a URI, the ASA that receives it MUST NOT assume that | |||
| the target of the locator is within the secure environment. | the target of the locator is within the secure environment. | |||
| 6. CDDL Specification of GRASP | 6. CDDL Specification of GRASP | |||
| <CODE BEGINS> | <CODE BEGINS> | |||
| grasp-message = (message .within message-structure) / noop-message | grasp-message = (message .within message-structure) / noop-message | |||
| message-structure = [MESSAGE_TYPE, session-id, ?initiator, | message-structure = [MESSAGE_TYPE, session-id, ?initiator, | |||
| *grasp-option] | *grasp-option] | |||
| skipping to change at page 47, line 39 | skipping to change at page 48, line 14 | |||
| Dacheng Zhang, and other participants in the NMRG research group and | Dacheng Zhang, and other participants in the NMRG research group and | |||
| the ANIMA working group. | the ANIMA working group. | |||
| 9. References | 9. References | |||
| 9.1. Normative References | 9.1. Normative References | |||
| [I-D.greevenbosch-appsawg-cbor-cddl] | [I-D.greevenbosch-appsawg-cbor-cddl] | |||
| Vigano, C. and H. Birkholz, "CBOR data definition language | Vigano, C. and H. Birkholz, "CBOR data definition language | |||
| (CDDL): a notational convention to express CBOR data | (CDDL): a notational convention to express CBOR data | |||
| structures", draft-greevenbosch-appsawg-cbor-cddl-08 (work | structures", draft-greevenbosch-appsawg-cbor-cddl-09 (work | |||
| in progress), March 2016. | in progress), September 2016. | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <http://www.rfc-editor.org/info/rfc2119>. | <http://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | |||
| Resource Identifier (URI): Generic Syntax", STD 66, | Resource Identifier (URI): Generic Syntax", STD 66, | |||
| RFC 3986, DOI 10.17487/RFC3986, January 2005, | RFC 3986, DOI 10.17487/RFC3986, January 2005, | |||
| <http://www.rfc-editor.org/info/rfc3986>. | <http://www.rfc-editor.org/info/rfc3986>. | |||
| skipping to change at page 49, line 19 | skipping to change at page 49, line 44 | |||
| anima-reference-model-02 (work in progress), July 2016. | anima-reference-model-02 (work in progress), July 2016. | |||
| [I-D.ietf-anima-stable-connectivity] | [I-D.ietf-anima-stable-connectivity] | |||
| Eckert, T. and M. Behringer, "Using Autonomic Control | Eckert, T. and M. Behringer, "Using Autonomic Control | |||
| Plane for Stable Connectivity of Network OAM", draft-ietf- | Plane for Stable Connectivity of Network OAM", draft-ietf- | |||
| anima-stable-connectivity-01 (work in progress), July | anima-stable-connectivity-01 (work in progress), July | |||
| 2016. | 2016. | |||
| [I-D.ietf-netconf-restconf] | [I-D.ietf-netconf-restconf] | |||
| Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | |||
| Protocol", draft-ietf-netconf-restconf-16 (work in | Protocol", draft-ietf-netconf-restconf-17 (work in | |||
| progress), August 2016. | progress), September 2016. | |||
| [I-D.liang-iana-pen] | [I-D.liang-iana-pen] | |||
| Liang, P., Melnikov, A., and D. Conrad, "Private | Liang, P., Melnikov, A., and D. Conrad, "Private | |||
| Enterprise Number (PEN) practices and Internet Assigned | Enterprise Number (PEN) practices and Internet Assigned | |||
| Numbers Authority (IANA) registration considerations", | Numbers Authority (IANA) registration considerations", | |||
| draft-liang-iana-pen-06 (work in progress), July 2015. | draft-liang-iana-pen-06 (work in progress), July 2015. | |||
| [I-D.stenberg-anima-adncp] | [I-D.stenberg-anima-adncp] | |||
| Stenberg, M., "Autonomic Distributed Node Consensus | Stenberg, M., "Autonomic Distributed Node Consensus | |||
| Protocol", draft-stenberg-anima-adncp-00 (work in | Protocol", draft-stenberg-anima-adncp-00 (work in | |||
| skipping to change at page 55, line 51 | skipping to change at page 56, line 30 | |||
| o 25. Does GDNP discovery meet the needs of multi-hop DNS-SD? | o 25. Does GDNP discovery meet the needs of multi-hop DNS-SD? | |||
| RESOLVED: Decided not to consider this further as a GRASP protocol | RESOLVED: Decided not to consider this further as a GRASP protocol | |||
| issue. GRASP objectives could embed DNS-SD formats if needed. | issue. GRASP objectives could embed DNS-SD formats if needed. | |||
| o 26. Add a URL type to the locator options (for security bootstrap | o 26. Add a URL type to the locator options (for security bootstrap | |||
| etc.) | etc.) | |||
| RESOLVED: Done, later renamed as URI. | RESOLVED: Done, later renamed as URI. | |||
| o 27. Security of Flood multicasts (Section 3.3.6.1). | o 27. Security of Flood multicasts (Section 3.4.6.1). | |||
| RESOLVED: added text. | RESOLVED: added text. | |||
| o 28. Does ACP support secure link-local multicast? | o 28. Does ACP support secure link-local multicast? | |||
| RESOLVED by new text in the Security Considerations. | RESOLVED by new text in the Security Considerations. | |||
| o 29. PEN is used to distinguish vendor options. Would it be | o 29. PEN is used to distinguish vendor options. Would it be | |||
| better to use a domain name? Anything unique will do. | better to use a domain name? Anything unique will do. | |||
| skipping to change at page 58, line 32 | skipping to change at page 59, line 10 | |||
| two different messages (and adjust various message names | two different messages (and adjust various message names | |||
| accordingly)? | accordingly)? | |||
| RESOLVED: Yes. Done. | RESOLVED: Yes. Done. | |||
| o 48. Should the Appendix "Capability Analysis of Current | o 48. Should the Appendix "Capability Analysis of Current | |||
| Protocols" be deleted before RFC publication? | Protocols" be deleted before RFC publication? | |||
| RESOLVED: No (per WG meeting at IETF 96). | RESOLVED: No (per WG meeting at IETF 96). | |||
| o 49. Section 3.3.1 Should say more about signaling between two | o 49. Section 3.4.1 Should say more about signaling between two | |||
| autonomic networks/domains. | autonomic networks/domains. | |||
| RESOLVED: Description of separate GRASP instance added. | RESOLVED: Description of separate GRASP instance added. | |||
| o 50. Is Rapid mode limited to on-link only? What happens if first | o 50. Is Rapid mode limited to on-link only? What happens if first | |||
| discovery responder does not support Rapid Mode? Section 3.3.5, | discovery responder does not support Rapid Mode? Section 3.4.5, | |||
| Section 3.3.6) | Section 3.4.6) | |||
| RESOLVED: Not limited to on-link. First responder wins. | RESOLVED: Not limited to on-link. First responder wins. | |||
| o 51. Should flooded objectives have a time-to-live before they are | o 51. Should flooded objectives have a time-to-live before they are | |||
| deleted from the flood cache? And should they be tagged in the | deleted from the flood cache? And should they be tagged in the | |||
| cache with their source locator? | cache with their source locator? | |||
| RESOLVED: TTL added to Flood (and Discovery Response) messages. | RESOLVED: TTL added to Flood (and Discovery Response) messages. | |||
| Cached flooded objectives must be tagged with their originating | Cached flooded objectives must be tagged with their originating | |||
| ASA locator, and multiple copies must be kept if necessary. | ASA locator, and multiple copies must be kept if necessary. | |||
| skipping to change at page 59, line 13 | skipping to change at page 59, line 40 | |||
| insecure instance of GRASP. | insecure instance of GRASP. | |||
| RESOLVED: Done. | RESOLVED: Done. | |||
| o 53. Tune IANA Considerations to support early assignment request. | o 53. Tune IANA Considerations to support early assignment request. | |||
| RESOLVED: Done. | RESOLVED: Done. | |||
| Appendix C. Change log [RFC Editor: Please remove] | Appendix C. Change log [RFC Editor: Please remove] | |||
| draft-ietf-anima-grasp-08, 2016-10-17: | ||||
| Corrected and completed description of timeouts for Request messages. | ||||
| Improved wording about exponential backoff and DoS. | ||||
| Clarified that discovery relaying is not done by limited security | ||||
| instances. | ||||
| Corrected and expanded explanation of port used for Discovery | ||||
| Response. | ||||
| Added paragraph on extensibility. | ||||
| Added Appendix for sample messages. | ||||
| Editorial fixes, including minor re-ordering for readability. | ||||
| draft-ietf-anima-grasp-07, 2016-09-13: | draft-ietf-anima-grasp-07, 2016-09-13: | |||
| Protocol change: Added TTL field to Flood message (issue 51). | Protocol change: Added TTL field to Flood message (issue 51). | |||
| Protocol change: Added Locator option to Flood message (issue 51). | Protocol change: Added Locator option to Flood message (issue 51). | |||
| Protocol change: Added TTL field to Discovery Response message | Protocol change: Added TTL field to Discovery Response message | |||
| (corrollary to issue 51). | (corrollary to issue 51). | |||
| Clarified details of rapid mode (issues 43 and 50). | Clarified details of rapid mode (issues 43 and 50). | |||
| skipping to change at page 63, line 40 | skipping to change at page 64, line 36 | |||
| draft-carpenter-anima-gdn-protocol-01, restructured the logical flow | draft-carpenter-anima-gdn-protocol-01, restructured the logical flow | |||
| of the document, updated to describe synchronization completely, add | of the document, updated to describe synchronization completely, add | |||
| unsolicited responses, numerous corrections and clarifications, | unsolicited responses, numerous corrections and clarifications, | |||
| expanded future work list, 2015-01-06. | expanded future work list, 2015-01-06. | |||
| draft-carpenter-anima-gdn-protocol-00, combination of draft-jiang- | draft-carpenter-anima-gdn-protocol-00, combination of draft-jiang- | |||
| config-negotiation-ps-03 and draft-jiang-config-negotiation-protocol- | config-negotiation-ps-03 and draft-jiang-config-negotiation-protocol- | |||
| 02, 2014-10-08. | 02, 2014-10-08. | |||
| Appendix D. Capability Analysis of Current Protocols | Appendix D. Example Message Formats | |||
| This appendix shows examples of GRASP message formats for those | ||||
| unfamiliar with CBOR. | ||||
| TBD | ||||
| Appendix E. Capability Analysis of Current Protocols | ||||
| This appendix discusses various existing protocols with properties | This appendix discusses various existing protocols with properties | |||
| related to the requirements described in Section 2. The purpose is | related to the requirements described in Section 2. The purpose is | |||
| to evaluate whether any existing protocol, or a simple combination of | to evaluate whether any existing protocol, or a simple combination of | |||
| existing protocols, can meet those requirements. | existing protocols, can meet those requirements. | |||
| Numerous protocols include some form of discovery, but these all | Numerous protocols include some form of discovery, but these all | |||
| appear to be very specific in their applicability. Service Location | appear to be very specific in their applicability. Service Location | |||
| Protocol (SLP) [RFC2608] provides service discovery for managed | Protocol (SLP) [RFC2608] provides service discovery for managed | |||
| networks, but requires configuration of its own servers. DNS-SD | networks, but requires configuration of its own servers. DNS-SD | |||
| End of changes. 86 change blocks. | ||||
| 268 lines changed or deleted | 321 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||